KR100885875B1 - 래스터화 방법 및 시스템 - Google Patents

래스터화 방법 및 시스템 Download PDF

Info

Publication number
KR100885875B1
KR100885875B1 KR1020070061778A KR20070061778A KR100885875B1 KR 100885875 B1 KR100885875 B1 KR 100885875B1 KR 1020070061778 A KR1020070061778 A KR 1020070061778A KR 20070061778 A KR20070061778 A KR 20070061778A KR 100885875 B1 KR100885875 B1 KR 100885875B1
Authority
KR
South Korea
Prior art keywords
unit
pixels
graphics
component
raster
Prior art date
Application number
KR1020070061778A
Other languages
English (en)
Other versions
KR20070122172A (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 KR20070122172A publication Critical patent/KR20070122172A/ko
Application granted granted Critical
Publication of KR100885875B1 publication Critical patent/KR100885875B1/ko

Links

Images

Classifications

    • 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
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)

Abstract

그래픽 프로세서의 래스터 스테이지에서, 병렬 소단위 래스터화 방법이 제공된다. 이 방법은 그래픽 프로세서의 래스터 스테이지에서 래스터화하기 위한 그래픽 프리미티브를 수신하는 단계를 포함한다. 그래픽 프리미티브는 복수의 픽셀 타일을 생성하기 위해 제1 레벨에서 래스터화될 수 있다. 이 타일은 그 다음에, 커버된 픽셀들(covered pixels)을 생성하기 위해 타일을 병렬의 제2 레벨 래스터화 유닛의 어레이에 할당함으로써, 제2 레벨에서 래스터화된다. 커버된 픽셀은 이어서 그래픽 프로세서의 후속 스테이지에서의 렌더링 동작을 위해 출력될 수 있다.
그래픽 프로세서, 그래픽 파이프라인, 병렬 소단위 래스터화, 그래픽 프리미티브

Description

