KR20100059822A - 커맨드 실행 순서 결정 방법 및 이를 수행하기 위한 컴퓨팅 디바이스와 컴퓨터 판독가능 기록 매체 - Google Patents

커맨드 실행 순서 결정 방법 및 이를 수행하기 위한 컴퓨팅 디바이스와 컴퓨터 판독가능 기록 매체 Download PDF

Info

Publication number
KR20100059822A
KR20100059822A KR1020107004376A KR20107004376A KR20100059822A KR 20100059822 A KR20100059822 A KR 20100059822A KR 1020107004376 A KR1020107004376 A KR 1020107004376A KR 20107004376 A KR20107004376 A KR 20107004376A KR 20100059822 A KR20100059822 A KR 20100059822A
Authority
KR
South Korea
Prior art keywords
hardware processing
commands
hardware
execution order
processing unit
Prior art date
Application number
KR1020107004376A
Other languages
English (en)
Other versions
KR101131636B1 (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 KR20100059822A publication Critical patent/KR20100059822A/ko
Application granted granted Critical
Publication of KR101131636B1 publication Critical patent/KR101131636B1/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
    • 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
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)
  • Multi Processors (AREA)

Abstract

프로세스에 의해 하나 이상의 하드웨어 프로세싱 유닛에 발행되는 커맨드가 실행되어야 하는 순서는 커맨드가 오직 하나의 하드웨어 프로세싱 유닛 또는 둘 이상의 하드웨어 프로세싱 유닛으로 지향되는지에 기반하여 결정된다. 커맨드가 오직 하나의 하드웨어 프로세싱 유닛으로만 발행될 때 하드웨어 프로세싱 유닛가 그 실행 순서를 결정하도록 허여된다. 상기 커맨드가 둘 이상의 하드웨어 프로세싱 유닛으로 발행될 때 그 실행 순서를 상기 둘 이상의 하드웨어 프로세싱 유닛 외부에서 결정한다. 이는 특히 멀티 쓰레드형 프로세스에 의해 발행되는 커맨드의 실행을 스케줄링할 때 사용된다.

Description

