KR100550240B1 - Tiled graphics architecture - Google Patents

Tiled graphics architecture Download PDF

Info

Publication number
KR100550240B1
KR100550240B1 KR1020027013055A KR20027013055A KR100550240B1 KR 100550240 B1 KR100550240 B1 KR 100550240B1 KR 1020027013055 A KR1020027013055 A KR 1020027013055A KR 20027013055 A KR20027013055 A KR 20027013055A KR 100550240 B1 KR100550240 B1 KR 100550240B1
Authority
KR
South Korea
Prior art keywords
graphics
pointers
memory
vertices
data
Prior art date
Application number
KR1020027013055A
Other languages
Korean (ko)
Other versions
KR20030005253A (en
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 KR20030005253A publication Critical patent/KR20030005253A/en
Application granted granted Critical
Publication of KR100550240B1 publication Critical patent/KR100550240B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)

Abstract

타일형 그래픽스 아키텍쳐(tiled graphics architecture)에서 메모리 대역폭 이용을 감소시키는 장치 및 방법을 발표한다. 일 실시예에서, 마이크로프로세서는 그래픽스 원형의 꼭지점 데이터를 그래픽스 메모리로부터 판독한다. 프로세서는 그래픽스 원형을 가로지르는 빈을 결정한다. 프로세서는 제1 및 제2 빈을 가로지는 그래픽스 원형을 결정하면, 프로세스는 그래픽스 원형에 대한 꼭지점 데이터를 그래픽스 메모리 내의 제1 빈 기억 영역에 기록한다. 이어서 프로세서는 포인터를 제2 빈 기억 영역에 기록한다. 포인터는 실제 꼭지점 데이터의 메모리 내의 위치를 나타낸다.A device and method for reducing memory bandwidth utilization in a tiled graphics architecture are presented. In one embodiment, the microprocessor reads graphics circular vertex data from graphics memory. The processor determines the bin across the graphics circle. The processor determines the graphics primitives across the first and second bins, and the process writes vertex data for the graphics primitives into a first bin storage area in graphics memory. The processor then writes the pointer to the second empty storage area. The pointer represents the location in memory of the actual vertex data.

타일형, 그래픽스 아키텍쳐, 메모리 대역폭, 원형, 원시 데이터, 빈, 포인터Tiled, Graphics Architecture, Memory Bandwidth, Circular, Raw Data, Bin, Pointer

Description

타일형 그래픽스 아키텍쳐 {TILED GRAPHICS ARCHITECTURE}Tiled Graphics Architecture {TILED GRAPHICS ARCHITECTURE}

본 발명은 컴퓨터 시스템 분야에 관한 것이다. 특히 본 발명은 타일형 아키텍쳐에서 원형의 기억 요구(primitive storage requirement)를 줄이고 메모리 대역폭 이용을 향상시키기 위한 것이다.The present invention relates to the field of computer systems. In particular, the present invention is directed to reducing the primitive storage requirements and improving memory bandwidth utilization in tiled architectures.

일반적으로 컴퓨터 그래픽스 시스템에서, 디스플레이 스크린에 표현되는 3 차원(three dimensional, 3D) 객체(object)는 삼각형 리스트(triangle list), 사각형 스트립(triangle strip) 및 삼각형 팬(triangle fan) 등의 그래픽스 원형(graphics primitive)으로 이루어진다. 일반적으로, 표현될 3D 객체의 원형들은 호스트 컴퓨터에 의해 원시 데이터(primitive data)의 항(term)으로 규정된다. 예를 들어 원형의 삼각형 각각에 대해, 호스트 컴퓨터는 삼각형의 세 꼭지점을, X, Y, 및 Z 좌표로 공간적 위치를 규정할 뿐만 아니라, 각 꼭지점의 빨간색(R), 녹색(G) 및 파란색(B)의 색 값(color value)을 규정하는 데이터와, 텍스쳐 좌표(texture coordinate)로 규정할 수 있다. 부가적인 원시 데이터가 특정한 애플리케이션에 사용될 수 있다. 그래픽스 컨트롤러(graphics controller) 내의 렌더링 하드웨어(rendering hardware)는 각 원형을 표현하는 디스플레이 스크린 화소(pixel)들과 각 화소에 대한 R, G, B 색 값을 계산하기 위하여 원시 데이터를 보간(interpolate)한다.In general, in computer graphics systems, the three dimensional (3D) objects represented on the display screen are graphics primitives such as triangle lists, triangle strips, and triangle fans. graphics primitive). In general, the prototypes of the 3D object to be represented are defined by the host computer in terms of primitive data. For example, for each circular triangle, the host computer not only defines the spatial location of the three vertices of the triangle in X, Y, and Z coordinates, but also the red (R), green (G), and blue ( Data defining the color value of B) and texture coordinates may be defined. Additional raw data can be used for specific applications. The rendering hardware in the graphics controller interpolates the raw data to calculate the display screen pixels representing each prototype and the R, G and B color values for each pixel. .

메모리 대역폭의 더욱 효율적인 이용을 위하여, 3D 원형들은 "타일(tile)"이라고도 하는 복수의 빈(bin)으로 분류(sort)된다. 잘 알려진 이 기술은 종종 "타일링(tiling)"이라고 한다.For more efficient use of memory bandwidth, 3D primitives are sorted into a plurality of bins, also referred to as "tiles." This well known technique is often referred to as "tiling".

도 1 및 도 2는 그래픽스 원형들을 복수의 빈 또는 "타일"로 분류하는 일례를 나타낸다. 이 예에서, 마이크로프로세서는 원형 기억 영역으로부터 원형들(110, 120, 130)에 대한 데이터를 인출(fetch)한다. 원형 기억 영역은 그래픽스 컨트롤러에 직접 연결된 로컬 그래픽스 메모리 또는 주 시스템 메모리의 일부로서 구현될 수 있다. 이 원형들(110, 120, 130)은 렌더링(rendering)되어 블록(100)으로 나타낸 디스플레이 스크린 상에 표시된다. 이 예의 경우, 블록(100)은 4 개 이상의 빈으로 분할된다. 일반적으로, 디스플레이 데이터의 프레임(frame)은 128 * 64 화소 크기의 전형적인 빈을 가지는 이 예에서 도시한 4 개보다 더 많은 빈으로 분할된다. 이 예에서는 설명을 단순화하기 위하여 4 개의 빈을 사용한다.1 and 2 show an example of classifying graphics circles into a plurality of bins or " tiles. &Quot; In this example, the microprocessor fetches data for the prototypes 110, 120, 130 from the circular storage area. The circular storage area may be implemented as part of the local graphics memory or main system memory connected directly to the graphics controller. These circles 110, 120, 130 are rendered and displayed on the display screen represented by block 100. For this example, block 100 is divided into four or more bins. In general, a frame of display data is divided into more than four bins shown in this example having a typical bin size of 128 * 64 pixels. This example uses four beans to simplify the description.

그래픽스 원형에 대한 데이터를 인출한 후, 프로세서는 어느 빈 또는 "타일"이 원형을 가로지르는지를 결정한다. 예를 들어, 프로세서는 원형(110)이 빈(220)은 물론 빈(210)을 가로지르는 것으로 결정할 수 있다. 이어서 프로세서는 빈(220)에 대한 원시 데이터를 기억시키기 위해서는 물론 빈(210)에 대한 원시 데이터를 기억시키기 위하여 그래픽스 메모리 셋 어사이드(graphics memory set aside)에 원형(110)의 세 꼭지점에 대한 데이터를 기록한다. 유사하게, 프로세서는 원형(120)의 꼭지점 데이터를 빈(220) 및 빈(240)의 기억 영역에 기록하고, 원형(130)의 꼭지점 데이터를 빈(210, 230, 240)의 기억 영역에 기록한다. 일단 원형이 빈들(bins)로 분류되면, 그래픽스 컨트롤러는 원형 데이터를 그래픽스 메모리로부터 인출하여 그 원형을 한번에 하나씩 렌더링한다.After retrieving data for the graphics prototype, the processor determines which bin or "tile" traverses the prototype. For example, the processor may determine that the circle 110 crosses the bin 210 as well as the bin 220. The processor then stores the data for the three vertices of the circle 110 in a graphics memory set aside to store the raw data for the bin 220 as well as for storing the raw data for the bin 210. Record it. Similarly, the processor writes the vertex data of the circle 120 to the storage regions of bins 220 and 240, and the vertex data of the circle 130 to the storage regions of bins 210, 230, and 240. do. Once the primitives are classified into bins, the graphics controller retrieves the primitive data from graphics memory and renders the primitives one at a time.

