KR101666416B1 - 우선순위 기반의 컨텍스트 선점 - Google Patents

우선순위 기반의 컨텍스트 선점 Download PDF

Info

Publication number
KR101666416B1
KR101666416B1 KR1020150025872A KR20150025872A KR101666416B1 KR 101666416 B1 KR101666416 B1 KR 101666416B1 KR 1020150025872 A KR1020150025872 A KR 1020150025872A KR 20150025872 A KR20150025872 A KR 20150025872A KR 101666416 B1 KR101666416 B1 KR 101666416B1
Authority
KR
South Korea
Prior art keywords
context
pipeline
priority
port
contexts
Prior art date
Application number
KR1020150025872A
Other languages
English (en)
Other versions
KR20150112771A (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 KR20150112771A publication Critical patent/KR20150112771A/ko
Application granted granted Critical
Publication of KR101666416B1 publication Critical patent/KR101666416B1/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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

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

Abstract

방법 및 장치는 별도의 높은 우선순위 및 낮은 우선순위 컨텍스트 제출 포트들을 통해 처리 유닛에 제출된 높은 우선순위 및 낮은 우선순위 컨텍스트의 처리를 우선순위화할 수 있다. 일 실시예에 따르면, 낮은 우선순위 포트로의 컨텍스트의 제출은 진행 중인 컨텍스트가 선점권을 빼앗기게 하는 반면, 높은 우선순위 포트로의 컨텍스트의 제출은 진행 중인 컨텍스트가 일시정지하게 한다.

Description

우선순위 기반의 컨텍스트 선점{PRIORITY BASED CONTEXT PREEMPTION}
컴퓨터 하드웨어 아키텍처는 일반적으로 일부 미리결정된 시퀀스로 작업부하(workload)를 처리한다. 그럼에도 불구하고, 이 시퀀스는 선점권을 빼앗길 수 있다(preempted). 이러한 선점은 상당한 레이턴시 시간을 초래하여, 시스템을 느리게 할 수 있다. 이러한 레이턴시 영향은 특히, 그래픽 처리와 같은 프로세서-집약적 활동에서 주목할 만하며, 보다 구체적으로는 3차원(3D) 렌더링에서 주목할만하다.
이하의 명세서와 첨부된 특허청구범위를 판독하고 이하의 도면들을 참조함으로써 실시예의 다양한 이점들이 본 기술분야의 통상의 기술자에게 명백하게 될 것이다.
도 1은 실시예에 따른 그래픽 처리 아키텍처의 예의 블록도이다;
도 2는 실시예에 따른 파이프라인의 예의 블록도이다;
도 3은 실시예에 따른 우선순위화된 컨텍스트 흐름의 예의 블록도이다;
도 4는 실시예에 따른 높은 우선순위와 낮은 우선순위 컨텍스트 제출을 처리하는 방법의 예의 흐름도이다;
도 5는 실시예에 따른 높은 우선순위와 낮은 우선순위 컨텍스트 제출을 처리하는 방법의 추가 예의 흐름도이다;
도 6은 실시예에 따른 로직 아키텍처의 예의 블록도이다;
도 7은 실시예에 따른 시스템의 블록도이다;
도 8은 실시예에 따른 스몰 폼 팩터(small form factor)를 갖는 시스템의 예의 블록도이다.
적절한 하이 레벨의 컴퓨터 시스템에서, 애플리케이션은 드라이버에 작업부하를 제출하고, 드라이버는, 차례로, 대응하는 ("태스크"라고도 알려진) 컨텍스트를 하드웨어에 제출할 수 있다. 주어진 컴퓨터 시스템 상에서, 컴퓨터 하드웨어를 이용하는 진행 중인 복수의 컨텍스트 - 작업부하가 있을 수 있다. 운영 체제는 이들 복수의 컨텍스트를 관리할 수 있고, 컴퓨터와 그 운영 체제의 시간 공유 능력을 이용하여 하드웨어 시간의 윈도우를 각각의 컨텍스트에 제공한다. 이들 컨텍스트가 처리되는 속도는 컴퓨터 시스템의 효율을 적어도 부분적으로 정의한다.
효율을 높이는 하나의 접근법은 일부 컨텍스트가 더 낮은 우선순위 컨텍스트에 대해 선점하는 것을 허용하는 것이었다. 이것은 낮은 우선순위 컨텍스트 작업부하 실행 동안에 발생할 수 있다, 예를 들어, 운영 체제(OS)가 마우스나 기타의 포인팅 디바이스의 움직임을 검출하면, 일반적으로 마이크로프로세서 레벨에서의 처리에서 다른 컨텍스트보다 높은 우선순위가 부여되는 그래픽 사용자 인터페이스(GUI; graphical user interface) 컨텍스트를 생성한다. GUI 작업부하는 최종 사용자 경험에 직접적으로 및 즉각적으로 영향을 주므로 높은 우선순위가 부여될 수 있다.
컴퓨터는 많은 상이한 종류의 컨텍스트를 처리하도록 요청받을 수 있지만, 그 중에서 가장 계산적으로 힘든 것이 3D 그래픽 렌더링에 관한 것들이다. 동시발생적인 게임 플레이와 기타의 비디오 집약적인 프로그램은 그래픽에 프리미엄을 둘 수 있고, 최종 사용자는 이들 그래픽의 품질을 스스로 용이하게 판단할 수 있다. 이미지를 렌더링하는데 있어서 효율적이고 빠른 시스템은 느리고 비효율적인 것보다 더욱 바람직할 수 있다.
본원에서의 실시예는 하드웨어 프론트 엔드 명령 스트리머(hardware front end command streamer) 상에서 하드웨어로서 구현될 수 있는 높은 우선순위 포트를 포함한다. 이들 실시예는, 이하에서 더 설명되는 바와 같이, 높은 우선순위 컨텍스트가 낮은 우선순위 컨텍스트에 대해 선점하는 것이 아니라 더 낮은 우선순위 컨텍스트를 일시정지하게(pause) 하도록 허용한다. 실시예는 3D-파이프라인 그래픽 칩 내에 구축되어 일시정지된 낮은 우선순위 컨텍스트의 상태와 작업부하를 보관(save) 및 복구(restore)하는 전용 온-칩 저장소를 포함할 수 있다. 실시예들은 또한, 낮은 우선순위에도 불구하고 특정의 진행중인 작업흐름에 관해 우선권(precedence)을 가질 수 있는 낮은 우선순위 컨텍스트를 처리하기 위한 낮은 우선순위 포트를 포함할 수 있다.
본원에서 제시된 실시예들은, 우선순위의 관점에서 낮은 것부터 높은 것까지 순위매겨진 작업흐름 컨텍스트의 3개 레벨을 어드레싱할 수 있다.
a. 베이스라인 작업흐름(여기서는, 낮은 우선순위 컨텍스트 작업부하, 또는 LPCW라고도 함);
b. 베이스라인 작업흐름에 비해 우선권을 갖는 낮은 우선순위 컨텍스트; 및
c. a. 및 b.에 관해 우선권을 갖는 높은 우선순위 컨텍스트.
도 1은 실시예들의 예들에서 이용될 수 있는 그래픽 처리 유닛(GPU; graphics processing unit)(101)의 예의 블록도를 도시한다. 예시된 GPU(101)는 명령 스트리머(command streamer)(111)("CS", 하드웨어 프론트 엔드(front end)라고도 알려짐)를 포함한다. 명령 스트리머(111)로부터의 데이터는 미디어 파이프라인(113)에 인가될 수 있다. 명령 스트리머(111)는 3D 고정 기능 파이프라인(115)에도 결합될 수 있다. 예시된 명령 스트리머(111)는, 파이프라인들 사이에서 스위칭하고 명령 스트림들을 활성 파이프라인에 포워딩함으로써 3D 및 미디어 파이프라인(115, 113)의 이용을 관리한다. 3D 파이프라인(115)은 전문화된 프리미티브 처리 기능(primitive processing function)을 제공할 수 있는 반면 미디어 파이프라인(113)은 더 일반적인 기능을 제공할 수 있다. 3D 렌더링의 경우, 3D 파이프라인(115)은 버텍스 버퍼(vertex buffer)(117)에 의해 공급받는 반면 미디어 파이프라인(113)은 별개의 메모리 객체(119) 그룹에 의해 공급받을 수 있다. 3D 및 미디어 파이프라인(115, 113)으로부터의 중간 결과 뿐만 아니라 명령 스트리머로(111)부터의 명령들도, 파이프라인 및 명령 스트리머(111)에 직접 결합된 그래픽 서브시스템(121)에 공급된다.
예시된 그래픽 서브시스템(121)은, 그래픽 처리 코어들의 어레이(125)에 결합된 통일된 반환 버퍼(URB; unified return buffer)(123)를 포함한다. 통일된 반환 버퍼(123)는, 스레드(thread)들이 다른 기능이나 스레드들에 의해 나중에 소비될 데이터를 반환하는 것을 허용하기 위해 다양한 기능들 사이에서 공유되는 메모리를 포함할 수 있다. 코어들의 어레이(125)는 3D 및 미디어 파이프라인(115, 113)으부터의 값을 처리하여 궁극적으로 목적 표면(destination surface, 127)을 생성한다. 코어들의 어레이는, 샘플러 기능(129), 수학 기능(131), 스레드간 통신(133), 색상 계산기(CC)(135), 및 최종 렌더링된 표면을 캐싱하는 렌더 캐시(137)에 대한 액세스를 가질 수 있다. 소스 표면들의 세트(139)가 그래픽 서브시스템(121)에 인가될 수 있고, 이들 기능들(129, 131, 135, 137, 139) 모두가 코어들의 어레이에 의해 적용된 후에, 목적 표면들의 세트(127)가 생성될 수 있다. 범용 계산의 목적을 위해, 예시된 명령 스트리머(111)는, 특정한 구현에 따라 코어들의 어레이(125)를 통해서 동작을 실행하는데 이용된다.
3D 렌더링 프로세스는 종종 사이클 시간을 특별히 집약적으로 이용하고 그에 따라 이것은 속도와 처리량 효율 양쪽 모두를 최적화하기를 추구하는 설계자들에게 해결과제를 제시한다. 본원에서의 실시예들은 3D 컨텍스트에서 이루어지는 요구(demand)의 관점에서 예시되고 있지만, 실시예들은 속도와 처리량이 최적화되어야 하는 다른 작업 부하 상황에 대한 광범위한 응용성을 가진다.
도 2는 3D 파이프라인(115)의 더 상세한 도면을 제시한다. 여기서, 파이프라인(115)은 3D 이미지를 처리하기 위한 기본적인 프리미티브 이미지 처리 기능을 다루기 위한 다수의 스테이지를 포함하는 것으로 도시되어 있다. 예시된 파이프라인(115)은, 그래픽 하드웨어 프론트 엔드(hardware front end)(HWFE)(115a), 입력 어셈블러(115b), 사전-래스터화 쉐이더(115c), 래스터화기(115d), 픽셀 쉐이더(115e), 및 출력 병합기(115f)를 포함한다. 상이한 하드웨어 구현들은 추가의 또는 더 적은 스테이지를 가질 수도 있다. 이들 스테이지들 각각은, 일시정지된 낮은 우선순위 컨텍스트 상태 및 작업 항목들을 저장하기 위한 전용 온-칩 저장소 메모리(116)에 링크될 수 있다. 저장소 내의 이들 객체들에 대한 이러한 준비된 액세스는 이하에서 더 논의되는 바와 같이 레이턴시 시간을 줄일 수 있다.
도 3의 블록도는 일 실시예에 따른 컨텍스트 흐름의 예를 나타낸다. 이 예에서, 운영 체제(OS)(306)는 도면에 도시된 바와 같이 여러 개의 애플리케이션을 실행하고 있다: 맵(map) 애플리케이션(302), 브라우저(304), 및 그래픽 사용자 인터페이스(GUI)(308). OS(306)는, 특히, 낮은 우선순위 큐(queue)(311) 및 높은 우선순위 큐(312)를 지원하는 커널 모드 드라이버(kernel mode driver)(310)(KMD)를 포함할 수 있다. 후자는 그래픽 마이크로 제어기(316)를 통해 터치 디바이스(314)(예를 들어, 마우스 또는 트랙 패드)로부터 컨텍스트를 수신할 수 있다. 다른 하드웨어 및 소프트웨어도 역시 실행중일 수 있다: 여기서 도시된 것들은 통상적으로 상이한 우선순위를 갖는 다수의 컨텍스트를 생성하는 흔히 채용되는 하드웨어 및 소프트웨어의 예시이다.
도 3에서, 낮은 우선순위 큐(311)는, "낮은 우선순위"를 갖는 것으로 지정되어 있지만 일반적인 낮은 우선순위 컨텍스트 작업부하의 대부분을 이루는 그외의 시간에 덜 민감한 컨텍스트들에 비해 여전히 우선권을 가질 수 있는 컨텍스트를 포함한다. 다시 말해서, 큐(311)가 본 출원에서 "낮은 우선순위"로서 표제가 붙어 있지만, 그 컨텍스트는 선점권을 뺏을 수 있는 다른 컨텍스트보다 여전히 높은 우선순위일 것이다. 낮은 우선순위 큐(311) 내의 것들보다 여전히 큰 우선순위를 갖는 컨텍스트는 높은 우선순위 큐(312)로 향할 수 있다. 높은 우선순위 큐(312)는 다양한 소스로부터 컨텍스트들을 수신할 수 있지만, 이 도면에서는 이들은 그래픽 마이크로 제어기(316)를 통해 터치 디바이스(314) 상에서 발생하는 터치 명령으로서 도시되어 있다. 낮은 우선순위 큐(311)와 높은 우선순위 큐(312)는 소프트웨어 또는 하드웨어를 통해 구현될 수 있다.
예시된 큐(311 및 312) 내의 컨텍스트들은, 주어진 시간에 수백 또는 수천 이상의 컨텍스트들을 다룰 수 있는 소프트웨어 스케쥴러(318)에 의해 2개의 포트들 중 하나에 할당된다. 이들 포트들 중 첫 번째는, 낮은 우선순위 큐(311)로부터 낮은 우선순위 컨텍스트를 수신하는 낮은 우선순위 컨텍스트 제출 포트(320)이다. 높은 우선순위 컨텍스트 제출 포트(322)는 높은 우선순위 큐(312)로부터 높은 우선순위 컨텍스트를 수신한다. 일 실시예에서, 이들 2개 포트(320, 322)는 양쪽 모두 하드웨어로 구현된다. 그 다음, 이들 포트로의 제출은 하드웨어 스케쥴러(328)에 전달될 수 있다.
예시된 하드웨어 스케쥴러(328)는, 후술되는 바와 같이, 낮은 우선순위 컨텍스트 제출 포트(320)에 제출된 낮은 우선순위 컨텍스트, 높은 우선순위 컨텍스트 제출 포트(322)에 제출된 높은 우선순위 컨텍스트, 및 일시정지될 수 있는 낮은 우선순위 컨텍스트들 사이에서 중재한다. 하드웨어 스케쥴러(328)는 이들 중 어느 것이 활성 컨텍스트(330)로 되어 파이프라인(332) 상에서의 실행을 위해 포워딩될 것인지를 결정할 수 있다. 그 결정을 하는데 있어서, 그 선택의 우선순위는 먼저 높은 우선순위 컨텍스트를, 그 다음 일시정지된 임의의 낮은 우선순위 컨텍스트를, 그 다음 다른 낮은 우선순위 컨텍스트를 선택하는 것이다. 예시된 하드웨어 스케쥴러(328)는, 컨텍스트 작업부하가 처리를 위해 파이프라인(332)으로 계속될 때 파이프라인에서 실행 중인 활성 컨텍스트(330)를 처리하는데 이용되는 메모리 표면, 메모리 객체(119), 및 버텍스 버퍼(117)(도 1)와 같은 상태 및 작업부하 세부사항을 포워딩한다. 파이프라인(332)은, 본 발명의 일 실시예에 관하여 이미 논의된 바와 같이, 예를 들어, 3D 및 미디어 파이프라인(115, 113)(도 1)과 같은 3D 및/또는 미디어 파이프라인을 포함할 수 있다. 하드웨어 스케쥴러(328)는 또한, 더 높은 우선순위 컨텍스트가 처리를 기다리고 있는 경우 활성 컨텍스트(330)를 일시정지하고, 차례로 파이프라인(332)을 일시정지하는 것을 담당할 수 있다. 이러한 일시정지는 높은 우선순위 컨텍스트가 높은 우선순위 컨텍스트 제출 포트(322)에 전송되었을 경우 발생할 수 있다. 이것은 임의의 진행 중인 낮은 우선순위 컨텍스트가 적절한 논리적 경계에서 정지(halt)하게 하고 그 상태와 계류중인 작업부하 및 작업 항목이 메모리에 복사되게 한다.
비교적 낮은 우선순위 컨텍스트가 일시정지되면, 그 상태는 보관된다. 이 예에서, "상태"란, 특정한 작업부하/컨텍스트를 처리하는데 필요한 파이프라인의 각각의 스테이지의 구성을 포함한 하드웨어 구성을 말하며 부수적인 소프트웨어 명령어를 더 포함할 수 있다. (예를 들어, 컨텍스트가 삼각형 또는 직사각형 그리고 이들에 대해 수행될 필요가 있는 프리미티브 하드웨어 동작들로 구성되어 있는지.) 임의의 부분적으로 처리된 컨텍스트, 즉, 계류중인, 미완료 작업도 역시 저장될 수 있다. 현재의 예에서, 일시정지된 낮은 우선순위 컨텍스트에 대한 상태 및 부분적으로 처리된 작업에 대한 저장소는 전용 온-다이 저장소 메모리(333)로서 제공된다. 이 메커니즘을 GPU 또는 CPU와 동일한 다이 상에 국지적으로 제공하는 것은 메인 메모리를 이용할 때에 비해 (수십배(several orders of magnitude) 정도) 훨씬 빠른 액세스 시간을 제공할 수 있어서, 일시정지되었던 낮은 우선순위 컨텍스트의 더 빠른 후속 처리를 야기할 수 있다.
높은 우선순위 컨텍스트의 도달로 인한 낮은 우선순위 컨텍스트의 일시정지에 응답하여, 예시된 파이프라인(332)은 하드웨어 스케쥴러(328)에게 파이프라인이 낮은 우선순위 컨텍스트를 일시정지했고 높은 우선순위 컨텍스트를 수락할 수 있는 상태에 있다는 것을 시그널링한다. 예시된 하드웨어 스케쥴러(328)는 일시정지된 낮은 우선순위 컨텍스트를 활성 컨텍스트(330) 상태로부터 낮은 우선순위(low priority)(LP) 일시정지된 컨텍스트(334) 상태로 이동하고, 높은 우선순위 컨텍스트의 처리가 시작될 수 있다. 하드웨어는 또한, 낮은 우선순위 컨텍스트가 일시정지되었고, 발생하는 높은 우선순위 컨텍스트 실행의 완료에 후속하여 그리고 다른 임의의 낮은 우선순위 컨텍스트가 시작하기 전에 실행을 위해 나중에 다시 제출될 수 있다는 것을 기억할 수 있다.
어떠한 높은 우선순위 컨텍스트도 수반되지 않은 낮은 우선순위 컨텍스트에 의한 선점의 경우, 일단 낮은 우선순위 컨텍스트가 또 다른 낮은 우선순위 컨텍스트에 의해 선점권을 뺏기면, 소프트웨어 스케쥴러(318)는 업데이트되고 낮은 우선순위 컨텍스트가 선점권을 빼앗겼으며 파이프라인 바깥으로 플러쉬(flush)되었다는 것을 알게 된다. 또한, 선점권을 빼앗긴 낮은 우선순위 컨텍스트가 파이프라인에서의 처리를 재개할 때 이용하기 위한 소프트웨어 명령어와 같은, 선점권을 빼앗긴 낮은 우선순위 컨텍스트 상태에 관한 일부 정보가 메모리에 보관될 수 있다. 이 메모리는, 그래픽 컨텍스트를 저장하기 위해 할당될 수 있는, 메인 메모리, 대용량 저장소 메모리, 또는 DDR(double data rate) 메모리일 수 있다. 소프트웨어 스케쥴러(318)는, 나중의 시점에서 다시 제출되거나 폐기될 수 있도록 선점권을 빼앗긴 낮은 우선순위 컨텍스트의 아이덴티티(identity)를 유지할 수 있다.
이제 도 4를 참조하면, 더 낮은 우선순위 컨텍스트의 높은 우선순위 컨텍스트 선점을 제공하는 방법(400)의 일례의 흐름도가 도시되어 있다. 방법(400)은, 예를 들어, PLA(programmable logic array), FPGA(field programmable gate array), CPLD(complex programmable logic device)등의 구성가능한 로직으로, 예를 들어, ASIC(application specific integrated circuit), CMOS(complementary metal oxide semiconductor) 또는 TTL(transistor-transistor logic) 기술 등의 회로 기술을 이용한 고정된-기능 로직 하드웨어로, 또는 이들의 임의의 조합으로, RAM(random access memory), ROM(read only memory), PROM(programmable ROM), 펌웨어, 플래시 메모리 등의 메모리의 머신- 또는 컴퓨터-판독가능한 저장 매체에 저장된 로직 명령어들의 세트로서 실행가능한 소프트웨어로 구현될 수 있다.
먼저 흐름도의 좌측 반쪽을 참조하면, 처리할 어떠한 높은 우선순위 컨텍스트도 없는 경우가 먼저 고려된다. 가장 간단한 경우, 컴퓨터는 3D 렌더링에 대한 작업흐름을 처리하고 있는 중일 수 있다. 이것은, 예를 들어, 이미지가 도 2에 도시된 다양한 스테이지를 갖는 3D 이미지 파이프라인을 순회하며(traversing) 파이프라인을 이 컨텍스트로 채우고 있는 수천개의 삼각형 요소로부터 생성될 것이라는 것을 의미할 수 있다. 이 컨텍스트는 보통의 낮은 우선순위 컨텍스트 작업부하일 수 있다. 이것은, 이 간단한 경우에는 블록(403)에서 메모리로부터 복구할 어떠한 낮은 우선순위 컨텍스트 상태도 없기 때문에 예시된 블록(404)에서 실행을 개시하고, 블록(406)에서 고려할 어떠한 선점이나 일시정지도 없는 경우, 실행은 블록(408)에서 완료될 수 있다. 양호한 관리와 설계의 문제로서, 종료된 방금 실행된 컨텍스트는 다른 곳에서의 추가 이용을 위해 블록(410)에서 메모리에 보관될 수 있다. 이 메모리는, 메인 저장소 메모리 또는 GPU상의 DDR 메모리 또는 완료된 컨텍스트를 저장하기에 편리한 임의의 다른 메모리일 수 있다. 또한 410에서, 소프트웨어 스케쥴러는 컨텍스트가 완료되었다는 것을 통보받을 수 있고, 프로세스는 412에서 종료한다.
일반적인 작업 흐름을 포함하는 컨텍스트의 스트림 중간에서, 일부에 대해서는 우선순위의 제1 척도가 부여되어야 하는 경우가 종종 있을 수 있다. 이러한 컨텍스트의 예는 다양하다. 예를 들어, 미디어 컨텍스트에서 GPGPU(General Purpose Graphics Processing Unit) 작업부하가 백그라운드에서 동작하며 N-체(N-Body) 중력 시뮬레이션과 같은 수학적으로 집약적인 계산을 수행하고 있는 동안 영화 또는 클립을 보여주는 것을 수반하는 실시예가 있을 수 있다. 이 예에서, 미디어는 GPGPU 작업부하에 비해 우선순위를 부여받을 것이다. 다른 실시예에서, 그 역일 수도 있다.
주어진 컨텍스트가 본원에서는 높은 우선순위 컨텍스트에 관해 "낮은 우선순위"로서 명명될 수 있지만, 이들은 작업흐름에서 다른 컨텍스트들에 비해 여전히 더 높은 우선순위를 가질 수도 있다. 이러한 상대적 우선(precedence)은, 항상, 하나의 이용(예를 들어, 마우스 움직임)의 다른 이용(예를 들어, 수학적 계산)에 대한 자동 우선순위로 인한 것일 필요는 없다. 예를 들어, 또 다른 실시예에서, 모든 컨텍스트에 대한 하드웨어 액세스의 균형잡힌 공유를 제공하여 다른 컨텍스트에 비해 GPU 컨텍스트에게 우선순위를 제공하는 패러다임을 반드시 따르지 않는 선점으로 이어지는 것을 목적으로 하는 운영 체제에서 구현되고 소프트웨어 스케쥴러(318)(도 3)를 통해 실행되는 알고리즘이 있을 수 있다.
그 다음, 일반적 작업흐름에 비해 우선순위를 갖는 낮은 우선순위 컨텍스트가 처리되는 경우가 고려된다. 낮은 우선순위 컨텍스트는 시작 블록(434)에서 블록(432)에 의해 낮은 우선순위 컨텍스트 제출 포트에서 제출될 수 있다. 앞서 언급된 바와 같이, 이렇게 지정된 컨텍스트들은 베이스라인 작업흐름에 비해 우선순위를 가지며, 이들은 프로세스에서 다른 이전에 제출된 낮은 우선순위 컨텍스트에 비해 우선순위를 가질 수도 있다. 따라서, 블록(436)에서, 이 방법은, 프로세스에서 이전에 제출된 낮은 우선순위 컨텍스트를 포함한, 높은 우선순위 컨텍스트가 아닌 파이프라인 내의 임의의 컨텍스트는 선점권을 빼앗길 수 있다고 지시할 수 있다. 여기서 선점은, 3D 파이프라인으로 흐르는 작업부하가 정지되고 파이프라인 내의 기존의 컨텍스트가 플러시 아웃(도 2에 도시된 바와 같은 스테이션들에서의 실행을 완료하도록 허용)된다는 것을 의미한다. 파이프라인을 플러시하는 이러한 프로세스는, 파이프라인의 깊이와 그 스테이션의 내부 캐시 메모리에 저장된 작업량에 따라, 즉각적이지 않을 수도 있다 - 이것은 수천 클록 사이클이 걸릴 수 있다. 예를 들어, 3D 객체의 렌더링을 위한 프리미티브로서 삼각형이 이용되는 그래픽 처리에서, 파이프라인 내의 각각의 스테이션은 수천개의 삼각형을 포함하는 캐시를 가질 수 있다. 파이프라인을 플러시하는 프로세스는, 파이프라인 내의 이들 삼각형들에 관한 작업을 완료하는 것을 수반할 수 있으므로, 예시된 블록(438)에서 파이프라인이 클리어(clear)되기를 기다리는 동안 상당한 레이턴시를 초래할 수 있다.
일단 파이프라인이 클리어되고 나면, 블록(440)에서, 소프트웨어 스케쥴러는 하드웨어 스케쥴러로부터 새로운 낮은 우선순위 컨텍스트가 수락되었다는 것을 나타내는 상태 업데이트를 수신할 수 있다. 블록(442)에서, 낮은 우선순위 컨텍스트는 블록(402)에서 파이프라인에서의 실행 프로세스를 개시하고, 이 프로세스는 블록(444)에서 제출 단계의 종료를 마킹한다(mark). 실행은, 먼저, 블록(403)에서 메모리에 이전에 저장된 임의의 이용가능한 상태 데이터의 메모리로부터의 페치(fetch)와 함께 시작하고, 예시된 블록(404)에서, 하드웨어는 작업부하의 실행을 개시할 수 있다. 작업부하가 실행 중에 있는 동안, 블록(406)에서, 파이프라인은 낮은 우선순위 컨텍스트 또는 높은 우선순위 컨텍스트 제출에 기인한 임의의 새로운 선점 또는 일시정지에 대해 시스템을 모니터링한다. 블록(406)에서의 실행 동안에, 또 다른 낮은 우선순위 컨텍스트가 블록(451)을 통해 도달하여 컨텍스트의 선점권을 빼앗거나 높은 우선순위 컨텍스트가 컨텍스트에서의 일시정지를 트리거하는 경우가 있을 수 있다. 더 이상의 선점 또는 일시정지가 없다면, 블록(408)에서, 컨텍스트는 완료되고 블록(412)에서 종료하기 이전에 임의의 추후의 재사용을 위해 앞서와 같이 블록(410)에서 메모리에 보관될 수 있다.
반면, 인입하는 낮은 우선순위 컨텍스트 또는 높은 우선순위 컨텍스트가 블록(406)에서 검출될 수 있고, 이 경우 낮은 우선순위 컨텍스트는 블록(408)에서 완료되지 않지만, 일시정지되거나 선점권을 빼앗길 수 있다. 블록(414)에서, 지시된 일시정지가 없다면, 블록(415)에서 낮은 우선순위 컨텍스트가 선점권을 빼앗긴다. 일시정지가 있는지에 대한 추가의 테스트가 블록(420)에서 수행되고, 없다면, 계속해서 선점이 있게 되고 블록(422)에서 낮은 우선순위 컨텍스트 상태가 메모리에 보관되고 하드웨어 스케쥴러는 소프트웨어 스케쥴러에게 낮은 우선순위 컨텍스트가 선점권을 빼앗겼다는 것을 통보할 수 있다.
지정된 높은 우선순위 컨텍스트의 제출을 위해 블록(446)에서의 높은 우선순위 컨텍스트 포트가 제공된다. 이 예에서, 높은 우선순위 컨텍스트는, 마우스, 트랙 패드 터치, 및 시기적절한 실행이 특별히 중요한 다른 GUI 명령에 의해 생성될 수 있다. 다른 실시예에서, 다른 동작들은 높은 우선순위를 갖는 것으로 지정될 수 있는 다른 컨텍스트들을 야기할 수 있다. 이 실시예에서는, 블록(446)에서의 높은 우선순위 컨텍스트 제출 포트는 하드웨어로 구현되지만, 다른 실시예에서는 소프트웨어로 구현될 수 있다.
높은 우선순위 컨텍스트는 소프트웨어 스케쥴러 또는 운영 체제의 다른 부분에 의해 검출된다. 검출된다면, 파이프라인을 플러시하기 위해 비교적 높은 레이턴시 페널티를 수반하게 되는, 파이프라인 내의 임의의 낮은 우선순위 컨텍스트의 선점권을 빼앗는 것 대신에, 예시된 블록(450)에서, 파이프라인 내의 임의의 컨텍스트의 일시정지가 개시되고 그 표시가 블록(451)을 통해 블록(406)에 전송될 수 있다. 파이프라인을 플러시하는 것 대신에, 파이프라인 내의 임의의 컨텍스트는, 위치하고 있는 스테이션에서 운행중인 동작 또는 진행중인 트랜잭션의 완료시와 같이, 도달할 수 있는 가장 가까운 논리적 지점에서 정지하도록 허용된다. 예를 들어, 컨텍스트가 파이프라인 내의 각각의 스테이션에서의 수천개의 삼각형의 그래픽 처리로 구성되는 경우에, 스테이션에서의 진행중인 임의의 개별 삼각형의 처리는 완료되는 것이 허용될 수 있지만, 그 컨텍스트에 대해서는 파이프라인이 일시정지되고 컨텍스트의 상태와 파이프라인 내의 계류중인/중간의 데이터는 메모리/온-칩 저장소에 복사된다. 흐름도(400)에 있어서, 컨텍스트는, 블록(410), 블록(422), 블록(426), 및 블록(450)을 포함하는 여러 위치에서 메모리에 보관될 수 있다. 파이프라인을 일시정지하는데 있어서 초래되는 레이턴시는 파이프라인을 플러시하는 것보다 상당히 작다.
블록(452)에서 일단 일시정지가 완료되거나 선행 컨텍스트가 실행을 이미 종료하고 나면, 블록(454)에서, 소프트웨어 스케쥴러는 높은 우선순위 컨텍스트가 수락되었다는 것을 통보받을 수 있다. 그 다음 블록(456)에서 높은 우선순위 컨텍스트 실행이 시작할 수 있다. 블록(460)에서, 선택적으로 메모리에 놓였을 수 있는 높은 우선순위 컨텍스트에 관한 임의의 이전에 저장된 상태 정보가 판독되어 그 높은 우선순위 컨텍스트 상태를 복구할 수 있고, 높은 우선순위 컨텍스트의 실행이 시작한다. 실행은 블록(462)에서 완료된다. 블록(464)에서, 완료된 높은 우선순위 컨텍스트의 상태가 나중의 추가 이용을 위해 메모리에 보관될 수 있고, 소프트웨어 스케쥴러는 높은 우선순위 컨텍스트가 완료되었다는 것을 통보받을 수 있다. 블록(466)에서, 임의의 계류중인 일시정지된 낮은 우선순위 컨텍스트가 재개되거나, 또는 (468)에서 전체 프로세스가 종료할 수 있다.
다시 방법(400)의 좌측을 참조하여, 높은 우선순위 컨텍스트 처리의 추가 양태가 고려된다. 블록(406)에서 일시정지의 표시(높은 우선순위 컨텍스트의 마크)가 도달하고, 블록(414)에서 접수확인이 이루어진다. 그 다음, 블록(424)에서 (여기서는 높은 우선순위가 아닌 임의의 컨텍스트를 의미할 수 있는) 임의의 활성의 낮은 우선순위 컨텍스트가 일시정지된다. 블록(426)에서, 그 중간 데이터가 이미 생성된 일시정지된 낮은 우선순위 컨텍스트의 상태가 온-칩 저장소 등의 메모리에 보관된다. 또한, 소프트웨어 스케쥴러는 낮은 우선순위 컨텍스트가 일시정지되었다는 것을 통보받는다. 블록(426)은 일시정지된 낮은 우선순위 컨텍스트에 관한 작업이 재개될 수 있다는 표시를 블록(466)으로부터 수신할 수 있고, 이 경우, 블록(430)에서 소프트웨어 스케쥴러는, 일시정지된 컨텍스트에 관한 작업이 재개될 수 있다는 것을 통보받고, 이것은 블록(402)에서 시작된다.
이제 도 5를 참조하면, 더 낮은 우선순위 컨텍스트의 높은 우선순위 컨텍스트 선점을 제공하는 방법의 또 다른 예가 흐름도(500)를 통해 도시되어 있다. 블록(504)에서 높은 우선순위 컨텍스트가 높은 우선순위 포트에 제출되는 경우가 먼저 고려된다. 블록(506)에서 고려될 진행중인 더 낮은 우선순위 컨텍스트가 없다면, 높은 우선순위 컨텍스트가 파이프라인에 전송되고 블록(512)에서 실행된다. 반면, 파이프라인 내에 더 낮은 우선순위 컨텍스트가 이미 존재한다면, 더 낮은 우선순위 컨텍스트가 블록(508)에서 일시정지되고, 블록(510)에서 그 상태와 미완료 작업이 (전용 온-다이 저장소일 수도 있는) 저장소 메모리에 보관된다. 추가로, 임의의 완료된 컨텍스트 처리는 메인 또는 DDR 그래픽 메모리에 저장될 수 있다.
블록(512)에서 높은 우선순위 컨텍스트의 완료 후에, (514)에서 임의의 일시정지된 낮은 우선순위 컨텍스트가 있는지에 대해 시스템이 폴링(poll)된다. 어떠한 것도 없다면, 블록(518)에서 시스템은 더 폴링되어 처리할 임의의 다른 낮은 우선순위 컨텍스트가 있는지를 결정한다. 어떠한 것도 없다면, 작업흐름은 종료된다. 처리할 다른 낮은 우선순위 컨텍스트가 있다면, 이것이 블록(520)에서 행해지고, 그리고 나서 완료된 경우, 이 작업흐름은 종료한다.
블록(514)에서 처리할 일시정지된 낮은 우선순위 컨텍스트가 남아 있다고 결정된다면, 그 상태와 임의의 부분적으로 완료된 작업이 블록(516)에서 메모리로부터 복구되고 블록(517)에서 파이프라인에서 처리되며, 그 후, 제어가 블록(518)으로 전달되고 전술된 바와 같이 계속된다.
블록(532)에서 낮은 우선순위 컨텍스트가 낮은 우선순위 포트에 제출될 수 있다. 흐름도(500)를 통해 이 경우에 후속하여, 조건 블록(534)에서, 높은 우선순위 컨텍스트가 높은 우선순위 포트에 제출되었는지가 결정된다. 제출되었다면, 흐름 제어는 앞서와 같은 처리를 위해 블록(506)으로 전달된다. 제출되지 않았다면, 블록(536)에서 파이프라인에서 임의의 더 오래된 낮은 우선순위 컨텍스트가 있는지가 추가로 결정된다. 없다면, 낮은 우선순위 컨텍스트가 파이프라인에 제출되고 538에서 완료시까지 실행되며, 작업부하는 540에서 종료한다. 반면, 또 다른 낮은 우선순위 컨텍스트가 파이프라인 내에 이미 있다면, 이것은 블록(542)에서 선점권을 빼앗기고 더 새로운 낮은 우선순위 컨텍스트가 블록(544)에서 실행된다. 그 완료 후에, 더 오래된 선점권을 빼앗긴 낮은 우선순위 컨텍스트가 블록(546)에서 다시 로딩되어 실행된다.
실시예에 따른 로직 아키텍처(600)의 예가 도 6에 제시되어 있다. 로직 아키텍처(600)는, 그래픽 파이프라인(602), 낮은 우선순위 컨텍스트 포트(604) 및 높은 우선순위 컨텍스트 포트(606)를 포함한다. 높은 우선순위 컨텍스트 검출 모듈(614)은 높은 우선순위 포트(606)로의 높은 우선순위 컨텍스트의 제출을 검출할 수 있다. 낮은 우선순위 컨텍스트가 파이프라인(602)에서 활성 컨텍스트인 경우 이러한 컨텍스트가 검출되면, 낮은 우선순위 컨텍스트 일시정지 모듈(616)은 낮은 우선순위 컨텍스트를 일시정지하고, 그 상태와 임의의 부분적으로 완료된 작업이 일시정지된 컨텍스트 보관 모듈(618)에 의해 온-다이 저장소(620)에 보관될 수 있다. 높은 우선순위 컨텍스트가 처리된 후에, 일시정지된 컨텍스트의 상태와 임의의 부분적으로 완료된 작업이 일시정지된 컨텍스트 복구 모듈(622)에 의해 온-다이 저장소(620)로부터 파이프라인에 복구되고 일시정지된 낮은 우선순위 컨텍스트에 관한 작업이 재개된다.
처리할 아무런 높은 우선순위 컨텍스트가 없을 수도 있다. 이 경우, 낮은 우선순위 컨텍스트 검출 모듈(626)은 낮은 우선순위 포트(604)로의 낮은 우선순위 컨텍스트의 제출을 검출한다. 또 다른 낮은 우선순위 컨텍스트가 파이프라인(602)에서 활성 컨텍스트일 때 이러한 컨텍스트가 검출된다면, 낮은 우선순위 컨텍스트 선점 모듈(628)은 낮은 우선순위 컨텍스트의 선점권을 빼앗고, 그 상태 뿐만 아니라 임의의 종료된 작업의 특정 양태들이 선점 컨텍스트 보관 모듈(630)에 의해 메인 메모리 또는 DDR 메모리일 수 있는 메모리(632)에 보관될 수 있다. 낮은 우선순위 컨텍스트가 처리된 후에, 보관되었을 수 있는 이러한 상태 정보와 선점권을 빼앗긴 낮은 우선순위 컨텍스트가 선점된 컨텍스트 복구 모듈(622)에 의해 파이프라인에 복구되고 선점권을 빼앗긴 낮은 우선순위 컨텍스트에 관한 작업이 재개된다.
도 7은 시스템(700)의 실시예를 나타낸다. 실시예에서, 시스템(700)은 미디어 시스템이지만 시스템(700)은 이러한 맥락으로 제한되지 않는다. 예를 들어, 시스템(700)은, 개인용 컴퓨터(PC), 랩톱 컴퓨터, 울트라-랩톱 컴퓨터, 태블릿, 터치 패드, 포터블 컴퓨터, 핸드헬드 컴퓨터, 팜톱(palmtop) 컴퓨터, PDA(personal digital assistant), 셀룰러 전화, 컴비네이션 셀룰러 전화/PDA, 텔레비전, 스마트 디바이스(예를 들어, 스마트폰, 스마트 태블릿 또는 스마트 텔레비전), 모바일 인터넷 디바이스(MID), 메시징 디바이스, 데이터 통신 디바이스 등에 포함될 수 있다. 따라서, 시스템(700)은 본원에서 설명된 바와 같이 이미지를 렌더링하는데 이용될 수 있다.
실시예에서, 시스템(700)은 디스플레이(720)에 결합된 플랫폼(702)을 포함한다. 플랫폼(702)은 콘텐츠 서비스 디바이스(들)(730) 또는 콘텐츠 전달 디바이스(들)(740) 또는 다른 유사한 콘텐츠 소스와 같은 콘텐츠 디바이스로부터 비디오 비트스트림 콘텐츠를 수신할 수 있다. 하나 이상의 네비게이션 피쳐를 포함하는 네비게이션 제어기(750)는, 예를 들어, 플랫폼(702) 및/또는 디스플레이(720)와 상호작용하는데 이용될 수 있다. 이들 컴포넌트들 각각은 이하에서 더 상세히 설명된다.
실시예에서, 플랫폼(702)은, 칩셋(705), 프로세서(710), 메모리(712), 저장소(714), 그래픽 서브시스템(715), 애플리케이션(716) 및/또는 무선장치(radio)(718)의 임의의 조합을 포함할 수 있다. 칩셋(705)은, 프로세서(710), 메모리(712), 저장소(714), 그래픽 서브시스템(715), 애플리케이션(716) 및/또는 무선장치(718)간의 상호통신을 제공할 수 있다. 예를 들어, 칩셋(705)은 저장소(714)와의 상호통신을 제공할 수 있는 저장소 어댑터(미도시)를 포함할 수 있다.
프로세서(710)는, CISC(Complex Instruction Set Computer) 또는 RISC(Reduced Instruction Set Computer) 프로세서, x86 명령어 세트 호환 프로세서, 멀티-코어, 또는 다른 임의의 마이크로프로세서 또는 중앙 처리 장치(CPU)로서 구현될 수 있다. 실시예에서, 프로세서(710)는, 듀얼-코어 프로세서(들), 듀얼-코어 모바일 프로세서(들) 등을 포함할 수 있다.
메모리(712)는, 이것으로 한정되는 것은 아니지만, RAM(Random Access Memory), DRAM(Dynamic Random Access Memory), 또는 SRAM(Static RAM)과 같은 휘발성 메모리 디바이스로서 구현될 수 있다.
저장소(714)는, 이것으로 한정되는 것은 아니지만, 자기 디스크 드라이브, 광 디스크 드라이브, 테이프 드라이브, 내부 저장소 디바이스, 부착된 저장소 디바이스, 플래시 메모리, 배터리 백업형 SDRAM(synchronous DRAM), 및/또는 네트워크 액세스가능한 저장소 디바이스와 같은 비휘발성 저장소 디바이스로서 구현될 수 있다. 실시예에서, 저장소(714)는, 예를 들어 복수의 하드 드라이브가 포함되는 경우 귀중한 디지털 미디어에 대한 저장소 성능 향상 보호를 증가시키는 기술을 포함할 수 있다.
그래픽 서브시스템(715)은 디스플레이를 위한 정지영상 또는 비디오와 같은 이미지의 처리를 수행할 수 있다. 그래픽 서브시스템(715)은, 예를 들어, 그래픽 처리 유닛(GPU) 또는 비주얼 처리 유닛(VPU)일 수 있다. 따라서 그래픽 서브시스템(715)은 이미 논의된 바와 같이 GPU(101)(도 1)를 포함할 수 있다. 또한, 프로세서(710)는, 메모리(712), 저장소(714), 또는 다른 적절한 소스로부터 획득된 명령어를 통해 CPU로서 동작하도록 구성될 수 있다. 그래픽 서브시스템(715)과 디스플레이(720)를 통신가능하게 결합하기 위해 아날로그 또는 디지털 인터페이스가 이용될 수 있다. 예를 들어, 인터페이스는, HDMI(High-Definition Multimedia Interface), 디스플레이포트(DisplayPort), 무선 HDMI, 및/또는 무선 HD 준수 기술 중 임의의 것일 수 있다. 그래픽 서브시스템(715)는 프로세서(710) 또는 칩셋(705) 내에 통합될 수 있다. 그래픽 서브시스템(715)는 칩셋(705)에 통신가능하게 결합된 단독형 카드일 수 있다.
본원에서 설명된 그래픽 및/또는 비디오 처리 기술들은 다양한 하드웨어 아키텍처로 구현될 수 있다. 예를 들어, 그래픽 및/또는 비디오 기능은 칩셋 내에 통합될 수 있다. 대안으로서, 개별 그래픽 및/또는 비디오 프로세서가 이용될 수도 있다. 역시 또 다른 실시예로서, 그래픽 및/또는 비디오 기능은 멀티-코어 프로세서를 포함하는 범용 프로세서에 의해 구현될 수도 있다. 추가 실시예에서, 기능들은 소비자 전자제품(consumer electronics)에서 구현될 수도 있다.
무선장치(718)는 다양한 적절한 무선 통신 기술을 이용하여 신호를 송수신할 수 있는 하나 이상의 무선장치를 포함할 수 있다. 이러한 기술은 하나 이상의 무선 네트워크를 통한 통신을 수반할 수 있다. 예시적인 무선 네트워크는, (이것으로 한정되는 것은 아니지만) WLAN(wireless local area network), WPAN(wireless personal area network), WMAN(wireless metropolitan area network), 셀룰러 네트워크, 및 위성 네트워크를 포함한다. 이러한 네트워크를 통한 통신에서, 무선장치(718)는 임의의 버전의 하나 이상의 적용가능한 표준들에 따라 동작할 수 있다.
실시예에서, 디스플레이(720)는 임의의 텔레비전 유형 모니터 또는 디스플레이를 포함할 수 있다. 디스플레이(720)는, 예를 들어, 컴퓨터 디스플레이 스크린, 터치 스크린 디스플레이, 비디오 모니터, 텔레비전형 디바이스, 및/또는 텔레비전을 포함할 수 있다. 디스플레이(720)는 디지털 및/또는 아날로그일 수 있다. 실시예에서, 디스플레이(720)는 홀로그래픽 디스플레이일 수 있다. 또한, 디스플레이(720)는 시각적 프로젝션(visual projection)을 수신할 수 있는 투명한 표면일 수 있다. 이러한 프로젝션은, 다양한 형태의 정보, 이미지, 및/또는 객체를 전달할 수 있다. 예를 들어, 이러한 프로젝션은 MAR(mobile augmented reality) 애플리케이션을 위한 비주얼 오버레이(visual overlay)일 수 있다. 하나 이상의 소프트웨어 애플리케이션(716)의 제어하에, 플랫폼(702)은 사용자 인터페이스(722)를 디스플레이(720) 상에 디스플레이할 수 있다.
실시예에서, 콘텐츠 서비스 디바이스(들)(730)은, 임의의 국내(national), 국제(international) 및/또는 독립(independent) 서비스에 의해 호스팅될 수 있으므로 예를 들어 인터넷을 통해 플랫폼(702)에 액세스가능할 수 있다. 콘텐츠 서비스 디바이스(들)(730)은 플랫폼(702) 및/또는 디스플레이(720)에 결합될 수 있다. 플랫폼(702) 및/또는 콘텐츠 서비스 디바이스(들)(730)은 네트워크(760)로 및 네트워크(760)으로부터 미디어 정보를 전달(예를 들어, 전송 및/또는 수신)하기 위해 네트워크(760)에 결합될 수 있다. 콘텐츠 전달 디바이스(들)(740)이 또한 플랫폼(702) 및/또는 디스플레이(720)에 결합될 수 있다.
실시예에서, 콘텐츠 서비스 디바이스(들)(730)은, 케이블 텔레비전 박스, 개인용 컴퓨터, 네트워크, 전화, 디지털 정보 및/또는 콘텐츠를 전달할 수 있는 인터넷 가능형 디바이스 또는 기구, 및 콘텐츠 제공자와 플랫폼(702) 및/또는 디스플레이(720) 사이에서, 네트워크(760)를 통해 또는 직접 콘텐츠를 단방향으로 또는 양방향으로 전달할 수 있는 기타 임의의 유사한 디바이스를 포함할 수 있다. 콘텐츠는 네트워크(760)를 통해 시스템(700) 내의 컴포넌트들 중 임의의 하나와 콘텐츠 제공자에 및 이들로부터 단방향으로 및/또는 양방향으로 콘텐츠가 통신될 수 있다는 것을 이해할 것이다. 콘텐츠의 예로서는, 예를 들어, 비디오, 음악, 의료 및 게이밍 정보 등을 포함하는 임의의 미디어 정보가 포함될 수 있다.
콘텐츠 서비스 디바이스(들)(730)은, 미디어 정보, 디지털 정보, 및/또는 다른 콘텐츠를 포함한 케이블 텔레비전 프로그래밍 등의 콘텐츠를 수신한다. 콘텐츠 제공자의 예로서는, 임의의 케이블 또는 위성 텔레비전 또는 라디오 또는 인터넷 콘텐츠 제공자가 포함될 수 있다. 제공된 예들은 실시예를 제한하는 것을 의미하는 것은 아니다.
실시예에서, 플랫폼(702)은 하나 이상의 네비게이션 피쳐를 갖는 네비게이션 제어기(750)로부터 제어 신호를 수신할 수 있다. 제어기(750)의 네비게이션 피쳐는, 예를 들어, 사용자 인터페이스(722)와 상호작용하는데 이용될 수 있다. 실시예에서, 네비게이션 제어기(750)는, 사용자가 공간(예를 들어, 연속 및 다차원) 데이터를 컴퓨터에 입력할 수 있게 해주는 컴퓨터 하드웨어 컴포넌트(특히 휴먼 인터페이스 디바이스)일 수 있는 포인팅 디바이스일 수 있다. 그래픽 유저 인터페이스(GUI), 텔레비전 및 모니터 등의 많은 시스템은 사용자가 물리적 제스쳐를 이용하여 컴퓨터나 텔레비전을 제어하고 이들에 데이터를 제공하는 것을 허용한다.
제어기(750)의 네비게이션 피쳐들의 움직임은, 디스플레이 상에 디스플레이된 포인터, 커서, 포커스 링, 또는 다른 시각적 표시자의 움직임에 의해 디스플레이(예를 들어, 디스플레이(720)) 상에 반향(echo)될 수 있다. 예를 들어, 소프트웨어 애플리케이션(716)의 제어하에, 네비게이션 제어기(750) 상에 위치한 네비게이션 피쳐들은, 예를 들어, 사용자 인터페이스(722) 상에 디스플레이된 가상 네비게이션 피쳐들에 맵핑될 수 있다. 실시예에서, 제어기(750)는 별개의 컴포넌트가 아니라 플랫폼(702) 및/또는 디스플레이(720) 내에 통합될 수 있다. 그러나, 실시예들은, 여기서 도시되거나 설명된 요소들 또는 맥락으로 제한되지 않는다.
실시예에서, 드라이버(미도시)는, 예를 들어, 인에이블되는 경우, 초기 부트-업 이후에 버튼의 터치에 의해 사용자가 플랫폼(702)을 텔레비전처럼 즉시 온 및 오프할 수 있게 하는 기술을 포함할 수 있다. 프로그램 로직은, 플랫폼이 턴 "오프"되는 경우, 플랫폼(702)이 미디어 어댑터나 다른 콘텐츠 서비스 디바이스(들)(730)이나 콘텐츠 전달 디바이스(들)(740)에 콘텐츠를 스트리밍하는 것을 허용할 수 있다. 또한, 칩셋(705)은, 예를 들어, 5.1 서라운드 사운드 오디오 및/또는 고품질 7.1 서라운드 사운드 오디오에 대한 하드웨어 및/또는 소프트웨어 지원을 포함할 수 있다. 드라이버는 통합된 그래픽 플랫폼에 대한 그래픽 드라이버를 포함할 수 있다. 실시예에서, 그래픽 드라이버는 PCI(peripheral component interconnect) Express 그래픽 카드를 포함할 수 있다.
다양한 실시예에서, 시스템(700)에 도시된 컴포넌트들 중 임의의 하나 이상이 통합될 수 있다. 예를 들어, 플랫폼(702) 및 콘텐츠 서비스 디바이스(들)(730)이 통합되거나, 플랫폼(702) 및 콘텐츠 전달 디바이스(들)(740)이 통합되거나, 플랫폼(702), 콘텐츠 서비스 디바이스(들)(730), 및 콘텐츠 전달 디바이스(들)(740)이 통합될 수 있다. 다양한 실시예에서, 플랫폼(702) 및 디스플레이(720)는 통합된 유닛일 수 있다. 예를 들어, 디스플레이(720) 및 콘텐츠 서비스 디바이스(들)(730)이 통합되거나, 디스플레이(720) 및 콘텐츠 전달 디바이스(들)(740)이 통합될 수 있다. 이들 예들은 실시예를 제한하는 것을 의미하는 것은 아니다.
다양한 실시예에서, 시스템(700)은, 무선 시스템, 유선 시스템, 또는 이들의 조합으로서 구현될 수 있다. 무선 시스템으로서 구현되는 경우, 시스템(700)은, 하나 이상의 안테나, 송신기, 수신기, 송수신기, 증폭기, 필터, 제어 로직 등과 같은, 무선 공유 매체를 통한 통신에 적합한 컴포넌트와 인터페이스를 포함할 수 있다. 무선 공유 매체의 예로서는, RF 스펙트럼 등과 같은, 무선 스펙트럼의 부분들이 포함될 수 있다. 유선 시스템으로서 구현되는 경우, 시스템(700)은, 입력/출력(I/O) 어댑터, I/O 어댑터를 대응하는 유선 통신 매체에 접속하는 물리적 커넥터, 네트워크 인터페이스 카드(NIC), 디스크 제어기, 비디오 제어기, 오디오 제어기 등과 같은, 유선 통신 매체를 통한 통신에 적합한 컴포넌트와 인터페이스를 포함할 수 있다. 유선 통신 매체의 예로서는, 와이어, 케이블, 금속 리드, PCB(printed circuit board), 백플레인(backplane), 스위치 패브릭(switch fabric), 반도체 재료, 트위스티드-페어 와이어(twisted-pair wire), 동축 케이블, 광섬유 등이 포함될 수 있다.
플랫폼(702)은 정보를 통신하기 위한 하나 이상의 논리적 또는 물리적 채널을 구축할 수 있다. 정보는 미디어 정보 및 제어 정보를 포함할 수 있다. 미디어 정보란 사용자를 위해 의도된 콘텐츠를 나타내는 임의의 데이터를 말한다. 콘텐츠의 예로서는, 예를 들어, 음성 대화, 화상회의, 스트리밍 비디오, 전자메일("email") 메시지, 음성 메일 메시지, 영숫자 기호들, 그래픽, 이미지, 비디오, 텍스트 등으로부터의 데이터가 포함될 수 있다. 음성 대화로부터의 데이터는, 예를 들어, 음성 정보, 묵음 기간, 배경 잡음, 컴포트 잡음(comfort noise), 톤(tone) 등일 수 있다. 제어 정보란, 자동화된 시스템을 위해 의도된 명령(command), 명령어(instruction) 또는 제어 워드를 나타내는 임의의 데이터를 말한다. 예를 들어, 제어 정보는, 미디어 정보를 시스템을 통해 라우팅하거나, 미리결정된 방식으로 미디어 정보를 처리하도록 노드에게 지시하는데 이용될 수 있다. 그러나, 실시예는, 도 7에 도시되거나 설명된 요소들 또는 맥락으로 제한되지 않는다.
전술된 바와 같이, 시스템(700)은 다양한 물리적 스타일 또는 폼팩터로 실시될 수 있다. 도 8은 시스템(700)이 실시될 수 있는 작은 폼 팩터 디바이스(small form factor device)(800)의 실시예들을 도시한다. 실시예에서, 예를 들어, 디바이스(800)는 무선 능력을 갖는 모바일 컴퓨팅 디바이스로서 구현될 수 있다. 모바일 컴퓨팅 디바이스란, 처리 시스템과, 예를 들어, 하나 이상의 배터리와 같은, 모바일 전력 소스 또는 서플라이를 갖는 임의의 디바이스를 말한다.
전술된 바와 같이, 모바일 컴퓨팅 디바이스의 예로서는, 개인용 컴퓨터(PC), 랩톱 컴퓨터, 울트라-랩톱 컴퓨터, 태블릿, 터치 패드, 포터블 컴퓨터, 핸드헬드 컴퓨터, 팜톱 컴퓨터, PDA(personal digital assistant), 셀룰러 전화, 컴비네이션 셀룰러 전화/PDA, 텔레비전, 스마트 디바이스(예를 들어, 스마트폰, 스마트 태블릿 또는 스마트 텔레비전), 모바일 인터넷 디바이스(MID), 메시징 디바이스, 데이터 통신 디바이스 등이 포함될 수 있다.
모바일 컴퓨팅 디바이스의 예로서는 또한, 손목 컴퓨터, 손가락 컴퓨터, 링 컴퓨터, 안경 컴퓨터, 벨트-클립 컴퓨터, 암-밴드(arm-band) 컴퓨터, 신발 컴퓨터, 의복 컴퓨터, 및 기타의 착용가능한 컴퓨터와 같은, 사람이 착용하도록 구성된 컴퓨터가 포함될 수 있다. 실시예에서, 예를 들어, 모바일 컴퓨팅 디바이스는, 컴퓨터 애플리케이션 뿐만 아니라 음성 통신 및/또는 데이터 통신을 실행할 수 있는 스마트폰으로서 구현될 수 있다. 일부 실시예들이 예로서 스마트폰으로서 구현된 모바일 컴퓨팅 디바이스를 이용하여 설명될 수 있지만, 다른 실시예들은 역시 다른 무선 모바일 컴퓨팅 디바이스를 이용하여 구현될 수 있다는 것을 이해할 것이다. 실시예들은 이러한 맥락으로 제한되지 않는다.
도 8에 도시된 바와 같이, 디바이스(800)는, 하우징(802), 디스플레이(804), 입력/출력(I/O) 디바이스(806), 및 안테나(808)를 포함할 수 있다. 디바이스(800)는 또한, 네비게이션 피쳐(812)를 포함할 수 있다. 디스플레이(804)는, 모바일 컴퓨팅 디바이스에 대해 적절한 정보를 디스플레이하기 위한 임의의 적절한 디스플레이 유닛을 포함할 수 있다. I/O 디바이스(806)는 모바일 컴퓨팅 디바이스에 정보를 입력하기 위한 임의의 적절한 I/O 디바이스를 포함할 수 있다. I/O 디바이스(806)의 예로서는, 영숫자 키보드, 숫자 키패드, 터치 패드, 입력 키, 버튼, 스위치, 락커(rocker) 스위치, 마이크로폰, 스피커, 음성 인식 디바이스 및 소프트웨어 등이 포함될 수 있다. 정보는 또한, 마이크로폰을 통해 디바이스(800) 내에 입력될 수 있다. 이러한 정보는 음성 인식 디바이스에 의해 디지털화될 수 있다. 실시예들은 이러한 맥락으로 제한되지 않는다.
추가 유의사항 및 예:
예 1은, 프로세서, 파이프라인, 제1 우선순위를 갖는 컨텍스트를 수신하는 제1 포트, 제1 우선순위보다 높은 제2 우선순위를 갖는 컨텍스트를 수신하는 제2 포트, 제2 포트에서 제2 우선순위를 갖는 컨텍스트의 수신을 검출하는 제2 우선순위 컨텍스트 검출 모듈, 및 제2 우선순위 검출 모듈이 제2 포트에서 제2 우선순위를 갖는 컨텍스트의 수신을 검출한 후에 파이프라인 내의 컨텍스트를 일시정지하는 일시정지 모듈을 갖는 시스템을 포함한다.
예 2는, 상기 컨텍스트들 중 적어도 하나의 상태를 저장하는 온-다이 저장소를 더 포함하고, 상기 온-다이 저장소와 상기 프로세서는 공통의 다이 상에 있는, 예 1의 시스템을 포함할 수 있다.
예 3은, 제2 우선순위를 갖는 컨텍스트가 완료된 후에 일시정지된 컨텍스트를 복구하는 복구 모듈을 더 포함하는, 예 2의 시스템을 포함할 수 있다.
예 4는, 상기 모듈들 중 적어도 하나가 소프트웨어로 구현되는, 예 3의 시스템을 포함할 수 있다.
예 5는, 상기 일시정지 모듈이 하드웨어로 구현되는, 예 1의 시스템을 포함할 수 있다.
예 6은, 상기 제1 포트에 컨텍스트가 제출된 후에 상기 파이프라인 내의 컨텍스트의 선점권을 빼앗는 선점 모듈을 더 포함하는 예 1 또는 예 2의 시스템을 포함할 수 있다.
예 7은, 선점권을 빼앗긴 컨텍스트를 복구할 수 있는 선점 복구 모듈을 더 포함하는, 선행하는 예들 중 임의의 예의 시스템을 포함할 수 있다.
예 8은, 일시정지된 컨텍스트를 복구할 수 있는 일시정지 복구 모듈을 더 포함하는, 예 1, 2, 4, 및 5 중 임의의 예의 시스템을 포함할 수 있다.
예 9는, 3차원(3D) 그래픽 프로세서를 더 포함하는, 선행하는 예들 중 임의의 예의 시스템을 포함할 수 있다.
예 10은, 제1 우선순위를 갖는 컨텍스트에 전용되는 제1 포트에 제1 컨텍스트를 제출하는 단계, 상기 제1 컨텍스트를 파이프라인에 제출하는 단계, 제2 우선순위를 갖는 컨텍스트에 전용되는 제2 포트에 제2 컨텍스트를 제출하는 단계, 및 상기 제1 컨텍스트가 상기 파이프라인에서 완료되기 전에 상기 제1 컨텍스트를 일시정지하는 단계를 포함하는 방법을 포함할 수 있다.
예 11은, 상기 제2 포트로의 상기 컨텍스트의 제출을 검출하는 단계를 더 포함하는, 예 10의 방법을 포함할 수 있다.
예 12는, 상기 제1 컨텍스트의 상태와 종료되지 않은 작업을 온-다이 저장소에 복사한 다음 상기 제2 컨텍스트를 상기 파이프라인에 제출하는 단계를 더 포함하는, 예 10의 방법을 포함할 수 있다.
예 13은, 상기 제2 컨텍스트가 완료된 후에 상기 제1 컨텍스트를 재개하는 단계를 더 포함하는, 예 12의 방법을 포함할 수 있다.
예 14는, 상기 제1 포트에 컨텍스트가 제출된 후에 상기 파이프라인 내의 컨텍스트의 선점권을 빼앗는 단계를 더 포함하는 예 10-13 중 임의의 예의 방법을 포함할 수 있다.
예 15는, 컴퓨팅 디바이스에 의해 실행될 때, 상기 컴퓨팅 디바이스로 하여금, 제1 우선순위를 갖는 컨텍스트에 전용되는 제1 포트에 제1 컨텍스트를 제출하고, 상기 제1 컨텍스트를 파이프라인에 제출하며, 제2 우선순위를 갖는 컨텍스트에 전용되는 제2 포트에 제2 컨텍스트를 제출하고, 및 상기 제1 컨텍스트가 상기 파이프라인에서 완료되기 전에 상기 제1 컨텍스트를 일시정지하게 하는 한 세트의 명령어를 포함하는 적어도 하나의 컴퓨터 판독가능한 저장 매체를 포함할 수 있다.
예 16은, 상기 명령어는, 실행될 때, 상기 컴퓨팅 디바이스로 하여금, 상기 제2 포트로의 컨텍스트의 제출을 검출하게 하는, 예 15의 적어도 하나의 컴퓨터 판독가능한 저장 매체를 포함할 수 있다.
예 17은, 상기 명령어는, 실행될 때, 상기 컴퓨팅 디바이스로 하여금, 상기 제1 컨텍스트의 상태와 종료되지 않은 작업을 온-다이 저장소에 복사한 다음 상기 제2 컨텍스트를 상기 파이프라인에 제출하게 하는, 예 15의 적어도 하나의 컴퓨터 판독가능한 저장 매체를 포함할 수 있다.
예 18은, 상기 명령어는, 실행될 때, 상기 컴퓨팅 디바이스로 하여금, 상기 제2 컨텍스트가 완료된 후에 상기 제1 컨텍스트를 재개하게 하는, 예 15-17 중 임의의 예의 적어도 하나의 컴퓨터 판독가능한 저장 매체를 포함할 수 있다.
예 19는, 상기 명령어는, 실행될 때, 상기 컴퓨팅 디바이스로 하여금, 상기 제1 포트에 컨텍스트가 제출된 후에 상기 파이프라인 내의 컨텍스트의 선점권을 빼앗게 하는, 예 15-17 중 임의의 예의 적어도 하나의 컴퓨터 판독가능한 저장 매체를 포함할 수 있다.
예 20은, 제1 우선순위의 컨텍스트를 수신하는 제1 포트, 제2 우선순위의 컨텍스트를 수신하는 제2 포트, 컨텍스트를 처리하는 파이프라인, 포트로의 컨텍스트의 제출을 검출하는 컨텍스트 검출 모듈, 컨텍스트를 파이프라인에 전송하는 스케쥴러 모듈, 및 상기 제2 포트에서 수신된 컨텍스트를 위하여 상기 제1 포트에서 수신된 컨텍스트의 파이프라인 처리를 일시정지하는 일시정지 모듈을 포함하는 장치를 포함할 수 있다.
예 21은, 컨텍스트들 중 적어도 하나의 상태를 저장하는 온-다이 메모리를 더 포함하는, 예 20의 장치를 포함할 수 있다.
예 22는, 컨텍스트를 파이프라인에 복구하는 복구 모듈을 더 포함하는, 예 20의 장치를 포함할 수 있다.
예 23은, 컨텍스트에 관한 상태 정보를 저장하는 메모리를 더 포함하는, 예 20 또는 예 21의 장치를 포함할 수 있다.
예 24는, 그래픽 처리 유닛을 더 포함하는, 예 20의 장치를 포함할 수 있다.
예 25는, 상기 제2 포트에 제출된 컨텍스트의 완료 후에 일시정지된 컨텍스트를 재개하는 일시정지된 컨텍스트 복구 모듈을 더 포함하는, 예 20-22 중 임의의 예의 장치를 포함할 수 있다.
예 26은, 제1 우선순위를 갖는 컨텍스트를 제출하기 위한 제1 포트, 제2 우선순위를 갖는 컨텍스트를 제출하기 위한 제2 포트, 상기 제2 포트로의 컨텍스트의 제출을 검출하기 위한 수단, 및 상기 제2 포트로의 컨텍스트의 제출이 검출된 후에 상기 파이프라인 내의 컨텍스트를 일시정지하기 위한 수단을 포함하는 장치를 포함할 수 있다.
예 27은, 상기 컨텍스트를 일시정지하기 위한 수단은 소프트웨어로 구현되는, 예 26의 장치를 포함할 수 있다.
예 28은, 상기 컨텍스트를 일시정지하기 위한 수단은 하드웨어로 구현되는, 예 26의 장치를 포함할 수 있다.
예 29는, 제1 우선순위를 갖는 컨텍스트의 상태가 저장되는 온-다이 메모리를 더 포함하는, 예 26의 장치를 포함할 수 있다.
예 30은, 제2 우선순위를 갖는 컨텍스트의 상태가 저장되는 메모리를 더 포함하는, 예 26 또는 예 29의 장치를 포함할 수 있다.
예 31은, 포트들 중 하나에 제출된 컨텍스트의 상태를 저장하기 위한 메모리와, 일시정지된 컨텍스트를 재개하기 위한 모듈을 더 포함하는, 예 26의 장치를 포함할 수 있다.
예 32는, 상기 제1 포트에 컨텍스트가 제출된 후에 상기 파이프라인 내의 컨텍스트의 선점권을 빼앗는 수단을 더 포함하는 예 26-29 중 임의의 예의 장치를 포함할 수 있다.
예 33은, 선점권을 빼앗긴 컨텍스트를 복구하는 수단을 더 포함하는, 예 32의 장치를 포함할 수 있다.
예 34는, 일시정지된 컨텍스트를 복구하는 수단을 더 포함하는, 예 26의 장치를 포함할 수 있다.
예 35는, 복수의 파이프라인을 더 포함하는, 예 26의 장치를 포함할 수 있다.
예 36은, 각각 더 높은 레벨의 처리 우선순위와 더 낮은 레벨의 처리 우선순위의 태스크에 대응하는 제1 및 제2 포트를 제공하는 단계, 상기 제1 포트에 제출된 더 낮은 우선순위 태스크를 파이프라인에 포워딩하는 단계, 상기 제1 포트에 태스크가 제출될 때 파이프라인 내에 있을 수 있는 임의의 더 낮은 우선순위 태스크의 파이프라인을 플러시하고 그 자리에 상기 제1 포트에 제출된 태스크를 제출함으로써 상기 파이프라인에서 현재 수행 중인 임의의 더 낮은 우선순위 태스크의 선점권을 빼앗는 단계, 및 상기 제2 포트에 태스크가 제출될 때 상기 파이프라인 내에 있을 수 있는 임의의 더 낮은 우선순위 태스크를 일시정지하고 그 자리에 상기 제2 포트에 제출된 태스크를 제출하는 단계를 포함하는 프로세서에 의해 처리될 태스크들을 우선순위화하는 방법을 포함할 수 있다.
예 37은, 상기 제2 포트에 제출된 태스크는 그래픽을 포함하는, 예 36의 방법을 포함할 수 있다.
다양한 실시예들은, 하드웨어 요소, 소프트웨어 요소, 또는 이들의 조합을 이용하여 구현될 수 있다. 하드웨어 요소의 예로서는, 프로세서, 마이크로프로세서, 회로, 회로 요소(예를 들어, 트랜지스터, 저항기, 커패시터, 인덕터 등), 집적 회로, 주문형 집적 회로(ASIC; application specific integrated circuit), 프로그래머블 로직 디바이스(PLD; programmable logic device), 디지털 신호 처리기(DSP; digital signal processor), 필드 프로그래머블 게이트 어레이(FPGA; field programmable gate array), 로직 게이트, 레지스터, 반도체 디바이스, 칩, 마이크로칩, 칩셋 등이 포함될 수 있다. 소프트웨어 요소의 예로서는, 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 머신 프로그램, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 함수(function), 메소드(method), 프로시져(procedure), 소프트웨어 인터페이스, 애플리케이션 프로그램 인터페이스(API), 명령어 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼, 또는 이들의 임의의 조합이 포함될 수 있다. 실시예가 하드웨어 요소들 및/또는 소프트웨어 요소들을 이용하여 구현되는지를 결정하는 것은, 원하는 계산 레이트, 전력 레벨, 열 허용 한계, 처리 사이클 버짓(processing cycle budget), 입력 데이터 레이트, 출력 데이트 레이트, 메모리 자원, 데이터 버스 속도 및 다른 설계 또는 성능 제약 등의 임의의 수의 인자들에 따라 달라질 수 있다.
적어도 일 실시예의 하나 이상의 양태는 머신에 의해 판독될 때 머신으로 하여금 본 명세서에서 설명되는 기술들을 수행하기 위한 논리를 제조하게 하는 프로세서 내의 다양한 논리를 나타내는 머신 판독가능한 매체 상에 저장된 표현 명령어들에 의해 구현될 수 있다. "IP 코어"라고 알려진 이러한 표현들은, 유형의 머신 판독가능한 매체에 저장될 수 있으며, 로직이나 프로세서를 실제로 만드는 제조 머신 내에 로딩하기 위해 다양한 고객이나 제조 설비에 공급될 수도 있다.
실시예들은 모든 타입의 반도체 집적 회로("IC") 칩에서의 사용에 적용가능하다. 이들 IC 칩들의 예로서는, 프로세서, 제어기, 칩셋 컴포넌트, 프로그래머블 로직 어레이(PLA), 메모리 칩, 네트워크 칩 등이 포함되지만, 이것으로 제한되지 않는다. 또한, 도면들 중 일부에서, 신호 도전체 라인들은 라인으로 표현된다. 일부는 보다 구성적인 신호 경로들을 지시하기 위해 상이할 수 있고, 구성 신호 경로들의 수를 지시하기 위해 숫자 라벨을 가질 수 있고 그리고/또는 주요 정보 흐름 방향을 지시하기 위해 하나 이상의 단부에서 화살표를 가질 수 있다. 그러나, 이것은 제한적 방식으로 해석되어서는 안 된다. 오히려, 그러한 추가 상세는 하나 이상의 예시적인 실시예와 관련하여 회로의 더 쉬운 이해를 촉진하기 위해 사용될 수 있다. 임의의 표현된 신호선들은 추가 정보를 갖는지의 여부에 관계없이 다수의 방향으로 이동할 수 있고 임의의 적절한 타입의 신호 스킴에 의해 구현될 수 있는 하나 이상의 신호, 예를 들어 차동 쌍들, 광섬유 선들 및/또는 단일 종단 선들에 의해 구현되는 디지털 또는 아날로그 선들을 실제로 포함할 수 있다.
예시의 크기/모델/값/범위가 주어졌지만, 실시예는 이것으로 제한되지 않는다. 시간이 지남에 따라 제조 기술(예를 들어, 포토리소그래피)이 발달함에 따라, 더 작은 크기의 디바이스들이 제조될 수 있을 것으로 예상된다. 또한, IC 칩 및 다른 컴포넌트에 대한 공지된 전원/접지 접속들은 예시 및 설명의 간소화를 위해 그리고 본 발명의 실시예들의 소정 양태들을 불명확하게 하지 않기 위해 도면들 내에 도시되거나 도시되지 않을 수 있다. 또한, 구성들은 본 발명의 실시예들을 불명확하게 하지 않기 위해 그리고 또한 그러한 블록도 구성들의 구현과 관련된 상세들이 실시예가 구현되는 플랫폼에 크게 의존한다는 사실, 즉 그러한 상세들이 통상의 기술자의 이해 범위 내에 있어야 한다는 사실에 비추어 그러한 블록도 형태로 도시될 수 있다. 실시예를 설명하기 위하여 구체적인 상세사항(예를 들어, 회로)이 개시되어 있는 경우, 실시예는 이들 구체적인 상세사항없이, 또는 이들의 변형과 더불어 실시될 수 있다는 것은, 통상의 기술자에게 명백할 것이다. 따라서, 상기 설명은 제한이 아니라 설명적인 것으로 간주되어야 한다.
일부 실시예는, 예를 들어, 머신에 의해 실행될 때, 머신으로 하여금 실시예에 따른 방법 및/또는 동작을 수행하게 할 수 있는 명령어 또는 명령어들의 세트를 저장할 수 있는, 머신 또는 유형의 컴퓨터-판독가능한 매체 또는 제품을 이용하여 구현될 수 있다. 이러한 머신은, 예를 들어, 임의의 적절한 처리 플랫폼, 컴퓨팅 플랫폼, 컴퓨팅 디바이스, 처리 디바이스, 컴퓨팅 시스템, 처리 시스템, 컴퓨터, 프로세서 등을 포함할 수 있고, 하드웨어 및/또는 소프트웨어의 임의의 적절한 조합을 이용하여 구현될 수 있다. 머신-판독가능한 매체 또는 제품은, 예를 들어, 임의의 적절한 타입의 메모리 유닛, 메모리 디바이스, 메모리 제품, 메모리 매체, 저장 디바이스, 저장 제품, 저장 매체, 및/또는 저장 유닛, 예를 들어, 메모리, 착탈식 또는 비-착탈식 매체, 소거가능한 또는 소거가능하지 않은 매체, 기록가능한 또는 재기록가능한 매체, 디지털 또는 아날로그 매체, 하드 디스크, 플로피 디스크, CD-ROM(Compact Disk Read Only Memory), CD-R(Compact Disk Recordable), CD-RW(Compact Disk Rewriteable), 광 디스크, 자기 매체, 광자기 매체, 착탈식 메모리 카드 또는 디스크, 다양한 타입의 DVD(Digital Versatile Disk), 테이프, 카셋트 등을 포함할 수 있다. 명령어는, 임의의 적절한 하이-레벨, 로우-레벨, 객체-지향형, 비주얼, 컴파일된 및/또는 인터프리팅된 프로그래밍 언어를 이용하여 구현된, 소스 코드, 컴파일된 코드, 인터프리팅된 코드, 실행가능한 코드, 정적 코드, 동적 코드, 암호화된 코드 등의 임의의 적절한 타입의 코드를 포함할 수 있다.
구체적으로 달리 언급되지 않는 한, "처리", 컴퓨팅", "계산", "결정" 등과 같은 용어는, 컴퓨팅 시스템의 레지스터 및/또는 메모리 내의 물리적 양(예를 들어, 전자적)으로 표현된 데이터를, 컴퓨팅 시스템의 메모리, 레지스터, 또는 다른 이러한 정보 저장, 전송 또는 표시 디바이스 내에서 물리적 양으로서 유사하게 표현되는 다른 데이터로 조작 및/또는 변환하는, 컴퓨터 또는 컴퓨팅 시스템, 또는 유사한 전자 컴퓨팅 디바이스의 액션 및/또는 처리를 말한다는 것을 이해해야 한다. 실시예들은 이 맥락에서 제한되지 않는다.
용어 "결합된"은, 본 명세서에서, 해당 컴포넌트들 사이에서의 직접 또는 간접의 임의의 타입의 관계를 말하며, 전기적, 기계적, 유체, 광학적, 전자기적, 전기기계적, 또는 다른 접속에 적용될 수 있다. 또한, 용어 "제1", "제2" 등은 본 명세서에서 논의를 용이하게 하기 위해서만 사용되고, 달리 표시되지 않는 한 특정한 시간적 또는 시간순서적 중요도를 의미하지 않는다.
통상의 기술자라면 전술한 설명으로부터 실시예의 광범위한 기술들이 다양한 형태로 구현될 수 있다는 것을 이해할 것이다. 따라서, 실시예들이 그 특정한 예와 연계하여 설명되었지만, 도면, 명세서 및 이하의 청구항의 검토시에 다른 변형들이 통상의 기술자에게는 명백하기 때문에 실시예의 진정한 범위는 그것으로 제한되지 않는다.

Claims (25)

  1. 프로세서;
    파이프라인;
    제1 우선순위를 갖는 컨텍스트를 수신하는 제1 포트;
    상기 제1 우선순위보다 높은 제2 우선순위를 갖는 컨텍스트를 수신하는 제2 포트;
    상기 제2 포트에서의 상기 제2 우선순위를 갖는 상기 컨텍스트의 수신을 검출하는 제2 우선순위 컨텍스트 검출 모듈;
    상기 파이프라인 내의 상기 제1 우선순위를 갖는 컨텍스트의 선점권을 빼앗는 선점 모듈(pre-emption module) - 파이프라인 내의 컨텍스트의 선점권을 빼앗는 것(pre-empt)은, 상기 파이프라인 내의 기존의 컨텍스트가 실행을 완료하는 것을 허용함으로써 상기 파이프라인을 플러시하는(flushing) 것을 포함함 -;
    상기 제2 우선순위 컨텍스트 검출 모듈이 상기 제2 포트에서의 상기 제2 우선순위를 갖는 상기 컨텍스트의 수신을 검출한 후에 상기 파이프라인을 플러시하지 않고, 상기 파이프라인 내의 상기 제1 우선순위를 갖는 컨텍스트를 일시정지하는 일시정지 모듈;
    상기 제2 우선순위를 갖는 상기 컨텍스트가 완료된 후에, 상기 제1 우선순위를 갖는 다른 임의의 컨텍스트들보다 우선적으로, 일시정지된 컨텍스트를 복구하는 복구 모듈; 및
    상기 컨텍스트들 중 적어도 하나의 상태를 저장하는 온-다이 저장소(on-die storage)
    를 포함하는 시스템.
  2. 제1항에 있어서, 상기 온-다이 저장소와 상기 프로세서는 공통의 다이 상에 있는 시스템.
  3. 삭제
  4. 제1항에 있어서, 상기 모듈들 중 적어도 하나의 모듈은 소프트웨어로 구현되는 시스템.
  5. 제1항에 있어서, 상기 일시정지 모듈은 하드웨어로 구현되는 시스템.
  6. 제1항에 있어서, 상기 선점 모듈은, 상기 제1 우선순위를 갖는 다른 컨텍스트가 상기 제1 포트에 제출된 후에 상기 파이프라인 내의 상기 제1 우선순위를 갖는 컨텍스트의 선점권을 빼앗는, 시스템.
  7. 제6항에 있어서, 선점권을 빼앗긴 컨텍스트를 복구하는 선점 복구 모듈을 더 포함하는 시스템.
  8. 삭제
  9. 제1항에 있어서, 3차원(3D) 그래픽 프로세서를 포함하는 시스템.
  10. 제1 우선순위를 갖는 컨텍스트들에 전용된 제1 포트에 제1 컨텍스트를 제출하는 단계;
    상기 제1 컨텍스트를 파이프라인에 제출하는 단계;
    다른 컨텍스트가 상기 제1 포트에 제출된 경우, 상기 파이프라인 내의 기존의 상기 제1 컨텍스트가 실행을 완료하는 것을 허용하도록 상기 파이프라인을 플러시함으로써 상기 파이프라인 내의 상기 제1 컨텍스트의 선점권을 빼앗는 단계;
    제2 우선순위를 갖는 컨텍스트들에 전용된 제2 포트에 제2 컨텍스트를 제출하는 단계;
    상기 제1 컨텍스트가 상기 파이프라인에서 완료되기 전에 상기 제1 컨텍스트를 일시정지하는 단계;
    상기 제2 컨텍스트가 완료된 후에, 상기 제1 우선순위를 갖는 다른 임의의 컨텍스트들보다 우선적으로, 상기 제1 컨텍스트를 재개하는 단계; 및
    상기 일시정지된 컨텍스트의 상태를 저장하는 단계
    를 포함하는 방법.
  11. 제10항에 있어서, 상기 제2 포트로의 상기 제2 컨텍스트의 제출을 검출하는 단계를 더 포함하는 방법.
  12. 제10항에 있어서, 상기 제1 컨텍스트의 미종료 작업 및 상태를 온-다이 저장소에 복사한 다음 상기 제2 컨텍스트를 상기 파이프라인에 제출하는 단계를 더 포함하는 방법.
  13. 삭제
  14. 삭제
  15. 명령어들의 세트를 포함하는 적어도 하나의 컴퓨터 판독가능한 저장 매체로서,
    상기 명령어들은, 컴퓨팅 디바이스에 의해 실행되는 경우, 상기 컴퓨팅 디바이스로 하여금,
    제1 우선순위를 갖는 컨텍스트들에 전용된 제1 포트에 제1 컨텍스트를 제출하고,
    상기 제1 컨텍스트를 파이프라인에 제출하고,
    다른 컨텍스트가 상기 제1 포트에 제출된 경우, 상기 파이프라인 내의 기존의 상기 제1 컨텍스트가 실행을 완료하는 것을 허용하도록 상기 파이프라인을 플러시함으로써 상기 파이프라인 내의 상기 제1 컨텍스트의 선점권을 빼앗고,
    제2 우선순위를 갖는 컨텍스트들에 전용된 제2 포트에 제2 컨텍스트를 제출하고,
    상기 제1 컨텍스트가 상기 파이프라인에서 완료되기 전에 상기 제1 컨텍스트를 일시정지하고,
    상기 제2 컨텍스트가 완료된 후에, 상기 제1 우선순위를 갖는 다른 임의의 컨텍스트들보다 우선적으로, 상기 제1 컨텍스트를 재개하고,
    상기 일시정지된 컨텍스트의 상태를 저장하게 하는 적어도 하나의 컴퓨터 판독가능한 저장 매체.
  16. 제15항에 있어서, 상기 명령어들은, 실행되는 경우, 컴퓨팅 디바이스로 하여금, 상기 제2 포트로의 상기 제2 컨텍스트의 제출을 검출하게 하는 적어도 하나의 컴퓨터 판독가능한 저장 매체.
  17. 제15항에 있어서, 상기 명령어들은, 실행되는 경우, 컴퓨팅 디바이스로 하여금, 상기 제1 컨텍스트의 미종료 작업 및 상태를 온-다이 저장소에 복사한 다음 상기 제2 컨텍스트를 상기 파이프라인에 제출하게 하는 적어도 하나의 컴퓨터 판독가능한 저장 매체.
  18. 삭제
  19. 삭제
  20. 제1 우선순위의 컨텍스트들을 수신하는 제1 포트;
    제2 우선순위의 컨텍스트들을 수신하는 제2 포트;
    컨텍스트들을 처리하는 파이프라인;
    상기 포트들로의 컨텍스트들의 제출을 검출하는 컨텍스트 검출 모듈;
    상기 파이프라인에 컨텍스트들을 전송하는 스케쥴러 모듈;
    상기 파이프라인에서 상기 제1 우선순위를 갖는 컨텍스트의 선점권을 빼앗는 선점 모듈 - 파이프라인 내의 컨텍스트의 선점권을 빼앗는 것은, 상기 파이프라인 내의 기존의 컨텍스트가 실행을 완료하는 것을 허용함으로써 상기 파이프라인을 플러시하는 것을 포함함 -;
    상기 제2 포트에서 수신된 컨텍스트들을 위하여, 상기 파이프라인을 플러시하지 않고 상기 제1 포트에서 수신된 컨텍스트들의 파이프라인 처리를 일시정지하는 일시정지 모듈;
    상기 제2 포트에 제출된 컨텍스트의 완료 후에, 상기 제1 우선순위를 갖는 다른 임의의 컨텍스트들보다 우선적으로, 일시정지된 컨텍스트를 재개하는 일시정지된 컨텍스트 복구 모듈; 및
    상기 컨텍스트들 중 적어도 하나의 상태를 저장하는 온-다이 저장소
    를 포함하는 장치.
  21. 삭제
  22. 삭제
  23. 제20항에 있어서, 컨텍스트들에 관한 상태 정보를 저장하는 메모리를 더 포함하는 장치.
  24. 제20항에 있어서, 그래픽 처리 유닛을 더 포함하는 장치.
  25. 삭제
KR1020150025872A 2014-03-27 2015-02-24 우선순위 기반의 컨텍스트 선점 KR101666416B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/227,692 2014-03-27
US14/227,692 US9396032B2 (en) 2014-03-27 2014-03-27 Priority based context preemption

Publications (2)

Publication Number Publication Date
KR20150112771A KR20150112771A (ko) 2015-10-07
KR101666416B1 true KR101666416B1 (ko) 2016-10-14

Family

ID=54166027

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150025872A KR101666416B1 (ko) 2014-03-27 2015-02-24 우선순위 기반의 컨텍스트 선점

Country Status (5)

Country Link
US (1) US9396032B2 (ko)
KR (1) KR101666416B1 (ko)
CN (1) CN104951358B (ko)
DE (1) DE102015002365A1 (ko)
TW (1) TWI546737B (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9927784B2 (en) 2014-12-04 2018-03-27 At&T Intellectual Property I, L.P. Ubiquitous computing methods and apparatus
US9842376B2 (en) * 2015-09-29 2017-12-12 Qualcomm Incorporated Graphics processing unit preemption with pixel tile level granularity
US10134103B2 (en) * 2015-10-23 2018-11-20 Qualcomm Incorporated GPU operation algorithm selection based on command stream marker
US10176548B2 (en) * 2015-12-18 2019-01-08 Ati Technologies Ulc Graphics context scheduling based on flip queue management
US10210593B2 (en) * 2016-01-28 2019-02-19 Qualcomm Incorporated Adaptive context switching
US10163184B2 (en) * 2016-08-17 2018-12-25 Adobe Systems Incorporated Graphics performance for complex user interfaces
US10929944B2 (en) * 2016-11-23 2021-02-23 Advanced Micro Devices, Inc. Low power and low latency GPU coprocessor for persistent computing
US10026145B2 (en) 2016-12-13 2018-07-17 Qualcomm Incorporated Resource sharing on shader processor of GPU
US10373287B2 (en) * 2017-08-18 2019-08-06 Apple Inc. Fast GPU context switch
US11609791B2 (en) * 2017-11-30 2023-03-21 Advanced Micro Devices, Inc. Precise suspend and resume of workloads in a processing unit
CN109936604B (zh) * 2017-12-18 2022-07-26 北京图森智途科技有限公司 一种资源调度方法、装置和系统
US12026799B2 (en) 2021-03-19 2024-07-02 Samsung Electronics Co., Ltd. Method and apparatus for software based preemption using two-level binning to improve forward progress of preempted workloads

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130173861A1 (en) * 2012-01-04 2013-07-04 International Business Machines Corporation Near neighbor data cache sharing

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5592678A (en) * 1991-07-23 1997-01-07 International Business Machines Corporation Display adapter supporting priority based functions
CA2073516A1 (en) * 1991-11-27 1993-05-28 Peter Michael Kogge Dynamic multi-mode parallel processor array architecture computer system
KR100214644B1 (ko) * 1996-12-31 1999-08-02 구자홍 프로세서의 메모리 다중 액세스 회로
US6671795B1 (en) * 2000-01-21 2003-12-30 Intel Corporation Method and apparatus for pausing execution in a processor or the like
US6738675B2 (en) * 2000-12-30 2004-05-18 Intel Corporation Method, apparatus, and system to reduce microprocessor power dissipation
US6915414B2 (en) * 2001-07-20 2005-07-05 Zilog, Inc. Context switching pipelined microprocessor
US7434223B2 (en) * 2003-05-22 2008-10-07 Agere Systems Inc. System and method for allowing a current context to change an event sensitivity of a future context
US8547339B2 (en) 2008-01-04 2013-10-01 Tactus Technology, Inc. System and methods for raised touch screens
EP2356567A2 (en) * 2008-12-08 2011-08-17 Kpit Cummins Infosystems Ltd. Method for reorganizing tasks for optimization of resources
US8949838B2 (en) * 2009-04-27 2015-02-03 Lsi Corporation Multi-threaded processing with hardware accelerators
US8868809B2 (en) * 2009-11-30 2014-10-21 Lsi Corporation Interrupt queuing in a media controller architecture
US8578138B2 (en) * 2009-08-31 2013-11-05 Intel Corporation Enabling storage of active state in internal storage of processor rather than in SMRAM upon entry to system management mode
US20130019052A1 (en) * 2011-07-14 2013-01-17 Vinay Ashok Somanache Effective utilization of flash interface
US20130070513A1 (en) * 2011-09-16 2013-03-21 Advanced Micro Devices, Inc. Method and apparatus for direct backup of memory circuits
US9524263B2 (en) * 2012-06-29 2016-12-20 Intel Corporation Method and apparatus for bus lock assistance
US9104421B2 (en) * 2012-07-30 2015-08-11 Nvidia Corporation Training, power-gating, and dynamic frequency changing of a memory controller
US9710874B2 (en) * 2012-12-27 2017-07-18 Nvidia Corporation Mid-primitive graphics execution preemption
US9703708B2 (en) * 2013-09-27 2017-07-11 Intel Corporation System and method for thread scheduling on reconfigurable processor cores
US10026714B2 (en) * 2014-02-14 2018-07-17 Nxp Usa, Inc. Integrated circuit device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130173861A1 (en) * 2012-01-04 2013-07-04 International Business Machines Corporation Near neighbor data cache sharing

Also Published As

Publication number Publication date
DE102015002365A1 (de) 2015-10-15
KR20150112771A (ko) 2015-10-07
TW201537459A (zh) 2015-10-01
CN104951358B (zh) 2019-01-22
TWI546737B (zh) 2016-08-21
US9396032B2 (en) 2016-07-19
CN104951358A (zh) 2015-09-30
US20150277981A1 (en) 2015-10-01

Similar Documents

Publication Publication Date Title
KR101666416B1 (ko) 우선순위 기반의 컨텍스트 선점
CN106687927B (zh) 促进在计算装置上的图形处理单元的命令分组的动态并行调度
US9342857B2 (en) Techniques for locally modifying draw calls
KR101563098B1 (ko) 커맨드 프로세서를 갖는 그래픽 프로세싱 유닛
US9489763B2 (en) Techniques for setting up and executing draw calls
US8752064B2 (en) Optimizing communication of system call requests
US10719970B2 (en) Low latency firmware command selection using a directed acyclic graph
US10410311B2 (en) Method and apparatus for efficient submission of workload to a high performance graphics sub-system
US10769747B2 (en) Intermediate frame generation
KR20140138842A (ko) 그래픽스 프로세싱 유닛 상의 그래픽스 및 비그래픽스 어플리케이션들의 실행
WO2017039865A1 (en) Facilitating efficient scheduling of graphics workloads at computing devices
EP3915008B1 (en) Methods and apparatus for standardized apis for split rendering
US9471323B2 (en) System and method of using an atomic data buffer to bypass a memory location
CN110956570A (zh) 多图形上下文执行环境中的图形引擎重置和恢复
JP6419856B2 (ja) 非特権アプリケーションによるグラフィクスワークロード・サブミッション
US9542233B1 (en) Managing a free list of resources to decrease control complexity and reduce power consumption
US9536276B2 (en) Method of submitting graphics workloads and handling dropped workloads
US9892480B2 (en) Aborting graphics processor workload execution
US20220172695A1 (en) Methods and apparatus for plane planning for overlay composition

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
X701 Decision to grant (after re-examination)
GRNT Written decision to grant