커맨드 실행 순서 결정 방법 및 이를 수행하기 위한 컴퓨팅 디바이스와 컴퓨터 판독가능 기록 매체{COMMAND SYNCHRONISATION}
본 발명은 프로세스에 의해 하나 이상의 하드웨어 프로세싱 유닛에 발행되는 커맨드가 실행되어야 하는 순서를 결정하는 방법에 관한 것이다. 본 발명은 또한 이 방법을 수행하기 위한 컴퓨팅 디바이스에 관한 것이다.
대부분의 컴퓨팅 디바이스는 그래픽 사용자 인터페이스(GUI)를 포함하며, 컴퓨팅 디바이스에서 실행되는 애플리케이션들은 이 그래픽 사용자 인터페이스를 통해 사용자에게 컨텐츠를 디스플레이한다. 일부 애플리케이션들은 대용량의 처리력을 필요로 하는 고선명 이미지(intense images)를 그래픽으로 디스플레이할 수 있다. 이러한 관점에서, 컴퓨팅 디바이스는 전형적으로, 그래픽 기반 프로세스를 수행하도록 특정적으로 설계된 하드웨어를 포함한다.
임의의 하드웨어/소프트웨어 인터페이스에서와 같이, 클라이언트 애플리케이션은 통상적으로 하드웨어에 직접 지시하도록 구성되지는 않는다. 대신에, 운영 시스템은 통상적으로 클라이언트 애플리케이션에 애플리케이션 프로그래밍 인터페이스(API)를 제공하는 그래픽 렌더링을 위해 하나 이상의 하드웨어 추상화 계층(HAL)을 포함한다. 이러한 방식으로, 클라이언트 애플리케이션은 단일 HAL과 인터페이스하도록 기록될 수 있으므로, 클라이언트 애플리케이션들은 애플리케이션 인터페이스 코드가 재기록될 필요없이 상이한 그래픽 하드웨어와 함께 사용될 수가 있다. 산업 표준 HAL의 두 가지 예는 OpenGL ES 및 OpenVG가 있다.
일부의 경우, 단일 HAL은 단일 하드웨어 유닛에 매핑되고 컴퓨팅 디바이스는 다수의 HAL/하드웨어 쌍을 포함할 수 있다. 대안으로서, 단일 하드웨어 유닛은 다수의 상이한 HAL과 관련될 수 있으며, 각각의 HAL은 상이한 그래픽 기능을 수행하기 위해 구성된다. 그러나, HAL은 매핑되며 이러한 매핑은 최종 사용자에게는 투명하다.
다수의 HAL을 사용할 때, 운영 시스템은 그 HAL들 간의 동기성(synchronicity)을 보장하기 위한 메카니즘을 구현해야만 한다. 가령, OpenGL ES HAL을 사용하는 3D 환경에서 차후의 사용을 위해 2D 이미지가 OpenGL ES HAL에 의해 렌더링된다면, OpenVG HAL은 렌더링된 이미지가 OpenGL ES HAL에 의해 사용되기 전에 2D에서 그 이미지의 렌더링을 완료해야만 한다. 시스템이 HAL 프로세스를 동기화시키기 위한 위치에 있지 않다면, 애플리케이션은 훼손된 이미지가 디스플레이될 수 있게 하며, 그에 따라 좋지않은 사용자 경험을 야기할 수 있다. 또한, 그래픽 환경은 두 개의 순차적인 프로세스보다 훨씬 더 복잡할 가능성이 있으며, 따라서 컴퓨팅 디바이스는 동기화 없이는 양호하게 사용될 수가 없다.
HAL 동작이 동기화되는 한 가지 방식은 운영 시스템으로 하여금 버퍼와 같은 시스템 메모리를 사용하여 HAL 동기화를 제어하도록 하는 것이다. 그러나, 이는 일반적으로 부적절한 것인데, 그 이유는 하드웨어 동작이 사용자 및 운영 시스템에게 투명해야 하기 때문이다. 또한, 대부분의 하드웨어는 자신의 버퍼와 직렬화 소프트웨어를 갖는데, 이는 운영 시스템이 동기화 동작의 제어권을 취득한다면 리던던트할 수 있다. 하드웨어가 다수의 HAL의 동작의 동기화를 다루는 것이 바람직한데, 그 이유는 이를 통해 운영 시스템이 보다 일반적인 처리 요구에 집중할 수 있기 때문이다. 이러한 접근법의 효과는 쓰레드가 관련 HAL에 의해 완료될 이전의 커맨드를 대기할 필요없이 렌더링 커맨드를 지속적으로 발행할 수 있다는 것이다. 이는 CPU에 다루어지는 운영 시스템 프로세스와 그래픽 하드웨어 간의 병렬성을 증가시킨다.
종래 기술에서, HAL-특정 동기화 객체(HAL-specific synchronisation objects)를 최적화함으로써 하드웨어 특정 동기화를 제공하는 것이 알려져 있다. 이러한 접근법에서, 사용자 쓰레드 렌더링 커맨드는 하드웨어 드라이버로 직접 전달되며, 하드웨어 드라이버에서 사용자 쓰레드 렌더링 커맨드는 이전의 모든 커맨드들이 실행되는 시간까지 중단된다. 이는 운영 시스템이 사용자 쓰레드로 하여금 그 커맨드를 발행하기 전에 대기할 필요성을 제거하며, 그래픽 하드웨어에 의해 제공되는 하드웨어 리소스를 보다 양호하게 이용한다. 이 시스템은 정확한 시퀀싱을 보장하기 위해 큐잉(queueing)을 사용할 수 있다. 그러나, 이러한 타입의 하드웨어 특정 동기화의 문제점은 다수의 HAL 간의 동기화를 가능하게 하지 않는다는 것이다.
또한, 다수의 HAL 간에 공유될 수 있는 동기화 객체를 제공하는 것이 알려져 있다. 이러한 객체는 HAL로 하여금 다른 HAL이 다른 쓰레드에 의해 명령되는 렌더링 작업을 완료할 때까지 특정 쓰레드에 의해 발행되는 커맨드를 실행하기 위해 대기시킬 수 있다. 그러나, 그러한 trans-HAL 객체는 전술한 다른 시스템에 의해 제공되는 하드웨어 특정 동기화를 가능하게 하지는 않는다.
전술한 문제점들은 그래픽 렌더링을 위한 HAL에 제한되지 않으며, 일반적으로 하드웨어 유닛에 대한 HAL들 간에 동기화를 위한 개선된 메카니즘이 필요하다.
본 발명의 일 측면에서, 본 발명은 프로세스에 의해 하나 이상의 하드웨어 프로세싱 유닛에 발행되는 커맨드가 실행되어야 하는 순서를 결정하는 방법을 제공하며, 이 방법은 발행된 커맨드들이 오직 하나의 하드웨어 프로세싱 유닛 또는 둘 이상의 하드웨어 프로세싱 유닛으로 지향되는지를 결정하는 단계와, 상기 커맨드가 오직 하나의 하드웨어 프로세싱 유닛으로만 발행될 때 그 실행 순서가 상기 하나의 하드웨어 프로세싱 유닛에 의해 결정되도록 하는 단계와, 상기 커맨드가 둘 이상의 하드웨어 프로세싱 유닛으로 발행될 때 그 실행 순서를 상기 둘 이상의 하드웨어 프로세싱 유닛 외부에서 결정하는 단계를 포함한다.
본 발명의 제 2 측면에서, 본 발명은 전술한 방법을 수행하기 위한 컴퓨터 판독가능한 인스트럭션을 제공한다. 컴퓨터 판독가능 인스트럭션은 운영 시스템을 기술할 수 있다.
본 발명의 제 3 측면에서, 본 발명은 전술한 방법을 수행하도록 구성되는 컴퓨팅 디바이스를 제공한다.
본 발명의 실시예는 첨부 도면을 참조하여 오직 예로서만 기술될 것이다.
도 1은 하드웨어 그래픽 디바이스에서 수행될 커맨드 동기화가 선택되는 데이터 프로세싱 시스템을 도시한다.
도 2는 시스템 메모리를 사용하여 수행될 커맨드 동기화가 선택되는 데이터 프로세싱 시스템을 도시한다.
도 1은 물리적 구성요소(1) 및 소프트웨어 구성요소(2)를 도시하는 데이터 프로세싱 시스템이다. 이 시스템의 하드웨어 구성요소는 CPU(10), 작업 메모리(가령, RAM)(11), 및 비휘발성 메모리(12)(가령, 하드 디스크 또는 ROM)를 포함하며, 이들 모두는 메인 버스(13)에 의해 상호 접속된다. 비휘발성 메모리는 작업 메모리(11)를 사용하여, 운영 시스템 및 사용자 애프리케이션을 구현하도록 CPU에 의해 실행될 수 있는 프로그램 코드를 저장한다. 사용자는 키보드 제어기(15)에 접속된 키패드(14) 또는 마우스 제어기(16)에 접속된 마우스(150)와 같은 포인팅 디바이스에 의해 시스템에 입력을 제공할 수 있다. 출력은 일반 그래픽 하드웨어 유닛(18) 및 벡터 그래픽 하드웨어 유닛(19)에 의해 디스플레이(17)에 제공될 수 있다. 그래픽 하드웨어 유닛(18, 19)은 각각 이미지 렌더링과 같은 그래픽 관련 동작을 수행하도록 구성된다.
소프트웨어 도메인(2)에서, 운영 시스템(20)은 인터페이스를 제공하며, 인터페이스 수단을 통해 사용자 애플리케이션(21, 22)은 컴퓨팅 디바이스의 다양한 하드웨어 구성요소와 통신할 수 있다.
운영 시스템은 또한 다수의 하드웨어 추상화 계층(HAL)을 포함한다. HAL은 사용자 애플리케이션에 그래픽 하드웨어 유닛에 대한 인터페이스를 제공하도록 구성된다. 각각의 HAL은 그래픽 하드웨어 유닛들 중의 하나를 사용하여 특정의 그래픽 기능을 수행하도록 구성된다. 이 경우, 운영 시스템은 일반 2D 및 3D 그래픽 제품 HAL(23), 2D 벡터 그래픽 HAL(14) 및 3D 그래픽 제품 HAL(25)을 포함한다. 일반 2D 및 3D 그래픽 제품 HAL(23) 및 3D 그래픽 제품 HAL(25)은 일반 그래픽 하드웨어 유닛(18)을 사용하며 2D 벡터 그래픽 HAL(24)은 벡터 그래픽 하드웨어 유닛(19)을 사용한다.
사용자 애플리케이션은 정보를 제공하기 위해 디스플레이(17)를 제어할 필요가 있다. 이를 위해, 사용자 애플리케이션은 통상 API 호출에 의해 적절한 커맨드를 하나 이상의 HAL에게 발행할 것이다. 또한, 각각의 애플리케이션은 운영 시스템(20)의 감독하에 CPU(10) 상에서 실행되는 하나 이상의 쓰레드를 가질 수 있다. 이러한 쓰레드는 하나 이상의 HAL에 커맨드를 독립적으로 발행할 수 있다.
일부의 사용자 애플리케이션은 일정 범위의 그래픽 동작을 수행하도록 구성될 수 있다. 가령, 애플리케이션이 디스플레이 디바이스(17) 상에 디스플레이를 위해 3D 그래픽을 생성할 필요가 있다면, 그 애플리케이션은 두 개의 커맨드 쓰레드(27, 28)를 포함하는 프로세스(26)를 생성할 수 있다. 이러한 쓰레드들 중의 하나는 2D 렌더링된 이미지를 생성하기 위해 일반 2D 및 3D 그래픽 제품 HAL(23)에 대한 커맨드를 생성할 것이다. 나머지 쓰레드는 3D 그래픽을 생성하기 위해 3D 그래픽 제품 HAL(25)에 대한 커맨드를 포함할 것이다. 3D 그래픽은 2D 렌더링된 이미지를 조작함으로써 생성될 수 있다. 프로세스가 생성될 때 운영 시스템은 다양한 HAL에 대한 액세스를 제어할 동기화 객체(29)를 생성한다. [이러한 것은 모든 프로세스들이 디스플레이를 제어하지 않더라도 모든 프로세스에 대해 수행되는가? 운영 시스템은 동기화 객체를 생성하기 위한 방법을 어떻게 알고 있는가?] 애플리케이션은 동기화 객체(29)에 프로세스의 쓰레드가 어떠한 HAL을 사용할 것인지를 나타내는 정보와 프로세스(26)가 HAL에 의해 어떻게 사용될 것인지를 나타내는 정보를 제공한다. 쓰레드들이 HAL에 그 커맨드를 발행하기 전에 동기화 객체(29)에 상기 정보를 제공하게 되면, 동기화 객체(29)는 성능을 최적화할 목적으로 HAL 동작을 제어할 수가 있다.
동기화 객체가 이러한 정보를 사용하는 방식은 컴퓨팅 디바이스의 하드웨어 구성에 의존한다. 일 예에서, 동기화 객체(29)가 프로세스에 의해 사용될 모든 HAL이 동일한 하드웨어 그래픽 유닛을 사용한다고 결정하면, 동기화 객체(29)는 운영 시스템 레벨에서 프로세스의 HAL 커맨드의 동기화를 구현하지 않을 것이며 동기화를 수행하도록 하드웨어 그래픽 유닛을 남겨둘 것이다. 그러나, 동기화 객체가 프로세스에 의해 사용될 모든 HAL이 상이한 하드웨어 그래픽 유닛을 사용한다고 결정하면, 대신에 운영 시스템 레벨에서 프로세스의 HAL 커맨드의 동기화를 구현할 것이다.
전술한 예에서, 애플리케이션은 디스플레이 디바이스(17) 상에서의 디스플레이를 위해 3D 그래픽을 생성할 필요가 있다. 애플리케이션은 두 개의 커맨드 쓰레드를 포함하는 프로세스를 생성한다. 이들 커맨드 쓰레드들 중의 하나는 2D 렌더링된 이미지를 생성하기 위해 일반 2D 및 3D 그래픽 제품 HAL(23)에 대한 커맨드를 생성할 것이다. 나머지 쓰레드는 3D 그래픽을 생성하기 위해 3D 그래픽 제품 HAL(25)에 대한 커맨드를 생성할 것이다. 프로세스가 생성될 때, 운영 시스템은 해당 동기화 객체를 생성하며, 애플리케이션은 동기화 객체에 대해 프로세스가 사용할 HAL을 정의하는 정보를 전달한다. 이 예에서, 프로세스는 단지 일반 2D 및 3D 그래픽 제품 HAL(23) 및 3D 그래픽 제품 HAL(25)을 사용할 것이다. 이들 HAL 모두는 동일한 하드웨어 유닛, 즉 일반 그래픽 하드웨어 유닛(18)을 사용한다. 동기화 객체는 이를 인식하고 동기화를 위한 책임을 하드웨어 유닛(18)에 전달한다. 이는 특정 쓰레드 또는 특정의 프로세스 또는 애플리케이션으로부터 커맨드가 수행되는 순서에 대한 책임을 지는 일반 그래픽 하드웨어 유닛(18)에 명령함으로써 수행될 수 있거나, 또는 일반 그래픽 하드웨어 유닛(18)이 디폴트에 의해 그러한 직렬화를 수행한다면 그러한 커맨드는 불필요할 것이다. 다음에 프로세스는 HAL 커맨드를 발행하도록 진행하며, HAL 커맨드들은 일반 그래픽 하드웨어 유닛(18)에 의해 직렬화될 것이다.
일반 그래픽 하드웨어 유닛(18)은 프로세스 쓰레드를 동기화하기 위해 하드웨어 특정 직렬화 기법을 사용할 수 있다. 가령, 일반 그래픽 하드웨어 유닛은 시퀀싱을 사용하여 프로세스 쓰레드 커맨드를 직렬화하도록 구성될 수 있다. 일반 그래픽 하드웨어 유닛(18)은 RAM(11) 또는 하드웨어 유닛(18) 상의 메모리 내에 큐를 구현할 수 있으며, 이를 통해 프로세스로부터의 각각의 커맨드는 메모리로 수신되며 커맨드가 실행되어야 한다고 결정될 때까지 큐잉된다. 이는 커맨드를 생성하는 소프트웨어 프로세스도 커맨드를 해석하고 그것을 하드웨어에 릴레이하는 HAL도 다음 커맨드가 출력되기 전에는 이전에 렌더링된 태스크를 완료하기 위해 하드웨어를 대기할 필요가 없다는 것을 의미한다. 이는 trans-HAL 동기화에 대한 책임을 운영 시스템에서 그래픽 하드웨어로 이동시킨다는 점에서 커다란 이점을 제공한다.
도 2에서, 프로세스(29)는 상이한 그래픽 하드웨어 유닛(가령, 벡터 그래픽 하드웨어 유닛(19) 및 일반 그래픽 하드웨어 유닛(18))과 관련한 HAL에 대한 쓰레드 커맨드(27, 30)를 포함하는 것으로 표시된다. 도 1에서와 마찬가지로, 애플리케이션은 동기화 객체에 대해 프로세스의 쓰레드가 어떠한 HAL을 사용할 것인지를 나타내는 정보와 프로세스(29)가 HAL에 의해 어떻게 사용될 것인지를 나타내는 정보를 제공한다. 쓰레드가 HAL에 커맨드를 발행하기 전에 동기화 객체에 대해 이러한 정보를 제공하게 되면, 동기화 객체(29)는 성능을 최적화할 목적으로 HAL 동작을 제어할 수가 있다. 만약 커맨드들이 동기화 객체가 하드웨어에 대한 커맨드들의 모든 동기화 제어를 오프로드할 수 없는 특성을 가진다면, 동기화 객체는 그 커맨드를 스스로 동기화하는 작업에 대한 책임을 질 수 있다.
일 실시예에서, OS 기반 동기화 객체는 운영 시스템으로 하여금 하드웨어 드라이버에 의해 제어되는 CPU 기반 동기화 객체를 생성하도록 할 수 있다. CPU 기반 동기화 객체는 CPU(10) 상에서 실행되는 애플리케이션 쓰레드를 동기화하는데 사용될 수 있으며, 하나 이상의 HAL에 대해 커맨드를 독립적으로 발행할 수 있다. CPU 기반 동기화 객체는 쓰레드들이 정확한 순서로 실행될 수 있도록 자신의 감독하에 CPU 상에서 실행되는 쓰레드로부터 커맨드의 발행을 동기화시킬 수 있다. 이를 위해, 하나의 HAL이 프로세스의 하나의 CPU 기반 쓰레드로부터 커맨드를 발행중일 때, 동기화 객체는 그 HAL이 CPU 기반 동기화 객체에 대해 프로세스로부터 수신한 커맨드를 프로세싱하는 것을 완료했다는 것을 시그널링할 때까지 그 프로세스의 다른 CPU 기반 쓰레드로부터 HAL로의 커맨드의 발행을 지연시킨다. 이를 위해, 동기화 객체는 그 프로세스의 다른 CPU 기반 쓰레드로부터 수신되는 커맨드가 HAL로 발행될 수 있을 때까지 버퍼링시킬 수 있거나 또는 HAL이 그 발행 커맨드를 프로세싱하는 것을 완료할 때까지 커맨드를 발행하는 것을 중단할 것을 CPU 기반 쓰레드에게 시그널링할 수 있다.
본 발명이 그래픽 하드웨어 및 그래픽 소프트웨어의 문맥으로 기술되었지만 주요 특징 및 이점들은 다른 하드웨어 및 소프트웨어 타입에 확장된다는 것을 이해해야 할 것이다. 특히, 두 개 이상의 프로그래밍 인터페이스에 의해 액세스되는 임의의 하드웨어 유닛은 본 발명을 이용할 수가 있다. 예들은 오디오 서브시스템, 네트워크 인터페이스 카드 및 저장 하드웨어 인터페이스를 포함한다.
본 출원인은 본 명세서를 통해 기술한 개개의 특징들 또는 이들 특징의 조합이 당업자의 상식에 비추어 본 명세서의 임의의 문제점을 해결하든 않는 무관하게 본 특허청구범위의 영역에 대한 제한없이, 대체로 본 명세서의 상세한 설명에 기반하여 수행될 수 있을 정도로 전술한 특징들 또는 이들 특징의 조합을 분리하여 개시한다. 본 출원인은 본 발명의 측면들이 임의의 개개의 특징 또는 이들 특징의 조합으로 구성될 수 있다는 것을 나타낸다. 전술한 설명의 관점에서 당업자에게는 본 발명의 영역 내에서 다양한 변형이 수행될 수 있다는 것이 자명할 것이다.