도 2는 그래픽 컨트롤러가 원형(110, 120, 130)을 빈(210, 220, 230, 240)에 적합한 여러 원형으로 분할하는 방법을 예시한다. 여러 원형은 그 원형이 어떻게 빈 경계를 가로지르는가에 따라서 복수의 빈으로 분할된다. 예를 들어, 빈(210)의 원시 데이터를 그래픽스 메모리로부터 인출하는 경우, 그래픽스 컨트롤러는 원형(211)을 생성하기 위하여 원형(110)을 분할한다. 원형(130)은 원형(212)을 생성하기 위하여 분할된다. 그래픽스 컨틀롤러는 계속하여 원형(211, 212)을 렌더링한다. 이어서, 그래픽스 컨트롤러는 원형(221, 222)을 생성하기 위하여 원형(110, 120)을 분할하고, 원형(221, 222)을 렌더링하여 빈(220)의 처리를 계속한다.2 illustrates how the graphics controller divides the circles 110, 120, 130 into several circles suitable for the bins 210, 220, 230, 240. Several circles are divided into bins depending on how the circle crosses the empty boundary. For example, when retrieving the raw data of the bin 210 from the graphics memory, the graphics controller divides the prototype 110 to produce the prototype 211. Circle 130 is divided to produce circle 212. The graphics controller continues to render the circles 211, 212. The graphics controller then divides the circles 110, 120 to produce the circles 221, 222, and renders the circles 221, 222 to continue processing of the bin 220.

도 3은 타일형 그래픽스 아키텍쳐를 구현하는 종래의 컴퓨터 시스템의 블록도이다. 도 3은 프로세서(310), 그래픽스 원형 기억 영역(332)을 포함하는 시스템 메모리(330),그래픽스 컨트롤러(340) 및 디스플레이 모니터(350)를 도시한다.3 is a block diagram of a conventional computer system implementing a tiled graphics architecture. 3 shows a processor 310, a system memory 330 that includes a graphics circular storage area 332, a graphics controller 340, and a display monitor 350.

도 3의 시스템으로 구현되는 것과 같은 종래의 타일형 그래픽스 아키텍쳐는 원시 데이터를 한 장치에서 다른 장치로 이동시킬 때 대량의 메모리 대역폭을 이용하는 단점이 있다. 예를 들어 프로세서(310)가 원형을 처리하는 경우, 프로세서(310)는 원형의 꼭지점 데이터를 그래픽스 원형 기억 영역(332)으로부터 판독한다. 프로세서(310)는 이어서 어떠한 빈들이 그 원형을 가로지르는지를 결정한다. 프로세서(310)는 그 다음에 몇 개의 복사본을 그래픽스 원형 기억 영역(332)에 다시 기록하여야 하며, 기록되는 복사본의 수는 얼마나 많은 빈들이 그 원형을 가로지르는가에 따른다.Conventional tiled graphics architectures, such as those implemented in the system of FIG. 3, have the drawback of using large amounts of memory bandwidth when moving raw data from one device to another. For example, when processor 310 processes a prototype, processor 310 reads the circular vertex data from graphics circular storage area 332. Processor 310 then determines which bins traverse the circle. The processor 310 then must write back several copies to the graphics circular storage area 332, the number of copies being written depends on how many bins traverse the prototype.

메모리 대역폭 이용의 영향은 대략 100 바이트(byte)의 꼭지점 데이터로 표현될 수 있는 전형적인 그래픽스 원형과, 몇 개의 빈들이 가로지를 수 있는 그래픽스 원형을 고려하여 설명할 수 있다. 이 예는 3개의 빈을 가로지는 대표적인 원형을 가정할 것이다. 이 상황에서, 프로세서(310)는 처리되는 각 원형에 대하여 그래픽스 원형 기억 영역(332)에 평균 300 바이트의 꼭지점 데이터를 기록하여야 한다. 2K 그래픽스 원형들로 이루어지는 비교적 간단한 디스플레이의 한 프레임(frame)의 경우, 프로세서(310)는 프레임당 600K 바이트를 전송하여야 한다. 만약 이 프레임 디스플레이 속도(freame display rate)가 초당 60 프레임이면, 프로세서(310)는 초당 360M 바이트의 속도로 데이터를 그래픽스 원형 기억 영역(332)에 전송하여야 한다. 100K 원형으로 이루어지는 더욱 복잡한 디스플레이의 경우, 대역폭의 요구는 초당 1.8G 바이트로 증가한다. 동일한 대역폭 요구가 또한 그래픽스 원형 기억 영역(332)과 그래픽스 컨트롤러(340) 사이에서 충족되어야 한다. 그래픽스 원형 데이터를 프로세서(310)에서 그래픽스 원형 기억 영역(332)으로, 그리고 그래픽스 원형 기억 영역(332)에서 그래픽스 컨트롤러(340)로 이동시키기 위한 높은 메모리 대역폭 이용은 전체 시스템의 성능에 상당히 악영향을 초래할 수 있다.The impact of memory bandwidth utilization can be explained by considering a typical graphics prototype that can be represented by approximately 100 bytes of vertex data and a graphics prototype where several bins can traverse. This example will assume a representative circle across three bins. In this situation, the processor 310 must write an average of 300 bytes of vertex data in the graphics circular storage area 332 for each prototype processed. For one frame of a relatively simple display of 2K graphics primitives, the processor 310 must transmit 600K bytes per frame. If this frame display rate is 60 frames per second, the processor 310 must transmit data to the graphics circular storage area 332 at a rate of 360M bytes per second. For more complex displays consisting of 100K prototypes, the bandwidth requirement increases to 1.8G bytes per second. The same bandwidth requirement must also be met between the graphics circular storage area 332 and the graphics controller 340. The high memory bandwidth utilization for moving graphics circular data from processor 310 to graphics circular storage area 332 and from graphics circular storage area 332 to graphics controller 340 will have a significant negative impact on the performance of the overall system. Can be.

이하의 상세한 설명 및 본 발명의 실시예의 첨부 도면으로부터 본 발명을 더욱 완전히 이해할 수 있을 것이다. 그러나, 기술된 특정 실시예는 본 발명의 설명과 이해를 돕기 위한 것일 뿐, 본 발명을 한정하는 것은 아니다.The invention will be more fully understood from the following detailed description and accompanying drawings of embodiments of the invention. However, the specific embodiments described are merely to aid the explanation and understanding of the present invention, but not to limit the present invention.

도 1은 종래의 시스템에 따라서 디스플레이 스크린에 정렬된 수 개의 3D 객체를 나타내는 도면이다.1 is a diagram illustrating several 3D objects arranged on a display screen according to a conventional system.

도 2는 종래의 시스템에 따라 복수의 빈으로 분류된 도 1의 수 개의 3D 객체를 설명하기 위한 도면이다.FIG. 2 is a diagram for describing several 3D objects of FIG. 1 classified into a plurality of bins according to a conventional system.

도 3은 타일형 그래픽스 아키텍쳐를 포함하는 종래 시스템의 블록도이다.3 is a block diagram of a conventional system that includes a tiled graphics architecture.

도 4는 타일형 그래픽스 아키텍쳐에서 메모리 대역폭 이용을 감소시키는 방법의 일 실시예를 나타내는 흐름도이다.4 is a flow diagram illustrating one embodiment of a method of reducing memory bandwidth utilization in a tiled graphics architecture.

도 5는 그래픽스 원형 기억 영역이 시스템 메모리 내에 위치하는 경우에 타일형 그래픽스 아키텍쳐에서 메모리 대역폭 이용을 감소시키는 방법의 일 실시예를 나타내는 흐름도이다.5 is a flow diagram illustrating one embodiment of a method of reducing memory bandwidth utilization in a tiled graphics architecture when a graphics circular storage area is located in system memory.

도 6은 그래픽스 원형 기억 영역이 로컬 그래픽스 메모리 내에 위치하는 경우에 타일형 그래픽스 아키텍쳐에서 메모리 대역폭 이용을 감소시키는 방법의 일 실시예를 나타내는 흐름도이다. FIG. 6 is a flow diagram illustrating one embodiment of a method of reducing memory bandwidth utilization in a tiled graphics architecture when the graphics circular storage area is located in local graphics memory.

도 7은 꼭지점 캐시를 포함하는 그래픽스 컨트롤러의 일 실시예를 포함하는 시스템의 블록도이다.7 is a block diagram of a system including one embodiment of a graphics controller that includes a vertex cache.

타일형 그래픽스 아키텍쳐에서 메모리 대역폭 이용을 감소시키는 장치 및 방법의 일 실시예를 설명한다. 이 실시예에서, 마이크로프로세서는 그래픽스 원형의 꼭지점 데이터를 그래픽스 메모리로부터 판독한다. 마이크로프로세서는 어떤 빈들이 그래픽스 원형을 가로지르는지를 결정한다. 원형의 모든 꼭지점들이 장래의 참조를 위하여 꼭지점 버퍼(vertex buffer)에 기록된다. 꼭지점 버퍼는 주 시스템 메모리 또는 로컬 그래픽스 메모리에 위치할 수 있다. 이 꼭지점 버퍼는 빈 기억 영역의 일부 또는 개별 메모리 위치(separate memory location) 내에 구현될 수 있다. One embodiment of an apparatus and method for reducing memory bandwidth utilization in a tiled graphics architecture is described. In this embodiment, the microprocessor reads the graphics primitive vertex data from the graphics memory. The microprocessor determines which bins cross the graphics circle. All vertices of the prototype are written to the vertex buffer for future reference. Vertex buffers can be located in main system memory or local graphics memory. This vertex buffer may be implemented within a portion of an empty storage area or within a separate memory location.

마이크로프로세서가 제1 및 제2 빈을 가로지르는 그래픽스 원형을 결정하였으면, 마이크로프로세서는 포인터(pointer)를 제1 및 제2 빈 기억 영역에 기록한다. 이 포인터는 실제 꼭지점 데이터의 메모리 위치를 나타낸다. 따라서, 오직 꼭지점 데이터의 하나의 복사본만이 마이크로프로세서로부터 그래픽스 메모리로 이동된다. 때문에 포인터의 크기는 꼭지점 데이터의 크기보다 작고, 마이크로프로세서로부터 그래픽스 메모리로 더 적은 데이터가 이동되어 메모리 대역폭 이용이 향상된다.Once the microprocessor has determined the graphics prototype across the first and second bins, the microprocessor writes a pointer to the first and second bin storage areas. This pointer represents the memory location of the actual vertex data. Thus, only one copy of the vertex data is moved from the microprocessor to graphics memory. Because of this, the size of the pointer is smaller than the size of the vertex data, and less data is moved from the microprocessor to the graphics memory, thus improving memory bandwidth utilization.

상기한 예 및 이하의 실시예에서의 마이크로프로세서는, 마이크로프로세서에 의해 수행되는 것과 같이 동일하게 원형 처리를 취급하는 3D 그래픽스 마이크로 프로세서로 대체될 수 있다. 예를 들어, 추가 실시예는 하드웨어 변환(hard transformation) 및 명암 계산(lighting calculation)을 하드웨어로 수행하는 3D 그래픽스 프로세서를 포함할 수 있다.The microprocessors in the above examples and the following embodiments can be replaced with 3D graphics microprocessors that handle the same circular processing as performed by the microprocessor. For example, further embodiments may include a 3D graphics processor that performs hardware transformation and lighting calculations in hardware.

상기 예 및 이하의 실시예의 그래픽스 메모리는 주 시스템 메모리의 일부로서 포함되거나 그래픽스 컨트롤러에 직접 연결된 로컬 그래픽스 메모리로 구현될 수 있다.The graphics memory of the above examples and the following embodiments may be implemented as local graphics memory included as part of main system memory or directly connected to the graphics controller.

본 명세서에서 사용된 용어 "포인터"는 적어도 일부분은 메모리 주소 및 인덱스(index)를 포함하는 꼭지점 데이터의 위치를 나타내는 모든 수단을 포함하는 것을 의도한다. 예를 들어, 포인터는 꼭지점 데이터의 위치를 나타내는 물리 또는 가상(physical or virtual) 메모리 주소일 수 있다. 이와 달리, 포인터는 꼭지점 데이터의 주소 위치를 계산하는 데 사용될 수 있는 인덱스(index)일 수도 있다. 예를 들어 주소는 "기본 주소(base address) + 인덱스 * 꼭지점 데이터 크기"의 식에 따라 인덱스로부터 계산될 수도 있다.The term "pointer" as used herein is intended to include all means for indicating the location of the vertex data, at least in part, including a memory address and an index. For example, the pointer may be a physical or virtual memory address that indicates the location of the vertex data. Alternatively, the pointer may be an index that can be used to calculate the address location of the vertex data. For example, the address may be calculated from the index according to the formula "base address + index * vertex data size".

비록 상기한 예 및 이하의 예는 그래픽스 원형을 가로지를 수 있는 주어진 수의 빈들을 논의하지만, 다른 예에서는 임의의 수의 빈을 사용할 수 있다. 또한 본 명세서에서 논의된 그래픽스 원형은 세 꼭지점을 포함하는 삼각형을 포함하지만, 다른 형태의 원형도 가능하다.Although the above examples and the following examples discuss a given number of bins that may cross the graphics circle, other examples may use any number of bins. The graphics circles discussed herein also include triangles containing three vertices, although other forms of circles are possible.

또한 본 명세서에서 기술한 실시예는 주소가 32비트 폭(wide)인 것으로 가정하고, 인덱스가 16비트 폭인 것으로 가정하고, 삼각형 그래픽스 원형의 꼭지점 데이터는 대략 100 바이트 길이인 것으로 가정한다. 다른 실시예에서는 넓은 범위의 주소, 인덱스, 데이터 크기 및 길이를 사용할 수 있다.The embodiments described herein also assume that the address is 32 bits wide, the index is 16 bits wide, and the vertex data of the triangle graphics circle is assumed to be approximately 100 bytes long. Other embodiments may use a wide range of addresses, indexes, data sizes and lengths.

도 4는 타일형 그래픽스 아키텍쳐에서 메모리 대역폭 이용을 향상시키기 위한 방법의 일 실시예의 흐름도이다. 블록(410)에서, 그래픽스 원형이 제1 및 제2 빈을 가로지르는지 여부를 결정한다. 만약 그래픽스 원형이 제1 및 제2 빈을 가로지르는 것으로 판정되면, 블록(420)에서는 그래픽스 원형에 대응하는 복수의 꼭지점에 대한 데이터를 메모리 장치에 위치하는 제1 빈 기억 영역에 기록한다. 이 메모리 장치는 주 시스템 메모리 또는 그래픽스 컨트롤러에 직접 연결된 로컬 그래픽스 메모리를 포함할 수 있다.4 is a flow diagram of one embodiment of a method for improving memory bandwidth utilization in a tiled graphics architecture. In block 410, determine whether the graphics circle crosses the first and second bins. If it is determined that the graphics circle crosses the first and second bins, block 420 writes data for a plurality of vertices corresponding to the graphics circle to a first bin storage area located in the memory device. This memory device may include main graphics memory or local graphics memory directly coupled to the graphics controller.

블록(430)에서, 복수의 포인터가 그래픽스 메모리 내에 위치된 제2 빈 기억 영역에 기록된다. 이 복수의 포인터는 복수의 꼭지점 데이터에 대한 메모리 위치를 나타낸다. 꼭지점 데이터를 기록하는 대신에 포인터들을 제2 빈 기억 영역에 기록함으로써, 더 적은 데이터가 프로세서로부터 그래픽스 메모리로 이동되고 메모리 대역폭 이용이 향상된다. 이 포인터들은 그래픽스 컨트롤러에 의해 그 밖의 다른 제2 빈 원형 데이터와 함께 인출될 것이다. 그래픽스 컨트롤러는 이 포인터를 제1 빈 기억 영역으로부터 꼭지점 데이터를 인출하기 위하여 사용할 것이다.At block 430, a plurality of pointers are written to the second empty storage area located in the graphics memory. These plurality of pointers indicate memory locations for the plurality of vertex data. By writing the pointers to the second empty storage area instead of writing the vertex data, less data is moved from the processor to the graphics memory and memory bandwidth utilization is improved. These pointers will be retrieved along with the other second empty circular data by the graphics controller. The graphics controller will use this pointer to fetch vertex data from the first free storage area.