래스터화 방법 및 시스템{A METHOD AND SYSTEM FOR RASTERIZATION}
도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템을 나타낸 도면.
도 2는 본 발명의 일 실시예에 따른, 픽셀들의 그리드(grid)가 밭갈이(boustrophedonic) 패턴으로 래스터화되는 것을 나타낸 도면.
도 3은 본 발명의 일 실시예에 따른, GPU의 래스터 유닛에 대한 래스터화 패턴에 대해 삼각형 폴리곤(triangle polygon)을 나타낸 도면.
도 4는 본 발명의 일 실시예에 따른, 제1 레벨 래스터화 프로세스에 의해 검사되고 있을 때 타일들의 그리드에 대해 삼각형을 나타낸 도면.
도 5는 본 발명의 일 실시예에 따른, 대단위 래스터 유닛(coarse raster unit)에 의해 색출된 복수의 타일 그룹을 나타낸 도면.
도 6은 본 발명의 일 실시예에 따른, 제2 레벨 래스터화 프로세스를 사용하여 래스터화된 것처럼 풋프린트(footprint)를 나타낸 도면.
도 7은 본 발명의 일 실시예에 따른, GPU의 내부 컴포넌트들을 나타낸 도면.
도 8은 본 발명의 일 실시예에 따른, 병렬 소단위 래스터 유닛(parallel fine raster unit)의 어레이를 포함하는 래스터화기 유닛을 나타낸 도면.
도 9는 본 발명의 일 실시예에 따른, 16개 소단위 래스터 유닛의 어레이를 갖는 래스터화기 유닛을 나타낸 도면.
도 10은 본 발명의 일 실시예에 따른, 예시적인 부하 평형화 방법을 나타낸 도면.
도 11은 본 발명의 일 실시예에 따른, 어레이의 4개의 소단위 래스터 유닛을 포함하는 그룹이 비활성화되어 있는 래스터화기를 나타낸 도면.
도 12는 본 발명의 일 실시예에 따른, 기능 컴포넌트(functional component)의 선택적인 활성화/비활성화를 지원하는 예시적인 아키텍처를 나타낸 도면.
도 13a는 본 발명의 일 실시예에 따른 집적 회로의 블록도.
도 13b는 본 발명의 일 실시예에 따른, 파이프라인으로 구성된 기능 컴포넌트를 갖는 집적 회로의 블록도.
도 13c는 본 발명의 일 실시예에 따른 멀티프로세서 집적 회로의 블록도.
도 13d는 본 발명의 일 실시예에 따른, 서로 다른 목적(object)을 제어하는 예시적인 마스크 어레이(mask array) 구현의 블록도.
도 14는 본 발명의 실시예들이 구현될 수 있는 컴퓨터 시스템의 블록도.
도 15는 본 발명의 일 실시예에 따른 그래픽 파이프라인의 블록도.
도 16은 본 발명의 일 실시예에 따른 기능 컴포넌트 구성 방법의 흐름도.
도 17은 본 발명의 일 실시예에 따른 성능 저하 회로 구제 방법(reduced performance circuit salvage method)의 흐름도.
도 18은 본 발명의 일 실시예에 따른 테스팅 환경의 블록도.
도 19는 본 발명의 일 실시예에 따른 다이 분류 프로세스(die classification process)의 흐름도.
도 20은 본 발명의 일 실시예에 따른 프로세싱 유닛의 블록도.
도 21은 본 발명의 일 실시예에 따른 웨이퍼 수율 최적화 방법의 흐름도.
도 22는 본 발명의 일 실시예에 따른 기능 컴포넌트 구성 아키텍처의 블록도.
도 23은 본 발명의 일 실시예에 따른 원격 구성 방법의 흐름도.
도 24는 본 발명의 일 실시예에 따른, 제1 밭갈이(boustrophedonic) 패턴 및 제1 밭갈이(boustrophedonic) 패턴 내부에 내포된 제2 밭갈이(boustrophedonic) 패턴을 타일들의 그리드 상부의 나타낸 도면.
도 25는 본 발명의 일 실시예에 따른, 보다 복잡한 다수의 내포된 밭갈이 패턴 순회 프로세스를 나타낸 도면.
도 26은 본 발명의 일 실시예에 따른 GPU의 내부 컴포넌트들을 나타낸 도면.
<도면의 주요 부분에 대한 부호의 설명>
101: CPU
110: GPU
112: 디스플레이
114: 로컬 그래픽 메모리
115: 메모리
321: 래스터화 패턴
301: 삼각형 폴리곤
401: 풋프린트
501, 502: 타일 그룹
515-518: 타일
701: 셋업 엔진
702: 래스터화기
703: 대단위 래스터
704: 소단위 래스터
721: 캐쉬 메모리
본 발명은 일반적으로 하드웨어 가속 그래픽 컴퓨터 시스템에 관한 것이다. 본 발명은 적어도 그래픽 파이프라인의 래스터 스테이지에서의 병렬 소단위 래스터화(parallel fine rasterization) 방법을 개시하고 있다.
최근의 컴퓨터 성능 향상은 그래픽 시스템이 퍼스널 컴퓨터, 홈 비디오 게임 컴퓨터, 핸드헬드 장치 등을 사용하여 더 현실적인 그래픽 이미지를 제공할 수 있게 해주었다. 이러한 그래픽 시스템에서, 그래픽 프리미티브(graphic primitive)를 시스템의 화면에 "렌더링(render)" 또는 드로잉(draw)하기 위해 다수의 프로시저(procedure)가 실행된다. "그래픽 프리미티브"는 점, 선, 폴리곤 등의 그래픽 화상의 기본 컴포넌트이다. 렌더링된 이미지는 이들 그래픽 프리미티브의 조합으로 형성된다. 3-D 그래픽 렌더링을 수행하기 위해 많은 프로시저가 이용될 수 있 다.
그래픽 렌더링 프로시저를 실행하는 데 필요한 계산을 최적화하기 위해 전용의 그래픽 처리 유닛(예를 들어, GPU 등)이 개발되었다. GPU는 고속 연산을 하도록 구성되어 있으며, 일반적으로 하나 이상의 렌더링 파이프라인을 포함한다. 각각의 파이프라인은 그래픽 명령어/데이터의 고속 실행을 위해 최적화되어 있는 다수의 하드웨어-기반 기능 유닛을 포함하며, 여기서 이 명령어/데이터는 파이프라인의 프론트 엔드(front end)에 피드되고 계산된 결과는 파이프라인의 백엔드(back end)에 나타난다. GPU의 하드웨어-기반 기능 유닛, 캐쉬 메모리, 펌웨어 등은 하위-레벨 그래픽 프리미티브(예를 들어, "점", "선", "삼각형" 등을 포함함)를 처리하여 실시간 렌더링된 3-D 이미지를 생성하도록 최적화되어 있다.
래스터 디스플레이 기술(raster display technology)을 사용하여 실시간 렌더링된 3-D 이미지가 생성된다. 래스터 디스플레이 기술은 컴퓨터 그래픽 시스템에서 널리 사용되고 있으며, 일반적으로 이미지를 구성하고 있는 다수의 픽셀의 그리드가 그래픽 프리미티브에 의해 영향을 받는 메카니즘을 말한다. 각각의 프리미티브에 대해, 일반적인 래스터화 시스템은 일반적으로 픽셀마다 지나가면서, 프리미티브의 기여도에 따라, 주어진 픽셀을 프레임 버퍼 또는 픽셀 맵으로 "렌더링" 또는 기록해야 하는지 여부를 결정한다. 이것은 차례로 각각의 픽셀을 표현하는 데이터를 디스플레이 버퍼에 어떻게 기록해야 하는지를 결정한다.
주어진 3-D 장면을 구성하는 프리미티브들 내의 모든 픽셀들이 커버되도록 그래픽 프리미티브 기반 서술(graphic primitive based description)로부터 픽셀 기반 서술(pixel based description)로 계산(예를 들어, 프리미티브마다 픽셀 대 픽셀 래스터화)하기 위한 다양한 순회 알고리즘 및 다양한 래스터화 방법이 개발되었다. 예를 들어, 어떤 솔루션은 픽셀들을 단방향 방식으로 생성하는 것을 수반한다. 이러한 종래의 단방향 솔루션은 일정한 방향으로 행 단위로 픽셀을 생성하는 것을 수반한다. 이것은 그 시퀀스가 프리미티브의 반대쪽 측면 상의 위치에서 끝마칠 때 프리미티브를 가로질러 프리미티브의 제1 측면 상의 시작 위치로 천이할 것을 필요로 한다.
다른 종래의 방법은 디스플레이를 구성하는 픽셀들 각각을 정확하게 평가하고 어느 픽셀이 어느 프리미티브에 의해 커버되는지를 결정하기 위해 픽셀 단위 평가 기술을 이용하는 것을 수반한다. 픽셀 단위 평가는 어느 픽셀이 그래픽 프리미티브의 모서리와 접촉하는지/그 모서리에 의해 커버되는지를 결정하기 위해 디스플레이의 픽셀들에 걸쳐 스캐닝하는 것을 수반한다.
프리미티브가 그의 구성 픽셀로 래스터화되면, 이들 픽셀은 이어서 래스터화 스테이지에 후속하는 파이프라인 스테이지(이 스테이지에서 렌더링 동작이 수행됨)에서 처리된다. 일반적으로, 이들 렌더링 동작은 장면을 구성하는 프리미티브의 커버 정도(degree of coverage)에 따라 디스플레이의 픽셀들 각각에 컬러를 할당한다. 픽셀 단위 컬러는 또한 프리미티브에 할당된 텍스처 맵 정보, 조명 정보 등에 따라 결정된다.
그렇지만, 오늘날의 애플리케이션의 점점 더 복잡한 3-D 장면을 처리하기 위해 종래 기술의 3-D 렌더링 아키텍처를 확장시키는 데에는 문제가 있다. 컴퓨터 화면은 현재 통상적으로 1920x1200 픽셀 또는 그 이상의 화면 해상도를 갖는다. 예를 들어, 클럭 속도를 증가시키는 등의 3-D 렌더링 성능을 향상시키는 종래의 방법은 전력 소모를 증가시키고 GPU 집적 회로 다이에 의해 발생되는 열을 증가시키는 등의 부정적인 부작용을 갖는다. GPU 연산의 병렬 실행을 위해 많은 수의 병렬 실행 유닛을 포함시키는 등의 성능을 향상시키기 위한 다른 방법은 집적 회로 다이 크기를 증가시키고, GPU 제조 프로세스의 수율을 떨어뜨리며, 전력 요건을 증대시키는 등의 부정적인 부작용을 갖는다.
따라서, 전력 소모의 증가 및/또는 제조 수율의 감소 등의 불이익을 야기함이 없이, 그래픽 애플리케이션이 부가의 성능을 제공할 필요가 있을 때 확장될 수 있는 래스터화 프로세스가 필요하다.
본 발명의 실시예들은 전력 소모의 증가 및/또는 제조 수율의 감소 등의 불이익을 야기함이 없이, 그래픽 애플리케이션이 부가의 성능을 제공할 필요가 있을 때 확장될 수 있는 래스터화 프로세스를 위한 방법 및 시스템을 제공한다.
일 실시예에서, 본 발명은 그래픽 프로세서의 래스터 스테이지에서의 병렬 소단위 래스터화 방법으로서 구현된다. 이 방법은 그래픽 프로세서의 래스터 스테이지에서 래스터화하기 위한 그래픽 프리미티브(예를 들어, 삼각형 폴리곤)을 수신하는 단계를 포함한다. 그래픽 프리미티브는 복수의 픽셀 타일을 생성하기 위해 제1 레벨에서 래스터화된다. 제1 레벨 래스터화는 래스터 스테이지 내의 대단위 래스터 유닛을 사용하여 구현될 수 있다. 이들 타일은 이어서 커버된 픽셀을 생성 하기 위해 그 타일을 병렬의 제2 레벨 래스터화 유닛의 어레이에 할당함으로써 제2 레벨에서 래스터화된다. 제2 레벨 래스터화는 병렬의 소단위 래스터 유닛의 어레이를 사용하여 구현될 수 있다. 그 결과 얻어지는 제2 레벨 래스터화에 의해 생성되는 커버된 픽셀은 이어서 그래픽 프로세서의 후속 스테이지에서의 렌더링 동작을 위해 출력된다.
일 실시예에서, 대단위 래스터 유닛에서 큰 타일을 사용하는 것은 제1 레벨 래스터화가 클럭 사이클마다 구현될 수 있게 해준다. 이와 유사하게, 다수의 병렬 소단위 래스터 유닛을 사용하는 것은 제2 레벨에서의 래스터화가 클럭 사이클마다 병렬로 구현될 수 있게 해준다. 이 태양은 그래픽 렌더링 프로세스의 확장성 및 전체 성능을 크게 향상시킬 수 있다.
일 실시예에서, 복수의 소단위 래스터 유닛은 실질적으로 동일하다. 소단위 래스터 유닛들 간에 작업 부하를 평형화하기 위해 복수의 타일이 소단위 래스터 유닛의 어레이에 할당될 수 있다. 게다가, 일 실시예에서, 다수의 병렬 소단위 래스터 유닛을 사용하는 것은 여분의 래스터화 능력을 제공할 수 있다. 이 여분의 래스터화 속성은 어레이에 대한 선택적인 기능 컴포넌트 활성화/비활성화 기능을 가능하게 해준다. 예를 들어, 소단위 래스터 유닛 중 하나 이상이 필요한 경우(예를 들어, 고장 조건으로 인해, 목표 전력 소모 레벨을 달성하는 등을 위해) 비활성화될 수 있다.
유사한 참조 번호가 유사한 컴포넌트를 가리키고 있는 첨부 도면에, 본 발명 이 제한으로서가 아니라 예로서 도시되어 있다.
이제부터, 본 발명의 양호한 실시예들에 대해 상세히 언급할 것이며, 이들의 일례가 첨부 도면에 도시되어 있다. 본 발명이 양호한 실시예들과 관련하여 기술되지만, 이는 본 발명을 이들 실시예들로 한정하려는 것이 아님을 잘 알 것이다. 그와 반대로, 본 발명은 첨부된 청구항들에 의해 정의되는 본 발명의 정신 및 범위 내에 포함될 수 있는 대안, 수정 및 등가물을 포괄하는 것으로 보아야 한다. 게다가, 본 발명의 실시예들에 대한 이하의 상세한 설명에서, 본 발명의 철저한 이해를 제공하기 위해 수많은 구체적인 상세가 기술된다. 그렇지만, 당업자라면 본 발명이 이들 구체적인 상세 없이도 실시될 수 있다는 것을 잘 알 것이다. 다른 경우에, 본 발명의 실시예들의 태양들을 불필요하게 모호하게 하지 않도록 하기 위해 공지의 방법, 프로시저, 컴포넌트 및 회로는 상세히 기술되어 있지 않다.
표기법 및 용어:
이하의 상세한 설명의 어떤 부분은 프로시저, 단계, 논리 블록, 프로세싱, 및 컴퓨터 메모리 내의 데이터 비트에 대한 연산의 다른 기호 표현으로 제공되어 있다. 이들 설명 및 표현은 그의 연구의 요지를 다른 당업자에게 가장 효과적으로 전달하기 위해 데이터 처리 분야의 당업자에 의해 사용되는 수단이다. 프로시저, 컴퓨터 실행 단계, 논리 블록, 프로세스 등은 여기에서 일반적으로 원하는 결과를 가져오는 일관성있는 단계 또는 명령어 시퀀스인 것으로 생각된다. 이들 단계는 물리적 양의 물리적 처리를 필요로 하는 것이다. 통상적으로, 꼭 그러한 것은 아니지만, 이들 양은 컴퓨터 시스템에서 저장, 전송, 결합, 비교, 및 다른 방식으로 처리될 수 있는 전기 또는 자기 신호의 형태를 가질 수 있다. 주로 통상적으로 사용되기 때문에, 이들 신호를 비트, 값, 요소(elements), 심볼, 문자, 용어, 숫자 등으로 부르는 것이 때로는 편리하다는 것이 밝혀졌다.
그렇지만, 유의할 점은 이들 및 유사한 용어들 전부가 적절한 물리적 양과 연관되어 있고 이들 양에 적용되는 편리한 표식(label)에 불과하다는 것이다. 달리 구체적으로 언급하지 않는 한, 이하의 설명으로부터 명백한 바와 같이, 본 발명 전반에 걸쳐, "프로세싱" 또는 "액세스" 또는 "실행" 또는 "저장" 또는 "렌더링" 등의 용어를 이용한 설명이, 컴퓨터 시스템의 레지스터 및 메모리 내의 물리적(전자적) 양으로 표현된 데이터를 처리하여 컴퓨터 시스템 메모리 또는 레지스터 또는 다른 이러한 정보 저장, 전송 또는 디스플레이 장치 내의 물리적 양으로 유사하게 표현된 다른 데이터로 변환하는 컴퓨터 시스템(예를 들어, 도 1의 컴퓨터 시스템(100)) 또는 유사한 전자 컴퓨팅 장치의 동작 및 프로세스를 말한다는 것을 잘 알 것이다.
컴퓨터 시스템 플랫폼:
도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템(100)을 나타낸 것이다. 컴퓨터 시스템(100)은 어떤 하드웨어-기반 및 소프트웨어-기반 기능에 대한 실행 플랫폼을 제공하는, 본 발명의 실시예들에 따른 기본적인 컴퓨터 시스템의 컴포넌트를 나타낸 것이다. 일반적으로, 컴퓨터 시스템(100)은 적어도 하나의 CPU(101), 시스템 메모리(115), 및 적어도 하나의 그래픽 프로세서 유닛(GPU)(110)을 포함한다. CPU(101)는 브리지 컴포넌트/메모리 컨트롤러(도시 생략)를 통해 시스템 메모 리(115)에 연결될 수 있거나, CPU(101) 내부에 있는 메모리 컨트롤러(도시 생략)를 통해 시스템 메모리(115)에 직접 연결될 수 있다. GPU(110)는 디스플레이(112)에 연결되어 있다. 그의 계산 능력을 더 향상시키기 위해 하나 이상의 부가적인 GPU가 선택적으로 시스템(100)에 연결될 수 있다. GPU(들)(110)는 CPU(101) 및 시스템 메모리(115)에 연결되어 있다. 시스템(100)은, 예를 들어, 전용의 그래픽 렌더링 GPU(110)에 연결된 강력한 범용 CPU(101)를 갖는, 데스크톱 컴퓨터 시스템 또는 서버 컴퓨터 시스템으로 구현될 수 있다. 이러한 실시예에서, 주변 버스, 특수 그래픽 메모리, IO 장치 등을 부가하는 컴포넌트가 포함될 수 있다. 이와 유사하게, 시스템(100)은 핸드헬드 장치(예를 들어, 셀 전화 등) 또는, 예를 들어, 미국 와싱톤주 레드몬드 소재의 Microsoft Corporation부터 입수가능한 Xbox
Figure 112007045561361-pat00001
또는 일본 도쿄 소재의 Sony Computer Entertainment Corporation으로부터 입수가능한 PlayStation3
Figure 112007045561361-pat00002
등의 셋톱 비디오 게임 콘솔 장치로서 구현될 수 있다.
GPU(110)가 개별 컴포넌트, 커넥터를 통해 컴퓨터 시스템(100)에 연결되도록 설계된 개별 그래픽 카드(예를 들어, AGP 슬롯, PCI-Express 슬롯 등), 개별 집적 회로 다이(예를 들어, 마더보드 상에 직접 탑재됨), 또는 컴퓨터 시스템 칩셋 컴포넌트(도시 생략)의 집적 회로 다이 내에 포함되어 있는 통합 GPU로서 구현될 수 있다는 것을 잘 알 것이다. 게다가, 고대역폭 그래픽 데이터 저장을 위해 GPU(110)에 대한 로컬 그래픽 메모리(114)가 포함되어 있을 수 있다.
실시예:
본 발명의 실시예들은 그래픽 파이프라인의 래스터 스테이지에서 임의적인 타일 그룹을 래스터화하는 방법 및 시스템을 구현한다. 일반적으로, 비직사각형 타일 그룹은, 예를 들어, 정사각형(예를 들어, 4x4, 8x8, 16x16 타일 등) 또는 직사각형(예를 들어, 4x8, 8x16 타일 등) 이외의 구성으로 되어 있다. 이 방법은 그래픽 프로세서(예를 들어, 도 1의 GPU(110))의 래스터 스테이지에서 래스터화하기 위한 그래픽 프리미티브를 수신하는 단계를 포함한다. 본 발명의 실시예들은 다중레벨 래스터화 프로세스를 구현할 수 있다.
일 실시예에서, 그래픽 프리미티브는 그래픽 프리미티브에 관련된 일련의 픽셀을 포함하는 풋프린트(예를 들어, 프리미티브를 커버하는 타일 그룹)를 생성함으로써 제1 레벨에서 래스터화된다. 이어서, 그래픽 프리미티브는 일련의 픽셀(예를 들어, 프리미티브를 커버하는 타일 그룹)에 액세스하고 그 일련의 픽셀 중에서 커버된 픽셀을 결정함으로써 제2 레벨에서 래스터화된다. 예를 들어, 타일 그룹이 프리미티브를 커버할 수도 있지만, 각각의 타일을 구성하는 모든 픽셀이 그래픽 프리미티브를 커버하거나 그 안에 존재하지 않을 수 있다. 이 2 레벨 래스터화의 결과는 그래픽 프리미티브를 커버하거나 그 안에 존재하는 픽셀이다. 그 다음에, 래스터 스테이지는 그래픽 프로세서의 후속 스테이지에서의 렌더링 동작을 위해 커버된 픽셀을 출력한다.
도 2는 본 발명의 일 실시예에 따른, 픽셀들의 그리드가 밭갈이 패턴으로 래스터화되는 것을 나타낸 도면이다.
일 실시예에서, 도 2에 나타낸 바와 같이, GPU(110)의 래스터 스테이지는 그래픽 프리미티브를 순회하기 위해 밭갈이 패턴을 이용한다. 도 2에 나타낸 바와 같이, 밭갈이 패턴은 점선(221)으로 나타내어져 있다. 이러한 실시예에서, 픽셀들의 그리드의 각각의 픽셀은 선(221)으로 나타낸 순서로 순회된다. 선(221)은 밭갈이 순회 패턴을 나타낸 것이며, 여기서 용어 "밭갈이(boustrophedonic)"는, 농부가 밭을 갈거나 밭의 풀을 베는 것과 아주 흡사하게, 각각의 순회가 직교축을 따라 아래쪽으로 이동하면서 한 축을 따라 앞뒤로 스캔함으로써 2D 영역 상의 모든 픽셀을 방문하는 순회 패턴을 말한다. 용어 밭갈이(boustrophedonic)는 일반적으로, 예를 들어, 밭에서처럼 "소가 밭을 가는 것처럼"을 의미한다.
따라서, 도 2에 나타낸 바와 같이, 이 밭갈이(boustrophedonic) 래스터화는 주축을 따라 앞뒤로 접히는 S자 패턴을 말한다. 도 2의 예에서, 주축은 수평이다. 수평 밭갈이(boustrophedonic) 시퀀스는, 예를 들어, 한 행에서 좌측에서 우측으로 있는 프리미티브 삼각형 내의 모든 픽셀을 생성하고 그 다음 행에서는 우측에서 좌측으로 생성하며, 이하 마찬가지로 생성할 수 있다. 이러한 접힌 경로는 생성된 픽셀로부터 이전에 최근 생성된 픽셀까지의 평균 거리가 비교적 작도록 보장해준다. 게다가, 유의할 점은 픽셀 단위(pixel-by-pixel)인 것과는 달리 타일 단위로(tile-by-tile)(예를 들어, 생성된 타일로부터 이전에 최근 생성된 타일까지) 밭갈이(boustrophedonic) 순회 패턴이 구현될 수 있다는 것이다.
여전히, 도 2를 참조하면, 큰 프리미티브(예를 들어, 삼각형 등)를 래스터화할 때 커버된 화면의 영역을 방문하기 위한 밭갈이(boustrophedonic) 패턴은 관련 데이터의 캐쉬를 유지하고 프레임 버퍼 및 텍스처 액세스를 위해 요구되는 메모리 요청을 감소시키는 이점이 있다. 예를 들어, 최근의 픽셀 그룹 및/또는 그의 대응 하는 텍스처 값이 제한된 크기의 메모리(예를 들어, 캐쉬 메모리 등)에 유지될 때, 최근 생성된 픽셀 근방에 있는 픽셀을 생성하는 것이 중요하다.
밭갈이(boustrophedonic) 패턴 래스터화에 관한 부가적인 상세는 이하의 "화면 영역을 순회하기 위해 내포된 밭갈이 패턴을 사용하도록 구성된 래스터 컴포넌트를 갖는 GPU(A GPU HAVING RASTER COMPONENTS CONFIGURED FOR USING NESTED BOUSTROPHEDONIC PATTERNS TO TRAVERSE SCREEN AREAS)"에 기술되어 있다.
유의할 점은 본 발명의 실시예들이 밭갈이 래스터화와 관련하여 기술되어 있지만, 다른 유형의 래스터화 패턴이 사용될 수 있다는 것이다. 예를 들어, 타일 그룹을 래스터화하는 본 명세서에 기술된 알고리즘 및 GPU 스테이지는 종래의 좌에서 우로의, 라인 단위의 래스터화 패턴에 용이하게 적용될 수 있다.
도 3은 본 발명의 일 실시예에 따른, GPU(110)의 래스터 유닛에 대한 래스터화 패턴(321)에 대해 삼각형 폴리곤(301)(예를 들어, 삼각형(301))을 나타낸 도면이다.
상기한 바와 같이, 라인(321)은 밭갈이 순회 패턴을 나타낸 것이며, 여기서 래스터 유닛은, 각각의 순회가 직교축을 따라 아래쪽으로 이동하면서 한 축을 따라 스캔함으로써, 삼각형(301)의 2D 영역의 모든 픽셀을 방문한다. 도 3의 실시예에서, 이 초기의 래스터화 패턴은 제1 레벨에서, 즉 대단위 래스터화 레벨(coarse rasterization level)에서 수행된다. GPU(110)의 대단위 래스터 유닛은 삼각형(301)을 순회하고 삼각형(301)을 커버하는 타일 그룹을 색출한다. 삼각형(301)이 타일 그룹의 크기와 비교하여 크고 대단위 래스터 유닛이 삼각형(301)의 내부에 있는 픽셀들을 잘 래스터화하는 경우에, 이들 타일 그룹은 직사각형(예를 들어, 정사각형, 직사각형 등)일 수 있다. 삼각형(301)이 타일 그룹의 크기와 비교하여 작고 대단위 래스터 유닛이 삼각형(301)의 가늘고 긴 점(예를 들어, 점(302)) 근방의 픽셀들을 래스터화하는 경우에, 이들 타일 그룹은 또한 직사각형이 아닐 수 있다. 일반적으로, 비직사각형 타일 그룹은, 예를 들어, 정사각형(예를 들어, 4x4, 8x8, 16x16 타일 등) 또는 직사각형(예를 들어, 4x8, 8x16 타일 등) 이외의 구성으로 되어 있다. 본 명세서에서 사용되는 바와 같이, 유의할 점은 용어 "비직사각형 그룹"은 래스터 스테이지에서 래스터화되는 타일의 그룹이 직사각형 또는 정사각형 어레이로 제한되지 않는 속성을 말한다. 비직사각형 타일 그룹은 임의적인 배열로 되어 있을 수 있다. 예를 들어, 일 실시예에서, 비직사각형 타일 그룹은 심지어 서로 연속하지도 않은 타일을 포함할 수 있다.
도 4는 본 발명의 일 실시예에 따른, 제1 레벨 래스터화 프로세스에 의해 검사될 때 타일들의 그리드에 대해 삼각형(301)을 나타낸 도면이다. 도 4에서, 예시된 정사각형들 각각은 픽셀들(예를 들어, 8x8, 16x16 등)로 이루어진 타일을 나타낸다. 도 4는 제1 레벨 래스터화가, 예시적인 타일 그룹(401) 등의, 각각 4개의 타일로 이루어진 대단위 래스터화 타일 그룹을 생성하는 경우를 나타낸 것이다.
상기한 바와 같이, 일 실시예에서, 제1 레벨 래스터화는 그래픽 프리미티브에 관련된 일련의 픽셀을 포함하는 타일 그룹(예를 들어, 프리미티브를 커버하는 타일 그룹), 또는 풋프린트(예를 들어, 풋프린트(401))를 생성한다. 일반적으로, 제1 레벨 래스터화는 화면 영역의 어느 픽셀들이 주어진 그래픽 프리미티브에 관련 되어 있는지를 신속하게 결정하기 위한 것이다. 따라서, 프리미티브에 관련되어 있는 픽셀들을 신속하게 찾아내기 위해 한번에 비교적 큰 픽셀 그룹(예를 들어, 타일)이 검사된다. 이 프로세스는 정찰에 비유될 수 있으며, 이에 의해 대단위 래스터 유닛은 화면 영역을 신속하게 스캔하고 삼각형(301)을 커버하는 타일 그룹을 찾아낸다. 따라서, 삼각형(301)에 관련되어 있는 픽셀들이, 단일 레벨의 래스터화를 이용하고 보다 소단위 입도로 한번에 훨씬 더 적은 수의 픽셀을 검사하는 종래 기술의 프로세스보다 훨씬 더 신속하게 발견될 수 있다.
도 4의 실시예에서, 제1 레벨 래스터화는 4-타일 풋프린트(예를 들어, 풋프린트(401))를 이용하며, 이 경우 각각의 타일 그룹, 또는 풋프린트는 4개의 타일을 포함한다. 따라서, 제1 레벨 래스터화는 4-타일 풋프린트를 색출하며, 여기서 각각의 풋프린트는 삼각형(301)에 의해 커버된 적어도 하나의 픽셀을 갖는다. 따라서, 제1 레벨 래스터화는 대단위 래스터화라고 하는데, 그 이유는 큰 픽셀 그룹이 한번에 검사되기 때문이다.
도 5는 본 발명의 일 실시예에 따른 대단위 래스터 유닛에 의해 색출된 복수의 타일 그룹을 나타낸 도면이다. 예시적인 타일 그룹(501, 502)이 도시되어 있다.
도 5의 실시예는 삼각형(301)의 커버 정도를 최적화하기 위해 대단위 래스터 스테이지가 비직사각형 타일 그룹을 생성하는 방식을 나타낸 것이다. 상기한 바와 같이, 화면 영역의 어느 타일이 주어진 그래픽 프리미티브에 관련되어 있는지를 보다 효율적으로 결정하기 위해 비직사각형 풋프린트가 사용될 수 있다. 그래픽 프 리미티브는 이어서 생성된 타일 그룹에 액세스하고 이들 타일 그룹 중에서 커버된 픽셀들을 결정함으로써 제2 레벨에서 래스터화된다. 예를 들어, 타일 그룹이 프리미티브를 커버하고 있을 수 있더라도, 각각의 타일을 구성하는 모든 픽셀이 그래픽 프리미티브를 커버하거나 그 안에 존재할 수 있는 것은 아니다.
도 5는 예시적인 비직사각형 타일 그룹(501, 502)을 나타낸 것이다. 타일 그룹 또는 풋프린트(501, 502)는 그의 구성 타일이 박스 또는 직사각형으로 배열되어 있지 않다는 점에서 비직사각형이다. 풋프린트(501, 502)의 경우에, 그의 구성 타일은 도시된 바와 같이 "L자" 패턴으로 색출된다. 이 비직사각형 패턴은 풋프린트(501, 502) 내의 커버된 픽셀의 숫자를 최적화한다.
도 5는 또한 타일(511-518)을 나타내고 있다. 그의 커버 정도에 따라, 본 발명의 일 실시예에 따른 래스터 스테이지는 (예를 들어, 삼각형(301)의 상부 모서리를 따라) 타일(515-518)을 단일의 직사각형 타일 그룹으로 색출할 수 있고, (예를 들어, 삼각형(301)의 하부 모서리를 따라) 타일(511-514)을 유사한 직사각형 타일 그룹으로 색출할 수 있다. 이와 같이, 4개의 타일의 그룹은 집합체의 형상에 상관없이 집합체로 모여질 수 있다. 예를 들어, 집합체는 L-자형, 직선, 정사각형 등일 수 있다. 타일의 집합체의 크기는 집합체 내의 커버된 픽셀의 수를 최적화하기 위해 조정된다.
유의할 점은 제1 레벨 대단위 래스터화 프로세스에서 다른 수의 타일이 구현될 수 있다는 것이다. 예를 들어, 풋프린트마다 4개의 타일 대신에, 6개, 8개 또는 그 이상의 타일이 이용될 수 있다. 이러한 큰 풋프린트의 경우, 주어진 그래픽 프리미티브를 최상으로 커버하기 위해, 타일들은 다양한 서로 다른 형상으로 그리고 다양한 서로 다른 패턴으로 결합될 수 있다.
이와 같이, 래스터 스테이지에 의해 색출되는 비직사각형 풋프린트(예를 들어, 풋프린트(501))는 그래픽 프리미티브(예를 들어, 삼각형(301))의 형상에 따라 크기 조정가능하다. 예를 들어, 비직사각형 풋프린트는 풋프린트를 구성하는 커버된 픽셀의 수를 최적화하기 위해 크기 조정될 수 있다(예를 들어, x개의 타일 폭 × y개의 타일 길이). 이 속성은 렌더링되는 프리미티브가 예외적으로 길고 좁은 경우에 특히 유용하다. 이러한 길고 좁은 삼각형은, 예를 들어, 스텐실 쉐도우 알고리즘(stencil shadow algorithm) 등의 응용에서 흔히 있다. 예를 들어, 삼각형(301)이 아주 길고 좁은 삼각형인 경우, 대부분의 커버된 픽셀을 갖는 풋프린트를 색출하기 위해, 각각의 타일을 구성하는 픽셀의 수 및 풋프린트를 구성하는 파일의 수가 최적화될 수 있다. 이것은 삼각형의 점(예를 들어, 점(302)) 근방의 픽셀들을 래스터화할 때 특히 유용하다.
도 6은 본 발명의 일 실시예에 따른 제2 레벨 래스터화 프로세스를 사용하여 래스터화될 때의 풋프린트(501)를 나타낸 것이다. 상기한 바와 같이, 대단위 래스터화 이후에, 삼각형(301)은 풋프린트(501)의 일련의 픽셀(예를 들어, 타일 그룹(501)을 구성하는 픽셀들)에 액세스하고 이 일련의 픽셀 중에서 커버된 픽셀을 결정함으로써 제2 레벨에서 래스터화된다. 예를 들어, 풋프린트(501)가 삼각형(301)을 커버하고 있더라도, 각각의 타일을 구성하는 모든 픽셀이 그래픽 프리미티브를 커버하거나 그 안에 존재할 수 있는 것은 아니다.
제2 레벨 래스터화, 즉 소단위 래스터화는 이제 풋프린트(501)의 개개의 커버된 픽셀을 색출한다. 소단위 래스터화 프로세스는 풋프린트(501)를 구성하는 픽셀들을 검사하고 그 픽셀들 중 어느 것이 삼각형(301)에 의해 커버되는지를 결정한다. 이것이 도 6에서는 풋프린트(501)의 각각의 타일을 구성하는 16개 픽셀의 그리드로 나타내어져 있다. 각각의 타일의 16개 픽셀 각각은 삼각형(301)의 모서리에 대해 평가된다. 원하는 정확도에 따라, 이 평가에서 각각의 픽셀의 다수의 샘플점이 사용될 수 있다. 평가의 결과는 폴리곤(301)에 의해 커버되는 풋프린트(501)의 픽셀들의 지정이다. 이어서, 커버된 픽셀은 GPU(110)의 후속 스테이지 내에서의 추가의 처리를 위해 래스터화 유닛으로부터 출력된다.
도 7은 본 발명의 일 실시예에 따른 GPU(110)의 내부 컴포넌트를 나타낸 도면이다. 도 7에 나타낸 바와 같이, GPU(110)는 셋업 엔진(setup engine)(701) 및 래스터화기 유닛(rasterizer unit)(702)을 포함한다. 본 실시예에서, 본 발명의 기능은 래스터화기 유닛(702)의 하드웨어 및 소프트웨어 내에서 구현된다. 일반적으로, 셋업 유닛(701)은 정점에 기초한 서술로부터 모서리 서술(edge description)에 기초한 서술로 변환하는 기능을 한다. 그 다음에, 래스터화기 유닛(702)은 이들 모서리 서술을 실제의 픽셀 서술(pixel description)(예를 들어, 픽셀 영역, 픽셀 서브-샘플 등)을 구성하는 채워진 영역들로 변환한다. 이어서, 픽셀 서술은 추가의 처리 및 렌더링을 위해 GPU(110) 내의 다른 유닛으로 전달된다.
본 실시예에서, 래스터화기 유닛(702)은 대단위 래스터 컴포넌트(coarse raster component)(703) 및 소단위 래스터 컴포넌트(fine raster component)(704) 를 포함한다. 대단위 래스터 컴포넌트(703)는 상기한 바와 같이 비직사각형 타일 그룹 래스터화 프로세스를 구현하는데, 그 이유는 이 컴포넌트가 관심의 타일들(예를 들어, 프리미티브에 의해 커버되어 있는 타일들)을 식별하기 위해 타일들의 그리드를 신속하게 검색하기 때문이다. 관심의 타일 그룹들이 식별되면, 소단위 래스터 컴포넌트(704)는 프리미티브에 의해 커버되어 있는 픽셀들을 개별적으로 식별한다. 따라서, 이러한 실시예에서, 대단위 래스터 컴포넌트(703)는 타일들을 사용하여 픽셀들의 그리드를 신속하게 검색하고, 소단위 래스터 컴포넌트(704)는 대단위 래스터 컴포넌트(703)에 의해 생성된 정보를 사용하여 프리미티브에 의해 커버된 픽셀들을 개별적으로 식별함으로써 소단위 입도 래스터화(fine granularity rasterization)를 구현한다. 이들 경우 둘다에서, 대단위 래스터 컴포넌트(703) 및 소단위 래스터 컴포넌트(704) 둘다는 그의 래스터화 동안에 하나 이상의 밭갈이 패턴을 이용할 수 있다.
여전히 도 7을 참조하면, GPU(110)는 가장 빈번하게 사용되는 그래픽 렌더링 데이터에 대한 고속 저지연 저장(high-speed low latency storage)을 구현하는 기능을 하는 캐쉬 메모리(721)를 더 포함한다. 이러한 데이터는 일반적으로 텍스처 정보, 정점 정보(vertex information), 컬러 등을 포함한다. 캐쉬 메모리(721)는 로컬 그래픽 메모리(114)에 연결되어 있는 것으로 도시되어 있다. 캐쉬 메모리(721)는 로컬 그래픽 메모리(114)와의 일관성(coherency)을 유지하기 위해 하나 이상의 캐쉬 유지 메카니즘을 이용한다. 화살표(740)는 GPU(110)와 시스템 메모리(예를 들어, 도 1에 나타낸 메모리(115)) 간의 통신 경로를 나타낸다.
일 실시예에서, 래스터 유닛(702)을 구성하는 하드웨어는 클럭마다 동작하도록 최적화되어 있다. 예를 들어, 높은 처리 능력(throughput)을 제공하고 그에 의해 높은 렌더링 프레임 레이트를 유지하기 위해, 대단위 래스터 유닛(703) 및 소단위 래스터 유닛(704)은 제1 레벨 래스터화 및 제2 레벨 래스터화를 클럭 사이클 단위로 구현하도록 설계된 하드웨어를 포함한다. 래스터화기 유닛(702)은 제1 레벨 래스터화가 단일의 클럭 사이클 내에 주어진 프리미티브를 커버하는 타일 그룹(예를 들어, 비대칭적 타일 그룹을 포함함)을 "색출하는" 대단위 래스터 유닛(703)에서 구현되도록 구현될 수 있다. 그 다음에, 제2 레벨에서의 래스터화는 단일 클럭 사이클 내에 타일 그룹의 커버된 픽셀들을 색출하는 소단위 래스터 컴포넌트(704)에서 구현된다. 따라서, 예를 들어, 클럭당 64 픽셀을 처리할 수 있는 하드웨어는 64 픽셀 풋프린트(예를 들어, 각각 16 픽셀인 4개의 타일)를 사용하는 반면, 클럭당 128 픽셀을 처리할 수 있는 하드웨어는 128 픽셀 풋프린트(예를 들어, 각각 16 픽셀인 8개의 타일, 각각 32 픽셀인 4개의 타일 등)를 사용한다. 상기한 바와 같이, 이들 타일은 다양한 서로 다른 집합체로 배열될 수 있다(예를 들어, 길고 좁은 풋프린트, 정사각형 풋프린트, 직사각형 풋프린트, 대각선 풋프린트, "L자"형 풋프린트 등).
병렬 소단위 래스터화:
도 8은 본 발명의 일 실시예에 따른 래스터화기 유닛(702)을 나타낸 것이며, 여기서 래스터화기 유닛은 병렬 소단위 래스터 유닛의 어레이(804)를 포함한다.
도 8의 실시예에서, 래스터 유닛(702)은 병렬 소단위 래스터화 유닛의 어레 이(804)을 포함한다. 대단위 래스터 유닛(703)과 관련하여, 래스터 유닛(702)은 도 7의 설명에서 상기한 것과 거의 동일하게 기능한다. 환언하면, 대단위 래스터 유닛(703)은 복수의 픽셀 타일을 생성하기 위해 제1 레벨에서 래스터화하기 위한 그래픽 프리미티브(예를 들어, 삼각형 폴리곤 등)를 수신한다. 도 8의 실시예에서, 이들 타일은 그 다음에 그 타일들을 어레이(804)에 할당함으로써 제2 레벨에서 래스터화된다.
예를 들어, 래스터 유닛(702)의 하드웨어가 클럭 단위로 높은 처리 능력을 위해 최적화되어 있는 실시예에서, 대단위 래스터 컴포넌트(703)는 다수의 타일(예를 들어, 4개의 타일 등)을 포함하는 타일 그룹을 색출하고, 여기서 각각의 타일은 다수의 픽셀(예를 들어, 각각 32개의 픽셀 등)을 포함하며, 이들 모두는 상기한 바와 같이 클럭 단위이다. 이들 타일 그룹은 임의의 특정의 래스터화 모드 또는 래스터화되는 임의의 특정의 프리미티브에 따라 대칭적이거나 비대칭적일 수 있다. 그 다음에, 이 타일 그룹은 어레이(804) 내의 복수의 래스터 유닛 각각에 할당된다. 병렬 소단위 래스터 유닛은 대단위 래스터 유닛(703)으로부터 수신된 타일들에 대해 제2 레벨 소단위 래스터화를 수행하도록 구성되어 있다. 원하는 성능 레벨에 따라, 어레이(804)는 크기가 변하게 되며, 더 적은 또는 더 많은 수의 병렬 소단위 래스터 유닛을 갖게 된다.
일 실시예에서, 타일들은 소단위 래스터 유닛별로(예를 들어, 소단위 래스터 유닛마다 하나의 타일 등) 어레이(804)에 할당될 수 있다. 다른 대안으로서, 타일의 일부분(예를 들어, 타일의 1/4, 타일의 1/2 등)이 래스터화기 유닛별로 할당될 수 있다. 일반적으로, 래스터화 작업은 양호하게는 그 결과의 작업 부하를 균일하게 평형시키기 위해 병렬 소단위 래스터 유닛들 간에 분산된다. 그 다음에, 병렬 소단위 래스터 유닛은 각각의 타일의 개별적인 커버된 픽셀을 색출하고 그 결과를 클럭 사이클마다 출력할 수 있다.
따라서, 예를 들어, 클럭마다 128 픽셀을 처리할 수 있는 하드웨어는 128 픽셀 풋프린트(예를 들어, 각각 16 픽셀인 8개의 타일)를 사용하게 된다. 대단위 래스터 유닛(703)은 클럭마다 8개의 타일을 색출하고 그 결과 얻어지는 8개 타일 각각을 어레이(804)의 8개의 소단위 래스터 유닛에 할당하게 된다. 8개의 소단위 래스터 유닛 각각은 이어서 그 각자의 할당된 타일의 커버된 픽셀(예를 들어, 최대 16개 픽셀 전부)을 색출하게 된다.
도 9는 본 발명의 일 실시예에 따른 16개 소단위 래스터 유닛의 어레이(804)를 갖는 래스터화기 유닛(702)을 나타낸 도면이다. 도 9는 래스터화기(702)의 성능이 임의의 적절한 원하는 성능 목표에 따라 확장 또는 축소될 수 있는 방식을 나타낸 것이다. 예를 들어, 고성능 애플리케이션의 경우, 대단위 래스터 유닛(703)은 16개 소단위 래스터 유닛을 포함하는 어레이(804)를 사용하여 높은 픽셀 처리 능력(예를 들어, 클럭당 256 픽셀)을 제공하기 위해 많은 수의 타일(예를 들어, 각각 16 픽셀인 16개 타일 등)을 색출하도록 구현될 수 있다. 이러한 실시예가 도 9에 나타내어져 있다. 다른 대안으로서, 저성능 애플리케이션의 경우, 대단위 래스터 유닛(703)은 더 적은 수의 타일(예를 들어, 각각 16 픽셀인 4개의 타일 등)을 색출하고 어레이(804)에서 더 적은 수의 소단위 래스터 유닛(예를 들어, 4개의 소 단위 래스터 유닛)을 사용하도록 구현될 수 있다.
일 실시예에서, 어레이(804)의 복수의 소단위 래스터 유닛 각각은 서로 거의 동일하다. 이 속성은 소단위 래스터 유닛이 대칭적인 멀티프로세싱 실행 방식으로 기능할 수 있게 해주며, 여기서 대단위 래스터 유닛(703)으로부터 받게 되는 작업 부하는 비례 배분 방식으로 어레이(804)의 소단위 래스터 유닛들 중 임의의 하나에 할당될 수 있다. 게다가, 이 속성은 또한 어레이(804)의 병렬 소단위 래스터 유닛들 간의 부하 평형화를 간단화한다. 작업 부하가 소단위 래스터 유닛들 간에 평형화되도록 그리고 그의 출력이 동일한 클럭 사이클에서 완료되도록, 타일의 그룹, 개개의 타일, 또는 타일의 서브부분이 소단위 래스터 유닛 각각에 할당될 수 있다.
도 10은 본 발명의 일 실시예에 따른 예시적인 부하-평형화 방법을 나타낸 도면이다. 도 10에 나타낸 바와 같이, 140개 블록이 10 x 14 그리드에 나타내어져 있다. 블록들 각각은 그 타일을 래스터화하는 데 요구되는 작업이 분배되는 방식을 나타내는 숫자(예를 들어, 0-7)를 포함한다. 예를 들어, 일 실시예에서, 8개의 래스터 유닛을 포함하는 어레이의 경우, 블록들은 도 10에 번호가 매겨진 대로 배분되며, 그 결과 체커판 패턴이 얻어지고, 따라서 각각의 소단위 래스터 유닛이 매 8번째 블록에 할당된다. 이 블록들은 상기한 바와 같이 타일들의 그룹, 개개의 타일, 또는 타일의 서브부분을 포함할 수 있다.
대체 실시예에서, 소단위 래스터 유닛 각각이 그리드의 일부를 할당받도록 블록들의 그리드가 할당될 수 있다. 예를 들어, 8개의 소단위 래스터 유닛 각각은 그리드의 상단행에 있는 블록들 각각의 숫자에 따라 그리드의 열을 할당받을 수 있 다. 각각의 소단위 래스터 유닛은 이어서 그의 할당받은 열의 블록들을 래스터화한다. 열 대신에 행을 사용하여 유사한 구성이 구현될 수 있으며, 그에 의해 각각의 소단위 래스터 유닛은 그의 할당된 행의 블록들을 래스터화한다. 이와 같이, 어레이를 구성하는 소단위 래스터 유닛들 간에 부하를 효율적으로 평형화하기 위해 다수의 서로 다른 할당 패턴이 구현될 수 있다.
도 11은 래스터화기(702)를 나타낸 도면이며, 여기서 어레이(804)의 4개의 소단위 래스터 유닛을 포함하는 그룹(1105)은 본 발명의 일 실시예에 따라 비활성화되어 있다.
도 11의 실시예에서, 어레이(804)의 나머지 소단위 래스터 유닛의 기능이 유지되고 있는 동안에 어레이(804)의 소단위 래스터 유닛 중 하나 이상이 비활성화될 수 있다. 어레이(804)의 소단위 래스터 유닛 중 하나 이상은 다수의 서로 다른 이유로 비활성화될 수 있다. 한가지 이러한 이유는 소단위 래스터 유닛 중 하나 이상이, 예를 들어, 제조 결함 등으로 인한 결함이 있는 경우이다. 다른 이유는 어레이(804)를 포함하는 GPU 전체의 의도된 전력 소모 레벨이 소단위 래스터 유닛들 중 하나 이상의 비활성화를 결정하는 경우이다.
어레이(804)의 소단위 래스터 유닛들 중 하나 이상을 비활성화시킬 수 있는 것에 의해, 어레이(804) 내에 하나 이상의 여분의 소단위 래스터 유닛을 포함시키면 고장의 경우에 여분의 역량을 제공할 수 있게 된다. 예를 들어, 부가의 수의 소단위 래스터 유닛이 어레이(804) 내에 포함될 수 있지만, 활성화되어 있는 경우에, 그 부가의 소단위 래스터 유닛의 사용은 목표 성능 레벨보다 더 높은 성능 레 벨을 제공하게 된다. 이와 유사하게, 부가의 수의 래스터 유닛이 어레이(804) 내에 포함될 수 있지만, 활성화되어 있는 경우, 래스터 유닛의 역량이 대단위 래스터 유닛(703)에 의해 제공되는 처리 능력에 의해 완전히 이용될 수 없다(예를 들어, 대단위 래스터 유닛(703)의 처리 능력이 병목(bottleneck)인 경우). 어레이(804)의 나머지 소단위 래스터 유닛들 중 하나 이상이 결함있는 경우에 이러한 여분의 하나 이상의 소단위 래스터 유닛이 활성화되고 이용될 수 있다. 예를 들어, 2개의 소단위 래스터 유닛이 결함있고 동작하지 않는 경우, 2개의 여분의 소단위 래스터 유닛이 활성화될 수 있고, 그에 의해 전체적인 래스터 유닛(702)의 목표 성능 레벨을 유지할 수 있게 된다.
도 12는 본 발명의 일 실시예에 따른, 기능 컴포넌트의 선택적인 활성화/비활성화를 지원하는 예시적인 아키텍처를 나타낸 다이어그램(1200)이다. 다이어그램(1200)은 본 발명의 일 실시에에 따른 일반화된 집적 회로를 나타낸 것으로서, 기능 컴포넌트의 선택적인 활성화/비활성화를 지원하는 컴포넌트를 나타내고 있다. 본 명세서에서 사용되는 바와 같이, 이하에 기술되는 기능 컴포넌트 동작 특성을 유연하게 구성하는 기능(예를 들어, 기능 컴포넌트의 인에이블/디스에이블, 클럭 속도의 변경, 동작 전압의 변경 등)은 종종 선택적 기능 컴포넌트 활성화/비활성화라고 한다.
다이어그램(1200)은 분배 컴포넌트(distribution component)(119), 기능 컴포넌트 구성 제어기(120), 수집 컴포넌트(collection component)(140) 및 기능 컴포넌트(131, 132, 133, 134)를 나타내고 있다. 분배 컴포넌트(119)는 기능 컴포넌 트(131, 132, 133, 134)에 연결되어 있고, 이들 기능 컴포넌트는 수집 컴포넌트(140)에 연결되어 있다. 기능 컴포넌트 구성 제어기(120)는 분배 컴포넌트(119), 기능 컴포넌트(131, 132, 133, 134), 및 수집 컴포넌트(140)에 연결되어 있다. 일 실시예에서, 기능 컴포넌트(131-134) 각각은 상기한 어레이(예를 들어, 어레이(804))의 소단위 래스터 유닛이다.
이 도 12의 실시예에서, 분배 컴포넌트(119)는 정보를 기능 컴포넌트(131-134)(예를 들어, 인에이블된 기능 컴포넌트)에 선택적으로 분배한다. 이 정보는, 예를 들어, 공통의 목적(예를 들어, 상기한 바와 같이, 타일 등의 그래픽 관련 정보)과 관련하여 처리하기 위한 데이터를 포함하는 작업 흐름 정보 등의 다양한 정보일 수 있다. 한 예시적인 구현에서, 분배 컴포넌트(119)는 단일의 작업 흐름 정보 또는 데이터(예를 들어, 타일 그래픽 데이터) 스트림을 수신하고 작업 흐름 정보를 기능 컴포넌트(131-134)에 분배한다. 다른 예시적인 구현에서, 단일의 정보 스트림은 부동 소수점 계산에 관련되어 있다. 일 실시예에서, 분배 컴포넌트(119)는 또한 다수의 정보 스트림을 수신하고 그 정보를 기능 컴포넌트(131-134)에 분배할 수 있다.
도 12의 실시예에서, 수집 컴포넌트(140)는 공통의 목적을 달성하는 데 사용하기 위해 동작들의 결과를 연결 및 취합함(예를 들어, 그래픽 버퍼로 전달하기 위해 결과를 취합함)으로써 기능 컴포넌트(131-134)로부터의 출력 또는 결과를 "수집"한다. 다른 실시예에서, 수집 컴포넌트(140)는 그래픽 버퍼이다. 또다른 실시예에서, 수집 컴포넌트(140)는 부동 소수점 계산의 결과를 취합할 수 있다.
다이어그램(1200)의 컴포넌트들은 또한 기능 컴포넌트 동작 특성을 유연하게 구성하기 위해(예를 들어, 기능 컴포넌트의 인에이블/디스에이블, 클럭 속도의 변경, 동작 전압의 변경 등을 위해) 협동하여 동작한다. 예를 들어, 기능 컴포넌트 구성 제어기(120)는 하나 이상의 기능 컴포넌트를 디스에이블 또는 인에이블하고 분배 컴포넌트(119)에 동작 특성의 변경(예를 들어, 기능 컴포넌트들 중 어느 것이 인에이블되어 있는지, 디스에이블되어 있는지 등)을 통지할 수 있다. 이와 같이, 기능 컴포넌트 구성 제어기(120)는 기능 컴포넌트(131-134) 중 하나 이상의 동작 특성(예를 들어, 디스에이블/인에이블 등)의 조정을 제어하며, 이 조정에 관한 정보를 분배 컴포넌트(119) 및 수집 컴포넌트(140)에 제공할 수 있다.
간략한 요약으로서, 이상에서는 다음과 같은 것들을 개시하였다.
개념 1. 그래픽 프로세서의 래스터 스테이지에서, 병렬 소단위 래스터화 방법으로서,
그래픽 프로세서의 래스터 스테이지에서 래스터화하기 위한 그래픽 프리미티브를 수신하는 단계,
복수의 픽셀 타일을 생성하기 위해 상기 그래픽 프리미티브를 제1 레벨에서 래스터화하는 단계,
커버된 픽셀을 생성하기 위해 상기 타일들을 병렬의 제2-레벨 래스터화 유닛의 어레이에 할당함으로써 상기 타일들을 제2 레벨에서 래스터화하는 단계, 및
상기 그래픽 프로세서의 후속 스테이지에서의 렌더링 동작을 위해 상기 커버 된 픽셀들을 출력하는 단계를 포함하는 방법.
개념 2. 개념 1에 있어서, 제1 레벨에서 래스터화하는 상기 단계는 클럭 사이클마다 구현되는 방법.
개념 3. 개념 1에 있어서, 상기 어레이를 사용하여 제2 레벨에서 래스터화하는 상기 단계는 클럭 사이클마다 구현되는 방법.
개념 4. 개념 1에 있어서, 제1 레벨에서 래스터화하는 상기 단계는 대단위 래스터 유닛에서 구현되고, 상기 어레이는 복수의 병렬 소단위 래스터화 유닛을 포함하는 방법.
개념 5. 개념 4에 있어서, 상기 복수의 소단위 래스터화 유닛은 실질적으로 동일한 방법.
개념 6. 개념 1에 있어서, 상기 복수의 타일이 병렬의 제2 레벨 래스터화 유닛의 어레이에 할당되어 상기 제2 레벨 래스터화 유닛들 간에 작업 부하를 평형화하는 방법.
개념 7. 개념 1에 있어서, 상기 병렬의 제2 레벨 래스터화 유닛들 중 적어도 하나는 비활성화되어 있는 방법.
개념 8. 개념 7에 있어서, 상기 적어도 하나의 병렬의 제2 래스터화 유닛은 고장 조건으로 인해 비활성화되는 방법.
개념 9. 개념 1에 있어서, 상기 병렬의 제2 레벨 래스터화 유닛들 중 적어도 하나는 여분의 제2 레벨 래스터화 능력을 제공하는 여분의 래스터화 유닛인 방법.
개념 10. 개념 1에 있어서, 병렬의 제2 레벨 래스터화 유닛의 어레이는 선택 적인 기능 컴포넌트 활성화를 할 수 있는 방법.
개념 11. GPU(그래픽 프로세서 유닛)로서,
폴리곤 서술(polygon description)을 생성하는 셋업 유닛(set-up unit),
상기 셋업 유닛에 연결되어 있는, 상기 폴리곤 서술을 래스터화하는 래스터화기 유닛,
상기 래스터화기 유닛 내에 있는, 그래픽 프리미티브와 관련된 복수의 픽셀 타일을 생성함으로써 상기 그래픽 프리미티브를 제1 레벨에서 래스터화하는 대단위 래스터 유닛, 및
상기 래스터화기 유닛 내에 있는, 상기 타일들을 제2 레벨에서 래스터화하는 병렬의 소단위 래스터 유닛의 어레이를 포함하며,
상기 타일들은 커버된 픽셀을 생성하기 위해 상기 병렬의 제2 레벨 래스터화 유닛에 할당되고, 상기 커버된 픽셀은 상기 GPU의 후속 스테이지에서의 렌더링 동작을 위해 출력되는 GPU.
개념 12. 개념 11에 있어서, 상기 제1 레벨에서 래스터화하는 동작은 클럭 사이클 단위로 구현되는 GPU.
개념 13. 개념 11에 있어서, 상기 어레이를 사용하여 상기 제2 레벨에서 래스터화하는 동작은 클럭 사이클 단위로 구현되는 GPU.
개념 14. 개념 11에 있어서, 병렬의 제2 레벨 래스터화 유닛의 어레이는 선택적인 기능 컴포넌트 비활성화를 할 수 있는 GPU.
개념 15. 개념 11에 있어서, 상기 제2 레벨 래스터화 유닛들 간에 작업 부하 를 평형화하기 위해 상기 복수의 타일이 병렬의 제2 레벨 래스터화 유닛의 어레이에 할당되는 GPU.
개념 16. 개념 11에 있어서, 상기 병렬의 제2 레벨 래스터화 유닛들 중 적어도 하나는 비활성화되어 있는 GPU.
개념 17. 개념 11에 있어서, 상기 병렬의 제2 레벨 래스터화 유닛들 중 적어도 하나는 여분의 제2 레벨 래스터화 능력을 제공하는 여분의 래스터화 유닛인 GPU.
개념 18. 컴퓨터 시스템으로서,
시스템 메모리,
상기 시스템 메모리에 연결된 중앙 처리 장치,
상기 중앙 처리 장치에 통신 연결되어 있는 그래픽 프로세서 유닛,
상기 그래픽 프로세서 내에 있는, 폴리곤 서술을 생성하는 셋업 유닛,
상기 그래픽 프로세서 내에 있고 상기 셋업 유닛에 연결되어 있는, 상기 폴리곤 서술을 래스터화하는 래스터화기 유닛,
상기 래스터화기 유닛 내에 있는, 그래픽 프리미티브에 관련된 복수의 픽셀 타일을 생성함으로써 상기 그래픽 프리미티브를 제1 레벨에서 래스터화하는 대단위 래스터 유닛, 및
상기 래스터화기 유닛 내에 있는, 상기 타일들을 제2 레벨에서 래스터화하는 병렬의 소단위 래스터 유닛의 어레이를 포함하며,
상기 타일들은 커버된 픽셀을 생성하기 위해 상기 병렬의 제2 레벨 래스터화 유닛에 할당되고, 상기 커버된 픽셀은 GPU의 후속 스테이지에서의 렌더링 동작을 위해 출력되는 컴퓨터 시스템.
개념 19. 개념 18에 있어서, 상기 제1 레벨에서 래스터화하는 동작 및 상기 제2 레벨에서 래스터화하는 동작은 클럭 사이클 단위로 구현되는 컴퓨터 시스템.
개념 20. 개념 18에 있어서, 상기 병렬의 제2 레벨 래스터화 유닛의 어레이는 선택적인 기능 컴포넌트 활성화/비할성화를 할 수 있는 컴퓨터 시스템.
선택적인 기능 컴포넌트 활성화/비활성화 및, 기능 컴포넌트의 인에이블/디스에이블, 클럭 속도의 변경, 동작 전압의 변경 등의, 기능 컴포넌트 동작 특성의 유연한 구성에 관한 부가적인 설명에 대해 이제부터 기술한다.
이하에서는 다이 수율을 향상시키는 시스템 및 방법에 대해 기술한다.
기술 분야
본 발명은 반도체 제조 분야에 관한 것이다. 상세하게는, 본 발명은 집적 회로 내의 기능 컴포넌트의 동작 특성을 동적으로 구성하는 시스템 및 방법에 관한 것이다.
배경 기술
전자 시스템 및 회로는 현대 사회의 진보에 상당한 기여를 하였으며, 유익한 결과를 달성하기 위해 많은 응용에서 이용되고 있다. 디지털 컴퓨터, 계산기, 오 디오 장치, 비디오 장비, 및 전화 시스템 등의 수많은 전자 기술이 사업, 과학, 교육 및 오락의 많은 영역에서 데이터를 분석 및 전달하는 데 있어서 생산성 향상 및 단가 절감을 용이하게 해주었다. 이들 유익한 결과를 제공하는 전자 시스템은 종종 집적 회로를 포함한다. 오류있는 결과를 방지하기 위해 아주 높은 신뢰성 특성을 갖는 집적 회로를 이용하는 것이 바람직하다. 그렇지만, 다양한 기능 및 성능 특성을 갖는 집적 회로를 설계 및 제작하는 것은 어려운 일이다. 게다가, 집적 회로를 제작하는 제조 프로세스는 아주 복잡하고 자원 집중적(resource intensive)이다.
집적 회로를 제조하는 것은, 수많은 계산 컴포넌트를 단일의 집적 회로 유닛에 포함시키는, 비용이 많이 드는 자원 집중적인 활동이다. 이 계산 컴포넌트는 보통 다양한 작업을 아주 높은 신뢰도로 수행할 수 있어야만 한다. 다양한 애플리케이션은 종종 서로 다른 성능 레벨 및 기능을 요구한다. 종래에, 각각의 다이는 설정된 기능을 제공하는 미리 정해진 양의 적절히 동작하는 컴포넌트로 제조된다. 그렇지만, 적절하고 효율적인 기능을 타당한 신뢰도로 제공하는 것이 종종 어렵다. 예를 들어, 많은 종래의 방법은 집적 회로에 결함있는 컴포넌트가 거의 또는 전혀 포함되어 있지 않을 것을 요구한다.
종래에, 집적 회로는 다수의 다이를 포함하는 웨이퍼에 제조되며, 각각의 다이는 수많은 기능 컴포넌트를 갖는 집적 회로를 포함한다. 주어진 웨이퍼 중에서 기능적으로 허용할만한 다이의 수를 웨이퍼의 수율이라고 말한다. 낭비를 없애고 단가를 절감하며 주어진 수의 다이에 대한 유효 제조 시간을 단축시키기 위해 비교 적 높은 수율을 유지하는 것이 바람직하다. 많은 수의 컴포넌트를 갖는 고성능의 웨이퍼에 대한 수율은 아주 낮을 수 있다.
집적 회로 다이 내에 결함있는 컴포넌트가 존재하는 것의 영향을 완화시키기 위해 메모리 칩 제조업자에 의해 사용되는 한가지 방법은 필요한 것보다 더 많은 컴포넌트, 예를 들어, 메모리 셀을 갖는 다이를 생산하는 것이다. 결함있는 컴포넌트가 있는 경우, 그 결함있는 컴포넌트가 단절되고 "여분"의 컴포넌트 중 하나가 이용된다. 이 방법은 보통 결함있는 컴포넌트를 대체한 후에도 "여분"으로 남아 있는 컴포넌트를 제조하는 데 귀중한 다이 면적 및 자원을 상당히 낭비하게 된다. 이러한 여분의 컴포넌트는 기능 및/또는 동작 생산성에 기여하지 않는다. 상당한 수의 다이는 결국 많은 "여분의" 컴포넌트를 가진 채로 있으며, 완벽하게 양호한 동작 능력이 이용되지 않는다.
결함있는 컴포넌트를 해결하려는 다른 종래의 시도는 특정의 기능과 연관된 하나의 기능 컴포넌트가 결함있는 경우 그 기능 동작을 제거하는 것이다. 예를 들어, 프로세서의 부동소수점 가속 컴포넌트가 결함있는 경우, 종래의 복구 기술을 사용하여 부동소수점 가속 기능이 제거 또는 디스에이블되고, 프로세서는 비부동소수점 가속 프로세서가 된다. 게다가, 최종 결과물은 제한된 능력을 가지며 전범위의 기능을 제공하지 않는(예를 들어, 부동소수점 연산을 수행할 수 없는) 사용가능한 집적 회로이다.
발명의 요약
본 발명의 시스템 및 방법은 집적 회로 내의 기능 컴포넌트의 구성을 가능하 게 해준다. 본 발명의 시스템 및 방법은 제조 결함, 호환성 특성, 성능 요건, 및 시스템 건강(예를 들어, 적절히 동작하는 컴포넌트의 수)에 기초하여 집적 회로 다이 내의 기능 컴포넌트의 동작 특성을 유연하게 변경할 수 있다. 일 실시예에서, 본 발명의 구성 시스템은 기능 컴포넌트, 분배 컴포넌트, 기능 컴포넌트 구성 제어기 및 선택적으로 수집 컴포넌트를 포함한다. 기능 컴포넌트는 처리 연산(예를 들어, 그래픽 처리 연산, 부동 소수점 연산 등)을 수행한다. 분배 컴포넌트는 작업 흐름 정보(예를 들어, 그래픽 처리 정보, 부동소수점 처리 정보 등)를 기능 컴포넌트에 분배한다. 기능 컴포넌트 구성 제어기는 기능 컴포넌트의 동작 특성을 구성한다. 수집 컴포넌트는 기능 컴포넌트로부터의 출력 또는 결과를 "수집"하고 통상의 목표를 달성하는 데 사용하기 위해 동작의 결과를 취합한다.
한 예시적인 구현에서, 기능 컴포넌트의 동작 특성에 대한 변경은 다른 기능 컴포넌트에 대한 변경과 조화된다. 작업 흐름 스케쥴링 및 분배도 또한 기능 컴포넌트의 동작 특성에 대한 변경에 기초하여 조정된다. 예를 들어, 기능 컴포넌트 구성 제어기는 동작 특성 설정을 변경하고 그 변경의 표시를 작업 흐름 분배 컴포넌트에 제공한다. 작업 흐름 분배 컴포넌트는 동작 특성 설정에 기초하여 작업 흐름 스케쥴을 변경한다. 예를 들어, 작업 흐름이 특정의 기능 컴포넌트로/로부터 전환된다.
일 실시예에서, 본 발명의 시스템 및 방법은 결함있는 기능 컴포넌트를 갖는 집적 회로 칩이 구제될 수 있게 해주고 집적 회로 제조에서의 웨이퍼 수율의 향상을 용이하게 해준다. 종래에, 결함있는 기능 컴포넌트를 갖는 집적 회로는 그렇지 않은 경우 폐기되고, 그 결과 웨이퍼의 제조 비용이 보다 적은 허용가능 다이에 전가된다. 일 실시예에서, 본 발명의 시스템 및 방법은 칩의 기본적인 기능을 유지하는 방식으로 다이 내의 결함있는 기능 컴포넌트를 디스에이블시킨다.
본 발명의 일 실시예에서, 집적 회로 구제는 칩 테스트와 관련하여 수행된다. 칩이 (예를 들어, 내장된 자체 테스트(built in self test, BIST)에 따라) 테스트되고 칩의 결함있는 기능 컴포넌트가 식별된다. 결함있는 기능 컴포넌트가 다이 내에 포함되어 있는 유사한 다른 기능 컴포넌트를 갖지 않는 것인지의 판정이 행해진다. 일 실시예에서, 결함있는 기능 컴포넌트가 디스에이블되는 경우 다이가 작업 흐름을 처리할 수 있는 다른 기능 컴포넌트를 갖지 않는지의 구분이 행해진다. 이러한 결함있는 기능 컴포넌트가 식별되는 경우, 다이가 폐기될 수 있는데, 그 이유는 다이가 완전한 기능을 제공하지 않기 때문이다. 결함있는 컴포넌트의 기능을 수행하기 위해 사용될 수 있는 다른 기능 컴포넌트가 존재하는 경우, 테스트의 결과에 기초하여 칩에 대해 기능 컴포넌트 구성 프로세스(예를 들어, 기능 컴포넌트 구성 프로세스(400))가 수행된다.
본 발명의 일 실시예에서, 기능 컴포넌트 구성 프로세스는 칩에 포함되어 있는 결함있는 기능 컴포넌트를 디스에이블시킨다. 결함있는 기능 컴포넌트 식별의 표시가 수신된다. 결함있는 기능 컴포넌트가 복수의 유사한 기능 컴포넌트 중 하나인지의 판정이 행해진다. 본 발명의 일 실시예에서, 식별된 결함있는 컴포넌트(예를 들어, 픽셀 쉐이더(shader), 정점 프로세서, 부동소수점 컴포넌트 등)는 동일한 기능을 제공할 수 있는 다른 유사한 컴포넌트의 리스트와 대조하여 비교된다. 한 예시적인 구현에서, 나머지 유사한 컴포넌트들이 결함있는 기능 컴포넌트와 유사한 컴포넌트인지를 판정하기 위해 그 나머지 유사한 컴포넌트들이 검사된다. 결함있는 기능 컴포넌트가 복수의 유사한 기능 컴포넌트 중 하나이고 다른 컴포넌트가 그렇지 않았으면 결함있는 컴포넌트에 할당되었을 작업 흐름을 처리할 수 있는 경우 그 결함있는 기능 컴포넌트가 디스에이블된다. 본 발명의 일 실시예에서 결함있는 컴포넌트와 연관된 기능 컴포넌트도 역시 (예를 들어, 제품 차별을 유지하기 위해) 디스에이블될 수 있다. 작업 흐름은 디스에이블된 컴포넌트로부터 전환된다.
일 실시예에서, 작업 흐름을 전환시키는 것은 그렇지 않았으면 결함있는 기능 컴포넌트로 정보를 전달하게 될 컴포넌트에 디스에이블의 표시를 제공함으로써 달성된다. 예를 들어, 디스에이블시키는 컴포넌트는 분배자 컴포넌트(distributor component)에 표시(예를 들어, 비트맵)를 제공하고, 분배자 컴포넌트는 결함있는 기능 컴포넌트에 정보를 제공하지 않는다. 그 대신에, 작업 흐름이 다른 유사한 기능 컴포넌트로 전환된다.
본 발명의 구제 방법의 일 실시예에서, 특정의 성능 레벨에 대한 다이의 특성에 대한 정의가 포함되고, 다이가 그에 따라 마킹된다. 한 예시적인 구현에서, 테스트는 각각의 성능 레벨에서 어느 결함이 허용되는지의 표시를 포함한다. 예를 들어, 테스트는 제1 복수의 병렬 기능 컴포넌트가 디스에이블될 수 있는 제1 성능 레벨 및 제2 복수의 병렬 기능 컴포넌트가 디스에이블될 수 있는 제2 성능 레벨을 포함할 수 있다. 본 발명은 또한 테스트 절차의 일부로서 성능 레벨에 기초하여 다이의 자동적인 비닝(binning)을 용이하게 해줄 수 있다.
일 실시예에서, 원격 집적 회로의 구성에 집중된 자원이 이용된다. 원격 기능 컴포넌트 구성 아키텍처는 원격지에 위치된 집적 회로 다이에 포함되어 있는 기능 컴포넌트의 구성을 용이하게 해준다. 한 예시적인 구성에서, 시스템이 원격 자원에 재구성 코드를 요청하는 다이 기능 컴포넌트 재구성 요청 프로세스가 시작된다. 코드 요청은 요청자가 재구성 코드를 수신할 권한이 있음(예를 들어, 요청자가 필요한 지불을 하였음, 인증된 시스템을 가지고 있음 등)을 나타내는 재구성 코드 허용 표시자(reconfiguration code permission indicator)를 포함한다. 재구성 코드에 대한 요청 및 허용 표시자가 수신되고 허용 표시자의 유효성이 분석되며 재구성 코드가 제공되는 재구성 코드 생성 프로세스가 실행된다. 적절한 재구성 코드가 다이에 의해 수신될 때 다이에 대해 다이 기능 컴포넌트 재구성 프로세스가 수행된다.
상세한 설명
이제부터, 본 발명의 양호한 실시예들에 대해 상세히 언급할 것이며, 이들의 일례가 첨부 도면에 도시되어 있다. 본 발명이 양호한 실시예들과 관련하여 기술되지만, 이는 본 발명을 이들 실시예들로 한정하려는 것이 아님을 잘 알 것이다. 그와 반대로, 본 발명은 첨부된 청구항들에 의해 정의되는 본 발명의 정신 및 범위 내에 포함될 수 있는 대안, 수정 및 등가물을 포괄하는 것으로 보아야 한다. 게다가, 본 발명의 실시예들에 대한 이하의 상세한 설명에서, 본 발명의 철저한 이해를 제공하기 위해 수많은 구체적인 상세가 기술된다. 그렇지만, 당업자라면 본 발명 이 이들 구체적인 상세 없이도 실시될 수 있다는 것을 잘 알 것이다. 다른 경우에, 본 발명의 태양들을 불필요하게 모호하게 하지 않도록 하기 위해 공지의 방법, 프로시저, 컴포넌트 및 회로는 상세히 기술되어 있지 않다.
이하의 상세한 설명의 어떤 부분은 프로시저, 논리 블록, 프로세싱, 및 컴퓨터 메모리 내의 데이터 비트에 대한 연산의 다른 기호 표현으로 제공되어 있다. 이들 설명 및 표현은 그의 연구의 요지를 다른 당업자에게 효과적으로 전달하기 위해 데이터 처리 분야의 당업자에 의해 사용되는 수단이다. 프로시저, 논리 블록, 프로세스 등은 여기에서 일반적으로 원하는 결과를 가져오는 일관성있는 단계 또는 명령어 시퀀스인 것으로 생각된다. 이들 단계는 물리적 양의 물리적 처리를 포함한다. 통상적으로, 꼭 그러한 것은 아니지만, 이들 양은 컴퓨터 시스템에서 저장, 전송, 결합, 비교, 및 다른 방식으로 처리될 수 있는 전기, 자기, 광학 또는 양자 신호의 형태를 가질 수 있다. 주로 통상적으로 사용되기 때문에, 이들 신호를 비트, 값, 요소(elements), 심볼, 문자, 용어, 숫자 등으로 부르는 것이 때로는 편리하다는 것이 밝혀졌다.
그렇지만, 유의할 점은 이들 및 유사한 용어들 전부가 적절한 물리적 양과 연관되어 있고 이들 양에 적용되는 편리한 표식(label)에 불과하다는 것이다. 달리 구체적으로 언급하지 않는 한, 이하의 설명으로부터 명백한 바와 같이, 본 출원 전반에 걸쳐, "프로세싱", "컴퓨팅", "계산", "결정", "디스플레이" 등의 용어를 이용한 설명이, 물리적(전자적) 양으로 표현된 데이터를 처리하여 변환하는 컴퓨터 시스템 또는 유사한 프로세싱 장치(예를 들어, 전자, 광학, 또는 양자 컴퓨팅 장 치)의 동작 및 프로세스를 말한다는 것을 잘 알 것이다. 이들 용어는 컴퓨터 시스템의 컴포넌트(예를 들어, 레지스터, 메모리, 다른 이러한 정보 저장, 전송 또는 디스플레이 장치 등) 내의 물리적 양을 처리 또는 다른 컴포넌트 내의 물리적 양으로 유사하게 표현된 다른 데이터로 변환하는 프로세싱 장치의 동작 및 프로세스를 말한다.
도 13a는 본 발명의 일 실시예에 따른 집적 회로(100)의 블록도이다. 집적 회로(100)는 분배 컴포넌트(110), 기능 컴포넌트 구성 제어기(120), 수집 컴포넌트(140) 및 기능 컴포넌트(131, 132, 133, 134)를 포함한다. 분배 컴포넌트(110)는 기능 컴포넌트(131, 132, 133, 134)에 연결되어 있고, 이들 기능 컴포넌트는 수집 컴포넌트(140)에 연결되어 있다. 기능 컴포넌트 구성 제어기(120)는 분배 컴포넌트(110), 기능 컴포넌트(131, 132, 133, 134), 및 수집 컴포넌트(140)에 연결되어 있다. 본 발명의 일 실시예에서, 집적 회로(100)의 컴포넌트는 단일의 다이에 포함되어 있다. 집적 회로(100)의 컴포넌트는 정보 처리(예를 들어, 데이터 처리)를 수행하기 위해 협동하여 동작한다. 한 예시적인 구현에서, 집적 회로(100)의 컴포넌트들은 공통의 목적에 관련된 정보 처리(예를 들어, 이미지를 생성하는 것과 연관된 그래픽 파이프라인 처리)를 수행한다.
분배 컴포넌트(110)는 기능 컴포넌트(131-134)(예를 들어, 인에이블된 기능 컴포넌트)에 정보를 선택적으로 분배한다. 분배 컴포넌트(110)가 다양한 정보를 분배할 수 있다는 것을 잘 알 것이다. 예를 들어, 분배 컴포넌트(110)는 작업 흐름 정보를 분배할 수 있다. 작업 흐름 정보는 공통의 목적과 관련하여 처리하기 위한 정보 또는 데이터일 수 있다. 예를 들어, 작업 흐름 정보는 그래픽 관련 정보(예를 들어, 정보 스트림의 여러가지 부분이 이미지의 순차적으로 구성된 픽셀에 대한 픽셀 정보를 포함하고 있는 단일의 정보 스트림)일 수 있다. 한 예시적인 구현에서, 분배 컴포넌트(110)는 단일의 작업 흐름 정보 또는 데이터 스트림을 수신하고 작업 흐름 정보를 기능 컴포넌트(131-134)에 분배한다. 예를 들어, 단일의 정보 스트림은 제1 픽셀, 제2 픽셀, 및 제3 픽셀에 관련된 정보를 포함할 수 있다. 분배 컴포넌트(110)는 단일의 픽셀 정보 스트림(예를 들어, 패킷 시퀀스)을 수신하고 제1 픽셀에 관련된 정보(예를 들어, 개개의 패킷으로서)를 기능 컴포넌트(131)에, 제2 픽셀에 관련된 정보를 기능 컴포넌트(132)에, 또한 제3 픽셀에 관련된 정보를 기능 컴포넌트(133)에 분배한다. 다른 예시적인 구현에서, 분배 컴포넌트(110)는 부동소수점 계산에 관련된 단일의 정보 스트림을 수신하고 제1 부동소수점 계산에 연관된 정보를 기능 컴포넌트(131)에, 제2 부동소수점 계산에 연관된 정보를 기능 컴포넌트(132)에, 또한 제3 부동소수점 계산에 연관된 정보를 기능 컴포넌트(133)에 분배한다. 일 실시예에서, 분배 컴포넌트(110)는 또한 다수의 정보 스트림을 수신하고 그 정보를 기능 컴포넌트(131-134)에 분배할 수 있다. 분배 컴포넌트(110)가 작업 흐름 정보를 분배하는 것 이외에 기능을 수행하거나 작업을 수행하는 실시예를 비롯하여, 분배 컴포넌트(110)가 다양한 실시예로 구현될 수 있다는 것을 잘 알 것이다.
기능 컴포넌트(131-134)는 기능 컴포넌트(131-134)가 서로 다른 기능 동작 또는 작업을 수행하는 다양한 구현을 포함할 수 있다. 일 실시예에서, 기능 컴포 넌트(131-134)는 유사한 기능을 제공한다(예를 들어, 병렬 동작을 수행한다). 예를 들어, 일 실시예에서, 기능 컴포넌트(131-134)는 그래픽 처리 관련 작업(예를 들어, 쉐이딩(shading), 텍스처링(texturing), 오클루젼 컬링(occlusion culling))을 수행할 수 있다. 다른 실시예에서, 기능 컴포넌트(131-134)는 부동소수점 관련 처리를 수행할 수 있다.
수집 컴포넌트(140)는 기능 컴포넌트(131-134)로부터의 출력 또는 결과를 "수집"한다. 일 실시예에서, 수집 컴포넌트(140)는 공통의 목적을 달성하는 데 사용하기 위한 동작의 결과를 연결 또는 취합한다. 예를 들어, 수집 컴포넌트(140)는 그래픽 버퍼로 전달하기 위한 결과를 취합할 수 있다. 다른 실시예에서, 수집 컴포넌트(140)는 그래픽 버퍼이다. 또다른 실시예에서, 수집 컴포넌트(140)는 부동소수점 계산의 결과를 취합할 수 있다.
집적 회로(100)의 컴포넌트들은 또한 기능 컴포넌트 동작 특성을 유연하게 구성하기 위해(예를 들어, 기능 컴포넌트의 인에이블/디스에이블, 클럭 속도의 변경, 동작 전압의 변경 등을 위해) 협동하여 동작한다. 기능 컴포넌트 구성 제어기(120)는 기능 컴포넌트(131-134) 중 하나 이상의 동작 특성(예를 들어, 디스에이블/인에이블 등)의 조정을 제어하고, 이 조정에 관한 정보를 분배 컴포넌트(110) 및 수집 컴포넌트(140)에 제공할 수 있다. 예를 들어, 기능 컴포넌트 구성 제어기(120)는 기능 컴포넌트를 디스에이블 또는 인에이블(예를 들어, 기능 컴포넌트(132)를 디스에이블 또는 인에이블)할 수 있다. 기능 컴포넌트 구성 제어기(120)는 기능 컴포넌트(132) 동작 특성에 대한 변경(예를 들어, 기능 컴포넌트 중 어느 것이 인에이블되는지, 디스에이블되는지 등)을 분배 컴포넌트(110)에 통지할 수 있다.
분배 컴포넌트(110)는 작업 흐름 정보를 분배함에 있어서 기능 컴포넌트(132)의 동작 특성에 관한 정보를 사용할 수 있다. 일 실시예에서, 분배 컴포넌트(110)는 기능 컴포넌트에의 정보(예를 들어, 처리하기 위한 데이터를 포함한 작업 흐름)의 분배에 기능 컴포넌트의 구성을 고려할 수 있다. 프로세서 기능 컴포넌트들 중 하나가 디스에이블되는 경우(예를 들어, 결함이 있기 때문에), 분배 컴포넌트(110)는 "작업 흐름"을 처리하기 위해 다른 나머지 프로세스 기능 컴포넌트들에 그 정보를 분배한다. 예를 들어, 기능 컴포넌트(132)가 기능 컴포넌트 구성 제어기(120)에 의해 디스에이블되는 경우, 분배 컴포넌트(110)는 기능 컴포넌트(132)가 디스에이블됨을 통지받고, 분배 컴포넌트(110)는 작업 흐름을 다른 기능 컴포넌트(예를 들어, 131, 133, 및/또는 134)로 보낼 수 있다. 기능 컴포넌트(132)가 기능 컴포넌트 구성 제어기(120)에 의해 인에이블되는 경우, 분배 컴포넌트(110)는 기능 컴포넌트(132)가 인에이블됨을 통지받고, 분배 컴포넌트(110)는 작업 흐름을 기능 컴포넌트(132)로 보낼 수 있다. 분배 컴포넌트(110)는 또한 기능 컴포넌트의 성능 구성(예를 들어, 클럭 속도)에 기초하여 나머지 인에이블된 기능 컴포넌트에 정보를 분배할 수 있다. 한 예시적인 구현에서, 더 큰 성능 요구를 갖는 작업(예를 들어, 중요한 작업)은 더 큰 성능 특성 또는 능력을 갖는 기능 컴포넌트(예를 들어, 더 빠른 컴포넌트)로 라우팅(route)된다. 예를 들어, 3차원(3D) 그래픽 정보는 고성능(예를 들어, 고속) 그래픽 파이프라인으로 라우팅될 수 있고, 2차원(2D) 그래픽 정보는 저성능(예를 들어, 저속) 그래픽 파이프라인으로 라우팅될 수 있다. 일 실시예에서, 이 정보는 스코어보딩 알고리즘(scoreboarding algorithm)에 따라 분배된다.
본 발명의 일 실시예에서, 기능 컴포넌트 구성 제어기(120)는 기능 컴포넌트(131-134)의 동작 특성에 대한 변경을 지시한다. 동작 특성은 기능 컴포넌트(131-134)의 성능에 영향을 줄 수 있다. 예를 들어, 기능 컴포넌트 구성 제어기(120)는 기능 컴포넌트(131-134)의 동작 특성 상태를 변경(예를 들어, 기능 컴포넌트를 인에이블 또는 디스에이블)할 수 있다. 한 예시적인 구현에서, 기능 컴포넌트 구성 제어기(120)는 (예를 들어, 클럭 주파수를 변경함으로써) 기능 컴포넌트가 동작하는 속도 및/또는 (예를 들어, 기능 컴포넌트에 공급되는 전압을 변경함으로써) 기능 컴포넌트에 의해 소비되는 전력을 변경할 수 있다. 예를 들어, 기능 컴포넌트 구성 제어기(120)는 기능 컴포넌트(131-134)에 공급되는 클럭 신호의 주파수를 변경하도록 클럭 소스(137)에 및/또는 기능 컴포넌트(131-134)에 공급되는 전력 신호의 전압을 변경하도록 전원(138)에 지시할 수 있다.
본 발명이 다양한 기능 컴포넌트에서 이용하기 위해 용이하게 개조가능하다는 것을 잘 알 것이다. 기능 컴포넌트(131-134)는 다양한 서로 다른 기능(예를 들어, 부동소수점, 픽셀 쉐이딩, 정점 쉐이딩, 저장, 버퍼링 등)을 제공하는 기능 유닛일 수 있다. 한 예시적인 구현에서, 기능 컴포넌트는 유사한 동작을 거의 동시에(예를 들어, 병렬로 동시적으로) 수행할 수 있다. 본 발명의 일 실시예에서, 기능 컴포넌트는 능동 기능 컴포넌트이다.
일 실시예에서, 기능 컴포넌트는 프로세싱 유닛에 포함된 프로세서 컴포넌트(예를 들어, 부동소수점 컴포넌트, 픽셀 쉐이더 컴포넌트, 정점 프로세서 컴포넌트 등)이다. 본 발명이 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 및/또는 내장된 처리 장치를 비롯한 다양한 처리 장치에서 용이하게 구현될 수 있다는 것을 잘 알 것이다. 한 예시적인 구현에서, 처리 장치는 프로세서 기능 컴포넌트(예를 들어, 부동소수점 컴포넌트)에 작업을 할당하기 위한 스코어보딩 알고리즘을 포함한다. 결과가 프로세서 기능 컴포넌트에 의해 처리될 때, 스코어보드는 어느 피연산자가 프로세서 기능 컴포넌트에 의해 요구되는지를 추적하고 그를 스케쥴링한다. 개개의 프로세서 기능 컴포넌트로부터의 결과들은 전체적인 결과를 제공하기 위해 결합될 수 있다. 스코어보드는 작업의 스케쥴링에 기능 컴포넌트 구성을 고려할 수 있다. 예를 들어, 프로세서 기능 컴포넌트들 중 하나가 디스에이블되는 경우(예를 들어, 결함있기 때문에), 스코어보드는 프로세싱 작업 흐름을 처리하기 위해 다른 나머지 프로세서 기능 컴포넌트를 재스케쥴링한다.
본 발명은 파이프라인 유형(예를 들어, 벡터 유형, 쓰레드 유형 등) 처리 환경에서 구현될 수 있다. 도 13b는 본 발명의 일 실시예에 따라 파이프라인 집적 회로(150)의 블록도이다. 파이프라인 집적 회로(150)는 기능 컴포넌트가 파이프라인인 집적 회로(100)의 구현이다. 집적 회로(150)는 분배 컴포넌트(151), 기능 컴포넌트 구성 제어기(152), 수집 컴포넌트(154) 및 파이프라인(171, 172, 173, 174)을 포함한다. 파이프라인(171, 172, 173, 174)은 파이프라인 동작(예를 들어, 명령어의 페치, 디코드 및 실행)을 수행한다. 기능 컴포넌트 구성 제어기(152)는 파 이프라인(171-174)의 동작 특성을 제어하고 또한 파이프라인(171-174)의 동작 특성에 관한 정보(예를 들어, 기능 컴포넌트 중 어느 것이 디스에이블 및/또는 인에이블되는지에 관한 정보)를 분배 컴포넌트(151) 및 수집 컴포넌트(154)에 제공한다. 동작 특성의 제어는 다양한 입도(granularity)로 수행될 수 있다. 예를 들어, 파이프라인은 개별적인 기능 컴포넌트별로도 구성(예를 들어, 인에이블, 디스에이블 등)될 수 있는 각각의 파이프라인 내에 다수의 개별적인 기능 컴포넌트(도시 생략)를 포함할 수 있다.
파이프라인 집적 회로(150)의 컴포넌트는 집적 회로(100)의 컴포넌트와 유사하게 동작한다. 예를 들어, 작업 흐름 정보는 유사한 방식으로 전환되거나 라우팅된다. 기능 컴포넌트 구성 제어기(152)는 기능 컴포넌트(171-174)의 동작 특성(예를 들어, 디스에이블됨, 인에이블됨, 속도, 전압 등)에 관한 정보를 분배 컴포넌트(151)에 제공한다. 분배 컴포넌트(151)는 동작 특성 정보에 부분적으로 기초하여 파이프라인(171-174)에 정보를 분배한다(예를 들어, 작업 흐름 정보를 인에이블된 기능 컴포넌트에는 분배하고 디스에이블된 기능 컴포넌트에는 분배하지 않는다). 수집 컴포넌트(140)는 파이프라인(171-174)의 출력을 "수집"(예를 들어, 연결 또는 취합)한다(예를 들어, 그래픽 버퍼에 저장하기 위해 결과들을 연결 또는 취합한다). 일 실시예에서, 기능 컴포넌트 구성 제어기(152)는 기능 컴포넌트(171-174)에 공급되는 클럭 신호의 주파수를 변경하도록 클럭 소스(175)에 지시하고 및/또는 기능 컴포넌트(171-174)에 공급되는 전력 신호의 전압을 변경하도록 전원(177)에 지시할 수 있다.
본 발명의 집적 회로는 다양한 집적 레벨(예를 들어, 다양한 다이 계층구조 및 아키텍처)로 구현될 수 있다. 도 13c는, 본 발명의 다이 계층구조의 다른 실시예인 멀티프로세서 집적 회로(190)의 블록도이다. 멀티프로세서 집적 회로(190)의 컴포넌트는 기능 컴포넌트가 프로세서인 것을 제외하고는 집적 회로(100)와 유사하다. 멀티프로세서 집적 회로(190)는 분배 컴포넌트(191), 기능 컴포넌트 구성 제어기(192), 수집 컴포넌트(194) 및 프로세서(195, 197, 198, 199)를 포함한다. 일 실시예에서, 프로세서(195, 197, 198, 199)는 단일의 다이에 포함되어 있으며 공통의 캐쉬 메모리에 연결되어 있다. 기능 컴포넌트 구성 제어기(192)는 프로세서(195-199) 중 하나 이상에 동작 특성 조정(예를 들어, 디스에이블/인에이블)을 지시할 수 있으며, 프로세서(195-199)의 동작 특성을 나타내는(예를 들어, 프로세스가 디스에이블/인에이블되어 있는지를 나타내는) 동작 특성 정보를 분배 컴포넌트(191) 및 수집 컴포넌트(194)에 제공한다. 한 예시적인 구현에서, 기능 컴포넌트 구성 제어기(192)가 프로세서(예를 들어, 195, 197, 198, 199)를 디스에이블하는 경우에도, 집적 회로(190)는 여전히 완전한 기능을 제공한다.
멀티프로세서 집적 회로(190)의 컴포넌트는 집적 회로(100)의 컴포넌트와 유사하게 동작한다. 예를 들어, 작업 흐름 정보가 유사한 방식으로 전환되거나 라우팅된다. 기능 컴포넌트 구성 제어기(192)는 기능 컴포넌트의 동작 특성(예를 들어, 디스에이블됨, 인에이블됨, 속도, 전압 등)에 관한 정보를 분배 컴포넌트(191)에 제공한다. 분배 컴포넌트(191)는 프로세서(195-199)에 정보(예를 들어, 작업 흐름 데이터)를 분배한다. 이 분배는 동작 특성 정보에 부분적으로 기초한다(예를 들어, 작업 흐름 정보를 인에이블된 기능 컴포넌트에는 분배하고 디스에이블된 기능 컴포넌트에는 분배하지 않는다). 한 예시적인 구현에서, 수집 컴포넌트(194)는 프로세서(195-199)의 출력을 "수집" 또는 저장하는 메모리(예를 들어, 공통 캐쉬)이다. 일 실시예에서, 기능 컴포넌트 구성 제어기(192)는 기능 컴포넌트(195-199)에 공급되는 클럭 신호의 주파수를 변경하도록 클럭 소스(181)에 지시하고 및/또는 기능 컴포넌트(195-199)에 공급되는 전력 신호의 전압을 변경하도록 전원(182)에 지시할 수 있다.
본 발명의 일 실시예에서 성능과 기능 간의 구별이 행해진다. 어떤 경우에, 본 발명은, 기능 또는 작업이 다른 성능 레벨에서 달성될 수 있을지라도, 특정의 유형의 기능 또는 작업이 여전히 수행될 수 있다는 의미에서 동작 특성을 변경할 때 기능을 제한하지 않는다. 일 실시예에서, 기능 컴포넌트 구성 제어기는 작업을 병렬로 수행할 수 있는 모든 기능 컴포넌트를 디스에이블하지는 않는다. 예를 들어, 다이가 프로세서에 2개의 병렬의 부동소수점 기능 컴포넌트를 가지고 있고 기능 컴포넌트 구성이 부동소수점 기능 컴포넌트 중 하나의 인에이블 특성 또는 상태를 변경하는 경우(예를 들어, 디스에이블하는 경우), 작업 흐름은 나머지 인에이블된 부동소수점 기능 컴포넌트로 "재라우팅"된다. 부동소수점 동작의 성능 레벨이 변할(예를 들어, 떨어질) 수 있는데, 그 이유는 작업 흐름이 2개 대신에 하나의 부동소수점 기능 컴포넌트에 의해 처리되고 있기 때문이다. 그렇지만, 다이는 여전히 동일한 기능 또는 작업을 제공할 수 있다(예를 들어, 부동소수점 기능을 수행할 수 있다).
본 발명의 일 실시예에서, 집적 회로(예를 들어, 집적 회로(100), 집적 회로(150), 집적 회로(190) 등)는 수행 능력(인에이블 및/또는 디스에이블되는 기능 컴포넌트의 수)에 대응하는 성능 표시자로 마킹된다. 이 마킹은 전자적으로 판독가능한 마킹 및/또는 (예를 들어, 다이 상의) 잉크 마킹일 수 있다. 이 마킹은 집적 회로의 품질 등급의 표시자일 수 있다. 이 마킹은 또한 집적 회로와 연관된 성능 척도(예를 들어, 처리 속도, 대역폭 등)일 수 있다.
기능 컴포넌트 구성 제어기(120, 152, 및/또는 192)가 여러가지 목적에 따라 기능 컴포넌트 변경을 지시할 수 있다는 것을 잘 알 것이다. 예를 들어, 기능 컴포넌트 구성 제어기는 수율 문제, 호환성 문제, 성능 문제, 시스템 "건강" 문제 등에 기초하여 기능 컴포넌트의 동작 특성을 변경할 수 있다. 또한, 기능 컴포넌트 구성 제어기(120, 152, 및/또는 192)가 소프트웨어 프로그램가능 레지스터 또는 마스크, 하드코딩된 마스크 등을 비롯하여, 목적을 달성하기 위해 다양한 구현을 포함할 수 있다는 것을 잘 알 것이다.
일 실시예에서, 기능 컴포넌트 구성 제어기(예를 들어, 120, 152, 및/또는 192)는 수율 문제를 해결하기 위해 기능 컴포넌트의 동작 특성의 변경을 지시한다. 본 발명은 집적 회로 제조에서의 웨이퍼 수율의 향상을 용이하게 해주는 이점을 갖는다. 본 발명의 시스템 및 방법은 어떤 결함있는 기능 컴포넌트를 갖는 집적 회로가 구제될 수 있게 해준다. 종래에, 결함있는 기능 컴포넌트를 갖는 다이는 폐기되며, 그 결과 웨이퍼의 생산 비용이 보다 적은 허용가능 다이에 전가된다. 본 발명은, 결함있는 컴포넌트의 디스에이블이 성능에 영향을 줄 수 있을지라도, 결함 있는 기능 유닛을 갖는 어떤 다이가 동일한 유형의 기능을 수행하고 그에 의해 기능을 유지하는 데 사용될 수 있게 해준다. 웨이퍼 상의 유용한 다이의 수를 증가시키는 것은 웨이퍼 생산의 비용을 더 많은 수의 허용가능 다이에 전가될 수 있게 해준다. 보다 낮은 가격으로 저성능 다이가 판매될 수 있지만, 고정된 웨이퍼 생산 비용이 더 많은 수의 다이에 전가될 수 있게 해줌으로써, 다이당 비용이 감소될 수 있다.
본 발명은 다이들 중 일부가 다른 성능 레벨에서 동작할 수 있지만 다이의 "구제"를 용이하게 해준다. 한 예시적인 구현에서, 다이가 동일한 유형의 작업을 실행한다는 의미에서 그렇지 않았으면 폐기될 다이가 동일한 기능을 제공할 수 있다. 예를 들어, 부동소수점 연산을 수행할 수 있는 병렬의 부동소수점 기능 컴포넌트를 갖는 프로세서는 여전히 부동소수점 연산을 수행할 수 있는데, 그 이유는 일 실시예에서 본 발명이 병렬의 부동소수점 컴포넌트를 모두 디스에이블하지 않고 작업 흐름을 디스에이블된 병렬의 부동소수점 컴포넌트로부터 나머지 부동소수점 컴포넌트로 "재라우팅"하기 때문이다. 더 많은 디스에이블된 컴포넌트를 갖는 다이는 다른 레벨에서(예를 들어, 보다 느리게) 작업을 수행할 수 있는데, 그 이유는 어떤 병렬 컴포넌트가 디스에이블되기 때문이다. 그렇지만, 다이는 여전히 동일한 기능을 제공할 수 있다(예를 들어, 동일한 작업을 수행할 수 있다).
일 실시예에서, 기능 컴포넌트 구성 제어기(예를 들어, 120, 152, 및/또는 192)는 제조 테스트 동안에 기능 컴포넌트에 동작 특성 변경(예를 들어, 인에이블, 디스에이블 등)을 지시한다. 예를 들어, 기능 컴포넌트 구성 제어기(예를 들어, 120, 152, 또는 192)는, 테스트가 기능 컴포넌트가 결함있음을 나타내는 경우, 기능 컴포넌트(예를 들어, 각각 132, 173, 또는 198)를 디스에이블하고, 테스트가 기능 컴포넌트가 결함있지 않음을 나타내는 경우 기능 컴포넌트(예를 들어, 각각 131, 174, 197)를 인에이블한다.
본 발명의 일 실시예에서, 기능 컴포넌트 구성 제어기(예를 들어, 120, 152 및/또는 192)는 "자체 건강(self health)" 문제를 해결하기 위해 기능 컴포넌트의 동작 특성의 변경을 지시한다. 한 예시적인 구현에서, 기능 컴포넌트 제어기는 "현장"에서 또는 제조업자로부터의 최초 출하 이후에 자체 건장 문제를 해결한다. 한 예시적인 구현에서, 집적 회로는 현장에서 "자체 건강" 테스트를 실행할 수 있다. 예를 들어, "자체 건강" 테스트의 결과 결함있는 기능 컴포넌트의 표시가 있는 경우, 기능 컴포넌트 구성 제어기(예를 들어, 120, 152 및/또는 192)는 결함있는 기능 컴포넌트를 디스에이블하고 기능 컴포넌트가 디스에이블된다는 표시를 분배 컴포넌트(예를 들어, 110, 150, 또는 190)에 제공한다. 본 발명의 일 실시예에서, 자체 건강 테스트는 IEEE(International Electrical and Electronic Engineering) 표준 1149.1(JTAG(Joint Task Action Group) 테스트라고도 함)에 부합한다. 대체 실시예에서, 자체 건강 테스트는 시스템의 동작 무결성을 검사하는 전용의 테스트이다. 또다른 실시예에서, 현장에서의 "자체 건강" 테스트가 기능 컴포넌트가 결함없음을 나타내는 경우, 기능 컴포넌트가 인에이블된다.
또다른 실시예에서, 결함있는 기능 컴포넌트와 유사한 유형의 작업 또는 기능을 수행하는 비인에이블된 결함없는 기능 컴포넌트가 이용가능한 경우, 결함있는 컴포넌트가 디스에이블되면, 비인에이블된 결함없는 기능 컴포넌트가 인에이블된다. 예를 들어, 도 13a의 집적 회로(100)는, 비록 결함이 없을지라도, 기능 컴포넌트(131, 132)가 인에이블되어 있고 기능 컴포넌트(133, 134)가 디스에이블된 상태로 최초 출하될 수 있다(예를 들어, 시장 세분화 등을 위해). 현장 자체 건강 테스트가 나중에 기능 컴포넌트(132)가 결함이 있게 됨을 나타내는 경우, 기능 컴포넌트 제어기(120)는 기능 컴포넌트(132)를 디스에이블하고 기능 컴포넌트(133)를 인에이블하며, 디스에이블되지 않았으면 기능 컴포넌트(132)로 흐르게 되었을 작업 흐름이 (예를 들어, 분배 컴포넌트(110)에 의해) 기능 컴포넌트(133)에 분배된다. 따라서, 기능 컴포넌트(132)를 디스에이블하는 것은 기능 컴포넌트(132)에서의 결함과 연관된 문제를 사실상 제거하는 반면, 이전에 디스에이블된 기능 컴포넌트(133)를 인에이블하는 것은 동일한 성능 레벨에서 작업 흐름에 대해 동일한 유형의 기능 또는 작업이 수행될 수 있게 해주고 그에 의해 시스템은 효과적으로 "자체 교정(self healing)"을 한다.
본 발명의 일 실시예에서, 기능 컴포넌트 구성 제어기(예를 들어, 120, 152 및/또는 192)는 호환성 문제를 해결하기 위해 기능 컴포넌트의 동작 특성의 변경을 지시한다. 일 실시예에서, 그래픽 가속기에 포함된 기능 컴포넌트 제어기는 그래픽 가속기의 특징과 호환되는 칩셋을 인식할 수 있고 그에 따라 그래픽 가속기의 동작 특성을 변경한다. 예를 들어, 기능 컴포넌트 구성 제어기가 그래픽 파이프라인의 동작 특성을 제어하고 있는 경우, 기능 컴포넌트 구성 제어기는, 칩셋이 이를 지원하고 더 많은 수의 그래픽 파이프라인의 이용과 호환되는 경우, 더 많은 수의 그래픽 파이프라인을 인에이블할 수 있다. 예를 들어, 그래픽 가속기 및 칩셋은 동일한 제조업자에 의해 제조되고, 그래픽 가속기에 포함된 기능 컴포넌트 제어기는 그래픽 가속기와 동일한 시스템에 포함된 칩셋을 식별해주는 신호를 수신할 수 있다. 본 발명의 일 실시예에서, 호환성은 드라이버에 의해 확립되고, 기능 컴포넌트 제어기는 그에 따라 기능 컴포넌트의 동작 특성에 대한 변경을 지시한다.
본 발명의 일 실시예에서, 기능 컴포넌트 구성 제어기(예를 들어, 120, 152 및/또는 192)는 성능 문제를 해결하기 위해 기능 컴포넌트의 동작 특성의 변경을 지시한다. 일 실시예에서, 성능 마스크(40)는 성능 문제에 기초하여 기능 컴포넌트에 대한 동작 특성의 표시를 제공한다. 예를 들어, 특정의 애플리케이션이 실행되고 있고 바람직한 지원되는 기능 컴포넌트 동작 특성이 인에이블된다. 애플리케이션이 그래픽 애플리케이션인 경우, 부가적인 그래픽 파이프라인이 인에이블되고 및/또는 기존의 그래픽 애플리케이션 파이프라인의 클럭 속도가 증가될 수 있다. 본 발명의 일 실시예에서, 시스템의 유형이 성능 동작 변경에 고려될 수 있으며, 예를 들어, 모바일 장치에서, 전력을 절감하기 위해 성능이 조정될 수 있다.
서로 다른 목적에 따라 기능 컴포넌트 변경을 구현하기 위한 다양한 기능 컴포넌트 구성 제어기 실시예가 있다는 것을 잘 알 것이다. 도 13d는 서로 다른 목적을 제어하기 위해 본 발명의 일 실시예에 따라 기능 컴포넌트 제어기에 의해 이용되는 마스크 어레이(10)의 블록도이다. 마스크 어레이 내의 각각의 어레이는 특정의 동작 목적에 대응할 수 있다. 한 예시적인 구현에서, 마스크 어레이(10)는 수율 마스크(20), 호환성 마스크(30), 성능 마스크(40), 및 자체 교정 마스크(50) 를 포함한다. 한 예시적인 구현에서, 각각의 열(11 내지 18)은 8개의 기능 컴포넌트 중 하나와 연관되어 있다. 각각의 셀(예를 들어, 셀(99))은 동작 특성 설정값을 포함한다. 예를 들어, 논리 1의 동작 특성 설정값은 기능 컴포넌트를 인에이블하는 것, 기능 컴포넌트에 대한 높은 클럭 속도, 기능 컴포넌트에 대한 하이 전압 레벨 등에 대응할 수 있다. 이와 반대로, 논리 0의 동작 특성 설정값은 기능 컴포넌트를 디스에이블하는 것, 기능 컴포넌트에 대한 낮은 클럭 속도, 기능 컴포넌트에 대한 로우 전압 레벨 등에 대응할 수 있다. 본 발명이 다양한 입도 증분(예를 들어, 아주 높은 속도, 높은 속도, 중간 속도, 낮은 속도, 아주 낮은 속도)을 갖는 동작 특성 설정값에 대해 용이하게 개조가능하다는 것을 잘 알 것이다. 한 예시적인 구현에서, 마스크 어레이(10)는 레지스터 어레이로 구현된다.
서로 다른 목적 또는 마스크에 우선순위가 할당될 수 있다. 예를 들어, 수율 마스크(20)는 성능 마스크(40)보다 더 높은 우선순위를 할당받을 수 있다. 이 예에서, 셀(98) 내의 동작 특성 설정값은 셀(97) 내의 동작 특성 설정값에 대해 제어를 한다. 셀(98) 내의 설정값이 열(12)과 연관된 기능 컴포넌트가 디스에이블되어 있음을 나타내는 경우, 셀(97) 내의 설정값에 상관없이 기능 컴포넌트가 디스에이블된다. 마스크 어레이(10) 내의 값들은 또한 기능 컴포넌트 구성 제어기에 의해 구현되는 동작 특성 설정을 결정하는 데 있어서의 다양한 고려사항을 고려하는 다양한 알고리즘에서 이용될 수 있다.
수율 마스크(20)는 수율 문제(예를 들어, 결함)로 인해 디스에이블되어 있는 기능 컴포넌트의 표시를 제공한다. 예를 들어, 수율 마스크(20)는 기능 컴포넌트 가 제조 결함을 가지고 있는 경우 그 기능 컴포넌트로 하여금 디스에이블되게 하는 동작 특성 설정값을 포함한다. 한 예시적인 구현에서, 작업 흐름을 처리할 수 있는 다른 동작 기능 컴포넌트가 있는 경우, 기능 컴포넌트는 디스에이블될 수 있다.
호환성 마스크(30)는 호환성 문제에 기초하여 기능 컴포넌트에 대한 동작 특성의 표시를 제공한다. 예를 들어, 특정의 프로세서 및 칩셋은 서로 식별자를 교환할 수 있으며, 식별자의 교환에 기초하여, 호환가능한 지원되는 기능 컴포넌트 동작 특성이 인에이블될 수 있다. 본 발명의 일 실시예에서, 호환성은 드라이버에 의해 확립되고, 대응하는 동작 특성 설정값이 호환성 마스크(30)에 입력된다.
성능 마스크(40)는 성능 문제에 기초하여 기능 컴포넌트에 대한 동작 특성의 표시를 제공한다. 예를 들어, 특정의 애플리케이션이 실행되고 있고, 대응하는 바람직한 지원되는 기능 컴포넌트 동작 특성을 인에이블시키는 값이 성능 마스크(40)에 입력된다. 애플리케이션이 그래픽 애플리케이션인 경우, 부가적인 그래픽 파이프라인이 인에이블되고 및/또는 기존의 그래픽 애플리케이션 파이프라인의 클럭 속도가 증가할 수 있다. 본 발명의 일 실시예에서, 시스템의 유형이 성능 동작 변경에 고려될 수 있으며, 예를 들어, 모바일 장치에서, 성능 마스크(40)에 입력된 값이 전력을 절감하기 위해 성능 조정을 지시할 수 있다. 예를 들어, 기능 컴포넌트의 디스에이블/인에이블하는 것, 속도를 조정하는 것, 전압 등을 비롯한, 기능 컴포넌트의 동작 특성에 대한 변경을 지시한다.
자체 교정 마스크(50)는 현장 테스트 문제에 기초하여 기능 컴포넌트에 대한 동작 특성의 표시를 제공한다. 예를 들어, 테스트 동작으로부터의 결과가 기능 컴 포넌트에 대한 동작 특성의 변경을 결정하는 데 이용된다. 한 예시적인 구현에서, 현장 테스트는 인에이블된 제1 기능 컴포넌트가 결함있음을 나타낸다. 제1 기능 컴포넌트와 연관된 자체 교정 마스크 셀 내의 동작 특성 설정값은 제1 기능 컴포넌트가 디스에이블되어 있음을 나타내기 위해 변경되고, 디스에이블되어 있는 제2 기능 컴포넌트와 연관된 자체 교정 마스크 셀 내의 동작 특성 설정값은 제2 기능 컴포넌트가 인에이블되어 있음을 나타내도록 변경된다. 제1 및 제2 기능 컴포넌트의 각자의 동작 특성 설정값을 변경함으로써, 결함있는 제1 컴포넌트는 디스에이블되고 더 많은 문제를 야기하지 못하게 되고, 디스에이블된 제2 기능 컴포넌트를 인에이블시키는 것은 제2 기능 컴포넌트가 그렇지 않았으면 제1 기능 컴포넌트로 라우팅될 작업 흐름을 수행할 수 있게 해주며, 따라서 동일한 작업 흐름이 여전히 결함없이 수행될 수 있다는 점에서, 시스템은 사실상 그 자신을 교정한다.
도 14는 본 발명의 실시예들이 구현될 수 있는 컴퓨터 시스템의 일 실시예인 컴퓨터 시스템(200)의 블록도이다. 컴퓨터 시스템(200)은 중앙 처리 장치(201), 메인 메모리(202)(예를 들어, 랜덤 액세스 메모리), 노쓰 브리지(north bridge)(209) 및 사우쓰 브리지(south bridge)(205)를 갖는 칩셋(203), 분리형 데이터 저장 장치(204), 입력 장치(207), 신호 통신 포트(208), 및 디스플레이(220)에 연결되어 있는 그래픽 서브시스템(210)을 포함한다. 컴퓨터 시스템(200)은 컴퓨터 시스템(200)의 구성 요소들을 통신 연결시키는 몇개의 버스를 포함한다. 통신 버스(291)(예를 들어, 전방측 버스)는 칩셋(203)의 노쓰 브리지(209)를 중앙 처리 장치(201)에 연결시킨다. 통신 버스(292)(예를 들어, 메인 메모리 버스)는 칩 셋(203)의 노쓰 브리지(209)를 메인 메모리(202)에 연결시킨다. 통신 버스(292)(예를 들어, AGP(Advanced Graphics Port) 인터페이스)는 칩셋(203)의 노쓰 브리지를 그래픽 서브시스템(210)에 연결시킨다. 통신 버스(294-297)(예를 들어, PCI 버스)는 칩셋(203)의 사우쓰 브리지(205)를 분리형 데이터 저장 장치(204), 입력 장치(207), 신호 통신 포트(208)에 각각 연결시킨다. 그래픽 서브시스템(210)은 그래픽 프로세서(211) 및 그래픽 버퍼(215)를 포함한다.
컴퓨터 시스템(200)의 구성 요소들은 다양한 기능 및 성능을 제공하기 위해 협동하여 동작한다. 컴퓨터 시스템(200)에 포함된 기능 컴포넌트들의 동작 특성은 동적으로 변화할 수 있다. 한 예시적인 구현에서, 컴퓨터 시스템(200)에 포함된 기능 컴포넌트들 중 일부가 결함있을 수 있지만, 컴퓨터 시스템(200)의 컴포넌트들은 미리 정해진 유형의 기능을 제공하기 위해 협동하여 동작한다. 통신 버스(291, 292, 293, 294, 295, 207)는 정보를 전달한다. 중앙 프로세서(201)는 정보를 처리한다. 메인 메모리(202)는 중앙 프로세서(201)를 위해 정보 및 명령어를 저장한다. 분리형 데이터 저장 장치(204)는 또한 정보 및 명령어를 저장한다(예를 들어, 큰 정보 저장소로서 기능함). 입력 장치(206)는 정보를 입력하기 위한 및/또는 디스플레이(220) 상의 정보를 가리키거나 하이라이트하기 위한 메카니즘을 제공한다. 신호 통신 포트(208)는 외부 장치에의 통신 인터페이스(예를 들어, 네트워크와의 인터페이스)를 제공한다. 디스플레이 장치(220)는 프레임 버퍼(215)에 저장된 데이터에 따라 정보를 디스플레이한다. 그래픽 프로세서(211)는 중앙 프로세서(201)로부터의 그래픽 명령을 처리하고 그 결과 데이터를, 저장 및 디스플레이 모니 터(220)에 의한 검색을 위해, 그래픽 버퍼(215)에 제공한다.
컴퓨터 시스템(200)에 포함된 기능 컴포넌트의 동작 구성은 다양한 목적을 만족시키기 위해 유연하게 조정가능하다. 예를 들어, 컴퓨터 시스템(200)에 포함된 기능 컴포넌트의 동작 구성은, 기능 컴포넌트들 중 일부가 디스에이블되어 있을지라도, 한 유형의 기능의 실행을 유지하도록 구성가능하다. 한 예시적인 구현에서, 중앙 프로세서(201) 및 그래픽 프로세서(211)는 여전히 동일한 유형의 처리 기능을 실행할 수 있으며, 기능 컴포넌트들(예를 들어, 부동소수점 컴포넌트, 픽셀 쉐이더 컴포넌트, 메모리 셀 컴포넌트 등) 중 일부가 디스에이블되어 있을지라도, 메인 메모리(202)는 정보를 저장한다. 일 실시예에서, 프로세서들은 처리 동작을 수행하기 위한 복수의 기능 컴포넌트를 포함한다. 기능 컴포넌트의 동작 특성이 변경될 수 있다. 일 실시예에서, 프로세서들은 처리 동작을 수행하기 위한 복수의 기능 컴포넌트를 포함하며, 복수의 기능 컴포넌트에 포함된 결함있는 기능 컴포넌트들이 디스에이블된다. 프로세서들은 또한 작업 흐름을 인에이블된 처리 컴포넌트들에 분배하고 디스에이블된 결함있는 컴포넌트로의 작업 흐름의 분배를 방지하는 작업 흐름 제어 컴포넌트를 포함한다. 한 예시적인 구현에서, 컴퓨터 시스템(200)은, 비록 그 기능이 감소된 성능 레벨로(예를 들어, 더 느린 성능 레벨로) 제공될 수 있지만, 계속하여 전기능을 제공할 수 있다.
본 발명이 다양한 실시예로 구현될 수 있다는 것을 잘 알 것이다. 한 예시적인 구현에서, 본 발명은 비디오 게임을 포함한 다양한 그래픽 애플리케이션을 제공하기 위해 이용되는 처리 시스템에서 이용될 수 있다. 예를 들어, 본 발명은 게 임 콘솔, 퍼스널 컴퓨터, 개인 휴대 단말기, 셀 전화, 또는 비디오 게임을 구현하기 위한 임의의 수의 플랫폼 내의 결함있는 컴포넌트를 디스에이블하기 위해 이용될 수 있다. 또한, 비디오 게임 애플리케이션 구현에 대한 언급은 예시적인 것이며 본 발명이 이들 구현으로 한정되지 않는다는 것을 잘 알 것이다.
도 15는 본 발명의 일 실시예에 따른 그래픽 파이프라인(300)의 블록도이다. 그래픽 파이프라인(300)(예를 들어, 픽셀 처리 파이프라인)은 파이프라인 입력(310), 정점 프로세서(311 내지 314), 픽셀 쉐이더(321 내지 324), 프리-래스터 동작(ROP, pre-raster opertion) 컴포넌트(330), 래스터 동작 컴포넌트(331 내지 334), 파이프라인 출력(340) 및 기능 컴포넌트 구성 제어기(350)를 포함한다. 기능 컴포넌트 구성 제어기(350)는 파이프라인 입력(310), 정점 프로세서(311 내지 314), 래스터화기(320), 픽셀 쉐이더(321 내지 324), 프리-래스터 동작(ROP) 컴포넌트(330), 래스터 동작 컴포넌트(331 내지 334), 및 파이프라인 출력(340)에 연결되어 있다. 파이프라인 입력(310)은 정점 프로세서(311 내지 314)에 연결되어 있고, 이 정점 프로세서는 래스터화기(320)에 연결되어 있다. 래스터화기(320)는 픽셀 쉐이더(321 내지 324)에 연결되어 있고, 이 픽셀 쉐이더는 프리-래스터 동작 컴포넌트(330)에 연결되어 있다. 프리-래스터 동작(ROP) 컴포넌트(330)는 래스터 동작 컴포넌트(331 내지 334)에 연결되어 있고, 이 래스터 동작 컴포넌트는 파이프라인 출력(340)에 연결되어 있다. 일 실시예에서, 그래픽 파이프라인(330)은 파이프라인 집적 회로(150)와 유사하다. 예를 들어, 파이프라인(151)은 정점 프로세서(311), 픽셀 쉐이더(321) 및 ROP(331)를 포함할 수 있고, 파이프라인(152)은 정 점 프로세서(312), 픽셀 쉐이더(322) 및 ROP(332)를 포함할 수 있으며, 파이프라인(153)은 정점 프로세서(313), 픽셀 쉐이더(323) 및 ROP(333)를 포함할 수 있고, 파이프라인(154)은 정점 프로세서(314), 픽셀 쉐이더(324) 및 ROP(334)를 포함할 수 있으며, 파이프라인 입력(310), 래스터화기(320), 프리 ROP(330) 및 파이프라인 출력(340)은 파이프라인(151-154)에 공통되어 있다.
그래픽 파이프라인(300)의 컴포넌트들은, 파이프라인 내의 기능 컴포넌트들의 동작 특성 중 어떤 것이 변경(예를 들어, 디스에이블/인에이블)될지라도, 그래픽 파이프라인 동작을 수행하기 위해 협동하여 동작한다. 기능 컴포넌트 구성 제어기(350)는 정점 프로세서(311 내지 314), 픽셀 쉐이더(321 내지 324), 및/또는 래스터 동작 컴포넌트(331 내지 334)의 동작 특성을 변경할 수 있다. 기능 컴포넌트 구성 제어기(350)는, 기능 컴포넌트를 인에이블/디스에이블하는 것, 기능 컴포넌트의 클럭 속도를 변경하는 것, 및/또는 기능 컴포넌트에의 전압 공급을 증가시키는 것을 비롯한, 동작 특성에 대해 다양한 변경을 할 수 있다. 기능 컴포넌트 구성 제어기(350)는, 수율 문제(예를 들어, 기능 컴포넌트가 결함있고 및/또는 결함있는 컴포넌트와 연관되어 있음), 호환성 문제, 성능 문제 및/또는 시스템 "건강" 문제를 비롯한, 다양한 이유로 변경을 행할 수 있다. 기능 컴포넌트 구성 제어기(350)는 또한 동작 특성 변경에 관한 정보를 파이프라인 입력(310), 래스터화기(320), 프리-래스터 동작(ROP) 컴포넌트(330) 및 파이프라인 출력(340)에 제공한다. 파이프라인 입력 컴포넌트(310)는 그래픽 파이프라인 정보를 수신하고 대응하는 패킷화된 그래픽 파이프라인 정보를 여전히 인에이블되어 있는 정점 프로세 서(311 내지 314)에 분배한다. 정점 프로세서(311 내지 314)는 각각 수신된 그래픽 파이프라인 정보에 벡터 쉐이딩(vector shading)을 수행하고 그 결과 정보를 래스터화기(320)로 전달한다. 래스터화기(320)는 어느 픽셀을 쉐이딩할지를 결정하고 패킷화된 벡터 쉐이딩된 그래픽 파이프라인 정보를 픽셀 쉐이더(321 내지 324)로 분배한다. 픽셀 쉐이더(321 내지 323)는 패킷화된 벡터 쉐이딩된 그래픽 파이프라인 정보에 픽셀 쉐이딩 계산을 수행하고 그 결과를 프리-래스터 동작(ROP) 컴포넌트(330)로 전달한다.
일 실시예에서, 픽셀 쉐이더(321 내지 324)는 또한 텍스처 동작을 수행할 수 있다. 텍스처 동작은 텍스처 쉐이더 컴포넌트(예를 들어, 픽셀 쉐이더에 대응함)에 의해 수행될 수 있다. 프리-래스터 동작(ROP) 컴포넌트(330)는 벡터 쉐이딩 정보를 수집하고 패킷화된 픽셀 쉐이딩된 정보를 래스터 동작 컴포넌트(331 내지 334)에 분배한다. 래스터 동작 컴포넌트(331 내지 334)는 패킷화된 픽셀 쉐이딩된 정보에 부가적인 래스터화 동작을 수행(예를 들어, 컬러 바인딩 및 Z 버퍼 처리를 수행)하고, 그 결과를 파이프라인 출력(340)으로 전달한다. 파이프라인 출력(340)은 그래픽 파이프라인 정보를 단일의 출력 스트림으로 취합한다. 다른 대안으로서, 기능 컴포넌트 구성 제어기(350)는 크로스바 또는 파이프라인에서의 기능 컴포넌트의 각자의 레벨 사이에 위치한 멀티플렉서 구조로서 구현될 수 있다.
본 발명은 또한 다수의 구역으로 분할되는 프레임 버퍼 인터페이스의 일부분에 적용될 수 있다. 한 예시적인 구현에서, 프레임 버퍼는 메모리(예를 들어, 프레임 버퍼를 구성하는 DRAM의 일부분)와 통신하는 기능 컴포넌트로서 동작하는 다 수의 유사한 모듈을 포함한다. 모듈들 중 하나가 결함있는 경우, 그 모듈은 디스에이블될 수 있고 그 결함있는 모듈이 작업 부하가 (예를 들어, 그 모듈과 연관된 메모리 주소의 일부분에 기초하여) 다른 모듈에 재할당된다. 예를 들어, 칩이 여전히 전체 메모리를 이용가능하도록 프레임 버퍼 인터페이스 모듈의 메모리 주소에의 매핑이 재매핑된다.
도 16은 본 발명의 일 실시예에 따른, 기능 컴포넌트 구성 프로세스(400)의 흐름도이다. 기능 컴포넌트 구성 프로세스(400)는 집적 회로 내의 기능 컴포넌트의 유연한 구성을 가능하게 해준다. 예를 들어, 기능 컴포넌트 구성 프로세스(400)는 집적 회로 내의 기능 컴포넌트들의 동작 특성(예를 들어, 인에이블, 디스에이블, 속도 변경, 전압 변경 등)에 대한 변경을 지시한다. 다양한 목적에 따라 기능 컴포넌트의 동작 특성을 재구성하기 위해(예를 들어, 수율을 향상시키고, 유연한 성능을 제공하며, 자체 교정을 용이하게 해주는 등을 위해) 기능 컴포넌트 구성 프로세스(400)가 이용될 수 있다는 것을 잘 알 것이다. 일 실시예에서, 기능 컴포넌트 구성 프로세스(400)는 또한 효율적인 정보 처리 작업 흐름 관리를 용이하게 해준다.
단계(410)에서, 기능 컴포넌트 구성(예를 들어, 동작 특성) 변경 트리거 이벤트의 표시가 수신된다. 본 발명의 일 실시예에서, 변경 트리거 이벤트의 표시는 기능 컴포넌트 제어기(예를 들어, 120 등)에 의해 수신된다. 이 표시는 행해진 구성 변경(예를 들어, 디스에이블, 인에이블, 속도 및/또는 전압의 증가/감소 등)의 표시를 포함할 수 있다. 일 실시예에서, 기능 컴포넌트 구성 변경 트리거 이벤트 는 집적 회로의 내부 컴포넌트(예를 들어, 내부 테스트 시스템, 드라이버, 애플리케이션 등)로부터 수신된다. 기능 컴포넌트 구성 변경 트리거 이벤트의 표시는 또한 집적 회로 외부의 컴포넌트(예를 들어, 외부 테스트 시스템, 인터넷, 중앙 집중식 구성 시스템 등)로부터 수신될 수 있다.
그 표시 및 구성 변경 트리거 이벤트가 다양한 동작 목적(예를 들어, 애플리케이션, 유료 사용, 시장 세분화 등)과 연관될 수 있다는 것을 잘 알 것이다. 변경 트리거 이벤트는 수율 문제와 연관되어 있을 수 있다. 예를 들어, 이 이벤트는 결함있는 기능 컴포넌트를 검출하는 테스트 동작과 연관될 수 있으며, 결함있는 기능 컴포넌트를 식별해주는 표시가 (예를 들어, 기능 컴포넌트 제어기에 의해) 수신된다. 본 발명의 일 실시예에서, 결함있는 기능 컴포넌트의 표시가 테스트 시스템으로부터 수신된다. 예를 들어, IEEE(International Electrical and Electronic Engineering) 표준 1149.1(JTAG(Joint Task Action Group) 테스트라고도 함) 호환 테스트 시스템 및/또는 전용의 동작 무결성 테스트(예를 들어, 전용의 스캔 테스트 메카니즘)가 있다. 변경 트리거 이벤트는 호환성 문제와 연관될 수 있다. 예를 들어, 컴포넌트가 미리 정해진 호환성을 가짐을 나타내는 신호가 수신된다. 변경 트리거 이벤트는 성능 문제와 연관되어 있을 수 있다. 예를 들어, 새로운 및/또는 다른 애플리케이션이 로드되고 있음을 나타내는 신호가 수신되고, 유료 사용 허가가 부여되며, 및/또는 집적 회로가 전력 절감이 바람직한 모바일 장치에 포함된다. 변경 트리거 이벤트는 또한 자체 테스트 및 교정 문제와 연관되어 있을 수 있다.
단계(420)에서, 표시된 기능 컴포넌트 구성 변경(예를 들어, 동작 특성 변 경)이 유효한지의 판정이 행해진다. 예를 들어, 기능 컴포넌트에 대한 허가된 동작 특성의 결정이 행해진다. 일 실시예에서, 단계(410)에서 수신된 표시는 인코딩된 비트 스트림이다. 이 비트 스트림은 디코딩되고 기능 컴포넌트 구성 변경을 트리거하기 위한 유효한 허가인지를 위해 그 결과값이 검사된다. 본 발명의 일 실시예에서, 인코딩된 표시자가 분석된다. 이 분석은 표시자를 디코딩하는 것 및 이를 기능 컴포넌트에 대한 다른 가능한 동작 특성 설정의 미리 정해진 리스트와 비교하는 것을 포함한다. 예를 들어, 디코딩된 표시자의 값이 허가된 트리거 표시 또는 값의 미리 정해진 리스트 내의 값과 비교되며, 이 리스트 내의 값들은 특정의 동작 특성 설정과 연관되어 있다.
본 발명의 일 실시예에서, 기능 컴포넌트 구성 변경 동작은 또한 유효성에 대해 검사된다. 예를 들어, 수율 및 자체 교정 문제와 관련하여 기능 컴포넌트 디스에이블을 수행할 때, 일 실시예에서, 그렇지 않았으면 결함있는 기능 컴포넌트로 갔을 작업 흐름 정보에 대해 유사한 기능을 수행할 수 있는 제2 기능 컴포넌트가 (예를 들어, 병렬로) 있는지의 판정이 행해진다. 예를 들어, 결함있는 기능 컴포넌트가 복수의 유사한 기능 컴포넌트 중 하나인지의 판정이 행해진다. 본 발명의 일 실시예에서, 결함있는 컴포넌트의 유형이 유사한 기능을 제공하는 다수의 컴포넌트의 리스트와 비교된다. 예를 들어, 결함있는 컴포넌트가 식별되고(예를 들어, 픽셀 쉐이더, 정점 프로세서, 부동소수점 컴포넌트 등), 식별된 기능 컴포넌트가 동일한 기능을 제공할 수 있는 다른 유사한 컴포넌트의 리스트와 대조하여 비교된다. 한 예시적인 구현에서, 다른 유사한 컴포넌트가 결함있는 기능 컴포넌트와 유 사한 컴포넌트인지를 판정하기 위해 그 컴포넌트가 검사된다. 작업 흐름을 수행할 수 있는 제2 기능 컴포넌트가 있는 경우, 제1 기능 컴포넌트는 디스에이블될 수 있다(예를 들어, 제1 기능 컴포넌트가 결함있는 경우).
단계(430)에서, 기능 컴포넌트 구성 변경이 지시된다. 본 발명의 일 실시예에서, 기능 컴포넌트 구성 변경(예를 들어, 동작 특성 변경)은 기능 컴포넌트 제어기(예를 들어, 120, 152, 192 등)에 의해 지시된다. 본 발명의 일 실시예에서, 기능 컴포넌트의 구성(예를 들어, 동작 특성)을 제겅하는 값을 (예를 들어, 레지스터에) 프로그램함으로써 기능 컴포넌트 구성 변경(예를 들어, 디스에이블, 인에이블 등)이 달성된다. 레지스터 내의 값에 기초하여, 기능 컴포넌트의 구성을 변경(예를 들어, 디스에이블, 인에이블 등)하는 신호가 기능 컴포넌트로 전송된다. 한 예시적인 구현에서, 이들 값은 마스크(예를 들어, 마스크(10))에 구성되어 있다. 기능 컴포넌트의 구성을 변경하는(예를 들어, 동작 특성을 변경하는) 다양한 본 발명의 방법이 있다는 것을 잘 알 것이다. 예를 들어, 결함있는 기능 컴포넌트의 디스에이블은 결함있는 기능 컴포넌트로의 통신 라인을 융해시킴으로써 달성될 수 있다. 결함있는 기능 컴포넌트는 또한 결함있는 기능 컴포넌트가 쓸모없는 트래픽을 생성하지 않는 방식으로 디스에이블될 수 있다. 수신측 컴포넌트는 또한 결함있는 컴포넌트를 통지받을 수 있고 결함있는 기능 컴포넌트로부터 오는 정보를 무시하도록 프로그램될 수 있다. 기능 컴포넌트 구성은 또한 소프트 코딩된 방법에 의해 변경될 수 있다.
일 실시예에서, 기능 컴포넌트의 진행 중인 동작이 모니터링되고 단계(430) 의 구성 동작에 고려된다. 예를 들어, 시스템 "건강"이 검사되거나 테스트되고, 그 결과가 동작 특성에 대한 변경을 결정하는 데 이용된다. 예를 들어, 제1 기능 컴포넌트가 자체 진단 테스트에 불합격한 경우, 기능 컴포넌트가 디스에이블될 수 있다. 제2 기능 컴포넌트가 이용가능한 경우, 이 컴포넌트가 제1 기능 컴포넌트를 "대체"하기 위해 활성화될 수 있다. 예를 들어, 제2 기능 컴포넌트가 완벽하게 잘 동작하지만 이전에 어떤 다른 이유로 디스에이블되었던 경우, 그 컴포넌트는 테스트에 불합격한 기능 컴포넌트를 대체하기 위해 인에이블될 수 있다. 한 예시적인 구현에서, 애플리케이션 활성화가 모니터링되고 그에 따라 기능 컴포넌트의 동작 특성이 변경된다. 예를 들어, 고성능 그래픽 애플리케이션이 활성화되는 경우, 기능 컴포넌트의 동작 특성이 향상될 수 있으며(예를 들어, 더 빠른 클럭 설정), 및/또는 부가적인 기능 컴포넌트(예를 들어, 부가적인 그래픽 파이프라인)가 인에이블 또는 디스에이블될 수 있다.
시스템 내의 컴포넌트의 변경(예를 들어, 새로운 컴포넌트의 추가)도 모니터링될 수 있고 컴포넌트 변경을 수용하기 위해 동작 특성이 변경될 수 있다. 예를 들어, 특정 유형의 그래픽 프로세서가 특정 유형의 칩셋에 연결되어 있는 경우, 식별자 표시가 전달될 수 있고 그에 따라 기능 컴포넌트의 동작 특성이 변경될 수 있다. 이 식별자는 향상된 특징의 호환성 및 지원의 사전 결정을 가능하게 해준다. 일 실시예에서, 이 식별자가 인코딩된다. 인코딩은 동작 특성 설정의 악의적인 조작을 방지한다. 예를 들어, 인코딩은, 호환성 보장 없이, 그렇지 않았으면 식별하기 어려운 복잡한 고장을 야기할 가능성이 있는 기능 컴포넌트의 동작 특성을 부적 절하게 저하시키고 및/또는 동작 특성을 향상시키려는 시도로부터의 보호를 제공한다.
본 발명의 일 실시예에서, 기능 컴포넌트들 간에 동작 특성 변경이 조정된다. 예를 들어, (예를 들어, 동일한 파이프라임, 쓰레드 등에서) 변경된 기능 컴포넌트와 밀접하게 연관되어 있는 적절하게 동작하는 기능 컴포넌트도 역시 변경될 수 있다. 한 예시적인 구현에서, 제품 구분을 유지하기 위해 기능 컴포넌트들 간에 동작 변경이 조정된다. 예를 들어, 저성능 칩이 하나 더 작은 픽셀 쉐이딩 컴포넌트 및 하나 더 작은 정점 쉐이딩 컴포넌트를 갖는 것으로 지정되어 있는 경우, 픽셀 쉐이딩 컴포넌트 및 정점 쉐이딩 컴포넌트 둘다는 제품 구분을 유지하기 위해 디스에이블될 수 있다.
단계(440)에서, 기능 컴포넌트에 대한 변경에 따라 작업 흐름이 전환된다. 예를 들어, 작업 흐름이 다른 유사한 기능 컴포넌트로 전환될 수 있다. 일 실시예에서, 작업 흐름을 전환하는 것은 그렇지 않았으면 변경된 컴포넌트에 정보를 전달하게 될 컴포넌트에 구성 변경(예를 들어, 인에이블, 디스에이블 등)의 통지를 제공함으로써 달성된다. 예를 들어, 기능 컴포넌트 제어기(예를 들어, 120 등)는 기능 컴포넌트 구성 변경(예를 들어, 동작 특성의 변경)의 표시를 분배 컴포넌트(예를 들어, 110 등)에 제공하고, 분배 컴포넌트는 그에 따라 작업 흐름 정보를 라우팅한다. 예를 들어, 제1 기능 컴포넌트가 인에이블되어 있는 경우, 작업 흐름이 제1 기능 컴포넌트로 라우팅 또는 스케쥴링되고 전달된다. 제1 기능 컴포넌트가 디스에이블되어 있는 경우, 작업 흐름이 다른 인에이블된 기능 컴포넌트로 라우팅 또는 스케쥴링된다.
한 예시적인 구현에서, 작업 흐름이 더 빠른 또는 더 느린 기능 컴포넌트로 전환 또는 라우팅된다. 예를 들어, 작업 흐름 내용이 분석되고, 더 높은 성능 동작과 연관된 작업 흐름의 일부가 더 빠른 기능 컴포넌트(예를 들어, 더 높은 클럭 레이트로 동작하는 기능 컴포넌트)로 라우팅되고, 더 낮은 성능 동작과 연관된 작업 흐름의 일부가 더 느린 기능 컴포넌트로 라우팅된다. 빠르게 변하고 있는 그래픽 이미지의 영역 내의 픽셀(예를 들어, 디스플레이의 중앙 쪽의 픽셀)은 더 빠른 기능 컴포넌트(예를 들어, 높은 클럭의 쉐이더)로 라우팅될 수 있고, 느리게 변하고 있는 그래픽 이미지의 영역 내의 픽셀(예를 들어, 디스플레이의 모서리 쪽의 픽셀)은 더 느린 기능 컴포넌트(예를 들어, 낮은 클럭의 쉐이더)로 라우팅될 수 있다.
다른 컴포넌트에의 영향을 감소시키는 방식으로 기능 컴포넌트 동작 특성 변경(예를 들어, 디스에이블 등)이 조정될 수 있다. 일 실시예에서, 적절히 동작하는 기능 컴포넌트는 디스에이블된 컴포넌트의 출력 상의 있을 수 있는 쓰레기(예를 들어, 불법적인 신호 결합)를 허용하도록 프로그램 또는 재구성될 수 있다. 예를 들어, 적절히 동작하는 기능 컴포넌트는 디스에이블된 컴포넌트로부터의 정보를 무시하도록 지시받을 수 있다. 수신측 컴포넌트(예를 들어, 수집 컴포넌트(140))는 또한 기능 컴포넌트의 동작 특성 변경을 통지받을 수 있고 그에 따라 반응하도록 프로그램될 수 있다. 예를 들어, 기능 컴포넌트의 속도가 감소되는 경우, 수신측 컴포넌트는 기능 컴포넌트로부터 오는 정보를 기다리는 동안 휴지 상태에 있지 않 고 나중에 다시 검사하거나 기능 컴포넌트가 디스에이블되어 있는 경우 기능 컴포넌트로부터의 정보를 무시하도록 프로그램될 수 있다. 기능 컴포넌트가 디스에이블되어 있는 경우, 수신측 컴포넌트는 기능 컴포넌트로부터의 신호를 무시하도록 프로그램될 수 있다.
도 17은 본 발명의 일 실시예에 따른, 감소된 성능의 회로 구제 방법(500)의 흐름도이다. 감소된 성능의 회로 구제 방법(500)은 그렇지 않았으면 폐기될 다이의 구제를 용이하게 해준다. 일 실시예에서, 감소된 성능의 회로 구제 방법(500)은 다이를 테스트하고 다이의 기능이 유지되도록 보장하는 방식으로 결함있는 기능 컴포넌트를 디스에이블한다.
단계(510)에서, 칩이 테스트 준비된다. 칩은 테스트 시스템에 배치되고 테스트 시스템이 초기화된다. 본 발명의 일 실시예에서, 스캔 테스트를 위한 초기 상태가 스캔 테스트 셀에 입력된다. 예를 들어, 칩이 IEEE(Internatinal Electrical and Electronic Engineering) 표준 1149.1(JTAG(Joint Task Action Group) 테스트라고도 함)에 따라 테스트 준비될 수 있다. 본 발명의 일 실시예에서, 칩의 기능의 테스트(예를 들어, 전용의 및/또는 비-JTAG 호환 테스트)와 호환되는 커스텀 유형의 테스트가 이용된다.
단계(520)에서, 칩이 테스트된다. 본 발명의 일 실시예에서, 테스트는 칩의 결함있는 기능 컴포넌트를 식별하는 것을 포함한다. 본 발명의 한 예시적인 구현에서, 내장된 자체 테스트(built in self test, BIST)가 수행된다. 예를 들어, 회로의 어떤 측면을 자극하기 위해 테스트 벡터가 적용되고 회로로부터의 결과 출 력이 포착되는 스캔 테스트가 BIST에 포함된다. 스캔 테스트 체인(scan test chain)은 스캔 테스트 체인을 통해 회로 내의 기능 컴포넌트에 대한 테스트 정보(예를 들어, 테스트 벡터)를 스캔 또는 천이 스캔하고, 기능 컴포넌트로 하여금 스캔 테스트 정보에 대한 동작을 수행하며, 그 결과 정보를 포착하고 이어서 스캔 테스트 체인의 스캔 테스트 셀을 통해 그 결과 정보를 밖으로 천이시키도록 설계된다. 그 결과 정보는 이어서 에러가 있는지 분석된다(예를 들어, 미리 정해진 정확한 결과와 비교된다). 자동화된 테스트 패턴 생성(automated test pattern generation, ATPG) 도구에 의해 테스트 벡터 패턴이 제공될 수 있다.
본 발명의 일 실시예에서, 결함있는 특정의 기능 컴포넌트가 식별된다. 한 예시적인 구현에서, 스캔 테스트의 출력 결과는 어느 기능 컴포넌트가 결함있는지의 표시를 제공한다. 예를 들어, 테스트 패턴 결과가 분석되고 결함있는 기능 컴포넌트가 식별된다. 본 발명은 결함있는 기능 컴포넌트가 다이에 포함된 유사한 다른 기능 컴포넌트를 갖지 않는 것인지를 판정할 수 있다. 일 실시예에서, 결함있는 기능 컴포넌트가 중요한 것인지 및/또는 결함있는 기능 컴포넌트가 디스에이블되어 있는 경우 작업 흐름을 처리할 수 있는 다른 기능 컴포넌트를 다이가 갖지 않는지의 구분이 행해진다. 이러한 기능 컴포넌트가 식별되는 경우, 본 발명의 일 실시예에서 다이가 폐기되는데, 그 이유는 다이가 전기능을 제공할 수 없기 때문이다.
본 발명의 일 실시예에서, 결함있는 컴포넌트의 식별을 용이하게 해주기 위해 디스에이블시키는 컴포넌트가 이용된다. 한 예시적인 실시예에서, 복수의 유사 한 기능 컴포넌트(예를 들어, 픽셀 쉐이더(321 내지 324))에 의해 테스트 벡터 동작이 수행된다. 에러있는 결과가 있는 경우, 추가적인 테스트가 수행된다. 복수의 기능 컴포넌트 중 제1 기능 컴포넌트가 디스에이블시키는 컴포넌트에 의해 디스에이블되고, 나머지 기능 컴포넌트들에 의해 테스트 벡터 동작이 수행된다. 다른 대안으로서, 테스트 프로세스에서, 기능 컴포넌트의 디스에이블을 시뮬레이션하기 위해 소프트웨어 시뮬레이션이 이용될 수 있다. 예를 들어, 픽셀 쉐이더(321)가 디스에이블되고, 테스트 벡터 동작이 픽셀 쉐이더(322 내지 324)에 의해 수행되며, 그 결과가 분석된다. 에러있는 결과가 있는 경우, 제1 기능 컴포넌트는 결함있는 컴포넌트로서 식별된다. 계속된 에러있는 결과가 있는 경우, 복수의 기능 컴포넌트 중 제2 기능 컴포넌트(예를 들어, 픽셀 쉐이더(321))가 디스에이블시키는 컴포넌트에 의해 디스에이블되고 나머지 기능 컴포넌트에 의해 테스트 벡터 동작이 수행된다. 에러있는 결과가 없는 경우, 제2 기능 컴포넌트는 결함있는 컴포넌트로서 식별된다. 이 제거 프로세스는 결함있는 컴포넌트가 식별될 때까지 계속된다.
단계(530)에서, 테스트의 결과에 기초하여, 칩에 대해 기능 컴포넌트 구성 프로세스(예를 들어, 기능 컴포넌트 구성 프로세스(400))가 수행된다. 본 발명의 일 실시예에서, 기능 컴포넌트 구성 프로세스는, 기능 컴포넌트가 결함있는 경우, 칩의 복수의 동질의 기능 컴포넌트(예를 들어, 실행 컴포넌트) 중 하나 이상을 디스에이블한다. 예를 들어, 결함있는 기능 컴포넌트에 디스에이블 신호가 발행된다.
일 실시예에서, 감소된 성능의 회로 구제 방법(500)은 다른 기능 컴포넌트가 디스에이블된 기능 컴포넌트의 기능들을 수행할 수 있게 해주도록 칩을 프로그램가능하게 재구성하는 단계를 포함한다. 예를 들어, 디스에이블된 컴포넌트를 식별해주는 마스크가 분배 컴포넌트에 프로그램되고 작업 흐름이 나머지 기능 컴포넌트들 간에 분배될 수 있다. 이는 소프트웨어 로드가능 레지스터 또는 테스트 시에 수행되는 하드코딩된 마스크 유형 프로그램으로서 프로그램될 수 있다. 프로그램가능 비휘발성 메모리, 퓨즈, 와이어 본드 스트랩 등을 비롯하여 이용될 수 있는 다양한 기술이 있다.
감소된 성능의 회로 구제 방법(500)의 일 실시예에서, 테스터 내의 프로그램은 특정의 성능 레벨에 대한 다이의 특성의 정의를 포함한다. 한 예시적인 구현에서, 테스터는 각각의 성능 레벨에서 어느 결함이 허용가능한지이 표시를 포함한다. 예를 들어, 테스터는 제1 복수의 병렬 기능 컴포넌트가 디스에이블될 수 있는 제1 성능 레벨 및 제2 복수의 병렬 기능 컴포넌트가 디스에이블될 수 있는 제2 성능 레벨을 포함할 수 있다. 이 성능 레벨은 또한 인에이블되어 있는 기능 컴포넌트의 수에 대응할 수 있다. 본 발명은 또한 테스트 절차의 일부로서 성능 레벨에 기초하여 다이의 자동적인 비닝을 용이하게 해줄 수 있다.
도 18은 본 발명의 일 실시예에 따른 테스트 환경인 테스트 환경(600)의 블록도이다. 테스트 환경(600)은 다이(610) 및 테스트 시스템(650)을 포함한다. 다이(610)는 테스트 인터페이스(633), 분배기(631) 및 기능 컴포넌트(611 내지 614)를 포함하며, 각각의 기능 컴포넌트 및 분배기(631)는 스캔 테스트 셀(621 내지 625)을 각각 포함한다. 다이 구제 테스트 시스템(650)은 테스트 모듈(680) 및 결 함 컴포넌트 해결 모듈(670)을 포함하며, 이 결함 컴포넌트 해결 모듈은 기능 유지 모듈(671), 대응 컴포넌트 검출 모듈(672), 디스에이블시키는 모듈(673) 및 다이 거부 모듈(674)을 포함한다.
다이 구제 테스트 시스템(650)은 다이(610)를 테스트한다. 테스트 모듈(680)은 테스트 벡터를 스캔 테스트 셀(621 내지 625)에 전달하는 테스트 인터페이스(633)에 테스트 벡터를 제공한다. 스캔 테스트 셀(621 내지 625) 내의 정보는 기능 컴포넌트(611 내지 614) 및 분배기(631)에 피드되며, 이들은 스캔 테스트 정보에 대한 동작을 수행한다. 그 결과는 또한 스캔 테스트 셀(621 내지 625)에 의해 포착되고 테스트 인터페이스(633)로 전달되며, 이 테스트 인터페이스는 그 결과를 분석을 위해 테스트 시스템(650)으로 전달한다. 테스트 모듈(680)은 그 결과를 분석하고 결함있는 기능 컴포넌트의 표시를 결함 컴포넌트 해결 모듈(670)에 제공한다. 결함 컴포넌트 해결 모듈(670)은 다이가 기능 컴포넌트를 디스에이블함으로써 구제될 수 있는지를 판정한다.
기능 유지 모듈(671)은 식별된 기능 컴포넌트가 디스에이블되도록 허용된 그룹에 포함되는지를 결정한다. 일 실시예에서, 기능 유지 모듈(671)은 식별된(예를 들어, 결함있는) 기능 컴포넌트의 작업 흐름을 처리할 수 있는 다른 기능 컴포넌트가 있는지를 판정한다. 예를 들어, 작업 흐름이 다른 기능 컴포넌트로 전달 또는 재라우팅될 수 있다. 한 예시적인 구현에서, 기능 유지 모듈(671)은 디스에이블되도록 허용되어 있는 미리 정해진 컴포넌트의 리스트와 대조하여 식별된 기능 컴포넌트를 검사한다(예를 들어, 다른 컴포넌트들이 작업 흐름을 처리할 수 있다).
대응 컴포넌트 검출 모듈(672)은 디스에이블되어야만 하는 관련 기능 컴포넌트가 있는지를 판정한다. 관련 기능 컴포넌트는 적절히 기능하는 컴포넌트일 수 있다. 본 발명의 일 실시예에서, (예를 들어, 동일한 파이프라인, 쓰레드 등에서) 결함있는 기능 컴포넌트와 밀접하게 연관되어 있는 기능 컴포넌트가 식별된다. 예를 들어, 기능 컴포넌트가 결함있는 컴포넌트로부터 다운스트림에 있는 경우, 스위칭 동작 및 대응하는 전력 소모를 방지하기 위해 적절히 기능하는 컴포넌트가 디스에이블(예를 들어, 전원 차단)될 수 있다. 한 예시적인 구현에서, 기능 컴포넌트는 제품 구분을 유지하기 위해 디스에이블될 수 있다. 디스에이블되어야만 하는 다른 기능 컴포넌트가 식별되는 경우, 이들 컴포넌트를 디스에이블시키는 것이 기능에 영향을 주는지를 판정하기 위해 이들 컴포넌트의 식별자가 기능 유지 모듈(671)에 피드백된다.
디스에이블시키는 모듈(673)은 기능 컴포넌트 디스에이블(예를 들어, 기능 컴포넌트(611, 612, 613, 또는 614)의 디스에이블)을 지시한다. 본 발명의 일 실시예에서, 디스에이블시키는 모듈(673)은 테스트 인터페이스(633)를 통해 기능 컴포넌트로 직접 디스에이블 신호를 전송한다. 대체 실시예에서, 디스에이블시키는 모듈(673)은 다이(610) 내의 디스에이블시키는 모듈(도시 생략)로 신호를 전송한다. 디스에이블시키는 모듈(673)은, 기능 유지 모듈(671)이 기능 컴포넌트를 디스에이블시켜도 된다는 표시를 제공하는 경우, 그 기능 컴포넌트를 디스에이블한다(예를 들어, 기능을 제거하지 않는다). 한 예시적인 구현에서, 기능 유지 모듈(671)은, 기능을 감소시키지 않는 한 성능을 감소시킬지라도, 디스에이블시키는 모듈(673)이 기능 컴포넌트를 디스에이블할 수 있게 해준다.
다이 마킹 모듈(674)은 다이에 마킹을 한다. 본 발명의 일 실시예에서, 다이 마킹 모듈(674)은 성능 기준에 기초하여 다이에 마킹을 한다. 다이 마킹 모듈(674)은 또한 다이가 거부되는 경우 마킹 또는 표시를 제공한다. 다이가 거부될 수 있는 이유는 기능 유지 모듈(671)이 결함있는 기능 컴포넌트가 디스에이블되어서는 안된다는 및/또는 다이의 성능이 미리 정해진 레벨 아래로 떨어진다는 표시를 제공하기 때문이다. 한 예시적인 구현에서, 디스에이블되어 있는 기능 컴포넌트에 기초하여 다이에 마킹을 한다. 예를 들어, 미리 정해진 수 및 유형의 기능 컴포넌트가 디스에이블되는 경우, 그에 따라 다이에 마킹을 한다.
본 발명의 일 실시예에서, 다이 마킹 모듈(674)은 또한 다이가 위치해 있는 웨이퍼에 마킹을 한다. 본 발명의 일 실시예에서, 다이 마킹 모듈(674)은 수율 기준에 기초하여 웨이퍼에 마킹을 한다. 수율 기준은 차이 성능 레벨에 대해 세분화될 수 있다. 예를 들어, 수율 마킹은 웨이퍼 내의 어떤 수 또는 퍼센트의 다이가 디스에이블된 기능 컴포넌트를 갖지 않고, 어떤 수 또는 퍼센트의 다이가 설정된 수의 디스에이블된 기능 컴포넌트를 가지며 어떤 수의 다이가 거부되거나 구제할 수 없다는 것을 나타낼 수 있다.
도 19는 본 발명의 일 실시예에 따른 다이 분류 프로세스의 일 실시예인 다이 분류 프로세스(700)의 흐름도이다. 다이 분류 프로세스(700)는 차별화된 성능 레벨로 유사한 구성을 갖는 다이의 제조 및 분류를 포함한다. 한 예시적인 구현에서, 동일한 제조 프로세스에서 제조되는 다이는 서로 다른 성능 레벨에 기초하여 분류된다. 예를 들어, 다이는 동일한 수의 기능 컴포넌트(예를 들어, 트랜지스터)를 갖지만, 어떤 컴포넌트는 기능의 실행을 방해하지 않지만 성능에 영향을 줄 수 있는 방식으로 디스에이블된다. 다이 분류 프로세스(700)는 동일한 기능 및 서로 다른 성능 레벨을 갖는 다이의 분류 및 분배를 용이하게 해준다.
단계(710)에서, 동일한 구성을 갖는 복수의 다이가 제조된다. 본 발명의 일 실시예에서, 복수의 다이가 단일의 웨이퍼 상에 제조된다. 본 발명의 일 실시예에서, 유사한 구성은 복수의 다이 각각이 미리 정해진 유형의 기능을 수행할 수 있게 해준다. 한 예시적인 구현에서, 복수의 다이를 제조하기 위해 동일한 리소그라피 프로세스 단계들이 이용된다. 일 실시예에서, 다이에 관한 데이터 시트 정보를 검토함으로써 유사한 구성이 판정될 수 있다. 예를 들어, 데이터 시트 정보는 다이 크기(예를 들어, 트랜지스터의 수), 기능 표시자, 및/또는 성능 표시자, 및/또는 다이가 연관되어 있는 제품 라인에 관한 정보(예를 들어, 다이가 무슨 용도로 판매되는지를 결정함으로써)를 포함할 수 있다. 다이가 실질적으로 동일한 제조 단가를 가질 수 있는 경우에도 유사한 구성이 표시될 수 있다.
단계(720)에서, 다이가 컴포넌트와 연관된 기능을 수행할 수 없게 하지 않고서는 컴포넌트가 복수의 다이 중 하나에서의 생산성 기여에 참여하지 못한다. 본 발명의 일 실시예에서, 컴포넌트 생산성의 제거는 성능에 영향을 줄 수 있지만 그 유형의 기능을 제거하지 않는다. 한 예시적인 구현에서, 컴포넌트는 그 컴포넌트를 디스에이블함으로써 생산성 기여에 참여하지 못하게 된다. 디스에이블된 컴포넌트의 작업 흐름은 다른 컴포넌트로 리디렉션될 수 있다. 일 실시예에서, 컴포넌 트가 생산성 기여에 참여하지 못하게 하는 것은 데이터 시트 정보를 분석함으로써 검출될 수 있다. 예를 들어, 다이가 서로 다른 성능 레벨로 동일한 유형의 기능을 제공하는 제품 라인에 적용가능한 제품 시트를 갖는 경우이다. 다른 대안으로서, 컴포넌트가 생산성 기여에 참여하지 못하는지 여부의 다른 표시는 테스트가 수행되는 이후까지 어느 데이터 시트가 다이에 적용되는지의 판정이 행해지지 않는 경우이다(예를 들어, 데이터 시트 정보의 선택은 테스트의 결과에 기초한 다이 컴포넌트의 변경에 대응한다).
단계(730)에서 기능에 대한 차별화된 성능 레벨에 기초하여 복수의 다이 각각이 분류된다. 한 예시적인 구현에서, 기능이 제공되는 성능 레벨과 관련하여 서로 다른 가격으로 배포 또는 판매되는 제품에 다이가 포함된다. 본 발명의 일 실시예에서, 서로 다른 성능 레벨(예를 들어, 서로 다른 속도, 대역폭 등)을 갖는 동일한 설계의 다이가 배포된다.
도 20은 본 발명의 일 실시예에 따른 프로세싱 유닛(800)의 블록도이다. 본 발명의 일 실시예에서, 프로세싱 유닛(800)은 컴퓨터 기반 시스템(예를 들어, 컴퓨터 시스템(200))에 포함된다. 한 예시적인 구현에서, 프로세싱 유닛(800)은 중앙 처리 장치(201) 및/또는 그래픽 처리 유닛(211)과 유사하다. 프로세싱 유닛(800)은 할당 컴포넌트(810), 성능 관리 상태 컴포넌트(820) 및 동작 컴포넌트(831 내지 834)를 포함한다. 일 실시예에서, 할당 컴포넌트(810)는 분배 컴포넌트(110)와 유사하고, 성능 관리 상태 컴포넌트(820)는 기능 컴포넌트 제어기(120)와 유사하며, 동작 컴포넌트(831-834)는 기능 컴포넌트(131-134)와 유사하다. 동작 컴포넌 트(831-834) 각각은 여러가지 작업(예를 들어, 부동소수점 계산, 그래픽 데이터 처리 등)과 연관된 처리 동작을 수행한다. 일 실시예에서, 동작 컴포넌트(831-834)는 유사한 작업 또는 기능을 수행한다. 성능 관리 컴포넌트(820)는 동작 컴포넌트(831-834)의 각각의 동작 특성(예를 들어, 인에이블, 디스에이블 등)의 변경을 선택적으로 관리한다. 할당 컴포넌트(810)는 동작 컴포넌트(831-834) 및 성능 관리 컴포넌트(820)에 연결되어 있다. 할당 컴포넌트(810)는 인에이블되어 있는 동작 컴포넌트(831-834) 각각에 정보를 할당한다. 예를 들어, 할당 컴포넌트(810)는 동작 컴포넌트가 인에이블되어 있는 경우 처리 작업 흐름 정보를 동작 컴포넌트(831-834)에 할당(예를 들어, 분배)한다. 일 실시예에서, 성능 관리 상태 컴포넌트(820) 및 동작 컴포넌트(831-834)는 기능 컴포넌트 제어기(120) 및 기능 컴포넌트(131-134)와 유사하다.
성능 관리 컴포넌트(820)는 동작 컴포넌트에 대한 변경을 나타내는 정보를 수신한다. 예를 들어, 테스트 결과는 동작 컴포넌트가 결함있는지를 나타낸다. 성능 관리 컴포넌트(820)는 정보가 적용되는 동작 컴포넌트(831-834)의 부분집합을 식별한다. 예를 들어, 동작 컴포넌트의 부분집합이 결함있고 그 부분집합이 사용하기 위해 인에이블되지 않는다. 한 예시적인 구현에서, 결함없는 부분집합이 인에이블된다. 예를 들어, 테스트 결과가 동작 컴포넌트(831, 834)가 결함있음을 나타내는 경우, 성능 관리 컴포넌트(820)는 동작 컴포넌트(832, 833)를 인에이블하고 동작 컴포넌트(831, 834)를 인에이블하지 않는다. 동작 컴포넌트(831, 834)가 인에이블되어 있는 경우, 성능 관리 컴포넌트(820)는 이들을 디스에이블한다. 성능 관리 컴포넌트(820)는 또한 할당 컴포넌트(810)에 동작 특성 상태 표시를 제공한다. 예를 들어, 동작 특성 상태 표시는 기능 컴포넌트들 중 어느 것이 인에이블되어 있고 어느 것이 디스에이블되어 있는지를 나타낸다. 인에이블되어 있는 동작 컴포넌트 각각은 그렇지 않았으면 인에이블되어 있지 않는 동작 컴포넌트에 의해 실행되었을 유사한 기능을 실행할 수 있다.
도 21은 본 발명의 일 실시예에 따른 웨이퍼 수율 최적화 방법(900)의 흐름도이다. 웨이퍼 수율 최적화 방법(900)은 웨이퍼로부터의 사용가능한 다이의 수율을 향상시킨다. 한 예시적인 구현에서, 웨이퍼 수율 최적화 방법(900)은, 웨이퍼로부터의 전체적인 수율을 향상시키기 위해, 그렇지 않았으면 웨이퍼로부터 폐기되었을 결함있는 컴포넌트를 갖는 다이의 구제를 용이하게 해준다.
단계(910)에서, 웨이퍼가 제조된다. 이 웨이퍼는 복수의 다이를 포함하며, 복수의 다이 중 각각의 다이는 복수의 기능 서브 컴포넌트를 사용하여 복수의 서브작업을 병렬로 수행할 수 있는 기능 컴포넌트를 갖는다. 예를 들어, 각각의 다이는 기능 서브 컴포넌트(예를 들어, 쉐이더, 래스터화기 등)에 의해 다양한 그래픽 서브작업(예를 들어, 쉐이딩, 텍스처링, 앨리어싱, 래스터화 등)을 수행하는 파이프라인을 포함할 수 있다. 본 발명의 일 실시예에서, 웨이퍼는 리소그라피 프로세스를 사용하여 제조된다.
단계(920)에서, 각각의 다이에 대해, 동작가능한 복수의 기능 서브 컴포넌트의 각각의 기능 서브 컴포넌트 및 동작가능하지 않은 복수의 기능 서브 컴포넌트의 각각의 기능 서브 컴포넌트가 식별된다. 일 실시예에서, 동작가능한 또한 동작가 능하지 않은 기능 서브 컴포넌트는 종래의 회로 테스트 프로세스의 일부로서 식별된다. 예를 들어, 미리 정해진 입력이 기능 서브 컴포넌트에 피드되고 결과 출력이 검사된다. 출력 정보는 에러가 있는지 검사된다(예를 들어, 출력이 미리 정해진 정확한 결과와 비교된다). 출력 정보가 에러를 포함하고 있는 경우(예를 들어, 출력이 미리 정해진 정확한 결과과 일치하지 않는 경우), 기능 서브 컴포넌트는 동작하지 않는 것으로 식별된다.
단계(930)에서, 동작가능하지 않은 것으로 식별되는 상기 복수의 기능 서브 컴포넌트의 각각의 기능 서브 컴포넌트의 동작이 디스에이블된다. 일 실시예에서, 동작가능한 것으로 식별되는 상기 복수의 기능 서브 컴포넌트의 각각의 기능 서브 컴포넌트의 동작이 인에이블될 수 있다. 일 실시예에서, 하드 "코딩된" 메카니즘에 의해 동작가능하지 않은 기능 서브 컴포넌트는 디스에이블되고 동작가능한 기능 서브 컴포넌트는 인에이블된다. 예를 들어, 기능 서브 컴포넌트를 구성 또는 디스에이블하기 위해 파운드리 레이저 트림 비트(foundry laser trim bit)가 이용된다. 다른 실시예에서, 소프트웨어 프로그램가능 정보는 기능 서브 컴포넌트를 구성(예를 들어, 디스에이블 또는 인에이블)하는 데 이용된다.
단계(940)에서, 복수의 다이의 각각의 다이는 동작가능 상태에 기초하여 성능 등급으로 분류된다(예를 들어, 컴포넌트들은 단계(930)에서 동작가능함 또는 동작가능하지 않음으로 식별됨). 예를 들어, 다이는 기능 서브 컴포넌트의 전부 또는 상당 비율이 동작가능하고 인에이블되어 있는 높은 성능 등급으로 분류될 수 있다. 다이는 더 적은 기능 서브 컴포넌트가 인에이블된 채로 있는 중간 성능 범위 등급으로 분류될 수 있다. 이들 성능 범위는 구제가능한 것으로 지정될 수 있다. 또한 다이가 최소 요건을 만족시키지 않고 폐기되는 성능 등급이 있을 수 있다(또는 아마도 그 문제를 교정하기 위해 어떤 다른 정정 조치를 받을 수 있다).
단계(950)에서, 구제가능한 것으로 지정된된 성능 등급으로 분류된 다이가 구제된다. 예를 들어, 어떤 디스에이블된 기능 서브 컴포넌트를 갖는 다이는, 비록 작업이 수행되는 속도가 감소되지만, 프로세싱 작업을 수행하는 데 사용된다.
도 22는 본 발명의 일 실시예에 따른, 기능 컴포넌트 원격 구성 아키텍처(1100)의 블록도이다. 기능 컴포넌트 원격 구성 아키텍처(1100)는 집적 회로 다이에 포함된 기능 컴포넌트의 구성을 용이하게 해준다. 예를 들어, 이 구성은 외부 또는 원격 시스템으로부터 제어된다. 기능 컴포넌트 원격 구성 아키텍처(1100)는 다수의 바람직한 구현을 달성하기 위해 기능 컴포넌트의 동작 특성이 안전하고 제어된 방식으로 변경될 수 있는 아키텍처를 제공한다.
원격 구성 환경(1100)은 집적 회로 다이(1110) 및 원격 구성 제어 모듈(1150)을 포함한다. 집적 회로 다이(1110)는 구성 모듈(1133), 분배 컴포넌트(1131), 및 기능 컴포넌트(1111-1114)를 포함하며, 각각의 기능 컴포넌트 및 분배 컴포넌트(1131)는 동작 특성 레지스터(1121-1125)를 각각 포함한다. 원격 구성 제어기 모듈(1150)은 인코딩 모듈(1180) 및 구성 해결 모듈(1170)을 포함한다.
원격 구성 제어기 모듈(1150)은 집적 회로 다이(1110) 내의 기능 컴포넌트의 구성을 제어한다. 일 실시예에서, 원격 구성 제어기 모듈(1150)은 오프칩이다(예를 들어, 드라이버에 있다). 구성 해결 모듈(1170)은 집적 회로 다이(1110)의 기 능 컴포넌트에 대한 동작 특성 설정을 결정한다. 한 예시적인 구현에서, 구성 해결 모듈(1170)은, 업그레이드된 동작 특성에 관해 합의에 도달되고 기능 표시자가 기능 협상 프로세스의 일부로서 동적으로 변경되는, 자동화된 기능 협상 프로세스(예를 들어, 주문형 용량(capacity on demand))에 참여한다. 한 예시적인 구현에서, 동작 특성은 제품 차별화를 유지하도록 설정된다. 구성 해결 모듈(1170)은 동작 특성 표시자 값을 인코딩 모듈(1180)로 전달한다. 인코딩 모듈(1180)은 동작 특성 표시자 값을 (예를 들어, 키, 해쉬값 등으로) 인코딩하고 인코딩된 동작 특성 표시작 값을 구성 모듈(1133)로 전달한다.
구성 모듈(1133)은 기능 컴포넌트 구성을 지시한다. 예를 들어, 구성 모듈(1133)은 인코딩 모듈(1180)로부터 수신되는 인코딩된 동작 특성 설정값에 기초하여 (예를 들어, 기능 컴포넌트(1111, 1112, 1113, 또는 1114)에 대한) 기능 컴포넌트 동작 특성 설정에 대한 변경을 지시한다. 구성 모듈(1133)은 기능 컴포넌트 동작 특성 표시자 값을 디코딩할 수 있다. 구성 모듈(1133)은 대응하는 동작 특성 설정과 비교하기 위해 디코딩된 값을 기능 추적 모듈(1137)로 전달한다.
기능 추적 모듈(1137)은 기능 컴포넌트 동작 특성의 유지를 지시한다. 한 예시적인 구현에서, 기능 추적 모듈(1137)은 디코딩된 기능 표시자 값과 특정의 동작 특성 설정 간의 상관을 제공한다. 예를 들어, 기능 추적 모듈(1137)은 동작 특성 설정의 미리 정해진 상관 리스트와 대조하여 기능 표시자를 검사한다. 기능 추적 모듈(1137)은 또한 식별된 기능 컴포넌트의 작업 흐름을 처리할 수 있는 다른 기능 컴포넌트가 있는지를 판정할 수 있다.
도 23은 본 발명의 일 실시예에 따른 원격 재구성 방법(1200)의 흐름도이다. 원격 재구성 방법(1200)은 재구성 동작의 원격 제어를 유지하는 메카니즘을 제공한다. 한 예시적인 구현에서, 원격 재구성 방법(1200)은 어떤 구성 특징의 이용이 부가적인 지불을 필요로 하는 유료 사용 프로세스(pay per use process)에서 이용된다. 예를 들어, 사용자가 부가적인 기능 컴포넌트(예를 들어, 부가적인 그래픽 파이프라인, 부동소수점 컴포넌트 등)가 활성화될 것을 원하는 경우, 사용자는 부가적인 지불을 해야만 한다.
단계(1210)에서, 시스템이 원격 자원에 재구성 코드를 요청하는 다이 기능 컴포넌트 재구성 요청 프로세스가 시작된다. 일 실시예에서, 재구성 요청 프로세스는 다이 기능 컴포넌트 재구성 코드를 요청하고 수신하는 단계를 포함한다. 한 예시적인 구현에서, 다이 재구성 코드는 기능 컴포넌트를 재구성하기 위해 기능 컴포넌트 제어기(예를 들어, 120 등)에 의해 이용된다. 다이 기능 컴포넌트 재구성 코드의 요청 및 수신이 다양한 통신 시스템을 통해 전달될 수 있다는 것을 잘 알 것이다. 예를 들어, 요청 및 다이 기능 컴포넌트 재구성 코드는 인터넷을 통해 전달될 수 있다. 일 실시예에서, 이 요청은 요청자가 재구성 코드를 수신하도록 허가되어 있음(예를 들어, 요청자가 필요한 지불을 하였음, 허가된 시스템을 가지고 있음 등)을 나타내는 재구성 코드 허용 표시자(reconfiguration code permission indicator)를 포함한다.
일 실시예에서, 다이 기능 컴포넌트 재구성 요청 프로세스는 재구성 코드 허용 표시자를 획득하기 위해 재구성 코드 허용 표시자 요청 프로세스를 포함한다. 한 예시적인 구현에서, 재구성 코드 허용 표시자 요청 프로세스는 허용 요청자에 대한 지불 및 요청을 전달하는 단계 및 허용 표시자의 요청 및 지불에 대한 응답을 수신하는 단계를 포함한다. 예를 들어, 고객 또는 사용자는 인터넷을 통해 원격 중앙 자원으로 전자 지불을 하고 그에 응답하여 허용 표시자(예를 들어, 비트 스트림 코드)를 수신한다.
단계(1220)에서, 재구성 코드 생성 프로세스가 실행된다. 한 예시적인 구현에서, 원격 자원은 재구성 코드의 요청을 처리한다. 일 실시예에서, 재구성 코드 생성 프로세스는 재구성 코드의 요청 및 허용 표시자를 수신하는 단계, 허용 표시자의 유효성을 분석하는 단계, 및 허용 표시자가 유효한 경우 재구성 코드를 제공하는 단계를 포함한다. 예를 들어, 원격 자원은 시스템에 활성화되어 있는 그래픽 파이프라인의 수를 증가시키라는 요청을 수신한다. 원격 자원은 요청자가 필요한 지불을 했는지를 분석한다. 필요한 지불이 행해진 경우, 원격 자원은 시스템에 활성화되어 있는 그래픽 파이프라인의 수를 증가시키기 위한 재구성 코드를 전달한다.
일 실시예에서, 재구성 코드 생성 프로세스는 재구성 코드 허용 표시자를 획득하기 위해 요청 프로세스에 응답하는 재구성 코드 허용 표시자 응답 프로세스를 시작하는 것을 포함한다. 한 예시적인 구현에서, 재구성 코드 허용 표시자 응답 프로세스는 허용 표시자에 대한 지불을 받는 단계 및 지불을 받은 것에 응답하여 허용 표시자를 전달하는 단계를 포함한다.
단계(1230)에서, 시스템이 재구성 코드를 수신하는 경우(예를 들어, 원격 자 원으로부터 수신하는 경우), 다이 기능 컴포넌트 재구성 프로세스가 수행된다. 다이 기능 컴포넌트 재구성 프로세스는 재구성 코드에 따라 다이 기능 컴포넌트(예를 들어, 기능 컴포넌트(131, 132, 133, 134) 등)를 재구성하는 단계를 포함한다. 일 실시예에서, 다이 기능 컴포넌트 재구성 프로세스는 기능 컴포넌트 구성 프로세스(400)와 유사하다.
따라서, 본 발명은 집적 회로 다이의 유연한 동작 구성을 가능하게 해주고 제품 차별화를 향상시킨다. 다이는 다수의 성능 레벨을 갖는 제품 라인에서 이용될 수 있다. 본 발명은 또한 높은 성능 작업 또는 낮은 성능 작업을 위해 동적으로 구성될 수 있음으로써 전력 절감 및 경제적인 차별화를 가능하게 해주는 단일의 다이의 제조를 용이하게 해준다. 본 발명은 또한 제조 자원의 절감 및 결함있는 컴포넌트를 갖는 다이의 구제를 용이하게 해준다.
간단한 요약으로서, 이상에서의 설명은 이하의 것들에 대해 기술하고 있다.
개념 1. 감소된 성능의 회로 구제 방법으로서,
칩을 테스트 준비하는 단계,
상기 칩을 테스트하는 단계, 및
상기 테스트의 결과에 기초하여 상기 칩에 기능 컴포넌트 구성 프로세스를 수행하는 단계를 포함하는, 감소된 성능의 회로 구제 방법.
개념 2. 개념 1에 있어서, 상기 테스트하는 단계는,
결함있는 기능 컴포넌트를 식별하는 단계,
결함없는 기능 컴포넌트가 상기 집적 회로에 포함되어 있는지를 판정하는 단계 - 상기 결함없는 기능 컴포넌트는 상기 결함있는 기능 컴포넌트와 유사한 기능을 수행함 -,
상기 결함없는 컴포넌트가 상기 집적 회로에 포함되어 있는 경우 상기 결함있는 기능 컴포넌트를 사용하지 않는 것으로 지정하는 단계, 및
상기 유사한 기능을 수행하는 상기 결함없는 컴포넌트가 상기 집적 회로에 포함되어 있지 않은 경우 상기 집적 회로를 결함있는 것으로 마킹하는 단계를 포함하는, 감소된 성능의 회로 구제 방법.
개념 3. 개념 1에 있어서, 상기 칩의 복수의 동질의 실행 컴포넌트 중 하나가 디스에이블 또는 인에이블되는, 감소된 성능의 회로 구제 방법.
개념 4. 개념 1에 있어서, 다른 기능 컴포넌트가 상기 디스에이블된 기능 컴포넌트의 기능을 수행할 수 있도록 상기 칩을 재구성하는 단계를 더 포함하는, 감소된 성능의 회로 구제 방법.
개념 5. 개념 1에 있어서, 상기 기능 컴포넌트 구성 프로세스는,
결함있는 기능 컴포넌트의 표시를 수신하는 단계,
상기 결함있는 기능 컴포넌트가 복수의 유사한 기능 컴포넌트 중 하나인지를 판정하는 단계,
상기 결함있는 기능 컴포넌트가 상기 복수의 유사한 기능 컴포넌트 중 하나인 경우 상기 결함있는 기능 컴포넌트를 디스에이블하는 단계,
하나 이상의 결함없는 기능 컴포넌트를 인에이블하는 단계, 및
상기 디스에이블 및 상기 인에이블의 통지를, 그렇지 않았으면 정보를 상기 결함있는 기능 컴포넌트로 전달하였을 컴포넌트에 제공하는 단계를 포함하는, 감소된 성능의 회로 구제 방법.
개념 6. 개념 1에 있어서, 결함있는 기능 컴포넌트의 상기 표시가 테스트 시스템으로부터 수신되는, 감소된 성능의 회로 구제 방법.
개념 7. 다이 분류 프로세스로서,
유사한 구성을 갖는 복수의 다이를 제조하는 단계,
상기 복수의 다이 중의 하나의 다이가 컴포넌트와 연관된 기능을 수행할 수 없게 하지 않고는 상기 컴포넌트가 상기 복수의 다이의 상기 하나의 다이 내에서의 생산성 기여에 참여하지 못하게 하는 단계, 및
상기 기능에 대한 차별화된 성능 레벨에 기초하여 상기 복수의 다이를 분류하는 단계를 포함하는 다이 분류 프로세스.
개념 8. 개념 7에 있어서, 상기 복수의 다이가 단일의 웨이퍼 상에 제조되는 다이 분류 프로세스.
개념 9. 개념 7에 있어서, 상기 복수의 다이에 관한 데이터 시트 정보를 검토함으로써 유사한 구성이 결정되는 다이 분류 프로세스.
개념 10. 개념 7에 있어서, 다이가 실질적으로 동일한 제조 단가를 갖는 경우 유사한 구성이 결정되는 다이 분류 프로세스.
개념 11. 개념 7에 있어서, 상기 컴포넌트를 디스에이블함으로써 상기 컴포넌트가 생산성 기여에 참여하지 못하게 되는 다이 분류 프로세스.
개념 12. 개념 7에 있어서, 어느 데이터 시트 정보가 상기 복수의 다이에 포함된 다이에 적용되는지의 판정은 테스트가 수행된 이후까지 행해지지 않는 다이 분류 프로세스.
개념 13. 개념 7에 있어서, 상기 복수의 다이에 포함된 제1 다이 및 제2 다이는 기능이 제공되는 성능 레벨과 관련하여 서로 다른 가격으로 판매되는 서로 다른 제품에 포함되는 다이 분류 프로세스.
개념 14. 개념 7에 있어서, 상기 복수의 다이 중의 각각의 다이는 동일한 설계로 제조되고 서로 다른 성능 레벨로 분배되는 다이 분류 프로세스.
개념 15. 웨이퍼로부터의 사용가능한 다이의 수율을 향상시키는 방법으로서,
웨이퍼를 제조하는 단계 - 상기 웨이퍼는 복수의 다이를 포함하고, 상기 복수의 다이 중의 각각의 다이는 복수의 기능 서브 컴포넌트를 사용하여 복수의 서브작업을 병렬로 수행할 수 있는 기능 컴포넌트를 가짐 -,
상기 복수의 기능 서브 컴포넌트의 각각의 기능 서브 컴포넌트를 동작가능한 것 및 동작가능하지 않은 것으로 식별하는 단계,
동작가능하지 않은 것으로 식별되는 상기 복수의 기능 서브 컴포넌트 중의 각각의 기능 서브 컴포넌트의 동작을 디스에이블하는 단계,
동작가능한 것으로 식별되는 상기 복수의 기능 서브 컴포넌트 중의 각각의 기능 서브 컴포넌트의 선택적인 동작을 인에이블하는 단계,
상기 기능 서브 컴포넌트의 동작가능 상태에 기초하여 상기 복수의 다이 중의 상기 각각의 다이를 성능 등급으로 분류하는 단계, 및
상기 복수의 다이 중의 상기 각각의 다이가 구제가능한 것으로 지정된 성능 등급으로 분류되어 있는 경우 동작가능하지 않은 기능 서브 컴포넌트를 갖는 상기 복수의 다이 중의 상기 각각의 다이를 구제하는 단계를 포함하는, 수율 향상 방법.
개념 16. 개념 15에 있어서, 상기 서브작업은 그래픽 서브작업을 포함하는, 수율 향상 방법.
개념 17. 개념 15에 있어서, 상기 동작가능하지 않은 기능 서브 컴포넌트는 테스트 프로세스의 일부로서 식별되는, 수율 향상 방법.
개념 18. 개념 15에 있어서, 상기 복수의 다이 중의 하나를 구제하는 상기 단계는 상기 복수의 다이 중의 상기 하나의 수행 능력에 대응하는 성능 표시자로 상기 다이에 마킹을 하는 단계를 포함하는, 수율 향상 방법.
개념 19. 개념 15에 있어서, 상기 복수의 다이 중의 상기 하나는 그래픽 처리 파이프라인 기능 컴포넌트를 포함하는, 수율 향상 방법.
개념 20. 개념 15에 있어서, 전기능을 제공하지 않는 상기 복수의 다이 중의 하나를 폐기시키는 단계를 더 포함하는, 수율 향상 방법.
이하에서는 내포된 밭갈이 패턴을 사용하여 화면 영역을 순회하도록 구성되어 있는 래스터 컴포넌트를 갖는 GPU에 대해 기술하고 있다.
기술 분야
본 발명은 일반적으로 하드웨어 가속 그래픽 컴퓨터 시스템에 관한 것이다.
배경 기술
최근의 컴퓨터 성능 향상은 그래픽 시스템이 퍼스널 컴퓨터, 홈 비디오 게임 컴퓨터, 핸드헬드 장치 등을 사용하여 더 현실적인 그래픽 이미지를 제공할 수 있게 해주었다. 이러한 그래픽 시스템에서, 그래픽 프리미티브(graphic primitive)를 시스템의 화면에 "렌더링(render)" 또는 드로잉(draw)하기 위해 다수의 프로시저(procedure)가 실행된다. "그래픽 프리미티브"는 점, 선, 폴리곤 등의 그래픽 화상의 기본 컴포넌트이다. 렌더링된 이미지는 이들 그래픽 프리미티브의 조합으로 형성된다. 3-D 그래픽 렌더링을 수행하기 위해 많은 프로시저가 이용될 수 있다.
그래픽 렌더링 프로시저를 실행하는 데 필요한 계산을 최적화하기 위해 전용의 그래픽 처리 유닛(예를 들어, GPU 등)이 개발되었다. GPU는 고속 연산을 하도록 구성되어 있으며, 일반적으로 하나 이상의 렌더링 파이프라인을 포함한다. 각각의 파이프라인은 그래픽 명령어/데이터의 고속 실행을 위해 최적화되어 있는 다수의 하드웨어-기반 기능 유닛을 포함하며, 여기서 이 명령어/데이터는 파이프라인의 프론트 엔드(front end)에 피드되고 계산된 결과는 파이프라인의 백엔드(back end)에 나타난다. GPU의 하드웨어-기반 기능 유닛, 캐쉬 메모리, 펌웨어 등은 하위-레벨 그래픽 프리미티브(예를 들어, "점", "선", "삼각형" 등을 포함함)를 처리하여 실시간 렌더링된 3-D 이미지를 생성하도록 최적화되어 있다.
래스터 디스플레이 기술(raster display technology)을 사용하여 실시간 렌더링된 3-D 이미지가 생성된다. 래스터 디스플레이 기술은 컴퓨터 그래픽 시스템 에서 널리 사용되고 있으며, 일반적으로 이미지를 구성하고 있는 다수의 픽셀의 그리드가 그래픽 프리미티브에 의해 영향을 받는 메카니즘을 말한다. 각각의 프리미티브에 대해, 일반적인 래스터화 시스템은 일반적으로 픽셀마다 지나가면서, 프리미티브의 기여도에 따라, 주어진 픽셀을 프레임 버퍼 또는 픽셀 맵으로 "렌더링" 또는 기록해야 하는지 여부를 결정한다. 이것은 차례로 각각의 픽셀을 표현하는 데이터를 디스플레이 버퍼에 어떻게 기록해야 하는지를 결정한다.
프리미티브 내의 모든 픽셀들이 커버되도록 픽셀마다 지나가는 다양한 순회 알고리즘이 개발되었다. 예를 들어, 어떤 솔루션은 픽셀들을 단방향 방식으로 생성하는 것을 수반한다. 이러한 종래의 단방향 솔루션은 일정한 방향으로 행 단위로 픽셀을 생성하는 것을 수반한다. 이것은 그 시퀀스가 프리미티브의 반대쪽 측면 상의 위치에서 끝마칠 때 프리미티브를 가로질러 프리미티브의 제1 측면 상의 시작 위치로 이동할 것을 필요로 한다. 이 이동이 실행될 때마다, 직전에 처리된 픽셀 또는 텍스처 값에 인접하여 위치하지 않은 픽셀 또는 텍스처 값이 저장된다. 따라서, 이러한 멀리 있는 픽셀 또는 텍스처 값은 다른 메모리 액세스 블록에 속해 있을 가능성이 더 많으며, 이러한 액세스를 비효율적으로 만든다.
따라서, 필요한 그래픽 렌더링 데이터(예를 들어, 텍스처 데이터, 노멀 맵(normal map) 등)가 GPU에 의한 효율적인 액세스를 위해 메모리에 유지될 수 있게 보장해줄 수 있는 래스터화 프로세스가 필요하다.
발명의 요약
본 발명의 실시예들은 필요한 그래픽 렌더링 데이터(예를 들어, 텍스처 값, 노멀 맵 등)이 GPU에 의한 효율적인 액세스를 위해 저지연 메모리에 유지될 수 있게 보장해주는 방법 및 시스템을 제공한다. 본 발명의 실시예들은 캐쉬 메모리 액세스의 효율성을 향상시키고 보다 고속의 지연 메모리에 액세스하는 것의 결과 성능 불이익을 제한함으로써 고속의 효율적인 실시간 3-D 그래픽 렌더링을 제공한다.
일 실시예에서, 본 발명은 영역의 픽셀들을 순회하도록 구성되어 있는 GPU 아키텍처로서 구현된다. 이 GPU는 폴리곤 서술을 생성하는 셋업 유닛, 및 셋업 유닛에 연결되어 있는, 폴리곤 서술을 래스터화하는 래스터화기 유닛을 포함한다. 이 래스터화기 유닛은 주축을 따라 제1 밭갈이 패턴을 사용하여 이미지의 복수의 픽셀을 순회하고 또, 제1 밭갈이 패턴을 사용하는 순회 동안에, 제2 밭갈이 패턴을 사용하여 이미지의 복수의 픽셀을 순회하도록 구성되어 있으며, 제2 밭갈이 패턴은 제1 밭갈이 패턴 내에 내포되어 있다.
일 실시예에서, 제1 밭갈이 패턴 및 제2 밭갈이 패턴은 GPU의 래스터 유닛 내의 대단위 래스터화기 컴포넌트에 의해 구현된다. 일 실시예에서, GPU는 이미지의 복수의 픽셀을 타일로서 그룹화하고, 이 타일이 제1 밭갈이 패턴 및 제2 밭갈이 패턴을 사용하여 순회된다.
일 실시예에서, 타일마다의 픽셀의 수는 프로그램가능하며, 그래픽 렌더링 동작의 요건에 따라, 정사각형 뿐만 아니라 직사각형을 비롯하여, 4x4, 8x8, 16x16, 32x32, 64x64, 128x128 등으로 지정될 수 있다. 이와 유사하게, 타일마다의 픽셀의 수는 GPU의 캐쉬 메모리의 크기에 따라 프로그램가능하고, 제1 밭갈이 패턴 및/또는 제2 밭갈이 패턴의 주축이 프로그램가능하다.
상세한 설명
이제부터, 본 발명의 양호한 실시예들에 대해 상세히 언급할 것이며, 이들의 일례가 첨부 도면에 도시되어 있다. 본 발명이 양호한 실시예들과 관련하여 기술되지만, 이는 본 발명을 이들 실시예들로 한정하려는 것이 아님을 잘 알 것이다. 그와 반대로, 본 발명은 첨부된 청구항들에 의해 정의되는 본 발명의 정신 및 범위 내에 포함될 수 있는 대안, 수정 및 등가물을 포괄하는 것으로 보아야 한다. 게다가, 본 발명의 실시예들에 대한 이하의 상세한 설명에서, 본 발명의 철저한 이해를 제공하기 위해 수많은 구체적인 상세가 기술된다. 그렇지만, 당업자라면 본 발명이 이들 구체적인 상세 없이도 실시될 수 있다는 것을 잘 알 것이다. 다른 경우에, 본 발명의 실시예들의 태양들을 불필요하게 모호하게 하지 않도록 하기 위해 공지의 방법, 프로시저, 구성컴포넌트 및 회로는 상세히 기술되어 있지 않다.
표기법 및 용어:
이하의 상세한 설명의 어떤 부분은 프로시저, 단계, 논리 블록, 프로세싱, 및 컴퓨터 메모리 내의 데이터 비트에 대한 연산의 다른 기호 표현으로 제공되어 있다. 이들 설명 및 표현은 그의 연구의 요지를 다른 당업자에게 가장 효과적으로 전달하기 위해 데이터 처리 분야의 당업자에 의해 사용되는 수단이다. 프로시저, 컴퓨터 실행 단계, 논리 블록, 프로세스 등은 여기에서 일반적으로 원하는 결과를 가져오는 일관성있는 단계 또는 명령어 시퀀스인 것으로 생각된다. 이들 단계는 물리적 양의 물리적 처리를 필요로 하는 것이다. 통상적으로, 꼭 그러한 것은 아니지만, 이들 양은 컴퓨터 시스템에서 저장, 전송, 결합, 비교, 및 다른 방식으로 처리될 수 있는 전기 또는 자기 신호의 형태를 가질 수 있다. 주로 통상적으로 사용되기 때문에, 이들 신호를 비트, 값, 요소(elements), 심볼, 문자, 용어, 숫자 등으로 부르는 것이 때로는 편리하다는 것이 밝혀졌다.
그렇지만, 유의할 점은 이들 및 유사한 용어들 전부가 적절한 물리적 양과 연관되어 있고 이들 양에 적용되는 편리한 표식(label)에 불과하다는 것이다. 달리 구체적으로 언급하지 않는 한, 이하의 설명으로부터 명백한 바와 같이, 본 발명 전반에 걸쳐, "프로세싱" 또는 "액세스" 또는 "실행" 또는 "저장" 또는 "렌더링" 등의 용어를 이용한 설명이, 컴퓨터 시스템의 레지스터 및 메모리 내의 물리적(전자적) 양으로 표현된 데이터를 처리하여 컴퓨터 시스템 메모리 또는 레지스터 또는 다른 이러한 정보 저장, 전송 또는 디스플레이 장치 내의 물리적 양으로 유사하게 표현된 다른 데이터로 변환하는 컴퓨터 시스템(예를 들어, 도 1의 컴퓨터 시스템(100)) 또는 유사한 전자 컴퓨팅 장치의 동작 및 프로세스를 말한다는 것을 잘 알 것이다.
컴퓨터 시스템 플랫폼:
도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템(100)을 나타낸 것이다. 컴퓨터 시스템(100)은 어떤 하드웨어-기반 및 소프트웨어-기반 기능에 대한 실행 플랫폼을 제공하는, 본 발명의 실시예들에 따른 기본적인 컴퓨터 시스템의 컴포넌트를 나타낸 것이다. 일반적으로, 컴퓨터 시스템(100)은 적어도 하나의 CPU(101), 시스템 메모리(115), 및 적어도 하나의 그래픽 프로세서 유닛(GPU)(110)을 포함한다. CPU(101)는 브리지 컴포넌트/메모리 컨트롤러(도시 생략)를 통해 시스템 메모 리(115)에 연결될 수 있거나, CPU(101) 내부에 있는 메모리 컨트롤러(도시 생략)를 통해 시스템 메모리(115)에 직접 연결될 수 있다. GPU(110)는 디스플레이(112)에 연결되어 있다. 그의 계산 능력을 더 향상시키기 위해 하나 이상의 부가적인 GPU가 선택적으로 시스템(100)에 연결될 수 있다. GPU(들)(110)는 CPU(101) 및 시스템 메모리(115)에 연결되어 있다. 시스템(100)은, 예를 들어, 전용의 그래픽 렌더링 GPU(110)에 연결된 강력한 범용 CPU(101)를 갖는, 데스크톱 컴퓨터 시스템 또는 서버 컴퓨터 시스템으로 구현될 수 있다. 이러한 실시예에서, 주변 버스, 특수 그래픽 메모리, IO 장치 등을 부가하는 컴포넌트가 포함될 수 있다. 이와 유사하게, 시스템(100)은 핸드헬드 장치(예를 들어, 셀 전화 등) 또는, 예를 들어, 미국 와싱톤주 레드몬드 소재의 Microsoft Corporation부터 입수가능한 Xbox
Figure 112007045561361-pat00003
또는 일본 도쿄 소재의 Sony Computer Entertainment Corporation으로부터 입수가능한 PlayStation3
Figure 112007045561361-pat00004
등의 셋톱 비디오 게임 콘솔 장치로서 구현될 수 있다.
GPU(110)가 개별 컴포넌트, 커넥터를 통해 컴퓨터 시스템(100)에 연결되도록 설계된 개별 그래픽 카드(예를 들어, AGP 슬롯, PCI-Express 슬롯 등), 개별 집적 회로 다이(예를 들어, 마더보드 상에 직접 탑재됨), 또는 컴퓨터 시스템 칩셋 컴포넌트(도시 생략)의 집적 회로 다이 내에 포함되어 있는 통합 GPU로서 구현될 수 있다는 것을 잘 알 것이다. 게다가, 고대역폭 그래픽 데이터 저장을 위해 GPU(110)에 대한 로컬 그래픽 메모리(114)가 포함되어 있을 수 있다.
실시예:
도 2는 본 발명의 일 실시예에 따른, 픽셀들의 그리드가 밭갈이 패턴으로 래 스터화되는 것을 나타낸 도면이다. 도 2에 나타낸 바와 같이, 밭갈이 패턴은 점선(221)으로 나타내어져 있다.
일 실시예에서, 도 2의 다이어그램(200)에 나타낸 바와 같이, 픽셀들의 그리드의 각각의 픽셀은 선(221)으로 나타낸 순서로 순회된다. 선(221)은 밭갈이 순회 패턴을 나타낸 것이며, 여기서 용어 "밭갈이(boustrophedonic)"는, 농부가 밭을 갈거나 밭의 풀을 베는 것과 아주 흡사하게, 각각의 순회가 직교축을 따라 아래쪽으로 이동하면서 한 축을 따라 앞뒤로 스캔함으로써 2D 영역 상의 모든 픽셀을 방문하는 순회 패턴을 말한다. 용어 밭갈이(boustrophedonic)는 일반적으로, 예를 들어, 밭에서처럼 "소가 밭을 가는 것처럼"을 의미한다.
따라서, 도 2에 나타낸 바와 같이, 이 밭갈이(boustrophedonic) 래스터화는 주축을 따라 앞뒤로 접히는 S자 패턴을 말한다. 도 2의 예에서, 주축은 수평이다. 수평 밭갈이(boustrophedonic) 시퀀스는, 예를 들어, 한 행에서 좌측에서 우측으로 있는 프리미티브 삼각형 내의 모든 픽셀을 생성하고 그 다음 행에서는 우측에서 좌측으로 생성하며, 이하 마찬가지로 생성할 수 있다. 이러한 접힌 경로는 생성된 픽셀로부터 이전에 최근 생성된 픽셀까지의 평균 거리가 비교적 작도록 보장해준다.
여전히, 도 2를 참조하면, 큰 프리미티브(예를 들어, 삼각형 등)를 래스터화할 때 커버된 화면의 영역을 방문하기 위한 밭갈이(boustrophedonic) 패턴은 관련 데이터의 캐쉬를 유지하고 프레임 버퍼 및 텍스처 액세스를 위해 요구되는 메모리 요청을 감소시키는 이점이 있다. 예를 들어, 최근의 픽셀 그룹 및/또는 그의 대응 하는 텍스처 값이 제한된 크기의 메모리에 유지될 때, 최근 생성된 픽셀 근방에 있는 픽셀을 생성하는 것이 중요하다.
한가지 이러한 메모리가 캐쉬 메모리이다. 캐쉬 메모리는 고속 저지역 액세스를 위해 최적화되어 있다. 그렇지만, CPU가 이용가능한 캐쉬 메모리의 양은 일반적으로 필요한 총 프레임 버퍼 메모리보다 훨씬 더 작다. 따라서, 밭갈이 시쿼너스에 의하면 픽셀 또는 텍스처 값이 캐쉬 메모리에 이미 로드되어 있는 경우가 더 많으며, 따라서 저속의 프레임 버퍼 메모리(예를 들어, 로컬 그래픽 메모리(112)) 또는 훨씬 더 느린 시스템 메모리(예를 들어, 메모리(115))에의 고비용 고지연 액세스를 회피한다.
유의할 점은 일 실시예에서, 픽셀의 그리드의 밭갈이 패턴 순회를 구현하는 대신에, 타일의 그리드에 밭갈이 패턴 순회가 구현될 수 있다. 이러한 실시예에서, 각각의 타일은 픽셀의 블록을 포함한다. 타일의 크기(예를 들어, 타일당 픽셀의 수)는 일반적으로 GPU의 렌더링 능력 및/또는 캐쉬 메모리 또는 프레임 버퍼 메모리의 크기에 따라 조정된다. 일 실시예에서, 타일의 크기는 프로그램가능하고, 타일마다 픽셀 또는 서브픽셀의 임의의 직사각형(은 물론 정사각형) 어레이를 비롯하여, 예를 들어, 4x4, 8x8, 16x16, 32x32, 64x64, 128x128 등이 되도록 동적으로 선택될 수 있다.
도 24는 본 발명의 일 실시예에 따른, 타일들의 그리드 상부에 제1 밭갈이 패턴 및 제1 밭갈이 패턴 내부에 내포된 제2 밭갈이 패턴을 나타낸 다이어그램(300)을 나타낸 것이다.
상기한 바와 같이, 수평 밭갈이 패턴(예를 들어, 수평 주축)은 수평축을 따라 앞뒤로 접히는 S자 패턴을 말한다. 본 실시예에서, 제2 밭갈이 패턴은 제1 수평 밭갈이 패턴 내에 내포된다. 도 24에 나타낸 바와 같이, 제2 밭갈이 패턴은 수직 밭갈이 패턴이다. 이것은 수직축을 따라 앞뒤로 접히는 라인(321)으로 나타내어져 있다. 수직 밭갈이 패턴은 아치형 수평 밭갈이 패턴의 수평축을 따라 전진하면서 수직축을 따라 앞뒤로 접힌다. 수직 밭갈이 패턴이 상부행의 타일의 오른쪽으로 진행하면(예를 들어, 행이 8 타일 높이인 경우), 그 패턴은 그 자신을 가로질러 수평으로 뒤로 접히고, 하부행의 타일의 왼쪽으로 다시 진행한다. 하부행의 타일의 오른쪽에서 왼쪽으로 진행함에 따라, 수직 밭갈이 패턴은 하부행을 따라 계속하여 위아래로 접힐 수 있다.
이와 같이, 본 발명의 실시예들은 제2 수직 밭갈이 패턴을 제1 수평 밭갈이 패턴 내에 내포할 수 있다. 제2 밭갈이 패턴을 제1 밭갈이 패턴 내에 내포시키는 것은 데이터 액세스를 추가적으로 국소화시키고 캐쉬 미스를 제한하는 역할을 한다. 예를 들어, 다수의 내포된 밭갈이 패턴은 GPU의 캐쉬 메모리의 크기 및 구성(예를 들어, 캐쉬 라인 크기 등)에 거의 일치하게 정렬되도록 구성될 수 있다. 이 특징은 캐쉬 메모리 액세스와 관련하여 국부성(locality)을 유지하는 데 도움을 준다. 다수의 내포된 밭갈이 패턴은 또한 프레임 버퍼 메모리(112)의 메모리 뱅크 액세스와 관련하여 국부성을 유지하도록 구성될 수 있으며, 이 경우 다수의 DRAM 뱅크(도시 생략)가 프레임 버퍼 메모리(112)를 구성한다. 게다가, 다수의 밭갈이 패턴은 메모리에 액세스하기 위한 프리페치 프로세스에 맞게 정렬되도록 구성될 수 있으며, 이 경우 프리페치 프로세스는 메모리로부터 GPU의 캐쉬 내로 데이터를 페치하는 것에 대비할 수 있도록 예측가능한 메모리 액세스 패턴에 의존한다.
도 25는 본 발명의 일 실시예에 따른, 보다 복잡한 다수의 내포된 밭갈이 패턴 순회 프로세스를 나타낸 것이다. 도 25에 나타낸 바와 같이, 서브타일(411) 및 서브타일(412)이 도시되어 있다. 서브타일(411, 412)은, 예를 들어, 도 24에 나타낸 타일(350) 등의 보다 큰 타일의 서브타일이다. 라인(451)은, 수평축(421) 및 수직축(422)와 관련하여, 제3 수평 밭갈이 패턴 및 제4 수직 밭갈이 패턴이 상기 도 24에 나타낸 제1 수평 밭갈이 패턴 및 제2 수직 밭갈이 패턴 내에 추가적으로 내포될 수 있는 방식을 나타낸 것이다. 이와 같이, 본 발명의 실시예들은 복수의 밭갈이 패턴을 제1 밭갈이 패턴 내에 내포시킬 수 있으며, 이는 데이터 액세스를 국부화하고 캐쉬 미스를 훨씬 더 소단위 정도로 제한하는 역할을 한다.
유의할 점은, 상기한 바와 같이, 본 발명의 실시예가, 픽셀들의 타일 이외에, 개개의 픽셀에 동작할 수 있으며 또한 타일의 크기가 특정의 응용의 필요에 따라 조정(예를 들어, 그래픽 드라이버에 의해 프로그램가능한 등)될 수 있다는 것이다. 게다가, 유의할 점은 밭갈이 패턴의 구성이 특정 응용의 필요에 따라 조정(예를 들어, 그래픽 드라이버에 의해 프로그램가능한 등)될 수 있다는 것이다. 예를 들어, 제1 및 제2 밭갈이 패턴은 수직 및 수평, 수평 및 수직 등일 수 있다.
도 26은 본 발명의 일 실시예에 따른 GPU(110)의 내부 컴포넌트의 다이어그램(500)을 나타낸 것이다. 도 26에 나타낸 바와 같이, GPU(110)는 셋업 엔진(501) 및 래스터화기 유닛(502)을 포함한다. 본 실시예에서, 본 발명의 기능은 래스터화 기 유닛(502)의 하드웨어 및 소프트웨어 내에 구현된다. 일반적으로, 래스터화기 유닛(502)은 셋업 엔진(501)으로부터 수신되는 정점에 기초한 서술을 모서리 서술에 기초한 서술로 변환하는 기능을 한다. 그 다음에, 래스터화기 유닛(502)은 이들 모서리 서술을 실제의 픽셀 서술(예를 들어, 픽셀 영역, 픽셀 서브-샘플 등)을 구성하는 채워진 영역으로 변환한다. 그 다음에, 픽셀 서술은 추가의 처리 및 렌더링을 위해 GPU(110) 내의 다른 유닛으로 전달된다.
일 실시예에서, 래스터화기 유닛(502)은 소단위 래스터 컴포넌트(503) 및 대단위 래스터 컴포넌트(504)를 포함한다. 대단위 래스터 컴포넌트(504)는, 관심의 타일(예를 들어, 프리미티브에 의해 커버되는 타일)을 식별하기 위해 타일들의 그리드를 신속하게 검색하면서, 상기한 바와 같이 래스터화하는 타일 기반 밭갈이 패턴을 구현한다. 관심의 타일이 식별되면, 소단위 래스터 컴포넌트(503)는 프리미티브에 의해 커버되는 픽셀을 개별적으로 식별한다. 따라서, 이러한 실시예에서, 대단위 래스터 컴포넌트(504)는 타일들을 사용하여 픽셀들의 그리드를 신속하게 검색하고, 소단위 래스터 컴포넌트(503)는 대단위 래스터 컴포넌트(504)에 의해 생성되는 정보를 사용하고 프리미티브에 의해 커버되는 픽셀들을 개별적으로 식별함으로써 소단위 입도 래스터화를 구현한다. 이들 경우 둘다에서, 대단위 래스터 컴포넌트(504) 및 소단위 래스터 컴포넌트(503) 둘다는 그의 래스터화 동안에 하나 이상의 밭갈이 패턴(예를 들어, 내포된 또는 내포되지 않은 패턴)을 이용할 수 있다.
여전히 도 26을 참조하면, GPU(110)는 가장 빈번하게 사용되는 그래픽 렌더링 데이터에 대한 고속 저지연 저장을 구현하는 기능을 하는 캐쉬 메모리(521)를 더 포함한다. 이러한 데이터는 일반적으로 텍스처 정보, 정점 정보, 컬러 등을 포함한다. 캐쉬 메모리(521)는 로컬 그래픽 메모리(112)에 연결되어 있는 것으로 도시되어 있다. 캐쉬 메모리(521)는 로컬 그래픽 메모리(112)와의 일관성을 유지하기 위해 하나 이상의 캐쉬 유지 메카니즘을 이용한다. 화살표(540)는 GPU(110)와 시스템 메모리(예를 들어, 도 1에 나타낸 메모리(115)) 간의 통신 경로를 나타낸다. 시스템 메모리(115)와의 통신은 일반적으로 로컬 그래픽 메모리(112)와의 통신보다도 훨씬 더 느리다. 따라서, 본 발명의 실시예들의 메모리 액세스 국부화 속성은 생성되는 캐쉬 미스의 수를 최소화시킴으로써 로컬 그래픽 메모리(112)와 시스템 메모리(115)에 액세스하는 것에 의해 야기되는 불이익을 크게 감소시켰다.
간략한 요약으로서, 본 명세서는 이하의 것들에 대해 기술하고 있다.
개념 1. GPU(그래픽 프로세서 유닛)로서,
폴리곤 서술을 생성하는 셋업 유닛, 및
상기 셋업 유닛에 연결되어 있는, 상기 폴리곤 서술을 래스터화하는 래스터화기 유닛을 포함하며,
상기 래스터화기 유닛은 주축을 따라 제1 밭갈이 패턴을 사용하여 이미지의 복수의 픽셀을 순회하고 또, 상기 제1 밭갈이 패턴을 사용하는 순회 동안에, 제2 밭갈이 패턴을 사용하여 상기 이미지의 복수의 픽셀을 순회하도록 구성되어 있으며,
상기 제2 밭갈이 패턴은 상기 제1 밭갈이 패턴 내에 내포되어 있는 GPU.
개념 2. 개념 1에 있어서, 상기 제1 밭갈이 패턴 및 상기 제2 밭갈이 패턴은 상기 래스터 유닛 내의 대단위 래스터화기 컴포넌트에 의해 구현되는 GPU.
개념 3. 개념 1에 있어서, 상기 이미지의 복수의 픽셀은 타일로서 그룹화되어 있고, 상기 타일은 상기 제1 밭갈이 패턴 및 상기 제2 밭갈이 패턴을 사용하여 순회되는 GPU.
개념 4. 개념 3에 있어서, 타일당 픽셀의 수는 프로그램가능하고 정사각형 또는 직사각형의 픽셀 또는 서브픽셀 샘플 어레이로서 지정될 수 있는 GPU.
개념 5. 개념 3에 있어서, 타일당 픽셀의 수는 상기 GPU의 캐쉬 메모리의 크기에 따라 프로그램가능한 GPU.
개념 6. 개념 1에 있어서, 상기 제1 밭갈이 패턴의 주축은 프로그램가능한 GPU.
개념 7. 개념 6에 있어서, 상기 제1 밭갈이 패턴의 상기 주축은 수평축이고, 상기 제2 밭갈이 패턴은 수직축을 따라 있는 GPU.
개념 8. 개념 6에 있어서, 상기 제1 밭갈이 패턴의 상기 주축은 수직축이고, 상기 제2 밭갈이 패턴은 수평축을 따라 있는 GPU.
개념 9. 개념 6에 있어서, 상기 제2 밭갈이 패턴의 구성은 프로그램가능한 GPU.
개념 10. 개념 1에 있어서, 상기 제1 밭갈이 패턴 및 상기 제2 밭갈이 패턴은 캐쉬 메모리 액세스와 관련하여 국부성을 유지하도록 구성되어 있는 GPU.
개념 11. 개념 1에 있어서, 상기 제1 밭갈이 패턴 및 상기 제2 밭갈이 패턴 은 메모리에 액세스하기 위한 프리페치 프로세스에 맞게 정렬되도록 구성되어 있는 GPU.
개념 12. 개념 1에 있어서, 상기 제1 밭갈이 패턴 및 상기 제2 밭갈이 패턴은 상기 GPU에 연결된 프레임 버퍼 메모리의 메모리 뱅크 액세스와 관련하여 국부성을 유지하도록 구성되어 있는 GPU.
개념 13. GPU(그래픽 프로세서 유닛)로서,
폴리곤 서술을 생성하는 셋업 유닛,
상기 셋업 유닛에 연결되어 있는, 상기 폴리곤 서술을 래스터화하는 래스터화기 유닛, 및
상기 래스터 유닛 내의 대단위 래스터 컴포넌트를 포함하며,
상기 대단위 래스터 컴포넌트는 주축을 따라 제1 밭갈이 패턴을 사용하여 이미지의 복수의 픽셀을 순회하고, 상기 제1 밭갈이 패턴을 사용하는 상기 순회 동안에, 제2 밭갈이 패턴을 사용하여 상기 이미지의 복수의 픽셀을 순회하도록 구성되어 있으며,
상기 제2 밭갈이 패턴은 상기 제1 밭갈이 패턴 내에 내포되어 있고,
상기 이미지의 복수의 픽셀은 타일로서 그룹화되고, 상기 타일은 상기 제1 밭갈이 패턴 및 상기 제2 밭갈이 패턴을 사용하여 순회되는 GPU.
개념 14. 개념 13에 있어서, 타일당 픽셀의 수는 상기 GPU의 캐쉬 메모리의 크기에 따라 프로그램가능한 GPU.
개념 15. 개념 13에 있어서, 상기 제1 밭갈이 패턴의 주축은 프로그램가능한 GPU.
개념 16. 개념 15에 있어서, 상기 제1 밭갈이 패턴의 상기 주축은 수평축이고, 상기 제2 밭갈이 패턴은 수직축을 따라 있는 GPU.
개념 17. 개념 16에 있어서, 상기 제2 밭갈이 패턴의 구성은 프로그램가능한 GPU.
개념 18. 개념 13에 있어서, 상기 제1 밭갈이 패턴 및 상기 제2 밭갈이 패턴은 캐쉬 메모리 액세스와 관련하여 국부성을 유지하도록 구성되어 있는 GPU.
개념 19. 컴퓨터 시스템으로서,
시스템 메모리,
상기 시스템 메모리에 연결된 중앙 처리 장치,
상기 중앙 처리 장치에 통신 연결된 그래픽 프로세서 유닛,
상기 그래픽 프로세서 유닛 내에 있는, 폴리곤 서술을 생성하는 셋업 유닛,
상기 그래픽 프로세서 유닛 내에 있고 상기 셋업 유닛에 연결되어 있는, 상기 폴리곤 서술을 래스터화하는 래스터화기 유닛,
상기 래스터 유닛 내의 대단위 래스터 컴포넌트를 포함하며,
상기 대단위 래스터 컴포넌트는 주축을 따라 제1 밭갈이 패턴을 사용하여 이미지의 복수의 픽셀을 순회하고, 상기 제1 밭갈이 패턴을 사용하는 상기 순회 동안에, 제2 밭갈이 패턴을 사용하여 상기 이미지의 복수의 픽셀을 순회하도록 구성되어 있으며,
상기 제2 밭갈이 패턴은 상기 제1 밭갈이 패턴 내에 내포되어 있고,
상기 이미지의 복수의 픽셀은 타일로서 그룹화되고, 상기 타일은 상기 제1 밭갈이 패턴 및 상기 제2 밭갈이 패턴을 사용하여 순회되는 컴퓨터 시스템.
개념 20. 개념 19에 있어서, 타일당 픽셀의 수는 상기 GPU의 캐쉬 메모리의 크기에 따라 프로그램가능하고, 상기 제1 밭갈이 패턴의 구성 및 상기 제2 밭갈이 패턴의 구성은 프로그램가능한 컴퓨터 시스템.
이하에서는 그래픽 파이프라인의 래스터 스테이지에서 비직사각형 타일 그룹을 래스터화하는 방법에 대해 기술하고 있다.
기술 분야
본 발명은 일반적으로 하드웨어 가속 그래픽 컴퓨터 시스템에 관한 것이다. 본 발명은 적어도 그래픽 파이프라인의 래스터 스테이지에서의 비직사각형 타일 그룹을 래스터화하는 방법을 개시하고 있다.
배경 기술
최근의 컴퓨터 성능 향상은 그래픽 시스템이 퍼스널 컴퓨터, 홈 비디오 게임 컴퓨터, 핸드헬드 장치 등을 사용하여 더 현실적인 그래픽 이미지를 제공할 수 있게 해주었다. 이러한 그래픽 시스템에서, 그래픽 프리미티브(graphic primitive)를 시스템의 화면에 "렌더링(render)" 또는 드로잉(draw)하기 위해 다수의 프로시저(procedure)가 실행된다. "그래픽 프리미티브"는 정점, 폴리곤 등의 그래픽 화상의 기본 컴포넌트이다. 렌더링된 이미지는 이들 그래픽 프리미티브의 조합으로 형성된다. 3-D 그래픽 렌더링을 수행하기 위해 많은 프로시저가 이용될 수 있다.
그래픽 렌더링 프로시저를 실행하는 데 필요한 계산을 최적화하기 위해 전용의 그래픽 처리 유닛(예를 들어, GPU 등)이 개발되었다. GPU는 고속 연산을 하도록 구성되어 있으며, 일반적으로 하나 이상의 렌더링 파이프라인을 포함한다. 각각의 파이프라인은 그래픽 명령어/데이터의 고속 실행을 위해 최적화되어 있는 다수의 하드웨어-기반 기능 유닛을 포함하며, 여기서 이 명령어/데이터는 파이프라인의 프론트 엔드(front end)에 피드되고 계산된 결과는 파이프라인의 백엔드(back end)에 나타난다. GPU의 하드웨어-기반 기능 유닛, 캐쉬 메모리, 펌웨어 등은 하위-레벨 그래픽 프리미티브(예를 들어, "점", "선", "삼각형" 등을 포함함)를 처리하여 실시간 렌더링된 3-D 이미지를 생성하도록 최적화되어 있다.
래스터 디스플레이 기술(raster display technology)을 사용하여 실시간 렌더링된 3-D 이미지가 생성된다. 래스터 디스플레이 기술은 컴퓨터 그래픽 시스템에서 널리 사용되고 있으며, 일반적으로 이미지를 구성하고 있는 다수의 픽셀의 그리드가 그래픽 프리미티브에 의해 영향을 받는 메카니즘을 말한다. 각각의 프리미티브에 대해, 일반적인 래스터화 시스템은 일반적으로 픽셀마다 지나가면서, 프리미티브의 기여도에 따라, 주어진 픽셀을 프레임 버퍼 또는 픽셀 맵으로 "렌더링" 또는 기록해야 하는지 여부를 결정한다. 이것은 차례로 각각의 픽셀을 표현하는 데이터를 디스플레이 버퍼에 어떻게 기록해야 하는지를 결정한다.
주어진 3-D 장면을 구성하는 프리미티브들 내의 모든 픽셀들이 커버되도록 그래픽 프리미티브 기반 서술(graphic primitive based description)로부터 픽셀 기반 서술(pixel based description)로 계산(예를 들어, 프리미티브마다 픽셀 대 픽셀 래스터화)하기 위한 다양한 순회 알고리즘 및 다양한 래스터화 방법이 개발되었다. 예를 들어, 어떤 솔루션은 픽셀들을 단방향 방식으로 생성하는 것을 수반한다. 이러한 종래의 단방향 솔루션은 일정한 방향으로 행 단위로 픽셀을 생성하는 것을 수반한다. 이것은 그 시퀀스가 프리미티브의 반대쪽 측면 상의 위치에서 끝마칠 때 프리미티브를 가로질러 프리미티브의 제1 측면 상의 시작 위치로 천이할 것을 필요로 한다.
다른 종래의 방법은 디스플레이를 구성하는 픽셀들 각각을 정확하게 평가하고 어느 픽셀이 어느 프리미티브에 의해 커버되는지를 결정하기 위해 픽셀 단위 평가 기술을 이용하는 것을 수반한다. 픽셀 단위 평가는 어느 픽셀이 그래픽 프리미티브의 모서리와 접촉하는지/그 모서리에 의해 커버되는지를 결정하기 위해 디스플레이의 픽셀들에 걸쳐 스캐닝하는 것을 수반한다.
프리미티브가 그의 구성 픽셀로 래스터화되면, 이들 픽셀은 이어서 래스터화 스테이지에 후속하는 파이프라인 스테이지(이 스테이지에서 렌더링 동작이 수행됨)에서 처리된다. 일반적으로, 이들 렌더링 동작은 장면을 구성하는 프리미티브의 커버 정도(degree of coverage)에 따라 디스플레이의 픽셀들 각각에 컬러를 할당한다. 픽셀 단위 컬러는 또한 프리미티브에 할당된 텍스처 맵 정보, 조명 정보 등에 따라 결정된다.
그렇지만, 오늘날의 응용의 점점 더 복잡한 3-D 장면을 처리하기 위해 종래 기술의 3-D 렌더링 아키텍처를 확장시키는 데에는 문제가 있다. 컴퓨터 화면은 현 재 통상적으로 1920x1200 픽셀 또는 그 이상의 화면 해상도를 갖는다. 예를 들어, 클럭 속도를 증가시키는 등의 3-D 렌더링 성능을 향상시키는 종래의 방법은 전력 소모를 증가시키고 GPU 집적 회로 다이에 의해 발생되는 열을 증가시키는 등의 부정적인 부작용을 갖는다. GPU 연산의 병렬 실행을 위해 많은 수의 병렬 실행 유닛을 포함시키는 등의 성능을 향상시키기 위한 다른 방법은 집적 회로 다이 크기를 증가시키고, GPU 제조 프로세스의 수율을 떨어뜨리며, 전력 요건을 증대시키는 등의 부정적인 부작용을 갖는다.
따라서, 전력 소모의 증가 및/또는 제조 수율의 감소 등의 불이익을 야기함이 없이, 그래픽 응용이 부가의 성능을 제공할 필요가 있을 때 확장될 수 있는 래스터화 프로세스가 필요하다.
발명의 요약
본 발명의 실시예들은 전력 소모의 증가 및/또는 제조 수율의 감소 등의 불이익을 최소화하면서, 그래픽 응용이 부가의 성능을 제공할 필요가 있을 때 확장될 수 있는 래스터화 프로세스를 위한 방법 및 시스템을 제공한다.
일 실시예에서, 본 발명은 그래픽 파이프라인의 래스터 스테이지에서 비직사각형 타일 그룹을 래스터화하는 방법으로서 구현된다. 이 방법은 그래픽 프로세서 유닛(예를 들어, GPU)의 래스터 스테이지에서 래스터화하기 위한 그래픽 프리미티브를 수신하는 단계를 포함한다. 그래픽 프리미티브는 그래픽 프리미티브에 관련되어 있는 일련의 픽셀을 포함하는 비직사각형 풋프린트를 생성함으로써 제1 레벨에서 래스터화된다. 이어서, 그래픽 프리미티브는 일련의 픽셀에 액세스하고 그 일련의 픽셀 중에서 커버된 픽셀을 결정함으로써 제2 레벨에서 래스터화된다. 그 다음에, 래스터 스테이지는 GPU의 후속 스테이지에서 렌더링 동작을 위한 커버된 픽셀을 출력한다.
일 실시예에서, 제1 레벨에서의 래스터화 및 제2 레벨에서의 래스터화는 클럭 사이클 단위로 구현된다. 제1 레벨 래스터화가 대단위 래스터 유닛에서 구현되고 제2 레벨에서의 래스터화가 소단위 래스터 유닛에서 구현되도록 2 부분 래스터 스테이지가 구현될 수 있다.
일 실시예에서, 래스터 스테이지에 의해 색출되는 비직사각형 풋프린트는 그래픽 프리미티브의 형상에 따라 크기 조정가능하다. 예를 들어, 비직사각형 풋프린트가 커버된 픽셀의 수를 최적화하기 위해 가늘고 긴 삼각형(예를 들어, 스텐실 쉐도우 동작 등으로부터)에 대해 크기 조정될 때와 같이, 비직사각형 풋프린트는 풋프린트를 구성하는 커버된 픽셀의 수를 최적화하기 위해 크기 조정가능할 수 있다(예를 들어, x개의 타일 폭 × y개의 타일 길이).
상세한 설명
이제부터, 본 발명의 양호한 실시예들에 대해 상세히 언급할 것이며, 이들의 일례가 첨부 도면에 도시되어 있다. 본 발명이 양호한 실시예들과 관련하여 기술되지만, 이는 본 발명을 이들 실시예들로 한정하려는 것이 아님을 잘 알 것이다. 그와 반대로, 본 발명은 첨부된 청구항들에 의해 정의되는 본 발명의 정신 및 범위 내에 포함될 수 있는 대안, 수정 및 등가물을 포괄하는 것으로 보아야 한다. 게다가, 본 발명의 실시예들에 대한 이하의 상세한 설명에서, 본 발명의 철저한 이해를 제공하기 위해 수많은 구체적인 상세가 기술된다. 그렇지만, 당업자라면 본 발명이 이들 구체적인 상세 없이도 실시될 수 있다는 것을 잘 알 것이다. 다른 경우에, 본 발명의 실시예들의 태양들을 불필요하게 모호하게 하지 않도록 하기 위해 공지의 방법, 프로시저, 컴포넌트 및 회로는 상세히 기술되어 있지 않다.
표기법 및 용어:
이하의 상세한 설명의 어떤 부분은 프로시저, 단계, 논리 블록, 프로세싱, 및 컴퓨터 메모리 내의 데이터 비트에 대한 연산의 다른 기호 표현으로 제공되어 있다. 이들 설명 및 표현은 그의 연구의 요지를 다른 당업자에게 가장 효과적으로 전달하기 위해 데이터 처리 분야의 당업자에 의해 사용되는 수단이다. 프로시저, 컴퓨터 실행 단계, 논리 블록, 프로세스 등은 여기에서 일반적으로 원하는 결과를 가져오는 일관성있는 단계 또는 명령어 시퀀스인 것으로 생각된다. 이들 단계는 물리적 양의 물리적 처리를 필요로 하는 것이다. 통상적으로, 꼭 그러한 것은 아니지만, 이들 양은 컴퓨터 시스템에서 저장, 전송, 결합, 비교, 및 다른 방식으로 처리될 수 있는 전기 또는 자기 신호의 형태를 가질 수 있다. 주로 통상적으로 사용되기 때문에, 이들 신호를 비트, 값, 요소(elements), 심볼, 문자, 용어, 숫자 등으로 부르는 것이 때로는 편리하다는 것이 밝혀졌다.
그렇지만, 유의할 점은 이들 및 유사한 용어들 전부가 적절한 물리적 양과 연관되어 있고 이들 양에 적용되는 편리한 표식(label)에 불과하다는 것이다. 달리 구체적으로 언급하지 않는 한, 이하의 설명으로부터 명백한 바와 같이, 본 발명 전반에 걸쳐, "프로세싱" 또는 "액세스" 또는 "실행" 또는 "저장" 또는 "렌더링" 등의 용어를 이용한 설명이, 컴퓨터 시스템의 레지스터 및 메모리 내의 물리적(전자적) 양으로 표현된 데이터를 처리하여 컴퓨터 시스템 메모리 또는 레지스터 또는 다른 이러한 정보 저장, 전송 또는 디스플레이 장치 내의 물리적 양으로 유사하게 표현된 다른 데이터로 변환하는 컴퓨터 시스템(예를 들어, 도 1의 컴퓨터 시스템(100)) 또는 유사한 전자 컴퓨팅 장치의 동작 및 프로세스를 말한다는 것을 잘 알 것이다.
컴퓨터 시스템 플랫폼:
도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템(100)을 나타낸 것이다. 컴퓨터 시스템(100)은 어떤 하드웨어-기반 및 소프트웨어-기반 기능에 대한 실행 플랫폼을 제공하는, 본 발명의 실시예들에 따른 기본적인 컴퓨터 시스템의 컴포넌트를 나타낸 것이다. 일반적으로, 컴퓨터 시스템(100)은 적어도 하나의 CPU(101), 시스템 메모리(115), 및 적어도 하나의 그래픽 프로세서 유닛(GPU)(110)을 포함한다. CPU(101)는 브리지 컴포넌트/메모리 컨트롤러(도시 생략)를 통해 시스템 메모리(115)에 연결될 수 있거나, CPU(101) 내부에 있는 메모리 컨트롤러(도시 생략)를 통해 시스템 메모리(115)에 직접 연결될 수 있다. GPU(110)는 디스플레이(112)에 연결되어 있다. 그의 계산 능력을 더 향상시키기 위해 하나 이상의 부가적인 GPU가 선택적으로 시스템(100)에 연결될 수 있다. GPU(들)(110)는 CPU(101) 및 시스템 메모리(115)에 연결되어 있다. 시스템(100)은, 예를 들어, 전용의 그래픽 렌더링 GPU(110)에 연결된 강력한 범용 CPU(101)를 갖는, 데스크톱 컴퓨터 시스템 또는 서버 컴퓨터 시스템으로 구현될 수 있다. 이러한 실시예에서, 주변 버스, 특수 그 래픽 메모리, IO 장치 등을 부가하는 컴포넌트가 포함될 수 있다. 이와 유사하게, 시스템(100)은 핸드헬드 장치(예를 들어, 셀 전화 등) 또는, 예를 들어, 미국 와싱톤주 레드몬드 소재의 Microsoft Corporation부터 입수가능한 Xbox
Figure 112007045561361-pat00005
또는 일본 도쿄 소재의 Sony Computer Entertainment Corporation으로부터 입수가능한 PlayStation3
Figure 112007045561361-pat00006
등의 셋톱 비디오 게임 콘솔 장치로서 구현될 수 있다.
GPU(110)가 개별 컴포넌트, 커넥터를 통해 컴퓨터 시스템(100)에 연결되도록 설계된 개별 그래픽 카드(예를 들어, AGP 슬롯, PCI-Express 슬롯 등), 개별 집적 회로 다이(예를 들어, 마더보드 상에 직접 탑재됨), 또는 컴퓨터 시스템 칩셋 컴포넌트(도시 생략)의 집적 회로 다이 내에 포함되어 있는 통합 GPU로서 구현될 수 있다는 것을 잘 알 것이다. 게다가, 고대역폭 그래픽 데이터 저장을 위해 GPU(110)에 대한 로컬 그래픽 메모리(114)가 포함되어 있을 수 있다.
실시예:
본 발명의 실시예들은 그래픽 파이프라인의 래스터 스테이지에서 비직사각형 타일 그룹을 래스터화하는 방법 및 시스템을 구현한다. 일반적으로, 비직사각형 타일 그룹은, 예를 들어, 정사각형(예를 들어, 4x4, 8x8, 16x16 타일 등) 또는 직사각형(예를 들어, 4x8, 8x16 타일 등) 이외의 구성으로 되어 있다. 이 방법은 그래픽 프로세서(예를 들어, 도 1의 GPU(110))의 래스터 스테이지에서 래스터화하기 위한 그래픽 프리미티브를 수신하는 단계를 포함한다. 본 발명의 실시예들은 다중레벨 래스터화 프로세스를 구현할 수 있다.
일 실시예에서, 그래픽 프리미티브는 그래픽 프리미티브에 관련된 일련의 픽 셀을 포함하는 비직사각형 풋프린트(예를 들어, 프리미티브를 커버하는 타일 그룹)를 생성함으로써 제1 레벨에서 래스터화된다. 이어서, 그래픽 프리미티브는 일련의 픽셀(예를 들어, 프리미티브를 커버하는 타일 그룹)에 액세스하고 그 일련의 픽셀 중에서 커버된 픽셀을 결정함으로써 제2 레벨에서 래스터화된다. 예를 들어, 타일 그룹이 프리미티브를 커버할 수도 있지만, 각각의 타일을 구성하는 모든 픽셀이 그래픽 프리미티브를 커버하거나 그 안에 존재하지 않을 수 있다. 이 2 레벨 래스터화의 결과는 그래픽 프리미티브를 커버하거나 그 안에 존재하는 픽셀이다. 그 다음에, 래스터 스테이지는 그래픽 프로세서의 후속 스테이지에서의 렌더링 동작을 위해 커버된 픽셀을 출력한다.
도 2는 본 발명의 일 실시예에 따른, 픽셀들의 그리드가 밭갈이 패턴으로 래스터화되는 것을 나타낸 도면이다.
일 실시예에서, 도 2에 나타낸 바와 같이, GPU(110)의 래스터 스테이지는 그래픽 프리미티브를 순회하기 위해 밭갈이 패턴을 이용한다. 도 2에 나타낸 바와 같이, 밭갈이 패턴은 점선(221)으로 나타내어져 있다. 이러한 실시예에서, 픽셀들의 그리드의 각각의 픽셀 또는 픽셀 블록은 선(221)으로 나타낸 순서로 순회된다. 선(221)은 밭갈이 순회 패턴을 나타낸 것이며, 여기서 용어 "밭갈이(boustrophedonic)"는, 농부가 밭을 갈거나 밭의 풀을 베는 것과 아주 흡사하게, 각각의 순회가 직교축을 따라 아래쪽으로 이동하면서 한 축을 따라 앞뒤로 스캔함으로써 2D 영역 상의 모든 픽셀을 방문하는 순회 패턴을 말한다. 용어 밭갈이(boustrophedonic)는 일반적으로, 예를 들어, 밭에서처럼 "소가 밭을 가는 것처 럼"을 의미한다.
따라서, 도 2에 나타낸 바와 같이, 이 밭갈이(boustrophedonic) 래스터화는 주축을 따라 앞뒤로 접히는 S자 패턴을 말한다. 도 2의 예에서, 주축은 수평이다. 수평 밭갈이(boustrophedonic) 시퀀스는, 예를 들어, 한 행에서 좌측에서 우측으로 있는 프리미티브 삼각형 내의 모든 픽셀을 생성하고 그 다음 행에서는 우측에서 좌측으로 생성하며, 이하 마찬가지로 생성할 수 있다. 이러한 접힌 경로는 생성된 픽셀로부터 이전에 최근 생성된 픽셀까지의 평균 거리가 비교적 작도록 보장해준다.
여전히, 도 2를 참조하면, 큰 프리미티브(예를 들어, 삼각형 등)를 래스터화할 때 커버된 화면의 영역을 방문하기 위한 밭갈이(boustrophedonic) 패턴은 관련 데이터의 캐쉬를 유지하고 프레임 버퍼 및 텍스처 액세스를 위해 요구되는 메모리 요청을 감소시키는 이점이 있다. 예를 들어, 최근의 픽셀 그룹 및/또는 그의 대응하는 텍스처 값이 제한된 크기의 메모리(예를 들어, 캐쉬 메모리 등)에 유지될 때, 최근 생성된 픽셀 근방에 있는 픽셀을 생성하는 것이 중요하다.
밭갈이(boustrophedonic) 패턴 래스터화에 관한 부가적인 상세는 2005년 12월 15일자로 출원된 발명의 명칭이 "화면 영역을 순회하기 위해 내포된 밭갈이 패턴을 사용하도록 구성된 래스터 컴포넌트를 갖는 GPU(A GPU HAVING RASTER COMPONENTS CONFIGURED FOR USING NESTED BOUSTROPHEDONIC PATTERNS TO TRAVERSE SCREEN AREAS)"인 Franklin C. Crow 등의 미국 특허 출원 제11/304,904호에 기술되어 있으며, 이는 여기에 인용함으로써 그 전체 내용이 본 명세서에 포함된다.
유의할 점은 본 발명의 실시예들이 밭갈이 래스터화와 관련하여 기술되어 있지만, 다른 유형의 래스터화 패턴이 사용될 수 있다는 것이다. 예를 들어, 비직사각형 타일 그룹을 래스터화하는 본 명세서에 기술된 알고리즘 및 GPU 스테이지는 종래의 좌에서 우로의, 라인 단위의 래스터화 패턴에 용이하게 적용될 수 있다.
도 3은 본 발명의 일 실시예에 따른, GPU(110)의 래스터 유닛에 대한 래스터화 패턴(321)에 대해 삼각형 폴리곤(301)(예를 들어, 삼각형(301))을 나타낸 도면이다.
상기한 바와 같이, 라인(321)은 밭갈이 순회 패턴을 나타낸 것이며, 여기서 래스터 유닛은, 각각의 순회가 직교축을 따라 아래쪽으로 이동하면서 한 축을 따라 스캔함으로써, 삼각형(301)의 2D 영역의 모든 픽셀을 방문한다. 도 3의 실시예에서, 이 초기의 래스터화 패턴은 제1 레벨에서, 즉 대단위 래스터화 레벨(coarse rasterization level)에서 수행된다. GPU(110)의 대단위 래스터 유닛은 삼각형(301)을 순회하고 삼각형(301)을 커버하는 타일 그룹을 색출한다. 삼각형(301)이 타일 그룹의 크기와 비교하여 크고 대단위 래스터 유닛이 삼각형(301)의 내부에 있는 픽셀들을 잘 래스터화하는 경우에, 이들 타일 그룹은 대칭적(예를 들어, 정사각형, 직사각형 등)일 수 있다. 삼각형(301)이 타일 그룹의 크기와 비교하여 작고 대단위 래스터 유닛이 삼각형(301)의 가늘고 긴 점(예를 들어, 점(302)) 근방의 픽셀들을 래스터화하는 경우에, 이들 타일 그룹은 또한 직사각형이 아닐 수 있다. 일반적으로, 비직사각형 타일 그룹은, 예를 들어, 정사각형(예를 들어, 4x4, 8x8, 16x16 타일 등) 또는 직사각형(예를 들어, 4x8, 8x16 타일 등) 이외의 구성으로 되 어 있다. 본 명세서에서 사용되는 바와 같이, 유의할 점은 용어 "비직사각형 그룹"은 래스터 스테이지에서 래스터화되는 타일의 그룹이 직사각형 또는 정사각형 어레이로 제한되지 않는 속성을 말한다. 비직사각형 타일 그룹은 임의적인 배열로 되어 있을 수 있다. 예를 들어, 일 실시예에서, 비직사각형 타일 그룹은 심지어 서로 연속하지도 않은 타일을 포함할 수 있다.
도 4는 본 발명의 일 실시예에 따른, 제1 레벨 래스터화 프로세스에 의해 검사될 때 타일들의 그리드에 대해 삼각형(301)을 나타낸 도면이다. 도 4에서, 예시된 정사각형들 각각은 픽셀들(예를 들어, 8x8, 16x16 등)로 이루어진 타일을 나타낸다. 도 4는 제1 레벨 래스터화가, 예시적인 타일 그룹(401) 등의, 각각 4개의 타일로 이루어진 대단위 래스터화 타일 그룹을 생성하는 경우를 나타낸 것이다.
상기한 바와 같이, 일 실시예에서, 제1 레벨 래스터화는 그래픽 프리미티브에 관련된 일련의 픽셀을 포함하는 타일 그룹(예를 들어, 프리미티브를 커버하는 타일 그룹), 또는 풋프린트(예를 들어, 풋프린트(401))를 생성한다. 일반적으로, 제1 레벨 래스터화는 화면 영역의 어느 픽셀들이 주어진 그래픽 프리미티브에 관련되어 있는지를 신속하게 결정하기 위한 것이다. 따라서, 프리미티브에 관련되어 있는 픽셀들을 신속하게 찾아내기 위해 한번에 비교적 큰 픽셀 그룹(예를 들어, 타일)이 검사된다. 이 프로세스는 정찰에 비유될 수 있으며, 이에 의해 대단위 래스터 유닛은 화면 영역을 신속하게 스캔하고 삼각형(301)을 커버하는 타일 그룹을 찾아낸다. 따라서, 삼각형(301)에 관련되어 있는 픽셀들이, 단일 레벨의 래스터화를 이용하고 보다 소단위 입도로 한번에 훨씬 더 적은 수의 픽셀을 검사하는 종래 기 술의 프로세스보다 훨씬 더 신속하게 발견될 수 있다.
도 4의 실시예에서, 제1 레벨 래스터화는 4-타일 풋프린트(예를 들어, 풋프린트(401))를 이용하며, 이 경우 각각의 타일 그룹, 또는 풋프린트는 4개의 타일을 포함한다. 따라서, 제1 레벨 래스터화는 4-타일 풋프린트를 색출하며, 여기서 각각의 풋프린트는 삼각형(301)에 의해 커버된 적어도 하나의 픽셀을 갖는다. 따라서, 제1 레벨 래스터화는 대단위 래스터화라고 하는데, 그 이유는 큰 픽셀 그룹이 한번에 검사되기 때문이다.
도 5는 본 발명의 일 실시예에 따른 대단위 래스터 유닛에 의해 색출된 복수의 타일 그룹을 나타낸 도면이다. 예시적인 타일 그룹(501, 502)이 도시되어 있다.
도 5의 실시예는 삼각형(301)의 커버 정도를 최적화하기 위해 대단위 래스터 스테이지가 비직사각형 타일 그룹을 생성하는 방식을 나타낸 것이다. 상기한 바와 같이, 화면 영역의 어느 타일이 주어진 그래픽 프리미티브에 관련되어 있는지를 보다 효율적으로 결정하기 위해 비직사각형 풋프린트가 사용될 수 있다. 그래픽 프리미티브는 이어서 생성된 타일 그룹에 액세스하고 이들 타일 그룹 중에서 커버된 픽셀들을 결정함으로써 제2 레벨에서 래스터화된다. 예를 들어, 타일 그룹이 프리미티브를 커버하고 있을 수 있더라도, 각각의 타일을 구성하는 모든 픽셀이 그래픽 프리미티브를 커버하거나 그 안에 존재할 수 있는 것은 아니다.
도 5는 예시적인 비직사각형 타일 그룹(501, 502)을 나타낸 것이다. 타일 그룹 또는 풋프린트(501, 502)는 그의 구성 타일이 박스 또는 직사각형으로 배열되 어 있지 않다는 점에서 비직사각형이다. 풋프린트(501, 502)의 경우에, 그의 구성 타일은 도시된 바와 같이 "L자" 패턴으로 색출된다. 이 비직사각형 패턴은 풋프린트(501, 502) 내의 커버된 픽셀의 숫자를 최적화한다.
도 5는 또한 타일(511-518)을 나타내고 있다. 그의 커버 정도에 따라, 본 발명의 일 실시예에 따른 래스터 스테이지는 (예를 들어, 삼각형(301)의 상부 모서리를 따라) 타일(515-518)을 단일의 직사각형 타일 그룹으로 색출할 수 있고, (예를 들어, 삼각형(301)의 하부 모서리를 따라) 타일(511-514)을 유사한 직사각형 타일 그룹으로 색출할 수 있다. 이와 같이, 4개의 타일의 그룹은 대칭성에 상관없이 집합체로 모여질 수 있다. 집합체는 L-자형, 직선, 정사각형 등일 수 있다. 타일의 집합체의 크기는 집합체 내의 커버된 픽셀의 수를 최적화하기 위해 조정된다.
유의할 점은 제1 레벨 대단위 래스터화 프로세스에서 다른 수의 타일이 구현될 수 있다는 것이다. 예를 들어, 풋프린트마다 4개의 타일 대신에, 6개, 8개 또는 그 이상의 타일이 이용될 수 있다. 이러한 큰 풋프린트의 경우, 주어진 그래픽 프리미티브를 최상으로 커버하기 위해, 타일들은 다양한 서로 다른 형상으로 그리고 다양한 서로 다른 패턴으로 결합될 수 있다.
이와 같이, 래스터 스테이지에 의해 색출되는 비직사각형 풋프린트(예를 들어, 풋프린트(501))는 그래픽 프리미티브(예를 들어, 삼각형(301))의 형상에 따라 크기 조정가능하다. 예를 들어, 비직사각형 풋프린트는 풋프린트를 구성하는 커버된 픽셀의 수를 최적화하기 위해 크기 조정될 수 있다(예를 들어, x개의 타일 폭 × y개의 타일 길이). 이 속성은 렌더링되는 프리미티브가 예외적으로 길고 좁은 경우에 특히 유용하다. 이러한 길고 좁은 삼각형은, 예를 들어, 스텐실 쉐도우 알고리즘(stencil shadow algorithm) 등의 응용에서 흔히 있다. 예를 들어, 삼각형(301)이 아주 길고 좁은 삼각형인 경우, 대부분의 커버된 픽셀을 갖는 풋프린트를 색출하기 위해, 각각의 타일을 구성하는 픽셀의 수 및 풋프린트를 구성하는 파일의 수가 최적화될 수 있다. 이것은 삼각형의 점(예를 들어, 점(302)) 근방의 픽셀들을 래스터화할 때 특히 유용하다.
도 6은 본 발명의 일 실시예에 따른 제2 레벨 래스터화 프로세스를 사용하여 래스터화될 때의 풋프린트(501)를 나타낸 것이다. 상기한 바와 같이, 대단위 래스터화 이후에, 삼각형(301)은 풋프린트(501)의 일련의 픽셀(예를 들어, 타일 그룹(501)을 구성하는 픽셀들)에 액세스하고 이 일련의 픽셀 중에서 커버된 픽셀을 결정함으로써 제2 레벨에서 래스터화된다. 예를 들어, 풋프린트(501)가 삼각형(301)을 커버하고 있더라도, 각각의 타일을 구성하는 모든 픽셀이 그래픽 프리미티브를 커버하거나 그 안에 존재할 수 있는 것은 아니다.
제2 레벨 래스터화, 즉 소단위 래스터화는 이제 풋프린트(501)의 개개의 커버된 픽셀을 색출한다. 소단위 래스터화 프로세스는 풋프린트(501)를 구성하는 픽셀들을 검사하고 그 픽셀들 중 어느 것이 삼각형(301)에 의해 커버되는지를 결정한다. 이것이 도 6에서는 풋프린트(501)의 각각의 타일을 구성하는 16개 픽셀의 그리드로 나타내어져 있다. 각각의 타일의 16개 픽셀 각각은 삼각형(301)의 모서리에 대해 평가된다. 원하는 정확도에 따라, 이 평가에서 각각의 픽셀의 다수의 샘플점이 사용될 수 있다. 평가의 결과는 폴리곤(301)에 의해 커버되는 풋프린 트(501)의 픽셀들의 지정이다. 이어서, 커버된 픽셀은 GPU(110)의 후속 스테이지 내에서의 추가의 처리를 위해 래스터화 유닛으로부터 출력된다.
도 7은 본 발명의 일 실시예에 따른 GPU(110)의 내부 컴포넌트를 나타낸 도면이다. 도 7에 나타낸 바와 같이, GPU(110)는 셋업 엔진(setup engine)(701) 및 래스터화기 유닛(rasterizer unit)(702)을 포함한다. 본 실시예에서, 본 발명의 기능은 래스터화기 유닛(702)의 하드웨어 및 소프트웨어 내에서 구현된다. 일반적으로, 셋업 유닛(701)은 정점에 기초한 서술로부터 모서리 서술(edge description)에 기초한 서술로 변환하는 기능을 한다. 그 다음에, 래스터화기 유닛(702)은 이들 모서리 서술을 실제의 픽셀 서술(pixel description)(예를 들어, 픽셀 영역, 픽셀 서브-샘플 등)을 구성하는 채워진 영역들로 변환한다. 이어서, 픽셀 서술은 추가의 처리 및 렌더링을 위해 GPU(110) 내의 다른 유닛으로 전달된다.
본 실시예에서, 래스터화기 유닛(702)은 대단위 래스터 컴포넌트(coarse raster component)(703) 및 소단위 래스터 컴포넌트(fine raster component)(704)를 포함한다. 대단위 래스터 컴포넌트(703)는 상기한 바와 같이 비직사각형 타일 그룹 래스터화 프로세스를 구현하는데, 그 이유는 이 컴포넌트가 관심의 타일들(예를 들어, 프리미티브에 의해 커버되어 있는 타일들)을 식별하기 위해 타일들의 그리드를 신속하게 검색하기 때문이다. 관심의 타일 그룹들이 식별되면, 소단위 래스터 컴포넌트(704)는 프리미티브에 의해 커버되어 있는 픽셀들을 개별적으로 식별한다. 따라서, 이러한 실시예에서, 대단위 래스터 컴포넌트(703)는 타일들을 사용하여 픽셀들의 그리드를 신속하게 검색하고, 소단위 래스터 컴포넌트(704)는 대단 위 래스터 컴포넌트(703)에 의해 생성된 정보를 사용하여 프리미티브에 의해 커버된 픽셀들을 개별적으로 식별함으로써 소단위 입도 래스터화(fine granularity rasterization)를 구현한다. 이들 경우 둘다에서, 대단위 래스터 컴포넌트(703) 및 소단위 래스터 컴포넌트(704) 둘다는 그의 래스터화 동안에 하나 이상의 밭갈이 패턴을 이용할 수 있다.
여전히 도 7을 참조하면, GPU(110)는 가장 빈번하게 사용되는 그래픽 렌더링 데이터에 대한 고속 저지연 저장(high-speed low latency storage)을 구현하는 기능을 하는 캐쉬 메모리(721)를 더 포함한다. 이러한 데이터는 일반적으로 텍스처 정보, 정점 정보, 컬러 등을 포함한다. 캐쉬 메모리(721)는 로컬 그래픽 메모리(114)에 연결되어 있는 것으로 도시되어 있다. 캐쉬 메모리(721)는 로컬 그래픽 메모리(114)와의 일관성(coherency)을 유지하기 위해 하나 이상의 캐쉬 유지 메카니즘을 이용한다. 화살표(740)는 GPU(110)와 시스템 메모리(예를 들어, 도 1에 나타낸 메모리(115)) 간의 통신 경로를 나타낸다.
일 실시예에서, 래스터 유닛(702)을 구성하는 하드웨어는 클럭마다 동작하도록 최적화되어 있다. 예를 들어, 높은 처리 능력(throughput)을 제공하고 그에 의해 높은 렌더링 프레임 레이트를 유지하기 위해, 대단위 래스터 유닛(703) 및 소단위 래스터 유닛(704)은 제1 레벨 래스터화 및 제2 레벨 래스터화를 클럭 사이클 단위로 구현하도록 설계된 하드웨어를 포함한다. 래스터화기 유닛(702)은 제1 레벨 래스터화가 단일의 클럭 사이클 내에 주어진 프리미티브를 커버하는 타일 그룹(예를 들어, 비직사각형 타일 그룹을 포함함)을 "색출하는" 대단위 래스터 유닛(703) 에서 구현되도록 구현될 수 있다. 그 다음에, 제2 레벨에서의 래스터화는 단일 클럭 사이클 내에 타일 그룹의 커버된 픽셀들을 색출하는 소단위 래스터 컴포넌트(704)에서 구현된다. 따라서, 예를 들어, 클럭당 64 픽셀을 처리할 수 있는 하드웨어는 64 픽셀 풋프린트(예를 들어, 각각 16 픽셀인 4개의 타일)를 사용하는 반면, 클럭당 128 픽셀을 처리할 수 있는 하드웨어는 128 픽셀 풋프린트(예를 들어, 각각 16 픽셀인 8개의 타일, 각각 32 픽셀인 4개의 타일 등)를 사용한다. 상기한 바와 같이, 이들 타일은 다양한 서로 다른 집합체로 배열될 수 있다(예를 들어, 길고 좁은 풋프린트, 정사각형 풋프린트, 직사각형 풋프린트, 대각선 풋프린트, "L자"형 풋프린트 등).
간단한 요약으로서, 본 명세서는 이하의 것들에 대해 기술하고 있다.
개념 1. 그래픽 파이프라인의 래스터 스테이지에서, 비직사각형 타일 그룹을 래스터하는 방법으로서,
그래픽 프로세서의 래스터 스테이지에서 래스터화하기 위한 그래픽 프리미티브를 수신하는 단계,
상기 그래픽 프리미티브에 관련되어 있는 일련의 픽셀을 포함하는 비직사각형 풋프린트를 생성함으로써 제1 레벨에서 상기 그래픽 프리미티브를 래스터화하는 단계,
상기 일련의 픽셀에 액세스하고 상기 일련의 픽셀 중 커버된 픽셀을 결정함으로써 제2 레벨에서 상기 그래픽 프리미티브를 래스터화하는 단계, 및
상기 그래픽 프로세서의 후속 스테이지에서의 렌더링 동작을 위해 상기 커버된 픽셀을 출력하는 단계를 포함하는 방법.
개념 2. 개념 1에 있어서, 상기 제1 레벨에서 래스터화하는 단계는 클럭 사이클 단위로 구현되는 방법.
개념 3. 개념 1에 있어서, 상기 제2 레벨에서 래스터화하는 단계는 클럭 사이클 단위로 구현되는 방법.
개념 4. 개념 1에 있어서, 상기 제1 레벨에서 래스터화하는 단계는 대단위 래스터 유닛에서 구현되고, 상기 제2 레벨에서 래스터화하는 단계는 소단위 래스터 유닛에서 구현되는 방법.
개념 5. 개념 1에 있어서, 상기 대단위 래스터 유닛은 밭갈이 패턴을 사용하여 이미지의 복수의 픽셀을 순회하도록 구성되어 있는 방법.
개념 6. 개념 1에 있어서, 상기 비직사각형 풋프린트는 상기 그래픽 프리미티브의 형상에 따라 크기 조정가능한 방법.
개념 7. 개념 6에 있어서, 상기 비직사각형 풋프린트는 상기 비직사각형 풋프린트를 구성하는 일련의 픽셀 중에서 커버된 픽셀의 수를 최적화하기 위해 크기 조정가능한 방법.
개념 8. 개념 7에 있어서, 상기 비직사각형 풋프린트는 상기 비직사각형 풋프린트를 구성하는 커버된 픽셀의 수를 최적화하기 위해 가늘고 긴 삼각형 그래픽 프리미티브에 대해 크기 조정되는 방법.
개념 9. GPU(그래픽 프로세서 유닛)로서,
폴리곤 서술을 생성하는 셋업 유닛,
상기 셋업 유닛에 연결되어 있는, 상기 폴리곤 서술을 래스터화하는 래스터화기 유닛,
상기 래스터화기 유닛 내에 있는, 그래픽 프리미티브에 관련되어 있는 일련의 픽셀을 포함하는 비직사각형 풋프린트를 생성함으로써 제1 레벨에서 상기 그래픽 프리미티브를 래스터화하는 대단위 래스터 유닛, 및
상기 래스터화기 유닛 내에 있는, 상기 일련의 픽셀에 액세스하고 상기 일련의 픽셀 중에서 커버된 픽셀을 결정함으로써 제2 레벨에서 상기 그래픽 프리미티브를 래스터화하는 소단위 래스터 유닛을 포함하는 GPU.
개념 10. 개념 9에 있어서, 상기 제1 레벨에서 래스터화하는 동작은 클럭 사이클 단위로 구현되는 GPU.
개념 11. 개념 9에 있어서, 상기 제2 레벨에서 래스터화하는 동작은 클럭 사이클 단위로 구현되는 GPU.
개념 12. 개념 9에 있어서, 상기 제1 레벨에서 래스터화하는 동작은 대단위 래스터 유닛에서 구현되고, 상기 제2 레벨에서 래스터화하는 동작은 소단위 래스터 유닛에서 구현되는 GPU.
개념 13. 개념 9에 있어서, 상기 대단위 래스터 유닛은 밭갈이 패턴을 사용하여 이미지의 복수의 픽셀을 순회하도록 구성되어 있는 GPU.
개념 14. 개념 9에 있어서, 상기 비직사각형 풋프린트는 상기 그래픽 프리미티브의 형상에 따라 크기 조정가능한 GPU.
개념 15. 개념 14에 있어서, 상기 비직사각형 풋프린트는 상기 비직사각형 풋프린트를 구성하는 상기 일련의 픽셀 중에서 커버된 픽셀의 수를 최적화하기 위해 크기 조정가능한 GPU.
개념 16. 개념 15에 있어서, 상기 비직사각형 풋프린트는 상기 비직사각형 풋프린트를 구성하는 커버된 픽셀의 수를 최적화하기 위해 가늘고 긴 삼각형 그래픽 프리미티브에 대해 크기 조정되는 GPU.
개념 17. 컴퓨터 시스템으로서,
시스템 메모리,
상기 시스템 메모리에 연결되어 있는 중앙 처리 장치,
상기 중앙 처리 장치에 통신 연결되어 있는 그래픽 프로세서 유닛,
상기 그래픽 프로세서 유닛 내에 있는, 폴리곤 서술을 생성하는 셋업 유닛,
상기 그래픽 프로세서 유닛 내에 있고 상기 셋업 유닛에 연결되어 있는, 상기 폴리곤 서술을 래스터화하는 래스터화기 유닛, 및
상기 래스터화기 유닛 내에 있는 대단위 래스터 컴포넌트를 포함하며,
상기 대단위 래스터 컴포넌트는, 상기 셋업 유닛으로부터 래스터화하기 위한 그래픽 프리미티브를 수신하고, 상기 그래픽 프리미티브에 관련되어 있는 일련의 픽셀을 포함하는 비직사각형 풋프린트를 생성함으로써 제1 레벨에서 상기 그래픽 프리미티브를 래스터화하며, 상기 일련의 픽셀에 액세스하고 상기 일련의 픽셀 중 커버된 픽셀을 결정함으로써 제2 레벨에서 상기 그래픽 프리미티브를 래스터화하고, 상기 그래픽 프로세서 유닛의 후속 스테이지에서의 렌더링 동작을 위해 상기 커버된 픽셀을 출력하도록 구성되어 있는 컴퓨터 시스템.
개념 18. 개념 17에 있어서, 상기 제1 레벨에서 래스터화하는 동작 및 상기 제2 레벨에서 래스터화하는 동작은 클럭 사이클 단위로 구현되는 컴퓨터 시스템.
개념 19. 개념 17에 있어서, 상기 비직사각형 풋프린트는 상기 비직사각형 풋프린트를 구성하는 상기 일련의 픽셀 중에서 커버된 픽셀의 수를 최적화하기 위해 크기 조정가능한 컴퓨터 시스템.
개념 20. 개념 17에 있어서, 상기 비직사각형 풋프린트는 상기 비직사각형 풋프린트를 구성하는 커버된 픽셀의 수를 최적화하기 위해 가늘고 긴 삼각형 그래픽 프리미티브에 대해 크기 조정되는 컴퓨터 시스템.
대체로 말하여, 본 명세서는 병렬 소단위 래스터화 방법에 대해 기술하고 있다. 이 방법은 그래픽 프로세서의 래스터 스테이지에서 래스터화하기 위한 그래픽 프리미티브를 수신하는 단계를 포함한다. 그래픽 프리미티브는 복수의 픽셀 타일을 생성하기 위해 제1 레벨에서 래스터화될 수 있다. 이 타일은 그 다음에 커버된 픽셀을 생성하기 위해 그 타일을 병렬의 제2 레벨 래스터화 유닛의 어레이에 할당함으로써 제2 레벨에서 래스터화된다. 커버된 픽셀은 이어서 그래픽 프로세서의 후속 스테이지에서의 렌더링 동작을 위해 출력될 수 있다. 또한, 대체로 말하면, 본 명세서는 집적 회로 다이 내의 기능 컴포넌트의 동작 특성을 유연하게 변경함으로써 다이 수율의 향상을 용이하게 해주는 시스템 및 방법에 대해 기술하고 있다. 본 발명의 시스템 및 방법은 결함있는 기능 컴포넌트를 갖는 집적 회로 칩이 구제 될 수 있게 해줄 수 있다. 다이 내의 결함있는 기능 컴포넌트는 칩의 기본적인 기능을 유지하는 방식으로 디스에이블된다. 칩이 테스트되고 테스트의 결과에 기초하여 기능 컴포넌트 구성 프로세스가 수행될 수 있다. 결함있는 기능 컴포넌트의 표시가 수신되면, 그 기능 컴포넌트는 디스에이블된다. 작업 흐름은 디스에이블된 기능 컴포넌트로부터 인에이블된 기능 컴포넌트로 전환될 수 있다. 또한, 대체로 말하면, 본 명세서는 영역의 픽셀들을 순회하도록 구성된 GPU에 대해 기술하고 있다. GPU는 폴리곤 서술을 생성하는 셋업 유닛, 및 셋업 유닛에 연결되어 있는, 폴리곤 서술을 래스터화하는 래스터화기 유닛을 포함한다. 이 래스터화기 유닛은 주축을 따라 제1 밭갈이 패턴을 사용하여 이미지의 복수의 픽셀을 순회하고, 제1 밭갈이 패턴을 사용하는 순회 동안에, 제2 밭갈이 패턴을 사용하여 이미지의 복수의 픽셀을 순회하도록 구성되어 있을 수 있으며, 제2 밭갈이 패턴은 제1 밭갈이 패턴 내에 내포되어 있을 수 있다. 또한, 대체로 말하면, 본 명세서는 비직사각형 타일 그룹을 래스터화하는 방법에 대해 기술하고 있다. 이 방법은 그래픽 프로세서의 래스터 스테이지에서 래스터화하기 위한 그래픽 프리미티브를 수신하는 단계를 포함한다. 이 그래픽 프리미티브는 그래픽 프리미티브에 관련되어 있는 일련의 픽셀을 포함하는 비직사각형 풋프린트를 생성함으로써 제1 레벨에서 래스터화될 수 있다. 이어서, 그래픽 프리미티브는 일련의 픽셀에 액세스하고 일련의 픽셀 중에서 커버된 픽셀을 결정함으로써 제2 레벨에서 래스터화될 수 있다. 래스터 스테이지는 그 다음에 그래픽 프로세서의 후속 스테이지에서의 렌더링 동작을 위해 커버된 픽셀을 출력할 수 있다.
결론
본 발명의 특정 실시예에 대한 이상의 설명은 예시 및 설명을 위해 제공된 것이다. 이들은 총 망라한 것이나 본 발명을 개시된 구체적인 형태로 제한하려는 것이 아니며, 상기 개시 내용을 바탕으로 많은 수정 및 변형이 가능하다. 이들 실시예는 본 발명 및 그의 실제 응용의 원리를 가장 잘 설명하기 위해 선택되어 기술되었으며, 그에 따라 다른 당업자로 하여금 본 발명 및 생각되는 실제 사용에 적합한 여러가지 수정을 갖는 여러가지 실시예를 가장 잘 이용할 수 있게 해준다. 본 발명의 범위는 여기에 첨부된 청구항들 및 그의 등가물에 의해 정의되는 것으로 보아야 한다.
본 발명에 따르면, 전력 소모의 증가 및/또는 제조 수율의 감소 등의 불이익을 야기함이 없이, 그래픽 애플리케이션이 부가의 성능을 제공할 필요가 있을 때 확장될 수 있는 래스터화 프로세스가 제공된다.

