KR20060108741A - 멀티 스레드화된 아키텍처를 사용하는 시각 및 그래픽데이터 처리 - Google Patents

멀티 스레드화된 아키텍처를 사용하는 시각 및 그래픽데이터 처리 Download PDF

Info

Publication number
KR20060108741A
KR20060108741A KR1020067013046A KR20067013046A KR20060108741A KR 20060108741 A KR20060108741 A KR 20060108741A KR 1020067013046 A KR1020067013046 A KR 1020067013046A KR 20067013046 A KR20067013046 A KR 20067013046A KR 20060108741 A KR20060108741 A KR 20060108741A
Authority
KR
South Korea
Prior art keywords
thread
semaphore
instructions
graphical element
execution circuitry
Prior art date
Application number
KR1020067013046A
Other languages
English (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 KR20060108741A publication Critical patent/KR20060108741A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Image Generation (AREA)
  • Executing Machine-Instructions (AREA)
  • Digital Computer Display Output (AREA)

Abstract

액티브 및/또는 프로액티브 세마포어 메카니즘과 스레드 동기화 기술이 다양한 시각 및 그래픽 처리 기술에 적용될 수 있다.
세마포어, 그래픽 처리, 스레드

Description

멀티 스레드화된 아키텍처를 사용하는 시각 및 그래픽 데이터 처리{VISUAL AND GRAPHICAL DATA PROCESSING USING A MULTI-THREADED ARCHITECTURE}
본 발명은 시각 및 그래픽 데이터 처리에 관한 것이다. 더 상세하게는, 본 발명은 액티브 세마포어(active semaphore) 메카니즘을 사용하여 시각 및 그래픽 데이터 처리 동작을 수행하는 것에 관한 것이다.
세마포어{"임계 영역(critical section)" 또는 "뮤텍스(mutex)"라 불리기도 함}는, 공유 자원(예컨대, 메모리, 파일)에 대해서 복수의 프로세스들이 경쟁하는 동작들의 조정 또는 동기화를 가능하게 하는 하드웨어 및 소프트웨어 구조이다. 일반적으로, 세마포어는 프로세스가 확인하고 변경할 수 있는 운영 체제 메모리 내의 지정된 위치에 저장되는 값이다. 세마포어의 값에 기초하여, 프로세스는 공유 자원을 액세스하거나, 또는 일정 시간 주기 동안 대기하고 세마포어를 다시 확인할 수 있다.
종래의 컴퓨터 시스템에서의 세마포어는, 주로 원자적인(atomic) "검사 및 세트(test and set)" 또는 이와 유사한 종류의 명령{예컨대 락(lock), 비트 검사(bit test), 비트 검사 및 세트, 비트 검사 및 리셋}의 하드웨어 지원을 사용하는 소프트웨어 루틴(routine)으로서 구현된다. 이와 같은 세마포어 구현을 사용하 여, 공유된(예컨대, 글로벌한) 데이터 및 하나 이상의 세마포어를 통해 생산자-소비자 통신 관계가 성립될 수 있다. 세마포어로 인해 공유된 데이터는, 상기 데이터를 변경하려고 하는 복수의 프로세스들 중 선택된 하나에 의해 변경될 수 있으며, 이는 데이터의 일관성을 제공한다.
세마포어를 얻기 위해서 스레드는 폴링(polling) 동작을 수행해야 하기 때문에, 이와 같은 세마포어 구조는 "패시브(passive)"이다. 폴링 요청은 다른 용도로 사용될 수도 있는 프로세서와 시스템 자원을 낭비한다. 따라서 종래의 세마포어는 비효율성을 야기할 수 있다.
본 발명은 동일한 참조번호가 유사한 구성 요소를 나타내는 첨부된 도면의 그림에서 제한적인 방식이 아닌 예시의 방식으로 설명된다.
도 1은 대규모로 멀티스레드화된 프로세서 아키텍처의 일실시예를 도시한 블록도.
도 2a 내지 2d는 스레드 실행을 동기화하기 위해 세마포어가 사용될 수 있는 종속성의 개념도.
도 3은 광원에서부터 관찰자까지 광선이 추적되는 것을 도시한 간단한 예시도.
도 4는 액티브 세마포어를 사용하는 광선 추적(ray tracing)의 일실시예의 흐름도.
도 5는 프로액티브(proactive)하게 명령된 세마포어를 사용하는 Z-버퍼-기반 3차원 그래픽 렌더링의 일실시예의 흐름도.
도 6은 액티브 및/또는 프로액티브 세마포어를 사용하는 비디오 디코딩의 일실시예의 흐름도.
액티브 세마포어를 사용하여 시각 및/또는 그래픽 데이터 처리를 위한 방법 및 장치가 설명된다. 후술할 설명에서, 설명의 목적으로, 본 발명의 전체적인 이해를 제공하기 위해, 다수의 상세 사항들이 설명된다. 그러나 본 발명이 이와 같은 상세 사항들 없이도 실시될 수 있음은 본 기술 분야의 당업자에게 명백할 것이다. 다른 예에서, 본 발명이 불명확해지는 것을 방지하기 위해, 구조 및 장치가 블록도 형태로 도시된다.
액티브 세마포어 사용예의 개요
명령들의 다수의 병렬 패시브 스레드(이하 "스레드"라 함)가 "액티브" 세마포어를 사용하여 공유된 자원으로의 액세스를 조정하는 아키텍처 및 관련된 방법이 본 명세서에 설명된다. 스레드의 상태가 변경되도록 하기 위해 세마포어 개체가 메시지를 실행 및/또는 제어 회로로 송신하기 때문에, 세마포어는 액티브하다고 불린다. 예컨대, 스레드는 미해결된 종속성에 응답하여 스레드 스케줄러에 의해 슬립(sleep){또는 인액티브(inactive)} 모드로 들어갈 수 있으며, 세마포어는 상기 종속성을 나타낼 수 있다. 종속성에 대응하는 스레드 상태 변수는 스레드가 슬립 모드에 있는지를 가리키기 위해 사용된다.
종속성이 해결되면, 제어회로(예컨대 스레드 스케줄러)로 메시지가 전달되어 종속성 변수가 지워지도록 한다. 지워진 종속성 변수에 응답하여, 스레드는 액티브{또는 웨이크(wake)} 상태에 들어간다. 액티브 상태에 있는 스레드 상에서 실행이 진행될 수 있다.
상기 예에 계속 이어서, 스레드가 세마포어를 획득하려 해도 획득할 수 없다면, 상기 스레드는 인액티브 상태에 들어간다. 스레드가 인액티브이기 때문에, 선행 기술에서 요구되는 바와 같이, 세마포어가 세마포어에 의해 지시되는 종속성이 언제 해결되는지를 판단하도록 폴링(polling)을 할 수 없다. 종속성이 해결되었음을 나타내는 메시지가 (예컨대 세마포어 개체로부터) 수신될 때까지, 스레드는 인액티브 상태가 유지된다. 상기 메시지에 응답하여, 스레드는 액티브 상태로 들어가며, 이에 따라 실행이 진행된다.
도 1은 대규모로 멀티스레드화된 프로세서 아키텍처의 일실시예의 블록도이다. 본 명세서에서 사용되는 바와 같이, "대규모로 멀티스레드화된" 아키텍처라는 명칭은, 멀티스레드화된 실행을 지원할 수 있는 복수의 프로세서를 포함하는 아키텍처를 나타낸다. 일실시예에서, 각각의 프로세서는 하나 이상의 스레드를 지원할 수 있다. 단일 프로세서 상에서의 멀티스레딩은, 다른 스레드들이 인액티브 상태에 있는 동안에 액티브 스레드가 실행되도록 함으로써 높은 실행 효율을 달성한다. 세마포어 상에서 미결정된 인액티브 상태의 스레드는 프로세서 자원을 소모/낭비하지 않는다. 대규모로 멀티스레드화된 아키텍처에 관한 설명에도 불구하고, 세마포어 구조 및 관련된 방법은 지원되는 스레드의 숫자에 관계없이 모든 멀티스레드화 된 아키텍처에 적용될 수 있다.
대규모로 멀티스레드화된 시스템(100)은, 하나 이상의 프로세싱 코어에 의해 실행되는 중에 사용될 수 있는 데이터 및 명령을 저장하는 메모리 계층(110)을 포함한다. 메모리 계층(110)은, 본 발명의 기술분야에 알려진 임의의 형태로, DRAM, 하나 이상의 레벨의 명령 캐쉬, 하나 이상의 레벨의 데이터 캐쉬, 및/또는 하나 이상의 레벨의 공유 명령 및 데이터 캐쉬를 포함할 수 있다. 스레드 디스패처(dispatcher)(120)는 메모리 계층(110)에 연결되며, 신규 스레드에 관련된 데이터 및/또는 데이터 포인터 및 명령 포인터와 같은 정보를 수신한다. 스레드 디스패처(120)는 메시지 버스(125)를 경유하여 프로세싱 코어와도 연결된다. 일실시예에서, 스레드 디스패처(120)는 프로세싱 코어의 스레드 자원 관리를 담당한다. 신규 미결정 스레드를 수신하면, 스레드 디스패처(120)는 프로세싱 코어를 하나 선택하며, 상기 선택된 프로세싱 코어는 자원이 미결정 스레드를 실행하도록 하고 스레드를 상기 선택된 프로세싱 코어 상에 디스패치한다. 프로세싱 코어 상에서 기존의 스레드를 완료하면, 그 결과 스레드 디스패처(120)는 장래의 미결정 스레드에 대해 사용가능한 프로세싱 코어상의 스레드 자원을 형성하도록 통지를 받는다.
시스템(100)은 복수의 프로세서 코어들(130, 131, 139, 150, 151 및 159)로 예시되며, 각각의 프로세서 코어는 관련된 제어 회로와 함께 실행 회로를 포함한다. 프로세서 코어들은 동일할 수 있으며, 또는 다양한 기능을 가질 수 있다. 시스템(100)에는 임의의 갯수의 프로세서 코어가 포함될 수 있다. 일실시예에서, 프로세서 코어는 열들(rows)로 구성되며, 각각의 열은 열 컨트롤러를 가진다. 예컨 대, 열 컨트롤러(140)는 열 제어 버스(145)를 경유하여 프로세서 코어(130, 131 및 139)와 연결될 수 있다. 이와 유사하게, 열 컨트롤러(160)는 열 제어 버스(165)를 경유하여 프로세서 코어(150, 151 및 159)와 연결될 수 있다.
프로세서 코어는 메시지 버스(125)를 경유하여 세마포어 개체(170)와 연결되기도 한다. 세마포어 개체(170)는 본 명세서에 설명된 바와 같이 세마포어 기능을 제공하는 제어 로직 및 메모리를 포함한다. 일실시예에서, 세마포어 개체(170)는, 아래에서 더 상세하게 설명될 바와 같이 메시지를 전송 및 수신함으로써 프로세서 코어와 상호작용한다.
스레드 디스패처(120)는 메시지 버스(125)를 경유하여 세마포어 개체(170)와 연결되기도 한다. 일실시예에서, 스레드 디스패처는, 아래에서 더 상세하게 설명될 바와 같이 메시지를 전송 및 수신함으로써 스레드 대신에 세마포어 개체(170)와 상호작용한다.
각각의 프로세싱 코어에 있는 제어 회로는, 동일한 프로세싱 코어 상에서 실행되는 복수의 스레드의 상태를 관리하는 스레드 스케줄링 회로를 포함할 수 있으며, 명령의 액티브 스레드를 실행하는 명령 스케줄링 회로도 포함할 수 있다. 명령을 실행하는 중에, 하나 이상의 프로세싱 코어는 공유된 시스템 자원에 액세스를 시도할 것이다. 공유된 시스템 자원을 제어하기 위해서, 스레드는 대응하는 실행 코어를 통해, 액세스되는 공유된 시스템 자원에 대응하는 세마포어를 제어해야 한다.
일실시예에서, 세마포어를 제어하기 위해, 요청 프로세싱 코어는 메시지 버 스(125)를 통해 세마포어 개체(170)로 세마포어 요청 메시지를 송신한다. 세마포어 요청 메시지를 송신한 후에, 요청 스레드는 실행 및 관련된 작동(예컨대 세마포어의 폴링)이 정지되는 인액티브 상태로 들어간다.
세마포어 요청 메시지 수신에 응답하여, 세마포어 개체(170)는, 요청 스레드에 대한 세마포어의 제어를 승인할 것인지에 대해 결정한다. 세마포어가 승인되면, 세마포어 개체(170)는 세마포어 수신확인 메시지를 요청 스레드로 송신한다. 세마포어 수신확인 메시지에 응답하여, 요청 스레드는 요청된 자원을 사용하는 실행이 지속되는 액티브 상태로 회복된다. 스레드가 공유된 자원의 사용을 완료하면, 스레드는 해제 세마포어 메시지를 세마포어 개체(170)로 송신한다. 해제 세마포어 메시지에 응답하여, 세마포어 개체(170)는 세마포어를 해제하고 다른 스레드가 시스템 자원에 액세스할 수 있도록 한다.
일실시예에서, 세마포어는, 예컨대 메시지 버스(125)를 통해 프로세싱 코어와 세마포어 개체 사이로 통과되는 메시지(세마포어 메시지)와 프로세싱 코어에 의해 실행되는 명령(세마포어 명령)에 의해 지원된다. 대안적인 실시예에서, 다른 및/또는 추가적인 메시지나 명령이 지원될 수 있다.
연결 목록에 기초한 세마포어 개체
일실시예에서, 세마포어 큐(queue)에 대한 종래기술은 세마포어 각각에 대한 연결 목록을 작성하기 위해 사용되는 개체를 포함하는 버퍼 풀(buffer pool)로 대체된다. 따라서 각각의 세마포어는 버퍼 풀 내의 개체들로부터 작성된 연결 목록에 대한 헤드 포인터일 수 있다. 연결 목록은 양방향 연결 목록 또는 단방향 연결 목록일 수 있다.
일실시예에서, 세마포어 테이블은 지원되는 각각의 세마포어에 대한 포인터를 포함한다. 일실시예에서, 세마포어 테이블 내의 포인터는 대응하는 세마포어에 대해 사용되는 연결 목록의 헤드를 가리키는 헤드 포인터이다. 자유 풀(free pool) 포인터는 버퍼 풀의 헤드를 가리키며, 세마포어 개체는 NULL 포인터를 포함한다.
일실시예에서, 각각의 세마포어 엔트리(entry)에는 해제-상태 영역, 수신확인-차단(ack-suppression) 영역, 스레드 식별자 영역, 이전 포인터 및 다음 포인터가 포함된다. 대안적인 실시예에서, 기타 및/또는 다른 영역이 사용될 수 있으며, 예컨대 이전 포인터가 생략될 수 있다. 일실시예에서, 각각의 세마포어는, 세마포어에 대응하는 연결 목록이 비어있는지를 가리키는 단일 비트{또는 기타 인디케이터(indicator)}도 포함할 수 있다.
세마포어 메시지
세마포어의 소유를 위해 세마포어 개체를 요청하기 위해서, 세마포어 획득 메시지(Acquire Semaphore Message; 이하 ACQ_MSG)가 스레드, 또는 스레드 대신 스레드 디스패처에 대해 사용된다. 일실시예에서, ACQ_MSG는 세마포어 식별자 영역, 스레드 식별자 영역, "자동-해제" 영역, 및 "수신확인-차단" 영역을 포함한다. 자동 해제 영역은 헤드 종속성만 있는 스레드에 대해 사용된다. 즉, 스레드는 이전 스레드에 영향을 받지만, 후속 스레드는 상기 스레드에 영향을 받지 않는다. 수신확인-차단 영역은 테일(tail) 종속성만 있는 스레드에 대해 사용된다. 즉, 스레드 는 어떠한 이전 스레드에도 영향을 받지 않지만, 상기 스레드는 그에 영향을 주는 후속 스레드를 갖지 않는다. ACQ_MSG는 스레드에 연관된 스레드 디스패처 또는 기타 제어 회로에 의해 생성될 수 있다.
일실시예에서, ACQ_MSG를 받으면, 세마포어 개체는, 프리 풀 목록으로부터 헤드 엔트리를 제거하여 선택된 세마포어의 테일에 추가함으로써, 요청 스레드에 대한 세마포어 엔트리를 목표 세마포어의 연결 목록으로 인큐(enqueue)한다. 세마포어 엔트리의 영역은 ACQ_MSG 내의 정보에 기초하여 업데이트되며, 즉, 스레드 식별자 영역, 해제-상태 영역 및 수신확인-차단 영역은, ACQ_MSG 내의 요청자의 스레드 식별자, 자동 해제 영역 및 수신확인-차단 영역으로 대체된다. ACQ_MSG가 수신되기에 앞서 세마포어 연결 목록이 비어있지 않으면, 세마포어 개체는 메시지를 송신하지 않는다. 반대로, ACQ_MSG가 수신되기에 앞서 세마포어 연결 목록이 비어있으면, 후속 동작들 중 하나가 취해진다.
수신확인-차단 영역이 세트(set)되지 않으면, 스레드 식별자가 있는 ACK_MSG가 메시지 버스(125) 상의 세마포어 개체로부터 요청 스레드로 송신된다. 수신확인-차단-영역이 세트되면, 세마포어 개체로부터 ACK_MSG가 송신된다. 자동-해제 영역이 세트되지 않으면, 바로 인큐된(just-enqueued) 세마포어 엔트리가 세마포어 연결 목록 내에 유지된다. 자동-해제 영역이 세트되면, 바로 인큐된 세마포어 엔트리는 세마포어 연결 목록에서 제거된다.
세마포어 개체에 세마포어의 자유로운 소유를 요청하는 스레드에 대해, 해제 세마포어 메시지(Release Semaphore Message; 이하 REL_MSG)가 사용된다. 일실시 예에서, REL_MSG는 세마포어 식별자 영역 및 스레드 식별자 영역을 포함한다. 일실시예에서, REL_MSG는 세마포어의 소유를 유지하는 스레드와 연관된 제어 회로에 의해서만 생성될 수 있으며, 즉 스레드 식별자는 세마포어 연결 목록의 상위에 있다. REL_MSG를 수신하면, 세마포어 개체는 세마포어 연결 목록의 헤드로부터 엔트리를 제거한다.
다른 실시예에서, 세마포어를 공유하는 임의의 스레드와 연관된 제어 회로에 의해 REL_MSG가 생성될 수 있다. REL_MSG를 수신하면, 세마포어 개체는 연결 목록 내의 엔트리의 위치에 관계없이, 세마포어 연결 목록 내의 대응하는 엔트리에 대한 해제-상태 영역을 언셋(unset)한다. 세마포어 엔트리가 연결 목록의 헤드에 있다면, 세마포어 연결 목록의 헤드로부터 엔트리가 제거된다. 그러면, 그 다음의 엔트리는 연결 목록의 헤드가 된다. 다음 엔트리가 NULL이 아니라면, 상기 엔트리가 검사될 것이다. 연결 목록의 신규 헤드가 해제-상태 영역을 세트하면, 상기 헤드는 세마포어 연결 목록의 헤드로부터 다시 제거된다.
일실시예에서, 이와 같은 순환 과정은, 연결 목록의 헤드가 NULL(세마포어 큐가 빈 상태)이 되거나, 연결 목록의 헤드가 해제-상태 영역을 언셋할 때까지(엔트리에 대응하는 스레드로부터 세마포어의 해제를 기다리며) 계속된다. 연결 목록의 헤드가 NULL이 아니고 수신확인-차단 영역이 세트되지 않으면, ACK_MSG가 세마포어 개체에 의해, 엔트리의 스레드 식별자 영역에 의해 식별되는 스레드로 송신된다. 연결 목록의 헤드가 NULL이 아니고 수신확인-차단 영역이 세트되면, ACK_MSG는 송신되지 않는다.
요청된 세마포어가 획득되었다는 스레드를 통지하기 위해서, 세마포어 수신확인 메시지(ACK_MSG)가 세마포어 개체에 의해 생성된다. 일실시예에서, ACK_MSG는 세마포어 식별자 영역과 스레드 식별자 영역을 포함한다. ACK_MSG는 세마포어 개체에 의해서만 생성되며, 스레드 식별자 영역에 의해 식별되는 스레드를 실행하는 프로세싱 코어에 의해 수신된다.
ACK_MSG를 수신하면, 수신 프로세싱 코어는, 스레드 식별자 영역에 의해 식별되는 스레드의 대기-세마포어 상태 변수를 언셋한다. 스레드가 인액티브 상태에 있다면, 스레드 상태는 액티브 상태로 변경된다.
세마포어 명령
세마포어 획득(ACS) 명령은, 요청된 세마포어의 세마포어 식별자, 요청 스레드의 스레드 식별자가 있고 자동-해제 영역이 언셋된 세마포어 개체로 ACQ_MSG 메시지가 송신되도록 한다. 스레드는 대기-세마포어 상태 영역이 세트된 인액티브 상태에 들어간다. ACS명령은 해제 세마포어(RLS) 명령(후술함)과 한 쌍을 이룬다(RLS 명령으로 이어진다). ACS-RLS 명령 쌍은 임계 영역 어플리케이션을 위해 사용될 수 있다.
자동-해제가 있는 세마포어 획득(ASR) 명령은, 요청된 세마포어를 위한 세마포어 식별자, 요청 스레드의 스레드 식별자가 있고 자동-해제 영역이 세트된 세마포어 개체로 ACQ_MSG가 송신되도록 한다. 스레드는 대기-세마포어 상태 영역이 세트된 인액티브 상태로 들어간다. 일실시예에서, ASR 명령은 RLS 명령과 쌍을 이룰 수 없다. 일실시예에서, ASR 명령은 헤드 종속성만을 갖는 스레드를 위해 사용된 다.
대기 세마포어(WTS) 명령은, 대기-세마포어 스레드 상태가 검사되도록 한다. 상태가 세트되어 있으면, 스레드는 인액티브 상태로 들어간다. 상태가 세트되어있지 않으면, 스레드는 액티브 상태를 유지한다. WTS 명령에 응답하여서는 세마포어 개체에 메시지가 송신되지 않는다. WTS 명령을 사용한다는 것은, 스레드 디스패치 하는 때에 스레드 대신에 ACQ_MSG를 사용하는 스레드 디스패처에 의해 세마포어가 먼저 획득되었음을 의미한다. 수신확인-차단 영역이 스레드 디스패처에 의해 먼저 생성된 ACQ_MSG 내에 세트되지 않으면, WTS 명령은 사용되지 않는다.
해제 세마포어(RLS) 명령은, 해제되는 세마포어에 대한 세마포어 식별자와 해제 스레드에 대한 스레드 식별자가 있는 세마포어 개체로 REL_MSG가 송신되도록 한다. 해제 스레드는 액티브 상태로 유지된다. 해제 스레드에 대해 ACS 명령이 먼저 생성되었다면, 하나의 RLS 명령만 생성된다. 해제 스레드에 대해 ASR 명령이 먼저 생성되었다면, RLS 명령이 생성되지 않는다. 해제 스레드에 대해 WTS 명령이 생성되었다면, 스레드 디스패처에 의해 송신된 ACQ_MSG의 자동-해제 영역에 따라, WTS 명령 다음에 RLS 명령이 이어지거나 이어지지 않을 수 있다. 자동-해제 영역이 언셋되면, RLS 명령이 생성되지 않는다. 자동-해제 영역이 세트되면, WTS 명령 다음에 RLS 명령이 이어진다.
액티브 세마포어의 획득 예
명령의 스레드가 프로세서에 의해 실행됨에 따라, 자원이 사용가능할 때 명령이 실행된다. 예컨대 공유된 메모리 위치와 같이, 세마포어를 갖는 자원이 요청 되면, 자원을 액세스하기 위해 세마포어의 소유가 요청된다. 따라서, 명령의 스레드의 실행은, 세마포어가 필요할 때까지 본 기술 분야에 알려진 방법으로 이루어진다.
일실시예에서, 세마포어가 필요하면, 세마포어 획득(ACS) 명령이 실행된다. ACS 명령은, 세마포어를 요청하는 명령의 스레드를 실행하는 프로세서에 의해 실행될 수 있다. ACS 명령의 실행의 일부로서, 또는 그에 응답하여, 세마포어 획득 메시지(ACQ_MSG)가 스레드를 실행하는 프로세싱 코어에 의해 메시지 버스를 통해 세마포어 개체로 전송된다. ACQ_MSG에 대한 한가지 포맷은 앞에서 설명되었다. 다른 포맷도 사용될 수 있다.
ACS 명령의 실행의 일부로서, 또는 그에 응답하여, 세마포어를 요청하는 스레드는, 대기-세마포어 상태 영역이 세트된 인액티브 상태로 들어간다. 스레드가 인액티브 상태에 들어가게 함으로써, 스레드 내의 명령이 실행되지 않으며, 상기 스레드에는 초기 세마포어 요청이 거절되어야 할 요청된 세마포어의 폴링(polling)이 포함된다. 스레드가 액티브 상태에 들어가게 함으로써, 프로세서 자원 및 시스탬 대역폭이 세마포어를 폴링하는 스레드에 의해 낭비되지 않는다. 멀디 스레딩을 지원하는 프로세싱 코어에 있어서, 프로세서 자원과 시스템 대역폭은 다른 액티브 스레드에 의해 사용될 수 있다.
세마포어 개체는 ACQ_MSG를 수신하고, 요청기(requester) 정보 엔트리를 목표 세마포어의 연결 목록 내에 위치시킨다. 세마포어가 다른 스레드에 의해 소유되거나 제어되지 않으면, 다른 엔트리가 없기 때문에 세마포어 엔트리가 세마포어 연결 목록의 헤드에 위치한다. 세마포어가 다른 스레드에 의해 소유되거나 제어되면, 세마포어 엔트리는 세마포어 연결 목록의 테일(tail)에 위치한다. 일실시예에서, 연결 목록의 테일은 헤드 엔트리에서 테일 엔트리까지 버퍼 풀 내의 연결 목록 엔트리들을 왕복(traverse)함으로써 식별되며, 신규 엔트리가 신규 테일 엔트리가 된다. 다른 실시예에서, 연결 목록의 테일은 세마포어 테이블 내에 저장된 연결 목록의 테일 포인터에 의해 바로 식별된다.
스레드가 세마포어에 대응하는 자원의 사용을 완료함에 따라, 세마포어를 점유하는 스레드는 세마포어의 제어를 해제하며, 이는 아래에 더 상세하게 설명된다. 세마포어가 해제되면, 세마포어 연결 리스트의 헤드에 있는 대응하는 세마포어 엔트리가 제거되며, 연결 목록 내에 있는 그 다음의 세마포어 엔트리가 연결 목록의 헤드가 된다.
세마포어 엔트리가 세마포어 연결 목록의 헤드가 되면, 그 상태 영역이 세마포어 개체에 의해 검사된다. 수신확인-차단 영역이 세트되지 않으면, 세마포어 개체로부터 세마포어 개체와 연관된 스레드로 수신확인 메시지(ACK_MSG)가 전송된다. ACK_MSG에 대한 한가지 포맷은 앞에서 설명되었다. 다른 포맷도 사용될 수 있다. ACK_MSG는 수신하는 개체에게, 수신하는 개체가 대응하는 세마포어의 제어를 받았음을 나타낸다.
ACK_MSG에 응답하여, 대응하는 스레드가 액티브 상태가 된다. 액티브 상태가 되면, 스레드 내 명령의 처리가 계속되고 세마포어에 대응하는 공유된 자원이 액세스될 수 있다. 스레드가 공유된 자원으로의 액세스를 완료하면, 세마포어가 해제되며, 이는 아래에 더 자세하게 설명된다.
액티브 세마포어의 해제 예
일실시예에서, 세마포어 해제(RLS) 명령이 실행될 때, 세마포어가 해제된다. RLS 명령은 세마포어를 요청하는 명령의 스레드를 실행하는 프로세서에 의해 실행될 수 있다. RLS 명령의 실행의 일부로서, 또는 이에 응답하여, 세마포어 해제 메시지(REL_MSG)가 세마포어 개체로 전송된다. REL_MSG에 대한 한가지 포맷은 위에서 설명되었다. 다른 포맷도 사용될 수 있다.
REL_MSG에 응답하여, 세마포어 개체는 세마포어 연결 목록이 있는 REL_MSG의 스레드 식별자 영역과 매칭된다. 대응하는 세마포어 엔트리가 연결 목록의 헤드에 있지 않으면, 세마포어 개체는 연결 목록의 헤드로부터 스레드 엔트리를 제거한다. 연결 목록에 있는 그 다음의 엔트리가 헤드 엔트리가 된다. 그 다음에, 세마포어는 신규 헤드 엔트리에 대응하는 스레드로 승인될 수 있다. 대응하는 세마포어 엔트리가 연결 목록의 헤드에 있지 않으면, 세마포어 엔트리는 세마포어 엔트리의 해제-상태 영역을 세트한다.
동작 모델
사용된 연결 목록의 정보에 기초하여, 세마포어는 연관된 세마포어 또는 정렬된 세마포어로 분류될 수 있다. 세마포어 개체로부터 온 ACK_MSG의 전송에 기초하여, 세마포어는 액티브 세마포어 또는 프로액티브 세마포어로 분류될 수 있다. 따라서 네 종류의 세마포어가 지원될 수 있다.
연관된 세마포어의 일실시예 개요
연관된 세마포어는 동시적인 스레드가 무작위 순으로 세마포어에 액세스할 수 있도록 한다. 일실시예에서, 세마포어는 NULL 연결 목록(또는 빈 연결 목록을 나타내는 단일 비트)가 있는 세션의 시작단계에서 스레드 디스패처에 의해 초기화된다. 스레드 디스패처로부터 세마포어 개체로는 다른 메시지가 송신되지 않는다. 명령의 복수의 스레드를 실행하는 실행 회로에 의해 세마포어 연결 목록이 플라이(fly) 상에 작성된다.
일실시예에서, ACS 또는 ASR 명령을 실행함으로써, 스레드가 연관된 세마포어를 요청한다. 스레드는 RLS 명령을 실행함으로써 연관된 세마포어를 해제한다. 일실시예에서, 신규 ACQ_MSG는 세마포어 연결 목록의 테일에 위치한 요청 스레드에 대응하는 엔트리를 생성할 것이다. 이는 선착순 처리 방식(first-come, first-served; FCFS) 세마포어 모델을 제공한다.
정렬된 세마포어의 일실시예 개요
정렬된 세마포어는 동시적인 스레드가 소정의 순서로 세마포어에 액세스할 수 있도록 한다. 상기 순서는 디스패칭할 때에 스레드 디스패처에 의해 기결정된다. 상기 순서는 애플리케이션에 따라 좌우될 수 있다. 스레드 디스패칭이 원래대로 순차적으로 진행됨에 따라, 스레드 디스패처는 각각의 디스패치된 스레드 대신에, 상기 순서에 따른 세마포어 연결 목록을 작성하는 세마포어 개체로 ACQ_MSG를 송신할 수 있다.
임계 영역에 들어가는 스레드는 세마포어의 소유를 기다리는 WTS 명령을 사용할 수 있다. 스레드가 이미 세마포어 연결 목록 내에 위치할 것이기 때문에, ACS 및 ASR 명령이 사용되지 않는다. 일실시예에서, 세마포어 개체는 연결 목록 순서에 따른 세마포어의 제어만을 제공할 수 있다. 세마포어 상에서 대기하는 스레드는 연결 목록 순서대로 ACQ_MSG를 수신할 것이다.
액티브 세마포어의 일실시예 개요
전술한 바와 같이, 액티브 세마포어에 ACQ_MSG가 사용되어 인액티브 상태에서 액티브 상태로 전이된다. 세마포어 개체는 스레드를 실행하는 실행 회로로부터 하나 이상의 ACQ_MSG를 수신한다. 세마포어 개체는 세마포어 연결 목록의 헤드에 있는 스레드에 대응하는 실행회로로 하나의 ACK_MSG만을 전송한다. 세마포어 연결 목록의 헤더를 제거하면, 세마포어 개체는 연결 목록의 신규 헤드의 상태를 검사하며, 세마포어 연결 목록의 신규 헤드의 스레드에 대응하는 실행 회로에 다음 순서의 ACK_MSG를 전송할 수 있다. 액티브 세마포어는 연관된 세마포어일 수도 있다.
프로액티브 세마포어의 일실시예 개요
프로액티브 세마포어는 스레드가 인액티브 상태에 있던 아니던 간에, 세마포어 연결 목록의 헤드에 있는 스레드로 하나의 ACK_MSG 만을 전송한다. 이는 하나의 ACK_MSG 만을 스레드로 송신하기 위해 스레드 디스패처에 의해 이전에 송신된 ACQ_MSG가 있는 정렬된 세마포어를 사용하는 스레드에 적용된다. 정렬된 세마포어를 사용하는 스레드는 WTS 및/또는 RLS 명령을 포함할 수 있다.
프로액티브 세마포어에 있어서, 세마포어 개체에 의해 자동으로 ACK_MSG가 세마포어 연결 목록의 헤드에 있는 스레드로 송신된다. 일실시예에서, 스레드 디스패처와 스레드가 실행 회로에 보일 수 있는 시간에 의해 스레드로부터의 엔트리 의 타이밍이 세마포어 연결 목록 내에 인큐되면 존재할 수 있는 "위험 조건"의 가능성이 존재한다. 두 동작이 스레드 디스패처에 의해 초기화되지만 상이한 데이터 경로를 통해 발생하지 않기 때문에, 상기 이벤트들의 타이밍이 고려되어야 한다.
세마포어가 구성되기 전에 스레드 실행이 시작되면, WTS 명령이 스레드 내에 있을 경우 위험 조건은 존재하지 않을 것이다. 대기-세마포어 스레드 상태 변수가 스레드 디스패처에 의해 세트되기 때문에, 세마포어 연결 목록 내에 스레드가 인큐되기 전에 스레드의 WTS 명령이 도달하더라도, 위험 조건은 발생하지 않을 것이다. WTS 명령으로 인해 스레드가 세마포어 개체 내에 메시지를 송신하지 않고 인액티브 상태에 들어간다. 세마포어 개체가 ACK_MSG를 스레드로 송신하면, 실행 회로는 스레드가 다시 액티브 상태가 되도록 한다.
수신확인-차단 영역이 세트된 스레드 디스패처에 의해 세마포어가 구성되면, 위험 조건이 발생할 수 있다. 이러한 경우, 스레드는 인액티브 상태가 되지 않을 것이다. 대신에, 스레드에 대해 세마포어가 구성되기 전에 스레드가 RLS 명령에 도달하고 REL_MSG를 세마포어 개체로 송신하면, 세마포어 개체는 REL_MSG를 처리하는 상태가 아닐 수 있다. 이와 같은 위험 조건을 방지하기 위해, 스레드 실행과 세마포어 개체를 통해, REL_MSG가 스레드 디스패처에 의해 생성된 ACQ_MSG를 통과하지 않도록 확보할 수 있다.
따라서, 일실시예에서, 위험 조건을 방지하기 위해, 스레드 디스패처는 수신확인-차단이 세트되지 않을 경우 세마포어의 구성을 완료하기 전에 스레드 구성을 완료한다. 스레드 디스패처는 수신확인-차단 영역이 세트되는 경우, 스레드 구성 이 완료되기 전에 세마포어 구성을 완료한다. 스레드 디스패처가 순차적으로 준비 스레드(ready thread)를 디스패치하기 때문에, 순차적인 동작들은 필요한 순서를 확보할 수 있다.
세마포어 구성 전에 스레드 구성이 완료되면, 스레드 디스패처는 스레드를 디스패치하고, 세마포어의 구성을 발생시키는 메시지를 송신하기 전에 스레드 세트이 완료됨을 나타내는 신포를 기다릴 수 있다. 스레드가 구성되기 전에 세마포어 구성이 완료되면, 스레드 디스패처는 세마포어의 구성을 초기화하는 메시지를 송신하고, 스레드를 디스패치하기 전에 세마포어 구성이 완료됨을 나타내는 신호를 기다릴 수 있다. 순차적인 구성이 불필요하게 디스패처로부터의 처리량을 제한할 수 있기 때문에, 구성 동작은 파이프라인화(pipelined)될 수 있다.
스레드 동기화
도 2a 내지 2d는 스레드 실행을 동기화하기 위해 세마포어가 사용될 수 있는 종속성에 대한 개념적인 도면이다. 도 2a는 1:1:1(일대일) 종속성을 도시한다. 도 2a의 종속성은 강한 순차적인 순서 종속성 또는 연관된 종속성일 수 있다. 강한 순차적인 순서 종속성에 있어서, 단일의 프로액티브한 정렬된 세마포어가 사용될 수 있다. 일실시예에서는, 스레드 디스패처로부터 세마포어를 요청하는 세마포어 개체로 송신되는 ACQ_MSG 내에서, 수신확인-차단 영역 및 자동-해제 영역이 모두 언셋된다. 명령의 스레드는 세마포어를 점유 및 해제하는 WTS-RLS 명령 쌍을 포함한다.
연관된 종속성에 있어서, 단일의 액티브한 연관된 세마포어가 사용될 수 있 다. 일실시예에서는, 스레드를 실행하는 실행 회로로부터 세마포어를 요청하는 세마포어 개체로 송신된 ACQ_MSG 내에, 수신확인 차단 영역 및 자동-해제 영역이 모두 언셋된다. 명령의 스레드는 세마포어를 점유 및 해제하는 ACS_RLS 명령 쌍을 포함한다.
도 2b는 1:N(일대다) 종속성을 도시하며, 하나의 스레드는 다른 N개의 스레드가 서로 영향을 주지 않는 N개의 다른 스레드 상에 헤드 종속성을 가진다. 여기서 N은 하나 이상이 될 수 있는 양의 정수이다. 1:N 종속성에 있어서, 단일의 프로액티브한, 정렬된 세마포어가 사용될 수 있다. 일실시예에서, N개의 독립적인 스레드에 있어서, 스레드 디스패처에 의해 N개의 스레드 대신에 ACQ_MSG가 송신된다. 스레드 디스패처로부터 세마포어를 요청하는 세마포어 개체로 송신된 ACQ_MSG에서, 수신확인-차단 영역이 세트되고 자동-해제 영역은 언셋된다. 다른 N개의 스레드에 대해 헤드 종속성을 가지는 단일 스레드에 있어서, 스레드 디스패처에 의해 ACQ_MSG도 송신된다. 세마포어를 요청하는 ACQ_MSG에서, 수신확인-차단 영역이 언셋되고 자동-해제 영역은 세트된다. 명령의 N개의 스레드는 세마포어를 해제하는 하나의 RLS 명령만을 포함한다. 명령의 단일 스레드는 세마포어를 점유 및 해제하는 WTS-RLS 명령 쌍을 포함한다.
도 2c는 N:1(다대일) 종속성을 도시하며, N개의 스레드는 단일 스레드에 대해 헤드 종속성을 갖지만, N개의 스레드는 서로 영향을 주지 않는다. N:1 종속성에 있어서, 단일의 프로액티브한, 정렬된 세마포어가 사용될 수 있다. 일실시예에서, 스레드 디스패처는 N개의 종속하는(depending) 스레드와 하나의 종속되 는(dependent) 스레드 대신에 ACQ_MSG를 송신하는 것을 담당한다. 일실시예에서, 단일의 종속되는 스레드에 있어서, 세마포어를 요청하는 ACQ_MSG 내에, 수신확인-차단 영역이 세트되고 자동-해제 영역은 언셋된다. N개의 종속하는 스레드에 있어서, 세마포어를 요청하는 ACQ_MSG 내에, 수신확인-차단 영역이 언셋되고 자동-해제 영역은 세트된다. 명령의 단일한 종속되는 스레드는 세마포어를 해제하는 하나의 RLS 명령만을 포함한다. 명령의 N개의 종속하는 스레드는 세마포어를 점유 및 해제하는 WTS-RLS 명령 쌍을 포함한다.
도 2d는 N:M(다대다) 종속성을 도시하며, N개의 종속하는 스레드는 M개의 종속되는 스레드에 헤드 종속성을 가진다. 이러한 경우에, N개의 종속하는 스레드는 서로 영향을 주지 않으며, M개의 종속되는 스레드도 서로 영향을 주지 않는다. N:M 종속성의 경우는 전술한 1:1:1, 1:N, 및 N:1의 경우보다 더 일반적인 경우이다. N:M 종속성에 있어서, 단일의 프로액티브한, 정렬된 세마포어가 사용될 수 있다. 일실시예에서, 스레드 디스패처는 N개의 종속하는 스레드와 M개의 종속되는 스레드 대신에 ACQ_MSG를 송신하는 것을 담당한다. 일실시예에서, M개의 종속되는 스레드에 대해, 세마포어를 요청하는 ACQ_MSG 내에, 수신확인-차단 영역은 세트되고 자동-해제 영역은 언셋된다. N개의 종속하는 스레드에 있어서, 세마포어를 요청하는 ACQ_MSG 내에, 수신확인-차단 영역이 언셋되고 자동-해제 영역은 세트된다. 명령의 M개의 종속되는 스레드는 세마포어를 해제하는 하나의 RLS 명령만을 포함한다. 명령의 N개의 종속하는 스레드는 세마포어를 점유 및 해제하는 WTS-RLS 명령 쌍을 포함한다.
도 2a 내지 2d의 종속성은 더 복잡한 종속성을 지원하기 위해 사용될 수 있다. 예컨대, N:1:N 종속성에 있어서, 두개의 프로액티브한, 정렬된 세마포어가 사용된다. 도 2c에 관하여 전술한 바와 같이 N:1 종속성이 처리되고, 도 2b에 관련하여 전술한 바와 같이 1:N 종속성이 처리된다.
아래에서 더 상세하게 설명될 바와 같이, 전술한 세마포어 메카니즘과 스레드 동기화 기술은 컴퓨터 또는 유사한 전자 시스템 내에서 실시되는 많은 동작에 적용될 수 있다. 아래에 설명될 예에서는, 본 명세서에 설명된 세마포어 구조를 사용하여 다양한 그래픽 처리 기술이 실시될 수 있다. 그래픽 처리 기술은 액티브 및 프로액티브 세마포어의 사용을 위해 유용한 예들을 제공한다.
세마포어 및 광선 추적( Ray Tracing )
광선 추적은 3차원 그래픽을 렌더링하기 위한 기술이며, 거울, 투명 표면, 그림자 등과 같은 복잡한 빛의 상호작용을 지원할 수 있다. 일반적으로, 광선 추적은 광선이 장면을 통한 광선 바운스(bounce)에서 광선이 취하는 경로를 순환적으로 따라감(추적함)에 의한 반사 및 굴절의 모델링에 기초한다. 두 바운스 사이(또는 제1 바운스까지의 스크린 위치 사이 또는 스크린 위치 또는 바운스에서 광원 사이)의 광선의 추적은 광선 세그먼트(segment)라 불린다. 광선이 원근 투영(viewing perspective)(예컨대, 카메라)으로부터 광원까지 추적됨에 따라, 각각의 픽셀(pixel)에 대해 색깔이 결정된다. 광선 추적에 대한 다양한 기술은 본 기술 분야에 알려져 있다. 예컨대, Cook, R.L.와 Torrance, K.E.의 "A Reflectance Model for Computer Graphics," ACM Trans. on Graphics 1, 1(1982년 1월)와 Glassner, A.(ed)의 "An Introduction to Ray Tracing" Academic Press, New York, 1989를 참조하라.
광선 추적 기술을 사용하여 이미지를 렌더링하면, 각각의 스크린 위치 상에 아이(eye) 광선을 시작함으로써 이미지 스크린이 렌더링될 수 있다. 스크린 위치는 목표(destination) 픽셀이라 불리기도 한다. 각각의 아이 광선은 3차원 장면 공간을 횡단하며, 장면 내의 물체와 상호작용하는 반사 및 굴절에 기인하여 하나 이상의 광선 세그먼트를 생성할 것이다. 상이한 목표 픽셀들과 연관된 광선 세그먼트는 서로 독립적이다. 상이한 목표 픽셀들과 연관된 광선 세그먼트의 처리는, 공유된 자원을 변경하지 않고, 따라서 세마포어 메카니즘을 사용하지 않고 병렬적으로 연산될 수 있다.
이미지 스크린 상에 많은 목표 픽셀들이 있기 때문에, 광선 추적의 문제는 대규모로 멀티스레드화된 연산 아키텍처에 잘 들어맞을 수 있다. 단일 목표 픽셀에 있어서, 복수의 광선 세그먼트가 존재할 수 있다. 단일 픽셀에 대한 복수의 광선 세그먼트에 있어서 기여도가 축적됨에 따라, 픽셀과 연관된 각각의 광선 세그먼트들의 가중치가 부여된 합에 따라 최종 색깔이 결정된다. 예컨대, 단일 픽셀에 대한 광선 세그먼트가 대규모로 멀티스레드화된 연산 아키텍처 상에서 상이한 스레드를 사용하여 처리되면, 동일한 픽셀과 연관된 스레드에 대한 공유된 자원인 픽셀의 최종 색깔의 업데이트는, 세마포어 메카니즘의 사용을 필요로 한다. 예컨대, 전술한 N:1 종속성 메카니즘이 광선 추적을 위해 사용될 수 있다.
액티브 및/또는 인액티브 세마포어를 사용하여, 광선 세그먼트(공통 픽셀과 연관된 광선 세그먼트를 포함)를 추적하기 위한 동작이 병렬적으로 실행될 수 있다. 일실시예에서, 세마포어 식별자는 목표 픽셀 주소를 해싱(hashing) 함으로써 결정될 수 있다. 사용가능한 세마포어의 수가 독립 픽셀들보다 더 적다면, 몇몇 픽셀은 세마포어를 공유할 수 있다. 이는 성능의 문제이지만 기능상의 문제는 아니다. 상기 실시예에서, 세마포어는 전체적인 동기화 없이 동적으로 사용될 수 있다. 세마포어를 사용하지 않고, 픽셀에 연관된 광선 세그먼트를 추적하는 동작이 순차적으로 실시된다. 따라서, 광선 추적 기술과 함께 세마포어를 사용함으로써, 더 많은 병렬 처리가 가능하다.
도 3은 광원에서 관찰자까지 광선이 추적되는 예시적인 장면을 도시한다. 광원(300)과 관찰자(330) 사이에서 많은 수의 광선이 이동하지만, 설명의 단순화를 위해 도 3에서는 소수의 광선들만이 도시되었다.
광선(340)은 광원(300)에서 관찰자(330)로 직접 이동한다. 광선(340)이 반사 또는 굴절되지 않기 때문에, 광선(340)에 대응하는 픽셀은 광원(300)에 의해 제공되는 광의 색깔로 표시된다. 광선 세그먼트(350 및 355)에 대응하는 광에 대한 광선 추적 연산은, 광선이 물체(310)에 의해 반사되기 때문에 더 복잡하다.
전술한 바와 같이, 세그먼트(350 및 355)에 대한 광선 추적 동작은 병렬적으로 실시될 수 있다. 따라서, 세그먼트(350 및 355)에 대한 광선 추적 동작은 두 개의 스레드로서 실시될 수 있으며, 이 결과가 조합되어 복수의 광선 추적 동작으로부터 나온 픽셀 색깔을 제공한다. 두 개의 스레드의 통합은 전술한 바와 같이 액티브 세마포어를 사용하여 이루어질 수 있다.
도 4는 액티브 세마포어를 사용하는 광선 추적의 일실시예의 흐름도이다. 광선 경로가 결정된다(410). 광선 경로의 결정은 본 기술 분야에 알려진 임의의 방법으로 이루어질 수 있다. 광선 추적 동작에 사용되는 구성요소(예컨대, 하드웨어 구성요소, 소프트웨어 구성요소 등)는 복수의 광선 세그먼트가 단일 픽셀에 기여하는지를 결정한다(420).
단일 광선 세그먼트가 단일 픽셀에 기여한다면(420), 광선 경로가 추적된다(425). 상기 단일 광선 세그먼트에 있어서, 본 기술 분야에 알려진 임의의 광선 추적 기술이 사용될 수 있다. 광선 추적 동작의 결과에 기초하여, 픽셀 색깔이 결정된다(475). 그 다음에, 관찰을 위해 픽셀이 디스플레이되거나, 인쇄되거나 또는 렌더링될 수 있다.
복수의 광선 세그먼트가 단일 픽셀에 기여하면(420), 하나 이상인 복수의 광선 세그먼트가 병렬적으로 추적될 수 있다. 복수의 광선 세그먼트에 대한 병렬적인 광선 추적은, 픽셀 결과가 N개의 광선 세그먼트에 대한 광선 추적 동작의 결과에 좌우되는 N:1 종속성을 생성할 수 있다. 상기 N:1 종속성은 전술한 바와 같이 조절될 수 있다.
종속성이 해결되면(440), 복수의 광선 추적 동작의 결과가 축적된다(450). 축적된 광선 추적 동작의 결과에 따라 픽셀 색깔이 결정된다(475). 그 다음에, 픽셀은 관찰을 위해 디스플레이되거나, 인쇄되거나 또는 렌더링될 수 있다.
액티브 세마포어를 사용하는 Z-버퍼-기반 3차원 렌더링
Z-버퍼-기반 3차원 그래픽 렌더링에서, 렌더링된 물체는 점, 선, 삼각형, 삼 각형 스트립(strip) 등과 같은 렌더 프리미티브(render primitive)로 나뉜다. 렌더 프리미티브는 관찰 스크린 상에 투사된다. 상이한 스크린 픽셀들 상에 투사된 렌더 프리미티브는 독립적으로 렌더링될 수 있다. 복수의 불명확한 프리미티브가 동일한 스크린 픽셀 상에 투사되면, 다른 프리미티브보다 앞에 있는(소위 Z값이라 불리는 목표 픽셀로부터의 거리값이 더 작은) 프리미티브만이 스크린 픽셀 색깔을 업데이트한다.
Z-버퍼는, 픽셀 단위(pixel by pixel) 기반으로 스크린 픽셀에 가장 최근의 업데이된 Z값을 저장하는 스크린 크기 버퍼이다. Z-테스트를 사용하여 불명확함이 해결된다. 스크린 픽셀에 투사되는 임의의 프리미티브에 있어서, 프리미티브의 Z값은, 스크린 픽셀에 대해 Z-버퍼에 저장된 Z값과 비교된다. 프리미티브의 Z값이 Z-버퍼값보다 더 작다면, 목표 픽셀 색깔은 프리미티브로부터 렌더링된 색깔로 업데이트되며, Z-버퍼값도 마찬가지로 업데이트된다. 프리미티브의 Z값이 Z-버퍼값과 같거나 그보다 더 큰 경우, 목표 픽셀 색깔과 대응하는 Z-버퍼값은 변하지 않는다.
일관된 스크린 영상을 생성하기 위해서는, 동일한 스크린 픽셀 상에 투사된 프리미티브가 고정된 순서로 렌더링되어야 한다. Z-버퍼-기반 3차원 렌더링은, 대규모로 스레드된 아키텍처 상에서의 멀티스레드화된 프로세싱을 사용하여 실현될 수 있다. 예컨대, 독립적인 프리미티브들은 독립적인 스레드에 의해 렌더링될 수 있다. 예컨대 복수의 프리미티브에 의한 공통 픽셀 상에서의 Z-버퍼 테스트 및 업데이트와 같은 프리미티브들 간의 종속성은, 전술한 세마포어 메카니즘을 사용하여 해결될 수 있다.
도 5는 프로액티브인 정렬된 세마포어를 사용하는 Z-버퍼-기반 3차원 그래픽 렌더링의 일실시예의 흐름도이다. 렌더링된 물체(들)은 관찰 스크린에 대한 투사에 기초하여 프리미티브 및 프리미티브의 부분으로 분리된다(510). 투사된 스크린 픽셀 위치에 기초하여, 프리미티브 또는 프리미티브의 부분에 대해 세마포어가 구성된다(520).
명령의 복수의 스레드에 의해 렌더링 동작이 프리미티브 또는 프리미티브의 부분 상에 실시된다(530). 스레드는 하나 이상의 프로세서에 의해 실행될 수 있으며, 전술한 하나 이상의 세마포어 메카니즘을 사용하여 종속성을 해결할 수 있다. 예컨대, 동일한 스크린 픽셀 상에 투사되는 상이한 스레드에 의한 복수의 프리미티브에 대한 3차원 렌더링은, 각각의 스레드의 Z-테스트 및 목표 색깔 업데이트가, 스레드에 선행하여 동일한 스크린 픽셀을 업데이트하는 하나 이상의 스레드의 결과에 좌우되는 1:1:1 종속성을 생성할 수 있다. 상기 1:1:1 종속성은 전술한 바와 같이 조절된다.
종속성이 해결되면(540), 주어진 프리미티브 또는 프리미티브 세그먼트에 대한 스레드는 Z-테스트를 실시하며, Z-테스트가 성공적으로 이루어지면, 투사된 픽셀에 대한 Z값 및 색깔값을 업데이트한다(550). 프리미티브가 렌더링된 후에 최종 렌더링된 영상이 생성된다(560). 그 다음에, 관찰을 위해 최종 렌더링된 영상이 디스플레이, 인쇄 또는 표시될 수 있다.
액티브 세마포어를 사용한 비디오 디코딩
예컨대 MPEG-2와 같은 몇몇 비디오 코딩 표준에서는, 영상(시각 객체 평면 또는 VOP) 내에 있는 하나 이상의 세그먼트{매크로블록(macroblock) 등} 그룹은 명령의 독립 스레드에 의해 디코딩될 수 있다. 예컨대 MPEG-4와 같은 몇몇 비디오 코딩 표준에서, 매크로블록과 같은 영상 세그먼트의 디코딩은, 다른 영상 세그먼트의 디코딩의 종속성을 갖는다. 따라서, 영상은 멀티스레드화된 아키텍처 상의 명령의 복수의 스레드에 의해 디코딩될 수 있다. 스레드들 간의 종속성은 전술한 세마포어 메카니즘을 사용하여 해결될 수 있다.
예컨대 2000년 10월에 발행된 ISO/IEC 13818 "Generic coding of movine pictures and associated audio information"와 같은 문서에 MPEG-2 및 그와 관련된 표준들이 설명되어 있다. 예컨대 2002년 5월에 발행된 ISO/IEC 14496 "Coding of audio-visual objects"와 같은 문서에 MPEG-4 및 그와 관련된 표준들이 설명되어 있다.
도 6은 액티브 및/또는 프로액티브 세마포어를 사용하는 비디오 디코딩의 일실시예의 흐름도이다. 흐름도는 비디오 시퀀스의 한 영상의 디코딩 과정을 도시한다. 비디오 시퀀스의 복수의 영상들을 디코딩하기 위해 동일한 과정이 반복될 수 있다. 디코딩될 영상의 세그먼트가 결정된다(610). 세그먼트는, 예컨대, 블록, 블록들의 그룹, 매크로블록 또는 매크로블록들의 그룹, 또는 기타 디코딩되는 프레임의 분할(segmentation)일 수 있다.
일실시예에서, 디코딩 동작이 명령의 상이한 스레드들에 의해 세그먼트 상에 실시되기 전에(640), 인터-세그먼트(inter-segment) 종속성이 결정된다. 세그먼트 가 헤드 종속성을 가지면 - 세그먼트의 디코딩은 다른 세그먼트의 디코딩 결과에 좌우됨(620) -, 헤드 종속성이 있는 하나 이상의 세마포어가 세그먼트를 처리하는 명령의 스레드에 대해 구성된다(625). 세그먼트가 테일 종속성을 갖는다면 - 다음 순서의 세그먼트(들)의 디코딩은 상기 세그먼트의 디코딩 결과에 좌우됨(630) -, 테일 종속성이 있는 하나 이상의 세마포어가 세그먼트를 처리하는 명령의 스레드에 대해 구성된다(635).
디코딩 동작은 명령의 복수의 스레드들에 의해 세그먼트 상에 실시된다(640). 스레드는 하나 이상의 프로세서에 의해 실시될 수 있으며, 전술한 하나 이상의 세마포어 메카니즘을 사용하여 종속성을 해결할 수 있다. 예컨대, N개의 세그먼트에 대해 헤드 종속성을 갖는 세그먼트에 있어서, 상기 세그먼트들의 종속성은, N:1 종속성 모드에서 구성된 세마포어를 사용하여 해결될 수 있다. N개의 독립 세그먼트의 스레드는 테일 종속성이 있는 세마포어와 함께 구성되며, 하나의 종속하는 세그먼트는 헤드 종속성이 있는 세마포어와 함께 구성된다. 이와 같은 N:1 종속성은 전술한 바와 같이 조절될 수 있다.
세그먼트의 종속성이 해결되면(630), 디코딩된 세그먼트의 결과값이 생성된다(650)). 수집된 세그먼트 결과값으로부터 최종 영상이 생성된다(660). 그 다음에, 최종 디코딩된 영상은 관찰을 위해 디스플레이되거나, 인쇄되거나 또는 표시될 수 있다.
결론
본 명세서에서 "일실시예" 또는 "하나의 실시예"를 참조하는 것은, 실시예와 관련하여 설명된 상세한 특징, 구조 또는 특성이 본 발명의 적어도 일실시예에 포함됨을 의미한다. 본 명세서의 많은 곳에서 "일실시예에서" 라는 문구가 나오는 것은, 반드시 모두 동일한 실시예를 참조한다는 것은 아니다.
전술한 명세서에서, 본 발명은 그에 관련된 특정 실시예를 참조하여 설명되었다. 그러나 본 발명의 폭넓은 사상 및 범위를 벗어나지 않고 그에 관련된 다양한 한정 및 변경이 이루어질 수 있음은 명백할 것이다. 따라서, 본 명세서 및 도면은 한정적인 의미가 아닌 설명적인 것으로 간주되어야 한다.