도 5는 그래픽스 메모리가 주 시스템 메모리 내의 영역으로서 구현되고 그래픽스 컨트롤러가 꼭지점 캐시를 포함하는 컴퓨터 시스템의 타일형 그래픽스 아키텍쳐에서 메모리 대역폭 이용을 향상시키는 방법의 일 실시예를 나타내는 흐름도이다. 꼭지점 캐시는 꼭지점 데이터를 위한 일시적인 기억 장소를 제공하고, 주 시스템 메모리 내에 위치하는 그래픽스 메모리와 그래픽스 컨트롤러 사이에 이동되는 꼭지점 데이터의 양을 감소시켜 시스템 메모리에서 그래픽스 컨트롤러 대역폭 이용을 향상시킬 수 있도록 한다. FIG. 5 is a flow diagram illustrating one embodiment of a method for enhancing memory bandwidth utilization in a tiled graphics architecture of a computer system in which a graphics memory is implemented as an area in main system memory and the graphics controller includes a vertex cache. The vertex cache provides a temporary storage for the vertex data and reduces the amount of vertex data that is moved between the graphics memory and the graphics controller located in the main system memory to improve graphics controller bandwidth utilization in the system memory.

도 5를 참조하면, 블록(505)에서, 프로세서는 그래픽스 원형에 대한 꼭지점 데이터를 시스템 메모리로부터 인출하고, 블록(510)에서 프로세서는 꼭지점 데이터에 대한 계산을 수행한다. 이 예에서, 그래픽스 원형에 대한 꼭지점 데이터는 세 개의 꼭지점을 포함하지만, 다른 실시예에서는 그래픽스 원형에 데이터는 임의 개수의 꼭지점 데이터를 포함할 수 있다.Referring to FIG. 5, at block 505, the processor retrieves vertex data for the graphics prototype from system memory, and at block 510 the processor performs calculations on the vertex data. In this example, the vertex data for the graphics primitive includes three vertices, while in other embodiments the data in the graphics primitive may include any number of vertex data.

블록(515)에서, 프로세서는 그래픽스 원형이 제1 빈을 가로지르는지 여부를 결정하고, 가로지르는 것이 있다면 프로세서는 그래픽스 원형의 꼭지점 데이터를 시스템 메모리 내의 제1 빈 기억 영역에 기록한다.At block 515, the processor determines whether the graphics primitive crosses the first bin, and if there is any crossing, the processor writes the vertex data of the graphics primitive to the first bin storage area in system memory.

블록(520)에서, 프로세서는 그래픽스 원형이 제2 빈을 가로지르는지 여부를 결정한다. 만약 그래픽스 원형이 제2 빈을 가로지르는 것으로 판정되면, 블록(525)에서, 프로세서는 세 개의 포인터를 시스템 메모리 내의 제2 빈 기억 영역에 기록한다. 이 포인터들은 미리 시스템 메모리에 기록해둔 세 꼭지점의 메모리 위치를 나타낸다.At block 520, the processor determines whether the graphics circle crosses the second bin. If it is determined that the graphics circle crosses the second bin, then at block 525, the processor writes three pointers to the second bin storage area in system memory. These pointers indicate the memory locations of the three vertices previously recorded in system memory.

블록(530)에서, 프로세서는 그래픽스 원형이 제3 빈을 가로지르는지 여부를 결정한다. 만약 그래픽스 원형이 제3 빈을 가로지는 것으로 판정되면, 블록(535)에서, 프로세서는 세 개의 포인터를 시스템 메모리 내의 제3 빈 기억 영역에 기록한다. 이 포인터들은 미리 시스템 메모리에 기록해둔 세 꼭지점의 메모리 위치를 나타낸다.At block 530, the processor determines whether the graphics circle crosses the third bin. If it is determined that the graphics circle crosses the third bin, then at block 535, the processor writes three pointers to a third bin storage area in system memory. These pointers indicate the memory locations of the three vertices previously recorded in system memory.

블록(540)에서, 프로세서는 그래픽스 원형이 제4 빈을 가로지르는지 여부를 결정한다. 만약 그래픽스 원형이 제4 빈을 가로지는 것으로 판정되면, 블록(545)에서, 프로세서는 세 개의 포인터를 시스템 메모리 내의 제4 빈 기억 영역에 기록한다. 이 포인터들은 미리 시스템 메모리에 기록해둔 세 꼭지점의 메모리 위치를 나타낸다.At block 540, the processor determines whether the graphics circle crosses the fourth bin. If it is determined that the graphics circle crosses the fourth bin, then at block 545, the processor writes three pointers to a fourth bin storage area in system memory. These pointers indicate the memory locations of the three vertices previously recorded in system memory.

비록, 본 실시예가 어쩌면 네 개의 빈을 가로지를 수 있는 그래픽스 원형을 기술하지만, 다른 실시예에서는 그래픽스 원형이 두 개 이상의 빈을 가로지를 수 있다. 또한, 일 실시예에서 빈은 128 * 64 화소의 크기를 가질 수 있지만, 다른 크기의 빈도 가능하다. 또한 빈 가로지름 결정(bin intersection determination)은 전술한 바와 같은 직렬 전근법(serial approach) 대신에 병렬 방식으로 수행될 수 있다.Although the present embodiment describes a graphics circle that may possibly cross four bins, in other embodiments the graphics circle may cross two or more bins. Also, in one embodiment the bin may have a size of 128 * 64 pixels, but other sizes of frequencies are possible. Bin intersection determination may also be performed in a parallel manner instead of the serial approach as described above.

블록(547)에 나타낸 바와 같이 블록(505) 내지 블록(545)은 모든 원형이 복수의 빈으로 분류될 때까지 반복될 수 있다.As shown at block 547, blocks 505 to 545 may be repeated until all circles have been classified into a plurality of bins.

블록(550)에서, 그래픽스 컨트롤러는 데이터를 제1 빈 기억 영역으로부터 인출한다. 제1 빈 기억 영역과 꼭지점 버퍼로부터 인출된 데이터는 블록(515)에서 시스템 메모리에 미리 기록된 그래픽스 원형에 대한 꼭지점 데이터를 포함한다.At block 550, the graphics controller fetches data from the first free storage area. The data retrieved from the first free storage area and the vertex buffer includes vertex data for the graphics primitives previously written to the system memory at block 515.

블록(555)에서 그래픽스 컨트롤러는 꼭지점 데이터를 꼭지점 캐시에 기억시킨다. 일 실시예에서, 꼭지점 캐시는 32 바이트의 꼭지점 데이터를 저장할 수 있는 각 엔트리(entry)에 4 방향 인터리브된(4-way interleaved) 16 개의 엔트리를 포함한다. 다른 실시예에서는 상이한 수의 엔트리 및 방향이 가능하고, 각 엔트리가 기억 가능한 꼭지점 데이터의 양이 다를 수 있다. In block 555 the graphics controller stores the vertex data in the vertex cache. In one embodiment, the vertex cache includes sixteen 4-way interleaved entries in each entry that can store 32 bytes of vertex data. In other embodiments, different numbers of entries and orientations are possible, and the amount of vertex data each entry can store may vary.

그래픽스 컨트롤러가 제1 빈 데이터를 인출하여 꼭지점 캐시에 그 꼭지점 데이터를 기억시킨 후에, 블록(560)에서 그래픽스 컨트롤러는 제1 빈 원형들을 렌더링한다. 렌더링 프로세스의 일부로서, 그래픽스 컨트롤러는 제1 빈 데이터에 포함된 각 그래픽스 원형의 어떤 부분이 제1 빈에 포함되는지를 결정하고, 오직 그 부분의 원형만을 렌더링한다.After the graphics controller fetches the first bin data and stores the vertex data in the vertex cache, at block 560 the graphics controller renders the first bin primitives. As part of the rendering process, the graphics controller determines which portion of each graphics prototype contained in the first bin data is included in the first bin and renders only the prototype of that portion.

제1 빈을 렌더링한 다음에, 그래픽스 컨트롤러는 제2 빈의 처리를 계속한다. 제2 빈 처리의 첫 번째 단계로서, 블록(565)에서 그래픽스 컨트롤러는 데이터를 제2 빈 기억 영역으로부터 인출한다. 제2 빈 기억 영역으로 인출된 데이터는 그래픽스 원형의 꼭지점 데이터에 대한 포인터를 포함하며, 블록(520)에서 제2 빈을 가로지르는 것으로 판정된 것이다. 블록(570)에서, 그래픽스 컨트롤러는 블록(555)에서 꼭지점 캐시에 미리 기억된 꼭지점 데이터를 액세스(access)하기 위하여 포인터들을 사용한다. 일단 그래픽스 컨트롤러가 꼭지점 데이터를 액세스하면, 블록(575)에서 그래픽스 컨트롤러는 제2 빈 원형들을 렌더링한다.After rendering the first bean, the graphics controller continues processing of the second bean. As a first step in the second bin process, at block 565 the graphics controller fetches data from the second bin storage area. The data fetched into the second bin storage area includes a pointer to the vertex data of the graphics circle, which is determined at block 520 to cross the second bin. At block 570, the graphics controller uses pointers to access vertex data previously stored in the vertex cache at block 555. Once the graphics controller accesses the vertex data, at block 575 the graphics controller renders the second empty circles.

