KR20080043227A - 데이터 의존 만기가 있는 동적 데이터 캐시 무효화 방법 및이미지 처리 시스템 - Google Patents

데이터 의존 만기가 있는 동적 데이터 캐시 무효화 방법 및이미지 처리 시스템 Download PDF

Info

Publication number
KR20080043227A
KR20080043227A KR1020070112076A KR20070112076A KR20080043227A KR 20080043227 A KR20080043227 A KR 20080043227A KR 1020070112076 A KR1020070112076 A KR 1020070112076A KR 20070112076 A KR20070112076 A KR 20070112076A KR 20080043227 A KR20080043227 A KR 20080043227A
Authority
KR
South Korea
Prior art keywords
memory
directory entry
cache
image processing
processing system
Prior art date
Application number
KR1020070112076A
Other languages
English (en)
Other versions
KR100961736B1 (ko
Inventor
제프리 더글라스 브라운
러셀 딘 후버
에릭 올리버 메드리히
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20080043227A publication Critical patent/KR20080043227A/ko
Application granted granted Critical
Publication of KR100961736B1 publication Critical patent/KR100961736B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명의 실시예에 따르면, 분배형 시간 기반 신호는 메모리 캐시 내에 위치된 데이터에 대한 어드레스 변환을 제공하는 메모리 디렉토리에 결합될 수 있다. 메모리 디렉토리는 메모리 엔트리가 분배형 시간 기반 신호에 의해 액세스되었는지 아닌지를 표시하는 속성 비트를 가질 수 있다. 또한, 메모리 디렉토리는 메모리 디렉토리 엔트리가 분배형 시간 기반 신호에 의한 메모리 엔트리의 액세스 후 무효라고 간주해야 하는지 아닌지를 표시하는 속성 비트를 가질 수 있다. 메모리 디렉토리 엔트리가 분배형 시간 기반 신호에 의해 액세스되고 메모리 디렉토리 엔트리가 시간 기반 신호에 의한 액세스 후 무효로 간주되어야 하면, 메모리 디렉토리 엔트리를 이용하여 시도된 임의의 어드레스 변환은 캐시 부적중를 야기할 것이다. 캐시 부적중은 메모리로부터 유효 데이터의 회수를 개시시킬 수 있다.
메모리, 디렉토리, 데이터, 어드레스, 변환, 캐시, 액세스, 무효, 유효, 엔트리.

Description

데이터 의존 만기가 있는 동적 데이터 캐시 무효화 방법 및 이미지 처리 시스템{DYNAMIC DATA CACHE INVALIDATE WITH DATA DEPENDENT EXPIRATION}
본 발명의 실시예는 일반적으로 컴퓨터 처리 분야에 관한 것이다.
3차원 장면(three-dimensional scene)으로부터 2차원 이미지를 렌더링하는 처리를 일반적으로 이미지 처리(image processing)라고 부른다. 현대의 컴퓨터 산업이 발전함에 따라 이미지 처리 또한 발전하고 있다. 이미지 처리의 발전에 있어서 하나의 특수한 목표는 3차원 장면의 2차원 시뮬레이션 또는 연출(rendition)을 가능한 한 현실감있게 하는 것이다. 현실감 있는 이미지를 렌더링하는데 있어서의 한가지 제한 사항은 현대의 모니터가 화소(pixel)를 이용하여 이미지를 디스플레이한다는 점이다.
화소는 모니터상에서 조명될 수 있는 최소 공간 영역이다. 대부분의 현대의 컴퓨터 모니터는 전체 디스플레이 또는 렌더링된 장면을 연출하기 위해 수십만 또는 수백만 화소의 조합을 이용할 것이다. 개개의 화소는 그리드형으로 배열되고 집합적으로 모니터의 전체 시청 영역(viewing area)을 커버한다. 각각의 개별 화소는 시청용의 최종 화상(picture)을 렌더링하도록 조명될 수 있다.
화소를 이용하는 2차원 모니터상에 실세계(real world) 3차원 장면을 렌더링하는 한가지 기술은 래스터화(rasterization)라고 부르는 기술이다. 래스터화는 벡터 형식(장면 내의 기하학적 객체들의 수학적 표시)으로 표현된 2차원 이미지를 취하여 그 이미지를 모니터상의 디스플레이를 위해 개별 화소로 변환하는 처리이다. 래스터화는 그래픽을 신속히 렌더링할 때 및 비교적 낮은 연산 전력(computational power)을 사용할 때 효과적이지만, 래스터화는 몇가지 단점이 있다. 예를 들면, 래스터화는 빛의 물리적 특성에 기초하는 것이 아니라 2차원 평면상에 투영된 장면의 3차원 기하학적 객체들의 형상에 기초하기 때문에 현실감(realism)이 떨어진다. 또한, 래스터화로 장면을 렌더링하기 위해 필요한 연산 전력은 렌더링될 장면의 복잡도의 증가에 따라 직접적으로 그 크기가 증대된다. 이미지 처리가 더 사실적으로 될수록 렌더링된 장면 또한 더 복잡해진다. 그러므로, 복잡도에 따라 래스터화가 직접적으로 그 크기가 증대되기 때문에 이미지 처리가 발전함에 따라 더 어려워진다.
화소를 이용하여 2차원 모니터상에 실세계 3차원 장면을 렌더링하는 다른 하나의 기술은 광선 추적(ray tracing)이라고 부르는 기술이다. 광선 추적 기술은 빛의 광선과 유사하게 행동하는 가상 광선(imaginary ray)이 컴퓨터 스크린상으로 렌더링되는 3차원 장면내로 전달되는 것을 추적한다. 광선은 컴퓨터 스크린 뒤에 앉아 있는 관찰자의 눈으로부터 발생하고 컴퓨터 스크린을 구성하는 화소들을 통과하여 3차원 장면으로 향한다. 각각의 추적된 광선은 3차원 장면 내로 진행하고 3차원 장면 내의 객체들과 교차한다. 광선이 장면 내의 객체와 교차하면, 객체의 특성 및 여러 가지 다른 속성 계수들을 이용하여 노출된 광선의 색 및 광량 또는 그 부족량이 계산된다. 그 다음에, 상기 계산 결과를 이용하여 추적 광선이 통과하는 화소의 최종 색을 결정한다.
추적 광선의 처리는 하나의 장면에 대하여 여러 번 실행된다. 예를 들면, 단일 광선은 디스플레이 내의 각 화소에 대하여 추적될 수 있다. 컴퓨터 스크린의 2차원 디스플레이를 구성하는 모든 화소의 색을 결정하기 위해 충분한 수의 광선이 추적되었을 때, 3차원 장면의 2차원 합성이 관찰자에 대하여 컴퓨터 스크린상에서 디스플레이될 수 있다.
광선 추적 기술은 전형적으로 래스터화 기술보다 더 현실감있게 실세계 3차원 장면을 렌더링한다. 이것은 광선 추적 기술이 래스터화 기술에서 하는 것처럼 3차원 형상을 단순히 2차원 평면상에 투영하기보다는 실세계 환경에서 빛이 어떻게 앞으로 나아가고 행동하는지를 가상실험한다는 사실에 부분적으로 기인한다. 그러므로, 광선 추적을 이용하여 렌더링된 그래픽은 우리의 눈이 실세계에서 볼 때와 같이 자연스러운 그래픽을 모니터상에서 더 정확하게 묘사한다.
더 나아가, 광선 추적 기술은 장면이 더 복잡하게 됨에 따라 증가된 장면의 복잡도를 래스터화 기술보다 더 잘 처리한다. 광선 추적 기술은 장면 복잡도에 대하여 로그함수적으로 증대된다. 이것은 장면이 더 복잡하게 되는 경우에도 동일한 수의 광선이 장면내로 비추게 될 수 있다는 사실에 기인한다. 그러므로, 광선 추적 기술은 장면이 더 복잡하게 되는 경우에서 래스터화 기술에서처럼 연산 전력 요구조건의 측면에서 고통받지 않게 된다.
광선 추적 기술의 한가지 중요한 단점은 매무 많은 계산으로 인하여 장면의 렌더링에 요구되는 처리 전력이 증가된다는 점이다. 이것은 고속 렌더링이 필요한 경우에 문제가 된다. 예를 들면, 이미지 처리 시스템이 게임 콘솔에서와 같이 애니메이션 목적으로 그래픽을 렌더링해야 하는 경우이다. 광선 추적을 위한 증가된 연산 요구조건 때문에 애니메이션을 현실감있게 볼 수 있도록 충분히 애니메이션을 고속으로 랜더링하기가 곤란하다(현실감있는 애니메이션은 대략 초당 20 내지 24 프레임이다).
그러므로, 광선 추적을 수행하기 위해 더 효과적인 기술 및 장치가 필요하다.
본 발명의 실시예는 일반적으로 광선 추적을 수행하기 위한 방법 및 장치를 제공한다.
본 발명의 일 실시예에 따르면, 메모리 캐시내의 데이터를 무효화하는 방법이 제공된다. 이 방법은 일반적으로 메모리 캐시의 제1 부분에 대응하는 제1 메모리 디렉토리 엔트리 및 메모리 캐시의 제2 부분에 대응하는 제2 메모리 디렉토리 엔트리 - 메모리 디렉토리 엔트리들은 메모리 캐시내의 데이터에 대한 유효 어드레스 대 실제 어드레스 변환을 제공함 - 를 생성하는 단계와; 분배형 시간 기반 신호의 수신시 제1 메모리 디렉토리 엔트리가 무효임을 표시하도록 제1 메모리 디렉토리 엔트리내에 제1 비트를 설정하는 단계와; 분배형 시간 기반 신호를 발생하는 단계와; 분배형 시간 기반 신호에 응답하여 제1 및 제2 메모리 디렉토리 엔트리내에 제2 비트를 설정하는 단계와; 메모리 캐시의 제1 부분에 대한 메모리 어드레스 변환 요청을 수신하는 단계와; 제1 메모리 디렉토리 엔트리내의 제1 비트 및 제2 비트를 검사하여 제1 메모리 디렉토리 엔트리가 무효인지를 판정하는 단계를 포함한다.
본 발명의 다른 실시예에 따르면, 실행되었을 때 소정의 동작을 수행하는 컴 퓨터 판독가능 매체가 제공된다. 상기 소정의 동작은, 일반적으로, 메모리 캐시의 제1 부분에 대응하는 제1 메모리 디렉토리 엔트리 및 메모리 캐시의 제2 부분에 대응하는 제2 메모리 디렉토리 엔트리 - 메모리 디렉토리 엔트리는 메모리 캐시의 데이터에 대한 유효 어드레스 대 실제 어드레스 변환을 제공함 - 를 생성하는 동작과; 분배형 시간 기반 신호의 수신시 제1 메모리 디렉토리 엔트리가 무효임을 표시하도록 제1 메모리 디렉토리 엔트리내에 제1 비트를 설정하는 동작과; 분배형 시간 기반 신호를 발생하는 동작과; 분배형 시간 기반 신호에 응답하여 제1 및 제2 메모리 디렉토리 엔트리내에 제2 비트를 설정하는 동작과; 메모리 캐시의 제1 부분에 대한 메모리 어드레스 변환 요청을 수신하는 동작과; 제1 메모리 디렉토리 엔트리내의 제1 비트 및 제2 비트를 검사하여 제1 메모리 디렉토리 엔트리가 무효인지를 판정하는 동작을 포함한다.
본 발명의 또다른 실시예에 따르면 시스템이 제공된다. 시스템은, 일반적으로, 제1 처리 소자에 결합되고 주기적인 분배형 시간 기반 신호를 발생하도록 구성된 프레임 리프레시 타이머 회로와; 적어도 제1 부분 및 제2 부분이 있는 메모리 캐시와; 메모리 캐시의 제1 부분 내의 데이터에 대한 유효 어드레스 대 실제 어드레스 변환을 제공하는 제1 디렉토리 엔트리 및 메모리 캐시의 제2 부분 내의 데이터에 대한 유효 어드레스 대 실제 어드레스 변환을 제공하는 제2 디렉토리 엔트리를 적어도 포함하는 메모리 디렉토리를 포함하고, 처리 소자는 제1 디렉토리 엔트리내에 분배형 시간 기반 신호 비트상의 무효 메모리 엔트리를 설정하고; 분배형 시간 기반 신호의 수신시 적어도 제1 디렉토리 엔트리 및 제2 디렉토리 엔트리내에 수신된 분배형 시간 기반 신호 비트를 설정하고; 메모리 캐시의 제1 부분에 위치된 데이터에 대한 메모리 어드레스 변환 요청을 수신하고; 분배형 시간 기반 신호 비트상의 무효 메모리 엔트리를 수신된 분배형 시간 기반 신호 비트와 비교하여 제1 메모리 디렉토리 엔트리가 무효인지를 판정하도록 구성된다.
본 발명의 실시예는 메모리 캐시의 다른 부분의 유효성을 유지하면서 메모리 캐시의 선택된 부분을 무효화하는 방법 및 장치를 제공한다. 본 발명의 일 실시예에 따르면, 메모리 디렉토리내의 속성 비트와 함께 분배형 시간 기반 신호가 메모리 캐시의 선택 부분을 무효화하기 위해 사용된다. 분배형 시간 기반 신호는 메모리 디렉토리 내의 엔트리들과 결합될 수 있다. 시간 기반 신호의 분배가 있을 때, 메모리 디렉토리 엔트리내의 속성 비트는 메모리 디렉토리 엔트리가 분배형 시간 기반 신호에 의해 액세스되었음을 표시하도록 설정될 수 있다. 또한, 메모리 디렉토리 엔트리는 무효 속성 비트를 포함할 수 있는데, 이 무효 속성 비트는 설정되어 있는 경우 메모리 디렉토리 엔트리가 다음 분배형 시간 기반 신호의 수신시에 무효로 간주되어야 함을 표시한다. 메모리 디렉토리 엔트리내의 무효 속성 비트가 설정되고 메모리 디렉토리 엔트리가 액세스되었으면, 메모리 디렉토리 엔트리를 통한 어드레스 변환을 위한 임의의 후속 요청은 캐시 부적중 (cache miss) 을 일으킬 수 있다. 캐시 부적중은 처리 소자로 하여금 메모리로부터 유효 데이터를 가지고 와서 메모리 캐시 내의 데이터를 교체하게 할 수 있다. 따라서, 분배형 시간 기반 신호 및 메모리 디렉토리 엔트리내의 속성 비트를 사용함으로써 메모리 디렉토리 엔트리 에 의해 어드레스 변환이 제공된 메모리 캐시의 부분은 효과적으로 무효화된다.
이하에서는 본 발명의 실시예를 설명한다. 그러나, 본 발명은 여기에서 설명하는 특정의 실시예로 제한되는 것이 아님을 이해하여야 한다. 그 대신, 이하에서 설명하는 특징 및 요소들의 임의 조합이 다른 실시예와 관련되는 것에 상관없이 본 발명을 구현하고 실시하기 위해 생각될 수 있다. 또한, 각종 실시예에서, 본 발명은 종래 기술에 비하여 많은 장점을 제공한다. 그러나, 본 발명은 실시예가 다른 가능한 해법 및/또는 종래 기술에 비하여 장점을 달성한다 하더라도, 특수한 장점이 주어진 실시예에 의해 달성되는지 여부는 본 발명을 제한하지 않는다. 따라서, 하기의 태양, 특징, 실시예 및 장점들은 단지 설명을 위한 것이고, 첨부된 특허 청구 범위에서 명시적으로 인용된 것을 제외하고 특허 청구 범위의 요소 또는 제한으로 생각되어서는 안된다. 마찬가지로, 여기에서 말하는 "발명"은 여기에서 설명하는 임의의 주제(subject matter)의 일반화로 해석되지 않고, 첨부된 특허 청구 범위에서 명시적으로 인용된 것을 제외하고 특허 청구 범위의 요소 또는 제한으로 생각되지 않을 것이다.
본 발명의 일 실시예는 컴퓨터 시스템에서 사용하기 위한 프로그램 제품으로서 구현된다. 프로그램 제품의 프로그램(들)은 (여기에서 설명하는 방법들을 포함한) 실시예의 기능들을 정의하고 다양한 컴퓨터 판독가능 매체에 저장될 수 있다. 예시적인 컴퓨터 판독가능 매체는, 예를 들자면, (i) 쓰기가 불가능한 기억 매체(예를 들면, CD-ROM 드라이브에 의해 판독가능한 CD-ROM 디스크와 같은 컴퓨터 내의 읽기 전용 메모리 장치)에 영구적으로 저장된 정보; (ii) 쓰기가능한 기억 매 체(예를 들면, 디스켓 드라이브 내의 플로피 디스크 또는 하드디스크 드라이브)에 저장된 변경가능한 정보; 및 (iii) 무선 통신을 비롯해서 컴퓨터 또는 전화망을 통하여 통신 매체에 의해 컴퓨터로 전송된 정보 등이 포함될 수 있으나, 이러한 예시들에 국한되는 것은 아니다. 후자의 실시예는 구체적으로 인터넷 및 기타 네트워크로부터 다운로드된 정보를 포함한다. 이러한 컴퓨터 판독가능 매체는 본 발명의 기능들을 지시하는 컴퓨터 판독가능 명령들을 포함하고 있을 때 본 발명의 실시예를 구성한다.
일반적으로, 본 발명의 실시예를 구현하기 위해 실행되는 루틴들은 운영시스템이나 특정 애플리케이션, 구성 부품, 프로그램, 모듈, 객체 또는 명령들의 시퀀스의 일부일 수 있다. 본 발명의 컴퓨터 프로그램은 전형적으로 원시 컴퓨터(native computer)에 의해 기계 판독가능 포맷으로 변환되어 실행가능한 명령어들이 되는 다수의 명령들로 구성된다. 또한, 프로그램들은 프로그램에 국부적으로 상주하거나 메모리 또는 기억 장치에서 발견되는 변수(variable) 및 데이터 구조로 구성된다. 또한, 이하에서 설명하는 각종 프로그램들은 본 발명의 특정 실시예에서 구현되는 애플리케이션에 기초하여 식별될 수 있다. 그러나, 이하에서 임의의 특정 프로그램 명칭은 단지 편리성을 위해 사용된 것이고, 따라서 본 발명은 그러한 명칭에 의해 식별되는 및/또는 암시되는 임의의 특정 응용에서 단독으로 사용되는 것으로 제한되어서는 안된다는 것을 이해하여야 한다.
예시적인 프로세서 레이아웃 및 통신 네트워크
도 1은 본 발명의 일 실시예에 따른 다중 코어 처리 소자(100)를 도시한 것 이다. 다중 코어 처리 소자(100)는 복수의 기본 스루풋 엔진(basic throughput engine; BTE)(105)을 포함한다. BTE(105)는 복수의 처리 스레드(processing thread) 및 코어 캐시(예를 들면, L1 캐시)를 포함할 수 있다. 각 BTE 내에 위치된 처리 스레드는 공유된 다중 코어 처리 소자 캐시(110)(예를 들면, L2 캐시)에 액세스할 수 있다.
BTE(105)는 복수의 인박스(inbox)(115)에 또한 액세스할 수 있다. 인박스(115)는 메모리 맵핑된 어드레스 공간일 수 있다. 인박스(115)는 각각의 BTE(105) 내에 위치된 처리 스레드로 맵핑될 수 있다. BTE 내에 위치된 각 스레드는 메모리 맵핑된 인박스를 가질 수 있고 다른 모든 메모리 맵핑된 인박스(115)에 액세스할 수 있다. 인박스(115)는 BTE(105)에 의해 사용되는 낮은 지연시간(latency) 및 높은 대역폭 통신 네트워크를 구성한다.
BTE는 인박스(115)를 BTE 들간의 상호 통신 및 데이터 처리 작업 재분배를 위한 네트워크로서 사용할 수 있다. 일부 실시예에서는 예컨대 BTE(105)에 의한 처리 결과를 수신하기 위해 별도의 아웃박스(outbox)가 통신 네트워크에서 사용될 수 있다. 다른 실시예에서는, 예를 들어, 하나의 BTE(105)로 하여금 처리 기능의 결과들을 이용할 예정인 다른 하나의 BTE(105)의 인박스에 이 결과들을 직접 기록하게 하는 경우에서와 같이, 인박스(115)는 아웃박스로서 또한 사용될 수 있다.
이미지 처리 시스템의 총괄적인 성능은 BTE가 작업의 분할 및 재분배를 얼마나 잘 할 수 있는지와 관계있을 수 있다. 인박스(115)의 네트워크는 프레임 대 프레임 일관성(coherency)이 없는 BTE 통신 데이터 패킷으로 공유 다중 코어 처리 소 자 캐시(110)를 변경시키지 않고 작업을 수집하여 그 작업을 다른 BTE에 분배하기 위해 사용될 수 있다. 프레임당 수백만개의 삼각형을 렌더링할 수 있는 이미지 처리 시스템은 이러한 방법으로 접속된 다수의 BTE(105)들을 포함할 수 있다.
본 발명의 일 실시예에서, 하나의 BTE(105)의 스레드가 워크로드 관리자에게 할당될 수 있다. 이미지 처리 시스템은 각종 소프트웨어 및 하드웨어 구성 부품들을 이용하여 3차원 장면으로부터 2차원 이미지를 렌더링할 수 있다. 본 발명의 일 실시예에 따르면, 이미지 처리 시스템은 워크로드 관리자를 이용하여 이미지 처리 시스템에 의해 발생된 광선으로 공간 색인(spatial index)을 순회(traverse)할 수 있다. 도 4를 참조하여 뒤에서 더 자세히 설명되는 공간 색인은 비교적 큰 3차원 장면을 보다 작은 경계 볼륨(bounding volume)으로 분할하기 위해 사용되는 트리형 데이터 구조로서 구현될 수 있다. 이미지 처리를 위한 광선 추적법을 이용하는 이미지 처리 시스템은 공간 색인을 이용하여 광선-경계 볼륨 교차점들을 신속히 결정할 수 있다. 본 발명의 일 실시예에서, 워크로드 관리자는 공간 색인을 이용하여 광선-경계 볼륨 교차 테스트를 수행할 수 있다.
본 발명의 일 실시예에서, 다중 코어 처리 소자(100)상의 다중 코어 처리 소자 BTE(105)의 다른 스레드는 벡터 스루풋 엔진일 수 있다. 워크로드 관리자가 광선-경계 볼륨 교차점을 결정한 후, 워크로드 관리자는 광선을 인박스(115)를 거쳐 복수의 벡터 스루풋 엔진 중의 하나에 출사(보냄)시킬 수 있다. 벡터 스루풋 엔진은 그 다음에 광선이 경계 볼륨 내에 포함된 프리미티브(primitive)와 교차하는지를 판정한다. 벡터 스루풋 엔진은 또한 광선이 통과하는 화소의 색을 결정하는 것 과 관련된 동작을 수행할 수 있다.
도 2는 본 발명의 일 실시예에 따른 다중 코어 처리 소자(200)의 네트워크를 도시하는 도면이다. 도 2는 다중 코어 처리 소자(100)의 BTE 중의 하나의 BTE의 스레드가 워크로드 관리자(205)로 되는 본 발명의 일 실시예를 또한 보여주고 있다. 다중 코어 처리 소자(200) 네트워크 내의 각각의 다중 코어 처리 소자(2201-N)는 본 발명의 일 실시예에 따른 하나의 워크로드 관리자(2051-N)를 포함할 수 있다. 다중 코어 처리 소자(200) 네트워크 내의 각각의 다중 코어 처리 소자(2201-N)는 또한 본 발명의 일 실시예에 따른 복수의 벡터 스루풋 엔진(210)을 포함할 수 있다.
본 발명의 실시예에 따라, 워크로드 관리자(2051-N)는 고속 버스(225)를 이용다른 다중 코어 처리 소자(2201-N)의 다른 워크로드 관리자(2051-N) 및/또는 벡터 스루풋 엔진(210)과 통신할 수 있다. 각각의 벡터 스루풋 엔진(210)은 고속 버스(225)를 이용하여 다른 벡터 스루풋 엔진(210) 또는 워크로드 관리자(2051-N)와 통신할 수 있다. 워크로드 관리자 프로세서(205)는 고속 버스(225)를 이용하여 이미지 처리 관련 작업을 수집해서 그 작업을 다른 워크로드 관리자(2051-N)에게 및/또는 다른 벡터 스루풋 엔진(210)에 분배할 수 있다. 고속 버스(225)를 사용하면 워크로드 관리자(2051-N)가 캐시(230)에 영향을 주지 않고 워크로드 관리자 통신과 관련된 데이터 패킷과 통신할 수 있다.
예시적인 3차원 장면
도 3은 이미지 처리 시스템에 의해 렌더링되는 예시적인 3차원 장면(305)을 도시한 것이다. 3차원 장면(305) 내에는 객체(320)들이 있을 수 있다. 도 3의 객체(320)들은 기하학적 형상이 서로 다르다. 비록 도 3에는 4개의 객체(320)만이 도시되어 있지만, 전형적인 3차원 장면 내의 객체들의 수는 더 많을 수도 있고 더 적을 수도 있다. 통상적으로, 3차원 장면은 도 3에 도시된 것보다 더 많은 객체들을 갖는다.
도 3에서 알 수 있는 바와 같이, 객체들은 기하학적 형상 및 크기가 변화한다. 예를 들면, 도 3의 하나의 객체는 피라미드형(320A)이다. 도 3의 다른 객체들은 상자형(320B-D)이다. 현대의 많은 이미지 처리 시스템에서, 객체들은 가끔 더 작은 기하학적 형상(예를 들면, 사각형, 원형, 삼각형 등)으로 쪼개진다. 이때 더 큰 객체들은 다수의 더 작은 단순 기하학적 형상으로 표현된다. 상기 작은 기하학적 형상들을 종종 프리미티브(primitive)라고 부른다.
장면(305) 내에는 광원(325A-B)이 또한 도시되어 있다. 광원은 장면(305) 내에 위치된 객체(320)들을 조명할 수 있다. 또한, 장면(305) 내에서 광원(325) 및 객체(320)의 위치에 따라서, 광원은 그림자가 장면(305) 내의 객체들에 비추게 할 수 있다.
3차원 장면(305)은 이미지 처리 시스템에 의해 2차원 화상으로 렌더링될 수 있다. 이미지 처리 시스템은 또한 2차원 화상이 모니터(310)상에 디스플레이되게 할 수 있다. 모니터(310)는 여러 색의 많은 화소(330)를 이용하여 최종의 2차원 화 상을 렌더링할 수 있다.
3차원 장면(320)을 2차원 화상으로 렌더링하기 위해 이미지 처리 시스템이 사용하는 하나의 방법은 광선 추적법이라고 부르는 것이다. 광선 추적법은 관찰자(315)의 시각(perspective)으로부터 광선을 3차원 장면(320)으로 "출사" 또는 "슈팅"하는 이미지 처리 시스템에 의해 달성된다. 광선은 빛 광선과 유사한 특성 및 행동을 갖는다.
도 3에는 관찰자(315)의 위치에서 발생하여 3차원 장면(305)을 관통하는 하나의 광선(340)이 도시되어 있다. 광선(340)이 관찰자(315)로부터 3차원 장면(305)으로 관통할 때, 광선(340)은 최종의 2차원 화상이 이미지 처리 시스템에 의해 렌더링되는 평면을 통과한다. 도 3에서, 이 평면은 모니터(310)에 의해 표시된다. 광선(340)이 평면 즉 모니터(310)를 통과하는 지점은 화소(335)로 표시된다.
앞에서 간단히 설명한 바와 같이, 대부분의 이미지 처리 시스템은 모니터(310)상에 최종의 장면을 렌더링하기 위해 수천(수백만이 아니면)개의 화소로 이루어진 그리드(330)를 사용한다. 그리드(330)는 프레임이라고도 부른다. 각각의 개별적인 화소는 모니터(310)상에 최종의 복합 2차원 화상을 렌더링하기 위해 다른 색을 디스플레이할 수 있다. 3차원 장면으로부터 2차원 화상을 렌더링하기 위해 광선 추적 이미지 처리 방법을 사용하는 이미지 처리 시스템은 출사된 광선(들)이 3차원 장면에서 마주치는 색들을 계산할 것이다. 그 다음에, 이미지 처리 장면은 광선과 마주친 색들을 관찰자로부터 3차원 장면까지 광선이 그 경로를 따라 통과하는 화소에 할당할 것이다.
화소당 출사되는 광선의 수는 다르게 할 수 있다. 일부 화소는 렌더링되는 특정 장면을 위하여 많은 광선들을 출사시킬 수 있다. 그 경우, 화소의 최종 색은 그 화소에 대해 출사된 모든 광선으로부터 각각의 색 기여에 의해 결정된다. 다른 화소들은 2차원 화상에서 화소의 결과적인 색을 결정하기 위해 출사된 하나의 광선만을 가질 수 있다. 일부 화소들은 이미지 처리 시스템에 의해 어떠한 광선도 출사되지 않을 수 있고, 그 경우 화소들의 색은 이미지 처리 시스템 내의 알고리즘에 의해 결정되거나 근사화되거나 할당될 수 있다.
2차원 화상에서 화소(335)의 최종 색을 결정하기 위해서, 이미지 처리 시스템은 광선(340)이 장면 내의 객체와 교차하는지를 판정하여야 한다. 광선이 장면 내의 객체와 교차하지 않으면, 광선은 디폴트 배경색(예를 들면, 주간(day) 하늘을 나타내는 청색 또는 야간(night) 하늘을 나타내는 흑색)이 할당될 수 있다. 반대로, 광선(340)이 3차원 장면을 관통할 때, 광선(305)은 객체와 충돌할 수 있다. 광선이 장면 내의 객체와 충돌할 때, 객체의 색은 광선이 통과하는 화소에 할당될 수 있다. 그러나, 객체의 색은 화소에 색이 할당되기 전에 결정되어야 한다.
많은 인자들이 원래 광선(340)과 충돌한 객체의 색에 기여할 수 있다. 예를 들면, 3차원 장면 내의 광원들이 객체를 조명할 수 있다. 또한, 객체의 물리적 특성이 객체의 색에 기여할 수 있다. 예를 들어서 만일 객체가 반사성이거나 투과성이면, 다른 비광원 객체가 객체의 색에 기여할 수 있다.
3차원 장면 내의 다른 객체로부터의 영향을 결정하기 위해, 원래 광선(340)이 객체와 교차되는 지점으로부터 2차 광선이 출사될 수 있다. 예를 들면, 원래 광 선(340)이 객체와 교차되는 지점에 대한 빛의 기여를 결정하기 위해 음영 광선(shadow ray)(341)이 출사될 수 있다. 만일 객체가 반투명성이면, 이미지 처리 시스템은 어떠한 색 또는 빛이 객체의 몸체를 통해 투과되어야 하는지를 결정하기 위해 투과 광선(344)을 출사할 수 있다. 만일 객체가 반사성이면, 이미지 처리 시스템은 어떠한 색 또는 빛이 객체(320)에서 반사되는지를 결정하기 위해 반사 광선을 출사할 수 있다.
2차 광선의 일 유형은 음영 광선일 수 있다. 각각의 음영 광선은 원래 광선과 객체의 교차점으로부터 3차원 장면(305) 내의 광원까지 추적될 수 있다. 광선이 광원에 도달할 때까지 광선이 다른 객체와 마주치지 않고 광원에 도달하면, 광원은 원래 광선이 객체와 충돌한 지점에서 원래 광선과 충돌한 객체를 조명할 것이다.
예를 들면, 음영 광선(341A)은 원래 광선(340)이 객체(320A)와 교차한 지점으로부터 출사되어 광원(325A)을 향하는 방향으로 진행할 수 있다. 음영 광선(341A)은 장면(305) 내의 어떤 다른 객체(320)와 마주치지 않고 광원(325A)에 도달한다. 그러므로, 광원(325A)은 원래 광선(340)이 객체(320A)와 교차하는 지점에서 객체(320A)를 조명할 것이다.
다른 음영 광선은 원래 광선이 객체와 충돌한 지점과 3차원 장면 내에서 다른 객체에 의해 차단된 광원 사이에서 그들의 경로를 가질 수 있다. 원래 광선과 충돌하는 객체상의 지점과 광원 사이의 경로를 차단하는 객체가 불투명체이면, 광 원은 원래 광원이 객체와 충돌하는 지점에 있는 객체를 조명하지 않을 것이다. 따라서, 광원은 원래 광선의 색에 기여하지 않고, 결국 2차원 화상에서 렌더링되는 화소의 색에도 기여하지 않는다. 그러나, 객체가 반투명체 또는 투명체이면, 광원은 원래 광선이 객체와 충돌하는 지점에 있는 객체를 조명할 수 있다.
예를 들면, 음영 광선(341B)은 원래 광선(340)이 객체(320A)와 교차하는 지점으로부터 출사되어 광원(325B)을 향하는 방향으로 진행할 수 있다. 이 예에서, 음영 광선(341B)의 경로는 객체(320D)에 의해 차단된다. 만일 객체(320D)가 불투명체이면, 광원(325B)은 원래 광원(340)이 객체(320A)와 교차하는 지점에 있는 객체(320A)를 조명하지 않을 것이다. 그러나, 객체(320D)가 반투명체 또는 투명체이면, 광원(325B)은 원래 광선(340)이 객체(320A)와 교차하는 지점에 있는 객체(320A)를 조명할 수 있다.
2차 광선의 다른 유형은 투과 광선(transmitted ray)이다. 투과 광선은 원래 광선이 교차하는 객체가 투명체 또는 반투명체 특성을 갖는 경우(예를 들면, 유리) 이미지 처리 시스템에 의해 출사될 수 있다. 투과 광선은 원래 광선이 객체와 충돌하는 각도와 관련있는 각도로 객체를 관통한다. 예를 들면, 투과 광선(344)은 원래 광선(340)이 교차하는 객체(320A)를 관통하는 것으로 보여진다.
2차 광선의 다른 유형은 반사 광선이다. 만일 원래 광선이 교차하는 객체가 반사 특성을 갖는 것(예를 들면, 금속 마감재)이면, 반사 광선은 어떠한 색 또는 빛이 객체상에서 반사될 수 있는지를 결정하기 위해 이미지 처리 시스템에 의해 출사될 것이다. 반사 광선은 원래 광선이 객체와 교차하는 각도와 관련있는 각도로 객체로부터 멀어지게 진행할 것이다. 예를 들면, 반사 광선(343)은 원래 광선(340)이 교차하는 객체(320A)상에서 어떠한 색 또는 빛이 반사되는지를 결정하기 위해 이미지 처리 시스템에 의해 출사될 수 있다.
모든 2차 광선(예를 들면, 음영 광선, 투과 광선, 반사 광선 등)의 색 및 빛에 대한 총 기여는 원래 광선이 통과하는 화소의 최종 색으로 나타날 것이다.
예시적인 KD-트리
광선 추적을 수행할 때 마주치게 되는 한가지 문제점은 출사된 광선이 렌더링될 장면 내의 임의의 객체들과 교차하는지를 신속하고 효율적으로 판정하는 것이다. 광선 교차 판정을 더 효율적으로 하는 것으로 당업계에서 알려져 있는 한가지 방법은 공간 색인을 이용하는 것이다. 공간 색인은 3차원 장면 또는 3차원 세계를 프리미티브를 포함하거나 포함하지 않는 더 작은 볼륨들(전체 3차원 장면에 비하여 더 작은 것)로 분할한다. 그 다음에, 이미지 처리 시스템은 알려진 작은 볼륨의 경계(boundary)를 이용하여 광선이 상기 더 작은 볼륨 내에 포함된 프리미티브와 교차하는지를 판정할 수 있다. 만일 광선이 프리미티브를 포함하는 볼륨과 교차하면, 그 볼륨 내에 포함된 프리미티브의 알려진 위치 및 치수에 대하여 광선의 궤도를 이용해서 광선 교차 테스트를 수행할 수 있다. 만일 광선이 특정의 볼륨과 교차하지 않으면, 그 볼륨 내에 포함된 프리미티브에 대한 광선-프리미티브 교차 테스트 를 수행할 필요가 없다. 또한, 만일 광선이 프리미티브를 포함하지 않은 경계 볼륨과 교차하면, 그 경계 볼륨에 대한 광선-프리미티브 교차 테스트를 수행할 필요가 없다. 따라서, 필요할 수 있는 광선-프리미티브 교차 테스트의 수를 줄임으로써, 공간 색인의 사용은 광선 추적을 행하는 이미지 처리 시스템의 성능을 크게 증가시킨다. 다른 공간 색인 가속화 데이터 구조의 몇가지 예를 들면 옥트리(octrees), kd-트리(k dimensional Trees), 및 BSP 트리(binary space partitioning trees) 등이 있다. 여러가지 다른 공간 색인 구조가 있기는 하지만, 본 발명의 실시예의 설명을 용이하게 하기 위해, 이하의 설명에서는 kd-트리를 이용하겠다. 그러나, 당업자라면 본 발명의 실시예가 임의의 다른 유형의 공간 색인에도 적용될 수 있다는 것을 쉽게 알 것이다.
kd-트리는 경계 볼륨에 정렬된 축을 이용하여 전체 장면 또는 공간을 더 작은 볼륨으로 분할한다. 즉, kd-트리는 알려진 축에 평행한 분할 평면(splitting plane)을 이용해서 장면에 의해 둘러싸인 3차원 공간을 분할할 수 있다. 분할 평면은 큰 공간을 더 작은 경계 볼륨으로 분할한다. 작은 경계 볼륨들이 모여서 장면 내의 전체 공간을 구성한다. 큰 경계 볼륨을 2개의 작은 경계 볼륨으로 분할(나눔)하는 결정은 이미지 처리 시스템에 의해 kd-트리 구성 알고리즘을 이용하여 행할 수 있다.
경계 볼륨을 더 작은 볼륨으로 분할하는 시점에 대한 결정의 한가지 기준은 경계 볼륨 내에 포함된 프리미티브의 수가 될 수 있다. 즉, 경계 볼륨이 미리 정해진 임계치보다 더 많은 프리미티브를 포함하고 있으면, 트리 구성 알고리즘은 더 많은 분할 평면을 작도(drawing)함으로써 볼륨들을 계속하여 나눌 수 있다. 경계 볼륨을 더 작은 볼륨으로 분할하는 시점에 대한 결정의 다른 하나의 기준은 경계 볼륨 내에 포함된 공간의 크기가 될 수 있다. 또한, 경계 볼륨의 분할을 계속할 것인지의 결정은 경계 볼륨을 생성하는 평면에 의해 얼마나 많은 프리미티브가 교차되는지에 기초하여 행할 수 있다.
장면의 분할은 노드(node), 가지(branch) 및 리프(leaf)로 구성된 이원 트리 구조(binary tree structure)로 표시할 수 있다. 트리 안의 각각의 내부 노드는 비교적 큰 경계 볼륨을 나타내고, 노드는 분할 평면에 의해 비교적 큰 경계 볼륨을 분할한 후에 나타나는 2개의 비교적 작은 분할 볼륨을 나타내는 하위 노드(sub-node)에 대한 가지들을 포함할 수 있다. 축 정렬된 kd-트리에 있어서, 각각의 내부 노드는 다른 노드에 대한 단지 2개의 가지만을 포함할 수 있다. 내부 노드는 하나 또는 두개의 리프 노드(leaf node)에 대한 가지(즉, 포인터)를 포함할 수 있다. 리프 노드는 더 작은 볼륨으로 더 이상 하위 분할(sub-divide)되지 않고 프리미티브에 대한 포인터를 포함하는 노드이다. 내부 노드는 추가로 하위 분할되는 다른 내부 노드에 대한 가지들을 또한 포함할 수 있다. 내부 노드는 어떤 축을 따라서 분할 평면이 작도되고 축을 따르는 어느 지점에서 분할 평면이 작도되는지를 결정하는데 필요한 정보를 또한 포함할 수 있다.
예시적인 경계 볼륨
도 4a 내지 도 4c는 이미지 처리 시스템 및 대응하는 kd-트리에 의해 렌더링되는 2차원 공간을 나타낸 것이다. 간단히 하기 위해, kd-트리의 구축을 설명하는 데 2차원 장면이 사용되지만, kd-트리는 3차원 장면을 나타내기 위해서 또한 사용될 수 있다. 도 4a 내지 도 4c의 2차원 표시에 있어서는 분할 평면 대신에 분할선이 도시되어 있고, 3차원 구조에서 사용되는 경계 볼륨 대신에 경계 영역이 도시되어 있다. 그러나, 당업자라면 이러한 개념은 객체를 포함하는 3차원 장면에도 쉽게 적용할 수 있다는 것을 알 것이다.
도 4a는 모니터(310)에 디스플레이될 최종 화상으로 렌더링되는 프리미티브(410)를 포함하는 2차원 장면(405)을 도시한 것이다. 장면의 전체 볼륨을 나타내는 최대 볼륨은 경계 볼륨 1(BV1)에 의해 둘러싸여 있다. 대응하는 KD-트리에서, 이것은 루트(root) 또는 월드 노드(world node)라고도 알려져 있는 최상위 노드(450)에 의해 표시될 수 있다. 이미지 처리 시스템의 일 실시예에서, 이미지 처리 시스템은 예컨대 경계 볼륨이 3개 이상의 프리미티브를 포함하고 있을 때 경계 볼륨을 더 작은 경계 볼륨으로 계속하여 분할할 수 있다. 앞에서 언급한 바와 같이, 경계 볼륨을 더 작은 경계 볼륨으로 계속하여 분할하는 결정은 많은 인자에 기초하여 행해질 수 있지만, 이 예에서의 설명을 쉽게 하기 위해, 경계 볼륨을 계속하여 분할하는 결정은 프리미티브의 수에만 기초하는 것으로 한다. 도 4a에서 알 수 있는 바와 같이, BV1은 6개의 프리미티브를 포함하고 있고, 따라서 kd-트리 구성 알고리즘은 BV1을 더 작은 경계 볼륨으로 분할할 수 있다.
도 4b는 도 4A에 도시한 것과 동일한 2차원 장면(405)이 도시되어 있다. 그러나, 도 4b에서는 트리 구성 알고리즘이 BV1을 2개의 더 작은 경계 볼륨(BV2, BV3) 으로 분할하였다. BV1의 분할은 x1 지점에서 x축을 따라 분할 평면 SP1(415)을 작도함으로써 달성된다. 이 BV1의 분할은 내부 또는 부모 노드(BV1)(450) 아래에서 BV2 및 BV3에 각각 대응하는 2개의 노드(455, 460)로서 kd-트리에 또한 반영된다. BV1을 나타내는 내부 노드는 예를 들면 BV1 아래의 2개의 노드에 대한 포인터(예를 들면, BV2, BV3), 어떤 축을 따라서 분할 평면이 작도되는지(예를 들면, x축) 및 축을 따른 어느 지점에서 분할 평면이 작도되는지(예를 들면, 지점 x1에서) 등의 정보를 저장하는데, 이 예시에만 국한되는 것은 아니다.
kd-트리 구성 알고리즘은 BV3가 미리 정해진 임계치보다 더 많은 프리미티브(예를 들면, 3개 이상의 프리미티브)를 포함하고 있기 때문에 경계 볼륨 BV3를 계속하여 분할할 수 있다. 그러나, kd-트리 구성 알고리즘은 경계 볼륨 BV2가 임계치와 같거나 더 적은 프리미티브(예를 들면, 단지 2개의 프리미티브(410A))를 포함하고 있기 때문에 경계 볼륨 BV2의 분할을 계속하지 않을 수 있다. BV2와 같이, 더 이상 분할 또는 하위 분할되지 않은 노드는 리프 노드라고 부른다.
도 4c는 도 4b에 도시된 것과 동일한 2개의 2차원 장면(405)을 도시한 것이다. 그러나, 도 4c에서는 kd-트리 구성 알고리즘이 BV3를 2개의 더 작은 경계 볼륨(BV4, BV5)으로 분할하였다. kd-트리 구성 알고리즘은 y1 지점에서 y축을 따르는 분할 평면을 이용하여 BV3를 분할한다. BV3가 2개의 하위 노드로 분할되기 때문에, BV3는 이제 내부 노드라고 부른다. BV3의 분할은 또한 BV4 및 BV5에 각각 대응하는 2개의 리프 노드(465, 470)로서 kd-트리에 반영된다. BV4와 BV5는 그들이 표시하는 볼륨이 더 이상 작은 경계 볼륨으로 나누어지지 않기 때문에 리프 노드이다. 2개의 리프 노드(BV4, BV5)는 kd-트리에서 분할된 경계 볼륨을 나타내는 내부 노드(BV3) 아래에 위치된다.
BV3를 나타내는 내부 노드는 예를 들면 2개의 리프 노드에 대한 포인터(예를 들면, BV4, BV5), 어떤 축을 따라서 분할 평면이 작도되는지(예를 들면, y축) 및 축을 따른 어느 지점에서 분할 평면이 작도되는지(예를 들면, 지점 y1에서) 등의 정보를 저장하는데, 이 예시에 국한되는 것은 아니다.
장면 내에 위치된 모든 경계 볼륨이 경계 볼륨에 포함될 수 있는 미리 정해진 최대수의 프리미티브와 같거나 더 적은 수의 프리미티브를 포함하고 있기 때문에 kd-트리 구성 알고리즘은 이제 경계 볼륨의 분할을 중지한다. 리프 노드는 각각의 리프를 표시하는 경계 볼륨 내에 포함된 프리미티브에 대한 포인터들을 포함할 수 있다. 예를 들면, 리프 노드(BV2)는 프리미티브(410A)에 대한 포인터를 포함할 수 있고, 리프 노드(BV4)는 프리미티브(410B)에 대한 포인터를 포함할 수 있으며, 리프 노드(BV5)는 프리미티브(410C)에 대한 포인터를 포함할 수 있다.
광선 추적 이미지 처리 시스템은 공간 색인(kd-트리)을 순회하기 위해 워크로드 관리자(205)를 사용할 수 있다. kd-트리의 순회는 광선이 하위 노드 내에 포함된 임의의 프리미티브와 교차하는지를 판정하기 위해 취하거나 또는 진행할 kd-트리의 하위 레벨(하위 노드)상에서 노드에 대한 가지의 선택을 포함할 수 있다. 워크로드 관리자(205)는 출사된 광선의 좌표 및 궤도를 이용하여 kd-트리를 순회하거나 또는 여기저기 순항(navigate)할 수 있다. 광선-경계 볼륨 교차 테스트를 실행함으로써, 워크로드 관리자(205)는 kd-트리 구조 내의 노드에 의해 표시된 경계 볼륨의 평면이 광선과 교차하는지를 판정할 수 있다. 만일 광선이 프리미티브만 포함하는 경계 볼륨(즉, 리프 노드)과 교차하면, 워크로드 관리자(205)는 광선 및 관련 정보를 광선-프리미티브 교차 테스트를 위해 벡터 스루풋 엔진(210)에 보낼 수 있다. 광선-프리미티브 교차 테스트는 광선이 경계 볼륨 내의 프리미티브와 교차하는지를 판정하기 위해 실행될 수 있다. 이 방법은 광선이 장면 내의 객체와 교차하는지를 판정하는데 필요한 광선-프리미티브 교차 테스트를, 장면 내에 포함된 각 프리미티브와 광선에 대하여 광선-프리미티브 교차 테스트를 수행하는 것에 비하여 더 적게 한다.
결과적인 kd-트리 구조, 또는 다른 공간 색인 구조는 프로세서 캐시(230)에 저장될 수 있다. kd-트리 및 kd-트리를 포함하는 대응 데이터의 크기는 프로세서 캐시(230)내의 저장을 위해 최적화될 수 있다. 프로세서 캐시(230)내의 kd-트리의 저장은 워크로드 관리자(205)가 이미지 처리 시스템이 광선을 출사할 때마다 메모리로부터 kd-트리를 회수할 필요없이 이미지 처리 시스템이 출사한 광선으로 kd-트 리를 순회하게 할 수 있다.
다중 공간 색인
3차원 장면은 정적 및 동적 객체를 가질 수 있다. 정적 객체는 비교적 긴 시간동안(예를 들면, 수 프레임동안) 이동하거나 형상을 변경하지 않는 객체이다. 예를 들면, 건물은 정적 객체로 생각할 수 있다. 도 5는 3차원 장면(500) 내의 예시적인 건물(505)을 도시한 것이다. 도 5의 건물(505)은 비교적 긴 시간동안 이동하거나 형상을 변경하지 않기 때문에 정적 객체이다.
이와 대조적으로, 동적 객체는 비교적 짧은 시간(예를 들면, 1 프레임 또는 2 프레임의 기간)에 걸쳐 이동하거나 형상을 변경할 수 있다. 자동차는 동적 객체의 일 예이다. 예를 들면, 도 5는 비교적 짧은 시간에 걸쳐 3차원 장면(500) 내에서 수평으로 이동할 수 있는 자동차(510)를 도시하고 있다.
전술한 바와 같이, 이미지 처리 시스템은 공간 색인(예를 들면, kd-트리)를 이용하여 3차원 장면으로부터 2차원 이미지(즉, 프레임)를 렌더링할 수 있다. 장면이 바뀌면(예를 들면, 장면 내의 객체가 이동하거나 형상을 변경하면), 이미지 처리 시스템은 다음 2차원 이미지 또는 프레임을 정확히 렌더링하기 위해 3차원 장면 내의 객체들을 표시하는 공간 색인을 변경하거나 재구축하여야 한다.
만일 3차원 장면 내의 모든 객체들이 프레임 간에서 정적이면(즉, 형상을 변경하거나 이동하지 않으면), 공간 색인은 프레임마다 재구축될 필요가 없다. 그러나, 만일 이미지 처리 시스템이 광선 추적을 위해 하나의 공간 색인만을 사용하고 프레임 내의 일부 객체들이 하나의 프레임과 다음 프레임 사이에서 이동하거나 형 상을 변경하면, 공간 색인은 장면을 구성하는 객체들내의 변화를 정확히 표시하기 위해 재구축될 필요가 있다. 예를 들면, 제1 프레임의 제1 위치에서 제2 프레임의 제2 위치로 동적 객체가 이동할 때, 제1 프레임에서 객체의 제1 위치를 표시하는 공간 색인은 제2 프레임에서 객체의 제2 위치를 정확히 표시하지 않을 수 있다. 그러므로, 공간 색인은 제2 프레임에서 객체의 제2 위치를 정확히 표시하도록 재구축될 필요가 있다.
이미지 처리 시스템에 의한 전체 공간 색인의 재구축은 상당한 양의 처리 사이클을 필요로 하고, 따라서 3차원 장면의 최소 부분만이 변경되는 경우에도 3차원 장면으로부터 2차원 이미지를 렌더링하는데 필요한 전체 시간량을 증가시킨다. 그러나, 본 발명의 실시예에 따르면, 3차원 장면에서 객체의 위치 또는 형상의 변화에 응답하는데 필요한 시간량을 줄이기 위해 2개의 별도의 공간 색인이 구축될 수 있다. 변화에 대한 응답에 필요한 시간량을 줄임으로써, 3차원 장면으로부터 2차원 이미지를 렌더링하는데 필요한 시간량이 또한 감소될 수 있다.
도 6은 본 발명의 실시예에 따라서, 함께 3차원 장면 내의 모든 객체들을 나타낼 수 있는 2개의 별도의 공간 색인을 도시한 것이다. 제1 색인은 예를 들면 3차원 장면 내의 모든 정적 객체를 나타내는 정적 공간 색인(605A)이다. 제2 색인은 예를 들면 본 발명의 일 실시예에 따른 3차원 장면 내의 동적 객체를 나타내는 동적 공간 색인(610A)이다.
설명의 목적으로, 정적 공간 색인에 대응하는 3차원 장면은 도 5의 3차원 장면(500)이다. 그러므로, 정적 공간 색인(605A)은 도 5의 3차원 장면(500) 내의 정 적 객체인 건물(505)을 표시한다. 또한, 동적 공간 색인(610A)은 도 5의 3차원 장면(500) 내의 동적 객체(즉, 자동차(610))에 대응한다.
워크로드 관리자(205)를 이용하여 공간 색인을 순회하는 이미지 처리 시스템은 공간 색인을 처리 소자의 메모리 캐시(예를 들면, 도 2의 메모리 캐시(230))에 저장한다. 메모리 캐시에 공간 색인을 저장하면 워크로드 관리자(205)가 공간 색인에 저장된 데이터에 액세스하는데 필요한 시간을 감소시킴으로써 공간 색인을 통하는 광선의 순회를 촉진할 수 있다. 본 발명의 일 실시예에 따르면, 정적 공간 색인(605A)과 동적 공간 색인(610A)은 메모리 캐시의 별도의 부분에 저장된다. 정적 공간 색인과 동적 공간 색인을 메모리 캐시의 별도의 부분에 저장함으로써, 동적 공간 색인은 정적 공간 색인에 영향을 주지 않고 업데이트될 수 있다.
도 6은 공간 색인들을 메모리 캐시(620)의 별도의 부분에 저장하는 것을 보여주고 있다. 예를 들면, 정적 공간 색인(605A)은 메모리 캐시(620)의 제1 부분(625)에 저장될 수 있다. 동적 공간 색인(610A)은 메모리 캐시(620)의 제2 부분(630)에 저장될 수 있다.
도 7은 본 발명의 일 실시예에 따라서 정적 및 동적 공간 색인을 생성하고 정적 및 동적 공간 색인을 메모리 캐시에 저장하는 방법(700)을 보인 흐름도이다. 방법(700)은 단계 705에서 시작하고, 이 단계에서 이미지 처리 시스템은 3차원 장면 내의 정적 객체를 나타내는 정적 공간 색인을(예를 들면, 도 6의 정적 공간 색인을(605A))을 생성할 수 있다. 예를 들면, 이미지 처리 시스템은 도 4와 관련하여 앞에서 설명한 바와 같은 kd-트리를 구성할 수 있다. 또한, 단계 705에서 이미지 처리 시스템은 3차원 장면 내의 모든 동적 객체를 나타내는 동적 공간 색인을(예를 들면, 도 6의 동적 공간 색인(610A))을 생성할 수 있다. 이미지 처리 시스템은 정적 공간 색인과 동일한 유형의 공간 색인 또는 정적 공간 색인에 비하여 다른 유형의 공간 색인을 구성할 수 있다. 예를 들면, 정적 공간 색인과 동적 공간 색인은 둘 다 kd-트리일 수도 있고, 또는 정적 공간 색인은 kd-트리이고 동적 공간 색인은 bsp-트리일 수 있다.
다음에, 단계 710에서, 이미지 처리 시스템은 정적 공간 색인을 메모리 캐시의 정적 공간 색인 부분에 저장할 수 있다. 예를 들면, 이미지 처리 시스템은 정적 공간 색인을 도 6에 도시된 메모리 캐시(620)의 제1 부분(625)에 저장할 수 있다. 이미지 처리 시스템이 정적 공간 색인의 저장을 완료한 후에, 이미지 처리 시스템은 단계 715로 진행한다. 단계 715에서, 이미지 처리 시스템은 동적 공간 색인을 메모리 캐시의 동적 공간 색인 부분에 저장할 수 있다. 예를 들면, 이미지 처리 시스템은 동적 공간 색인을 도 6에 도시된 메모리 캐시(620)의 제2 부분(630)에 저장할 수 있다.
다음에, 단계 720에서, 이미지 처리 시스템은 렌더링되는 현재 프레임에 대한 광선 추적을 수행할 수 있다. 단계 720에서 워크로드 관리자(205) 또는 워크로드 관리자(2051-N)는 정적 공간 색인(605A) 및 동적 공간 색인(610A)을 이용하여 3차원 장면(500)을 통과하는 광선을 추적할 수 있다. 워크로드 관리자(205)가 어느 한 쪽의 공간 색인 또는 양쪽의 공간 색인의 리프 노드로 광선을 순회시킨 후에, 워크로드 관리자는 광선을 벡터 스루풋 엔진(210)에 보낼 수 있다. 벡터 스루풋 엔진(210)은 광선이 리프 노드에 순회한 것에 대응하는 것으로서 경계 볼륨 내에 포함된 프리미티브와 충돌하는지를 결정할 수 있다.
광선은 정적 공간 색인의 리프 노드에 대응하는 경계 볼륨 내의 프리미티브 또는 동적 공간 색인의 리프 노드에 대응하는 경계 볼륨 내의 프리미티브와 충돌할 수 있다. 만일 충돌이 일어나면, 최초로 교차된 프리미티브를 이용하여 광선이 통과하는 화소의 색을 결정할 것이다.
이미지 처리 시스템은 예를 들면 광선이 발생된 시점(viewpoint)(예를 들면, 도 3에 도시된 시점(315))과 광선이 프리미티브와 교차하는 지점 간의 거리를 계산함으로써 어느 프리미티브가 최초로 교차되었는지를 결정할 수 있다. 최초로 교차된 프리미티브는 광선이 프리미티브와 교차한 지점과 시점 사이에서 최단 거리를 가질 것이다.
이미지 처리 시스템은 3차원 장면으로부터 2차원 이미지(즉, 프레임)를 렌더링하기 위해 충분한 수의 광선이 추적될 때까지 3차원 장면을 통과하는 광선의 추적을 계속할 것이다.
이미지 처리 시스템이 현재 프레임에 대한 광선 추적의 수행을 종료한 후에, 이미지 처리 시스템은 단계 725로 진행한다. 단계 725에서, 이미지 처리 시스템은 메모리 캐시(620)의 동적 부분(630)을 무효화할 수 있다. 메모리 캐시(620)의 동적 부분(630)의 무효화는 이제 쓸모없이 된 동적 공간 색인을 메모리 캐시(620)로부터 제거하기 위해 수행된다. 메모리 캐시의 동적 부분(630)의 무효화는 새로운 동적 공간 색인이 생성되어 이미지 처리 시스템에 의해 다음 프레임을 렌더링하기 위하여 메모리 캐시(620)에 저장될 필요가 있다는 예상에서 수행될 수 있다. 새로운 동적 공간 색인은 예를 들면 렌더링할 다음 프레임내의 동적 객체의 새로운 위치를 반영하기 위해 생성될 필요가 있다.
뒤에서 자세히 설명하는 바와 같이, 캐시 메모리의 동적 부분의 무효화는 분배형 시간 기반 신호와 메모리 디렉토리의 속성을 이용함으로써 달성될 수 있다. 메모리 캐시는 프레임마다 무효화될 수 있다.
다음에, 단계 730에서, 이미지 처리 시스템은 정적 공간 색인을 업데이트할 시간이 되었는지를 판정한다. 이미지 처리 시스템은 예를 들어서 정적 객체라고 생각했던 객체들이 이동하거나 형상을 변경하고 따라서 정적 객체가 아니라 동적 객체라고 생각할 필요가 있는 경우에 정적 공간 색인을 업데이트할 시간이라고 판정할 수 있다. 또한, 예를 들어서 동적 객체이었던 객체들이 더 이상 이동하거나 형상을 변경하지 않아서 이제 정적 객체라고 생각할 수 있는 경우가 정적 공간 색인을 업데이트할 시간이 될 수 있다. 비록 때때로 이미지 처리 시스템이 단계 730에서 정적 공간 색인이 업데이트될 필요가 있다고 판정하더라도, 이러한 판정을 행하는 빈도는 동적 공간 색인을 업데이트할 필요의 빈도보다 더 적다. 예를 들면, 새로운 동적 공간 색인은 프레임마다 생성될 필요가 있을 수 있고, 정적 공간 색인은 60개의 프레임이 지나간 후에만 업데이트될 필요가 있을 수 있다.
정적 공간 색인을 업데이트할 시간이면, 이미지 처리 시스템은 단계 705로 복귀하여 정적 및 동적 공간 색인이 3차원 장면 내에서 객체들의 변화에 대응하도 록 업데이트될 수 있다.
그러나, 만일 정적 공간 색인을 업데이트할 시간이 아니면 이미지 처리 시스템은 단계 735로 진행한다. 단계 735에서, 이미지 처리 시스템은 이미지 처리 시스템에 의해 다음 프레임을 렌더링하기 위해 사용될 수 있는 새로운 동적 공간 색인을 생성한다. 새로운 동적 공간 색인은 3차원 장면 내에서 동적 객체의 새로운 위치 또는 형상을 반영할 수 있다.
예를 들면, 도 8은 도 5에 도시된 것과 같은 3차원 장면(500)을 도시한 것이다. 그러나, 3차원 장면(500) 내의 동적 객체(즉, 자동차(510))는 3차원 장면(500)내의 제1 위치(515A)로부터 새로운 위치(515B)로 이동하였다. 그러나, 정적 객체(즉, 건물(505))는 동일한 위치에서 유지되고 있다. 결국, 새로운 3차원 장면(500)을 적절히 표시하기 위해, 본 발명의 실시예에 따라 이미지 처리 시스템에 의해 새로운 동적 공간 색인이 생성된다. 새로운 동적 공간 색인은 3차원 장면 내의 동적 객체(즉, 자동차(510))의 이동을 반영한다. 이와 대조적으로, 본 발명의 실시예에 따르면, 정적 객체는 3차원 장면(500) 내에서 위치를 변경하지 않았기 때문에, 도 5에 있는 정적 객체를 표시하도록 생성된 정적 공간 색인은 도 8에 있는 정적 객체를 올바르게 표시한다.
그러므로, 3차원 장면 내에서 동적 객체의 이동에 응답하여 전체 3차원 장면 내의 모든 객체(즉, 정적 및 동적 객체)를 표시하는 단일 공간 색인을 재구축하는 대신에, 동적 공간 색인만이 3차원 장면 내의 객체의 이동에 대응하도록 재구축되어야 한다. 3차원 장면 내에서 객체들의 일부만을 표시하는 공간 색인(즉, 동적 공 간 색인)은 모든 객체들을 표시하는 공간 색인(즉, 동적 및 정적 공간 색인)을 재구축하는 것에 비하여 더 적은 시간을 요구한다.
이미지 처리 시스템이 새로운 동적 공간 색인(610B)을 생성한 후에, 이미지 처리 시스템은 단계 715로 복귀하여 이미지 처리 시스템이 새로운 동적 공간 색인(610B)을 메모리 캐시(620)의 동적 공간 색인 부분(630)에 저장한다.
도 9는 도 5에 도시된 동적 및 정적 공간 색인을 저장하기 위해 사용된 메모리 캐시(620)를 도시한 것이다. 그러나, 이미지 처리 시스템은 3차원 장면 내의 객체의 과거 위치 또는 형상에 대응하는 동적 공간 색인을 새로운 동적 공간 색인으로 교체시켰다. 예를 들면, 새로운 동적 공간 색인(610B)은 자동차(510)의 새로운 위치(515B)를 표시한다. 새로운 동적 공간 색인(610B)은 자동차(510)의 최초 위치(515A)를 표시한 동적 공간 색인(610A)과 약간만 다를 수 있다. 도 9에 도시된 바와 같이, 과거 동적 공간 색인과 새로운 동적 공간 색인 간의 차이는 동적 공간 색인(610B)의 일부분(615B)이다. 이 동적 공간 색인의 부분(615B)은 자동차(510B)의 위치가 제1 위치(515A)로부터 제2 위치(515B)로 변경된 것에 대응한다.
도 9에는 정적 공간 색인(605A)이 또한 도시되어 있다. 정적 공간 색인(605A)은 3차원 장면(500)내에서 정적 객체(즉, 건물(505))의 위치 또는 형상의 변경이 없기 때문에 도 6과 도 9 사이에서 차이가 없다.
데이터 의존 만기를 가진 동적 캐시 무효화
본 발명의 실시예에 따르면, 전술한 바와 같이, 이미지 처리 시스템의 메모리 캐시는 동적 공간 색인과 정적 공간 색인을 둘 다 포함할 수 있다. 또한, 메모 리 캐시는 동적 공간 색인이 저장되는 동적 부분과 정적 공간 색인이 저장되는 정적 부분을 가질 수 있다. 일부 환경에서는 메모리 캐시의 정적 부분을 유효로 유지하면서 동적 공간 색인을 저장하는 메모리 부분을 주기적으로 무효화될 수 있도록 동적 공간 색인과 정적 공간 색인을 별도로 저장하는 것이 바람직할 수 있다.
공간 색인의 동적 부분의 주기적인 무효화는 3차원 장면 내의 객체들의 새로운 위치(예를 들면, 이동 또는 불일치에 기인함)에 대응하는 새로운 동적 공간 색인이 이미지 처리 시스템에 의해 사용될 것이라는 예상하에 수행될 수 있다. 결국, 새로운 동적 공간 색인이 메모리 캐시에 저장된다. 메모리 캐시의 동적 부분만을 주기적으로 무효화함으로써, 정적 공간 색인은 메모리 캐시에 유지되고 구 동적 공간 색인(예를 들면, 3차원 장면내에서 객체들의 과거 위치를 표시하는 것)이 효과적으로 폐기될 수 있다. 그 후에, 구 동적 공간 색인이 저장되었던 장소에 새로운 동적 공간 색인이 저장될 수 있다.
본 발명의 일 실시예에 따르면, 메모리 캐시의 동적 부분은 분배형 시간 기반 신호 및 메모리 디렉토리 내의 엔트리와 관련된 비트 속성의 조합을 이용하여 무효화될 수 있다. 분배형 시간 기반 신호는 이미지 처리 시스템내에 위치된 처리 소자들에 분배됨으로써 다중 코어 처리 소자 네트워크에 걸쳐서 동적 캐시 부분의 동시적이고 주기적인 무효화를 가능하게 한다.
분배형 시간 기반 신호를 추가적인 속성 비트와 함께 이용하여 메모리 캐시의 부분들을 무효화하면 수백만은 아니더라도 수천의 캐시 무효화 명령을 프레임마다 수행할 필요를 제거한다. 이러한 무효화 명령을 각 프레임마다 수행할 필요성의 제거는 처리 소자(들)이 다른 이미지 처리 관련 작업을 수행할 수 있게 하고, 따라서 이미지 처리 시스템의 성능을 개선할 수 있다.
도 10은 본 발명의 일 실시예에 따른, 분배형 시간 기반 신호를 발생할 수 있는 프레임 리프레시 타이머 회로(1010)를 구비한 다중 코어 처리 소자 네트워크(1000)를 도시한 것이다. 다중 코어 처리 소자 네트워크(1000)는 도 2와 관련하여 위에서 설명한 네트워크(200)와 유사하다. 그러나, 도 10에 도시된 다중 코어 처리 소자 네트워크(1000)는 프레임 리프레시 타이머 회로(1010)를 또한 포함한다. 본 발명의 일 실시예에 따르면, 프레임 리프레시 타이머 회로(1010)는 다중 코어 처리 소자 네트워크(1000)와 동일한 칩위에 위치될 수 있다. 그러나, 본 발명의 다른 실시예에 따르면, 프레임 리프레시 타이머 회로(1010)는 다중 코어 처리 소자 네트워크(1000)와 다른 칩위에 위치될 수 있다.
프레임 리프레시 타이머 회로(1010)는 본 발명의 일 실시예에 따라서 분배형 시간 기반 신호를 발생하는 회로를 내포할 수 있다. 분배형 시간 기반 신호는 다중 코어 처리 소자 네트워크(1000)의 다중 코어 처리 소자(2201-N)들에게 분배되는 전기 펄스일 수 있다. 프레임 리프레시 타이머 회로(1010) 내의 회로는 주기적인 전기 펄스를 발생하는 임의의 적당한 회로일 수 있다. 예를 들면, 상기 회로는 클럭 발진기 및 이 클럭 발진기에 게이트가 전기적으로 결합된 트랜지스터를 포함하고, 상기 트랜지스터는 클럭 발진기가 트랜지스터의 게이트에 전압을 인가할 때 그 소스와 드레인 사이에 전류를 통과시킨다. 발생된 펄스는 프레임 리프레시 타이머 회 로(1010)와 다중 코어 처리 소자(2201-N) 간의 임의의 적당한 전기 접속(예를 들면, 구리선, 트레이스 등)을 통해 분배된다.
본 발명의 일 실시예에 따르면, 분배형 시간 기반 신호의 주기는 이미지 처리 시스템의 프레임 리프레시 빈도에 기초하여 결정될 수 있다. 예를 들면, 이미지 처리 시스템은 초당 60회로 프레임을 렌더링 또는 리프레시할 수 있다. 이미지 처리 시스템이 새로운 프레임을 리프레시하기 전에, 3차원 장면 내의 객체의 새로운 위치를 표시하기 위해 새로운 동적 공간 색인이 생성될 수 있다. 새로운 동적 공간 색인은 메모리 캐시에 저장될 필요가 있다. 그러나, 구 동적 공간 색인(즉, 이전 프레임을 렌더링하기 위해 사용된 것)은 아직 메모리 캐시에 저장되어 있을 수 있다. 이미지 처리 시스템이 새로운 프레임을 렌더링할 때 객체들의 구 위치를 사용하지 않도록 구 동적 공간 색인은 무효화될 필요가 있다. 그러므로, 이미지 처리 시스템이 새로운 동적 공간 색인을 생성할 때마다(예를 들면, 초당 60회) 구 동적 공간 색인이 무효화될 필요가 있다(예를 들면, 초당 60회).
결국, 본 발명의 일 실시예에 따르면, 분배형 시간 기반 신호 주기는 이미지 처리 시스템에 의해 필요한 바에 따라 메모리 캐시의 동적 공간 색인 부분을 무효화시키기 위해 1/60 초로 될 수 있다.
가상 어드레스 변환을 사용하는 이미지 처리 시스템은 이미지 처리 시스템에 의해 사용된 유효 어드레스를 메모리 위치에 대응하는 실제 어드레스로 변환/맵핑하기 위해 메모리 디렉토리를 사용할 수 있다. 도 11은 유효 어드레스를 메모리 캐 시(620)내의 메모리 위치에 대응하는 실제 어드레스로 맵핑하기 위해 사용될 수 있는 메모리 디렉토리(1105)를 도시한 것이다. 본 발명의 일 실시예에 따르면, 도 11에 도시된 바와 같이, 분배형 시간 기반 신호는 메모리 디렉토리(1105) 내의 모든 엔트리에 결합된다. 분배형 시간 기반 신호는 메모리 캐시의 부분들을 무효화하기 위해 메모리 디렉토리와 함께 사용된다.
전술한 바와 같이, 메모리 캐시(620)는 정적 공간 색인 및 동적 공간 색인에 관한 데이터를 각각 저장하는 정적 공간 색인 부분(625)과 동적 공간 색인 부분(630)을 갖는다. 메모리 캐시(620)의 동적 공간 색인 부분(630) 내의 데이터에 대한 액세스를 제공하기 위해, 메모리 디렉토리 엔트리가 제공될 수 있다. 메모리 디렉토리 엔트리는 메모리 캐시(620)의 동적 공간 색인 부분(630)의 유효 어드레스를 메모리 캐시(620)의 동적 공간 색인 부분(630)의 실제 어드레스로 맵핑할 수 있다. 예를 들면, 메모리 디렉토리 엔트리(1115)는 메모리 캐시(620)의 동적 공간 색인 부분(630)의 유효 어드레스를 메모리 캐시(620)의 동적 공간 색인 부분(630)의 실제 어드레스로 맵핑한다.
어드레스 변환 정보 외에도, 메모리 디렉토리(1105) 내의 메모리 디렉토리 엔트리는 속성 비트(1120)를 포함할 수 있다. 속성 비트(1120)는 메모리 캐시 내의 데이터에 관한 속성을 정의한다. 본 발명의 일 실시예에 따르면, 속성 비트는 메모리 디렉토리 내의 기존 속성에 추가될 수 있다. 새로운 추가의 속성 비트는 분배형 시간 기반 신호가 메모리 디렉토리 엔트리(1115)에 의해 수신된 다음에 메모리 디렉토리 엔트리(1115)가 무효로 될 것인지를 표시할 수 있다. 추가의 속성 비트는 분배형 시간 기반 신호 비트상의 무효화 메모리 디렉토리 엔트리(inv_on_dbs)라고 알려져 있다. 또한, 본 발명의 일 실시예에 따르면, 메모리 디렉토리 엔트리(1115)는 메모리 디렉토리 엔트리(1115)가 분배형 시간 기반 신호에 의해 액세스되었는지를 표시하는 추가의 속성 비트(acc_by_dtbs)를 또한 포함할 수 있다.
inv_on_dtbs 비트와 acc_by_dtbs 비트를 비교하여 메모리 디렉토리 엔트리로부터 맵핑된 캐시 내의 메모리 위치가 유효인지 아닌지에 관한 표시를 제공할 수 있다. 예를 들면, 도 11에 도시된 메모리 디렉토리 엔트리(1115)는 acc_by_dtbs 비트와 inv_on_dtbs 비트를 둘 다 갖는다. 도 11에 도시된 바와 같이, 메모리 디렉토리 엔트리(1115)는 어서트(assert)된 inv_on_dtbs 비트(예를 들면, 논리 '1')를 갖는다. 이것은 이미지 처리 시스템이 분배형 시간 기반 신호의 수신시에 무효로 된 메모리 디렉토리 엔트리(1115) 내에 포함된 유효 어드레스에 대응하는 메모리 캐시 내에 저장된 데이터(예를 들면, 동적 공간 색인)를 원한다는 것을 표시한다.
또한, 도 11에 도시된 바와 같이, 메모리 디렉토리 엔트리(1115)는 어서트된 acc_by_dtbs 비트(예를 들면, 논리 '1')를 갖는다. 이것은 메모리 디렉토리 엔트리(1115)가 프레임 리프레시 타이머 회로(1010)로부터 분배형 시간 기반 신호(즉, 펄스)를 수신하였음을 표시한다. 결국, 다음 번에 처리 소자가 메모리 캐시(620)의 동적 공간 색인 부분(630) 내의 데이터에 액세스(즉, 메모리 캐시(620)의 동적 공간 색인 부분에 대응하는 메모리 디렉토리 엔트리(1115)에 의해 지정된 범위 내의 유효 어드레스를 변환시키려고 시도)할 때에, acc_by_dtbs 비트와 inv_on_dtbs 비트의 검사에 의해 메모리 디렉토리 엔트리가 무효이고 따라서 캐시 부적중을 일으 킬 것임을 표시할 수 있다.
캐시 부적중은 처리 소자가 메모리(예를 들면, 시스템 메모리)로부터 유효 데이터를 가져와서 그 유효 데이터를 메모리 캐시(1110)에 두게 할 수 있다. 메모리로부터 가져온 데이터는 예를 들면 렌더링될 다음 프레임에서 이미지 처리 시스템에 의해 생성된 새로운 동적 공간 색인일 수 있다.
그러므로, 특정 메모리 디렉토리 엔트리에 대해 inv_on_dtbs 비트를 설정시킴으로써, 이미지 처리 시스템은 주기적으로 무효화되어야 하는 메모리 캐시의 부분들을 지정할 수 있다. 또한, 무효화 빈도는 이미지 처리 시스템의 프레임 리프레시 빈도로 조정된(설정된) 분배형 시간 기반 신호의 빈도에 의해 결정된다.
또한, 분배형 시간 기반 신호는 메모리 디렉토리와 메모리 캐시를 각각 갖는 복수의 다중 코어 처리 소자(도 10에 도시된 각각의 다중 코어 처리 소자(2201-N))에 분배될 수 있다. 다중 코어 처리 소자 내의 각 메모리 디렉토리는 캐시의 특정 부분(예를 들면, 동적 공간 색인 부분(630))이 분배형 시간 기반 신호에 의한 다음 액세스시에 무효로 됨을 표시하는 속성 비트를 가질 수 있다. 각 메모리 캐시(230)의 부분들을 무효화함으로써, 복수의 다중 코어 처리 소자들 간의 메모리 일관성이 달성될 수 있다.
예를 들면, 각각의 다중 코어 처리 소자는 3차원 장면으로부터 단일 프레임을 렌더링하는 것과 관련된 작업을 수행할 수 있다. 또한, 다중 코어 처리 소자(2201-N)의 각 메모리 캐시(230)는 동일한 동적 공간 색인의 복사본을 포함할 수 있다. 이미지 처리 시스템에 의해 프레임이 렌더링된 후, 동적 공간 색인에 대응하는 메모리 디렉토리 엔트리는 분배형 시간 기반 신호를 이용하여 각 메모리 캐시(230)에서 동시에 무효화될 수 있다. 그 다음에, 동적 공간 색인을 포함하는 임의의 메모리 캐시(230)의 부분을 액세스하기 위한 임의의 미래의 시도가 캐시 부적중을 일으켜서 처리 소자(예를 들면, 워크로드 관리자(2051-N))가 메모리(예를 들면, 시스템 메모리)로부터 유효 데이터를 가져올 필요가 있다.
(예를 들면 플래시 무효화를 통해) 전체 메모리 캐시를 무효화하는 것에 대비되어 일부 메모리 캐시를 무효화하는 능력은 이미지 처리 시스템이 프레임들 사이에서 캐시 내의 데이터(예를 들면, 정적 공간 색인)를 유지하면서 캐시의 다른 부분(예를 들면, 동적 공간 색인)을 무효화할 수 있게 한다.
어드레스 변환을 제공하는 메모리 디렉토리(1105) 외에, 캐시 디렉토리가 메모리 캐시(620)와 함께 사용되어 실제 어드레스를 메모리 캐시(620) 내의 엔트리로 맵핑할 수 있다. 만일 캐시 엔트리가 메모리 캐시(620) 내의 캐시 엔트리를 무효화시키지 않고 메모리 디렉토리(1105) 내에서 무효로되면, 구 데이터가 메모리 캐시(620)에 잔류하여 나중에 이미지 처리 시스템에 의해 액세스될 가능성이 있다. 구 데이터가 주 메모리로부터의 데이터(예를 들면, 새로운 동적 공간 색인)로 교체되지 않고 이미지 처리 시스템이 메모리 캐시(620) 내 구 데이터의 어드레스에 대한 변환을 제공하는 메모리 디렉토리 엔트리의 acc_by_dtbs 비트를 재설정하면 구 데이터는 액세스될 수 있다. 그러나, 본 발명의 일 실시에에 따르면, 분배형 시간 기반 신호에 응답하여 메모리 캐시(620) 내의 구 데이터를 무효화하기 위해 스크러버(scrubber) 기능을 이용할 수 있다.
예를 들면, 도 12는 캐시 디렉토리(1205)를 도시하고 있다. 캐시 디렉토리(1205) 내의 각 엔트리는 캐시 디렉토리 엔트리에 대응하는 메모리 캐시(620) 내의 데이터가 유효인지 또는 무효인지를 표시하는 유효 비트를 포함할 수 있다. 각각의 캐시 디렉토리(620) 엔트리는 메모리 캐시(620)가 실제 어드레스에 대응하는 엔트리(또는 엔트리들)를 포함하는지 판정하기 위해 사용되는 태그 비트 및 설정 비트를 또한 포함할 수 있다.
본 발명의 일 실시에에 따르면, 스크러버 기능은 시간 기반 무효화 신호를 수신한 때 기동될 수 있다. 기동되면, 스크러버 기능은 어서트된 inv_on_dtbs 비트를 가진 엔트리가 있는지 메모리 디렉토리(1105)를 검색한다. 각각의 메모리 디렉토리 엔트리에 대해서, 스크러버 기능은 어느 엔트리가 어서트된 inv_on_dtbs 비트를 갖는지를 찾아내고, 스크러버 기능은 메모리 디렉토리(1105) 내의 실제 어드레스와 일치하는 엔트리를 메모리 캐시(620)에서 검색하여 캐시 디렉토리(1205) 내의 대응하는 유효 비트를 예를 들면 '0'으로 설정함으로써 대응하는 메모리 캐시 엔트리(또는 엔트리들)을 무효화할 수 있다. 결국, 스크러버 기능에 의해 무효로 된 캐시 엔트리에 대한 임의의 액세스 시도는 캐시 부적중을 일으킬 것이다. 따라서, 메모리 디렉토리 엔트리가 분배형 시간 기반 신호에 의해 무효로 된 메모리 캐시(620) 내의 구 데이터를 무효화함으로써, 스크러버 기능은 메모리 캐시(620) 내의 구 데이터가 앞으로 액세스되지 않게 보장할 수 있다.
지금까지 동적 공간 색인을 포함한 메모리 캐시의 부분과 관련하여 메모리 캐시를 무효화하는 방법 및 장치에 대하여 여기에서 설명하였지만, 본 발명은 동적 공간 색인만을 포함하는 캐시 메모리 영역을 무효화하는 것으로 제한되는 것이 아님을 이해하여야 한다. 그 대신, 이미지 처리와 관련이 있거나 없거나 간에 임의 유형의 데이터를 포함하는 메모리 캐시의 임의의 부분이 여기에서 설명한 방법 및 장치에 의해 무효로 될 수 있다.
결론
본 발명의 실시예에 따르면, 분배형 시간 기반 신호는 메모리 캐시 내에 위치된 데이터에 대한 어드레스 변환을 제공하는 메모리 디렉토리에 결합될 수 있다. 메모리 디렉토리는 메모리 엔트리가 분배형 시간 기반 신호에 의해 액세스되었는지 아닌지를 표시하는 속성 비트를 가질 수 있다. 또한, 메모리 디렉토리는, 메모리 엔트리에 대한 분배형 시간 기반 신호의 액세스 이후에 메모리 디렉토리 엔트리가 무효라고 간주되어야 하는지 아닌지를 표시하는 속성 비트를 가질 수 있다. 메모리 디렉토리 엔트리가 분배형 시간 기반 신호에 의해 액세스되고 메모리 디렉토리 엔트리가 시간 기반 신호에 의한 액세스 후 무효로 간주되어야 하면, 메모리 디렉토리 엔트리를 이용하여 시도된 임의의 어드레스 변환은 캐시 부적중을 야기할 것이다. 캐시 부적중은 메모리로부터 유효 데이터의 회수를 개시시킬 수 있다.
전술한 내용은 본 발명의 실시예에 관한 것들이지만, 이하의 특허 청구범위에 의해 정의되는 본 발명의 기본 범위를 벗어나지 않고 본 발명의 다른 실시예 및 추가의 실시예를 구성할 수 있다.
도 1은 본 발명의 일 실시예에 따른 다중 코어 처리 소자를 도시하는 도면.
도 2 및 도 10은 본 발명의 실시예에 따른 다중 코어 처리 소자 네트워크를 도시하는 도면.
도 3은 본 발명의 일 실시예에 따른 이미지 처리 시스템에 의해 렌더링되는 예시적인 3차원 장면을 도시하는 도면.
도 4a 내지 도 4c는 본 발명의 일 실시예에 따른 이미지 처리 시스템에 의해 렌더링되는 2차원 공간 및 이미지 처리 시스템에 의해 생성된 대응하는 공간 색인을 도시하는 도면.
도 5 및 도 8은 본 발명의 일 실시예에 따른 이미지 처리 시스템에 의해 렌더링되는 3차원 장면을 도시하는 도면.
도 6 및 도 9는 본 발명의 일 실시예에 따른 정적 공간 색인 및 동적 공간 색인을 포함한 메모리 캐시를 도시하는 도면.
도 7은 본 발명의 일 실시예에 따라 공간 색인을 생성하고 메모리 캐시내의 공간 색인의 저장을 관리하는 방법을 도시하는 흐름도.
도 11은 본 발명의 일 실시예에 따른 메모리 디렉토리 및 메모리 캐시를 도시하는 도면.
*도면의 주요 부분에 대한 부호의 설명*
100: 다중 코어 처리 소자
105: 기본 스루풋 엔진
110: 다중 코어 처리 소자 캐시
115: 인박스
205: 워크로드 관리자
210: 벡터 스루풋 엔진
305: 3차원 장면
310: 모니터
315: 관찰자
320: 객체
325: 광원
330: 그리드
335: 화소
340: 광선
410: 프리미티브
415: 분할 평면

Claims (10)

  1. 메모리 캐시내의 데이터를 무효화하는 방법에 있어서,
    상기 메모리 캐시의 제1 부분에 대응하는 제1 메모리 디렉토리 엔트리 및 상기 메모리 캐시의 제2 부분에 대응하는 제2 메모리 디렉토리 엔트리 - 상기 메모리 디렉토리 엔트리들은 상기 메모리 캐시내의 데이터에 대한 유효 어드레스 대 실제 어드레스 변환을 제공함 - 를 생성하는 단계와;
    분배형 시간 기반 신호의 수신시 상기 제1 메모리 디렉토리 엔트리가 무효임을 표시하도록 상기 제1 메모리 디렉토리 엔트리내의 제1 비트를 설정하는 단계와;
    상기 분배형 시간 기반 신호를 발생하는 단계와;
    상기 분배형 시간 기반 신호에 응답하여 상기 제1 및 제2 메모리 디렉토리 엔트리들의 제2 비트를 설정하는 단계와;
    상기 메모리 캐시의 상기 제1 부분에 대한 메모리 어드레스 변환 요청을 수신하는 단계와;
    상기 제1 메모리 디렉토리 엔트리내의 상기 제1 비트 및 제2 비트를 검사하여 상기 제1 메모리 디렉토리 엔트리가 무효인지를 판정하는 단계를 포함하는 데이터 무효화 방법.
  2. 제1항에 있어서, 상기 분배형 시간 기반 신호에 응답하여 상기 메모리 캐시의 상기 제1 부분을 무효화하는 단계와;
    상기 제1 메모리 디렉토리 엔트리에 대응하는 제1 메모리 위치내의 데이터를 업데이트하는 단계와;
    상기 제1 및 제2 메모리 디렉토리 엔트리들의 상기 제2 비트를 소거하는 단계와;
    상기 메모리 캐시의 상기 제1 부분에 대한 메모리 어드레스 변환 요청을 수신하는 단계와;
    상기 제1 메모리 디렉토리 엔트리의 상기 제1 비트 및 제2 비트를 검사하여 상기 제1 메모리 디렉토리 엔트리가 유효인지를 판정하는 단계를 더 포함하는 데이터 무효화 방법.
  3. 제2항에 있어서, 상기 메모리 캐시의 상기 제1 부분이 무효인지 판정하는 단계와;
    상기 제1 메모리 위치로부터 상기 데이터를 회수하는 단계와;
    상기 데이터를 상기 메모리 캐시의 상기 제1 부분에 배치하는 단계를 더 포함하는 데이터 무효화 방법.
  4. 제1항에 있어서, 상기 메모리 캐시의 상기 제2 부분에 대한 메모리 어드레스 변환 요청을 수신하는 단계와;
    상기 제2 메모리 엔트리의 상기 제1 비트 및 상기 제2 메모리 엔트리의 상기 제2 비트를 검사하여 상기 제2 메모리 디렉토리 엔트리가 유효인지를 판정하는 단 계를 더 포함하고, 상기 제2 메모리 엔트리의 상기 제1 비트는, 상기 분배형 시간 기반 신호의 수신시 상기 제2 메모리 엔트리가 유효로 간주되어야 하는지를 표시하는 것인 데이터 무효화 방법.
  5. 제1항에 있어서, 상기 분배형 시간 기반 신호는 이미지 처리 시스템의 프레임 리프레시 빈도에 따라 주기적으로 발생되는 것인 데이터 무효화 방법.
  6. 제1항에 있어서, 분배형 시간 기반 신호는 적어도 하나의 메모리 캐시를 각각 갖는 복수의 다중 코어 처리 소자에 분배되는 것인 데이터 무효화 방법.
  7. 제1항에 있어서, 상기 메모리 캐시의 상기 제1 부분내에 동적 공간 색인이 저장되고 상기 메모리 캐시의 상기 제2 부분에 정적 공간 색인이 저장되는 데이터 무효화 방법.
  8. 실행되었을 때 소정의 연산을 수행하는 프로그램을 포함하는 컴퓨터 판독가능 매체에 있어서, 상기 소정의 연산은,
    메모리 캐시의 제1 부분에 대응하는 제1 메모리 디렉토리 엔트리 및 상기 메모리 캐시의 제2 부분에 대응하는 제2 메모리 디렉토리 엔트리 - 상기 메모리 디렉토리 엔트리들은 상기 메모리 캐시내의 데이터에 대한 유효 어드레스 대 실제 어드레스 변환을 제공함 - 를 생성하는 동작과;
    분배형 시간 기반 신호의 수신시 상기 제1 메모리 디렉토리 엔트리가 무효임을 표시하도록 상기 제1 메모리 디렉토리 엔트리내의 제1 비트를 설정하는 동작과;
    상기 분배형 시간 기반 신호를 발생하는 동작과;
    상기 분배형 시간 기반 신호에 응답하여 상기 제1 및 제2 메모리 디렉토리 엔트리들의 제2 비트를 설정하는 동작과;
    상기 메모리 캐시의 상기 제1 부분에 대한 메모리 어드레스 변환 요청을 수신하는 동작과;
    상기 제1 메모리 디렉토리 엔트리내의 상기 제1 비트 및 제2 비트를 검사하여 상기 제1 메모리 디렉토리 엔트리가 무효인지를 판정하는 동작을 포함하는 것인 컴퓨터 판독가능 매체.
  9. 이미지 처리 시스템에 있어서,
    제1 처리 소자에 결합되고 주기적인 분배형 시간 기반 신호를 발생하도록 구성된 프레임 리프레시 타이머 회로와;
    적어도 제1 부분 및 제2 부분이 있는 메모리 캐시와;
    상기 메모리 캐시의 상기 제1 부분 내의 데이터에 대한 유효 어드레스 대 실제 어드레스 변환을 제공하는 제1 디렉토리 엔트리 및 상기 메모리 캐시의 상기 제2 부분 내의 데이터에 대한 유효 어드레스 대 실제 어드레스 변환을 제공하는 제2 디렉토리 엔트리를 적어도 포함하는 메모리 디렉토리를 포함하고,
    상기 처리 소자는, 상기 제1 디렉토리 엔트리내의 분배형 시간 기반 신호 비 트상에서 무효 메모리 엔트리를 설정하고; 상기 분배형 시간 기반 신호의 수신시 적어도 상기 제1 디렉토리 엔트리 및 상기 제2 디렉토리 엔트리내에 수신된 분배형 시간 기반 신호 비트를 설정하고; 상기 메모리 캐시의 상기 제1 부분에 위치된 데이터에 대한 메모리 어드레스 변환 요청을 수신하고; 상기 분배형 시간 기반 신호 비트상의 무효 메모리 엔트리를 상기 수신된 분배형 시간 기반 신호 비트와 비교하여 상기 제1 메모리 디렉토리 엔트리가 무효인지를 판정하도록 구성된 것인 이미지 처리 시스템.
  10. 제9항에 있어서, 상기 프레임 리프레시 타이머 회로는 제2 처리 소자에 더 결합된 것인 이미지 처리 시스템.
KR1020070112076A 2006-11-13 2007-11-05 데이터 의존 만기가 있는 동적 데이터 캐시 무효화 방법 및이미지 처리 시스템 KR100961736B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/559,090 US7836258B2 (en) 2006-11-13 2006-11-13 Dynamic data cache invalidate with data dependent expiration
US11/559090 2006-11-13

Publications (2)

Publication Number Publication Date
KR20080043227A true KR20080043227A (ko) 2008-05-16
KR100961736B1 KR100961736B1 (ko) 2010-06-10

Family

ID=39370540

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070112076A KR100961736B1 (ko) 2006-11-13 2007-11-05 데이터 의존 만기가 있는 동적 데이터 캐시 무효화 방법 및이미지 처리 시스템

Country Status (4)

Country Link
US (1) US7836258B2 (ko)
JP (1) JP4954005B2 (ko)
KR (1) KR100961736B1 (ko)
CN (1) CN101183339B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150114767A (ko) * 2014-04-02 2015-10-13 삼성전자주식회사 멀티 프레임들의 동일한 영역을 연속으로 렌더링하는 방법 및 장치
KR20180121926A (ko) 2016-03-28 2018-11-09 미츠비시 쇼지 푸드테크 가부시키가이샤 쌀밥의 품질개량용 물질 및 품질개량처리를 실시한 쌀밥의 제조방법

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0810205D0 (en) * 2008-06-04 2008-07-09 Advanced Risc Mach Ltd Graphics processing systems
US9483864B2 (en) * 2008-12-05 2016-11-01 International Business Machines Corporation System and method for photorealistic imaging using ambient occlusion
US9270783B2 (en) * 2008-12-06 2016-02-23 International Business Machines Corporation System and method for photorealistic imaging workload distribution
US8327228B2 (en) * 2009-09-30 2012-12-04 Intel Corporation Home agent data and memory management
JP4920775B2 (ja) * 2010-07-08 2012-04-18 株式会社スクウェア・エニックス 画像生成装置及び画像生成プログラム
JP5955378B2 (ja) * 2011-04-12 2016-07-20 トムソン ライセンシングThomson Licensing エンコード方法及びデコード方法
US8645752B2 (en) 2011-11-08 2014-02-04 Micron Technology, Inc. Apparatuses and methods for operating a memory device
GB2521227B (en) * 2013-12-16 2020-11-25 Advanced Risc Mach Ltd Invalidation of index items for a temporary data store
JP6274962B2 (ja) * 2014-04-25 2018-02-07 株式会社スクウェア・エニックス 情報処理装置、制御方法、プログラム及び記録媒体
JP6081672B2 (ja) * 2014-07-21 2017-02-15 ヴィア アライアンス セミコンダクター カンパニー リミテッド 多数の異なるアドレス空間をサポートするプロセッサにおける効率的なアドレス変換キャッシング
GB2532495B (en) 2014-11-21 2018-05-02 Advanced Risc Mach Ltd Graphics processing systems
US10095431B2 (en) 2015-06-18 2018-10-09 John Edward Benkert Device controller and method of enforcing time-based sector level security
US10147370B2 (en) * 2015-10-29 2018-12-04 Nvidia Corporation Variable refresh rate gamma correction
US10353895B2 (en) * 2015-11-24 2019-07-16 Sap Se Atomic visibility switch for transactional cache invalidation
US11468053B2 (en) * 2015-12-30 2022-10-11 Dropbox, Inc. Servicing queries of a hybrid event index
US10262721B2 (en) * 2016-03-10 2019-04-16 Micron Technology, Inc. Apparatuses and methods for cache invalidate
US10915456B2 (en) 2019-05-21 2021-02-09 International Business Machines Corporation Address translation cache invalidation in a microprocessor
US11269784B1 (en) * 2019-06-27 2022-03-08 Amazon Technologies, Inc. System and methods for efficient caching in a distributed environment

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0711793B2 (ja) * 1989-07-13 1995-02-08 株式会社東芝 マイクロプロセッサ
JPH06102857A (ja) * 1992-09-18 1994-04-15 Daikin Ind Ltd フレームバッファアクセス装置
US5604882A (en) * 1993-08-27 1997-02-18 International Business Machines Corporation System and method for empty notification from peer cache units to global storage control unit in a multiprocessor data processing system
US5995107A (en) * 1996-08-02 1999-11-30 Autodesk, Inc. Caching in a three dimensional modeling and animation system
US6115794A (en) * 1997-04-14 2000-09-05 International Business Machines Corporation Method and system of providing a pseudo-precise inclusivity scheme in a sectored cache memory for maintaining cache coherency within a data-processing system
US5914730A (en) 1997-09-09 1999-06-22 Compaq Computer Corp. System and method for invalidating and updating individual GART table entries for accelerated graphics port transaction requests
JP3889195B2 (ja) * 1999-02-03 2007-03-07 株式会社東芝 画像処理装置、画像処理システムおよび画像処理方法
US6438671B1 (en) * 1999-07-01 2002-08-20 International Business Machines Corporation Generating partition corresponding real address in partitioned mode supporting system
JP4144507B2 (ja) * 2003-10-30 2008-09-03 ソニー株式会社 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
US7469318B2 (en) * 2005-02-10 2008-12-23 International Business Machines Corporation System bus structure for large L2 cache array topology with different latency domains

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150114767A (ko) * 2014-04-02 2015-10-13 삼성전자주식회사 멀티 프레임들의 동일한 영역을 연속으로 렌더링하는 방법 및 장치
KR20180121926A (ko) 2016-03-28 2018-11-09 미츠비시 쇼지 푸드테크 가부시키가이샤 쌀밥의 품질개량용 물질 및 품질개량처리를 실시한 쌀밥의 제조방법

Also Published As

Publication number Publication date
JP2008123497A (ja) 2008-05-29
US7836258B2 (en) 2010-11-16
US20080114942A1 (en) 2008-05-15
KR100961736B1 (ko) 2010-06-10
CN101183339A (zh) 2008-05-21
CN101183339B (zh) 2010-06-02
JP4954005B2 (ja) 2012-06-13

Similar Documents

Publication Publication Date Title
KR100961736B1 (ko) 데이터 의존 만기가 있는 동적 데이터 캐시 무효화 방법 및이미지 처리 시스템
US7940265B2 (en) Multiple spacial indexes for dynamic scene management in graphics rendering
US7893936B2 (en) Generating efficient spatial indexes for predictably dynamic objects
JP5043939B2 (ja) 3次元シーンの境界ボリュームを定めるノードを有する空間インデックスを用いる光線追跡のための操作を行なうプログラムを含むコンピュータ可読媒体及びシステム
US7773087B2 (en) Dynamically configuring and selecting multiple ray tracing intersection methods
US8022950B2 (en) Stochastic culling of rays with increased depth of recursion
US8085267B2 (en) Stochastic addition of rays in a ray tracing image processing system
US8018453B2 (en) Deferred acceleration data structure optimization for improved performance
US8004518B2 (en) Combined spatial index for static and dynamic objects within a three-dimensional scene
US8139060B2 (en) Ray tracing image processing system
US7782318B2 (en) Method for reducing network bandwidth by delaying shadow ray generation
US7719532B2 (en) Efficient and flexible data organization for acceleration data structure nodes
US7996621B2 (en) Data cache invalidate with data dependent expiration using a step value
US8284195B2 (en) Cooperative utilization of spatial indices between application and rendering hardware
US8339398B2 (en) Integrated acceleration data structure for physics and ray tracing workload
US8248402B2 (en) Adaptive ray data reorder for optimized ray temporal locality
US20080122838A1 (en) Methods and Systems for Referencing a Primitive Located in a Spatial Index and in a Scene Index
US7688320B2 (en) Methods and systems for texture prefetching based on a most recently hit primitive algorithm
US8826299B2 (en) Spawned message state determination
CN113808245B (zh) 用于遍历光线追踪加速结构的增强技术
US20080192051A1 (en) Expanding Empty Nodes in an Acceleration Data Structure
US8102389B2 (en) Box casting using an integrated acceleration data structure

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140425

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150427

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160427

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170426

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180427

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190508

Year of fee payment: 10