Claims (34)

  1. 디스플레이될 이미지의 제1 그래픽 요소를 처리하는 명령의 제1 스레드를 실행하는 단계;
    디스플레이될 상기 이미지의 제2 그래픽 요소를 처리하는 명령의 제2 스레드를 실행하는 단계;
    상기 제1 그래픽 요소와 상기 제2 그래픽 요소 간의 관계에 관련된 소정의 조건들의 집합 중 적어도 하나가 감지됨에 응답하여, 명령의 상기 제1 스레드가 인액티브(inactive) 상태가 되도록 하는 단계;
    세마포어 개체로부터 메시지가 수신될 때까지, 명령의 상기 제1 스레드를 상기 인액티브 상태로 유지하는 단계; 및
    상기 세마포어 개체로부터의 메시지 수신에 응답하여, 명령의 상기 제1 스레드의 실행을 재개하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 소정의 조건들의 집합은 해결되지 않은 종속성을 포함하는 방법.
  3. 제1항에 있어서, 상기 소정의 조건들의 집합은 상기 세마포어에 대응하는 자원이 사용가능하지 않음을 나타내는 상기 세마포어로부터의 응답 결여를 포함하는 방법.
  4. 제1항에 있어서,
    명령의 상기 제1 스레드 및 명령의 상기 제2 스레드에 대한 상태를 나타내는 것을 유지하는 단계
    를 더 포함하는 방법.
  5. 제4항에 있어서, 각각의 스레드의 상기 상태를 나타내는 것은, 만약 있다면 연관된 스레드의 종속성에 대응하는 상태 변수를 포함하는 방법.
  6. 제1항에 있어서, 상기 제1 스레드는 광선 추적 명령의 제1 집합을 포함하며, 상기 제1 그래픽 요소는 제1 광선 세그먼트를 포함하고, 상기 제2 스레드는 광선 추적 명령의 제2 집합을 포함하며, 상기 제2 그래픽 요소는 제2 광선 세그먼트를 포함하는 방법.
  7. 제1항에 있어서, 상기 제1 스레드는 비디오 디코딩 명령의 제1 집합을 포함하며, 상기 제1 그래픽 요소는 제1 영상 세그먼트를 포함하고, 상기 제2 스레드는 비디오 디코딩 명령의 제2 집합을 포함하며, 상기 제2 그래픽 요소는 제2 영상 세그먼트를 포함하는 방법.
  8. 제7항에 있어서, 상기 제1 영상 세그먼트는 제1 매크로블록(macroblock)을 포함하며, 상기 제2 영상 세그먼트는 제2 매크로블록을 포함하는 방법.
  9. 제1항에 있어서, 상기 제1 스레드는 3차원 렌더링 명령의 제1 집합을 포함하며, 상기 제1 그래픽 요소는 제1 렌더 프리미티브(render primitive)를 포함하고, 상기 제2 스레드는 3차원 렌더링 명령의 제2 집합을 포함하며, 상기 제2 그래픽 요소는 제2 렌더 프리미티브를 포함하는 방법.
  10. 제9항에 있어서, 상기 제1 렌더 프리미티브는 제1 포인트, 제1 라인, 제1 삼각형, 및 제1 삼각형 스트립(strip) 중 하나를 포함하며, 상기 제2 렌더 프리미티브는 제2 포인트, 제2 라인, 제2 삼각형, 및 제2 삼각형 스트립 중 하나를 포함하는 방법.
  11. 제9항에 있어서,
    상기 제1 렌더 프리미티브에 대한 거리값을 결정하는 단계;
    상기 제2 렌더 프리미티브에 대한 거리값을 결정하는 단계;
    상기 제1 렌더 프리미티브와 상기 제2 렌더 프리미티브 간의 관계를 결정하기 위해, 상기 제1 렌더 프리미티브와 상기 제2 렌더 프리미티브에 대한 상기 거리값을 비교하는 단계; 및
    상기 제1 렌더 프리미티브와 상기 제2 렌더 프리미티브 간의 관계에 기초하 여, 상기 제1 렌더 프리미티브와 상기 제2 렌더 프리미티브 중 선택된 하나를 디스플레이하는 단계
    를 더 포함하는 방법.
  12. 이미지의 제1 그래픽 요소에 대응하는 명령의 제1 스레드와 상기 이미지의 제2 그래픽 요소에 대응하는 명령의 제2 스레드를 수신 및 실행하는 실행 회로 - 상기 실행 회로는 세마포어 요청 메시지를 전송하며, 연관된 세마포어를 갖는 자원을 요청하는 상기 제1 스레드에 응답하여 상기 제1 스레드를 인액티브 상태가 되게 함 -;
    상기 실행 회로에 연결되며, 상기 실행회로로부터 상기 세마포어 요청 메시지를 수신하고, 상기 실행 회로로 세마포어 수신확인 메시지를 전송함으로써 상기 세마포어 요청 메시지에 응답하여 상기 세마포어의 제어를 선택적으로 승인하는 세마포어 개체 - 상기 실행 회로는 상기 세마포어 수신확인 메시지에 응답하여, 명령의 상기 스레드를 상기 인액티브 상태에서 벗어나게 함 -;
    를 포함하는 장치.
  13. 제12항에 있어서, 상기 실행 회로는,
    명령의 상기 제1 스레드를 실행하는 제1 실행 회로; 및
    명령의 상기 제2 스레드를 실행하는 제2 실행 회로
    를 포함하는 장치.
  14. 제12항에 있어서, 상기 제1 스레드는 광선 추적 명령의 제1 집합을 포함하며, 상기 제1 그래픽 요소는 제1 광선 세그먼트를 포함하고, 상기 제2 스레드는 광선 추적 명령의 제2 집합을 포함하며, 상기 제2 그래픽 요소는 제2 광선 세그먼트를 포함하는 장치.
  15. 제12항에 있어서, 상기 제1 스레드는 비디오 디코딩 명령의 제1 집합을 포함하며, 상기 제1 그래픽 요소는 제1 영상 세그먼트를 포함하고, 상기 제2 스레드는 비디오 디코딩 명령의 제2 집합을 포함하며, 상기 제2 그래픽 요소는 제2 영상 세그먼트를 포함하는 장치.
  16. 제15항에 있어서, 상기 제1 영상 세그먼트는 제1 매크로블록을 포함하며, 상기 제2 영상 세그먼트는 제2 매크로블록을 포함하는 장치.
  17. 제12항에 있어서, 상기 제1 스레드는 3차원 렌더링 명령의 제1 집합을 포함하며, 상기 제1 그래픽 요소는 제1 렌더 프리미티브를 포함하고, 상기 제2 스레드는 3차원 렌더링 명령의 제2 집합을 포함하며, 상기 제2 그래픽 요소는 제2 렌더 프리미티브를 포함하는 장치.
  18. 제17항에 있어서, 상기 제1 렌더 프리미티브는 제1 포인트, 제1 라인, 제1 삼각형, 및 제1 삼각형 스트립 중 하나를 포함하며, 상기 제2 렌더 프리미티브는 제2 포인트, 제2 라인, 제2 삼각형, 및 제2 삼각형 스트립 중 하나를 포함하는 장치.
  19. 제12항에 있어서,
    상기 실행 회로에 연결되며, 명령의 상기 제1 스레드와 명령의 상기 제2 스레드를 저장하는 메모리
    를 더 포함하는 장치.
  20. 제12항에 있어서,
    명령의 스레드를 실행하는 적어도 하나의 추가적인 실행 회로; 및
    상기 실행 회로 및 상기 적어도 하나의 추가적인 실행 회로에 연결되며, 실행을 위해 스레드를 디스패치하는 스레드 디스패처(dispatcher)
    를 더 포함하는 장치.
  21. 제12항에 있어서, 명령의 상기 제1 스레드가 상기 인액티브 상태에 있으면, 상기 명령의 실행이 중지되며, 상기 실행 회로는 상기 세마포어 요청 메시지의 상태를 결정하기 위해 상기 세마포어 개체를 폴(poll)하지 않는 장치.
  22. 디스플레이될 이미지 내의 제1 그래픽 요소를 처리하는 명령의 제1 스레드를 실행하기 위한 수단;
    디스플레이될 이미지 내의 제2 그래픽 요소를 처리하는 명령의 제2 스레드를 실행하기 위한 수단;
    상기 제1 그래픽 요소와 상기 제2 그래픽 요소 간의 관계에 관련된 소정의 조건들의 집합 중 적어도 하나가 감지됨에 응답하여, 명령의 상기 제1 스레드가 인액티브 상태가 되도록 하기 위한 수단;
    세마포어 개체로부터 메시지가 수신될 때까지, 명령의 상기 제1 스레드를 상기 인액티브 상태로 유지하기 위한 수단; 및
    상기 세마포어 개체로부터 상기 메세지를 수신함에 응답하여, 명령의 상기 제1 스레드의 실행을 재개하기 위한 수단
    을 포함하는 장치.
  23. 제22항에 있어서, 상기 제1 스레드는 광선 추적 명령의 제1 집합을 포함하며, 상기 제1 그래픽 요소는 제1 광선 세그먼트를 포함하고, 상기 제2 스레드는 광선 추적 명령의 제2 집합을 포함하며, 상기 제2 그래픽 요소는 제2 광선 세그먼트를 포함하는 장치.
  24. 제22항에 있어서, 상기 제1 스레드는 비디오 디코딩 명령의 제1 집합을 포함하며, 상기 제1 그래픽 요소는 제1 매크로블록을 포함하고, 상기 제2 스레드는 비디오 디코딩 명령의 제2 집합을 포함하며, 상기 제2 그래픽 요소는 제2 매크로블록 을 포함하는 장치.
  25. 제22항에 있어서, 상기 제1 스레드는 3차원 렌더링 명령의 제1 집합을 포함하며, 상기 제1 그래픽 요소는 제1 렌더 프리미티브를 포함하고, 상기 제2 스레드는 3차원 렌더링 명령의 제2 집합을 포함하며, 상기 제2 그래픽 요소는 제2 렌더 프리미티브를 포함하는 장치.
  26. 메모리 컨트롤러;
    상기 메모리 컨트롤러에 연결되며, 이미지의 제1 그래픽 요소에 대응하는 명령의 제1 스레드와 상기 이미지의 제2 그래픽 요소에 대응하는 명령의 제2 스레드를 수신 및 실행하는 실행 회로 - 상기 실행 회로는 세마포어 요청 메시지를 전송하고, 연관된 세마포어를 갖는 자원을 요청하는 상기 제1 스레드에 응답하여 상기 제1 스레드를 인액티브 상태가 되도록 함 -; 및
    상기 실행 회로에 연결되며, 상기 실행회로로부터 상기 세마포어 요청 메시지를 수신하고, 상기 실행 회로로 세마포어 수신확인 메시지를 전송함으로써 상기 세마포어 요청 메시지에 응답하여 상기 세마포어의 제어를 선택적으로 승인하는 세마포어 개체 - 상기 실행 회로는 상기 세마포어 수신확인 메시지에 응답하여, 명령의 상기 스레드를 상기 인액티브 상태에서 벗어나게 함 -
    를 포함하는 시스템.
  27. 제26항에 있어서, 상기 실행 회로는,
    명령의 상기 제1 스레드를 실행하는 제1 실행 회로; 및
    명령의 상기 제2 스레드를 실행하는 제2 실행 회로
    를 포함하는 시스템.
  28. 제26항에 있어서, 상기 제1 스레드는 광선 추적 명령의 제1 집합을 포함하며, 상기 제1 그래픽 요소는 제1 광선 세그먼트를 포함하고, 상기 제2 스레드는 광선 추적 명령의 제2 집합을 포함하며, 상기 제2 그래픽 요소는 제2 광선 세그먼트를 포함하는 시스템.
  29. 제26항에 있어서, 상기 제1 스레드는 비디오 디코딩 명령의 제1 집합을 포함하며, 상기 제1 그래픽 요소는 제1 매크로블록을 포함하고, 상기 제2 스레드는 비디오 디코딩 명령의 제2 집합을 포함하며, 상기 제2 그래픽 요소는 제2 매크로블록을 포함하는 시스템.
  30. 제29항에 있어서, 상기 제1 영상 세그먼트는 제1 매크로블록을 포함하며, 상기 제2 영상 세그먼트는 제2 매크로블록을 포함하는 시스템.
  31. 제26항에 있어서, 상기 제1 스레드는 3차원 렌더링 명령의 제1 집합을 포함하며, 상기 제1 그래픽 요소는 제1 부분 렌더 프리미티브를 포함하고, 상기 제2 스 레드는 3차원 렌더링 명령의 제2 집합을 포함하며, 상기 제2 그래픽 요소는 제2 렌더 프리미티브를 포함하는 시스템.
  32. 제31항에 있어서, 상기 제1 렌더 프리미티브는 제1 포인트, 제1 라인, 제1 삼각형, 및 제1 삼각형 스트립 중 하나를 포함하며, 상기 제2 렌더 프리미티브는 제2 포인트, 제2 라인, 제2 삼각형, 및 제2 삼각형 스트립 중 하나를 포함하는 시스템.
  33. 제26항에 있어서,
    상기 메모리 컨트롤러에 연결되며, 명령의 상기 제1 스레드와 명령의 상기 제2 스레드를 저장하는 메모리
    를 더 포함하는 시스템.
  34. 제26항에 있어서, 명령의 상기 제1 스레드가 상기 인액티브 상태에 있으면, 상기 명령의 실행이 중지되며, 상기 실행 회로는 상기 세마포어 요청 메시지의 상태를 결정하기 위해 상기 세마포어 개체를 폴하지 않는 시스템.