블록(580)에서, 렌더링하여야 추가적인 빈이 남아있는지 여부를 결정한다. 만약, 추가적인 빈이 남아있으면 처리는 블록(565)에서 다시 계속한다. 블록(565) 내지 블록(580)은 모든 빈이 렌더링될 때까지 반복되고, 블록(585)에서 처리는 종료한다. 빈 렌더링의 순서는 연속적(serial) 또는 비연속적일 수 있음을 유의하라. 상기한 실시예는 어떤 발견적 교수법(heuristics)에 의해 일반화(normalize)될 수 있으며, 제2 빈을 먼저, 그리고 이어서 제3, 제1 및 제4 빈을 렌더링할 수 있다. 이것은 전체 시스템 성능의 최적화 방법(optimization measure)을 가능하게 한다.At block 580, it is determined whether additional beans remain to be rendered. If additional beans remain, processing continues again at block 565. Blocks 565 to 580 are repeated until all bins are rendered, and processing ends at block 585. Note that the order of the empty renderings can be serial or discontinuous. The above embodiment can be normalized by some heuristics, and the second bin can be rendered first, and then the third, first and fourth bins. This allows for an optimization measure of overall system performance.

도 6은 그래픽스 메모리가 그래픽스 컨트롤러에 직접 연결되는 로컬 그래픽스 메모리로 구현되는 경우에 컴퓨터 시스템의 타일형 그래픽스 아키텍쳐에서 메모리 대역폭 이용을 향상시키는 방법의 일 실시예를 나타내는 흐름도이다. 로컬 그래픽스 메모리는 꼭지점 데이터를 위한 기억 장소를 제공하고, 주 시스템 메모리 내에 위치하는 그래픽스 메모리와 그래픽스 컨트롤러 사이에 이동되는 꼭지점 데이터의 양을 감소시켜 시스템 메모리에서의 그래픽스 컨트롤러 대역폭 이용을 향상시킬 수 있도록 한다. 6 is a flow diagram illustrating one embodiment of a method of improving memory bandwidth utilization in a tiled graphics architecture of a computer system when the graphics memory is implemented with local graphics memory that is directly coupled to a graphics controller. Local graphics memory provides a storage location for the vertex data and reduces the amount of vertex data that is moved between the graphics memory and the graphics controller located in the main system memory to improve graphics controller bandwidth utilization in system memory. .

도 6을 참조하면, 블록(605)에서, 프로세서는 그래픽스 원형에 대한 꼭지점 데이터를 로컬 그래픽스 메모리로부터, 또는 이와는 달리 시스템 메모리로부터 인출하고, 블록(610)에서 프로세서는 꼭지점 데이터에 대한 계산을 수행한다. 이 예에서, 그래픽스 원형에 대한 꼭지점 데이터는 세 개의 꼭지점을 포함하지만, 다른 실시예에서는 그래픽스 원형에 데이터는 임의 개수의 꼭지점 데이터를 포함할 수 있다. 블록(615)에서, 프로세서는 그래픽스 원형이 제1 빈을 가로지르는지 여부를 결정하고, 가로지르는 것이 있다면 프로세서는 그래픽스 원형의 꼭지점 데이터를 로컬 그래픽스 메모리 내의 제1 빈 기억 영역에 기록한다.Referring to FIG. 6, at block 605, the processor retrieves vertex data for a graphics primitive from local graphics memory, or otherwise from system memory, and at block 610 the processor performs calculations on the vertex data. . In this example, the vertex data for the graphics primitive includes three vertices, while in other embodiments the data in the graphics primitive may include any number of vertex data. At block 615, the processor determines whether the graphics primitive crosses the first bin, and if so, the processor writes the vertex data of the graphics primitive to the first bin storage area in the local graphics memory.

블록(620)에서, 프로세서는 그래픽스 원형이 제2 빈을 가로지르는지 여부를 결정한다. 만약 그래픽스 원형이 제2 빈을 가로지르는 것으로 판정되면, 블록(625)에서, 프로세서는 세 개의 포인터를 로컬 그래픽 메모리 내의 제2 빈 기억 영역에 기록한다. 이 포인터들은 미리 로컬 그래픽 메모리에 기록해둔 세 꼭지점의 메모리 위치를 나타낸다.At block 620, the processor determines whether the graphics circle crosses the second bin. If it is determined that the graphics prototype traverses the second bin, then at block 625, the processor writes three pointers to the second bin storage area in local graphics memory. These pointers indicate the three vertex memory locations previously recorded in local graphics memory.

블록(630)에서, 프로세서는 그래픽스 원형이 제3 빈을 가로지르는지 여부를 결정한다. 만약 그래픽스 원형이 제3 빈을 가로지는 것으로 판정되면, 블록(635)에서, 프로세서는 세 개의 포인터를 로컬 그래픽 메모리 내의 제3 빈 기억 영역에 기록한다. 이 포인터들은 미리 로컬 그래픽 메모리에 기록해둔 세 꼭지점의 메모리 위치를 나타낸다.At block 630, the processor determines whether the graphics circle crosses the third bin. If it is determined that the graphics circle crosses the third bin, then at block 635, the processor writes three pointers to a third bin storage area in local graphics memory. These pointers indicate the three vertex memory locations previously recorded in local graphics memory.

블록(640)에서, 프로세서는 그래픽스 원형이 제4 빈을 가로지르는지 여부를 결정한다. 만약 그래픽스 원형이 제4 빈을 가로지는 것으로 판정되면, 블록(645)에서, 프로세서는 세 개의 포인터를 로컬 그래픽 메모리 내의 제4 빈 기억 영역에 기록한다. 이 포인터들은 미리 로컬 그래픽 메모리에 기록해둔 세 꼭지점의 메모리 위치를 나타낸다.At block 640, the processor determines whether the graphics circle crosses the fourth bin. If it is determined that the graphics circle traverses the fourth bin, then at block 645, the processor writes three pointers to the fourth bin storage area in local graphics memory. These pointers indicate the three vertex memory locations previously recorded in local graphics memory.

비록, 본 실시예가 어쩌면 네 개의 빈을 가로지를 수 있는 그래픽스 원형을 기술하지만, 다른 실시예에서는 그래픽스 원형이 두 개이상의 빈을 가로지를 수도 있다. 또한, 일 실시예에서 빈은 128 * 64 화소의 크기를 가질 수 있지만, 다른 크기의 빈도 가능하다. 또한 빈 가로지름 결정은 전술한 바와 같은 직렬 접근법 대신에 병렬 방식으로 수행될 수 있다. 예를 들어, 원형의 묶음 상자는 원형을 가로지는 모든 빈을 한꺼번에 발견하는 데 사용될 수 있다.Although the present embodiment describes a graphics circle that may possibly cross four bins, in other embodiments the graphics circle may cross two or more bins. Also, in one embodiment the bin may have a size of 128 * 64 pixels, but other sizes of frequencies are possible. The bin crossing determination may also be performed in a parallel manner instead of the serial approach as described above. For example, a circular bundle box can be used to find all the bins across a circle at once.

블록(647)에 나타낸 바와 같이 블록(605) 내지 블록(645)은 모든 원형이 복수의 빈으로 분류될 때까지 반복될 수 있다.As shown in block 647, blocks 605 through 645 may be repeated until all circles have been classified into a plurality of bins.

블록(650)에서, 그래픽스 컨트롤러는 데이터를 제1 빈 기억 영역으로부터 인출한다. 제1 빈 기억 영역으로부터 인출된 데이터와 꼭지점 버퍼는 블록(615)에서 로컬 그래픽 메모리에 미리 기록된 그래픽스 원형에 대한 꼭지점 데이터를 포함한다.At block 650, the graphics controller fetches data from the first empty storage area. The data fetched from the first free storage area and the vertex buffer contain vertex data for the graphics primitives previously written to the local graphics memory at block 615.

그래픽스 컨트롤러가 제1 빈 데이터를 인출한 후, 블록(660)에서 그래픽스 컨트롤러는 제1 빈 원형들을 렌더링한다. 렌더링 프로세스의 일부로서, 그래픽스 컨트롤러는 제1 빈 데이터에 포함된 각 그래픽스 원형의 어떤 부분이 제1 빈에 포함되는지를 결정하고, 오직 그 부분의 원형만을 렌더링한다.After the graphics controller fetches the first bin data, at block 660 the graphics controller renders the first bin primitives. As part of the rendering process, the graphics controller determines which portion of each graphics prototype contained in the first bin data is included in the first bin and renders only the prototype of that portion.