Claims (22)

  1. GPU(그래픽 프로세서 유닛)으로서,
    폴리곤 서술들(polygon descriptions)을 생성하는 셋업 유닛,
    상기 셋업 유닛에 연결되어, 상기 폴리곤 서술들을 래스터화하는 래스터화기 유닛,
    상기 래스터화기 유닛 내에 있고, 그래픽 프리미티브에 관련되는 픽셀들의 세트를 포함하는 비직사각형 풋프린트(non-rectangular footprint)를 생성함으로써 제1 레벨에서 상기 그래픽 프리미티브를 래스터화하는 대단위 래스터 유닛(coarse raster unit), 및
    상기 래스터화기 유닛 내에 있고, 상기 픽셀들의 세트를 액세스하고 상기 픽셀들의 세트 중에서 상기 그래픽 프리미티브에 의해 커버된 픽셀들을 결정함으로써 제2 레벨에서 상기 그래픽 프리미티브를 래스터화하는 소단위 래스터 유닛(fine raster unit)
    을 포함하는 GPU.
  2. 제1항에 있어서, 상기 제1 레벨에서 상기 그래픽 프리미티브를 래스터화하는 동작은 상기 래스터화기 유닛의 클럭 사이클 단위 기반으로 구현되는 GPU.
  3. 제1항에 있어서, 상기 제2 레벨에서 상기 그래픽 프리미티브를 래스터화하는 동작은 상기 래스터화기 유닛의 클럭 사이클 단위 기반으로 구현되는 GPU.
  4. 제1항에 있어서, 상기 제1 레벨에서 상기 그래픽 프리미티브를 래스터화하는 동작은 대단위 래스터 유닛에서 구현되고, 상기 제2 레벨에서 상기 그래픽 프리미티브를 래스터화하는 동작은 소단위 래스터 유닛에서 구현되는 GPU.
  5. 제1항에 있어서, 상기 대단위 래스터 유닛은 밭갈이 패턴(a boustrophedonic pattern)을 사용하여 이미지의 복수의 픽셀을 순회하도록 구성되어 있는 GPU.
  6. 제1항에 있어서, 상기 비직사각형 풋프린트는 상기 그래픽 프리미티브의 형상에 따라 크기 조정가능한 GPU.
  7. 제6항에 있어서, 상기 비직사각형 풋프린트는, 상기 비직사각형 풋프린트를 구성하는 상기 픽셀들의 세트 중에서 상기 그래픽 프리미티브에 의해 커버된 픽셀들의 수를 최적화하기 위해 크기 조정가능한 GPU.
  8. 제7항에 있어서, 상기 비직사각형 풋프린트는 상기 비직사각형 풋프린트를 구성하는, 상기 그래픽 프리미티브에 의해 커버된 픽셀들의 수를 최적화하기 위해 가늘고 긴 삼각형 그래픽 프리미티브에 대해 크기 조정되는 GPU.
  9. 컴퓨터 시스템으로서,
    시스템 메모리,
    상기 시스템 메모리에 연결되는 중앙 처리 장치,
    상기 중앙 처리 장치에 통신 가능하게 연결되는 그래픽 프로세서 유닛,
    상기 그래픽 프로세서 유닛 내에 있고, 폴리곤 서술들을 생성하는 셋업 유닛,
    상기 그래픽 프로세서 유닛 내에 있고 상기 셋업 유닛에 연결되어, 상기 폴리곤 서술들을 래스터화하는 래스터화기 유닛, 및
    상기 래스터화기 유닛 내에 있는 대단위 래스터 컴포넌트를 포함하며,
    상기 대단위 래스터 컴포넌트는, 상기 셋업 유닛으로부터 래스터화하기 위한 그래픽 프리미티브를 수신하고, 상기 그래픽 프리미티브에 관련되는 픽셀들의 세트를 포함하는 비직사각형 풋프린트를 생성함으로써 제1 레벨에서 상기 그래픽 프리미티브를 래스터화하며, 상기 픽셀들의 세트를 액세스하고 상기 픽셀들의 세트 중 상기 그래픽 프리미티브에 의해 커버된 픽셀들을 결정함으로써 제2 레벨에서 상기 그래픽 프리미티브를 래스터화하고, 상기 그래픽 프로세서 유닛의 후속 스테이지에서의 렌더링 동작을 위해 상기 그래픽 프리미티브에 의해 커버된 픽셀들을 출력하도록 구성되는 컴퓨터 시스템.
  10. 제9항에 있어서, 상기 제1 레벨에서 상기 그래픽 프리미티브를 래스터화하는 동작 및 상기 제2 레벨에서 상기 그래픽 프리미티브를 래스터화하는 동작은 상기 래스터화기 유닛의 클럭 사이클 단위 기반으로 구현되는 컴퓨터 시스템.
  11. 제9항에 있어서, 상기 비직사각형 풋프린트는 상기 비직사각형 풋프린트를 구성하는 상기 픽셀들의 세트 중에서 상기 그래픽 프리미티브에 의해 커버된 픽셀들의 수를 최적화하기 위해 크기 조정가능한 컴퓨터 시스템.
  12. 제9항에 있어서, 상기 비직사각형 풋프린트는 상기 비직사각형 풋프린트를 구성하는, 상기 그래픽 프리미티브에 의해 커버된 픽셀들의 수를 최적화하기 위해 가늘고 긴 삼각형 그래픽 프리미티브에 대해 크기 조정되는 컴퓨터 시스템.
  13. GPU(그래픽 프로세서 유닛)로서,
    폴리곤 서술들(polygon descriptions)을 생성하는 셋업 유닛,
    상기 셋업 유닛에 연결되어, 상기 폴리곤 서술들을 래스터화하는 래스터화기 유닛,
    상기 래스터화기 유닛 내에 있고, 그래픽 프리미티브와 관련된 복수의 픽셀 타일(a plurality of tiles of pixels)을 생성함으로써 상기 그래픽 프리미티브를 제1 레벨에서 래스터화하는 대단위 래스터 유닛(coarse raster unit), 및
    상기 래스터화기 유닛 내에 있고, 상기 타일들을 제2 레벨에서 래스터화하는 병렬의 소단위 래스터 유닛들(fine raster units)의 어레이를 포함하며,
    상기 타일들은 상기 그래픽 프리미티브에 의해 커버된 픽셀들을 생성하기 위해 상기 병렬의 소단위 래스터 유닛들에 할당되고, 상기 그래픽 프리미티브에 의해 커버된 픽셀들은 상기 GPU의 후속 스테이지에서의 렌더링 동작을 위해 출력되는 GPU.
  14. 제13항에 있어서, 상기 제1 레벨에서 상기 그래픽 프리미티브를 래스터화하는 동작은 상기 래스터화기 유닛의 클럭 사이클 단위 기반으로 구현되는 GPU.
  15. 제13항에 있어서, 상기 어레이를 사용하여 상기 제2 레벨에서 상기 그래픽 프리미티브를 래스터화하는 동작은 상기 래스터화기 유닛의 클럭 사이클 단위 기반으로 구현되는 GPU.
  16. 제13항에 있어서, 상기 병렬의 소단위 래스터 유닛들의 어레이는 선택적인 기능 컴포넌트 비활성화가 가능한 GPU.
  17. 제13항에 있어서, 상기 병렬의 소단위 래스터 유닛들 간에 작업 부하를 평형화하도록 상기 복수의 타일이 상기 병렬의 소단위 래스터 유닛들의 어레이에 할당되는 GPU.
  18. 제13항에 있어서, 상기 병렬의 소단위 래스터 유닛들 중 적어도 하나는 비활성화되어 있는 GPU.
  19. 제13항에 있어서, 상기 병렬의 소단위 래스터 유닛들 중 적어도 하나는 여분의 제2 레벨 래스터화 능력을 제공하는 여분의 래스터 유닛인 GPU.
  20. 컴퓨터 시스템으로서,
    시스템 메모리,
    상기 시스템 메모리에 연결된 중앙 처리 장치,
    상기 중앙 처리 장치에 통신 가능하게 연결되어 있는 그래픽 프로세서 유닛(GPU),
    상기 그래픽 프로세서 유닛 내에 있고, 폴리곤 서술들을 생성하는 셋업 유닛,
    상기 그래픽 프로세서 유닛 내에 있고 상기 셋업 유닛에 연결되어, 상기 폴리곤 서술들을 래스터화하는 래스터화기 유닛,
    상기 래스터화기 유닛 내에 있고, 그래픽 프리미티브에 관련된 복수의 픽셀 타일을 생성함으로써 상기 그래픽 프리미티브를 제1 레벨에서 래스터화하는 대단위 래스터 유닛, 및
    상기 래스터화기 유닛 내에 있고, 상기 타일들을 제2 레벨에서 래스터화하는 병렬의 소단위 래스터 유닛들의 어레이를 포함하며,
    상기 타일들은 상기 그래픽 프리미티브에 의해 커버된 픽셀들을 생성하기 위해 상기 병렬의 소단위 래스터 유닛들에 할당되고, 상기 그래픽 프리미티브에 의해 커버된 픽셀들은 상기 GPU의 후속 스테이지에서의 렌더링 동작을 위해 출력되는 컴퓨터 시스템.
  21. 제20항에 있어서, 상기 제1 레벨에서 상기 그래픽 프리미티브를 래스터화하는 동작 및 상기 제2 레벨에서 상기 그래픽 프리미티브를 래스터화하는 동작은 상기 래스터화기 유닛의 클럭 사이클 단위 기반으로 구현되는 컴퓨터 시스템.
  22. 제20항에 있어서, 상기 병렬의 소단위 래스터 유닛들의 어레이는 선택적인 기능 컴포넌트 활성화/비할성화가 가능한 컴퓨터 시스템.
KR1020070061778A 2006-06-23 2007-06-22 래스터화 방법 및 시스템 KR100885875B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/474,027 2006-06-23
US11/474,027 US8928676B2 (en) 2006-06-23 2006-06-23 Method for parallel fine rasterization in a raster stage of a graphics pipeline

Publications (2)

Publication Number Publication Date
KR20070122172A KR20070122172A (ko) 2007-12-28
KR100885875B1 true KR100885875B1 (ko) 2009-02-26

Family

ID=38873121

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070061778A KR100885875B1 (ko) 2006-06-23 2007-06-22 래스터화 방법 및 시스템

Country Status (4)

Country Link
US (1) US8928676B2 (ko)
KR (1) KR100885875B1 (ko)
CN (1) CN101093578B (ko)
TW (1) TWI350987B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9741155B2 (en) 2014-02-12 2017-08-22 Samsung Electronics Co., Ltd. Apparatus and method for tile-based graphic data rendering

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8692844B1 (en) 2000-09-28 2014-04-08 Nvidia Corporation Method and system for efficient antialiased rendering
US8732644B1 (en) 2003-09-15 2014-05-20 Nvidia Corporation Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits
US8775997B2 (en) 2003-09-15 2014-07-08 Nvidia Corporation System and method for testing and configuring semiconductor functional circuits
US8788996B2 (en) 2003-09-15 2014-07-22 Nvidia Corporation System and method for configuring semiconductor functional circuits
US8711161B1 (en) 2003-12-18 2014-04-29 Nvidia Corporation Functional component compensation reconfiguration system and method
US7450120B1 (en) 2003-12-19 2008-11-11 Nvidia Corporation Apparatus, system, and method for Z-culling
US8723231B1 (en) 2004-09-15 2014-05-13 Nvidia Corporation Semiconductor die micro electro-mechanical switch management system and method
US8711156B1 (en) 2004-09-30 2014-04-29 Nvidia Corporation Method and system for remapping processing elements in a pipeline of a graphics processing unit
US8427496B1 (en) 2005-05-13 2013-04-23 Nvidia Corporation Method and system for implementing compression across a graphics bus interconnect
US8698811B1 (en) 2005-12-15 2014-04-15 Nvidia Corporation Nested boustrophedonic patterns for rasterization
US9123173B2 (en) * 2005-12-15 2015-09-01 Nvidia Corporation Method for rasterizing non-rectangular tile groups in a raster stage of a graphics pipeline
US8390645B1 (en) 2005-12-19 2013-03-05 Nvidia Corporation Method and system for rendering connecting antialiased line segments
US9117309B1 (en) 2005-12-19 2015-08-25 Nvidia Corporation Method and system for rendering polygons with a bounding box in a graphics processor unit
US8928676B2 (en) 2006-06-23 2015-01-06 Nvidia Corporation Method for parallel fine rasterization in a raster stage of a graphics pipeline
US9070213B2 (en) * 2006-07-26 2015-06-30 Nvidia Corporation Tile based precision rasterization in a graphics pipeline
US7843468B2 (en) 2006-07-26 2010-11-30 Nvidia Corporation Accellerated start tile search
US8085264B1 (en) 2006-07-26 2011-12-27 Nvidia Corporation Tile output using multiple queue output buffering in a raster stage
US7940266B2 (en) * 2006-10-13 2011-05-10 International Business Machines Corporation Dynamic reallocation of processing cores for balanced ray tracing graphics workload
US8237738B1 (en) 2006-11-02 2012-08-07 Nvidia Corporation Smooth rasterization of polygonal graphics primitives
US8427487B1 (en) * 2006-11-02 2013-04-23 Nvidia Corporation Multiple tile output using interface compression in a raster stage
US8482567B1 (en) 2006-11-03 2013-07-09 Nvidia Corporation Line rasterization techniques
US8724483B2 (en) 2007-10-22 2014-05-13 Nvidia Corporation Loopback configuration for bi-directional interfaces
US9064333B2 (en) 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8780123B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
TWI399702B (zh) * 2008-04-18 2013-06-21 Hon Hai Prec Ind Co Ltd 三維路徑繪製系統及方法
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8698818B2 (en) * 2008-05-15 2014-04-15 Microsoft Corporation Software rasterization optimization
CN101625753B (zh) * 2008-07-10 2012-11-21 辉达公司 图形处理中的光栅及光栅化方法
US20110063306A1 (en) 2009-09-16 2011-03-17 Nvidia Corporation CO-PROCESSING TECHNIQUES ON HETEROGENEOUS GPUs INCLUDING IDENTIFYING ONE GPU AS A NON-GRAPHICS DEVICE
KR20110089649A (ko) * 2010-02-01 2011-08-09 삼성전자주식회사 병렬 연산 처리 방법 및 장치
US9331869B2 (en) 2010-03-04 2016-05-03 Nvidia Corporation Input/output request packet handling techniques by a device specific kernel mode driver
AU2010202390B2 (en) * 2010-06-08 2013-08-29 Canon Kabushiki Kaisha Rasterising disjoint regions of a page in parallel
US9183651B2 (en) 2010-10-06 2015-11-10 Microsoft Technology Licensing, Llc Target independent rasterization
US9171350B2 (en) 2010-10-28 2015-10-27 Nvidia Corporation Adaptive resolution DGPU rendering to provide constant framerate with free IGPU scale up
US8860742B2 (en) 2011-05-02 2014-10-14 Nvidia Corporation Coverage caching
AU2011202508B2 (en) * 2011-05-27 2013-05-16 Canon Kabushiki Kaisha Method, apparatus and system for rendering an object on a page
US9019280B2 (en) * 2011-07-22 2015-04-28 Qualcomm Incorporated Area-based rasterization techniques for a graphics processing system
US9495781B2 (en) * 2012-06-21 2016-11-15 Nvidia Corporation Early sample evaluation during coarse rasterization
CN102831634B (zh) * 2012-08-16 2015-04-29 北京航空航天大学 一种高效精确的通用软阴影生成方法
US9218679B2 (en) * 2012-10-08 2015-12-22 Intel Corporation Reduced bitcount polygon rasterization
US9607407B2 (en) 2012-12-31 2017-03-28 Nvidia Corporation Variable-width differential memory compression
US9591309B2 (en) 2012-12-31 2017-03-07 Nvidia Corporation Progressive lossy memory compression
US9947084B2 (en) * 2013-03-08 2018-04-17 Nvidia Corporation Multiresolution consistent rasterization
US9478066B2 (en) * 2013-03-14 2016-10-25 Nvidia Corporation Consistent vertex snapping for variable resolution rendering
US9286659B2 (en) 2013-03-15 2016-03-15 Nvidia Corporation Multi-sample surface processing using sample subsets
US9262797B2 (en) 2013-03-15 2016-02-16 Nvidia Corporation Multi-sample surface processing using one sample
US10957094B2 (en) 2013-03-29 2021-03-23 Advanced Micro Devices, Inc. Hybrid render with preferred primitive batch binning and sorting
US10169906B2 (en) 2013-03-29 2019-01-01 Advanced Micro Devices, Inc. Hybrid render with deferred primitive batch binning
US9710894B2 (en) 2013-06-04 2017-07-18 Nvidia Corporation System and method for enhanced multi-sample anti-aliasing
US9665958B2 (en) * 2013-08-26 2017-05-30 Nvidia Corporation System, method, and computer program product for redistributing a multi-sample processing workload between threads
GB2520365B (en) * 2013-12-13 2015-12-09 Imagination Tech Ltd Primitive processing in a graphics processing system
US9448982B2 (en) * 2014-01-29 2016-09-20 Konica Minolta Laboratory U.S.A., Inc. Immediate independent rasterization
US9418471B2 (en) * 2014-03-18 2016-08-16 Intel Corporation Compact depth plane representation for sort last architectures
US9436972B2 (en) * 2014-03-27 2016-09-06 Intel Corporation System coherency in a distributed graphics processor hierarchy
CN104408759A (zh) * 2014-11-19 2015-03-11 江苏影速光电技术有限公司 一种用于数字微镜显示的矢量图形栅格化方法
CN105183562B (zh) * 2015-09-09 2018-09-11 合肥芯碁微电子装备有限公司 一种基于cuda技术对栅格化数据进行抽阶的方法
CN109643460B (zh) * 2016-08-29 2023-08-15 超威半导体公司 使用推迟图元批量合并和分类的混合渲染器
JP6808414B2 (ja) * 2016-09-21 2021-01-06 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
CN106709859B (zh) * 2016-12-12 2020-04-07 中国航空工业集团公司西安航空计算技术研究所 一种图形处理器光栅化单元的自适应低功耗时钟门控结构
US10204394B2 (en) 2017-04-10 2019-02-12 Intel Corporation Multi-frame renderer
GB2561557B (en) * 2017-04-13 2020-08-12 Advanced Risc Mach Ltd Graphics processing method and apparatus in which modified edge positions are used in rasterisation
CN107464274B (zh) * 2017-08-07 2020-07-07 苏州速显微电子科技有限公司 一种基于四边形纹理单元的快速光栅化硬件实现方法
US10388060B2 (en) * 2017-08-28 2019-08-20 Futurewei Technologies, Inc. System and method for multi-view rendering
CN108022201B (zh) * 2017-11-24 2021-09-14 中国航空工业集团公司西安航空计算技术研究所 一种三角形图元并行光栅化定序方法
CN108009978B (zh) * 2017-11-24 2021-04-20 中国航空工业集团公司西安航空计算技术研究所 一种非阻塞并行三角形光栅化单元结构
US11043028B2 (en) * 2018-11-02 2021-06-22 Nvidia Corporation Reducing level of detail of a polygon mesh to decrease a complexity of rendered geometry within a scene
US11972518B2 (en) * 2020-01-20 2024-04-30 Advanced Micro Devices, Inc. Hybrid binning
US11538221B2 (en) * 2020-05-21 2022-12-27 Samsung Electronics Co., Ltd. Re-reference aware tile walk order for primitive binner
CN114153409B (zh) * 2021-11-26 2023-12-08 珠海格力电器股份有限公司 光栅操作电路、装置、显示控制系统及显示装置
US20230377086A1 (en) * 2022-05-18 2023-11-23 Advanced Micro Devices, Inc. Pipeline delay elimination with parallel two level primitive batch binning

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06215143A (ja) * 1992-11-30 1994-08-05 Internatl Business Mach Corp <Ibm> グラフィックス・オブジェクト表現方法と装置
JPH0729020A (ja) * 1993-07-13 1995-01-31 Omron Corp グラフィック並列処理装置および方法
JPH09231385A (ja) * 1996-01-26 1997-09-05 Internatl Business Mach Corp <Ibm> オブジェクトのラスタ化方法及び装置

Family Cites Families (144)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4208810A (en) * 1978-09-11 1980-06-24 The Singer Company Clipping polygon faces through a polyhedron of vision
US4918626A (en) * 1987-12-09 1990-04-17 Evans & Sutherland Computer Corp. Computer graphics priority system with antialiasing
US5081594A (en) * 1989-01-31 1992-01-14 Kroy Inc. Real-time rasterization system for a column-oriented printing apparatus or the like
DE69032932T2 (de) * 1989-11-17 1999-09-16 Digital Equipment Corp System und Verfahren zum unverfälschten Polygonenzeichnen
JPH0683969A (ja) * 1990-11-15 1994-03-25 Internatl Business Mach Corp <Ibm> グラフィックス・プロセッサ及びグラフィックス・データ処理方法
ES2110504T3 (es) * 1991-06-04 1998-02-16 Qualcomm Inc Sistema de compresion de imagenes por dimensionado autoadaptivo de bloques.
US5303334A (en) 1992-03-05 1994-04-12 Adobe Systems Incorporated System for generating a rasterized graphic image
US5446836A (en) * 1992-10-30 1995-08-29 Seiko Epson Corporation Polygon rasterization
US5570463A (en) * 1993-01-06 1996-10-29 Compaq Computer Corporation Bresenham/DDA line draw circuitry
US5313287A (en) * 1993-04-30 1994-05-17 Hewlett-Packard Company Imposed weight matrix error diffusion halftoning of image data
GB2278524B (en) * 1993-05-28 1997-12-10 Nihon Unisys Ltd Method and apparatus for rendering visual images employing area calculation and blending of fractional pixel lists for anti-aliasing and transparency
US5684939A (en) * 1993-07-09 1997-11-04 Silicon Graphics, Inc. Antialiased imaging with improved pixel supersampling
US5432898A (en) * 1993-09-20 1995-07-11 International Business Machines Corporation System and method for producing anti-aliased lines
US5483258A (en) * 1993-12-10 1996-01-09 International Business Machines Corporation Pick correlation
US5664162A (en) * 1994-05-23 1997-09-02 Cirrus Logic, Inc. Graphics accelerator with dual memory controllers
US5633297A (en) * 1994-11-04 1997-05-27 Ppg Industries, Inc. Cationic resin containing capped isocyanate groups suitable for use in electrodeposition
US5543935A (en) * 1994-11-18 1996-08-06 Xerox Corporation Halftoning method using space filling curves
US5594854A (en) * 1995-03-24 1997-01-14 3Dlabs Inc. Ltd. Graphics subsystem with coarse subpixel correction
US5623692A (en) * 1995-05-15 1997-04-22 Nvidia Corporation Architecture for providing input/output operations in a computer system
DE69628451D1 (de) * 1995-07-26 2003-07-03 Apple Computer Verfahren zur zeilendarstellung durch sortieren von segmenten und untersegmenten
US5854637A (en) * 1995-08-17 1998-12-29 Intel Corporation Method and apparatus for managing access to a computer system memory shared by a graphics controller and a memory controller
US5854631A (en) * 1995-11-22 1998-12-29 Silicon Graphics, Inc. System and method for merging pixel fragments based on depth range values
US5815162A (en) * 1996-04-19 1998-09-29 Silicon Graphics, Inc. System and method of drawing anti-aliased lines using a modified bresenham line-drawing algorithm
US6104417A (en) * 1996-09-13 2000-08-15 Silicon Graphics, Inc. Unified memory computer architecture with dynamic graphics memory allocation
US6115049A (en) * 1996-09-30 2000-09-05 Apple Computer, Inc. Method and apparatus for high performance antialiasing which minimizes per pixel storage and object data bandwidth
US6160557A (en) * 1996-10-17 2000-12-12 International Business Machines Corporation Method and apparatus providing efficient rasterization with data dependent adaptations
JP2915363B2 (ja) 1996-11-05 1999-07-05 核燃料サイクル開発機構 空間探索システム
TW369746B (en) * 1996-11-13 1999-09-11 Sanyo Electric Co Surround circuit
US6697063B1 (en) * 1997-01-03 2004-02-24 Nvidia U.S. Investment Company Rendering pipeline
US6034699A (en) * 1997-05-01 2000-03-07 Ati Technologies, Inc. Rendering polygons
US6028608A (en) * 1997-05-09 2000-02-22 Jenkins; Barry System and method of perception-based image generation and encoding
US6249853B1 (en) * 1997-06-25 2001-06-19 Micron Electronics, Inc. GART and PTES defined by configuration registers
WO1999006955A1 (fr) * 1997-08-04 1999-02-11 Sony Corporation Dispositif et procede permettant de traiter des donnees-image, et support de transmission
US6104407A (en) * 1997-09-23 2000-08-15 Ati Technologies, Inc. Method and apparatus for processing fragment pixel information in a three-dimensional graphics processing system
US6201545B1 (en) * 1997-09-23 2001-03-13 Ati Technologies, Inc. Method and apparatus for generating sub pixel masks in a three dimensional graphic processing system
US6160559A (en) * 1997-09-30 2000-12-12 Intel Corporation Method and apparatus for providing frame-time feedback to graphics application programs
US6204859B1 (en) * 1997-10-15 2001-03-20 Digital Equipment Corporation Method and apparatus for compositing colors of images with memory constraints for storing pixel data
US6128000A (en) * 1997-10-15 2000-10-03 Compaq Computer Corporation Full-scene antialiasing using improved supersampling techniques
JPH11195132A (ja) 1997-10-31 1999-07-21 Hewlett Packard Co <Hp> テクスチャマッピング用バッファ、3次元グラフィクス処理装置、3次元グラフィクス処理システム、3次元グラフィクス処理方法および処理プログラムが記憶された記憶媒体
US6856320B1 (en) 1997-11-25 2005-02-15 Nvidia U.S. Investment Company Demand-based memory system for graphics applications
US6624823B2 (en) * 1998-02-17 2003-09-23 Sun Microsystems, Inc. Graphics system configured to determine triangle orientation by octant identification and slope comparison
US6717578B1 (en) * 1998-02-17 2004-04-06 Sun Microsystems, Inc. Graphics system with a variable-resolution sample buffer
US6137918A (en) * 1998-03-23 2000-10-24 Xerox Corporation Memory efficient method and apparatus to enable tagging of thin antialiased lines
US6259460B1 (en) * 1998-03-26 2001-07-10 Silicon Graphics, Inc. Method for efficient handling of texture cache misses by recirculation
US6115050A (en) * 1998-04-08 2000-09-05 Webtv Networks, Inc. Object-based anti-aliasing
US6606093B1 (en) * 1998-05-19 2003-08-12 Microsoft Corporation Method and apparatus for antialiasing by gamma corrected area calculation
US6188394B1 (en) * 1998-08-28 2001-02-13 Ati Technologies, Inc. Method and apparatus for video graphics antialiasing
US6611272B1 (en) * 1998-07-02 2003-08-26 Microsoft Corporation Method and apparatus for rasterizing in a hierarchical tile order
US6366289B1 (en) * 1998-07-17 2002-04-02 Microsoft Corporation Method and system for managing a display image in compressed and uncompressed blocks
US7068272B1 (en) * 2000-05-31 2006-06-27 Nvidia Corporation System, method and article of manufacture for Z-value and stencil culling prior to rendering in a computer graphics processing pipeline
US6646639B1 (en) * 1998-07-22 2003-11-11 Nvidia Corporation Modified method and apparatus for improved occlusion culling in graphics systems
US6480205B1 (en) * 1998-07-22 2002-11-12 Nvidia Corporation Method and apparatus for occlusion culling in graphics systems
US6577305B1 (en) * 1998-08-20 2003-06-10 Apple Computer, Inc. Apparatus and method for performing setup operations in a 3-D graphics pipeline using unified primitive descriptors
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
US6219070B1 (en) * 1998-09-30 2001-04-17 Webtv Networks, Inc. System and method for adjusting pixel parameters by subpixel positioning
US6434649B1 (en) 1998-10-14 2002-08-13 Hitachi, Ltd. Data streamer
US6362819B1 (en) * 1998-10-16 2002-03-26 Microsoft Corporation Texture tessellation for three-dimensional models
GB2343602B (en) * 1998-11-06 2003-03-19 Videologic Ltd Shading 3-dimensional computer generated images
GB2343603B (en) * 1998-11-06 2003-04-02 Videologic Ltd Shading 3-dimensional computer generated images
US6359623B1 (en) * 1998-11-12 2002-03-19 Hewlett-Packard Company Method and apparatus for performing scan conversion in a computer graphics display system
US6614448B1 (en) * 1998-12-28 2003-09-02 Nvidia Corporation Circuit and method for displaying images using multisamples of non-uniform color resolution
US7224364B1 (en) 1999-02-03 2007-05-29 Ati International Srl Optimal initial rasterization starting point
US6323874B1 (en) * 1999-02-08 2001-11-27 Silicon Graphics, Inc. System and method for rendering an image
US6437780B1 (en) * 1999-03-17 2002-08-20 Nvidia Us Investment Company Method for determining tiles in a computer display that are covered by a graphics primitive
DE19917092A1 (de) * 1999-04-15 2000-10-26 Sp3D Chip Design Gmbh Verfahren zur Rasterisierung eines Graphikgrundelements
US7064771B1 (en) 1999-04-28 2006-06-20 Compaq Information Technologies Group, L.P. Method and apparatus for compositing colors of images using pixel fragments with Z and Z gradient parameters
US6501564B1 (en) * 1999-05-07 2002-12-31 Hewlett-Packard Company Tone dependent plane dependent error diffusion halftoning
EP1056047A1 (en) 1999-05-20 2000-11-29 Mannesmann VDO Aktiengesellschaft Method and apparatus for antialiased imaging of graphical objects
US6518974B2 (en) * 1999-07-16 2003-02-11 Intel Corporation Pixel engine
US6429877B1 (en) * 1999-07-30 2002-08-06 Hewlett-Packard Company System and method for reducing the effects of aliasing in a computer graphics system
US6765575B1 (en) * 1999-12-06 2004-07-20 Nvidia Corporation Clip-less rasterization using line equation-based traversal
US6198488B1 (en) * 1999-12-06 2001-03-06 Nvidia Transform, lighting and rasterization system embodied on a single semiconductor platform
US6452595B1 (en) * 1999-12-06 2002-09-17 Nvidia Corporation Integrated graphics processing unit with antialiasing
US6504542B1 (en) * 1999-12-06 2003-01-07 Nvidia Corporation Method, apparatus and article of manufacture for area rasterization using sense points
US6947057B2 (en) 2000-01-11 2005-09-20 Sun Microsystems, Inc. Rendering lines with sample weighting
US6469707B1 (en) * 2000-01-19 2002-10-22 Nvidia Corporation Method for efficiently rendering color information for a pixel in a computer system
GB0007448D0 (en) * 2000-03-29 2000-05-17 Discreet Logic Inc Gamma calibration
US6828983B1 (en) 2000-05-12 2004-12-07 S3 Graphics Co., Ltd. Selective super-sampling/adaptive anti-aliasing of complex 3D data
US7119809B1 (en) 2000-05-15 2006-10-10 S3 Graphics Co., Ltd. Parallel architecture for graphics primitive decomposition
US7126600B1 (en) 2000-08-01 2006-10-24 Ati International Srl Method and apparatus for high speed block mode triangle rendering
US6633297B2 (en) * 2000-08-18 2003-10-14 Hewlett-Packard Development Company, L.P. System and method for producing an antialiased image using a merge buffer
US7002591B1 (en) 2000-08-23 2006-02-21 Nintendo Co., Ltd. Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system
US6747663B2 (en) * 2000-08-24 2004-06-08 Sun Microsystems, Inc. Interpolating sample values from known triangle vertex values
US6597356B1 (en) * 2000-08-31 2003-07-22 Nvidia Corporation Integrated tessellator in a graphics processing unit
US6961057B1 (en) 2000-10-12 2005-11-01 Nvidia Corporation Method and apparatus for managing and accessing depth data in a computer graphics system
US6633197B1 (en) * 2000-10-27 2003-10-14 Marvell International, Ltd. Gate capacitor stress reduction in CMOS/BICMOS circuit
US6567099B1 (en) 2000-11-15 2003-05-20 Sony Corporation Method and system for dynamically allocating a frame buffer for efficient anti-aliasing
US6900800B2 (en) * 2001-02-27 2005-05-31 David Robert Baldwin Tile relative origin for plane equations
US6819332B2 (en) 2001-02-27 2004-11-16 3Dlabs Inc. Ltd. Antialias mask generation
TW493782U (en) * 2001-04-03 2002-07-01 Giantplus Technology Co Ltd Pixel driving module of liquid crystal display
US7986330B2 (en) * 2001-04-12 2011-07-26 International Business Machines Corporation Method and apparatus for generating gammacorrected antialiased lines
US6803916B2 (en) * 2001-05-18 2004-10-12 Sun Microsystems, Inc. Rasterization using two-dimensional tiles and alternating bins for improved rendering utilization
US7009615B1 (en) 2001-11-30 2006-03-07 Nvidia Corporation Floating point buffer system and method for use during programmable fragment processing in a graphics pipeline
JP5031954B2 (ja) 2001-07-25 2012-09-26 パナソニック株式会社 表示装置、表示方法及び表示制御プログラムを記録した記録媒体
US7145577B2 (en) 2001-08-31 2006-12-05 Micron Technology, Inc. System and method for multi-sampling primitives to reduce aliasing
US6938176B1 (en) * 2001-10-05 2005-08-30 Nvidia Corporation Method and apparatus for power management of graphics processors and subsystems that allow the subsystems to respond to accesses when subsystems are idle
US6788301B2 (en) * 2001-10-18 2004-09-07 Hewlett-Packard Development Company, L.P. Active pixel determination for line generation in regionalized rasterizer displays
AU2002352443A1 (en) * 2001-12-21 2003-07-15 Consejo Superior De Investigaciones Cientificas Compounds and their therapeutic use related to the phosphorylating activity of the enzyme gsk-3
US6693637B2 (en) * 2001-12-31 2004-02-17 Intel Corporation Method and apparatus for determining bins to be updated for polygons, including lines
US6836808B2 (en) * 2002-02-25 2004-12-28 International Business Machines Corporation Pipelined packet processing
US7177452B2 (en) * 2002-04-10 2007-02-13 Battelle Memorial Institute Visualization of information with an established order
US7154066B2 (en) 2002-11-06 2006-12-26 Ultratech, Inc. Laser scanning apparatus and methods for thermal processing
US7075542B1 (en) * 2002-11-12 2006-07-11 Ati Technologies Inc. Selectable multi-performance configuration
US7061495B1 (en) 2002-11-18 2006-06-13 Ati Technologies, Inc. Method and apparatus for rasterizer interpolation
US7633506B1 (en) 2002-11-27 2009-12-15 Ati Technologies Ulc Parallel pipeline graphics system
US7199806B2 (en) * 2003-03-19 2007-04-03 Sun Microsystems, Inc. Rasterization of primitives using parallel edge units
GB0307095D0 (en) 2003-03-27 2003-04-30 Imagination Tech Ltd Improvements to a tiling system for 3d rendered graphics
US6933945B2 (en) 2003-03-31 2005-08-23 Sun Microsystems, Inc. Design for a non-blocking cache for texture mapping
US7148890B2 (en) * 2003-04-02 2006-12-12 Sun Microsystems, Inc. Displacement mapping by using two passes through the same rasterizer
US7006110B2 (en) 2003-04-15 2006-02-28 Nokia Corporation Determining a coverage mask for a pixel
US6989838B2 (en) 2003-06-26 2006-01-24 Intel Corporation Methods, systems, and data structures for generating a rasterizer
US6956579B1 (en) * 2003-08-18 2005-10-18 Nvidia Corporation Private addressing in a multi-processor graphics processing system
US7124318B2 (en) * 2003-09-18 2006-10-17 International Business Machines Corporation Multiple parallel pipeline processor having self-repairing capability
US7081902B1 (en) 2003-09-24 2006-07-25 Nvidia Corporation Apparatus, system, and method for gamma correction of smoothed primitives
US7184040B1 (en) 2003-11-21 2007-02-27 Nvidia Corporation Early stencil test rejection
US20050122338A1 (en) 2003-12-05 2005-06-09 Michael Hong Apparatus and method for rendering graphics primitives using a multi-pass rendering approach
JP4064339B2 (ja) 2003-12-19 2008-03-19 株式会社東芝 描画処理装置、描画処理方法および描画処理プログラム
US20050134588A1 (en) 2003-12-22 2005-06-23 Hybrid Graphics, Ltd. Method and apparatus for image processing
US7551174B2 (en) 2003-12-23 2009-06-23 Via Technologies, Inc. Method and apparatus for triangle rasterization with clipping and wire-frame mode support
US6978317B2 (en) 2003-12-24 2005-12-20 Motorola, Inc. Method and apparatus for a mobile device to address a private home agent having a public address and a private address
JP4030519B2 (ja) 2004-04-15 2008-01-09 株式会社東芝 画像処理装置および画像処理システム
US6940514B1 (en) 2004-04-26 2005-09-06 Sun Microsystems, Inc. Parallel initialization path for rasterization engine
US7382368B1 (en) 2004-06-28 2008-06-03 Nvidia Corporation Planar z representation for z compression
US7307628B1 (en) 2004-08-06 2007-12-11 Nvidia Corporation Diamond culling of small primitives
US7505043B2 (en) 2004-08-30 2009-03-17 Qualcomm Incorporated Cache efficient rasterization of graphics data
JP4810090B2 (ja) * 2004-12-20 2011-11-09 キヤノン株式会社 データ処理装置
US20060170703A1 (en) 2005-02-01 2006-08-03 Via Technologies, Inc. Color compression using an edge data bitmask in a multi-sample anti-aliasing scheme
US20060200651A1 (en) * 2005-03-03 2006-09-07 Collopy Thomas K Method and apparatus for power reduction utilizing heterogeneously-multi-pipelined processor
US7440140B2 (en) 2005-04-29 2008-10-21 Hewlett-Packard Development Company, L.P. Sequential color error diffusion with forward and backward exchange of information between color planes
JP4218840B2 (ja) * 2005-05-27 2009-02-04 株式会社ソニー・コンピュータエンタテインメント 描画処理装置および描画処理方法
JP4408836B2 (ja) 2005-05-30 2010-02-03 キヤノン株式会社 画像処理装置及びその制御方法、プログラム
US7529948B2 (en) * 2005-08-25 2009-05-05 Apple Inc. Methods and apparatuses for dynamic power estimation
US8698811B1 (en) 2005-12-15 2014-04-15 Nvidia Corporation Nested boustrophedonic patterns for rasterization
US7483029B2 (en) 2005-12-15 2009-01-27 Nvidia Corporation GPU having raster components configured for using nested boustrophedonic patterns to traverse screen areas
US7634637B1 (en) 2005-12-16 2009-12-15 Nvidia Corporation Execution of parallel groups of threads with per-instruction serialization
US7791617B2 (en) 2005-12-19 2010-09-07 Nvidia Corporation Method and system for rendering polygons having abutting edges
US7965902B1 (en) 2006-05-19 2011-06-21 Google Inc. Large-scale image processing using mass parallelization techniques
US20070268298A1 (en) 2006-05-22 2007-11-22 Alben Jonah M Delayed frame buffer merging with compression
TW200744019A (en) 2006-05-23 2007-12-01 Smedia Technology Corp Adaptive tile depth filter
US8928676B2 (en) 2006-06-23 2015-01-06 Nvidia Corporation Method for parallel fine rasterization in a raster stage of a graphics pipeline
US7843468B2 (en) 2006-07-26 2010-11-30 Nvidia Corporation Accellerated start tile search
US9070213B2 (en) 2006-07-26 2015-06-30 Nvidia Corporation Tile based precision rasterization in a graphics pipeline
KR101186295B1 (ko) 2006-10-27 2012-09-27 삼성전자주식회사 3차원 그래픽 객체 렌더링 방법 및 장치
US8063903B2 (en) 2007-11-09 2011-11-22 Nvidia Corporation Edge evaluation techniques for graphics hardware

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06215143A (ja) * 1992-11-30 1994-08-05 Internatl Business Mach Corp <Ibm> グラフィックス・オブジェクト表現方法と装置
JPH0729020A (ja) * 1993-07-13 1995-01-31 Omron Corp グラフィック並列処理装置および方法
JPH09231385A (ja) * 1996-01-26 1997-09-05 Internatl Business Mach Corp <Ibm> オブジェクトのラスタ化方法及び装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
논문:한국정보과학회

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9741155B2 (en) 2014-02-12 2017-08-22 Samsung Electronics Co., Ltd. Apparatus and method for tile-based graphic data rendering

