KR100959468B1 - 그래픽 프로세스 최적화 방법 및 시스템 - Google Patents

그래픽 프로세스 최적화 방법 및 시스템 Download PDF

Info

Publication number
KR100959468B1
KR100959468B1 KR1020047014308A KR20047014308A KR100959468B1 KR 100959468 B1 KR100959468 B1 KR 100959468B1 KR 1020047014308 A KR1020047014308 A KR 1020047014308A KR 20047014308 A KR20047014308 A KR 20047014308A KR 100959468 B1 KR100959468 B1 KR 100959468B1
Authority
KR
South Korea
Prior art keywords
graphics
processor
processors
polygons
geometry
Prior art date
Application number
KR1020047014308A
Other languages
English (en)
Other versions
KR20040104510A (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 KR20040104510A publication Critical patent/KR20040104510A/ko
Application granted granted Critical
Publication of KR100959468B1 publication Critical patent/KR100959468B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

본 발명에 따른 시스템은 기하 프로세서(502, 504, 506) 및 그래픽 프로세서(508, 510, 512)를 포함한다. 통신 채널(514)은 기하 프로세서와 그래픽 프로세서간 통신을 가능하게 한다. 제어 프로세서(524)는 통신 채널을 통해 기하 프로세서 및 그래픽 프로세서와 통신할 수 있다. 기하 프로세서와 그래픽 프로세서가 효율적으로 활용되는지를 결정하기 위해 컴퓨터 시스템 내 그래픽 데이터의 프로세스 방법이 제공된다. 필요하다면, 그래픽 태스크를 수행함에 있어서, 그래픽 프로세스 회로의 효율을 개선하기 위해 하나 이상의 기하 프로세서 및 그래픽 프로세서가 선택적으로 할당되거나 할당되지 않는다.
Figure R1020047014308
기하 프로세서, 그래픽 프로세서, 통신 채널, 데이터, 폴리곤, 픽셀

Description

그래픽 프로세스 최적화 방법 및 시스템{ System and method of optimizing graphics processing }
본 발명은 그래픽 프로세스 최적화 방법에 관한 것으로, 더욱 상세하게는 멀티프로세서(multiprocessor) 시스템에서의 그래픽 프로세스 최적화 방법에 관한 것이다.
현재 컴퓨터 시스템을 통해 그래픽 영상을 만들어내는 것은 보편화되어 있다. 이러한 그래픽 영상 생성은 전문적이며 컴퓨터를 이용하여 고비용이 요구되는 과정이다. 따라서, 다수의 컴퓨터 시스템은 다양한 그래픽 프로세스를 실행시키는 전문화된 하드웨어를 사용한다.
도 1은 상기한 현재 컴퓨터 시스템의 한 예를 나타낸다. 메인 프로세서(main processor)(100)는 범용 프로세서(general purpose processor)이다. 기하 프로세서(geometric processor)(102)는 3차원 영상을 2차원 영상으로 전환하는데 필요한 공통 변환(common transform)을 실행하기 위한 메인 프로세서(100)내에 있는 전용 부(副) 프로세서(subprocessor)이다. 상기 기하 프로세서는 다른 3차원 영상 계산에도 사용될 수 있다.
기하 프로세서(102)는 메인 프로세서(100)로부터 분리될 수도 있고, 메인 프 로세서(100)내에서 소프트웨어 프로그램으로 실행될 수도 있다. 기하 프로세서(102)로부터의 최종 결과는 그래픽 영상을 생성하는데 필요한 정보를 담고 있는 화면 표시 목록이다.
일반적으로 상기 화면 표시 목록은 폴리곤(polygon)을 생성하는 정보를 포함한다. 삼각형이 상기 폴리곤의 흔한 모양이지만, 다른 모양의 폴리곤일수도 있다. 화면 표시 목록은 폴리곤을 생성하는데 필요한 정보뿐만 아니라, 표시되는 폴리곤 유형을 포함한다. 상기 경우에는 삼각형을 나타낼 것이고, 각 삼각형의 꼭지점에 대한 정보도 화면 표시 목록에 포함될 것이다.
버스(104)(bus)는 기하 프로세서(102)와 그래픽 프로세서(106)사이의 통신 채널이다. 그래픽 프로세서(106)는 화면 표시 목록을 나타내는 전용 회로이다. 그래픽 프로세서(106)는 다수의 부회로를 포함할 것이다. 입력 버퍼(108)는 화면 표시 리스트를 버퍼링한다.
계수형 미분 해석기(digital differential analyzer)(112, 이하 "DDA"라 함)는 폴리곤의 꼭지점들 사이에 내부 선들을 계산해낸다. DDA(112)는 DDA 설치 엔진을 포함한다. 픽셀 프로세서(114)는 다양한 기능을 수행한다. 먼저, 픽셀 프로세서는 폴리곤 내에 각 픽셀의 최종 RGB 값을 계산해낸다. 이것을 렌더링(rendering) 단계라고 한다.
폴리곤의 렌더링 과정에서, 픽셀 프로세서(114)는 텍스쳐링(texturing) 단계를 실행할 것이다. 픽셀의 RGB 결정은 특정 폴리곤에 선택된 텍스쳐(texture)에 부분적으로 좌우될 것이다. 이러한 텍스쳐는 텍스쳐 맵(texture map)의 형태로 픽셀 프로세서(114)에 의해 폴리곤에 적용된다.
프레임 버퍼(frame buffer)(116)는 전체 프레임이나 필드(더블 버퍼링의 경우)가 생성될 때까지 폴리곤으로부터 재편성된 프레임을 축적하는 DRAM(dynamic random access memory)이다. 상기 프레임은 버스(118)를 통해 디지털-아날로그 전환기(D/A converter)로, 결국에는 모니터로 가게 된다. 프레임 버퍼(116)는 픽셀 프로세서(114)로부터 데이터를 수신하게 되지만, 픽셀 프로세서(114)도 프레임 버퍼(116) 역할을 하게 된다.
텍스쳐 버퍼(118) 및 DRAM 프레임 버퍼(120)는 픽셀 프로세서(114), 프레임 버퍼(116), 또는 픽셀 프로세서 및 프레임 버퍼와는 상관 없는 곳 어딘가에 위치된다. 픽셀 프로세서는 일반적으로 상기 버퍼들을 판독/기록하고, 필요하다면 상기 버퍼들은 프레임 버퍼(116)로부터 업데이트된다.
계산의 효율면에서, 전체 프레임을 렌더링하는 때에 상기 장치를 이용하면 몇 가지 문제점이 발생한다. 예컨대, 게임에서 장면(scene)을 렌더링하는 때에, 게임 화면은 덜 상세한 배경(背景), 보다 상세한 중경(中景; midground), 가장 상세한 전경(前景)이 존재한다. 두 개의 극단적인 경우, 즉 배경과 전경은 두 가지 다른 경우를 만들어낸다. 첫 번째 경우에는, 소수의 매우 큰 폴리곤이 배경 그림을 만드는데 사용된다. 두 번째 경우에는, 다수의 작은 폴리곤이 상세한 전경 그림을 만들어낸다. 상기 두 경우는 각각 다른 문제점을 만들어낸다.
첫 번째 경우에, 프레임의 배경 프로세스는 소수의 큰 폴리곤을 프로세스할 것이 요구된다. 기하 변환(geometry transformation)에 요구되는 프로세스 소요 시 간은 프로세스될 폴리곤의 꼭지점의 개수에 좌우된다. 따라서, 기하 프로세서(102)가 배경 폴리곤을 프로세스하는데 필요한 프로세스 소요 시간은 상대적으로 짧을 것이다. 그러나, 그래픽 프로세서(106)는 큰 폴리곤과 관련된 많은 문제점이 야기될 것이다.
첫번째로, 기하 프로세서는 그래픽 프로세서(106)가 크기가 큰 폴리곤을 렌더링할 수 있게 되는 것보다 훨씬 더 빠르게 화면 표시 리스트를 만들어 낼 것이다. 따라서, 기하 프로세서는 그래픽 프로세서(106)가 캐치 업(catch up)하는 동안 작동하지 않는 상태를 유지한다.
더 느린 렌더링 속도 외에도 큰 폴리곤을 프로세스하면서 그래픽 프로세서(106) 내에 다른 병목(bottleneck) 현상이 나타난다. 큰 폴리곤이 큰 영역의 텍스쳐 맵을 덮게 될 것이다. 상기 영역이 텍스쳐 버퍼(118) 크기보다 훨씬 더 크면, "텍스쳐 오류(texture miss)" 현상이 종종 일어날 것이다.
픽셀 프로세서(114)는 텍스쳐 버퍼(118)가 프레임 버퍼내에서 텍스쳐 맵에 의해 업데이트되는 동안 작동하지 않는 상태를 유지함으로써, 폴리곤의 일부에 적절한 텍스쳐가 적용될 수 있게 된다. 더욱이, 큰 폴리곤은 많은 DRAM 페이지를 덮게 될 것이다. 폴리곤의 렌더링이 DRAM 페이지의 마지막에 도달하면, "DRAM 페이지 중단" 현상이 일어난다. DRAM 페이지 버퍼(120)는 그 내용을 프레임 버퍼 내에 다시 위치시키고, 새로운 페이지는 프레임 버퍼로부터 DRAM 페이지 버퍼로 업데이트되어야만 한다. 픽셀 프로세서(114)는 상기 과정중에는 작동되지 않을 것이다.
이러한 페이지 브레이크(page break) 현상은 큰 폴리곤의 경우에 폴리곤의 크기가 DRAM 페이지 버퍼의 크기보다 수배 더 크게 되면서 종종 발생하게 되고, 이에 따라 모든 렌더링 패스(rendering pass)에 대해 여러번 DRAM 페이지 브레이크가 발생된다. 따라서, 소수의 큰 폴리곤들은 그래픽 프로세서에서의 프로세스 과정 중에 얼마간의 감속을 겪게 된다.
도 2는 소수의 큰 폴리곤에 대한 그래픽 프로세서 및 기하 프로세서의 프로세스 결과를 나타낸다. 그래픽 프로세서는 컴퓨터에 주어진 전력 또는 그 이하로 소정의 시간 내에 폴리곤 또는 다른 그래픽 객체를 프로세스 할 수 있다. 막대(202)는 주어진 임무에 대해 기하 프로세서의 프로세스 속도로 배경의 폴리곤 또는 다른 객체를 프로세스하는데 필요한 컴퓨터의 소요 시간을 나타낸다. 그래픽 프로세서(106)는 막대(204)로 나타내었다. 어둡게 칠해진 막대(206)는 컴퓨터에 주어진 소정의 시간을 넘겨 컴퓨터가 배경의 폴리곤을 프로세스하는데 필요한 시간을 나타낸다. 도 2는 그래픽 프로세서(106)가 어둡게 칠해진 막대(206)로 나타낸 시간내에 캐치 업(catch-up)하는 동안, 기하 프로세서(102)가 작동하지 않음을 명확하게 보여준다. 이와 같이, 그래픽 프로세서는 병목(bottleneck)으로 동작한다.
두번째로, 반대의 경우에, 다수의 작은 폴리곤들이 프로세스되어 렌더링되어야 한다. 이러한 과정은 다른 병목을 만들어낸다. 다수의 작은 폴리곤들은 훨씬 더 많은 수의 꼭지점을 만들어낸다. 따라서, 기하 프로세서는 상기(上記)한 경우보다 실질적으로 더 오래 지속된다.
도 3은 이러한 사실을 나타낸다. 막대(302)는 주어진 임무에 대해 기하 프로세서의 프로세스 속도로 전경(foreground)의 폴리곤 또는 다른 객체를 프로세스하 는데 필요한 컴퓨터의 소요 시간을 나타낸다. 어둡게 칠해진 막대(304)는 기하 프로세서가 그래픽 프로세서를 "캐치 업(catch-up)" 하기 위해 계산해야 하는데 필요한 소정의 잉여 시간을 나타낸다.
그래픽 프로세서(106)는 첫번째 경우보다 훨씬 더 빨리 전경의 폴리곤들을 렌더링할 수 있게 된다. 이것은 각 폴리곤이 더 적은 수의 렌더링될 픽셀을 갖고 있고, 동시에 작은 크기의 폴리곤들이 DRAM 페이지 브레이크나 텍스쳐 오류(texture miss)의 가능성을 감소시키기 때문이다. 이러한 프로세스 속도의 증가는 다수의 작은 폴리곤의 렌더링에 필요한 컴퓨터 소요 시간이 감소되는 것을 보여주는 막대(306)로 나타내었다. 다시, 어둡게 칠해진 막대(304)는 기하 프로세서(102)가 배경 계산을 하는 동안, 그래픽 프로세서(106)가 작동하지 않는 시간을 나타낸다. 따라서, 두 번째 경우에, 기하 프로세서는 병목으로 동작한다.
상기한 문제점들은 일정 수준으로 렌더링된 그림과 같은 고해상도의 그래픽을 계속 사용하려고 할 때 심각해진다. 이러한 그림은 일정 수준의 고해상도로 그려짐으로써 폴리곤 선분들은 보이지 않게 되고, 완만한 곡선들만 나타난다.
도 4는 컴퓨터를 이용하여 최적 상태를 나타내는 세번째 경우를 보여준다. 상기한 경우에 있어서, 기하 프로세서(102)는 소정의 시간 내에 모든 표시 목록을 프로세스하는 것을 막대(402)로 나타내었다. 그래픽 프로세서(106)는 동일한 시간 내에 모든 폴리곤을 프로세스하여 렌더링하는 것을 막대(404)로 나타내었다. 이와 같이, 기하 프로세서-그래픽 프로세서 파이프 라인에는 병목(bottleneck) 현상이 나타나지 않는다. 이것이 부하 평형 조건(load balanced condition)이다.
본 발명에 따른 신규한 컴퓨터 시스템 구조는 다수 기하 프로세서 및 다수 그래픽 프로세서를 포함한다. 본 발명에 따른 상기 장치는 멀티 프로세서 시스템으로부터 발생하는 상기한 문제점 및 다른 문제점을 해결할 수 있는 새로운 방식을 제공한다.
본 발명의 일국면에서, 그래픽 프로세스를 최적화하는 방법이 제공된다. 본 발명의 바람직한 방법에 따르면, 첫 번째 기하 프로세서는 적어도 첫 번째 부분의 그래픽 태스크를 하도록 할당되고, 두 번째 그래픽 프로세서는 적어도 두 번째 부분의 그래픽 태스크를 하도록 할당된다. 첫 번째 기하 프로세서의 양은, 두 번째 그래픽 프로세서의 양과 같을 수도 있고 다를 수도 있다. 성능 데이터(performance data)가 바람직하게는 소정의 시간 동안 두 번째 그래픽 프로세서로부터 수집되고, 수집된 성능 데이터는 알고리즘(algorithm)으로 분석될 수 있다. 본 발명의 바람직한 방법에 따른 또 다른 프로세스에 따르면, 수집된 성능 데이터의 분석 결과에 따라 그래픽 태스크에 할당된 첫 번째 기하 프로세서 및 두 번째 그래픽 프로세서 중의 적어도 하나가 변경된다.
또 다른 본 발명의 바람직한 방법에 따르면, 첫 번째 기하 프로세서는 첫 번째 부분의 그래픽 태스크를 하도록 할당되고, 두 번째 기하 프로세서는 두 번째 부분의 그래픽 태스크를 하도록 할당된다. 본 발명의 바람직한 실시예에 따르면, 두 번째 기하 프로세서로 수행되는 그래픽 테스트의 일부가 폴리곤을 버퍼 메모리(buffer memory)로 렌더링하는 단계를 포함하는 동안 첫 번째 기하 프로세서로 수행되는 그래픽 프로세스의 일부는 객체 데이터를 폴리곤의 꼭지점 데이터로 변환시키는 단계를 포함한다.
렌더링된 폴리곤은 다수의 픽셀을 포함할 수 있다. 그 방법은 한 주기의 시간 동안 두 번째 그래픽 프로세서로부터 성능 데이터를 수집하는 단계 및 알고리즘으로 수집된 성능 데이터를 분석하는 단계를 포함한다. 상기 방법은 수집된 성능 데이터를 분석한 결과에 따라 렌더링될 그래픽 객체의 모자이크 분할을 증가시킴으로써 첫 번째 기하 프로세서에 의해 생성된 폴리곤의 개수를 증가시키고 평균적인 크기를 감소시키는 단계를 포함하는 것이 바람직하다.
본 발명의 또 다른 바람직한 방법은 첫 번째 기하 프로세서를 그래픽 태스크에 할당하고, 두 번째 그래픽 프로세서를 그래픽 태스크에 할당하는 단계를 포함하는 것이다. 기하 및 그래픽 프로세서는 폴리곤 생성이 포함된 그래픽 태스크의 서로 다른 부분을 실행하는 것이 바람직하다(예컨대, 객체 데이터를 폴리곤 정점 데이터로 변환 및 버퍼 메모리 내에서 폴리곤을 렌더링하는 것). 바람직하게 성능 데이터는 한 주기의 시간 동안 두 번째 그래픽 프로세서로부터 수집되고, 수집된 성능 데이터는 알고리즘으로 분석된다. 상기 방법은 수집된 성능 데이터를 분석한 결과에 따라 생성될 표면(surface)의 모자이크 분할을 감소시킴으로써 기하 프로세서의 개수에 의해 생성된 폴리곤의 개수를 감소시키고 평균적인 크기를 증가시키는 단계를 포함할 수도 있다.
여전히 본 발명의 또 다른 바람직한 방법은 첫 번째 기하 프로세서를 그래픽 태스크에 할당하고, 두 번째 그래픽 프로세서를 그래픽 태스크에 할당하는 단계를 포함한다. 바람직하게는 첫 번째 기하 프로세서는 그래픽 태스크의 첫 번째 부분을 수행하고, 두 번째 그래픽 프로세서는 그래픽 태스크의 두 번째 부분을 수행한다. 기하 프로세서는 3차원 객체 데이터를 x,y 및 z축을 포함하는 폴리곤의 정점 데이터로 변환할 수 있다. 또한, 기하 프로세서는 z축이 존재하지 않거나 불필요한 경우에 x 및 y축만으로 폴리곤의 정점 데이터를 생성시킬 수 있다.
그래픽 프로세서는 폴리곤을 버퍼 메모리로 렌더링하는데 사용될 수 있다. 성능 데이터는 한 주기의 시간 동안 두 번째 그래픽 프로세서로부터 수집될 수 있고, 알고리즘으로 분석될 수 있다.
또한, 상기 방법은 그래픽 태스크에 할당된 첫 번째 기하 프로세서의 적어도 하나, 그래픽 태스크에 할당된 두 번째 기하 프로세서 및 첫 번째 기하 프로세서에 의해 그래픽 객체에 적용된 모자이크 분할량을 변경하는 단계를 포함할 수 있다.
본 발명의 그래픽 프로세스를 최적화하는 또 다른 바람직한 방법은 첫 번째 기하 프로세서를 그래픽 태스크에 할당하고, 두 번째 그래픽 프로세서를 그래픽 태스크에 할당하는 단계를 포함한다. 성능 데이터는 한 주기의 시간 동안 두 번째 그래픽 프로세서로부터 수집되고, 수집된 성능 데이터는 알고리즘으로 분석된다. 이후, 상기 방법은 폴리곤 데이터가 그래픽 프로세서로 전송되기 전에 첫 번째 기하 프로세서에 의해 프로세스된 폴리곤을 공간적으로 분류(sort)하는 단계를 포함할 수 있다.
그래픽 프로세스 회로를 구비하는 컴퓨터 시스템 내에서 그래픽 데이터를 프로세스하는 본 발명의 또 다른 바람직한 방법은 적어도 하나의 기하 프로세서를 그 래픽 태스크의 적어도 한 부분을 수행하도록 활용하는 단계와 적어도 하나의 그래픽 프로세서를 그래픽 태스크의 적어도 다른 부분을 수행하도록 활용하는 단계를 포함한다. 또한, 본 발명에 따른 바람직한 방법은 적어도 하나의 기하 및 그래픽 프로세서가 효율적으로 활용되고 있는지 여부를 결정하는 단계를 포함하고, 필요하다면 하나 이상의 기하 및 그래픽 프로세서가 그래픽 태스크를 수행하는 그래픽 프로세스 회로의 효율을 개선하도록 선택적으로 할당 또는 할당하지 않는 단계를 포함한다.
적어도 하나의 기하 프로세서를 활용하여 폴리곤의 정점 데이터로의 객체의 3차원-2차원 전환을 수행하는 단계를 포함하는 그래픽 태스크의 적어도 한 부분을 수행하게 하는 것이 바람직하다. 또한, 적어도 하나의 그래픽 프로세서를 활용하여 폴리곤의 정점 데이터를 버퍼 메모리로 렌더링하는 단계를 포함하는 그래픽 태스크의 적어도 다른 부분을 수행하게 하는 것이 바람직하다.
바람직하게는 폴리곤은 복수개의 픽셀을 포함한다. 적어도 하나의 기하 프로세서 및 적어도 하나의 그래픽 프로세서가 효율적으로 활용되는지를 결정하는 단계는 렌더링되는 폴리곤의 양(quantity) 및 평균적인 크기를 계산하는 단계를 포함한다. 본 발명의 바람직한 실시예에 따르면, 렌더링된 폴리곤의 평균적인 크기를 계산하는 단계는 렌더링된 픽셀의 양을 계산하는 단계 및 렌더링된 폴리곤의 양에 의해 분할하는 단계를 포함한다.
또한, 상기 방법은 한 세트의 버퍼, 복수개의 기하 프로세서를 한 세트의 버퍼에 접속시키는 첫 번째 크로스 바 채널을 제공하는 단계와 복수개의 그래픽 프로 세서를 한 세트의 버퍼에 접속시키는 두 번째 크로스 바 채널을 제공하는 단계를 포함하는 것이 바람직하다. 한 세트의 버퍼는 초기 구성(initial configuration)을 포함할 수 있고, 첫 번째 및 두 번째 크로스 바 채널도 초기 구성을 포함할 수 있다.
선택적으로 하나 이상의 기하 및 그래픽 프로세서를 할당 또는 할당하지 않는 단계는 첫 번째 크로스 바 채널에 대한 새로운 구성을 계산하는 단계와 두 번째 크로스 바 채널에 대한 새로운 구성을 계산함에 있어 한 세트의 버퍼에 대한 새로운 구성을 계산하는 단계를 포함하는 것이 바람직하다. 이후, 한 세트의 버퍼와 첫 번째 및 두 번째 크로스 바 채널은 새로운 구성을 얻기 위해 재구성될 수 있다.
본 발명은 다른 국면에서 그래픽 데이터를 프로세스하기 위한 그래픽 프로세스 회로를 구비하는 컴퓨터 시스템을 제공한다. 바람직하게는, 컴퓨터 시스템은 적어도 그래픽 태스크의 한 부분을 수행하는 적어도 하나의 기하 프로세서를 포함한다. 그래픽 태스크의 적어도 다른 부분을 부분적으로라도 수행하기 위해 적어도 하나의 그래픽 프로세서가 또한 제공된다.
적어도 하나의 기하 및 그래픽 프로세서간 통신을 위해 통신 채널도 제공된다.
제어 프로세서는 통신 채널을 통해 기하 및 그래픽 프로세서와 통신하기 위해 제공된다. 제어 프로세서는 바람직하게는 적어도 하나의 기하 및 그래픽 프로세서가 효율적으로 활용되고 있는지 여부를 결정하고, 필요하다면 하나 이상의 기하 및 그래픽 프로세서가 그래픽 태스크를 수행하는 그래픽 프로세스 회로의 효율을 개선하도록 선택적으로 할당 또는 할당하지 않게 된다.
본 발명의 바람직한 실시예에 따르면, 적어도 하나의 기하 프로세서는 복수개의 기하 프로세서를 포함하고, 적어도 하나의 그래픽 프로세서는 복수개의 그래픽 프로세서를 포함한다. 바람직하게는, 복수개의 기하 프로세서는 어떤 객체라도 폴리곤의 정점 데이터로의 3차원-2차원 전환을 수행한다. 복수개의 그래픽 프로세서가 버퍼 메모리로 폴리곤을 렌더링하는데 사용되는 것도 바람직하다. 폴리곤은 복수개의 픽셀을 포함할 수 있다.
통신 채널은 바람직하게는 크로스 바 구조를 갖는 첫 번째 채널, 첫 번째 채널을 통해 복수개의 기하 프로세서로부터 데이터를 수신하기 위해 접속된 적어도 하나의 버퍼 메모리 및 복수개의 그래픽 프로세서와 적어도 하나의 버퍼 메모리간의 통신이 가능하도록 제공된 일대일 크로스 바 구조를 갖는 두 번째 채널을 포함한다.
본 발명의 바람직한 실시예에 있어서, 통신 채널은 복수개의 그래픽 프로세서로부터 제어 프로세서로 성능 데이터의 통신을 용이하게 해 준다.
상기한 바와 같은 본 발명의 특징 및 효과는, 하기하게 될 바람직한 실시예 및 첨부된 도면을 참조하여 보다 명확하게 이해될 수 있을 것이다.
도 1은 종래 기술에 따른 그래픽 프로세서 장치의 다이아그램이다.
도 2는 특정 상태에서의 종래 기술에 따른 그래픽 프로세스 장치 내 계산 가능한 부하(computational load)를 나타낸 그래프이다.
도 3은 다른 상태에서의 종래 기술에 따른 그래픽 프로세스 장치의 계산 가능한 부하를 나타낸 그래프이다.
도 4는 부하 평형 조건에서 종래 기술에 따른 그래픽 프로세스 장치의 계산 가능한 부하를 나타낸 그래프이다.
도 5는 본 발명에 따른 그래픽 프로세스 장치의 다이아그램이다.
도 6은 본 발명의 실시예를 나타내는 순서도이다.
도 7은 본 발명의 다른 실시예를 나타내는 순서도이다.
도 8은 본 발명에 따른 그래픽 프로세스 장치의 보다 상세한 다이아그램이다.
도 5는 그래픽 프로세스가 최적화될 수 있는 그래픽 프로세스 장치(500)를 나타낸다. 전체 기하 프로세서(501)에는 각 기하 프로세서(502, 504, 506)가 포함될 수 있는 것으로, 이러한 점은 종래의 기하 프로세서(102)와 유사하다. 전체 그래픽 프로세서(507)에는 각 그래픽 프로세서(508, 510, 512)가 포함될 수 있는 것으로, 이러한 점은 종래의 그래픽 프로세서(106)와 유사하다. 기하 프로세서들(502, 504, 506)은 구성 가능한 통신 채널(configurable communication channels)과 버퍼(514)에 의해 그래픽 프로세서들(508, 510, 512)과 접속된다.
각각의 모든 기하 프로세서는 구성 가능한 통신 채널과 버퍼(514)에 의해 그래픽 장치(500) 내에서 각각의 모든 그래픽 프로세서로 데이터를 전송한다. 각 그래픽 프로세서(508, 510, 512)는 렌더링 제어 프로세서(522)와 통신할 수 있도록 접속된 통신 채널(516, 518, 520)을 구비한다. 통신 채널(516, 518, 520)은 그래픽 프로세서(508, 510, 512)로부터 렌더링 제어 프로세서(522)로 실행 데이터(performance data)를 전송한다.
두 종류의 프로세서 세트는 소정의 파이프 라인 세트에 링크되어 있지 않다. 렌더링 제어 프로세서는 궤환 채널(feedback channel)(526)에 의해 제어 프로세서(524)에 접속된다. 제어 프로세서(524)는 구동될 수 있도록 프로세서 할당 채널(processor allocation channel)(530)에 의해 기하 프로세서(502, 504, 506)에 접속된다. 제어 프로세서(524)는 구동될 수 있도록 제어 신호 채널(528)에 의해 구성 가능한 통신 채널과 버퍼(514)에도 접속된다.
동작 중에, 정의된 3차원 객체는 초기 그래픽(graphics primitive)의 2차원 표시 목록으로 전환되도록 기하 프로세서(502, 504, 506)로 보내어진다. 이후, 표시 목록은 구성 가능한 통신 채널과 버퍼(514)를 거쳐 그래픽 프로세서(508, 510, 512)로 보내진다. 도 5의 검은색으로 표시된 화살표는 이러한 데이터의 전송을 보여준다. 그래픽 프로세서(508, 510, 512)는 초기 그래픽의 2차원 표시 목록을 렌더링하고, 렌더링 중에 또는 그 이후의 시점에 텍스쳐를 적용하여 음영 처리(shading)를 한다(도 8 참조). 그래픽 태스크(graphics task)는 정의된 3차원 객체를 프레임 버퍼 내 표시할 수 있는 픽셀 맵(pixel map)으로 전환하는 것으로 간주될 수 있다. "전환"은 3차원 객체를 폴리곤의 꼭지점 데이터의 표시 목록으로의 변환 및 이에 수반하여 상기 데이터를 픽셀로 렌더링하는 것을 포함한다.
그래픽 프로세서들(508, 510, 512)은 통신 채널(516, 518, 520)을 통해 렌더 링 제어 프로세서(522)로 성능 데이터(performance data)를 전송한다. 상기 성능 데이터는 렌더링 제어 프로세서(522) 내에서 프로세스된다. 프로세스 결과는 궤환 채널(feedback channel)(526)로 보내어진다. 이러한 궤환은 고성능 데이터 및/또는 제어 프로세서(524)에 의해 실행될 특정 명령의 형태를 취한다. 이후, 제어 프로세서(524)는, 렌더링 제어 프로세서(522)로부터 궤환 데이터를 취하여 상기 궤환 데이터를 사용함으로써, 프로세서 할당 및 구성 가능한 통신 채널과 버퍼(514)의 구성을 실행할 수 있게 된다. 도 5에서 검은색으로 칠해지지 않은 화살표는 데이터 신호라기보다는 제어 신호를 나타낸다.
도 8은 도 5에 나타낸 그래픽 프로세서 장치(500)의 보다 상세한 실시예를 보여준다. 본 발명의 일실시예에서, 렌더링 제어 프로세서(522) 및 제어 프로세서(524)는 단독의 논리 제어 프로세서(single logical control processor)이다.
본 발명의 다른 실시예에서, 제어 프로세서(524) 및 렌더링 제어 프로세서(522)는 단일 집적 회로(single integrated circuit)상에서 논리적으로 구분되는 프로세서들이다. 본 발명의 또 다른 실시예에서, 제어 프로세서(524) 및 렌더링 제어 프로세서(522)는 분리된 집적 회로상에 존재한다.
본 발명의 또 다른 실시예에서, 렌더링 제어 프로세서(522)는 통신 채널(516, 518, 520)을 통한 데이터의 "콘딧(conduit)" 역할만을 하게 되고, 제어 프로세서(524)는 모든 분석과 제어 기능을 수행하게 된다. 본 발명의 또 다른 실시예에서, 렌더링 제어 프로세서(522)는 대부분의 분석 및 제어 결정을 수행하여 이를 궤환 채널(526)에 의해 제어 프로세서(524)로 전송하는데, 이로써 상기 명령에 대한 콘딧의 역할만을 수행하게 되는 것이다.
본 발명의 일실시예에서, 기하 프로세서(502, 504, 506)는 기하 변환(geometry transformation)과 같은 특정의 태스크에 동적으로(dynamically) 전용(專用)된 메인 프로세서의 부(副) 프로세서일 수 있다. 본 발명의 다른 실시예에서, 기하 프로세서(502, 504, 506)는 기하 변환에 동적으로 할당된 것으로서 분리된 범용 프로세서이다.
본 발명의 다른 실시예에서, 기하 프로세서(502, 504, 506)는 상기 기하 변환 조작에 사용될 특수 프로세서이다. 이러한 특수 프로세서는 메인 프로세서 내에 또는 분리된 프로세서 내에 위치한다. 기하 프로세서(502, 504, 506)는 같은 형태일 필요는 없다. 예를 들어, 한 기하 프로세서(504)가 기하 변환을 수행하는 분리된 프로세서인 반면에, 다른 기하 프로세서(502)는 부 프로세서일 수도 있다. 그래픽 프로세스 장치는 3개의 기하 프로세서로 나타난다. 그래픽 프로세스 장치(500)는 어떤 형태의 복수개의 기하 프로세서를 구비할 수 있다. 본 발명의 바람직한 실시예에서 8개의 기하 프로세서가 구비된다. 특정의 실행이나 구성과는 상관없이, 그래픽 프로세서(501)의 개수는 주어진 시간에 그래픽 태스크를 위해 기하 변환등과 같은 조작을 실행할 이산적인(discrete) 논리 프로세스 유닛의 개수이다.
그래픽 프로세스 장치(500)는 3개의 그래픽 프로세서(508, 510, 512)를 구비하는 것으로 도시하였다. 그래픽 프로세스 장치(500)는 어떤 복수개의 그래픽 프로세서를 구비할 수 있다. 본 발명의 바람직한 실시예에서는 8개의 그래픽 프로세서가 사용된다. 본 발명의 바람직한 실시예에서, 각 그래픽 프로세서(508, 510, 512)는 다른 집적 회로상에 존재한다. 본 발명의 선택적인 실시예에서, 2개 이상의 그래픽 프로세서(502, 504, 506)들은 단일 집적 회로상에 존재한다. 특정의 실행이나 구성과는 상관없이, 그래픽 프로세서(507)의 개수는 주어진 시간에 그래픽 태스크를 위해 렌더링 및 다른 관련된 연산을 실행할 이산적인(discrete) 논리 프로세스 유닛의 개수이다.
기하 프로세서(501)의 개수와 그래픽 프로세서(507)의 개수가 동일할 필요는 없다. 이러한 융통적인 구조에 의해 기하 프로세서와 그래픽 프로세서의 개수가 다를 수 있다.
도 6A는 본 발명의 일실시예에 따른 순서도를 나타낸 것이다. 도 6A에 도시된 방법은 도 5에 나타낸 그래픽 프로세스 장치(500)가 다수의 기하 프로세서 및 그래픽 프로세서를 이용하여 어떻게 최적화되어 부하 평형을 이루는지를 보여준다. 구성 가능한 통신 채널과 버퍼(514)를 이용하고, 하나 이상의 기하 프로세서 또는 그래픽 프로세서를 그림 및 폴리곤의 렌더링에, 또는 그래픽 태스크에 적용함으로써 종래 기술의 병목 현상을 방지할 수 있다. 도 6A의 방법은 구성 부하 평형(configuration load balancing)이라고 말할 수 있다.
601 단계에서, 렌더링 제어 프로세서(522)는 그래픽 프로세서(501)의 개수로부터 성능 데이터를 수집한다. 602 단계에서, 렌더링 제어 프로세서는 성능 데이터를 분석한다. 렌더링 제어 프로세서(522)에 의한 성능 데이터의 수집은 한 주기의 시간에 걸쳐 이루어진다. 본 발명의 바람직한 실시예에서, 이러한 주기는 10,000 클록 사이클(clock cycle)의 정렬로 되어 있다. 그러나, 대부분의 다른 주기의 시 간이라도 적용될 수 있음은 자명하다. 그러나, 구성 부하 평형(configuration load balancing)은 통계적 프로세스로서, 상기 시간 주기는 통계적으로 중요한 데이터 세트를 모으기에 충분해야만 한다.
이러한 성능 데이터의 분석(602)에는, 그래픽 프로세서(507)의 개수가 과부하되었는지, 기하 프로세서(501)의 개수가 과부하되었는지, 또는 기하 프로세서(501) 및 그래픽 프로세서(507)의 개수가 부하 평형되었는지의 여부를 결정하는 과정이 포함된다. 만약, 602 단계에서 성능 데이터를 분석한 결과, 기하 프로세서(501)의 개수와 함께 부하 평형된 그래픽 프로세서(507)의 개수가 얻어진다면, 601 단계가 한 주기의 시간 동안 진행된다.
그러나, 그래픽 프로세서(507) 개수상의 계산 가능한 부하가 과부하 상태라면, 렌더링 제어 프로세서(522)는 603 단계에서 제어 프로세서(524)로 궤환(feedback)하게 된다. 604 단계에서, 제어 프로세서(524)는 추가될 그래픽 프로세서의 개수를 결정한 후에 한 세트의 그래픽 태스크에 작동될 그래픽 프로세서의 개수를 증가시킨다.
다음 단계인 605 단계에서, 제어 프로세서(524)는 구성을 결정한 후에 구성 가능한 통신 채널과 버퍼(514)를 변경시킨다. 기하 프로세서의 표시 목록 결과는 나뉘어져서 하나 이상의 그래픽 프로세서로 전송되므로, 문제점을 해결하기 위해 동작하는 그래픽 프로세서의 개수가 증가하게 된다. 더 많은 그래픽 프로세서 사이에서 큰 폴리곤의 렌더링을 분할함으로써 계산 가능한 부하가 그래픽 프로세서 사이에 공유된다. 그래픽 프로세서 내에서 렌더링을 수행하는데 필요한 시간이 감소 된다. 따라서, 기하 프로세서는 더 적은 시간 동안 동작하지 않는 상태여야 한다.
만일 기하 프로세서의 계산 가능한 부하가 602 단계에서 결정된대로 과부하 상태라면 다음 단계는 606 단계가 된다. 이러한 경우의 한 예는 다수의 작은 폴리곤의 렌더링을 들 수 있다. 이것은 도 3에 나타낸 바와 같은 문제점을 야기한다. 이러한 문제점을 어드레스(address)하기 위해서 606 단계에서는, 렌더링 제어 프로세서는 제어 프로세서(524)로 적절한 궤환 정보를 전송한다. 607 단계에서, 제어 프로세서(524)는 몇 개의 기하 프로세서가 추가되어야 하는가를 결정한 후에, 그래픽 태스크를 수행할 기하 프로세서의 개수를 증가시킨다. 이와 같이, 다수의 기하 프로세서 사이에 계산 가능한 작업이 공유된다.
608 단계에서, 제어 프로세서(524)는 새로운 구성을 결정한 후에, 단독의 표시 목록 버퍼로 들어갈 다수의 기하 프로세서의 출력을 가진 표시 목록 버퍼를 생성하기 위해 구성 가능한 통신 채널과 버퍼(514)를 변경시킨다. 이러한 표시 목록 버퍼는 FIFO(First In/First Out) 버퍼이다. 이렇게 함으로써, 표시 목록을 일련화(serialization)할 수 있고, 그 결과로 단독의 그래픽 프로세서에 의해 프로세스될 수 있다,
이와 같이, 602 단계에서 결정된 브랜치(branch)에 따라, 객체에 동작하는 그래픽 프로세서의 개수 또는 기하 프로세서의 개수가 증가된다. 그 결과로 부하 평형이 이루어지게 되는 것이다. 궤환 루프(feedback loop)는 601 단계에서 성능 데이터가 렌더링 제어 프로세서(522)에 의해 일정하게 감시되는 곳에 형성된다. 이와 같이, 렌더링되어야 할 객체가 변경된다면, 궤환 루프는 객체를 그려내는데 필 요한 계산 가능한 부하의 분포를 자동적으로 조절한다.
도 6B는 602 단계의 일실시예를 보여준다. 610 단계에서는 한 주기의 시간 동안 렌더링된 폴리곤의 개수가 폴리곤의 개수 하한치와 비교된다.이러한 폴리곤의 개수 하한치는 많은 다른 방법에 의해 결정될 수 있다. 본 발명의 일실시예에서, 폴리곤의 개수 하한치는 조정(tuning)에 의한 그래픽 프로그래밍 중에 결정된다.
본 발명의 다른 실시예에서, 폴리곤의 개수 하한치는 어떤 수의 구현이라도 가능한 알고리즘(algorithm)에 의해 결정된다. 물론, 그러한 알고리즘은 프로그래밍 중에 조정될 수도 있다. 611 단계에서는 상기의 비교 결과가 질의(query)된다. 만일 폴리곤의 개수 하한치보다 많은 수의 폴리곤이 있다면, 612 단계가 실행된다. 612 단계에서는 한 주기의 시간 동안 렌더링된 폴리곤의 평균적인 크기가 폴리곤의 평균적인 크기의 상한치와 비교된다. 다시, 그러한 평균적인 크기의 상한치는 미리 행한 조정 또는 여러 방법 중 어느 하나에서 실행되는 알고리즘중의 하나에 의해 결정될 수 있고, 이러한 것은 그래픽 프로그래밍중 자체적으로 또는 저절로 조정될 수 있다.
613 단계에서는 612 단계의 결과가 질의된다. 613 단계에서 렌더링된 폴리곤의 평균적인 크기가 폴리곤의 평균적인 크기의 상한치보다 더 큰 것으로 판명되면, 614 단계가 수행되고, 그래픽 프로세서가 과부하되었음이 표시된다. 이후에는 자명하게 603 단계가 수행된다(도 6A 참조). 그러나, 만일 611 단계의 결과가 "아니오"라면, 이후에는 615 단계가 수행된다.
615 단계에서 폴리곤의 개수의 상한치보다 많은 폴리곤이 있는지의 여부가 결정된다. 만일 결과가 그렇다면, 한 주기의 시간동안 렌더링된 폴리곤의 평균적인 크기를 평균적인 크기의 하한치와 비교하게 되는 616 단계가 수행된다. 다시, 평균적인 폴리곤 크기의 상한치와 유사하게, 평균적인 폴리곤의 크기의 하한치는 프로그램 조정에 의한 컴퓨터 그래픽 프로그래밍 중에 또는 알고리즘에 의한 컴퓨터 그래픽 프로그램 구동중에 미리 결정된다. 상기 알고리즘은 많은 구현중의 하나를 구비할 수 있고, 그래픽 프로그램의 초기 프로그래밍 중에 자체적으로 또는 저절로 조정될 수 있다.
617 단계에서는 616 단계의 결과가 질의된다. 한 주기의 시간 동안 렌더링된 폴리곤의 평균적인 크기가 폴리곤의 평균적인 크기의 하한치보다 더 작다면, 이후 617 단계가 수행되고, 기하 프로세서가 과부하되었음이 표시된다. 그렇게 되면, 자명하게, 606 단계가 수행된다(도 6A 참조). 만일, 615 단계에서의 결정 결과가 폴리곤의 개수의 상한치보다 많은 폴리곤이 존재하는 경우가 아니라면, 619 단계가 수행되고, 기하 프로세서 및 그래픽 프로세서는 부하 평형되었음이 표시된다. 다시 상기한 바와 같이, 601 단계가 수행된다(도 6A 참조).
상기한 바와 같이, 이것은 성능 데이터에 대한 렌더링 제어 프로세서(522)에 의해 실행되는 많은 가능한 분석 중의 하나의 실시예에 불과한 것이다. 다른 변수들이 질의될 수 있고, 다른 상한/하한치가 적용될 수 있는 것이다. 예를 들어, DRAM 페이지 브레이크의 개수 및 텍스쳐 오류의 개수에 대한 데이터 모두 601 단계에서 수집될 수 있다.
602 단계에서, 상한치보다 더 높은 많은 페이지 브레이크는 그래픽 태스크에 할당된 그래픽 프로세서(507)의 개수의 과부하에 대한 테스트의 일부로서 사용될 수 있다. 이와 유사하게, 한 주기 동안의 텍스쳐 오류의 개수는 그래픽 프로세서(507)의 개수가 계산 가능하게 과부하 상태인지의 여부를 테스트하는 방법으로서의 상한치와 비교될 수 있다. 각각의 경우에, 개수가 상한치보다 더 큰 것인지의 여부를 테스트하게 되는 것이다. 다시, 개수의 상한/하한치는 조정, 알고리즘 또는 조정된 알고리즘에 의해 결정될 수 있는 것이다.
그래픽 최적화에 대한 구성 부하 평형(configuration load balancing)의 애플리케이션에 최적 조건이 아닌 상태가 있을 수 있다. 상기한 바와 같이, 통계적으로 의미 있는 양의 데이터를 수집하기 위해 성능 데이터의 수집에 소요되는 한 주기의 시간이 충분해야 한다. 그러나, 그 객체가 렌더링되는 폴리곤의 수 및 폴리곤의 평균적인 위치 또는 크기와 같은 폴리곤의 특성이 급격하게 변한다면, 프로세서, 버퍼 및 채널의 구성을 충분히 빠르게 변경시키는 궤환 루프를 만들기 위해 한 주기의 시간이 감소되어야 한다. 그러나, 602 단계에서와 같은 성능 데이터의 분석, 603, 604 및 605 단계 또는 606, 607 및 608 단계중의 어느 하나의 단계에서 실행되는 결정 및 재구성(reconfiguration)은 상당한 정도의 시간 및 계산이 요구된다. 그러므로, 렌더링되는 프레임이 폴리곤 특성을 급격하게 변경시키는 상황에서, 계산 및 재구성에 연관된 지체에 의해서 궤환 루프가 얼마나 빨리 만들어지는가에 제한이 가해진다.
특정예로서, 컴퓨터 게임에서의 자동차 충돌에서 볼 수 있듯이, 배경(背景)에서 발생하여 전경(前景)으로 빠르게 날아드는 깨진 창문의 파편은 이러한 그래픽 객체에 대한 폴리곤 특성을 급격하게 변화시키게 된다. 이러한 그래픽 객체의 그래픽 프로세스는 구성 부하 평형법(configuration load balancing method)을 이용하게 되면 더 어렵게 될 것이다. 이러한 점을 어드레스(address)하는 한 가지 방법은 가변적임과 동시에 알고리즘으로 결정되는 일정 주기의 시간을 확보하는 것이다. 이러한 것은 미리 결정된(프로그래밍 중에 조정(tuning)을 행함으로써) 것에 대립되는 것이다.
그러나, 데이터의 통계적 수집, 상기 데이터의 분석, 새로운 구성의 결정, 및 기하 프로세서와 그래픽 프로세서의 개수의 재구성, 및 상기 프로세서와 연관된 채널과 버퍼에 대한 상기와 같은 접근 방법에서는 가변적인 주기의 사용에 대해 제한을 가하게 되는 연관된 지체 시간이 발생된다.
다른 접근 방법은 분석 단계 602에서 선택하게 되는 한 세트의 구성을 미리 결정하는 것이다. 이러한 것은 실질적으로 기하 프로세서(501)의 개수, 그래픽 프로세서(507)의 개수 및 구성 채널과 버퍼(514)의 구성을 결정하게 되는 계산 가능한 부하를 감소시키게 된다. 이와 같이, 구성 부하 평형법에 대한 소정의 구성 접근 방식은 궤환 루프에서의 더 짧은 지연 시간 응답(lag time response)을 가능하게 해 주고, 따라서 폴리곤의 특성을 급격하게 변경시키는 그래픽 객체를 훨씬 더 잘 다룰 수 있게 된다.
상기한 방법에 대한 기하 프로세서(501)의 개수와 그래픽 프로세서(507)의 개수를 부하 평형시키는 다른 방법이 있다. 한 가지 방법은 모자이크 분할(tessellation)에 의하는 것이다. 모자이크 분할은 표시될 그래픽 객체를 한 세트 의 폴리곤으로 전환하는 과정이다. 모자이크 분할은 대개 기하 프로세서(501)의 개수 이내에서 실행된다. 모자이크 분할의 양은 증가될 수도 있고, 감소될 수도 있다.
모자이크 분할의 양을 증가시킴으로써, 특정의 그래픽 객체에 대해 렌더링되는 폴리곤의 수가 증가되고, 특정 폴리곤에 대해 렌더링되는 폴리곤의 평균적인 크기가 감소된다. 모자이크 분할의 양을 감소시킴으로써, 특정의 그래픽 객체에 대해 렌더링되는 폴리곤의 수가 감소되지만, 특정 그래픽 객체를 렌더링하는 동안에 렌더링되는 폴리곤의 평균적인 크기는 증가된다.
모자이크 분할이 컴퓨터 그래픽을 최적화하기 위해 특별히 유용한 방법이 되는 몇 가지 경우가 있다. 도 7A는 701 단계에서 평균적인 폴리곤 크기를 수집하는 것을 보여준다. 다음 단계는 702 단계로서, 한 주기의 시간 동안 DRAM 페이지 브레이크의 개수를 수집하는 것을 보여준다. 다음 단계는 703 단계로서, 한 주기의 시간 동안 텍스쳐 오류의 개수를 수집하는 것을 보여준다.
704 단계에서는 평균적인 폴리곤 크기를 폴리곤 크기의 상한치와 비교하게 된다. 705 단계에서는 DRAM 페이지 브레이크의 개수를 DRAM 페이지 브레이크 개수의 상한치와 비교하게 된다. 706 단계에서는 텍스쳐 오류의 개수를 텍스쳐 오류 개수의 상한치와 비교하게 된다. 시험 단계인 704, 705 및 706 단계중 어떤 것에 대해서 한 주기 동안의 값이 상한치보다 작은 경우에는, 707, 708 및 709 단계에서와 같이, 모자이크 분할의 양은 변함이 없다. 그러나, 모든 경우에 있어서 한 주기 동안의 값이 상한치를 넘어서게 되면, 710 단계에서 모자이크 분할의 양이 증가하는 것으로 결정하게 된다.
710 단계에서의 모자이크 분할의 양의 증가는 광범위한 실행에 다양하게 변할 수 있는 알고리즘에 좌우된다. 그러나, 711 단계에서의 모자이크 분할의 증가에 의해 다음 주기의 시간 동안의 평균적인 폴리곤 크기가 작아지게 되고, 이러한 것은 다음 주기의 시간 동안 페이지 브레이크의 개수 감소 및 텍스쳐 오류의 개수 감소를 초래하게 될 것이다.
도 7B는 모자이크 분할 크기를 감소시키는 과정을 나타낸 것이다. 다른 이유때문에 이러한 과정이 진행된다는 점을 주목할 필요가 있다. 객체의 모자이크 분할이 너무나 커서 결과적으로 폴리곤의 평균적인 크기가 픽셀(pixel)의 크기만큼 작거나 또는 이보다 더 작다면, 폴리곤 정점에 포함된 정보를 잃게 될 것이다. 이와 같이, 모자이크 분할이 이루어지고 많은 폴리곤 정점의 정보가 생성되지만, 매우 계산상 비효율적이기 때문에 이러한 정보는 렌더링 중에는 사용되지 않게 된다. 이와 같이, 722 단계에서는 한 주기의 시간 동안의 평균적인 폴리곤 크기가 그래픽 시스템의 특정 실행에 대한 픽셀 크기와 비교된다.
720 단계에서는 한 주기의 시간 동안 평균적인 폴리곤 크기가 수집된다. 724 단계에서는 722 단계의 결과를 질의하게 된다. 만일 폴리곤 크기가 픽셀의 크기와 같거나 더 작다면, 모자이크 분할 감소량이 726 단계에서 측정된다. 만일 폴리곤의 크기가 픽셀의 크기보다 더 크다면, 724 단계에서 아무런 변화가 없다. 그래픽 태스크를 처리하는 기하 프로세서(501)에서의 모자이크 분할의 양은 728 단계에서 감소된다. 승수(乘數)(multiplier) 또는 배율기(scaler) 또는 픽셀 값(pixel value) 이 안전 마진(safety margin)을 늘리고 잃어버린 폴리곤의 정점 정보를 피하기 위해 어느 정도의 양으로 픽셀 값을 증가시키는데 사용될 수 있다는 점을 주목할 필요가 있다.
모순으로 보일 수 있을지언정, 부하 평형의 구성 방법(configuration method) 및 그래픽 최적화의 모자이크 분할 방법은 동시에 적용될 수도 있다. 예를 들어, 기하 프로세서가 하나의 그래픽 프로세서로 결과를 전송해야 하는 경우에, 기하 프로세서는 100,000 개 이상의 폴리곤을 다룰 수 있다. 이러한 예에서, 폴리곤은 그 크기가 너무 작아서 픽셀에 의한 해상도(resolution)가 떨어질 수 있다. 따라서, 이 경우에 모순으로 보일 수는 있지만, 도 7B에 나타낸 모자이크 분해 방법에 따라 폴리곤 크기를 증가시키기 위해 모자이크 분해량을 감소시키게 될 것이다.
그러나, 이러한 것은 한 주기의 시간 동안 평균적인 폴리곤 크기의 미세한 증가에 해당되고, 렌더링 되는 폴리곤의 개수에 있어서 미세한 감소에 해당된다. 또한, 이러한 것은 두 개의 기하 엔진(geometry engine)-하나의 그래픽 프로세서 구성을 만들어내는 크로스-바(cross-bar) 채널 및 버퍼(514)의 구성에 영향을 주지 않게 될 것이다.
이와 유사하게, 하나의 기하 프로세서가 그 출력을 두 개의 그래픽 프로세서로 전송하는 경우에, 기하 프로세서는 하나에서 열까지의 폴리곤을 다룰 수 있게 된다. 그러한 경우에, 큰 폴리곤은 과다한 페이지 브레이크 및 텍스쳐 오류를 야기하여 계산 가능한 부하의 증가가 초래될 것으로 예상할 수 있다. 따라서, 도 7A에 나타낸 모자이크 분할 방법의 애플리케이션은 그래픽 객체 또는 표시될 객체들의 모자이크 분할을 증가시키게 되어, 결과적으로 그래픽 태스크에 있어서 폴리곤의 수를 증가시키고 그러한 폴리곤의 평균적인 크기를 감소시키게 된다.
그러나, 도 7A에 나타낸 모자이크 분할 방법의 애플리케이션은, 예를 들어, 표시될 폴리곤의 수를 100개로 증가시키게 된다. 한 주기 동안 렌더링될 폴리곤의 이러한 수적인 변화 및 그러한 폴리곤의 평균적인 크기는, 도 6A 및 6B에 나타낸 구성 방법에 의한 두 개의 기하 프로세서-하나의 그래픽 프로세서 구성에 있어서 변화를 유발하는데 필요한 어떤 종류의 변화와 비교하여, 다시 작아지게 된다. 따라서, 부하 평형의 구성 방법 및 그래픽 최적화에 대한 모자이크 분할 접근 방법은 서로 모순되는 것은 아니다. 구성 방법(configuration method)은 가변적인 모자이크 분할 방법(variable tessellation method)보다 훨씬 많은 폴리곤 특성의 변화량을 다루게 된다.
도 8은 그래픽 프로세서 장치(500)와 동일한 구성 요소를 포함하고 있다. 같은 도면 번호를 기입한 구성 요소는 서로 유사한 것이다. 구성 가능한 통신 채널 및 버퍼(514)를 구성 요소가 없는 부분에 도시하였다.
크로스-바 채널의 분리 및 결합(808)에 의해 기하 프로세서(502, 504, 506)가 DLFIFO 버퍼(810)에 접속된다. 제어 프로세서(524)는 기하 프로세서 할당 통신 채널(814)에 의해 기하 프로세서(502, 504, 506)를 제어한다. 제어 프로세서(524)는 버퍼 할당 채널(816)에 의해 통신 채널(808)을 제어한다. 제어 프로세서(524)는 버퍼 할당 채널(816)에 의해 표시 목록 FIFO 버퍼(810)도 제어하게 된다.
그래픽 프로세서(508, 510, 512)는 일대일 크로스바 채널(812)과 DLFIFO 버퍼(810)에 접속된다. 그러나, 그래픽 프로세서는 더 상세한 내용을 보여준다. 렌더링 제어 프로세서(522)는 그래픽 프로세서(508, 510, 512)로부터 성능 데이터를 수집하여 이를 궤환 채널(526)에 의해 제어 프로세서(524)로 전송한다.
크로스-바 채널의 분리 및 결합(808)은 재구성되어 기하 프로세서(502)와 같은 단독의 기하 프로세서가 2 이상의 DLFIFO 버퍼(810)에 전송되는 출력 표시 목록을 구비할 수 있게 된다. 교환적으로, 기하 프로세서(502, 504)와 같은 2 이상의 기하 프로세서는 크로스바 채널에 의해 단독의 DLFIFO 버퍼(810)에 결합된 표시 목록을 구비할 수 있다.
대조적으로, 일대일 크로스바 채널(812)은 DLFIFO 버퍼(810)상에서 결과로 얻어지는 일련의 표시 목록을 분리하지도 결합하지도 않지만, 그래픽 프로세서(508)와 같은 하나의 그래픽 프로세서가 구비된 하나의 DLFIFO 버퍼(810)의 일련의 표시 목록과 통신만을 행할 수 있다. 일대일 크로스바 채널은 입력/출력 ASIC(Input/Output Application Specific Integrated Circuit: 응용 주문형 집적 회로)으로서, 통신 채널(818)에 의해 제어될 것이다.
그래픽 프로세서(508, 510, 512)로부터 전송된 성능 데이터는 그래픽 프로세서의 구조에 좌우된다. 그래픽 프로세서(508, 510, 512)는 도시된 바와 같이 멀티패스 제어기(820, 822, 824)가 추가된 점을 제외하고는 그래픽 프로세서(106)와 유사하다. 예를 들어, 그래픽 프로세서(508)는 그래픽 프로세서(108)와 유사하다. 그래픽 프로세서(508)는 입력 버퍼(826)를 구비한다. 멀티패스 제어기(820)는 입력 버퍼(826)에 접속되어 있다. 디지털 미분 분석기(digital differential analyzer, 이하 "DDA")(828)는 멀티패스 제어기(820)에 접속되어 있다. 픽셀 프로세서(830)는 DDA(828)로부터 데이터를 수신한다. 텍스쳐 버퍼(832) 및 DRAM 페이지 버퍼(834)는 모두 픽셀 프로세서(830)와 통신할 수 있는 상태이다. 프레임 버퍼(836)는 텍스쳐 버퍼(832, 834)와 통신할 수 있는 상태이다. 그래픽 프로세서(510, 512)는 이와 유사하게 설치된다.
그래픽 프로세서(508)의 각 구성 요소는 제어 정보를 렌더링 제어 프로세서(522)와 통신하게 된다. 입력 버퍼(826)는 입력 버퍼내의 일정량의 데이터를 렌더링 제어 프로세서(522)와 통신하게 된다. 멀티패스 제어기(820)는 패스의 number를 렌더링 제어 프로세서(522)와 통신하게 된다.
DDA(828)는 DDA가 그리는 폴리곤의 크기를 렌더링 제어 프로세서(522)와 통신하게 된다. 다수의 구현에 있어서, DDA(828)의 셋업 엔진은 렌더링될 폴리곤의 크기를 통신한다. 픽셀 프로세서(830)는 텍스쳐 판독 시간(texture read time)을 렌더링 제어 프로세서(522)와 통신하게 된다.
최종적으로, 프레임 버퍼(836)는 DRAM 페이지 브레이크가 발생한 경우에 렌더링 제어 프로세서(522)와 통신하게 된다. 그래픽 프로세서(510, 512)의 각 유사한 구성 요소는 유사한 정보를 렌더링 제어 프로세서(522)와 통신하게 된다. 렌더링 제어 프로세서(522)는 그래픽 프로세서(508, 510, 512)로부터 입력된 정보를 처리하여, 도 5에 도시된 바와 같이, 제어 프로세서에 대한 궤환(feedback)을 생성하게 된다.
동작 중에, 버퍼 할당 통신 채널(816)은, 제어 프로세서(524)가 버퍼로서 사용될 기하 프로세서에 의해 생성된 표시 목록에 대한 메모리 구역을 지정할 수 있도록 한다. 이러한 버퍼는 단독의 메모리 내에 위치할 수도 있고, 다른 메모리 사이에 분산되어 위치할 수도 있다. 통신 채널(818)은 제어 프로세서(524)가 기하 프로세서(502, 504, 506)로부터의 결과를 그래픽 프로세서(508, 510, 512)로 보내기 위해 통신 채널(818)의 크로스바 구조를 활용할 수 있도록 한다. 멀티패스 제어기(820)는 여러 번 렌더링될 동일한 폴리곤을 허용한다.
상기한 그래픽 프로세스 장치(800)의 구조 및 특히, 그래픽 프로세서(508, 510, 512)의 내부 구조는 렌더링 제어 프로세서(522)에 의해 수신될 일단의 성능 데이터를 설명해준다. 이러한 성능 데이터에는, 텍스쳐 버퍼 오류 및 DRAM 페이지 버퍼 오류가 발생하는가에 관계없이, 폴리곤상의 입력 버퍼내 일정량의 데이터, 멀티패스 제어기에 의한 일정수의 패스, DDA에 의해 그려진 폴리곤의 크기가 포함된다. 이러한 정보는 그래픽 프로세서 내 계산 가능한 부하를 좀 더 정확하게 결정하는데 이용된다. 또한, 이러한 정보는 선택적인 최적화 방법을 가능하게 한다.
예를 들어, 작은 폴리곤이 프레임 버퍼내에서 DRAM 페이지 브레이크를 결정하는 라인에 놓이는 동안에도, 이러한 정보는 상기한 결정을 수행하고, 최적화를 가능하게 한다. 만일, 렌더링 제어 프로세서(522)가 다수의 페이지 브레이크 및 평균적인 폴리곤 크기 정보를 나타내는 페이지 브레이크 정보를 수신한다면, 렌더링 제어 프로세서(522)는 제어 프로세서(524)가 작은 폴리곤을 "클립(clip)하도록" 지시한다. 다시 말해서, 다른 DRAM 페이지상에 위치하는 작은 폴리곤의 더 큰 부분이 렌더링되는 반면에, 하나의 DRAM 페이지상에 위치하는 작은 폴리곤의 더 작은 부분은 렌더링되지 않을 것이다. 작은 폴리곤에 있어서는, 그래픽의 질(quality) 저하는 계산상 효율이라는 이점에 비교하면 매우 미미하다.
유사한 조건하에서는 클리핑(clipping) 이외에 분리된 그래픽 프로세스 최적화 기술이 적용된다. 다수의 DRAM 페이지 브레이크에 연관된 대체로 작은 폴리곤 크기로 클리핑이 일어나고 텍스쳐 오류가 표시되는 반면에, 만일 조건에 매우 많은 작은 폴리곤이 포함되고 작은 폴리곤이 무작위로 또는 의사-무작위로(pseudo-randomly) 프레임 버퍼 근방에 분포되면, 매우 큰 계산 가능한 부하가 얻어진다.
이러한 점은 DRAM 페이지 브레이크가 많이 증가되거나 또는 소위 DRAM 페이지 스왑(swap)이라 불리우는 것에 기인하는 것이다. 만일 표시되는 다수의 폴리곤이 프레임 버퍼(830) 상에 무작위로 분포된다면 DRAM 메모리의 페이지는 일정하게 안팎으로 스왑되므로, 프레임 버퍼(830)에 대한 광대역폭(large bandwidth)에도 불구하고 실질적으로 속도 감소 현상이 나타난다.
다시, 궤환 루프의 개념을 실행함에 있어서, "틸팅(tilting)"에 의해 이러한 점을 어드레스할 수 있다. 이것은 필수적인 프레임 버퍼 페이지의 공간상 일련화(serialization) 과정이다. 원래 표시되어야 할 3차원 객체에 좌우되는 순서대로 렌더링될 객체를 렌더링하기보다는, 객체가 폴리곤으로 변형된 후, 단독 프레임의 폴리곤은 연속된 방법으로 처리되기 위해 재정렬된다. 예를 들면, 왼쪽에서 오른 쪽으로 이후 위에서 아래로와 같은 순서이다.
이를 상세하게 설명하기 위해, 트리(tree)와 같은 그래픽 객체를 렌더링하는 경우를 고려하기로 한다. 그래픽 장치(800)의 일반적인 동작의 경우에, 폴리곤은 트리에서 발생하는 순서대로 렌더링될 것이다. 공간상의 일련화 과정 후에, 프레임은 트리 객체의 폴리곤 순서와 상관없이 페이지별로 렌더링될 것이다. 이와 같이, 틸팅 후에 재정렬에 계산 가능한 시간을 추가하는 동안, 시험된 특정 조건하에서의 결과는 계산상 효율을 실질적으로 향상시키게 될 것이다.
멀티패스 제어기(820)는 도 1에 원래는 나타내지 않았던 특별한 구성 요소이다. 멀티패스 제어기는 프레임 버퍼(836)와 픽셀 프로세서(830)의 사이의 광대역폭 및 멀티패스 렌더링을 가능하게 하는 그래픽 프로세서(508) 내의 상대적으로 짧은 전체 파이프 라인을 이용한다. 예를 들어, 첫 번째 렌더링 패스는 폴리곤을 그려서 채우게 될 것이고, 두 번째 렌더링 패스는 폴리곤을 텍스쳐 할 것이며, 세 번째 렌더링 패스는 폴리곤을 음영처리한다. 한 개, 두 개 또는 세 개의 패스가 사용될 수 있다.
이러한 멀티패스 제어기(820)는 어떤 종류의 예측 부하 평형(predictive load balancing)을 가능하게 해 준다. 이러한 예측 부하 평형은 멀티패스 유닛이 가지게 되는 많은 양의 정보에 좌우된다. 이러한 많은 양의 정보에는 적어도 채워진 입력 버퍼(826)의 퍼센티지(percentage), 멀티패스 제어기(820)에 의해 만들어진 패스의 개수, 완성된 현재 폴리곤의 렌더링 퍼센티지 및 일련화된 표시 목록을 그래픽 프로세서(508)로 제공하는 DLFIFO 버퍼(810)의 버퍼에 있어서의 폴리곤의 개수를 포함한다.
이러한 정보는 렌더링 제어 프로세서(522) 또는 제어 프로세서(524) 중 하나 가, 입력 버퍼에 더 많은 데이터가 필요한 때가 언제인지를 예측하게 하여 기하 프로세서가 더 많은 객체를 초기 폴리곤의 표시 목록으로 변환을 개시하도록 하거나, 이미 진행중인 그래픽 태스크로 더 많은 기하 프로세서를 할당하도록 할 것이다. 이러한 예측 모드 평형(predictive mode balancing)을 수행하는데 사용되는 정보의 속성은 구성 부하 평형 및 모자이크 분할 최적화에 사용되는 정보의 속성과는 다르기는 하지만, 여전히 그래픽 프로세스 최적화를 가능하게 해 준다.
비록, 본 명세서에는 특정예를 들어 본 발명을 설명했지만, 이는 본 발명의 원리 및 응용예를 단지 설명하기 위한 것이었다는 점은 자명한 것이다. 따라서, 본 발명의 많은 변형예가 가능하고, 첨부된 청구범위에 의해 제한되는 본 발명의 사상 및 범위내에서 다른 구성도 가능한 것이다.
본 발명은 일반적으로 그래픽 프로세스를 최적화하는 방법에 적용될 수 있고, 특히 멀티 프로세서 시스템에 대한 그래픽 프로세스를 최적화하는 방법에 적용될 수 있다.

Claims (25)

  1. a) 첫 번째 기하 프로세서를 그래픽 태스크에 할당하고, 두 번째 그래픽 프로세서를 그래픽 태스크에 할당하는 단계;
    b) 한 주기의 시간 동안 상기 두 번째 그래픽 프로세서로부터 성능 데이터를 수집하는 단계;
    c) 상기 수집된 성능 데이터를 알고리즘으로 분석하는 단계; 및
    d) 상기 수집된 성능 데이터의 분석 결과에 따라 특정 컴퓨터 그래픽 태스크에 할당된 상기 첫 번째 기하 프로세서 및 상기 두 번째 그래픽 프로세서 중 적어도 하나를 변경하는 단계;를 포함하는 것을 특징으로 하는 그래픽 프로세스 최적화 방법.
  2. 제 1항에 있어서,
    상기 첫 번째 기하 프로세서는 객체 데이터를 폴리곤의 정점 데이터로 변환하고,
    상기 두 번째 그래픽 프로세서는 상기 폴리곤을 버퍼 메모리로 렌더링하며,
    상기 한 주기의 시간 동안 성능 데이터를 수집하는 단계는,
    a) 상기 렌더링되는 폴리곤의 개수를 세는 단계; 및
    b) 상기 렌더링되는 폴리곤의 평균적인 크기를 계산하는 단계;를 포함하는 것을 특징으로 하는 그래픽 프로세스 최적화 방법.
  3. 제 2항에 있어서,
    상기 렌더링되는 폴리곤은 복수개의 픽셀을 포함하고,
    상기 렌더링되는 폴리곤의 평균적인 크기를 계산하는 단계는 상기 렌더링되는 픽셀의 개수를 세는 단계와 상기 렌더링되는 폴리곤의 개수에 의해 분할하는 단계를 포함하는 것을 특징으로 하는 그래픽 프로세스 최적화 방법.
  4. 제 3항에 있어서,
    상기 수집된 성능 데이터를 분석하는 단계는,
    a) 폴리곤 개수의 하한치보다 더 적은 상기 폴리곤의 개수를 발견하는 단계;
    b) 폴리곤의 평균적인 크기의 상한치보다 더 큰 상기 폴리곤의 평균적인 크기를 발견하는 단계; 및
    c) i) 그래픽 태스크에 할당된 상기 첫 번째 기하 프로세서의 개수를 감소, 또는 ii) 그래픽 태스크에 할당된 상기 두 번째 그래픽 프로세서의 개수를 증가, 또는 iii) 상기 첫 번째 기하 프로세서의 개수를 감소 및 상기 두 번째 그래픽 프로세서의 개수를 증가시키는 어느 하나를 결정하는 단계;를 포함하는 것을 특징으로 하는 그래픽 프로세스 최적화 방법.
  5. 제 4항에 있어서,
    상기 첫 번째 기하 프로세서의 개수 및 상기 두 번째 그래픽 프로세서의 개수를 변경시키는 단계는,
    a) 상기 첫 번째 기하 프로세서의 개수를 감소시키는 단계, 또는
    b) 상기 두 번째 그래픽 프로세서의 개수를 증가시키는 단계, 또는
    c) 상기 첫 번째 기하 프로세서의 개수를 감소시키고, 상기 두 번째 그래픽 프로세서의 개수를 증가시키는 단계 중 어느 하나를 포함하는 것을 특징으로 하는 그래픽 프로세스 최적화 방법.
  6. 제 3항에 있어서,
    상기 수집된 성능 데이터를 분석하는 단계는,
    a) 폴리곤 개수의 상한치보다 더 많은 상기 폴리곤의 개수를 발견하는 단계;
    b) 폴리곤의 평균적인 크기의 하한치보다 더 작은 상기 폴리곤의 평균적인 크기를 발견하는 단계; 및
    c) i) 상기 첫 번째 기하 프로세서의 개수를 증가, 또는 ii) 상기 두 번째 그래픽 프로세서의 개수를 감소, 또는 iii) 상기 첫 번째 기하 프로세서의 개수를 증가 및 상기 두 번째 그래픽 프로세서의 개수를 감소시키는 어느 하나를 결정하는 단계;를 포함하는 것을 특징으로 하는 그래픽 프로세스 최적화 방법.
  7. 제 6항에 있어서,
    상기 첫 번째 기하 프로세서의 개수 및 상기 두 번째 그래픽 프로세서의 개수를 변경시키는 단계는,
    a) 상기 첫 번째 기하 프로세서의 개수를 증가시키는 단계, 또는
    b) 상기 두 번째 그래픽 프로세서의 개수를 감소시키는 단계, 또는
    c) 상기 첫 번째 기하 프로세서의 개수를 증가시키고, 상기 두 번째 그래픽 프로세서의 개수를 감소시키는 단계 중 어느 하나를 포함하는 것을 특징으로 하는 그래픽 프로세스 최적화 방법.
  8. 제 1항에 있어서, 상기 한 주기의 시간은 10,000 클록 사이클을 포함하는 것을 특징으로 하는 그래픽 프로세스 최적화 방법.
  9. 제 1항에 있어서,
    상기 그래픽 프로세스 최적화 방법은,
    a) 한 세트의 버퍼를 제공하는 단계;
    b) 상기 첫 번째 기하 프로세서를 상기 버퍼 세트에 접속하는 첫 번째 크로스 바 채널을 제공하는 단계; 및
    c) 상기 두 번째 그래픽 프로세서를 상기 버퍼 세트에 접속하는 두 번째 크로스 바 채널을 제공하는 단계;를 포함하는 것을 특징으로 하는 그래픽 프로세스 최적화 방법.
  10. 제 9항에 있어서,
    상기 그래픽 태스크에 할당된 첫 번째 기하 프로세서 및 상기 그래픽 태스크에 할당된 두 번째 그래픽 프로세서 중 적어도 하나를 변경하는 단계는,
    a) 임의의 구성으로부터 상기 첫 번째 크로스 바 채널에 대한 새로운 구성을 계산하는 단계;
    b) 임의의 구성으로부터 상기 한 세트의 버퍼에 대한 새로운 구성을 계산하는 단계;
    c) 임의의 구성으로부터 상기 두 번째 크로스 바 채널에 대한 새로운 구성을 계산하는 단계;
    d) 상기 새로운 구성에 상기 첫 번째 크로스 바 채널을 재구성하는 단계;
    e) 상기 새로운 구성에 상기 한 세트의 버퍼를 재구성하는 단계;
    f) 상기 새로운 구성에 상기 두 번째 크로스 바 채널을 재구성하는 단계;를 포함하는 것을 특징으로 하는 그래픽 프로세스 최적화 방법.
  11. 제 9항에 있어서,
    상기 그래픽 태스크에 할당된 첫 번째 기하 프로세서 및 상기 그래픽 태스크에 할당된 두 번째 그래픽 프로세서의 적어도 하나를 변경하는 단계는,
    a) 소정의 세트의 구성으로부터 상기 첫 번째 크로스 바 채널, 상기 한 세트의 버퍼 및 상기 두 번째 크로스 바 채널에 대한 새로운 구성을 선택하는 단계; 및
    b) 선택된 소정의 구성에 상기 첫 번째 크로스 바 채널, 상기 한 세트의 버퍼 및 상기 두 번째 크로스 바 채널을 구성하는 단계;를 포함하는 것을 특징으로 하는 그래픽 프로세스 최적화 방법.
  12. a) 첫 번째 기하 프로세서를 그래픽 태스크에 할당 및 두 번째 그래픽 프로세서를 그래픽 태스크에 할당하는 단계;로서, 상기 첫 번째 기하 프로세서는 객체 데이터를 폴리곤의 정점 데이터로 변환하고, 상기 두 번째 그래픽 프로세서는 상기 폴리곤을 버퍼 메모리로 렌더링하며, 상기 폴리곤은 복수개의 픽셀을 포함하고,
    b) 한 주기의 시간 동안 상기 두 번째 그래픽 프로세서로부터 성능 데이터를 수집하는 단계;
    c) 상기 수집된 성능 데이터를 알고리즘으로 분석하는 단계; 및
    d) 상기 수집된 성능 데이터의 분석 결과에 따라, 렌더링되는 객체의 모자이크 분할을 증가시킴으로써 첫 번째 기하 프로세서에 의해 생성되는 폴리곤의 개수를 증가시키고 평균적인 크기를 감소시키는 단계;를 포함하는 것을 특징으로 하는 그래픽 프로세스 최적화 방법.
  13. 제 12항에 있어서,
    상기 성능 데이터를 분석하는 단계는,
    a) 상기 렌더링되는 폴리곤의 개수 및 픽셀의 개수를 세는 단계;
    b) 상기 평균적인 폴리곤 크기를 계산하는 단계;
    c) 텍스쳐 오류의 개수를 수집하는 단계; 및
    d) DRAM 페이지 브레이크의 개수를 수집하는 단계;를 포함하는 것을 특징으로 하는 그래픽 프로세스 최적화 방법.
  14. 제 13항에 있어서, 상기 렌더링되는 폴리곤의 평균적인 크기를 계산하는 단계는, 상기 렌더링되는 픽셀의 개수를 수집하는 단계; 및 상기 렌더링되는 폴리곤의 개수에 의해 분할하는 단계;를 포함하는 것을 특징으로 하는 그래픽 프로세스 최적화 방법.
  15. a) 첫 번째 기하 프로세서를 그래픽 태스크에 할당 및 두 번째 그래픽 프로세서를 그래픽 태스크에 할당하는 단계;로서, 상기 첫 번째 기하 프로세서는 객체 데이터를 폴리곤의 정점 데이터로 변환하고, 상기 두 번째 그래픽 프로세서는 상기 폴리곤을 버퍼 메모리로 렌더링하며, 상기 폴리곤은 복수개의 픽셀을 포함하고,
    b) 한 주기의 시간 동안 상기 두 번째 그래픽 프로세서로부터 성능 데이터를 수집하는 단계;
    c) 상기 수집된 성능 데이터를 알고리즘으로 분석하는 단계; 및
    d) 상기 수집된 성능 데이터의 분석 결과에 따라, 생성되는 객체의 모자이크 분할을 감소시킴으로써 첫 번째 기하 프로세서에 의해 생성되는 폴리곤의 개수를 감소시키고 평균적인 크기를 증가시키는 단계;를 포함하는 것을 특징으로 하는 그래픽 프로세스 최적화 방법.
  16. 제 15항에 있어서, 상기 성능 데이터를 수집하는 단계는 평균적인 폴리곤 크기를 수집하는 단계를 포함하는 것을 특징으로 하는 그래픽 프로세스 최적화 방법.
  17. 제 15항에 있어서,
    상기 평균적인 폴리곤 크기를 수집하는 단계는,
    a) 상기 렌더링되는 폴리곤의 개수 및 픽셀의 개수를 세는 단계;
    b) 상기 렌더링되는 픽셀의 개수를 수집하는 단계; 및
    c) 상기 렌더링되는 픽셀의 개수에 의해 렌더링되는 폴리곤의 개수를 분할하는 단계;를 포함하는 것을 특징으로 하는 그래픽 프로세스 최적화 방법.
  18. 제 16항에 있어서, 상기 성능 데이터를 분석하는 단계는, 상기 평균적인 폴리곤의 크기가 특정 크기보다 더 작은지를 체크하는 단계를 포함하는 것을 특징으로 하는 그래픽 프로세스 최적화 방법.
  19. 제 16항에 있어서, 상기 성능 데이터를 분석하는 단계는, 상기 평균적인 폴리곤의 크기가 픽셀의 크기보다 더 작은지를 체크하는 단계를 포함하는 것을 특징으로 하는 그래픽 프로세스 최적화 방법.
  20. a) 적어도 그래픽 태스크의 일부분을 부분적으로 수행하는 적어도 하나의 기하 프로세서;
    b) 상기 그래픽 태스크의 적어도 다른 부분을 부분적으로 수행하는 적어도 하나의 그래픽 프로세서;
    c) 적어도 하나의 기하 및 그래픽 프로세서 사이의 통신을 가능하게 하는 통신 채널; 및
    d) 상기 기하 프로세서와 상기 그래픽 프로세서간에 상기 통신 채널을 통해 통신하는 제어 프로세서;를 포함하고, 그래픽 데이터를 프로세스하는 그래픽 프로세스 회로를 구비하되,
    상기 제어 프로세서는 적어도 하나의 기하 및 그래픽 프로세서가 효율적으로 활용되고 있는지 여부를 결정하고, 필요하다면 하나 이상의 상기 기하 및 그래픽 프로세서가 상기 그래픽 태스크를 수행하는 상기 그래픽 프로세스 회로의 효율을 개선하도록 선택적으로 할당 또는 할당하지 않는 것을 특징으로 하는 컴퓨터 시스템.
  21. 제 20항에 있어서, 상기 적어도 하나의 기하 프로세서는 복수개의 기하 프로세서를 포함하고, 상기 적어도 하나의 그래픽 프로세서는 복수개의 그래픽 프로세서를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  22. 제 21항에 있어서, 상기 복수개의 기하 프로세서는 객체의 폴리곤 정점 데이터로의 3차원-2차원 전환을 수행하는 것을 특징으로 하는 컴퓨터 시스템.
  23. 제 22항에 있어서, 상기 복수개의 그래픽 프로세서는 상기 폴리곤을 버퍼 메모리로 렌더링하고, 상기 폴리곤은 복수개의 픽셀을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  24. 제 23항에 있어서,
    상기 통신 채널은,
    a) 크로스 바 구조를 갖는 첫 번째 채널;
    b) 상기 첫 번째 채널을 통해 상기 복수개의 기하 프로세서로부터 데이터를 수신하기 위해 접속된 적어도 하나의 버퍼 메모리; 및
    c) 상기 복수개의 그래픽 프로세서와 상기 적어도 하나의 버퍼 메모리간에 통신이 가능하도록 준비된 일대일 크로스 바 구조를 갖는 두 번째 채널;을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  25. 제 24항에 있어서, 상기 통신 채널은, 상기 복수개의 그래픽 프로세서와 상기 제어 프로세서간에 성능 데이터의 통신을 용이하게 해 주는 것을 특징으로 하는 컴퓨터 시스템.