Claims (15)

  1. 프로세스에 의해 하나 이상의 하드웨어 프로세싱 유닛으로 발행되는 커맨드들이 실행되어야 하는 순서를 결정하는 방법으로서,
    상기 발행된 커맨드들 오직 하나의 하드웨어 프로세싱 유닛 또는 둘 이상의 하드웨어 프로세싱 유닛으로 지향되는지를 결정하는 단계와,
    상기 커맨드들이 오직 하나의 하드웨어 프로세싱 유닛으로만 발행되는 경우 상기 커맨드들의 실행 순서가 상기 하나의 하드웨어 프로세싱 유닛에 의해 결정될 수 있도록 하는 단계와,
    상기 커맨드들이 둘 이상의 하드웨어 프로세싱 유닛으로 발행되는 경우 상기 커맨드들의 실행 순서를 상기 둘 이상의 하드웨어 프로세싱 유닛 외부에서 결정하도록 하는 단계를 포함하는
    커맨드 실행 순서 결정 방법.
  2. 제 1 항에 있어서,
    상기 프로세스로부터 상기 커맨드들을 발행하는 하드웨어 프로세싱 유닛의 표시를 수신하는 단계를 더 포함하며,
    상기 결정 단계는 상기 수신된 정보에 기반하는 수행되는,
    커맨드 실행 순서 결정 방법.
  3. 제 1항 또는 제 2 항에 있어서,
    상기 프로세스는 다중 쓰레드형 프로세스인,
    커맨드 실행 순서 결정 방법.
  4. 제 1 항 내지 제 3 항 중의 어느 한 항에 있어서,
    상기 실행 순서를 하드웨어 프로세싱 유닛 외부에서 결정하도록 하는 단계는 상기 실행 순서를 CPU를 사용하여 결정하는 단계를 포함하는,
    커맨드 실행 순서 결정 방법.
  5. 제 1 항 내지 제 4 항 중의 어느 한 항에 있어서,
    상기 하드웨어 프로세싱 유닛들 간에 데이터를 교환함으로써 다수의 하드웨어 프로세싱 유닛에 걸친 커맨드 직렬화가 달성되는,
    커맨드 실행 순서 결정 방법.
  6. 제 1 항 내지 제 5 항 중의 어느 한 항에 있어서,
    상기 하드웨어 프로세싱 유닛들 중의 적어도 하나는 그래픽 프로세싱 유닛인,
    커맨드 실행 순서 결정 방법.
  7. 제 1 항 내지 제 6 항 중의 어느 한 항에 있어서,
    상기 프로세스는 멀티 쓰레드형 프로세스인,
    커맨드 실행 순서 결정 방법.
  8. 제 1 항 내지 제 7 항 중의 어느 한 항에 따른 커맨드 실행 순서 결정 방법을 수행하기 위한 컴퓨터 판독가능 인스트럭션.
  9. 제 8 항에 있어서,
    운영 시스템을 기술하는
    컴퓨터 판독가능 인스트럭션.
  10. 제 1 항 내지 제 7 항 중의 어느 한 항에 따른 커맨드 실행 순서 결정 방법을 수행하도록 구성되는 컴퓨팅 디바이스.
  11. 제 10 항에 있어서,
    하나 이상의 하드웨어 프로세싱 유닛을 포함하는
    컴퓨팅 디바이스.
  12. 제 10 항 또는 제 11 항에 있어서,
    상기 컴퓨팅 디바이스가 애플리케이션 프로그래밍 인터페이스를 포함하되,
    상기 애플리케이션 프로그래밍 인터페이스를 통해 프로세스가 상기 하드웨어 프로세싱 유닛으로 커맨드들을 발행할 수 있는,
    컴퓨팅 디바이스.
  13. 제 10 항 내지 제 12 항 중의 어느 한 항에 있어서,
    상기 컴퓨팅 디바이스가 운영 시스템을 더 포함하되,
    상기 실행 순서를 하드웨어 프로세싱 유닛 외부에서 결정하도록 하는 단계는 상기 운영 시스템에 의해 수행되는,
    컴퓨팅 디바이스.

  14. 제 10 항 내지 제 12 항 중 어느 한 항에 있어서,
    상기 컴퓨팅 디바이스는 시스템 메모리를 더 포함하되, 상기 실행 순서를 하드웨어 프로세싱 유닛 외부에서 결정하도록 하는 단계는 상기 운영 시스템에 의해 수행되는,
    컴퓨팅 디바이스.
  15. 제 10 항 내지 제 13 항 중의 어느 한 항에 있어서,
    상기 하드웨어 프로세싱 유닛이 상기 커맨드들을 실행하는 순서를 결정하기 위한 하드웨어 동기화 구성요소를 더 포함하는,
    컴퓨팅 디바이스.
KR1020107004376A 2007-07-31 2008-07-31 커맨드 실행 순서 결정 방법 및 이를 수행하기 위한 컴퓨팅 디바이스와 컴퓨터 판독가능 기록 매체 KR101131636B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0715000.6 2007-07-31
GBGB0715000.6A GB0715000D0 (en) 2007-07-31 2007-07-31 Command synchronisation
PCT/GB2008/002604 WO2009016377A1 (en) 2007-07-31 2008-07-31 Command synchronisation

Publications (2)

Publication Number Publication Date
KR20100059822A true KR20100059822A (ko) 2010-06-04
KR101131636B1 KR101131636B1 (ko) 2012-03-29

Family

ID=38529125

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107004376A KR101131636B1 (ko) 2007-07-31 2008-07-31 커맨드 실행 순서 결정 방법 및 이를 수행하기 위한 컴퓨팅 디바이스와 컴퓨터 판독가능 기록 매체

Country Status (6)

Country Link
US (1) US20110023035A1 (ko)
EP (1) EP2179357A1 (ko)
KR (1) KR101131636B1 (ko)
CN (1) CN101802786B (ko)
GB (2) GB0715000D0 (ko)
WO (1) WO2009016377A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170007741A (ko) * 2014-04-14 2017-01-20 앵리아 회로들을 자동으로 합성하는 방법, 디바이스 및 이와 관련된 컴퓨터 프로그램

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101485578B1 (ko) * 2013-05-24 2015-01-21 주식회사 리더스케미컬 지효성을 갖는 매트릭스형 입상복합비료의 제조방법 및 이로부터 얻은 매트릭스형 입상복합비료

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5430850A (en) * 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
GB2321544B (en) * 1996-12-16 2001-08-01 Ibm Concurrently executing multiple threads containing data dependent instructions
JPH10214188A (ja) 1997-01-30 1998-08-11 Toshiba Corp プロセッサの命令供給方法及び装置
US5818469A (en) * 1997-04-10 1998-10-06 International Business Machines Corporation Graphics interface processing methodology in symmetric multiprocessing or distributed network environments
US6249288B1 (en) * 1998-12-14 2001-06-19 Ati International Srl Multi thread display controller
US6369822B1 (en) * 1999-08-12 2002-04-09 Creative Technology Ltd. Audio-driven visual representations
US7398376B2 (en) 2001-03-23 2008-07-08 International Business Machines Corporation Instructions for ordering execution in pipelined processes
US7058948B2 (en) * 2001-08-10 2006-06-06 Hewlett-Packard Development Company, L.P. Synchronization objects for multi-computer systems
AU2003231945A1 (en) * 2002-05-31 2003-12-19 Guang R. Gao Method and apparatus for real-time multithreading
US7015915B1 (en) * 2003-08-12 2006-03-21 Nvidia Corporation Programming multiple chips from a command buffer
US7812844B2 (en) * 2004-01-28 2010-10-12 Lucid Information Technology, Ltd. PC-based computing system employing a silicon chip having a routing unit and a control unit for parallelizing multiple GPU-driven pipeline cores according to the object division mode of parallel operation during the running of a graphics application
US20060271717A1 (en) * 2005-05-27 2006-11-30 Raja Koduri Frame synchronization in multiple video processing unit (VPU) systems

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170007741A (ko) * 2014-04-14 2017-01-20 앵리아 회로들을 자동으로 합성하는 방법, 디바이스 및 이와 관련된 컴퓨터 프로그램