KR1020067013046A 2003-12-31 2004-12-22 멀티 스레드화된 아키텍처를 사용하는 시각 및 그래픽데이터 처리 KR20060108741A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/750,589 US8271986B2 (en) 2003-12-31 2003-12-31 Visual and graphical data processing using a multi-threaded architecture
US10/750,589 2003-12-31

Publications (1)

Publication Number Publication Date
KR20060108741A true KR20060108741A (ko) 2006-10-18

Family

ID=34749337

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067013046A KR20060108741A (ko) 2003-12-31 2004-12-22 멀티 스레드화된 아키텍처를 사용하는 시각 및 그래픽데이터 처리

Country Status (7)

Country Link
US (1) US8271986B2 (ko)
EP (1) EP1700212A2 (ko)
JP (1) JP4575925B2 (ko)
KR (1) KR20060108741A (ko)
CN (2) CN102200927B (ko)
TW (1) TWI285851B (ko)
WO (1) WO2005066778A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101155689B1 (ko) * 2011-04-12 2012-06-12 고려대학교 산학협력단 프리미티브 트리에 기반한 거리장 계산장치 및 방법

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006163547A (ja) * 2004-12-03 2006-06-22 Canon Inc 立体画像生成プログラム、立体画像生成システム及び立体画像生成装置。
US7439973B2 (en) * 2005-08-11 2008-10-21 International Business Machines Corporation Ray tracing with depth buffered display
US20070052704A1 (en) * 2005-09-08 2007-03-08 Arm Limited 3D graphics image formation
US7965898B2 (en) * 2005-10-28 2011-06-21 Nvidia Corporation Accelerating video decoding using multiple processors
US9665970B2 (en) * 2006-09-19 2017-05-30 Imagination Technologies Limited Variable-sized concurrent grouping for multiprocessing
US8018457B2 (en) * 2006-09-19 2011-09-13 Caustic Graphics, Inc. Ray tracing system architectures and methods
US8121196B2 (en) * 2006-11-02 2012-02-21 Corel Corporation Method and apparatus for multi-threaded video decoding
US8072454B1 (en) * 2007-12-13 2011-12-06 Nvidia Corporation Parallel processing system, method, and computer program product for selecting a ray tracing entity from a group of ray tracing entities for processing
US8695002B2 (en) * 2009-10-20 2014-04-08 Lantiq Deutschland Gmbh Multi-threaded processors and multi-processor systems comprising shared resources
CN103366386A (zh) * 2013-07-14 2013-10-23 西安电子科技大学 基于多进程和多线程的并行图像解压缩系统
CN103455356B (zh) * 2013-09-05 2017-02-08 中国计量学院 多核移动设备上3d模型的并发加载及渲染方法
US10977092B2 (en) * 2015-10-16 2021-04-13 Qualcomm Incorporated Method for efficient task scheduling in the presence of conflicts
GB2554392B (en) 2016-09-23 2019-10-30 Imagination Tech Ltd Task scheduling in a GPU
US10318348B2 (en) * 2016-09-23 2019-06-11 Imagination Technologies Limited Task scheduling in a GPU
KR20180038793A (ko) * 2016-10-07 2018-04-17 삼성전자주식회사 영상 데이터 처리 방법 및 장치
US10255717B2 (en) * 2016-11-01 2019-04-09 Nvidia Corporation Geometry shadow maps with per-fragment atomics
US10614613B2 (en) 2017-07-28 2020-04-07 Nvidia Corporation Reducing noise during rendering by performing parallel path space filtering utilizing hashing
US10871991B2 (en) * 2019-01-18 2020-12-22 EMC IP Holding Company LLC Multi-core processor in storage system executing dedicated polling thread for increased core availability
CN114816803B (zh) * 2022-06-28 2022-09-23 航天宏图信息技术股份有限公司 一种分布式仿真通信消息处理方法及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03164964A (ja) * 1989-11-24 1991-07-16 Nippon Telegr & Teleph Corp <Ntt> 情報処理装置における排他制御処理装置
US6018785A (en) * 1993-12-30 2000-01-25 Cypress Semiconductor Corp. Interrupt-generating hardware semaphore
US5715459A (en) 1994-12-15 1998-02-03 International Business Machines Corporation Advanced graphics driver architecture
US5951672A (en) 1997-07-02 1999-09-14 International Business Machines Corporation Synchronization method for work distribution in a multiprocessor system
JP3900621B2 (ja) * 1997-10-16 2007-04-04 ソニー株式会社 情報処理方法及び記録媒体
US6088044A (en) 1998-05-29 2000-07-11 International Business Machines Corporation Method for parallelizing software graphics geometry pipeline rendering
US6502097B1 (en) 1999-12-23 2002-12-31 Microsoft Corporation Data structure for efficient access to variable-size data objects
CA2373707A1 (en) 2001-02-28 2002-08-28 Paul Besl Method and system for processing, compressing, streaming and interactive rendering of 3d color image data
JP3798726B2 (ja) * 2002-04-26 2006-07-19 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリ・アクセス順序付け及びロック管理の方法、装置、プログラム及び記録媒体
CN1212569C (zh) * 2002-11-01 2005-07-27 英业达股份有限公司 多线程自动测试方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101155689B1 (ko) * 2011-04-12 2012-06-12 고려대학교 산학협력단 프리미티브 트리에 기반한 거리장 계산장치 및 방법