KR1020047014308A 2002-03-11 2003-03-11 그래픽 프로세스 최적화 방법 및 시스템 KR100959468B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/095,213 US6919896B2 (en) 2002-03-11 2002-03-11 System and method of optimizing graphics processing
US10/095,213 2002-03-11
PCT/JP2003/002823 WO2003077120A2 (en) 2002-03-11 2003-03-11 System and method of optimizing graphics processing

Publications (2)

Publication Number Publication Date
KR20040104510A KR20040104510A (ko) 2004-12-10
KR100959468B1 true KR100959468B1 (ko) 2010-05-25

Family

ID=27788216

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047014308A KR100959468B1 (ko) 2002-03-11 2003-03-11 그래픽 프로세스 최적화 방법 및 시스템

Country Status (8)

Country Link
US (1) US6919896B2 (ko)
EP (2) EP1662441B1 (ko)
JP (2) JP2005520234A (ko)
KR (1) KR100959468B1 (ko)
CN (1) CN1317682C (ko)
AU (1) AU2003212649A1 (ko)
DE (1) DE60331482D1 (ko)
WO (1) WO2003077120A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101400270B1 (ko) * 2013-02-13 2014-05-28 부경대학교 산학협력단 컴퓨터 구동형 선망 어로 시뮬레이터