제1 빈의 렌더링한 다음에, 그래픽스 컨트롤러는 제2 빈의 처리하기 위하여 계속한다. 제2 빈 처리의 첫 번째 단계로서, 블록(665)에서 그래픽스 컨트롤러는 데이터를 제2 빈 기억 영역으로부터 인출한다. 제2 빈 기억 영역으로 인출된 데이터는 그래픽스 원형의 꼭지점 데이터에 대한 포인터를 포함하며, 블록(620)에서 제2 빈과 교차한다고 판정된 것이다. 블록(670)에서, 그래픽스 컨트롤러는 블록(615)에서 미리 꼭지점 캐시에 기억된 꼭지점 데이터를 액세스하기 위하여 포인터들을 사용한다. 일단 그래픽스 컨트롤러가 꼭지점 데이터를 액세스하면, 블록(675)에서 그래픽스 컨트롤러는 제2 빈 원형들을 렌더링한다.After rendering of the first bean, the graphics controller continues to process the second bean. As a first step of the second bin process, at block 665 the graphics controller fetches data from the second bin storage area. The data fetched into the second bin storage area includes a pointer to the vertex data of the graphics circle and is determined to intersect the second bin at block 620. At block 670, the graphics controller uses the pointers to access the vertex data previously stored in the vertex cache at block 615. Once the graphics controller accesses the vertex data, at block 675 the graphics controller renders the second empty circles.

블록(680)에서, 렌더링하여야 할 추가적인 빈이 남아있는지 여부를 결정한다. 만약, 추가적인 빈이 남아있으면 처리는 블록(665)에서 다시 계속한다. 블록(665) 내지 블록(680)은 모든 빈이 렌더링될 때까지 반복되고, 블록(685)에서 처리는 종료된다. 빈 렌더링의 순서는 연속적(serial) 또는 비연속적일 수 있음을 유의하라. 상기한 실시예는 어떤 발견적 교수법에 의해 일반화될 수 있으며, 제2 빈을 먼저, 그리고 이어서 제3, 제1 및 제4 빈을 렌더링할 수 있다. 이것은 전체 시스템 성능의 최적화 측정을 가능하게 한다. 예를 들어, 적재 균형(load balancing)은 그래픽스 컨트롤러에서 전치(front-end) 및 후치(back-end) 처리에 대한 적재를 일반화하는 데 사용될 수 있다.At block 680, it is determined whether there are additional beans left to render. If additional beans remain, processing continues again at block 665. Blocks 665 to 680 are repeated until all bins are rendered, and processing ends at block 685. Note that the order of the empty renderings can be serial or discontinuous. The above embodiment can be generalized by any heuristic teaching method, and the second bin can be rendered first and then the third, first and fourth bins. This enables an optimized measure of overall system performance. For example, load balancing can be used to generalize loading for front-end and back-end processing in graphics controllers.

도 7은 꼭지점 캐시(742)를 포함하는 그래픽스 컨트롤러(740)를 포함하는 컴퓨터 시스템의 블록도이다. 도 7의 컴퓨터 시스템은 또한 프로세서 버스(715)를 통하여 시스템 논리 장치(720)에 연결된 프로세서(710)를 포함한다. 시스템 논리 장치(720)는 프로세서(710)와 시스템 메모리(730) 사이의 통신을 제공한다. 시스템 메모리(730)는 그래픽스 원형 기억 영역(732)을 포함한다. 그래픽스 원형 기억 영역(732)은 복수의 빈에 대한 기억 영역으로 나뉘어질 수 있다.7 is a block diagram of a computer system including a graphics controller 740 that includes a vertex cache 742. The computer system of FIG. 7 also includes a processor 710 coupled to system logic device 720 via a processor bus 715. System logic device 720 provides communication between processor 710 and system memory 730. System memory 730 includes a graphics circular storage area 732. The graphics circular memory area 732 can be divided into memory areas for a plurality of bins.

시스템 논리 장치(720)는 또한 그래픽스 컨트롤러(740)를 프로세서(710) 및 시스템 메모리(730)에 연결시키는 역할을 한다. 도 7의 시스템은 또한 그래픽스 컨트롤러(740)에 연결되는 디스플레이 모니터(750)를 포함한다.System logic device 720 also serves to connect graphics controller 740 to processor 710 and system memory 730. The system of FIG. 7 also includes a display monitor 750 coupled to the graphics controller 740.

도 7의 시스템은 도 4 및 도 5와 관련하여 앞서 논의한 바와 같이 메모리 대역폭 이용을 향상시키기 위한 방법의 실시예와 같이 이용될 수 있다. 예를 들어, 프로세서(710)는 그래픽스 원형의 꼭지점 데이터를 그래픽스 원형 기억 영역(732)으로부터 판독할 수 있다. 프로세서(710)는 이어서 어떤 빈들이 그래픽스 원형을 가로지르는지를 결정할 수 있다. 그 다음에, 프로세서(710)는 꼭지점 데이터를 그래픽스 원형 기억 영역(732) 내의 제1 빈 기억 영역에 기록한다. 만약 그래픽스 원형이 다른 빈들을 가로지르는 것으로 판정되면, 프로세서(710)는 포인터를 그래픽스 원형 기억 영역(732) 내의 다른 빈 기억 영역에 포인터들을 기록한다. 이 포인터들은 꼭지점 데이터가 기억되어 있는 제1 빈 기억 영역 내의 위치를 나타낸다. 이 예에서 포인터들은 계산될 꼭지점 데이터의 메모리 위치로부터의 16 비트 인덱스를 포함한다. 또 다른 실시예에서는 상이한 길이의 인덱스 및/또는 주소를 사용할 수 있다.The system of FIG. 7 may be used as an embodiment of a method for improving memory bandwidth utilization as discussed above with respect to FIGS. 4 and 5. For example, the processor 710 may read the graphics circular vertex data from the graphics circular storage area 732. Processor 710 may then determine which bins cross the graphics circle. Processor 710 then writes the vertex data to the first empty storage area in graphics circular storage area 732. If it is determined that the graphics circle traverses the other bins, the processor 710 writes the pointers to other bin storage areas in the graphics circle storage area 732. These pointers indicate positions in the first empty storage area in which the vertex data is stored. In this example the pointers contain a 16 bit index from the memory location of the vertex data to be calculated. Still other embodiments may use different length indexes and / or addresses.

그래픽스 컨트롤러(740)가 제1 빈을 처리하고자 하는 경우, 그래픽스 컨트롤러(740)는 그래픽스 원형 기억 영역(732)로부터 제1 빈 데이터를 인출한다. 그래픽스 컨트롤러(740)는 그 그래픽스 원형에 대한 꼭지점 데이터를 꼭지점 캐시(742)에 기억시킨다. 그래픽스 컨트롤러(740)는 이어서 제1 빈 영역 내에 포함되는 그래픽스 원형들의 일부를 포함하는 제1 빈을 렌더링한다.When the graphics controller 740 intends to process the first bin, the graphics controller 740 fetches the first bin data from the graphics circular storage area 732. The graphics controller 740 stores the vertex data for the graphics prototype in the vertex cache 742. Graphics controller 740 then renders the first bin including some of the graphics primitives contained within the first bin area.

이 예의 경우, 빈은 1328 * 64 화소 크기이다. 꼭지점 캐시(742)는 이 예에서 4 방향 셋 어소시어티브(4-way set-associative) 방식이고 32 바이트 꼭지점 데이터를 기억하는 16 엔트리를 포함한다. 다른 실시예에서는 상이한 빈 크기 및/또는 상이한 캐시 배열(cache arrangement)이 가능하다.For this example, the bin is 1328 * 64 pixels in size. Vertex cache 742 in this example is a 4-way set-associative scheme and contains 16 entries that store 32 bytes of vertex data. In other embodiments, different bin sizes and / or different cache arrangements are possible.

그래픽스 컨트롤러(740)가 제2 빈을 처리할 준비가 된 경우, 그래픽스 컨트롤러(740)는 제2 빈에 대한 데이터를 그래픽스 원형 기억 영역(732)로부터 인출한다. 프로세서(710)가 이전에 그래픽스 원형이 제2 빈을 가로지르는 것으로 결정하였다면, 제2 빈에 대한 데이터는 그래픽스 원형의 꼭지점 데이터에 대한 포인터들을 포함할 것이다. 그래픽스 컨트롤러(740)는 이어서 그 포인터를 꼭지점 캐시(742)에 기억된 꼭지점 데이터를 액세스하기 위하여 사용한다. 꼭지점 캐시(742)는 이 예의 경우처럼, 꼭지점 데이터의 복사본이 꼭지점 캐시(742)에 기억되어 있는 경우에 꼭지점 데이터를 그래픽스 원형 기억 영역(732)으로부터 인출하여야 할 필요성을 제거함으로써 메모리 대역폭 이용을 개선시키는 역할을 한다.When the graphics controller 740 is ready to process the second bin, the graphics controller 740 fetches data for the second bin from the graphics circular storage area 732. If processor 710 previously determined that the graphics circle traversed the second bin, then the data for the second bin would include pointers to the vertex data of the graphics circle. Graphics controller 740 then uses that pointer to access vertex data stored in vertex cache 742. The vertex cache 742 improves memory bandwidth utilization by eliminating the need to fetch vertex data from the graphics circular storage area 732 when a copy of the vertex data is stored in the vertex cache 742, as in this example. It plays a role.

일단 꼭지점 데이터가 꼭지점 캐시(742)에서 검색되면, 그래픽스 컨트롤러(740)는 제2 빈을 렌더링할 수 있다. 모든 빈이 렌더링될 때까지 후속하는 빈들이 동일한 방식으로 처리될 수 있다.Once the vertex data is retrieved from the vertex cache 742, the graphics controller 740 can render the second bean. Subsequent beans can be processed in the same way until all beans are rendered.

전술한 명세서에서 본 발명은 특정 실시예들을 참조하여 기술하였다. 그러나 첨부된 청구범위에 기술한 본 발명의 사상과 범위를 벗어나지 않는 다양한 변형과 변경이 가능함은 명백하다. 따라서 본 명세서 및 도면은 제한적이기보다는 예시적인 것으로 간주되어야 한다.In the foregoing specification, the invention has been described with reference to specific embodiments. However, it is apparent that various modifications and changes can be made without departing from the spirit and scope of the invention as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.

명세서에서 "실시예", "일 실시예", "어떤 실시예" 또는 "다른 실시예"는 실시예와 관련하여 기술된 특정한 특징, 구조 또는 특성이 적어도 어떤 실시예에 포함되지만, 본 발명의 모든 실시예에 반드시 포함되어야 하는 것은 아님을 의미한다. "실시예", "일 실시예" 또는 "어떤 실시예"의 다양한 모습은 반드시 모두 동일한 실시예를 가리키지는 않는다.In the specification, "an embodiment", "an embodiment", "an embodiment" or "another embodiment" includes at least some embodiments of a particular feature, structure, or characteristic described in connection with the embodiment, It is not meant to be included in all embodiments. Various appearances of "an embodiment", "one embodiment" or "an embodiment" do not necessarily all refer to the same embodiment.

Claims (17)

그래픽스 원형(graphics primitive)이 제1 타일과 복수의 제2 타일을 가로지르는지를 결정하는 단계,Determining if a graphics primitive crosses the first tile and the plurality of second tiles, 상기 그래픽스 원형에 대응하는 복수의 꼭지점을 메모리 장치 내에 위치된 제1 빈 기억 영역(first bin storage area)에 기록하는 단계, 및Writing a plurality of vertices corresponding to the graphics prototype in a first bin storage area located in a memory device, and 상기 복수의 꼭지점에 대한 데이터의 위치를 나타내는 복수의 포인터(pointer)를, 상기 메모리 장치 내에 위치된 복수의 제2 빈 기억 영역에 기록하는 단계Writing a plurality of pointers indicating positions of data with respect to the plurality of vertices, into a plurality of second empty storage areas located in the memory device; 를 포함하는 방법.How to include. 제1항에서,In claim 1, 상기 그래픽스 원형에 대응하는 복수의 꼭지점을 메모리 장치 내에 위치된 제1 빈 기억 영역에 기록하는 단계는, 상기 그래픽스 원형에 대응하는 복수의 꼭지점에 대한 데이터를 프레임 버퍼(frame buffer) 내에 위치된 제1 빈 기억 영역에 기록하는 단계를 포함하는 방법.The writing of the plurality of vertices corresponding to the graphics primitives in a first empty storage area located in the memory device may include: writing data about the plurality of vertices corresponding to the graphics primitives in a first frame buffer; Writing to an empty storage area. 제2항에서,In claim 2, 복수의 포인터(pointer)를 상기 메모리 장치 내에 위치된 복수의 제2 빈 기억 영역에 기록하는 단계는, 복수의 포인터를 프레임 버퍼 내에 위치된 복수의 제2 빈 기억 영역에 기록하는 단계를 포함하는 방법.Writing a plurality of pointers to a plurality of second empty storage areas located in the memory device includes writing the plurality of pointers to a plurality of second empty storage areas located in a frame buffer. . 제1항에서,In claim 1, 상기 그래픽스 원형에 대응하는 복수의 꼭지점을 메모리 장치 내에 위치된 제1 빈 기억 영역에 기록하는 단계는, 상기 그래픽스 원형에 대응하는 복수의 꼭지점에 대한 데이터를 주 메모리(main memory) 내에 위치된 제1 빈 기억 영역에 기록하는 단계를 포함하는 방법.The writing of the plurality of vertices corresponding to the graphics primitives in a first empty storage area located in the memory device may include: writing data about the plurality of vertices corresponding to the graphics primitives in a first memory; Writing to an empty storage area. 제4항에서,In claim 4, 복수의 포인터를 상기 메모리 장치 내에 위치된 복수의 제2 빈 기억 영역에 기록하는 단계는, 복수의 포인터를 주 메모리 내에 위치된 복수의 제2 빈 기억 영역에 기록하는 단계를 포함하는 방법.Writing a plurality of pointers into a plurality of second empty storage areas located in the memory device, comprising recording a plurality of pointers into a plurality of second empty storage areas located in main memory. 제5항에서,In claim 5, 상기 방법은The method is 상기 복수의 꼭지점 중 하나를 꼭지점 캐시(vertex cache)로 적재(load)하는 단계,Loading one of the plurality of vertices into a vertex cache, 복수의 포인터 중 하나를 그래픽스 컨트롤러 내로 판독하는 단계, 및Reading one of the plurality of pointers into the graphics controller, and 상기 복수의 포인터 중 하나를 이용하여 상기 꼭지점 캐시 내에 기억된 복수 의 꼭지점 중 하나에 대한 데이터를 액세스하는 단계Accessing data for one of a plurality of vertices stored in the vertex cache using one of the plurality of pointers 를 더 포함하는 방법.How to include more. 메모리 내에 위치된 복수의 빈 기억 영역으로부터 원시 데이터를 인출(fetch)하는 그래픽스 컨트롤러를 포함하는 장치로서,An apparatus comprising a graphics controller for fetching raw data from a plurality of free storage areas located in memory, the apparatus comprising: 상기 원시 데이터는 꼭지점에 대응하는 데이터에 대한 메모리 위치를 나타내는 복수의 포인터를 포함하고,The raw data includes a plurality of pointers indicating memory locations for data corresponding to vertices, 상기 그래픽스 컨트롤러는 부가적인 빈 기억 영역으로부터 상기 복수의 포인터가 나타내는 상기 꼭지점에 대응하는 데이터를 추가로 인출하는The graphics controller further extracts data corresponding to the vertices indicated by the plurality of pointers from an additional empty storage area. 장치.Device. 제7항에서,In claim 7, 상기 메모리는 주 메모리 장치를 포함하는 장치.And the memory comprises a main memory device. 제7항에서,In claim 7, 상기 그래픽스 컨트롤러는 상기 복수의 포인터가 나타내는 꼭지점에 대응하는 데이터를 프레임 버퍼로부터 인출하는 장치.And the graphics controller fetches data corresponding to the vertices indicated by the plurality of pointers from the frame buffer. 제7항에서,In claim 7, 상기 그래픽스 컨트롤러는 상기 복수의 포인터가 나타내는 꼭지점에 대응하는 데이터를 주 메모리 장치로부터 인출하는 장치.And the graphics controller fetches data corresponding to the vertices indicated by the plurality of pointers from the main memory device. 제7항에서,In claim 7, 상기 장치는 꼭지점 캐시를 더 포함하고,The device further comprises a vertex cache, 상기 그래픽스 컨트롤러는 상기 복수의 포인터가 나타내는 꼭지점에 대응하는 데이터를 상기 꼭지점 캐시로부터 인출하는 장치.And the graphics controller fetches data corresponding to vertices indicated by the plurality of pointers from the vertex cache. 제11항에서,In claim 11, 상기 꼭지점 캐시는 각각 32 바이트의 꼭지점 데이터를 기억하는 복수의 엔트리(entry)를 포함하는 장치.And wherein the vertex cache comprises a plurality of entries each storing 32 bytes of vertex data. 프로세서,Processor, 상기 프로세서에 연결된 메모리 컨트롤러,A memory controller connected to the processor, 상기 메모리 컨트롤러에 연결된 주 메모리, 및A main memory connected to the memory controller, and 상기 주 메모리 내에 위치된 복수의 빈 기억 영역으로부터 원시 데이터를 인출하는 그래픽스 컨트롤러A graphics controller for extracting raw data from a plurality of free storage areas located in the main memory 를 포함하는 시스템으로서,As a system comprising: 상기 원시 데이터는 꼭지점에 대응하는 데이터에 대한 메모리 위치를 나타내는 복수의 포인터를 포함하고,The raw data includes a plurality of pointers indicating memory locations for data corresponding to vertices, 상기 그래픽스 컨트롤러는 상기 복수의 포인터가 나타내는 상기 꼭지점에 대응하는 데이터를 부가적인 빈 기억 영역으로부터 추가로 인출하는The graphics controller further extracts data corresponding to the vertices indicated by the plurality of pointers from an additional empty storage area. 시스템.system. 제13항에서,In claim 13, 상기 그래픽스 컨트롤러는 상기 복수의 포인터가 나타내는 꼭지점에 대응하는 데이터를 상기 그래픽스 컨트롤러에 연결된 프레임 버퍼로부터 인출하는 시스템.And the graphics controller fetches data corresponding to vertices indicated by the plurality of pointers from a frame buffer connected to the graphics controller. 제13항에서,In claim 13, 상기 그래픽스 컨트롤러는 상기 복수의 포인터가 나타내는 꼭지점에 대응하는 데이터를 주 메모리로부터 인출하는 시스템.And the graphics controller fetches data corresponding to the vertices indicated by the plurality of pointers from the main memory. 제13항에서,In claim 13, 상기 그래픽스 컨트롤러는 꼭지점 캐시를 더 포함하고,The graphics controller further includes a vertex cache, 상기 그래픽스 컨트롤러는 상기 복수의 포인터가 나타내는 꼭지점에 대응하는 데이터를 상기 꼭지점 캐시로부터 인출하는 시스템.And the graphics controller fetches data corresponding to the vertices indicated by the plurality of pointers from the vertex cache. 제16항에서,The method of claim 16, 상기 꼭지점 캐시는 각각 32 바이트의 꼭지점 데이터를 기억하는 복수의 엔트리를 포함하는 시스템.The vertex cache includes a plurality of entries each storing 32 bytes of vertex data.
KR1020027013055A 2000-03-31 2001-03-06 Tiled graphics architecture KR100550240B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US54061600A 2000-03-31 2000-03-31
US09/540,616 2000-03-31
PCT/US2001/007225 WO2001075804A1 (en) 2000-03-31 2001-03-06 Tiled graphics architecture