Also Published As

Publication number Publication date
WO2005066778A3 (en) 2006-09-28
US8271986B2 (en) 2012-09-18
US20050198644A1 (en) 2005-09-08
TW200527325A (en) 2005-08-16
WO2005066778A2 (en) 2005-07-21
JP2007517326A (ja) 2007-06-28
TWI285851B (en) 2007-08-21
CN102200927A (zh) 2011-09-28
CN101147126B (zh) 2011-06-08
CN102200927B (zh) 2013-11-20
EP1700212A2 (en) 2006-09-13
JP4575925B2 (ja) 2010-11-04
CN101147126A (zh) 2008-03-19

Similar Documents

Publication Publication Date Title
US8271986B2 (en) Visual and graphical data processing using a multi-threaded architecture
CN110035328B (zh) 用于动态抖动和延迟容忍渲染的系统和方法
CN110858387B (zh) 鲁棒且高效的多处理器-协处理器接口
US11367160B2 (en) Simultaneous compute and graphics scheduling
US10861214B2 (en) Graphics processor with non-blocking concurrent architecture
US9286119B2 (en) System, method, and computer program product for management of dependency between tasks
US8368701B2 (en) Metaprocessor for GPU control and synchronization in a multiprocessor environment
CN110766778B (zh) 使用散列执行并行路径空间滤波的方法和系统
US20160070820A1 (en) Short stack traversal of tree data structures
CN109643461B (zh) 用于在光线追踪架构内对多个连续光线-表面相交点进行正确排序和枚举的方法和设备
JP2017517810A (ja) スケーラブルなgpuにおけるデータ配信ファブリック
US20210036877A1 (en) Scalable in-network computation for massively-parallel shared-memory processors
US11363339B2 (en) Scalable light-weight protocols for wire-speed packet ordering
JP4584935B2 (ja) 動作モデルベースマルチスレッドアーキテクチャ
CN113743573A (zh) 用于访问和利用压缩数据及其状态信息的技术
US9536276B2 (en) Method of submitting graphics workloads and handling dropped workloads
CN115640138A (zh) 用于光线追踪调度的方法和装置
US20220366632A1 (en) Accelerated processing via a physically based rendering engine
JP2005509943A (ja) セマフォを使用する効率的なfifo通信
US11770215B2 (en) Transceiver system with end-to-end reliability and ordering protocols
US11875444B2 (en) Accelerated processing via a physically based rendering engine
CN110827388B (zh) 硬件中树遍历机制的前进和可编程超时的方法
CN110827388A (zh) 硬件中树遍历机制的前进和可编程超时的方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B601 Maintenance of original decision after re-examination before a trial
E801 Decision on dismissal of amendment
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20080602

Effective date: 20090528