KR20150034062A - 동일한 그룹의 데이터를 라우팅하는 방법 및 장치, 렌더링 유닛을 재구성하는 방법 및 장치 - Google Patents
동일한 그룹의 데이터를 라우팅하는 방법 및 장치, 렌더링 유닛을 재구성하는 방법 및 장치 Download PDFInfo
- Publication number
- KR20150034062A KR20150034062A KR20130114145A KR20130114145A KR20150034062A KR 20150034062 A KR20150034062 A KR 20150034062A KR 20130114145 A KR20130114145 A KR 20130114145A KR 20130114145 A KR20130114145 A KR 20130114145A KR 20150034062 A KR20150034062 A KR 20150034062A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- unit
- ray
- light
- trv
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/06—Ray-tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
Abstract
일 실시 예에 따른 라우팅 방법은 입력된 데이터의 그룹을 식별하는 단계; 상기 식별된 그룹에 지정된 라우팅 경로(routing path)로 상기 데이터를 전송하는 단계; 및 상기 데이터에 대한 피드백 신호에 기초하여 상기 식별된 그룹에 지정된 라우팅 경로를 업데이트하는 단계를 포함한다.
Description
데이터를 라우팅하는 방법 및 장치, 멀티 코어 시스템에 관한 것이다.
NoC(Network on Chip) 기반의 멀티 코어 시스템의 경우, 입력되는 데이터들을 멀티 코어들로 전송하는 라우팅 방법이 사용된다. 이때, 데이터들이 전송되는 코어에 전송되는 데이터들에 관한 정보가 포함되어 있어야 한다. 만약, 데이터들이 전송되는 코어에 전송되는 데이터들에 관한 정보가 포함되어 있지 않으면, 다른 코어로 데이터들을 다시 전송된다. 데이터들이 다시 전송되는 횟수가 많을수록 멀티 코어 시스템의 성능이 저하된다. 따라서, 데이터를 처리하기 위한 코어로 데이터를 전송하기 위한 방법이 요구된다.
3D 렌더링은 3차원 객체 데이터를 주어진 카메라의 시점(view point)에서 보이는 영상으로 합성(synthesis)해주는 영상 처리 과정이다. 광선 추적 방법은 렌더링의 대상이 되는 씬 오브젝트(scene object)들과 광선이 교차되는 지점을 추적하는 과정이다. 광선 추적(ray-tracing)은 가속 구조(acceleration structure)의 탐색(traversal)과 광선-프리미티브(ray-primitive) 간의 교차 검사(intersection test) 과정을 포함한다.
교차 가능성이 높은 방향으로 데이터를 라우팅하기 위한 방법 및 장치를 제공하는 데 있다.
또한, 멀티 코어 시스템의 성능을 향상시키기 위하여, 렌더링 유닛들을 재구성하는 방법 및 장치를 제공하는 데 있다.
또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다. 본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 실시 예에 따른 라우팅 방법은 입력된 데이터의 그룹을 식별하는 단계; 상기 식별된 그룹에 지정된 라우팅 경로(routing path)로 상기 데이터를 전송하는 단계; 및 상기 데이터에 대한 피드백 신호에 기초하여 상기 식별된 그룹에 지정된 라우팅 경로를 업데이트하는 단계를 포함한다.
일 실시 예에 따른 라우터는 입력된 데이터의 그룹을 식별하는 제어부; 및 상기 식별된 그룹에 지정된 라우팅 경로(routing path)로 상기 데이터를 전송하는 전송부를 포함하고, 상기 제어부는 상기 데이터에 대한 피드백 신호에 기초하여 상기 식별된 그룹에 지정된 라우팅 경로를 업데이트한다.
또 다른 실시 예에 따른 렌더링 유닛의 재구성 방법은 복수의 프로세싱 유닛들에 렌더링 유닛을 재구성하는 방법에 있어서, 이전 프레임의 렌더링 과정에서 사용되는 상기 렌더링 유닛들의 워크로드를 측정하는 단계; 상기 워크로드에 기초하여 현재 프레임 과정에서 상기 렌더링 유닛들을 재구성하는 단계를 포함한다.
또 다른 실시 예에 따른 렌더링 유닛의 재구성 장치는 복수의 프로세싱 유닛들에 렌더링 유닛을 재구성하는 장치에 있어서, 이전 프레임의 렌더링 과정에서 사용되는 상기 렌더링 유닛들의 워크로드를 측정하는 워크로드 측정부; 상기 워크로드에 기초하여 현재 프레임 과정에서 상기 렌더링 유닛들을 재구성하는 재구성부를 포함한다.
동일한 그룹의 데이터들을 동일한 경로로 전송하여 라우팅의 효율을 높일 수 있다.
전송된 데이터에 의해 수신된 피드백 신호에 기초하여 전송된 데이터와 동일한 그룹의 데이터의 라우팅 경로를 업데이트할 수 있다.
동일한 그룹의 광선 데이터들을 동일한 TRV 유닛으로 전송하여, 광선 데이터의 히트율을 높일 수 있다.
이전 프레임의 렌더링 과정에서 측정된 워크로드를 고려하여 프로세싱 유닛들에 렌더링 유닛들을 할당함으로써, 현재 프레임의 워크로드를 분산하여 렌더링을 수행할 수 있다.
도 1은 광선 추적을 설명하기 위한 도면이다.
도 2는 레이 트레이싱 코어를 설명하기 위한 도면이다.
도 3은 레이 트레이싱 코어가 광선 추적을 수행하는 것을 설명하기 위한 도면이다.
도 4는 광선 추적을 가속하기 위한 방법을 설명하기 위한 도면이다.
도 5는 도 4의 광선 추적을 가속하기 위한 방법을 설명하기 위한 도면이다.
도 6은 일 실시 예에 따른 라우터를 나타낸다.
도 7은 일 실시 예에 따른 라우터를 설명하기 위한 도면이다.
도 8은 또 다른 실시 예에 따른 라우터를 설명하기 위한 도면이다.
도 9는 도 6의 라우터가 광선 데이터를 라우팅하는 방법을 설명하기 위한 흐름도이다.
도 10은 라우터가 라우팅 테이블을 업데이하는 동작을 설명하기 위한 흐름도이다.
도 11은 라우터가 전송하고 수신하는 패킷들을 설명하기 위한 도면이다.
도 12는 일 실시 예에 따른 NoC를 설명하기 위한 도면이다.
도 13은 라우팅 테이블을 설명하기 위한 도면이다.
도 14는 일 실시 예에 따른 라우팅 방법을 설명하기 위한 순서도이다.
도 15는 일 실시 예에 따른 재구성 장치를 설명하기 위한 도면이다.
도 16은 렌더링 유닛들의 프로세싱 유닛에 할당한 일 예이다.
도 17은 렌더링 유닛들의 프로세싱 유닛에 할당한 또 다른 예이다.
도 18은 일 실시 예에 따른 렌더링 유닛들의 재구성 방법을 설명하기 위한 순서도이다.
도 2는 레이 트레이싱 코어를 설명하기 위한 도면이다.
도 3은 레이 트레이싱 코어가 광선 추적을 수행하는 것을 설명하기 위한 도면이다.
도 4는 광선 추적을 가속하기 위한 방법을 설명하기 위한 도면이다.
도 5는 도 4의 광선 추적을 가속하기 위한 방법을 설명하기 위한 도면이다.
도 6은 일 실시 예에 따른 라우터를 나타낸다.
도 7은 일 실시 예에 따른 라우터를 설명하기 위한 도면이다.
도 8은 또 다른 실시 예에 따른 라우터를 설명하기 위한 도면이다.
도 9는 도 6의 라우터가 광선 데이터를 라우팅하는 방법을 설명하기 위한 흐름도이다.
도 10은 라우터가 라우팅 테이블을 업데이하는 동작을 설명하기 위한 흐름도이다.
도 11은 라우터가 전송하고 수신하는 패킷들을 설명하기 위한 도면이다.
도 12는 일 실시 예에 따른 NoC를 설명하기 위한 도면이다.
도 13은 라우팅 테이블을 설명하기 위한 도면이다.
도 14는 일 실시 예에 따른 라우팅 방법을 설명하기 위한 순서도이다.
도 15는 일 실시 예에 따른 재구성 장치를 설명하기 위한 도면이다.
도 16은 렌더링 유닛들의 프로세싱 유닛에 할당한 일 예이다.
도 17은 렌더링 유닛들의 프로세싱 유닛에 할당한 또 다른 예이다.
도 18은 일 실시 예에 따른 렌더링 유닛들의 재구성 방법을 설명하기 위한 순서도이다.
이하에서는 도면을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 광선 추적을 설명하기 위한 도면이다. 도 1을 참조하면, 3차원 모델링에서, 레이 트레이싱 코어는 시점(10)을 결정하고, 시점(view point)에 따라 화면(image, 20)을 결정한다. 시점(10)과 화면(20)이 결정되면, 레이 트레이싱 코어(ray tracing core)는 시점(10)으로부터 화면(20)의 각 픽셀(pixel)들에 대하여 광선을 생성한다.
도 1의 구성들을 설명하면, 시점(10)으로부터 1차 광선(primary ray, 30)이 생성된다. 1차 광선(30)은 화면(20)을 지나 씬 오브젝트(scene object, 70)와 교차된다. 1차 광선(30)과 씬 오브젝트(70)의 교차점에서는 반사 광선(reflection ray, 40) 및 굴절 광선(refraction ray, 50)이 생성된다. 또한, 교차점에서 광원(80)의 방향으로 쉐도우 광선(shadow ray, 60)이 생성된다. 이때, 반사, 굴절, 쉐도우 광선들(40, 50, 60)을 2차 광선이라고 한다. 씬 오브젝트(70)는 화면(20)에 대한 렌더링의 대상이 되는 오브젝트를 나타낸다. 씬 오브젝트(70)는 복수의 프리미티브들을 포함한다.
레이 트레이싱 코어는 1차 광선(30), 2차 광선들(40, 50, 60) 및 2차 광선들로부터 파생되는 광선들을 분석한다. 레이 트레이싱 코어는 분석 결과에 기초하여 화면(20)을 구성하는 픽셀들의 색상 값을 결정한다. 이때, 레이 트레이싱 코어는 씬 오브젝트(70)의 특성을 고려하여 픽셀들의 색상 값을 결정한다.
도 2는 레이 트레이싱 코어(ray tracing core, 100)을 설명하기 위한 도면이다. 도 2를 참조하면, 레이 트레이싱 코어(100)는 광선 생성 유닛(110), TRV 유닛(120), IST 유닛(130) 및 쉐이딩 유닛(140)을 포함한다. 도 2에서는 TRV 유닛(120), IST 유닛(130)이 레이 트레이싱 코어(100)에 포함되는 것으로 도시되었으나, TRV 유닛(120), IST 유닛(130)은 별도의 하드웨어로 구현될 수 있다. 도 2에 도시된 레이 트레이싱 코어(100)는 본 실시 예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 2에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시 예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
레이 트레이싱 코어(100)는 생성된 광선들과 3차원 공간에 위치한 오브젝트들의 교차점을 추적하고, 화면을 구성하는 픽셀들의 색상 값을 결정한다. 다시 말해서, 레이 트레이싱 코어(100)는 광선들과 오브젝트들의 교차점을 찾고, 교차점에서의 오브젝트의 특성에 따라 2차 광선을 생성하고 교차점의 색상의 값을 결정한다.
레이 트레이싱 코어(100)는 가속 구조를 탐색하고 교차 검사를 수행할 때, 이전 탐색의 결과 및 이전 교차 검사의 결과를 이용할 수 있다. 즉, 레이 트레이싱 코어(100)는 이전 렌더링 과정에서 수행된 결과를 현재 렌더링 과정에 적용함으로써, 현재 렌더링을 보다 빠르게 수행할 수 있다.
광선 생성 유닛(110)은 1차 광선 및 2차 광선을 생성한다. 광선 생성 유닛(110)은 시점으로부터 1차 광선을 생성한다. 광선 생성 유닛(110)은 1차 광선과 오브젝트의 교차점에서 2차 광선을 생성한다. 또한, 광선 생성 유닛(110)은 2차 광선과 오브젝트의 교차점에서 또 다른 2차 광선을 생성할 수 있다. 즉, 광선 생성 유닛(110)은 2차 광선이 오브젝트와 교차된 지점에서 반사, 굴절 또는 쉐도우 광선을 생성할 수 있다. 광선 생성 유닛(110)은 정해진 횟수 내에서 반사, 굴절, 쉐도우 광선을 생성하거나, 오브젝트의 특성에 따라 반사, 굴절, 쉐도우 광선의 생성 횟수를 결정할 수 있다.
TRV 유닛(120)은 광선 생성 유닛(110)으로부터 생성된 광선에 대한 정보를 수신한다. 생성된 광선은 1차 광선, 2차 광선 및 2차 광선에 의해 파생된 광선을 모두 포함한다. 예를 들어, 1차 광선의 경우, TRV 유닛(120)은 생성된 광선의 시점 및 방향에 대한 정보를 수신할 수 있다. 또한, 2차 광선의 경우, TRV 유닛(120)은 2차 광선의 출발점 및 방향에 대한 정보를 수신할 수 있다. 2차 광선의 출발점은 1차 광선이 히트된 프리미티브의 지점을 나타낸다. 시점 또는 출발점은 좌표로 표현될 수 있으며, 방향은 벡터로 표현될 수 있다.
TRV 유닛(120)은 외부 메모리(250)로부터 가속 구조에 대한 정보를 독출(read)한다. 가속 구조는 가속 구조 생성 장치(200)에 의해 생성되고, 생성된 가속 구조는 외부 메모리(250)에 저장된다. 가속 구조는 3차원 공간의 오브젝트들의 위치 정보를 포함하고 있는 구조를 나타낸다. 예를 들어, 가속 구조는 KD-tree(K-Dimensional tree), BVH(Bounding Volume Hierarchy) 등이 적용될 수 있다.
TRV 유닛(120)은 가속 구조를 탐색하여, 광선이 히트(hit)된 오브젝트 또는 리프 노드(leaf node)를 출력한다. 즉, TRV 유닛(120)은 가속 구조에 포함된 노드들을 탐색하여, 노드들 중 최하위 노드인 리프 노드들 중에서 광선이 히트된 리프 노드를 IST 유닛(130)으로 출력한다. 다시 말해서, TRV 유닛(120)은 가속 구조를 구성하는 바운딩 박스(Bounding Box)들 중에서 어느 바운딩 박스에 광선이 히트되었는지 판단한다. TRV 유닛(120)은 바운딩 박스에 포함된 오브젝트들 중에서 어느 오브젝트에 광선이 히트되었는지 판단한다. TRV 유닛(120)은 TRV 캐쉬에 히트된 오브젝트에 대한 정보를 저장한다. 예를 들어, 바운딩 박스는 복수의 오브젝트 또는 프리미티브들을 포함하는 단위를 나타낸다. 바운딩 박스는 가속 구조에 따라 다른 형태로 표현될 수 있다.
TRV 유닛(120)은 이전 렌더링의 결과를 이용하여 가속 구조를 탐색할 수 있다. TRV 유닛(120)은 TRV 캐쉬에 저장된 이전 렌더링의 결과를 이용하여 이전 렌더링과 동일한 경로로 가속 구조를 탐색할 수 있다. 즉, TRV 유닛(120)이 입력된 광선에 대한 가속 구조를 탐색할 때, TRV 유닛(120)은 입력된 광선과 동일한 시점 및 방향을 갖는 이전 광선이 히트된 바운딩 박스에 대한 탐색을 우선적으로 수행할 수 있다. 또한, TRV 유닛(120)은 이전 광선에 대한 탐색 경로를 참조하여 가속 구조를 탐색할 수 있다.
TRV 캐쉬는 TRV 유닛(120)이 탐색 과정에서 사용하는 데이터를 일시적으로 저장하기 위한 메모리를 나타낸다.
IST 유닛(130)은 TRV 유닛(120)로부터 광선이 히트된 오브젝트 또는 리프 노드를 수신한다.
IST 유닛(130)은 외부 메모리(250)로부터 히트된 오브젝트에 포함된 프리미티브들에 대한 정보를 독출(read)한다. 독출된 프리미티브들에 대한 정보는 IST 캐쉬에 저장될 수 있다. IST 캐쉬는 교차 검색 과정에서 IST 유닛(130)이 사용하는 데이터를 일시적으로 저장하기 위한 메모리를 나타낸다.
IST 유닛(130)은 광선과 프리미티브 간의 교차 검사를 수행하여, 광선이 히트된 프리미티브 및 교차점을 출력한다. IST 유닛(130)은 TRV 유닛(120)으로부터 광선이 히트된 오브젝트가 무엇인지를 수신한다. IST 유닛(130)은 히트된 오브젝트에 포함된 복수의 프리미티브들 중에서 어느 프리미티브에 광선이 히트되었는지를 검사한다. IST 유닛(130)은 광선이 히트된 프리미티브를 찾고, 히트된 프리미티브의 어느 지점과 광선이 교차하였는지를 나타내는 교차점을 출력한다. 교차점은 좌표 형태로 쉐이딩 유닛(140)으로 출력될 수 있다.
IST 유닛(130)은 이전 렌더링의 결과를 이용하여 교차 검사를 수행할 수 있다. IST 유닛(130)은 IST 캐쉬에 저장된 이전 렌더링의 결과를 이용하여 이전 렌더링과 동일한 프리미티브에 대해 우선적으로 교차 검사를 수행할 수 있다. 즉, IST 유닛(130)이 입력된 광선과 대한 교차 검사를 수행할 때, IST 유닛(130)은 입력된 광선과 동일한 시점 및 방향을 갖는 이전 광선이 히트된 프리미티브에 대한 교차 검사를 우선적으로 수행할 수 있다.
쉐이딩 유닛(140)은 IST 유닛(130)으로부터 수신된 교차점에 대한 정보 및 교차점의 물질의 특성에 기초하여 픽셀의 색상 값을 결정한다. 쉐이딩 유닛(140)은 교차점의 물질의 기본 색상 및 광원에 의한 효과 등을 고려하여 픽셀의 색상 값을 결정한다.
쉐이딩 유닛(140)은 교차점에 대한 물질 정보에 기초하여 2차 광선을 생성할 수 있다. 물질의 특성에 따라 반사, 굴절 등의 현상이 달라지므로, 쉐이딩 유닛(140)은 물질의 특성에 따라 반사, 굴절 등의 2차 광선을 생성할 수 있다. 또한, 쉐이딩 유닛(140)은 광원의 위치에 기초하여 쉐도우 광선을 생성할 수 있다.
레이 트레이싱 코어(100)는 외부 메모리(250)로부터 광선 추적에 필요한 데이터를 수신한다. 외부 메모리(250)에는 가속 구조 또는 기하 데이터(geometry data)를 저장한다. 가속 구조는 가속 구조 생성 장치(200)에 의해 생성되고 외부 메모리(250)에 저장된다. 기하 데이터는 프리미티브들에 대한 정보를 나타낸다. 프리미티브는 삼각형, 사각형 등의 다각형일 수 있으며, 기하 데이터는 오브젝트에 포함된 프리미티브들의 정점 및 위치에 대한 정보를 나타낼 수 있다.
가속 구조 생성 장치(200)는 3차원 공간상의 오브젝트들의 위치 정보를 포함하는 가속 구조를 생성한다. 다시 말해서, 가속 구조 생성 장치(200)는 3차원 공간을 계층적 트리 형태로 분할한다. 가속 구조 생성 장치(200)는 여러 가지 형태의 가속 구조를 생성할 수 있다. 예를 들어, 가속 구조 생성 장치(200)는 BVH 또는 KD-tree를 적용하여 3차원 공간상의 오브젝트들의 관계를 나타내는 가속 구조를 생성할 수 있다. 가속 구조 생성 장치(200)는 리프 노드의 최대 프리미티브의 수 및 트리 깊이(tree depth)를 결정하고, 결정에 기초하여 가속 구조를 생성할 수 있다.
도 3은 레이 트레이싱 코어(100)가 광선 추적을 수행하는 것을 설명하기 위한 도면이다. 도 3은 도 2에 도시된 레이 트레이싱 코어(100)의 동작을 설명하기 위한 도면이다. 따라서, 이하 생략된 내용이라 하더라도 레이 트레이싱 코어(100)에 관하여 이상에서 기술된 내용은 도 3의 광선 추적 방법에도 적용된다.
310단계에서, 레이 트레이싱 코어(100)는 광선을 생성한다. 레이 트레이싱 코어(100)는 1차 광선, 2차 광선 및 2차 광선에 의해 파생된 광선들을 생성한다.
320단계에서, 레이 트레이싱 코어(100)는 가속 구조를 탐색한다. 가속 구조(251)는 외부 메모리(250)로부터 독출된다. 레이 트레이싱 코어(100)는 생성된 광선들의 시점 및 방향에 기초하여 가속 구조(251)를 탐색하여 광선이 히트된 바운딩 박스를 검출한다. 또한, 레이 트레이싱 코어(100)는 히트된 바운딩 박스에 포함된 오브젝트를 중에서 광선이 히트된 오브젝트를 검출한다. 레이 트레이싱 코어(100)는 히트된 오브젝트를 검출할 때까지 가속 구조(251)를 탐색하는 것을 반복하여 수행한다. 즉, 레이 트레이싱 코어(100)는 어느 하나의 경로를 따라 가속 구조를 탐색하고, 탐색된 경로 상의 리프 노드에 광선이 히트되지 않았으면, 다른 경로로 가속 구조를 탐색한다.
레이 트레이싱 코어(100)는 모든 경로를 순차적으로 탐색할 수 있지만, 이전 광선의 탐색 정보에 기초하여 특정 경로를 우선적으로 탐색할 수 있다. 즉, 레이 트레이싱 코어(100)는 이전 광선의 시점과 방향이 현재 광선의 시점과 방향과 동일 또는 유사한 경우, 이전 광선에서 히트된 리프 노드가 포함된 경로를 우선적으로 탐색할 수 있다.
330단계에서, 레이 트레이싱 코어(100)는 교차 검사를 수행한다. 레이 트레이싱 코어(100)는 프리미티브들의 기하 데이터(252)를 외부 메모리(250)로부터 독출한다. 레이 트레이싱 코어(100)는 독출된 기하 데이터(252)에 기초하여 교차 검사를 수행한다. 레이 트레이싱 코어(100)는 레이 트레이싱 코어(100)는 히트된 프리미티브를 검출할 때까지 교차 검사를 반복하여 수행한다. 즉, 레이 트레이싱 코어(100)는 어느 하나의 프리미티브에 대한 교차 검사를 하고, 프리미티브에 광선이 히트되지 않았으면, 다른 프리미티브에 대한 교차 검사를 한다.
레이 트레이싱 코어(100)는 모든 프리미티브들을 순차적으로 교차 검사할 수 있지만, 이전 광선의 교차 검사 정보에 기초하여 특정 프리미티브를 우선적으로 교차 검사할 수 있다. 즉, 레이 트레이싱 코어(100)는 이전 광선과 현재 광선의 시점과 방향이 동일 또는 유사한 경우, 이전 광선에서 히트된 프리미티브에 대한 교차 검사를 우선적으로 수행할 수 있다.
340단계에서, 레이 트레이싱 코어(100)는 교차 검사에 기초하여 픽셀의 쉐이딩을 수행한다. 레이 트레이싱 코어(100)는 340단계가 종료하면, 310단계로 진행한다. 레이 트레이싱 코어(100)는 310 내지 340단계를 화면을 구성하는 모든 픽셀들에 대해 반복적으로 수행한다.
도 4는 광선 추적을 가속하기 위한 방법을 설명하기 위한 도면이다. 도 4를 참조하면, 제1화면(412)은 t=0일 때 렌더링된 화면을 나타내고, 제2화면(422)은 t=1일 때 렌더링된 화면을 나타낸다. 제1화면(412)과 제2화면(422)에서 물체(433)만이 이동하였으므로, 제1화면(412)과 제2화면(422)은 거의 유사하다. 따라서, 레이 트레이싱 코어(100)는 제1화면(412)에 대한 렌더링 결과를 이용하여 제2화면(421)에 대한 렌더링을 수행할 수 있다. 예를 들어, 제1시점(410)과 제2시점(420)의 위치가 동일하고, 제1광선(411)과 제2광선(421)의 방향이 동일하다면, 레이 트레이싱 코어(100)는 제1광선(411)에 대한 광선 추적의 결과를 제2광선(421)의 광선 추적에 적용하여, 제2광선(421)의 광선 추적을 가속할 수 있다. 즉, 레이 트레이싱 코어(100)의 TRV 유닛(120)은 제2광선(421)에 대한 탐색을 수행할 때, 제1광선(411)이 히트된 바운딩 박스를 우선적으로 탐색할 수 있다. 또한, 레이 트레이싱 코어(100)의 IST 유닛(130)은 제2광선(421)에 대한 교차 검사할 때, 제1광선(411)이 히트된 삼각형(432)에 대해 우선적으로 교차 검사를 수행할 수 있다.
도 5는 도 4의 광선 추적을 가속하기 위한 방법을 설명하기 위한 도면이다. 도 5를 참조하면, 가속 구조는 5개의 노드(1 내지 5)를 포함하고, 노드3 내지 노드5는 리프 노드를 나타낸다.
TRV 유닛(120)은 3가지 경로를 따라 가속 구조를 탐색할 수 있다. 첫째로, TRV 유닛(120)은 제1경로인 노드1, 노드2 및 노드3을 따라 가속 구조를 탐색할 수 있다. 둘째로, TRV 유닛(120)은 제2경로인 노드1, 노드2 및 노드4를 따라 가속 구조를 탐색할 수 있다. 셋째로, TRV 유닛(120)은 제3경로인 노드1 및 노드5를 따라 가속 구조를 탐색할 수 있다. 이때, TRV 유닛(120)이 제2광선(421)에 대한 탐색을 수행할 때, TRV 유닛(120)은 제1광선(411)이 히트된 삼각형(432)을 탐색하는 제2경로를 우선적으로 탐색한다. 따라서, TRV 유닛(120)이 제1경로 또는 제3경로를 탐색하는 과정을 생략할 수 있다.
도 6은 일 실시 예에 따른 라우터(600)를 나타낸다. 도 6을 참조하면, 라우터(600)는 제어부(610) 및 전송부(620)를 포함한다. 라우터(600)는 입력된 데이터를 렌더링하기 위한 유닛들로 전송한다. 이때, 라우터(600)는 라우팅 테이블을 이용하여 입력된 데이터의 라우팅 경로를 지정할 수 있고, 입력된 데이터에 대한 라우팅 테이블을 업데이트할 수 있다.
제어부(610)는 입력된 데이터의 그룹을 식별한다. 예를 들어, 데이터에는 데이터가 속한 그룹을 표시하는 그룹ID가 포함된다. 따라서, 제어부(610)는 데이터에 포함된 그룹ID를 식별하여 데이터의 그룹을 식별할 수 있다.
그룹ID는 데이터를 생성하는 유닛에서 데이터의 속성에 따라 데이터에 부여된다. 예를 들어, 광선 생성 유닛에서 광선 데이터를 생성하는 경우, 광선의 시점 및 방향에 따라 광선의 그룹이 결정된다. 즉, 근접한 시점 및 방향을 갖는 유사 광선은 동일한 그룹으로 분류될 수 있다. 유사 광선은 미리 정해진 크기의 영역 또는 구간 내의 시점을 갖고, 미리 정해진 크기 내의 각도를 갖는다.
데이터는 레이 트레이싱을 위한 광선 데이터일 수 있다. 광선 데이터는 1차 또는 2차 광선일 수 있다. 광선 데이터는 광선의 시점 및 방향에 대한 정보를 포함한다.
또는, 데이터는 레이 트레이싱을 위한 렌더링 데이터일 수 있다. 렌더링 데이터는 가속 구조에 대한 정보 또는 3차원 공간에 위치한 오브젝트에 대한 정보 등을 포함한다. 렌더링 데이터는 TRV 유닛 또는 IST 유닛 등에 포함된 내부 메모리 또는 캐쉬 등에 저장된다.
제어부(610)는 데이터에 대한 피드백 신호에 기초하여 식별된 그룹에 지정된 라우팅 경로를 업데이트한다.
제어부(610)는 동일한 그룹의 데이터들에 대한 피드백 신호들이 전송된 경로들 및 피드백 신호에 포함된 정보에 기초하여 라우팅 경로를 업데이트한다.
제어부(610)는 피드백 신호를 수신하고, 피드백 신호가 전송된 경로를 식별한다. 피드백 신호가 전송된 경로는 복수의 프로세싱 유닛들 중에서 피드백 신호를 전송한 프로세싱 유닛을 구분하기 위한 정보일 수 있다.
제어부(610)는 피드백 신호에 포함된 정보를 식별한다. 피드백 신호에 포함된 정보는 데이터를 수신한 프로세싱 유닛이 데이터를 이용하였는지 여부를 나타내는 정보일 수 있다.
제어부(610)는 어느 프로세싱 유닛으로부터 피드백 신호가 수신되었는지 여부 및 피드백 신호를 전송한 프로세싱 유닛에서 데이터를 이용하였는지 여부에 기초하여 라우팅 경로를 업데이트한다.
제어부(610)는 동일한 그룹의 데이터들에 대한 피드백 신호들 중에서 히트(hit) 결과를 포함하는 피드백 신호가 전송된 확률이 가장 높은 경로로 라우팅 경로를 업데이트한다. 데이터를 수신한 프로세싱 유닛은 데이터를 이용한 경우, 히트 결과를 포함하는 피드백 신호를 라우터(600)로 전송한다. 데이터를 수신한 프로세싱 유닛은 데이터를 이용하지 않은 경우, 미스(miss) 결과를 포함하는 피드백 신호를 라우터(600)로 전송한다. 제어부(610)는 복수의 프로세싱 유닛들이 전송한 피드백 신호들 중에서 히트 결과가 포함된 피드백 신호를 전송한 확률이 가장 높은 프로세싱 유닛으로 데이터의 라우팅 경로를 업데이트한다. 이때, 제어부(610)는 동일한 그룹의 데이터들에 대한 피드백 신호들을 모두 고려하여 데이터가 포함된 그룹의 라우팅 경로를 업데이트한다.
또 다른 예로서, 제어부(610)는 동일한 그룹의 광선 데이터들에 대한 피드백 신호들 중에서 가장 최근에 히트 결과를 포함하는 피드백 신호가 전송된 TRV 유닛 또는 IST 유닛으로 라우팅 경로를 업데이트한다. 즉, 제어부(610)는 입력된 광선 데이터와 동일한 그룹에 포함된 광선 데이터를 이용한 TRV 유닛 또는 IST 유닛을 식별하고, 식별된 TRV 유닛 또는 IST 유닛의 위치를 나타내는 정보를 이용하여 라우팅 경로를 업데이트한다.
레이 트레이싱의 경우, 프로세싱 유닛은 광선 생성 유닛, TRV 유닛, IST 유닛 또는 쉐이딩 유닛 등일 수 있다.
또한, OPEN GL 등의 3차원 그래픽스 API의 경우, 프로세싱 유닛은 버텍스 쉐이더(vertex shader), 프리미티브 생성기(primitive generator), 래스터(raster), 픽셀 쉐이더(pixel shader) 등일 수 있다.
전송부(620)는 식별된 그룹에 지정된 라우팅 경로(routing path)로 데이터를 전송한다. 전송부(620)는 라우팅 경로를 참조하여, 데이터가 포함된 그룹에 지정된 경로로 데이터를 전송한다. 예를 들어, 라우팅 경로는 그룹에 따라 지정된 프로세싱 유닛을 나타낼 수 있고, 전송부(620)는 지정된 프로세싱 유닛으로 데이터를 전송한다. 만약, 식별된 그룹에 지정된 경로가 없는 경우, 전송부(620)는 모든 프로세싱 유닛들로 브로드캐스팅(broadcasting)한다. 또한, 식별된 그룹에 지정된 경로가 복수인 경우, 전송부(620)는 복수의 프로세싱 유닛들로 멀티캐스팅(multicasting)한다.
레이 트레이싱의 경우, 전송부(620)는 광선 데이터를 라우팅 경로에 지정된 TRV 유닛 또는 IST 유닛으로 전송한다. 즉, 전송부(620)는 입력된 광선 데이터의 그룹을 식별하고, 식별된 그룹에 지정된 라우팅 경로로 광선 데이터를 전송한다. 예를 들어, 라우팅 경로는 입력된 광선 데이터가 속한 그룹에 지정된 TRV 유닛들 또는IST 유닛들을 나타낸다.
레이 트레이싱의 경우, 데이터의 그룹은 광선의 시점 및 방향을 기초로 데이터에 부여된다. 데이터의 그룹은 데이터에 그룹을 식별할 수 있는 정보를 삽입함으로써 표현된다.
전송부(620)는 데이터를 TRV 유닛 또는IST 유닛으로 설정된 프로세싱 유닛으로 전송한다. 만약, 라우터(600)에 입력된 데이터가 데이터가 포함된 그룹에 포함된 데이터들 중에서 최초의 광선 데이터인 경우, 전송부(620)는 입력된 광선 데이터를 모든 TRV 유닛 또는 IST 유닛으로 전송한다. 보다 상세히 설명하면, 입력된 광선 데이터가 포함된 그룹에 대한 라우팅 경로가 지정되지 않은 경우, 전송부(620)는 입력된 광선 데이터를 TRV 유닛 또는IST 유닛으로 지정된 프로세싱 유닛으로 전송한다.
데이터의 그룹에 포함된 또 다른 데이터(another date)들에 대한 교차 결과를 나타내는 정보가 있는 경우, 전송부(620)는 교차 결과에 기초하여 데이터를 TRV 유닛 또는 IST 유닛으로 전송한다. 보다 상세히 설명하면, 라우터(600)는 입력된 광선 데이터의 그룹에 포함된 또 다른 광선 데이터가 TRV 유닛 또는 IST 유닛으로 전송하였고, TRV 유닛 또는 IST 유닛으로부터 히트 결과가 포함된 피드백 신호를 수신한 경우, 라우터(600)는 히트 결과가 포함된 피드백 신호를 전송한 TRV 유닛 또는IST 유닛으로 입력된 광선 데이터를 전송한다.
도 7은 일 실시 예에 따른 라우터(600)를 설명하기 위한 도면이다. 도 7을 참조하면, 라우터(600)는 라우팅 테이블(710)을 참조하여, 입력된 데이터의 라우팅 경로를 결정한다.
라우터(600)는 데이터를 전송하거나 피드백 신호를 수신한다. 라우터(600)는 데이터의 그룹을 식별하고, 라우팅 테이블(710)을 참조하여 데이터의 그룹에 지정된 경로로 데이터를 전송한다. 또한, 라우터(600)는 피드백 신호를 수신하고, 피드백 신호에 기초하여 라우팅 테이블(710)을 업데이트할 수 있다. 피드백 신호는 히트 또는 미스 등의 결과를 포함할 수 있다. 히트는 피드백 신호를 전송하는 프로세싱 유닛에서 데이터를 이용한 경우를 나타낸다. 미스는 피드백 신호를 전송하는 프로세싱 유닛에서 데이터를 이용하지 않은 경우를 나타낸다.
라우터(600)는 프로세싱 유닛(700)과 연결된다. 따라서, 라우터(600)는 입력된 데이터를 프로세싱 유닛(700)으로 출력할 수 있고, 프로세싱 유닛(700)으로부터 데이터를 수신할 수 있다.
라우터(600)가 그룹1의 데이터를 수신한 경우, 라우터(600)는 라우팅 테이블(710)을 참조하여, 그룹1의 데이터를 East로 전송한다. 즉, 그룹1의 데이터는 라우팅 테이블(710)에 라우팅 경로가 East로 지정된다. 라우터(600)는 East로 전송한 데이터에 대한 피드백 신호에 기초하여 그룹1에 대한 라우팅 경로를 업데이트할 수 있다.
또한, 라우터(600)가 그룹2의 데이터를 수신한 경우, 라우터(600)는 라우팅 테이블(710)을 참조하여, 그룹2의 데이터를 모든 방향으로 전송한다. 즉, 그룹2의 데이터는 라우팅 테이블(710)에 라우팅 경로가 default로 지정된다. 따라서, 라우터(600)는 모든 방향으로 그룹2의 데이터를 전송한다. 또는 라우터(600)는 임의의 어느 한 방향으로 그룹2의 데이터를 전송한다.
도 8은 또 다른 실시 예에 따른 라우터(600)를 설명하기 위한 도면이다. 도 8을 참조하면, 라우터(600)는 라우팅 테이블(810)을 참조하여, 입력된 광선 데이터의 라우팅 경로를 결정한다.
라우터(600)는 광선 데이터를 전송하거나 피드백 신호를 수신한다. 라우터(600)는 광선 데이터의 그룹을 식별하고, 라우팅 테이블(820)을 참조하여 광선 데이터의 그룹에 지정된 경로로 입력된 광선 데이터를 전송한다. 라우터(600)는 광선 데이터를 TRV 유닛 또는 IST 유닛(750)으로 전송할 수 있다.
또한, 라우터(600)는 전송된 광선 데이터에 대한 피드백 신호를 수신하고, 피드백 신호에 기초하여 라우팅 테이블(810)을 업데이트할 수 있다. 피드백 신호는 히트, 미스 또는 쉐이딩 중 적어도 하나의 결과를 포함할 수 있다. 히트는 피드백 신호를 전송하는 TRV 유닛 또는 IST 유닛(750)에서 광선 데이터를 이용하여 교차 또는 탐색을 수행한 경우를 나타낸다. 미스는 피드백 신호를 전송하는 TRV 유닛 또는 IST 유닛(750)에서 광선 데이터를 이용하여 교차 또는 탐색을 수행하지 않은 경우를 나타낸다. 쉐이딩은 피드백 신호를 전송하는 TRV 유닛 또는 IST 유닛(750)에서 광선 데이터를 이용하여 쉐이딩을 수행한 경우를 나타낸다.
라우터(600)는 프로세싱 유닛(700)과 연결된다. 따라서, 라우터(600)는 입력된 광선 데이터를 프로세싱 유닛(700)으로 출력할 수 있고, 프로세싱 유닛(700)으로부터 광선 데이터를 수신할 수 있다.
라우터(600)가 그룹1의 데이터를 수신한 경우, 라우터(600)는 라우팅 테이블(810)을 참조하여, 그룹1의 데이터를 (0,2)의 위치 정보 및 100의 거리 정보를 갖는 TRV 유닛으로 전송한다. 즉, 그룹1의 데이터는 라우팅 테이블(810)에 라우팅 경로가 (0,2)의 위치 정보 및 100의 거리 정보를 갖는 TRV 유닛으로 지정된다. 라우터(600)는 (0,2)의 위치 정보 및 100의 거리 정보를 갖는 TRV 유닛으로 전송한 데이터에 대한 피드백 신호에 기초하여 그룹1에 대한 라우팅 경로를 업데이트할 수 있다. (0,2)의 위치 정보를 갖는 TRV 유닛은 복수의 프로세싱 유닛들 중에서 (0,2)의 위치의 프로세싱 유닛에 TRV 유닛이 할당된 것을 나타낸다. 또한, 100의 거리 정보를 갖는 TRV 유닛은 광선의 시점과의 거리가 100인 노드의 정보를 포함하고 있는 TRV 유닛을 나타낸다.
또한, 라우터(600)가 그룹2의 광선 데이터를 수신한 경우, 라우터(600)는 라우팅 테이블(810)을 참조하여, 그룹2의 광선 데이터를 (1,1) 및 (3,1)의 위치 정보를 갖는 IST 유닛들로 전송한다. 즉, 그룹2의 광선 데이터는 라우팅 테이블(810)에 라우팅 경로가 (1,1) 및 (3,1)의 위치 정보를 갖는 IST 유닛들로 지정된다. 따라서, 라우터(600)는 그룹2의 데이터를 (1,1) 및 (3,1)의 위치 정보를 갖는 IST 유닛들로 전송한다.
도 9는 도 6의 라우터(600)가 광선 데이터를 라우팅하는 방법을 설명하기 위한 흐름도이다. 도 9를 참조하면, 라우터(600)는 교차 기록(intersection history)을 참조하여, 광선 데이터를 전송한다.
910단계에서, 라우터(600)는 광선 데이터를 수신한다. 광선 데이터는 광선의 그룹에 대한 정보(GID), 광선에 대한 정보(RID)를 포함한다. 광선의 그룹에 대한 정보(GID)는 라우터(600)에 입력되기 전에 광선 데이터에 부여된다. 광선의 그룹에 대한 정보(GID)는 광선이 생성되면 레이 트레이싱 코어에 포함된 데이터 매니저(data manager)에 의해 부여될 수 있다. 다시 말해서, 데이터 매니저는 광선이 생성되면, 생성된 광선의 시점 및 방향에 기초하여 생성된 광선의 그룹을 결정한다. 데이터 매니저는 생성된 광선에 결정된 그룹을 나타내는 그룹ID를 부여할 수 있다. 광선에 대한 정보(RID)는 광선의 시점 및 방향, 광선이 몇 번째 프레임의 몇 번째 픽셀에 대한 것인지에 관한 정보를 포함한다. 또한, 광선에 대한 정보(RID)는 광선이 1차 광선 또는 2차 광선인지를 나타내는 정보를 포함할 수 있으며, 2차 광선의 경우 반사 광선, 굴절 광선 또는 쉐도우 광선인지를 나타내는 정보를 포함할 수 있다. 또한, 광선 데이터에는 파일럿 광선인지 여부를 포함할 수 있다. 파일럿 광선이란 광선이 최초의 광선을 나타내며, 파일럿 광선의 경우 이전 교차 기록(intersection history)을 이용하지 않고 라우팅된다.
920단계에서, 라우터(600)는 입력된 광선 데이터가 파일럿 광선(pilot ray)인지를 판단한다. 만약, 광선 데이터가 파일럿 광선이면 960단계로 진행하고, 그렇지 않으면 930단계로 진행한다.
930단계에서, 라우터(600)는 광선 데이터의 교차 기록이 존재하는지 판단한다. 보다 상세히 설명하면, 라우터(600)는 광선 데이터의 그룹ID에 대한 교차 기록이 존재하는지를 판단한다. 만약, 광선 데이터의 교차 기록이 존재하면 940단계로 진행하고, 그렇지 않으면 950단계로 진행한다.
940단계에서, 라우터(600)는 라우팅 테이블에서 광선 데이터의 그룹ID의 교차 결과를 탐색한다. 라우팅 테이블에는 각각의 그룹ID에 대한 경로가 저장되어 있다. 보다 상세히 설명하면, 라우팅 테이블에는 그룹ID에 대한 프로세싱 유닛과 거리D가 저장되어 있다.
950단계에서, 라우터(600)는 거리가 D보다 가까운 TRV 유닛 또는 IST 유닛에 멀티 캐스팅한다. 거리가 D보다 가까운 TRV 유닛 또는 IST 유닛은 광선의 시점으로부터의 거리가 D보다 가까운 거리의 노드에 대한 정보를 포함하고 있다.
입력된 광선 데이터에 대한 교차 기록이 존재하는 경우, 라우팅 테이블에 저장된 그룹ID에 대한 거리 정보에 기초하여 멀티 캐스팅한다. 다시 말해서, 라우팅 테이블에 거리 정보가 D로 저장되어 있으면, 라우터(600)는 거리 D에 기초하여 광선 데이터를 멀티 캐스팅한다.
입력된 광선 데이터에 대한 교차 기록이 존재하지 않는 경우, 광선 데이터에 저장된 거지 정보에 기초하여 멀티 캐스팅한다. 다시 말해서, 광선 데이터에 거리 정보가 D로 저장되어 있으면, 라우터(600)는 거리 D에 기초하여 광선 데이터를 멀티 캐스팅한다.
960단계에서, 라우터(600)는 광선 데이터에 대한 거리 정보가 모두 F인지를 판단한다. 거리 정보가 모두 F라는 것은 거리에 대한 제한이 없다는 것을 나타낸다. 거리 정보가 모두 F인 경우 970단계로 진행하고, 그렇지 않으면 980단계로 진행한다.
970단계에서, 라우터(600)는 광선 데이터를 모든 TRV 유닛 또는IST 유닛들에 브로드캐스팅한다. 광선 데이터에 거리에 대한 제한이 없고, 광선 데이터가 파일럿 광선이므로, 라우터(600)는 광선 데이터를 모든 TRV 유닛 또는 IST 유닛들에 브로드캐스팅한다.
980단계에서, 라우터(600)는 광선 데이터를 거리가 D보다 가까운 TRV 유닛 또는IST 유닛들에 멀티캐스팅한다. 광선 데이터가 파일럿 광선이지만, 거리에 대한 제한이 있으므로, 라우터(600)는 거리에 대한 제한 조건을 만족하는 TRV 유닛 또는IST 유닛들에만 광선 데이터를 멀티캐스팅한다.
도 10은 라우터(600)가 라우팅 테이블을 업데이하는 동작을 설명하기 위한 흐름도이다. 도 10을 참조하면, 라우터(600)는 피드백 데이터에 기초하여 광선 테이블을 업데이트한다.
1010단계에서, 라우터(600)는 피드백 데이터를 수신한다. 피드백 데이터는 그룹에 대한 정보(GID) 및 광선에 대한 정보(RID)를 수신한다. 다시 말해서, 피드백 데이터는 어느 광선에 대한 것인지 및 어느 그룹의 광선에 관한 것인지를 포함한다.
또한, 피드백 데이터는 광선 데이터의 이용 여부에 대한 정보를 포함한다. 만약, 광선 데이터가 교차 또는 탐색에 이용되었으면, 피드백 데이터는 히트 결과를 포함한다. 광선 데이터가 교차 또는 탐색에 이용되지 않았으면, 피드백 데이터는 미스 결과를 포함한다. 광선 데이터가 쉐이딩에 사용되었으면, 피드백 데이터는 쉐이딩 결과를 포함한다.
1020단계에서, 라우터(600)는 피드백 데이터에 히트 결과가 포함되어 있는지를 판단한다. 만약, 히트 결과가 포함되어 있으면 1040단계로 진행하고, 그렇지 않으면 1030단계로 진행한다.
1030단계에서, 라우터(600)는 거리 제한 범위를 한 단계 넓혀 다른 TRV 유닛 또는 IST 유닛에 광선 데이터를 전송한다. 다시 말해서, 라우터(600)가 전송한 광선 데이터가 거리가 D_old 내의 TRV 유닛 또는 IST 유닛에서 사용되지 않았으므로, 라우터(600)는 거리가 D_old 를 초과하는 TRV 유닛 또는 IST 유닛에 광선 데이터를 다시 전송한다. 보다 상세히 설명하면, 라우터(600)는 D_old와 D_next_value를 더한 값을 D_new로 결정하고, D_new의 거리 정보를 포함하는 TRV 유닛 또는 IST 유닛으로 광선 데이터를 전송한다. D_next_value는 미리 설정된 크기를 갖는 값이다.
1040단계에서, 라우터(600)는 피드백 데이터에 포함된 그룹ID에 대한 라우팅 테이블을 조회한다. 라우터(600)는 피드백 데이터가 어느 그룹의 광선에 대한 것인지 판단하기 위해 피드백 데이터에 포함된 그룹ID를 식별한다. 라우터(600)는 라우팅 테이블에 식별된 그룹ID에 대한 정보를 조회한다.
1050단계에서, 라우터(600)는 라우팅 테이블에 식별된 그룹ID에 대한 정보가 존재하는지 판단한다. 만약, 라우팅 테이블에 식별된 그룹ID에 대한 정보가 존재하면 1060단계로 진행하고, 그렇지 않으면 1080단계로 진행한다.
1060단계에서, 라우터(600)는 라우팅 테이블에 저장된 이전 거리(D_old)와 수신된 피드백 데이터에 포함된 거리(D_new)를 비교한다.
1070단계에서, 라우터(600)는 라우팅 테이블에 저장된 이전 거리(D_old)와 수신된 피드백 데이터에 포함된 거리(D_new)를 비교한 결과, D_new가 D_old보다 작은지 여부를 판단한다. 만약, D_new가 D_old보다 작으면 1080단계로 진행하고, 그렇지 않으면 1090단계로 진행한다.
1080단계에서, 라우터(600)는 새로운 교차 결과 정보로 라우팅 테이블을 업데이트한다. 다시 말해서, 라우터(600)는 히트된 TRV 유닛 또는 IST 유닛을 포함하도록 라우팅 테이블에서 피드백 데이터의 그룹ID의 정보를 업데이트한다.
1090단계에서, 라우터(600)는 거리 테이블에 피드백 데이터의 그룹ID의 정보를 업데이트한다. 라우터(600)는 라우팅 테이블에 저장된 D_old를 D_new로 업데이트한다.
도 11은 라우터(600)가 전송하고 수신하는 패킷들을 설명하기 위한 도면이다. 도 11을 참조하면, 패킷(1110)은 헤더(header) 및 페이로드(payload)를 포함한다. 헤더는 패킷(1110)을 식별하기 위한 정보를 포함하고, 페이로드는 패킷(1110)의 내용을 나타내는 정보를 포함한다.
광선 패킷(Ray-Packet, 1120), 피드백 패킷(Feedback-Packet, 1130), 렌더 패킷(Render-packet)은 패킷 타입 필드(packet type field), 광선 필드(ray field), 동작 타입 필드(operation type field), 라우팅 경로 필드(routing path field) 및 거리 필드(distance field)를 포함한다. 피드백 패킷(1130)은 결과 필드(result field)를 더 포함한다.
패킷 타입 필드는 광선 패킷, 피드백 패킷 또는 렌더 패킷들 중에서 어느 패킷인지를 나타낸다. 예를 들어, 광선 패킷은 00으로 표현되고, 피드백 패킷은 01로 표현되고, 렌더 패킷은 10으로 표현된다.
광선 필드는 어느 광선에 관한 것인지를 나타낸다. 예를 들어, 광선 필드는 광선의 그룹을 나타내는 그룹ID(GID), 광선을 식별하기 위한 광선ID(RID)를 포함할 수 있다.
동작 타입 필드는 광선에 대한 처리 정보를 포함한다. 보다 상세히 설명하면, 동작 타입 필드는 광선이 TRV 유닛으로 전송되어야 하는지 또는 IST 유닛으로 전송되어야 하는지에 대한 정보를 포함한다. 또한, 동작 타입 필드는 광선을 파일럿 광선으로 처리할 것인지 또는 보통(normal) 광선으로 처리할 것인지를 나타내는 정보를 포함한다. 예를 들어, 동작 타입 필드가 00-0인 경우, 광선 패킷은 TRV 유닛으로 전송되고 파일럿 광선으로 처리된다. 동작 타입 필드가 00-1인 경우, 광선 패킷은 TRV 유닛으로 전송되고 보통 광선으로 처리된다. 동작 타입 필드가 01-0인 경우, 광선 패킷은 IST 유닛으로 전송되고 파일럿 광선으로 처리된다. 동작 타입 필드가 01-1인 경우, 광선 패킷은 IST 유닛으로 전송되고 보통 광선으로 처리된다. 동작 타입 필드가 10-0인 경우, 렌더 패킷은 쉐이딩 유닛으로 전송되고 쉐이딩된다.
라우팅 경로 필드는 패킷이 전송되는 소스(source)와 목적지(destination)에 대한 정보를 포함한다. 소스는 패킷을 전송하는 라우터 또는 프로세싱 유닛을 나타낸다. 목적지는 패킷을 수신하는 라우터 또는 프로세싱 유닛을 나타낸다.
거리 필드는 광선의 광원 또는 시점과 교차 대상과의 거리를 나타낸다. 거리 필드에 거리 값이 저장되어 있으면, 라우터(600)는 거리 값 보다 작은 거리 값을 갖는 프로세싱 유닛으로 패킷을 전송한다.
결과 필드는 피드백 패킷(1130)에 포함되며, 데이터의 사용 여부에 대한 정보를 포함한다. 예를 들어, 결과 필드의 값이 00인 경우, 광선 데이터를 사용하였음을 나타낸다. 다시 말해서, 광선 데이터가 TRV 유닛 또는 IST 유닛에서 교차되었음을 나타낸다. 결과 필드의 값이 01인 경우, 광선 데이터를 사용하였음을 나타낸다. 다시 말해서, 광선 데이터가 TRV 유닛 또는 IST 유닛에서 교차되었음을 나타낸다. 결과 필드의 값이 11인 경우, 광선 데이터가 쉐이딩 되었음을 나타낸다.
도 12는 일 실시 예에 따른 NoC(Network on Chip, 1200)를 설명하기 위한 도면이다. NoC(1200)는 복수의 프로세싱 유닛(700)들과 복수의 라우터(600)들을 포함한다.
프로세싱 유닛(700)는 다양한 연산을 수행하는 유닛으로 설정(configure)될 수 있다. 예를 들어, 프로세싱 유닛(700)은 광선 생성 유닛, TRV 유닛, IST 유닛 또는 쉐이딩 유닛 등으로 설정될 수 있다. 프로세싱 유닛(700)은 기능 유닛(Function unit)등 다른 용어로 표현될 수 있다. 프로세싱 유닛(700)과 라우터(600)는 서로 연결되고, 하나의 프로세싱 유닛(700)과 라우터(600)는 쌍을 이룬다.
NoC(1200)는 광선 데이터 및 렌더링 데이터를 교차 가능성이 높은 프로세싱 유닛으로 전송한다. 광선 데이터 및 렌더링 데이터는 라우터(600)에 입력되고, 라우터(600)는 광선 데이터 및 렌더링 데이터에 포함된 정보 및 라우팅 테이블에 저장된 정보에 기초하여 광선 데이터 및 렌더링 데이터를 프로세싱 유닛(700)으로 전송한다. 라우터(600)는 광선 데이터 또는 렌더링 데이터가 입력되면, 광선 데이터 또는 렌더링 데이터를 처리할 프로세싱 유닛(700)을 결정하고, 결정된 프로세싱 유닛(700)으로 광선 데이터 또는 렌더링 데이터를 전송한다.
도 12에서는 프로세싱 유닛(700)에 렌더링 유닛들이 할당되지 않았으나, 워크로드에 기초하여 렌더링 유닛들은 프로세싱 유닛(700)들에 할당될 수 있다. 다시 말해서, NoC(1200)에 포함된 프로세싱 유닛(700)들은 렌더링 유닛들로 설정될 수 있다.
도 13은 라우팅 테이블을 설명하기 위한 도면이다. 도 13을 참조하면, 라우팅 테이블은 테이블들(1310 내지 1350)을 포함한다.
제1 테이블(1310)은 초기 상태를 나타낸다. GID_0, GID_1 또는 GID_2는 그룹ID를 나타낸다. 제1 테이블(1310)은 교차 정보가 없는 상태이므로, 모든 그룹에 대하여 M-TRV 또는 M-IST로 설정된다. 따라서, 초기 상태의 경우, 입력된 광선 데이터에 따라 라우팅이 결정될 수 있다. 예를 들어, M-TRV(FF)는 입력된 광선 데이터를 모든 TRV 유닛들로 브로드캐스팅을 할 것을 나타내고, M-IST(FF)는 입력된 광선 데이터를 모든 IST 유닛들로 브로드캐스팅을 할 것을 나타낸다. M-TRV(D)는 입력된 광선 데이터를 거리가 D이하인 TRV 유닛들로 브로드캐스팅을 할 것을 나타내고, M-IST(D)는 입력된 광선 데이터를 거리가 D이하인 IST 유닛들로 브로드캐스팅을 할 것을 나타낸다. 거리를 나타내는 정보에 관하여는 도 11에서 설명된 내용이 동일하게 적용된다.
제2 및 제3 테이블들(1320, 1330)은 시간에 따른 테이블의 변화를 나타낸다. t=0일 때, 그룹ID가 GID_0인 광선이 (0,2) 위치의 TRV 유닛에서 거리 100으로 히트된 경우, 제2 테이블(1320)에서 그룹 GID_0의 탐색 필드(Traversal field)가 업데이트된다. 제2 테이블(1320)의 GID_0에 저장된 (0, 2, 100)에서 (0,2)는 TRV 유닛의 위치를 나타내고, (100)은 히트된 TRV 유닛의 거리 정보를 나타낸다.
t=1일 때, 그룹ID가 GID_0인 광선이 (1,1) 위치의 IST 유닛에서 거리 10으로 히트된 경우, 제2 테이블(1320)에서 그룹 GID_0의 교차 필드(intersection field)가 업데이트된다. 제2 테이블(1320)의 GID_0에 저장된 (1, 1, 10)에서 (1,1)는 IST 유닛의 위치를 나타내고, (10)은 히트된 IST 유닛의 거리 정보를 나타낸다.
t=2일 때, 그룹ID가 GID_0인 광선이 (2,2) 위치의 TRV 유닛에서 거리 50으로 히트된 경우, 제3 테이블(1330)에서 그룹 GID_0의 탐색 필드가 업데이트된다. 제3 테이블(1330)에서 그룹 GID_0의 탐색 필드에 저장된 (0, 2, 100)는 삭제되고, (2, 2, 50)이 저장된다.
t=2일 때, 그룹ID가 GID_0인 광선이 (1,2) 위치의 IST 유닛에서 거리 10으로 히트된 경우, 제3 테이블(1330)에서 그룹 GID_0의 교차 필드가 업데이트된다. 제3 테이블(1330)에서 그룹 GID_0의 교차 필드에 저장된 (1, 1, 10)는 삭제되고, (1, 2, 10)이 저장된다.
제4 테이블(1340)은 TRV 유닛들에 히트된 광선에 대한 정보를 나타낸다. 예를 들어, 제4 테이블(1340)의 TRV(0,2) 필드에는 (GID_0, 100)이 저장된다. 즉, (0,2)에 위치한 TRV 유닛은 GID_0의 그룹ID를 갖고 거리 100인 광선 데이터가 히트되었음을 나타낸다.
제5 테이블(1350)은 IST 유닛들에 히트된 광선에 대한 정보를 나타낸다. 예를 들어, 제5 테이블(1350)의 IST(1,1) 필드에는 (GID_0, 10)이 저장된다. 즉, (1,1)에 위치한 IST 유닛은 GID_0의 그룹ID를 갖고 거리 10인 광선 데이터가 히트되었음을 나타낸다.
도 14는 일 실시 예에 따른 라우팅 방법을 설명하기 위한 순서도이다. 따라서, 이하 생략된 내용이라 하더라도 라우터(600)에 관하여 이상에서 기술된 내용은 도 14의 라우팅 방법에도 적용된다.
라우터(600)는 1410단계 내지 1430단계를 수행하여, 입력된 데이터와 동일한 그룹의 데이터의 라우팅 경로를 지정할 수 있다.
1410단계에서, 라우터(600)의 제어부(610)는 입력된 데이터의 그룹을 식별한다. 데이터는 그룹을 나타내는 필드를 포함하고 있기 때문에, 제어부(610)는 그룹을 나타내는 필드의 값을 독출(read)하여 데이터의 그룹을 식별할 수 있다.
1420단계에서, 라우터(600)의 전송부(620)는 식별된 그룹에 지정된 라우팅 경로로 데이터를 전송한다. 라우터(600)는 그룹들마다 라우팅 경로가 저장된 라우팅 테이블을 포함한다. 따라서, 전송부(620)는 라우팅 테이블에서 식별된 그룹에 대한 라우팅 경로를 조회하고, 조회된 라우팅 경로로 데이터를 전송한다.
1430단계에서, 라우터(600)의 제어부(610)는 데이터에 대한 피드백 신호에 기초하여 식별된 그룹에 지정된 라우팅 경로를 업데이트한다. 제어부(610)는 피드백 신호를 수신하고, 피드백 신호에 포함된 필드들을 참조하여 라우팅 경로를 업데이트한다. 제어부(610)는 피드백 신호가 어느 그룹에 포함된 데이터에 관한 것인지 식별하고, 데이터에 대한 결과를 식별한다. 제어부(610)는 식별된 결과에 따라 식별된 그룹의 라우팅 경로를 업데이트한다.
도 15는 일 실시 예에 따른 재구성 장치(reconfiguration apparatus, 1500)를 설명하기 위한 도면이다. 재구성 장치(1500)는 워크로드 측정부(workload measurement uint, 1510) 및 재구성부(reconfiguration unit, 1520)를 포함한다.
재구성 장치(1500)는 이전 프레임의 렌더링 과정에서 측정된 워크로드를 기초로 현재 프레임에 대한 렌더링을 위한 렌더링 유닛들을 재구성한다. 프레임의 특성에 따라, 렌더링 유닛들의 워크로드가 다르기 때문에, 전체 렌더링의 효율을 높이기 위하여 각각의 렌더링 유닛들의 워크로드를 예측하고, 예측 결과에 기초하여 동적으로(dynamically) 프로세싱 유닛들에 렌더링 유닛들을 할당할 수 있다.
워크로드 측정부(1510)는 이전 프레임의 렌더링 과정에서 사용되는 렌더링 유닛들의 워크로드를 측정한다. 렌더링 유닛들은 레이 트레이싱에 사용되는 광선 생성 유닛, TRV 유닛, IST 유닛 또는 쉐이딩 유닛 중 적어도 하나를 포함한다. 렌더링 유닛들의 워크로드는 이전 프레임의 렌더링 과정에서 렌더링 유닛들이 수행하는 연산량(computation)을 나타낸다. 워크로드 측정부(1510)는 이전 프레임의 렌더링 과정에서 광선 생성 유닛, TRV 유닛, IST 유닛 또는 쉐이딩 유닛이 수행하는 연산량을 측정한다.
워크로드 측정부(1510)는 3차원 공간에 포함된 오브젝트의 구성과 오브젝트의 물질 특성에 기초하여 반사 또는 굴절의 정도를 측정하여 렌더링 유닛들의 워크로드를 계산할 수 있다.
재구성부(1520)는 측정된 워크로드에 기초하여 현재 프레임의 과정에서 렌더링 유닛들을 재구성한다. 재구성부(1520)는 렌더링 유닛들의 워크로드(workload)의 밸런싱을 고려하여 렌더링 유닛들을 할당한다. 예를 들어, 재구성부(1520)는 렌더링 유닛들의 워크로드의 차이가 최소가 되도록 렌더링 유닛들을 재구성 또는 할당할 수 있다. 다시 말해서, 재구성부(1520)는 각 렌더링 유닛들마다 이전 프레임에서 측정된 연산량을 고려하여, 렌더링 유닛들의 연산량의 차이가 최소가 되도록 렌더링 유닛들을 재구성한다.
도 16은 렌더링 유닛들의 프로세싱 유닛에 할당한 일 예이다. 도 16을 참조하면, 재구성 장치(1500)는 광선의 특성에 따라 렌더링 유닛들을 프로세싱 유닛들에 할당한다.
레이 트레이싱에서 1차 광선에 대한 렌더링을 수행하는 경우, 재구성부(1520)는 광선 생성 유닛과 TRV 유닛을 동일한 프로세싱 유닛에 할당한다. 1차 광선의 경우 광선 생성 유닛이 광선 데이터를 생성하고, 생성된 광선 데이터를 TRV 유닛으로 전송하는 것보다는 동일한 프로세싱 유닛이 광선을 생성하고 가속 구조를 탐색하는 것이 보다 효율적이다. 따라서, 1차 광선의 경우, 재구성부(1520)는 광선 생성 유닛과 TRV 유닛을 동일한 프로세싱 유닛에 할당한다. 예를 들어, (0,0) 내지 (0,3)의 프로세싱 유닛 및 (2,0) 내지 (2,3)의 프로세싱 유닛에 광선 생성 유닛과 TRV 유닛이 함께 할당된다.
도 17은 렌더링 유닛들의 프로세싱 유닛에 할당한 또 다른 예이다. 도 17은 TRV 유닛의 워크로드가 많을 때 재구성 가능한 프로세싱 유닛의 예이다.
레이 트레이싱에서 2차 광선에 대한 렌더링을 수행하는 경우, 2차 광선은 1차 광선의 교차점에서의 쉐이딩 결과에 따른 굴절 또는 반사에 의해 생성된다. 따라서, 재구성부(1520)는 쉐이딩 유닛과 광선 생성 유닛을 동일한 프로세싱 유닛에 할당한다. 2차 광선의 수는 1차 광선의 수보다 많으므로, 가속 구조를 탐색하는 TRV 유닛의 워크로드가 많다. 따라서, 2차 광선의 렌더링을 수행하는 경우, 재구성부(1520)는 1차 광선의 렌더링을 수행할 때보다 많은 수의 TRV 유닛들을 프로세싱 유닛들에 할당한다.
도 18은 일 실시 예에 따른 렌더링 유닛들의 재구성 방법을 설명하기 위한 순서도이다. 도 18은 도 15에 도시된 재구성 장치(1500)의 동작을 설명하기 위한 도면이다. 따라서, 이하 생략된 내용이라 하더라도 재구성 장치(1500)에 관하여 이상에서 기술된 내용은 도 18의 렌더링 유닛들의 재구성 방법에도 적용된다.
1810단계에서, 워크로드 측정부(1510)는 이전 프레임의 렌더링 과정에서 사용되는 렌더링 유닛들의 워크로드를 측정한다. 워크로드 측정부(1510)는 이전 프레임의 렌더링 과정에서, 광선의 종류에 따라 각 렌더링 유닛들의 워크로드를 측정할 수 있다.
1820단계에서, 재구성부(1520)는 측정된 워크로드에 기초하여 현재 프레임 과정에서 렌더링 유닛들을 재구성한다. 재구성부(1520)는 광선의 종류에 따라 렌더링 유닛들의 수를 결정하고, 결정된 수의 렌더링 유닛들을 프로세싱 유닛들에 할당한다. 따라서, 재구성부(1520)는 워크로드가 많은 렌더링 유닛을 많은 수의 프로세싱 유닛에 할당할 수 있다.
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)를 포함한다.
600: 라우터
610: 제어부
620: 전송부
610: 제어부
620: 전송부
Claims (28)
- 입력된 데이터의 그룹을 식별하는 단계;
상기 식별된 그룹에 지정된 라우팅 경로(routing path)로 상기 데이터를 전송하는 단계; 및
상기 데이터에 대한 피드백 신호에 기초하여 상기 식별된 그룹에 지정된 라우팅 경로를 업데이트하는 단계를 포함하는 라우팅 방법. - 제 1 항에 있어서,
상기 업데이트하는 단계는 동일한 그룹의 데이터들에 대한 피드백 신호들이 전송된 경로들 및 상기 피드백 신호에 포함된 정보에 기초하여 상기 라우팅 경로를 업데이트하는 것을 특징으로 하는 라우팅 방법. - 제 1 항에 있어서,
상기 데이터는 레이 트레이싱을 위한 광선 데이터이고,
상기 데이터를 전송하는 단계는 상기 광선 데이터를 상기 라우팅 경로에 지정된 TRV 유닛 또는 IST 유닛으로 전송하고,
상기 업데이트하는 단계는 동일한 그룹의 광선 데이터들에 대한 피드백 신호들 중에서 가장 최근에 히트 결과를 포함하는 피드백 신호가 전송된 TRV 유닛 또는 IST 유닛으로 상기 라우팅 경로를 업데이트하는 것을 특징으로 하는 라우팅 방법. - 제 1 항에 있어서,
상기 데이터는 레이 트레이싱을 위한 광선 데이터이고,
상기 데이터를 전송하는 단계는 상기 광선 데이터를 TRV 유닛 또는 IST 유닛으로 전송하고,
상기 업데이트하는 단계는 동일한 그룹의 데이터들에 대한 피드백 신호들 중에서 히트 결과를 포함하는 피드백 신호가 전송된 확률이 가장 높은 경로로 상기 라우팅 경로를 업데이트하는 것을 특징으로 하는 라우팅 방법. - 제 1 항에 있어서,
상기 데이터는 레이 트레이싱을 위해 생성된 광선에 관한 정보 또는 렌더링을 위한 정보를 포함하고,
상기 그룹은 상기 광선의 시점 및 방향을 기초로 상기 데이터에 부여되는 것을 특징으로 하는 라우팅 방법. - 제 1 항에 있어서,
상기 데이터는 레이 트레이싱을 위해 생성된 광선에 관한 정보를 포함하고,
상기 데이터를 전송하는 단계는 상기 데이터를 TRV 유닛 또는IST 유닛으로 설정된 프로세싱 유닛으로 전송하는 것을 특징으로 하는 라우팅 방법. - 제 1 항에 있어서,
상기 데이터가 상기 데이터의 그룹에 포함된 데이터들 중에서 최초의 광선 데이터인 경우, 상기 데이터를 전송하는 단계는 상기 광선 데이터를 모든 TRV 유닛 또는 IST 유닛으로 전송하는 것을 특징으로 하는 라우팅 방법. - 제 1 항에 있어서, 상기 데이터를 전송하는 단계는,
상기 데이터의 그룹에 포함된 또 다른 데이터(another date)들에 대한 교차 결과를 나타내는 정보가 있는 경우, 상기 교차 결과에 기초하여 상기 데이터를 TRV 유닛 또는 IST 유닛으로 전송하는 것을 특징으로 하는 라우팅 방법. - 상기 제1항 내지 제8항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
- 입력된 데이터의 그룹을 식별하는 제어부; 및
상기 식별된 그룹에 지정된 라우팅 경로(routing path)로 상기 데이터를 전송하는 전송부를 포함하고,
상기 제어부는 상기 데이터에 대한 피드백 신호에 기초하여 상기 식별된 그룹에 지정된 라우팅 경로를 업데이트하는 라우터. - 제 10 항에 있어서,
상기 제어부는 동일한 그룹의 데이터들에 대한 피드백 신호들이 전송된 경로들 및 상기 피드백 신호에 포함된 정보에 기초하여 상기 라우팅 경로를 업데이트하는 것을 특징으로 하는 라우터. - 제 10 항에 있어서,
상기 데이터는 레이 트레이싱을 위한 광선 데이터이고,
상기 전송부는 상기 광선 데이터를 상기 라우팅 경로에 지정된 TRV 유닛 또는 IST 유닛으로 전송하고,
상기 제어부는 동일한 그룹의 광선 데이터들에 대한 피드백 신호들 중에서 가장 최근에 히트 결과를 포함하는 피드백 신호가 전송된 TRV 유닛 또는 IST 유닛으로 상기 라우팅 경로를 업데이트하는 것을 특징으로 하는 라우터. - 제 10 항에 있어서,
상기 데이터는 레이 트레이싱을 위한 광선 데이터이고,
상기 전송부는 상기 광선 데이터를 TRV 유닛 또는 IST 유닛으로 전송하고,
상기 제어부는 동일한 그룹의 데이터들에 대한 피드백 신호들 중에서 히트 결과를 포함하는 피드백 신호가 전송된 확률이 가장 높은 경로로 상기 라우팅 경로를 업데이트하는 것을 특징으로 하는 라우터. - 제 10 항에 있어서,
상기 데이터는 레이 트레이싱을 위해 생성된 광선에 관한 정보 또는 렌더링을 위한 정보를 포함하고,
상기 그룹은 상기 광선의 시점 및 방향을 기초로 상기 데이터에 부여되는 것을 특징으로 하는 라우터. - 제 10 항에 있어서,
상기 데이터는 레이 트레이싱을 위해 생성된 광선에 관한 정보를 포함하고,
상기 전송부는 상기 데이터를 TRV 유닛 또는IST 유닛으로 설정된 프로세싱 유닛으로 전송하는 것을 특징으로 하는 라우터. - 제 10 항에 있어서,
상기 데이터가 상기 데이터의 그룹에 포함된 데이터들 중에서 최초의 광선 데이터인 경우, 상기 전송부는 상기 광선 데이터를 모든 TRV 유닛 또는 IST 유닛으로 전송하는 것을 특징으로 하는 라우팅 방법. - 제 10 항에 있어서,
상기 데이터의 그룹에 포함된 또 다른 데이터(another date)들에 대한 교차 결과를 나타내는 정보가 있는 경우, 상기 전송부는 상기 교차 결과에 기초하여 상기 데이터를 TRV 유닛 또는 IST 유닛으로 전송하는 것을 특징으로 하는 라우터. - 복수의 프로세싱 유닛들에 렌더링 유닛을 재구성하는 방법에 있어서,
이전 프레임의 렌더링 과정에서 사용되는 상기 렌더링 유닛들의 워크로드를 측정하는 단계;
상기 워크로드에 기초하여 현재 프레임 과정에서 상기 렌더링 유닛들을 재구성하는 단계를 포함하는 렌더링 유닛의 재구성 방법. - 제 18 항에 있어서,
상기 렌더링 유닛들은 레이 트레이싱에 사용되는 광선 생성 유닛, TRV 유닛, IST 유닛 또는 쉐이딩 유닛 중 적어도 하나를 포함하는 것을 특징으로 하는 렌더링 유닛의 재구성 방법. - 제 18 항에 있어서,
레이 트레이싱에서 1차 광선에 대한 렌더링을 수행하는 경우, 광선 생성 유닛과 TRV 유닛을 동일한 프로세싱 유닛에 할당하는 것을 특징으로 하는 렌더링 유닛의 재구성 방법. - 제 18 항에 있어서,
상기 렌더링 유닛들은 레이 트레이싱에 사용되는 유닛들이고,
상기 워크로드를 측정하는 단계는 3차원 공간에 포함된 오브젝트의 구성과 상기 오브젝트의 물질 특성에 기초하여 반사 또는 굴절의 정도를 측정하고,
상기 재구성하는 단계는 상기 측정된 반사 또는 굴절의 정도에 기초하여 상기 프로세싱 유닛들에 할당할 TRV 유닛의 수를 결정하는 것을 특징으로 하는 렌더링 유닛의 재구성 방법. - 제 18 항에 있어서,
레이 트레이싱에서 2차 광선에 대한 렌더링을 수행하는 경우, 쉐이딩 유닛과 광선 생성 유닛을 동일한 프로세싱 유닛에 할당하는 것을 특징으로 하는 렌더링 유닛의 재구성 방법. - 복수의 프로세싱 유닛들에 렌더링 유닛을 재구성하는 장치에 있어서,
이전 프레임의 렌더링 과정에서 사용되는 상기 렌더링 유닛들의 워크로드를 측정하는 워크로드 측정부;
상기 워크로드에 기초하여 현재 프레임 과정에서 상기 렌더링 유닛들을 재구성하는 재구성부를 포함하는 렌더링 유닛의 재구성 장치. - 제 23 항에 있어서,
상기 렌더링 유닛들은 레이 트레이싱에 사용되는 광선 생성 유닛, TRV 유닛, IST 유닛 또는 쉐이딩 유닛 중 적어도 하나를 포함하는 것을 특징으로 하는 렌더링 유닛의 재구성 장치. - 제 23 항에 있어서,
레이 트레이싱에서 1차 광선에 대한 렌더링을 수행하는 경우, 광선 생성 유닛과 TRV 유닛을 동일한 프로세싱 유닛에 할당하는 것을 특징으로 하는 렌더링 유닛의 재구성 장치. - 제 23 항에 있어서,
상기 렌더링 유닛들은 레이 트레이싱에 사용되는 유닛들이고,
상기 워크로드 측정부는 3차원 공간에 포함된 오브젝트의 구성과 상기 오브젝트의 물질 특성에 기초하여 반사 또는 굴절의 정도를 측정하고,
상기 재구성부는 상기 측정된 반사 또는 굴절의 정도에 기초하여 상기 프로세싱 유닛들에 할당할 TRV 유닛의 수를 결정하는 것을 특징으로 하는 렌더링 유닛의 재구성 장치. - 제 23 항에 있어서,
레이 트레이싱에서 2차 광선에 대한 렌더링을 수행하는 경우, 쉐이딩 유닛과 광선 생성 유닛을 동일한 프로세싱 유닛에 할당하는 것을 특징으로 하는 렌더링 유닛의 재구성 장치. - 상기 제18항 내지 제22항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130114145A KR20150034062A (ko) | 2013-09-25 | 2013-09-25 | 동일한 그룹의 데이터를 라우팅하는 방법 및 장치, 렌더링 유닛을 재구성하는 방법 및 장치 |
US14/261,942 US20150084957A1 (en) | 2013-09-25 | 2014-04-25 | Method and apparatus for routing data and reconfiguring rendering unit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130114145A KR20150034062A (ko) | 2013-09-25 | 2013-09-25 | 동일한 그룹의 데이터를 라우팅하는 방법 및 장치, 렌더링 유닛을 재구성하는 방법 및 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20150034062A true KR20150034062A (ko) | 2015-04-02 |
Family
ID=52690556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20130114145A KR20150034062A (ko) | 2013-09-25 | 2013-09-25 | 동일한 그룹의 데이터를 라우팅하는 방법 및 장치, 렌더링 유닛을 재구성하는 방법 및 장치 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20150084957A1 (ko) |
KR (1) | KR20150034062A (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150101915A (ko) * | 2014-02-27 | 2015-09-04 | 삼성전자주식회사 | 3차원 gui 화면의 표시 방법 및 이를 수행하기 위한 디바이스 |
US10388059B2 (en) | 2016-10-03 | 2019-08-20 | Nvidia Corporation | Stable ray tracing |
CN112840378B (zh) * | 2018-07-26 | 2024-06-07 | 辉达公司 | 在路径追踪中使用共享光照贡献进行相互作用的全局照明 |
US10957095B2 (en) | 2018-08-06 | 2021-03-23 | Intel Corporation | Programmable ray tracing with hardware acceleration on a graphics processor |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7830379B2 (en) * | 2006-09-19 | 2010-11-09 | Caustic Graphics, Inc. | Architectures for parallelized intersection testing and shading for ray-tracing rendering |
US7969434B2 (en) * | 2006-09-19 | 2011-06-28 | Caustic Graphics, Inc. | Method, apparatus, and computer readable medium for accelerating intersection testing in ray-tracing rendering |
US20080088619A1 (en) * | 2006-10-17 | 2008-04-17 | Robert Allen Shearer | Branch Prediction for Acceleration Data Structure Traversal |
US9571402B2 (en) * | 2013-05-03 | 2017-02-14 | Netspeed Systems | Congestion control and QoS in NoC by regulating the injection traffic |
US9264892B2 (en) * | 2013-07-03 | 2016-02-16 | Verizon Patent And Licensing Inc. | Method and apparatus for attack resistant mesh networks |
US9461832B2 (en) * | 2013-07-25 | 2016-10-04 | Board Of Trustees, Southern Illinois University | Multicast routing protocol for computer networks |
-
2013
- 2013-09-25 KR KR20130114145A patent/KR20150034062A/ko not_active Application Discontinuation
-
2014
- 2014-04-25 US US14/261,942 patent/US20150084957A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20150084957A1 (en) | 2015-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102080851B1 (ko) | 레이 추적의 스케쥴링을 위한 장치 및 방법 | |
US7940265B2 (en) | Multiple spacial indexes for dynamic scene management in graphics rendering | |
JP5063695B2 (ja) | 空間インデックスをトラバースする方法及びシステム | |
US7773087B2 (en) | Dynamically configuring and selecting multiple ray tracing intersection methods | |
US8284195B2 (en) | Cooperative utilization of spatial indices between application and rendering hardware | |
US8018453B2 (en) | Deferred acceleration data structure optimization for improved performance | |
JP5043939B2 (ja) | 3次元シーンの境界ボリュームを定めるノードを有する空間インデックスを用いる光線追跡のための操作を行なうプログラムを含むコンピュータ可読媒体及びシステム | |
US8234234B2 (en) | Utilizing ray tracing for enhanced artificial intelligence path-finding | |
US8139780B2 (en) | Using ray tracing for real time audio synthesis | |
US7864174B2 (en) | Methods and systems for reducing the number of rays passed between processing elements in a distributed ray tracing system | |
US8004518B2 (en) | Combined spatial index for static and dynamic objects within a three-dimensional scene | |
US8089481B2 (en) | Updating frame divisions based on ray tracing image processing system performance | |
US7796128B2 (en) | Dynamically load balancing game physics using real-time object scaling | |
US7940266B2 (en) | Dynamic reallocation of processing cores for balanced ray tracing graphics workload | |
JP6476090B2 (ja) | 加速構造の生成及び探索を行う方法並びに装置 | |
US7836258B2 (en) | Dynamic data cache invalidate with data dependent expiration | |
KR102161749B1 (ko) | 화상의 렌더링을 위하여 광선 추적을 수행하는 방법 및 장치. | |
US8339398B2 (en) | Integrated acceleration data structure for physics and ray tracing workload | |
US20080231627A1 (en) | Using Ray Tracing to Enhance Artificial Intelligence Character Behavior | |
US20080079714A1 (en) | Workload Distribution Through Frame Division in a Ray Tracing Image Processing System | |
KR20120019720A (ko) | 영상 처리 장치 및 방법 | |
US20080192051A1 (en) | Expanding Empty Nodes in an Acceleration Data Structure | |
KR20150039496A (ko) | 이전 렌더링의 결과를 이용하여 광선을 추적하는 방법 및 장치 | |
US8102389B2 (en) | Box casting using an integrated acceleration data structure | |
KR20150034062A (ko) | 동일한 그룹의 데이터를 라우팅하는 방법 및 장치, 렌더링 유닛을 재구성하는 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |