KR20100059822A - 커맨드 실행 순서 결정 방법 및 이를 수행하기 위한 컴퓨팅 디바이스와 컴퓨터 판독가능 기록 매체 - Google Patents
커맨드 실행 순서 결정 방법 및 이를 수행하기 위한 컴퓨팅 디바이스와 컴퓨터 판독가능 기록 매체 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 60
- 230000008569 process Effects 0.000 claims abstract description 40
- 238000012545 processing Methods 0.000 claims abstract description 39
- 230000015654 memory Effects 0.000 claims description 7
- 238000009877 rendering Methods 0.000 description 7
- 239000000872 buffer Substances 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000003936 working memory Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling 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
본 발명은 프로세스에 의해 하나 이상의 하드웨어 프로세싱 유닛에 발행되는 커맨드가 실행되어야 하는 순서를 결정하는 방법에 관한 것이다. 본 발명은 또한 이 방법을 수행하기 위한 컴퓨팅 디바이스에 관한 것이다.
대부분의 컴퓨팅 디바이스는 그래픽 사용자 인터페이스(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은 하드웨어 그래픽 디바이스에서 수행될 커맨드 동기화가 선택되는 데이터 프로세싱 시스템을 도시한다.
도 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 항에 있어서,
상기 프로세스로부터 상기 커맨드들을 발행하는 하드웨어 프로세싱 유닛의 표시를 수신하는 단계를 더 포함하며,
상기 결정 단계는 상기 수신된 정보에 기반하는 수행되는,
커맨드 실행 순서 결정 방법. - 제 1항 또는 제 2 항에 있어서,
상기 프로세스는 다중 쓰레드형 프로세스인,
커맨드 실행 순서 결정 방법.
- 제 1 항 내지 제 3 항 중의 어느 한 항에 있어서,
상기 실행 순서를 하드웨어 프로세싱 유닛 외부에서 결정하도록 하는 단계는 상기 실행 순서를 CPU를 사용하여 결정하는 단계를 포함하는,
커맨드 실행 순서 결정 방법.
- 제 1 항 내지 제 4 항 중의 어느 한 항에 있어서,
상기 하드웨어 프로세싱 유닛들 간에 데이터를 교환함으로써 다수의 하드웨어 프로세싱 유닛에 걸친 커맨드 직렬화가 달성되는,
커맨드 실행 순서 결정 방법.
- 제 1 항 내지 제 5 항 중의 어느 한 항에 있어서,
상기 하드웨어 프로세싱 유닛들 중의 적어도 하나는 그래픽 프로세싱 유닛인,
커맨드 실행 순서 결정 방법.
- 제 1 항 내지 제 6 항 중의 어느 한 항에 있어서,
상기 프로세스는 멀티 쓰레드형 프로세스인,
커맨드 실행 순서 결정 방법.
- 제 1 항 내지 제 7 항 중의 어느 한 항에 따른 커맨드 실행 순서 결정 방법을 수행하기 위한 컴퓨터 판독가능 인스트럭션.
- 제 8 항에 있어서,
운영 시스템을 기술하는
컴퓨터 판독가능 인스트럭션.
- 제 1 항 내지 제 7 항 중의 어느 한 항에 따른 커맨드 실행 순서 결정 방법을 수행하도록 구성되는 컴퓨팅 디바이스.
- 제 10 항에 있어서,
하나 이상의 하드웨어 프로세싱 유닛을 포함하는
컴퓨팅 디바이스.
- 제 10 항 또는 제 11 항에 있어서,
상기 컴퓨팅 디바이스가 애플리케이션 프로그래밍 인터페이스를 포함하되,
상기 애플리케이션 프로그래밍 인터페이스를 통해 프로세스가 상기 하드웨어 프로세싱 유닛으로 커맨드들을 발행할 수 있는,
컴퓨팅 디바이스.
- 제 10 항 내지 제 12 항 중의 어느 한 항에 있어서,
상기 컴퓨팅 디바이스가 운영 시스템을 더 포함하되,
상기 실행 순서를 하드웨어 프로세싱 유닛 외부에서 결정하도록 하는 단계는 상기 운영 시스템에 의해 수행되는,
컴퓨팅 디바이스.
- 제 10 항 내지 제 12 항 중 어느 한 항에 있어서,
상기 컴퓨팅 디바이스는 시스템 메모리를 더 포함하되, 상기 실행 순서를 하드웨어 프로세싱 유닛 외부에서 결정하도록 하는 단계는 상기 운영 시스템에 의해 수행되는,
컴퓨팅 디바이스.
- 제 10 항 내지 제 13 항 중의 어느 한 항에 있어서,
상기 하드웨어 프로세싱 유닛이 상기 커맨드들을 실행하는 순서를 결정하기 위한 하드웨어 동기화 구성요소를 더 포함하는,
컴퓨팅 디바이스.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170007741A (ko) * | 2014-04-14 | 2017-01-20 | 앵리아 | 회로들을 자동으로 합성하는 방법, 디바이스 및 이와 관련된 컴퓨터 프로그램 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101485578B1 (ko) * | 2013-05-24 | 2015-01-21 | 주식회사 리더스케미컬 | 지효성을 갖는 매트릭스형 입상복합비료의 제조방법 및 이로부터 얻은 매트릭스형 입상복합비료 |
Family Cites Families (12)
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 |
-
2007
- 2007-07-31 GB GBGB0715000.6A patent/GB0715000D0/en not_active Ceased
-
2008
- 2008-07-31 EP EP08776099A patent/EP2179357A1/en not_active Withdrawn
- 2008-07-31 GB GB0814046A patent/GB2451584A/en not_active Withdrawn
- 2008-07-31 KR KR1020107004376A patent/KR101131636B1/ko not_active IP Right Cessation
- 2008-07-31 WO PCT/GB2008/002604 patent/WO2009016377A1/en active Application Filing
- 2008-07-31 CN CN200880101426.9A patent/CN101802786B/zh not_active Expired - Fee Related
- 2008-07-31 US US12/671,632 patent/US20110023035A1/en not_active Abandoned
Cited By (1)
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 |