Publications (2)

Publication Number Publication Date
KR20030005253A KR20030005253A (en) 2003-01-17
KR100550240B1 true KR100550240B1 (en) 2006-02-08

Family

ID=24156227

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027013055A KR100550240B1 (en) 2000-03-31 2001-03-06 Tiled graphics architecture

Country Status (8)

Country Link
EP (1) EP1269418A1 (en)
JP (1) JP2003529860A (en)
KR (1) KR100550240B1 (en)
CN (2) CN1430769B (en)
AU (1) AU2001256955A1 (en)
HK (1) HK1049537A1 (en)
TW (1) TWI233573B (en)
WO (1) WO2001075804A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9013479B2 (en) 2010-01-06 2015-04-21 Samsung Electronics Co., Ltd. Apparatus and method for tile-based rendering
US9159157B2 (en) 2011-11-09 2015-10-13 Samsung Electronics Co., Ltd. Apparatus and method for tile binning

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738069B2 (en) * 2001-12-31 2004-05-18 Intel Corporation Efficient graphics state management for zone rendering
US7765366B2 (en) * 2005-06-23 2010-07-27 Intel Corporation Memory micro-tiling
GB2449399B (en) 2006-09-29 2009-05-06 Imagination Tech Ltd Improvements in memory management for systems for generating 3-dimensional computer images
JP4913823B2 (en) * 2006-11-01 2012-04-11 株式会社ディジタルメディアプロフェッショナル A device to accelerate the processing of the extended primitive vertex cache
US8139058B2 (en) * 2006-11-03 2012-03-20 Vivante Corporation Hierarchical tile-based rasterization algorithm
GB2458488C (en) 2008-03-19 2018-09-12 Imagination Tech Ltd Untransformed display lists in a tile based rendering system
US20110043518A1 (en) * 2009-08-21 2011-02-24 Nicolas Galoppo Von Borries Techniques to store and retrieve image data
KR101609266B1 (en) 2009-10-20 2016-04-21 삼성전자주식회사 Apparatus and method for rendering tile based
WO2011161723A1 (en) * 2010-06-24 2011-12-29 富士通株式会社 Drawing device and drawing method
CN110415161B (en) * 2019-07-19 2023-06-27 龙芯中科(合肥)技术有限公司 Graphics processing method, device, equipment and storage medium
WO2022150347A1 (en) * 2021-01-05 2022-07-14 Google Llc Subsurface display interfaces and associated systems and methods

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5886701A (en) * 1995-08-04 1999-03-23 Microsoft Corporation Graphics rendering device and method for operating same
WO2000011607A1 (en) * 1998-08-20 2000-03-02 Apple Computer, Inc. Deferred shading graphics pipeline processor
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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9013479B2 (en) 2010-01-06 2015-04-21 Samsung Electronics Co., Ltd. Apparatus and method for tile-based rendering
US9159157B2 (en) 2011-11-09 2015-10-13 Samsung Electronics Co., Ltd. Apparatus and method for tile binning

Also Published As

Publication number Publication date
CN102842145B (en) 2016-08-24
CN1430769B (en) 2012-05-30
JP2003529860A (en) 2003-10-07
EP1269418A1 (en) 2003-01-02
AU2001256955A1 (en) 2001-10-15
HK1049537A1 (en) 2003-05-16
WO2001075804A1 (en) 2001-10-11
CN1430769A (en) 2003-07-16
TWI233573B (en) 2005-06-01
CN102842145A (en) 2012-12-26
KR20030005253A (en) 2003-01-17

Similar Documents

Publication Publication Date Title
US6288730B1 (en) Method and apparatus for generating texture
US7944441B2 (en) Compression and decompression of data using plane equations
US6903737B2 (en) Method and apparatus for implementing spread memory layout
EP1016068B1 (en) Reordering of memory references for pixels in a page-mode memory architecture
KR100301223B1 (en) Draw processor for high performance 3D graphic accelerators
US6160557A (en) Method and apparatus providing efficient rasterization with data dependent adaptations
US6278645B1 (en) High speed video frame buffer
KR101034925B1 (en) Method and apparatus for encoding texture information
US20060164429A1 (en) 3-D rendering texture caching scheme
KR100550240B1 (en) Tiled graphics architecture
US7898551B2 (en) Systems and methods for performing a bank swizzle operation to reduce bank collisions
US20110279465A1 (en) Memory system having multiple address allocation formats and method for use thereof
US7348988B2 (en) Texture cache control using an adaptive missing data table in a multiple cache computer graphics environment
EP2380139A1 (en) Display list control stream grouping in tile based 3d computer graphics system
JP4545242B2 (en) Non-blocking pipeline cache
US6891546B1 (en) Cache memory for texture mapping process in three-dimensional graphics and method for reducing penalty due to cache miss
JP4061697B2 (en) Image display method and image display apparatus for executing the same
US6300953B1 (en) Apparatus and method for grouping texture cache requests
EP1721298A2 (en) Embedded system with 3d graphics core and local pixel buffer
JP4777893B2 (en) Drawing device
JP2882465B2 (en) Image generation method and apparatus
US6778179B2 (en) External dirty tag bits for 3D-RAM SRAM
CN117555465A (en) Graphic display method and graphic display device for display equipment
CN116385253A (en) Primitive drawing method, device, computer equipment and storage medium

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

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140203

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150130

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160127

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170126

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20180201

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20190129

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20200129

Year of fee payment: 15