Also Published As

Publication number Publication date
US8928676B2 (en) 2015-01-06
KR20070122172A (ko) 2007-12-28
CN101093578B (zh) 2010-12-01
TWI350987B (en) 2011-10-21
US20070296725A1 (en) 2007-12-27
TW200813810A (en) 2008-03-16
CN101093578A (zh) 2007-12-26

Similar Documents

Publication Publication Date Title
KR100885875B1 (ko) 래스터화 방법 및 시스템
JP5441305B2 (ja) 半導体機能回路のテストおよび構成のためのシステムおよび方法
US8872833B2 (en) Integrated circuit configuration system and method
US11367160B2 (en) Simultaneous compute and graphics scheduling
US8587596B2 (en) Multithreaded software rendering pipeline with dynamic performance-based reallocation of raster threads
US7973804B2 (en) Image processing with highly threaded texture fragment generation
US8775997B2 (en) System and method for testing and configuring semiconductor functional circuits
US8330765B2 (en) Rolling context data structure for maintaining state data in a multithreaded image processing pipeline
JP4489806B2 (ja) スケーラブルシェーダアーキテクチャ
US8405670B2 (en) Rolling texture context data structure for maintaining texture data in a multithreaded image processing pipeline
CN113396439A (zh) 基于小芯片配置启用产品sku
US8711161B1 (en) Functional component compensation reconfiguration system and method
US10726606B2 (en) Shader program selection in graphics processing systems
US11669421B2 (en) Fault injection architecture for resilient GPU computing
US7203878B2 (en) System and method for performing predictable signature analysis in the presence of multiple data streams
US20140184616A1 (en) System, method, and computer program product for identifying a faulty processing unit
US20240193718A1 (en) Graphics processor
US8264491B1 (en) System, method, and computer program product for controlling a shader to gather statistics

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: 20150120

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