Families Citing this family (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6671407B1 (en) * 1999-10-19 2003-12-30 Microsoft Corporation System and method for hashing digital images
US7020775B2 (en) * 2001-04-24 2006-03-28 Microsoft Corporation Derivation and quantization of robust non-local characteristics for blind watermarking
US6996273B2 (en) * 2001-04-24 2006-02-07 Microsoft Corporation Robust recognizer of perceptually similar content
US6973574B2 (en) * 2001-04-24 2005-12-06 Microsoft Corp. Recognizer of audio-content in digital signals
US7356188B2 (en) * 2001-04-24 2008-04-08 Microsoft Corporation Recognizer of text-based work
US7006703B2 (en) * 2002-06-28 2006-02-28 Microsoft Corporation Content recognizer via probabilistic mirror distribution
US7990390B2 (en) 2002-10-22 2011-08-02 Broadcom Corporation Multi-pass system and method supporting multiple streams of video
US8259121B2 (en) * 2002-10-22 2012-09-04 Broadcom Corporation System and method for processing data using a network
US7075542B1 (en) * 2002-11-12 2006-07-11 Ati Technologies Inc. Selectable multi-performance configuration
US6885376B2 (en) * 2002-12-30 2005-04-26 Silicon Graphics, Inc. System, method, and computer program product for near-real time load balancing across multiple rendering pipelines
US20080211816A1 (en) * 2003-07-15 2008-09-04 Alienware Labs. Corp. Multiple parallel processor computer graphics system
US7119808B2 (en) * 2003-07-15 2006-10-10 Alienware Labs Corp. Multiple parallel processor computer graphics system
US7075541B2 (en) * 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US7782325B2 (en) * 2003-10-22 2010-08-24 Alienware Labs Corporation Motherboard for supporting multiple graphics cards
US8174531B1 (en) * 2003-10-29 2012-05-08 Nvidia Corporation Programmable graphics processor for multithreaded execution of programs
US8860737B2 (en) * 2003-10-29 2014-10-14 Nvidia Corporation Programmable graphics processor for multithreaded execution of programs
US9659339B2 (en) 2003-10-29 2017-05-23 Nvidia Corporation Programmable graphics processor for multithreaded execution of programs
US20080094404A1 (en) 2003-11-19 2008-04-24 Reuven Bakalash Computing system having multi-mode parallel graphics rendering subsystem including multiple graphics processing pipelines (GPPLS) and supporting automated division of graphics commands and data during automatic mode control
US7808499B2 (en) * 2003-11-19 2010-10-05 Lucid Information Technology, Ltd. PC-based computing system employing parallelized graphics processing units (GPUS) interfaced with the central processing unit (CPU) using a PC bus and a hardware graphics hub having a router
US7961194B2 (en) 2003-11-19 2011-06-14 Lucid Information Technology, Ltd. Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system
US7015914B1 (en) * 2003-12-10 2006-03-21 Nvidia Corporation Multiple data buffers for processing graphics data
US7831832B2 (en) 2004-01-06 2010-11-09 Microsoft Corporation Digital goods representation based upon matrix invariances
US20050156930A1 (en) * 2004-01-20 2005-07-21 Matsushita Electric Industrial Co., Ltd. Rendering device and rendering method
US20050165690A1 (en) * 2004-01-23 2005-07-28 Microsoft Corporation Watermarking via quantization of rational statistics of regions
US20050275760A1 (en) * 2004-03-02 2005-12-15 Nvidia Corporation Modifying a rasterized surface, such as by trimming
EP1725947A4 (en) 2004-03-13 2008-08-06 Cluster Resources Inc SYSTEM AND METHOD FOR ADVANCED RESERVATIONS IN A CALCULATION ENVIRONMENT
US7890629B2 (en) * 2004-03-13 2011-02-15 Adaptive Computing Enterprises, Inc. System and method of providing reservation masks within a compute environment
CA2831359A1 (en) 2004-03-13 2005-09-29 Adaptive Computing Enterprises, Inc. System and method of co-allocating a reservation spanning different compute resources types
US8782654B2 (en) 2004-03-13 2014-07-15 Adaptive Computing Enterprises, Inc. Co-allocating a reservation spanning different compute resources types
CA2558892A1 (en) 2004-03-13 2005-09-29 Cluster Resources, Inc. System and method for a self-optimizing reservation in time of compute resources
US7770014B2 (en) * 2004-04-30 2010-08-03 Microsoft Corporation Randomized signal transforms and their applications
US7570267B2 (en) * 2004-05-03 2009-08-04 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
US7978205B1 (en) 2004-05-03 2011-07-12 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US8176490B1 (en) 2004-08-20 2012-05-08 Adaptive Computing Enterprises, Inc. System and method of interfacing a workload manager and scheduler with an identity manager
CN101091175B (zh) * 2004-09-16 2012-03-14 辉达公司 负载均衡
US7721118B1 (en) * 2004-09-27 2010-05-18 Nvidia Corporation Optimizing power and performance for multi-processor graphics processing
CA2827035A1 (en) 2004-11-08 2006-05-18 Adaptive Computing Enterprises, Inc. System and method of providing system jobs within a compute environment
US8066515B2 (en) * 2004-11-17 2011-11-29 Nvidia Corporation Multiple graphics adapter connection systems
US7477256B1 (en) 2004-11-17 2009-01-13 Nvidia Corporation Connecting graphics adapters for scalable performance
US7576745B1 (en) 2004-11-17 2009-08-18 Nvidia Corporation Connecting graphics adapters
US8134568B1 (en) 2004-12-15 2012-03-13 Nvidia Corporation Frame buffer region redirection for multiple graphics adapters
US8212831B1 (en) 2004-12-15 2012-07-03 Nvidia Corporation Broadcast aperture remapping for multiple graphics adapters
US7372465B1 (en) 2004-12-17 2008-05-13 Nvidia Corporation Scalable graphics processing for remote display
CN101849227A (zh) 2005-01-25 2010-09-29 透明信息技术有限公司 在单片构造的硅芯片上采用多个图形核心的图形处理和显示系统
US8863143B2 (en) 2006-03-16 2014-10-14 Adaptive Computing Enterprises, Inc. System and method for managing a hybrid compute environment
US7996455B2 (en) 2005-06-17 2011-08-09 Adaptive Computing Enterprises, Inc. System and method for providing dynamic roll-back reservations in time
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
CA2603577A1 (en) 2005-04-07 2006-10-12 Cluster Resources, Inc. On-demand access to compute resources
US10026140B2 (en) 2005-06-10 2018-07-17 Nvidia Corporation Using a scalable graphics system to enable a general-purpose multi-user computer system
US7886094B1 (en) 2005-06-15 2011-02-08 Nvidia Corporation Method and system for handshaking configuration between core logic components and graphics processors
US20070076869A1 (en) * 2005-10-03 2007-04-05 Microsoft Corporation Digital goods representation based upon matrix invariants using non-negative matrix factorizations
US8144149B2 (en) * 2005-10-14 2012-03-27 Via Technologies, Inc. System and method for dynamically load balancing multiple shader stages in a shared pool of processing units
US9092170B1 (en) * 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
TWI322354B (en) * 2005-10-18 2010-03-21 Via Tech Inc Method and system for deferred command issuing in a computer system
JP4566120B2 (ja) 2005-11-21 2010-10-20 株式会社バンダイナムコゲームス プログラム、情報記憶媒体及び画像生成システム
US7434032B1 (en) 2005-12-13 2008-10-07 Nvidia Corporation Tracking register usage during multithreaded processing using a scoreboard having separate memory regions and storing sequential register size indicators
US7340557B2 (en) * 2005-12-15 2008-03-04 Via Technologies, Inc. Switching method and system for multiple GPU support
US7325086B2 (en) * 2005-12-15 2008-01-29 Via Technologies, Inc. Method and system for multiple GPU support
US7911467B2 (en) * 2005-12-30 2011-03-22 Hooked Wireless, Inc. Method and system for displaying animation with an embedded system graphics API
WO2007132746A1 (ja) * 2006-05-11 2007-11-22 Panasonic Corporation 処理装置
US7737984B2 (en) * 2006-06-30 2010-06-15 Honeywell International Inc. Method and system for an external front buffer for a graphical system
US8126993B2 (en) * 2006-07-18 2012-02-28 Nvidia Corporation System, method, and computer program product for communicating sub-device state information
US7768516B1 (en) * 2006-10-16 2010-08-03 Adobe Systems Incorporated Image splitting to use multiple execution channels of a graphics processor to perform an operation on single-channel input
CN101657795B (zh) 2007-04-11 2013-10-23 苹果公司 多处理器上的数据并行计算
US8341611B2 (en) * 2007-04-11 2012-12-25 Apple Inc. Application interface on multiple processors
US8276164B2 (en) 2007-05-03 2012-09-25 Apple Inc. Data parallel computing on multiple processors
US11836506B2 (en) 2007-04-11 2023-12-05 Apple Inc. Parallel runtime execution on multiple processors
US8286196B2 (en) 2007-05-03 2012-10-09 Apple Inc. Parallel runtime execution on multiple processors
US8108633B2 (en) * 2007-04-11 2012-01-31 Apple Inc. Shared stream memory on multiple processors
US8041773B2 (en) 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US8922565B2 (en) * 2007-11-30 2014-12-30 Qualcomm Incorporated System and method for using a secondary processor in a graphics system
SE0801742A0 (sv) * 2008-07-30 2010-01-31 Intel Corp Förfarande, apparat och datorprogramprodukt för förbättrad grafikprestanda
US8741798B2 (en) * 2008-05-29 2014-06-03 Emmett M. Cunningham Catalysts for hydrocarbon oxidation
US8286198B2 (en) 2008-06-06 2012-10-09 Apple Inc. Application programming interfaces for data parallel computing on multiple processors
US8225325B2 (en) 2008-06-06 2012-07-17 Apple Inc. Multi-dimensional thread grouping for multiple processors
US9336028B2 (en) 2009-06-25 2016-05-10 Apple Inc. Virtual graphics device driver
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US10877695B2 (en) 2009-10-30 2020-12-29 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
KR101651871B1 (ko) * 2009-12-28 2016-09-09 삼성전자주식회사 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
US8587594B2 (en) * 2010-05-21 2013-11-19 International Business Machines Corporation Allocating resources based on a performance statistic
US8629867B2 (en) 2010-06-04 2014-01-14 International Business Machines Corporation Performing vector multiplication
US8692825B2 (en) 2010-06-24 2014-04-08 International Business Machines Corporation Parallelized streaming accelerated data structure generation
CN103105895A (zh) * 2011-11-15 2013-05-15 辉达公司 计算机系统及其显示卡及该系统进行图形处理的方法
US9619855B2 (en) * 2011-11-18 2017-04-11 Intel Corporation Scalable geometry processing within a checkerboard multi-GPU configuration
US10217270B2 (en) * 2011-11-18 2019-02-26 Intel Corporation Scalable geometry processing within a checkerboard multi-GPU configuration
US9152872B2 (en) * 2012-11-12 2015-10-06 Accenture Global Services Limited User experience analysis system to analyze events in a computer desktop
US9019284B2 (en) 2012-12-20 2015-04-28 Nvidia Corporation Input output connector for accessing graphics fixed function units in a software-defined pipeline and a method of operating a pipeline
US9123128B2 (en) * 2012-12-21 2015-09-01 Nvidia Corporation Graphics processing unit employing a standard processing unit and a method of constructing a graphics processing unit
US9152601B2 (en) * 2013-05-09 2015-10-06 Advanced Micro Devices, Inc. Power-efficient nested map-reduce execution on a cloud of heterogeneous accelerated processing units
US9183611B2 (en) * 2013-07-03 2015-11-10 Apple Inc. Apparatus implementing instructions that impose pipeline interdependencies
KR101569093B1 (ko) * 2013-08-13 2015-11-13 삼성에스디에스 주식회사 분산 시스템에서 데이터를 처리하는 방법
KR102161742B1 (ko) * 2013-10-11 2020-10-05 삼성전자주식회사 피드백 경로를 포함하는 파이프 라인 시스템 및 그 동작방법
KR20150095144A (ko) * 2014-02-12 2015-08-20 삼성전자주식회사 그래픽스 데이터를 렌더링하는 방법 및 장치
US10147222B2 (en) * 2015-11-25 2018-12-04 Nvidia Corporation Multi-pass rendering in a screen space pipeline
US10825129B2 (en) * 2016-06-12 2020-11-03 Apple Inc. Eliminating off screen passes using memoryless render target
CN108228337B (zh) * 2016-12-22 2021-08-27 财团法人工业技术研究院 中央处理单元的配置方法及适用此方法的服务器
US10043232B1 (en) * 2017-04-09 2018-08-07 Intel Corporation Compute cluster preemption within a general-purpose graphics processing unit
JP2021092934A (ja) 2019-12-09 2021-06-17 富士通株式会社 分析装置、分析プログラムおよびコンピュータシステム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100450980B1 (ko) 1996-09-30 2004-12-08 가부시끼가이샤 히다치 세이사꾸쇼 데이타프로세서및그래픽프로세서

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4967375A (en) * 1986-03-17 1990-10-30 Star Technologies, Inc. Fast architecture for graphics processor
US5081575A (en) * 1987-11-06 1992-01-14 Oryx Corporation Highly parallel computer architecture employing crossbar switch with selectable pipeline delay
US5408606A (en) * 1993-01-07 1995-04-18 Evans & Sutherland Computer Corp. Computer graphics system with parallel processing using a switch structure
US5574847A (en) * 1993-09-29 1996-11-12 Evans & Sutherland Computer Corporation Computer graphics parallel system with temporal priority
US6241610B1 (en) * 1996-09-20 2001-06-05 Nintendo Co., Ltd. Three-dimensional image processing system having dynamically changing character polygon number
US5852451A (en) * 1997-01-09 1998-12-22 S3 Incorporation Pixel reordering for improved texture mapping
AU2680699A (en) 1998-02-17 1999-08-30 Sun Microsystems, Inc. Estimating graphics system performance for polygons
US6191800B1 (en) * 1998-08-11 2001-02-20 International Business Machines Corporation Dynamic balancing of graphics workloads using a tiling strategy

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100450980B1 (ko) 1996-09-30 2004-12-08 가부시끼가이샤 히다치 세이사꾸쇼 데이타프로세서및그래픽프로세서

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101400270B1 (ko) * 2013-02-13 2014-05-28 부경대학교 산학협력단 컴퓨터 구동형 선망 어로 시뮬레이터

Also Published As

Publication number Publication date
JP2005520234A (ja) 2005-07-07
AU2003212649A8 (en) 2003-09-22
US20030169269A1 (en) 2003-09-11
JP2007179563A (ja) 2007-07-12
CN1643545A (zh) 2005-07-20
CN1317682C (zh) 2007-05-23
JP4413936B2 (ja) 2010-02-10
WO2003077120A3 (en) 2004-11-25
EP1662441B1 (en) 2010-02-24
DE60331482D1 (de) 2010-04-08
US6919896B2 (en) 2005-07-19
WO2003077120A2 (en) 2003-09-18
EP1662441A1 (en) 2006-05-31
EP1499962A2 (en) 2005-01-26
AU2003212649A1 (en) 2003-09-22
KR20040104510A (ko) 2004-12-10

Similar Documents

Publication Publication Date Title
KR100959468B1 (ko) 그래픽 프로세스 최적화 방법 및 시스템
US9405586B2 (en) Method of dynamic load-balancing within a PC-based computing system employing a multiple GPU-based graphics pipeline architecture supporting multiple modes of GPU parallelization
JP5956770B2 (ja) タイルベースのグラフィックスシステム及びこのようなシステムの動作方法
JP2006512680A (ja) 複数のレンダリングパイプラインにわたってほぼリアルタイムで負荷のバランスをとるためのシステム、方法、およびコンピュータプログラム製品
US20110316864A1 (en) Multithreaded software rendering pipeline with dynamic performance-based reallocation of raster threads
US20090135190A1 (en) Multimode parallel graphics rendering systems and methods supporting task-object division
US6052128A (en) Method and apparatus for clipping convex polygons on single instruction multiple data computers
US8675002B1 (en) Efficient approach for a unified command buffer
US20120001905A1 (en) Seamless Integration of Multi-GPU Rendering
KR20070083459A (ko) 명령 전송 제어 장치 및 명령 전송 제어 방법
US20190228574A1 (en) Identifying primitives in input index stream
CN116802673A (zh) 用于使用两级装仓进行分布式渲染的系统和方法
CN116166367B (zh) 提升显示帧缓存图像读取效率的方法
US6667746B1 (en) Pre-blending textures
CN114445512A (zh) 热力图生成方法及其装置和系统
JP2021033346A (ja) 画像処理装置、画像処理方法、及びプログラム
CA2676050A1 (en) Parallel graphics rendering systems and methods supporting task-based object division

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140418

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150416

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160418

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170421

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180418

Year of fee payment: 9