Also Published As

Publication number Publication date
CN101802786A (zh) 2010-08-11
KR101131636B1 (ko) 2012-03-29
CN101802786B (zh) 2014-04-23
GB2451584A (en) 2009-02-04
WO2009016377A1 (en) 2009-02-05
EP2179357A1 (en) 2010-04-28
GB0715000D0 (en) 2007-09-12
GB0814046D0 (en) 2008-09-10
US20110023035A1 (en) 2011-01-27

Similar Documents

Publication Publication Date Title
US11907691B2 (en) Method and system of command buffer between a CPU and GPU
CN109643291B (zh) 用于在虚拟化执行环境中高效使用图形处理资源的方法和设备
US20210049729A1 (en) Reconfigurable virtual graphics and compute processor pipeline
US10074206B1 (en) Network-optimized graphics library for virtualized graphics processing
US10877757B2 (en) Binding constants at runtime for improved resource utilization
US10026145B2 (en) Resource sharing on shader processor of GPU
US20130293546A1 (en) Dynamic load balancing apparatus and method for graphic processing unit (gpu)
US10977037B2 (en) Techniques for comprehensively synchronizing execution threads
JP7253507B2 (ja) 仮想化アクセラレーテッド処理デバイスの早期仮想化コンテキストスイッチ
US9563466B2 (en) Method and apparatus for supporting programmable software context state execution during hardware context restore flow
US20220020108A1 (en) Graphics processors
KR101869939B1 (ko) 멀티-쓰레딩을 사용하는 그래픽 처리를 위한 방법 및 장치
CN103870213A (zh) 经由管线化的状态包触发性能事件捕获
CN115904505A (zh) 具有硬件流水线的处理器
KR101131636B1 (ko) 커맨드 실행 순서 결정 방법 및 이를 수행하기 위한 컴퓨팅 디바이스와 컴퓨터 판독가능 기록 매체
CN110192225A (zh) 无序像素着色器导出
US8984511B2 (en) Visibility ordering in a memory model for a unified computing system
Tolo Multi-gpu rendering with vulkan api
US20130342549A1 (en) Apparatus and method for processing rendering data
CN114924837A (zh) 数据处理方法、电子设备和可读存储介质
US8539516B1 (en) System and method for enabling interoperability between application programming interfaces
KR102417882B1 (ko) Gpu 자원 관리 방법 및 이를 수행하기 위한 컴퓨팅 장치
JP5874433B2 (ja) トレース結合装置及びプログラム
US20220382587A1 (en) Data processing systems
Chu et al. Using Multi-core to Debug Interactive Applications

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150226

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160218

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee