KR20180082560A - 태스크의 시간-기반 스케줄링을 위한 방법 및 장치 - Google Patents

태스크의 시간-기반 스케줄링을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20180082560A
KR20180082560A KR1020187016728A KR20187016728A KR20180082560A KR 20180082560 A KR20180082560 A KR 20180082560A KR 1020187016728 A KR1020187016728 A KR 1020187016728A KR 20187016728 A KR20187016728 A KR 20187016728A KR 20180082560 A KR20180082560 A KR 20180082560A
Authority
KR
South Korea
Prior art keywords
queue
computing
task
computing device
hsa
Prior art date
Application number
KR1020187016728A
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 KR20180082560A publication Critical patent/KR20180082560A/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/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)

Abstract

컴퓨팅 장치가 개시된다. 컴퓨팅 장치는 적어도 제1 이질 시스템 아키텍처(HSA) 컴퓨팅 장치 및 적어도 제2 HSA 컴퓨팅 장치를 포함하는 가속 프로세싱 장치(APU), 및 APU가 적어도 하나의 메모리와 통신할 수 있게 해주는 HSM 메모리 관리 유닛(HMMU)을 포함하고, 여기서 제2 컴퓨팅 장치는 제1 컴퓨팅 장치와 상이한 타입이다. 컴퓨팅 태스크는 적어도 제1 HSA 컴퓨팅 장치 또는 적어도 제2 HSA 컴퓨팅 장치 상에서 실행되도록 설정된 HSA-관리 큐 상에서 인큐잉된다. 컴퓨팅 태스크는 컴퓨팅 태스크가 재-인큐잉되는 횟수를 트리거링하는 반복 플래그를 기초로 HSA-관리 큐에서 재-인큐잉된다. 반복 필드는 컴퓨팅 태스크가 재-인큐잉되는 각각의 시간마다 감소한다. 반복 필드는 컴퓨팅 태스크의 재-인큐잉을 무기한으로 허용하는 특별한 값(예를 들어, -1)을 포함할 수 있다.

Description

태스크의 시간-기반 스케줄링을 위한 방법 및 장치
관련 출원에 대한 상호 참조
본 출원은 2015년 12월 8일자로 출원된 미국 정규 특허 특허 출원 제14/962,784호의 이익을 주장하며, 상기 문헌은 본 명세서에서 완전히 설명된 것처럼 참고 문헌으로 인용된다.
개시된 실시 예들은 일반적으로 컴퓨팅 시스템에서 태스크의 시간-기반 스케줄링(time-based scheduling)에 관한 것이다.
많은 컴퓨팅 동작은 유지 메시지(keep-alive messages), 건강 모니터링에 대한 보고 및 체크포인트 수행과 같이 주기적으로 수행될 필요가 있다. 다른 가능성으로는 시스템로드 평균, 전력 메트릭의 계산 등과 같은 클러스터(cluster) 관리 소프트웨어에 의해 사용되는 계산을 주기적으로 수행하는 것이 포함된다. 고정된 기간 프로세싱(processing) 외에도, 프로세스는 랜덤(random) 시간-기반 통계 샘플링과 같이, 향후 랜덤한 시간에 태스크 실행의 스케줄링을 원할 수 있다.
이 문제에 대한 해결책을 제공하기 위해, UNIX 및 LINUX의 'cron' 및 'atd' 기능에서 제공하는 것과 같은 주기적인 프로세스 실행을 통해 프로세스의 시간-기반 스케줄링을 허용한다. 이러한 솔루션은 프로세스 생성 및 메모리 사용 등에서 상당한 오버헤드(overhead)를 수반하며 프로세스 생성 및 종료를 위해 운영 체제(OS)를 통해 작동하며 표준 중앙 프로세싱 유닛(CPU) 프로세싱으로 제한된다. 따라서, 프로세스 생성 및 종료를 위해 OS를 거치는 오버헤드 없이 태스크에 의해 직접 컴퓨터 시스템에서 태스크의 시간-기반 스케줄링을 위한 방법 및 장치가 필요하다.
컴퓨팅 장치가 개시된다. 컴퓨팅 장치는 적어도 제1 이질 시스템 아키텍처(HSA) 컴퓨팅 장치 및 적어도 제2 HSA 컴퓨팅 장치를 포함하는 가속 프로세싱 장치(APU), 및 APU가 적어도 하나의 메모리와 통신할 수 있게 해주는 HSM 메모리 관리 유닛(HMMU)을 포함하고, 여기서 제2 컴퓨팅 장치는 제1 컴퓨팅 장치와 상이한 타입이다. 적어도 하나의 컴퓨팅 태스크는 적어도 제1 HSA 컴퓨팅 장치 또는 적어도 제2 HSA 컴퓨팅 장치 상에서 실행되도록 설정된 HSA-관리 큐 상에서 인큐잉된다. 적어도 하나의 컴퓨팅 태스크는 시간-기반 지연 큐를 사용하여 인큐잉되고, 시간-기반은 타이머를 사용하고 지연이 0에 도달할 때 실행된다. 적어도 하나의 컴퓨팅 태스크는 컴퓨팅 태스크가 재-인큐잉되는 횟수를 트리거링하는 반복 플래그를 기초로 HSA-관리 큐에서 재-인큐잉된다. 반복 필드는 컴퓨팅 태스크가 재-인큐잉되는 각각의 시간마다 감소한다. 반복 필드는 컴퓨팅 태스크의 재-인큐잉을 무기한으로 허용하는 특별한 값(예를 들어, -1)을 포함할 수 있다.
첨부된 도면과 관련하여 예로서 주어진 다음의 설명으로부터 보다 상세한 이해가 이루어질 수 있다:
도 1은 예시적인 APU와 같은 프로세서 블록의 블록 다이어그램이고;
도 2는 동질(homogenous) 컴퓨터 시스템을 도시하고;
도 3은 이질(heterogeneous) 컴퓨터 시스템을 도시하고;
도 4는 GPU 프로세서와 관련된 추가적인 하드웨어 디테일(detail)을 갖는 도 3의 이질 컴퓨터 시스템을 도시하고;
도 5는 프로세서 구성 당(per) 적어도 하나의 타이머 장치 및 멀티 큐(queue)를 통합하는 이질 컴퓨터 시스템을 도시하고;
도 6은 다른 프로세서에 의해 채워진 큐를 갖는 컴퓨터 시스템을 도시하고;
도 7은 이질 시스템 아키텍처(Heterogeneous System Architecture, HSA) 플랫폼을 도시하고;
도 8은 스루풋(throughput) 컴퓨팅 유닛 및 레이턴시(latency) 컴퓨팅 유닛 사이의 큐잉(queuing)의 다이어그램을 도시하고;
도 9는 시간-지연된 작업(work) 항목의 흐름도를 도시하고; 및
도 10은 태스크 큐 상의 태스크의 주기적인 재삽입(reinsertion)의 흐름도를 도시한다.
HSA 플랫폼은 사용자-레벨 코드가 HSA-관리 장치(HSA-managed device)들에서 실행을 위해 태스크(task)를 직접 인큐잉(enqueuing)할 수 있는 메커니즘을 제공한다. 여기에는 스루풋 컴퓨팅 유닛(Throughput Compute Unit, TCU)들, 레이턴시 컴퓨팅 유닛(Latency Compute Unit, LCU)들, DSP들, 고정된 기능 가속기(Fixed Function Accelerator)들 등이 포함될 수 있지만, 이에 제한되지는 않는다. 원래의 실시 예에서, 사용자 프로세스는 HSA-관리 장치들로의 즉각적인 디스패치(dispatch)를 위해 HSA 관리 태스크 큐들 상에 태스크의 인큐잉을 담당한다. HSA에 대한 이러한 확장은 지정된 장래의 시간에 실행을 위해 인큐잉되는 태스크를 위한 메커니즘을 제공한다. 또한, 이는 태스크가 한번 발행될 수 있도록 주기적으로 재-인큐잉을 가능하게 할 수 있지만, 그런 다음 지정된 간격으로 실행하기 위해 적절한 태스크 큐에 반복적으로 재-인큐잉된다. 본 시스템 및 방법은 HSA의 콘텍스트에서 'UNIX/Linux cron' 서비스들에 대한 서비스를 제공한다. 본 시스템 및 방법은 프로세스 생성 및 종료를 위해 OS를 거치는 오버헤드(overhead) 없이 태스크에 의해 스케줄링 및 컴퓨터의 리소스(resources)의 직접 사용을 가능하게 하는 메커니즘을 제공한다. 본 시스템 및 방법은 표준 CPU 프로세싱뿐만 아니라 모든 HSA 관리 장치에 시간-기반 스케줄링(time-based scheduling)의 개념을 확장할 수 있다.
컴퓨팅(computing) 장치가 개시된다. 임의의 프로세싱(processing) 유닛 집합이 사용될 수 있지만, 이질 시스템 아키텍처(HSA) 장치는 본 시스템 및 방법에서 사용될 수 있으며, 예시적인 컴퓨팅 장치는 적어도 하나의 코어를 갖는 적어도 하나의 중앙 프로세싱 유닛(CPU)을 포함하는 가속 프로세싱 유닛(Accelerated Processing Unit, APU)과, 적어도 하나의 HSA 컴퓨팅 유닛(H-CU)을 포함하는 적어도 하나의 그래픽 프로세싱 유닛(Graphics Processing Unit, GPU)과, APU가 적어도 하나의 메모리와 통신할 수 있게 해주는 HSA 메모리 관리 유닛(HMMU 또는 HSA MMU)을 포함한다. 다른 장치는 프로세싱-인-메모리(Processing-in-Memory, PIM), 네트워크 장치 등과 같은 HSA 장치를 포함할 수 있다. 하나 이상의 CPU 또는 적어도 하나의 GPU에서 실행되도록 설정된 HSA 관리 큐에서 적어도 하나의 컴퓨팅 태스크가 인큐잉된다. 하나 이상의 컴퓨팅 태스크는 시간-기반 지연(delay) 큐를 사용하여 인큐잉되고, 상기 시간-기반은 장치 타이머 및/또는 범용 타이머를 사용하고, 아래 설명된 것처럼, 지연 값(delay value)이 고갈 될 때와 같이, 지연 큐가 0(zero)에 도달 할 때 실행된다. 적어도 하나의 컴퓨팅 태스크가 재-인큐잉되는 횟수를 트리거링하는 반복 플래그(repetition flag)에 기초하여 적어도 하나의 컴퓨팅 태스크가 HSA-관리 큐에 재-인큐잉된다. 반복 필드는 적어도 하나의 컴퓨팅 태스크가 재-인큐잉되는 때마다 감소된다. 반복 필드는 적어도 하나의 컴퓨팅 태스크를 무기한으로 재-인큐잉할 수 있는 특별한 값을 포함할 수 있다. 특별한 값은 음수 값(negative one)일 수 있습니다.
도 1은 하나 이상의 개시된 실시 예들이 구현될 수 있는 예시적인 장치(100)의 블록도이다. 장치(100)는, 예를 들어 컴퓨터, 게임 장치, 핸드 헬드 장치, 셋톱 박스, 텔레비전, 이동 전화 또는 태블릿 컴퓨터를 포함할 수 있다. 장치(100)는 프로세서(102), 메모리(104), 저장소(106), 하나 이상의 입력 장치들(108) 및 하나 이상의 출력 장치들(110)을 포함한다. 장치(100)는 선택적으로 입력 드라이버(112) 및 출력 드라이버(114)를 포함할 수도 있다. 장치(100)는 도 1에 도시되지 않은 부가적인 구성 요소들을 포함할 수 있음을 이해할 것이다.
프로세서(102)는 중앙 프로세싱 유닛(CPU), 그래픽 프로세싱 유닛(GPU), 동일한 다이(die) 상의 CPU와 GPU, 또는 하나 이상의 프로세서 코어(core)를 포함할 수 있고, 각 프로세서 코어는 CPU 또는 GPU일 수 있다. 메모리(104)는 프로세서(102)와 동일한 다이 상에 위치될 수 있거나 또는 프로세서(102)와 별도로 위치될 수 있다. 메모리(104)는 예를 들어 랜덤 액세스 메모리(RAM), 동적 RAM 또는 캐시와 같은 휘발성 또는 비-휘발성 메모리를 포함할 수 있다.
저장소(106)는 하드 디스크 드라이브, 솔리드 스테이트 드라이브, 광 디스크 또는 플래시 드라이브와 같은 고정식 또는 착탈식 저장소를 포함할 수 있다. 입력 장치(108)는 키보드, 키패드, 터치 스크린, 터치 패드, 검출기, 마이크로폰, 가속도계, 자이로 스코프, 생체 인식 스캐너 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호의 송신 및/또는 수신을 위한 무선 근거리 네트워크 카드)을 포함할 수 있다. 출력 장치(110)는 디스플레이, 스피커, 프린터, 햅틱 피드백 장치, 하나 이상의 조명, 안테나 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호의 송신 및/또는 수신을 위한 무선 근거리 네트워크 카드)을 포함할 수 있다.
입력 드라이버(112)는 프로세서(102) 및 입력 장치(108)와 통신하며, 프로세서(102)가 입력 장치(108)로부터 입력을 수신하는 것을 가능하게 한다. 출력 드라이버(114)는 프로세서(102) 및 출력 장치(110)와 통신하고, 프로세서(102)가 출력 장치(110)에 출력을 전송하는 것을 가능하게 한다. 입력 드라이버(112) 및 출력 드라이버(114)는 선택적인 구성 요소이고, 입력 드라이버(112) 및 출력 드라이버(114)가 존재하지 않는 경우에 장치(100)는 동일한 방식으로 작동한다는 것을 유의해야 한다.
도 2는 동질(homogenous) 컴퓨터 시스템(200)을 도시한다. 컴퓨터 시스템(200)은 각 CPU가 태스크 큐로부터 태스크를 끌어 당기고(pulling) 필요에 따라 태스크를 프로세싱하면서 동작한다. 도 2에 도시된 바와 같이, 특정 X86 CPU로 표현되는 일련의 프로세서들(240)이 있다. 프로세서는 큐(220)로부터 프로세서(240)로 태스크 또는 스레드 태스크를 검색하기 위해 CPU 작업자(worker)(230)에 의존한다. 도시된 바와 같이, 다수의 큐들(220), CPU 작업자들(230) 및 CPU들(240)이 있을 수 있다. 로드 밸런싱(load balancing)을 제공 및/또는 어느 CPU(240)가 주어진 태스크를 수행하는지(즉, 어느 큐(220)가 태스크로 채워지는지 ((populated)))를 지시하기 위해, 런타임(runtime)(210)이 사용될 수 있다. 이 런타임(210)은 프로세싱 리소스를 효과적으로 관리하기 위해 CPU들에 걸쳐 로드 밸런싱을 제공할 수 있다. 런타임(210)은 예를 들어 라벨(label)을 사용하거나 어드레스(address)를 제공함으로써 프로세싱을 위해 어떤 프로세서를 사용할지를 지시하는 특정 어플리케이션 레벨 명령을 포함할 수 있다. 런타임(210)은 어플리케이션 및 실행될 프로세서를 선택하는 태스크를 포함하는 운영 시스템으로부터 생성되는(spawned) 태스크를 포함할 수 있다. 이하에서 설명되는 바와 같이, 일 실시 예에 따른 로드 밸런싱 및 큐 관리를 제공하기 위해 타이머 장치(컴퓨터 시스템(200)에 적용될 수 있지만 이 구성에서는 도시되지 않음)가 사용될 수 있다.
도 3은 이질(heterogeneous) 컴퓨터 시스템(300)을 도시한다. 컴퓨터 시스템(300)은 컴퓨터 시스템(200)과 유사한 방식으로 각각의 CPU들이 태스크 큐로부터 태스크를 끌어 당기고 필요에 따라 작업을 프로세싱하는 것으로 동작한다. 도 3에 도시된 바와 같이, 일련의 프로세서들(340)이 특정 X86 CPU들로 표현된다. 컴퓨터 시스템(200)에서와 같이, 이들 프로세서들(340) 각각은 큐(320)로부터 프로세서(340)로 태스크 또는 스레드 태스크를 검색하기 위해 CPU 작업자(330)에 의존한다. 도시된 바와 같이, 다수의 큐들(320), CPU 작업자들(330) 및 CPU들(340)이 있을 수 있다. 컴퓨터 시스템(300)은 또한 GPU 관리자(350)를 통해 제어되는 큐(320)를 갖는 적어도 하나의 GPU(360)를 포함할 수 있다. 단 하나의 GPU(360)가 도시되어 있지만, GPU 관리자들(350) 및 큐들(320)을 수반하는 임의의 수의 GPU(360)가 사용될 수 있음을 이해해야 한다.
로드 밸런싱을 제공 및/또는 어떤 CPU(340) 또는 GPU(360)가 주어진 태스크를 수행 하는지(즉, 어느 큐(320)가 태스크로 채워지는지)를 지시하기 위해, 런타임(310)이 사용될 수 있다. 이러한 런타임(310)은 프로세싱 리소스를 효과적으로 관리하기 위해 CPU들에 걸쳐 로드 밸런싱을 제공할 수 있다. 그러나, 컴퓨터 시스템(300)의 이질 특성(heterogeneous nature) 때문에, 런타임(310)은, GPU(360) 및 CPU(340)가 예를 들어, 병렬 대 직렬(parallel vs. serial)과 같이 각각의 큐(320)를 다르게 프로세싱 할 수 있어 런타임(310)이 큐(320) 내의 태스크에 대해 남아있는 프로세싱의 양을 결정하는 것을 더욱 어렵게 하기 때문에, 로드 밸런싱의 보다 어려운 태스크를 가질 수 있다. 이하에서 설명되는 바와 같이, 일 실시 예에 따른 로드 밸런싱 및 큐 관리를 제공하기 위해 타이머 장치(비록 컴퓨터 시스템(300)에 적용될 수 있지만 이 구성에서는 도시되지 않음)가 사용될 수 있다.
도 4는 GPU 프로세서와 관련된 추가적인 하드웨어 디테일(detail)을 갖는 도 3의 이질 컴퓨터 시스템(300)을 도시한다. 특히, 도 4에 도시된 컴퓨터 시스템(400)은 컴퓨터 시스템들(200, 300)과 유사한 방식으로 각각의 CPU가 태스크 큐로부터 태스크를 끌어 당겨 필요에 따라 작업을 프로세싱하는 컴퓨터 시스템(400)을 포함한다. 도 4에 도시된 바와 같이, 일련의 프로세서들(440)이 특정 X86 CPU들로 표현된다. 컴퓨터 시스템들(200, 300)에서와 같이, 이들 프로세서들(440) 각각은 큐(420)로부터 프로세서(440)로 태스크 또는 스레드 태스크를 검색하기 위해 CPU 작업자(430)에 의존한다. 도시된 바와 같이, 다수의 큐들(420), CPU 작업자들(430) 및 CPU들(440)이 있을 수 있다. 컴퓨터 시스템(400)은 또한 GPU 관리자(450)를 통해 제어되는 자신의 큐(420)를 갖는 적어도 하나의GPU(460)를 포함할 수 있다. 단일 GPU(460)만이 도시되어 있지만, GPU 관리자들(450) 및 큐들(420)을 수반하는 임의의 수의 GPU들(460)이 사용될 수 있음을 이해해야 한다. 추가적인 디테일은 GPU 관리자(450)와 관련된 메모리(455)를 포함하는 컴퓨터 시스템(400)에 제공된다. 메모리(455)는 GPU(460)와 관련된 프로세싱을 수행하는데 이용될 수 있다.
단일 명령, 멀티 데이터(single instruction, multiple data, SIMD)(465)를 포함하는 추가적인 하드웨어가 또한 이용될 수 있다. 몇몇 SIMD들(465)이 도시되어 있지만, 임의의 수의 SIMD들(465)이 사용될 수 있다. SIMD(465)는 멀티 데이터 포인트들에 대해 동일한 작업을 동시에 수행하는 멀티 프로세싱 요소들을 갖는 컴퓨터를 포함할 수 있다-동시(병렬) 연산들(computations)이 있지만, 주어진 순간에는 단일 프로세스(명령)만 있다. SIMD(465)는 GPU(460)에 대한 프로세싱의 전체가 필요하지 않은 태스크들과 같이 다수의 태스크들에 동시에 작용할 수 있다. 이것은 예를 들어, 프로세싱 능력의 더 나은 할당을 제공할 수 있다. 이것은 일반적으로 한 번에 하나의 단일 태스크에서 작동하고 다음 태스크로 이동하는 CPU (440)와는 대조적이다. 이하에서 설명되는 바와 같이, 일 실시 예에 따른 로드 밸런싱 및 큐 관리를 제공하기 위해 타이머 장치(비록 컴퓨터 시스템(400)에 적용될 수 있지만 이 구성에서는 도시되지 않음)가 사용될 수 있다.
도 5는 적어도 하나의 타이머 장치(590) 및 프로세서 구성 당 멀티 큐를 통합하는 이질(heterogeneous) 컴퓨터 시스템(500)을 도시한다. 도 5에 도시된 바와 같이, CPU1(540)는 그와 연관된 두 개의 큐들, 큐(520) 및 큐(520)를 가질 수 있다. 큐(520)는 큐가 어플리케이션/런타임(510)을 통해 제어 및/또는 채워지는 도 2 내지 도 4와 관련하여 전술한 유형일 수 있다. 큐(525)는 CPU1(540)에 의해 완료된 태스크들로부터 생성되는 태스크들로 큐(25)를 채우는 것과 같이, CPU1(540)에 의해 채워지고 제어될 수 있다. CPU1(540)에 대해 두 개의 큐들이 도시되어 있지만, 어플리케이션/런타임(510) 및/또는 CPU1(540)로부터 임의의 수의 큐들이 사용될 수 있다.
도 5에 도시된 바와 같이, CPU2(540)는 또한 멀티 큐들(520, 555)을 가질 수 있다. 큐(520)는 도 2 내지 도 4와 관련하여 상술된 유형일 수 있으며, 여기서 큐는 어플리케이션/런타임(510)을 통해 제어 및/또는 채워진다. 큐(555)는 큐(525)가 CPU(540)에 의해 채워지는 것처럼 개념적으로 큐(525)와 유사한 큐이다. 큐(555)는 공급(feed)하는 것(CPU2)이 아닌 다른 프로세싱 유닛(이 경우 GPU(560))으로 채워진다.
도 5에 도시된 바와 같이, 큐(535)는 CPU2(540)에 의해 채워지고 GPU (560)에 공급한다. 큐(545)는 GPU(560)에 공급하고 GPU(560)에 의해 채워진다. 큐(520)는 GPU(560)에 공급하고 어플리케이션/런타임 (510)에 의해 채워진다.
도 5에는 또한 타이머 장치(590)가 도시되어있다. 타이머 장치(590)는 나머지 시스템, 특히 어플리케이션/런타임(510)으로부터 자율적으로(autonomously) 태스크를 생성할 수 있다. 도시된 바와 같이, 타이머 장치(590)는 시스템(500) 내의 임의의 하나 이상의 프로세서에 대한 태스크로 큐들을 채울 수 있다. 특히, 타이머 장치(590)는 CPU1(540), CPU2(540) 또는 GPU(560)상에서 실행되도록 큐들(520)을 채울 수 있다. 타이머 장치는 또한 이러한 각각의 큐들(525, 535, 545, 555)에 대해 프로세서들(540, 560)상에서 실행될 태스크로 큐들(525, 535, 545, 555)을 채울 수 있다.
도 6은 다른 프로세서에 의해 점유된 큐를 갖는 컴퓨터 시스템(600)을 도시한다. 컴퓨터 시스템(600)은 프로세서 구성 당 멀티 큐를 통합하는 이질 컴퓨터 시스템을 도시하는 도 5의 컴퓨터 시스템(500)과 유사하다. 도 6에 도시된 바와 같이, CPU1(640)은 그와 연관된 두 개의 큐들, 큐(620) 및 큐(625)를 가질 수 있다. 큐(620)는, 큐가 어플리케이션/런타임(610)을 통해 제어 및/또는 채워지는, 도 2 내지 도 5와 관련하여 전술한 유형일 수 있다. 큐(625)는 CPU1(640)에 의해 완료된 태스크로부터 생성되는 태스크로 큐(625)를 채우는 것과 같이, CPU1(640)에 의해 채워지고 제어될 수 있다. CPU1(640)에 대해 두 개의 큐들이 도시되어 있지만, 어플리케이션/런타임(610) 및/또는 CPU1(640)로부터 임의의 수의 큐들이 사용될 수 있다.
도 6에 도시된 바와 같이, CPU2(640)는 또한 멀티 큐들(620, 655)을 가질 수 있다. 큐(620)는 다시 도 2 내지 도 5와 관련하여 전술한 유형일 수 있으며, 여기서 큐는 어플리케이션/런타임(610)을 통해 제어 및/또는 채워진다. 큐(655)는 큐(625)가 CPU(640)에 의해 채워진다는 점에서 큐(625)와 개념적으로 비슷한 큐이다. 큐(655)는 공급하는 것(CPU2)이 아닌 다른 프로세싱 유닛(이 경우 GPU(660))으로 채워진다.
도 6에 도시된 바와 같이, 큐(635)는 CPU2(6540)에 의해 채워지고 GPU(660)를 공급한다. 큐(645)는 GPU(660)를 공급하고 GPU(660)에 의해 채워진다. 큐(620)는 GPU(660)를 공급하고 어플리케이션/런타임(610)에 의해 채워진다.
도 6은 태스크들로 각 큐(620, 625, 635, 645 및 655)의 채우기를 보여준다. 큐(625)의 경우 큐에 두 개의 태스크들이 있지만, 임의의 숫자가 사용되거나 채워질 수 있다. 큐(635)는 두 개의 태스크들로 채워지고, 큐(645)는 두 개의 태스크들을 갖고, 및 큐(655)는 단일 태스크로 채워진다. 제로(zero) 태스크부터 큐에 보관될 수 있는 최대 수를 포함하는 임의의 수의 태스크들이 큐에 채워질 수 있기 때문에, 여기에 제시된 태스크들의 수는 단지 예시 일뿐이다.
도 7은 이질 시스템 아키텍처(HSA) 플랫폼(700)을 도시한다. HSA 가속 프로세싱 유닛(Accelerated Processing Unit, APU)(710)은 멀티-코어 CPU(720), 다수의 HSA 컴퓨팅 유닛(H-CU)들(732,734,736)을 갖는 GPU(730), 및 HSA 메모리 관리 유닛(HMMU 또는 HSA MMU)(740)를 포함할 수 있다. CPU(720)는 도 7에 도시된 코어들(722, 724, 726, 728)를 갖는 임의의 수의 코어들을 포함 할 수 있다. GPU(730)는, 비록 도 7에 세 개가 도시되어 있지만, 임의의 수의 H-CU들을 포함할 수 있다. 설명된 실시 예들에서 HSA가 구체적으로 논의되고 제시되었지만, 본 시스템 및 방법은 도 2 내지 도 6에 설명된 시스템들과 같은 동질 또는 이질 시스템 상에서 이용될 수 있다.
HSA APU(710)는 시스템 메모리(750)와 통신할 수 있다. 시스템 메모리(750)는 코히런트(coherent) 시스템 메모리(752) 및 비-코히런트 시스템 메모리(757) 중 하나 또는 모두를 포함할 수 있다.
HSA(700)는 기본적인 컴퓨팅 요소들의 통합된 뷰를 제공할 수 있다. HSA(700)을 사용하면 프로그래머는 레이턴시 컴퓨팅 유닛이라고도 하는 CPU(720)을 스루픗 컴퓨팅 유닛이라고도 하는 GPU(730)와 원활하게 통합할 수 있는 어플리케이션을 작성하고 동시에 각각의 최상의 속성으로부터 이익을 얻을 수 있다.
GPU(730)는 최근 몇 년 동안 순수 그래픽 가속기에서보다 'OpenCL' 및 'DirectCompute'와 같은 표준 API 및 도구에 의해 지원되는 범용 병렬 프로세서로 전환되었다. 이러한 API는 유망한 출발점이지만, GPU(730)가 CPU(720)와 GPU(730) 사이의 상이한 메모리 공간, 가상화되지 않은 하드웨어 등을 포함하는 공통 프로그래밍 태스크를 위해 CPU(720)만큼 유동적으로 사용될 수 있게 하는 환경을 조성하는데 많은 장애물이 남아있다. HSA(700)는 이러한 장애물을 제거하고, 프로그래머가 GPU(730)의 병렬 프로세서를 기존의 멀티-스레드 CPU(720)의 피어(peer)로 활용할 수 있게 한다. 피어 장치는 다른 장치와 동일한 메모리 코히런시(coherency) 도메인을 공유하는 HSA 장치로 정의될 수 있다.
HSA 장치들(700)은 큐들을 사용하여 서로 통신한다. 큐들은 HSA 아키텍처의 핵심적인 부분이다. 레이턴시 프로세서(720)는 'ConcRT' 및 스레딩 구성 블록과 같은 자주 사용되는 태스크 큐잉 실행 시간에 큐들에서 서로에게 컴퓨팅 요청을 전송한다. HSA를 사용하면, 레이턴시 프로세서(720) 및 스루풋 프로세서(730)는 태스크를 서로 및 자신에게 큐잉 할 수 있다. HSA 런타임은 모든 큐 생성 및 제거 동작을 수행한다. 큐는 생산자가 소비자에 대한 요청을 하는 물리적 메모리 영역이다. HSA 하드웨어의 복잡성에 따라, 큐들은 소프트웨어 또는 하드웨어의 임의의 조합으로 관리될 수 있다. 하드웨어 관리 큐는 레이턴시 프로세서(720)에서 실행되는 어플리케이션이, 운영 체제 호출의 개입을 필요로 하지 않으면서, 스루풋 프로세서(730)에 직접 큐잉 작업할 수 있다는 점에서 중요한 성능 이점을 갖는다. 이를 통해 장치들 간의 레이턴시를 매우 낮게 유지할 수 있다. 이에 따라, 스루풋 프로세서(730) 장치는 피어 장치로 간주될 수 있다. 레이턴시 프로세서(720)는 또한 큐들을 가질 수 있다. 이렇게 하면 임의의 장치가 임의의 다른 장치에 대해 큐잉 작업을 할 수 있다.
구체적으로, 도 8에 도시된 바와 같이, 레이턴시 프로세서(720)는 스루풋 프로세서(730)로 큐잉할 수 있다. 이것이 'OpenCL'-스타일 큐잉의 일반적인 시나리오이다. 스루풋 프로세서들(730)은 다른 스루풋 프로세서(730)(자체를 포함 함)에 큐잉할 수 있다. 이는 스루풋 프로세서(730) 상에서 실행되는 워크로드가 레이턴시 프로세서(720)로 왕복하지 않고 추가 작업을 큐잉할 수 있게 하며, 이는 상당히 그리고 종종 수용될 수 없는 레이턴시를 추가할 것이다. 스루풋 프로세서(730)는 레이턴시 프로세서(720)에 큐잉할 수 있다. 이는 스루풋 프로세서(730)상에서 실행되는 워크로드가 메모리 할당 또는 I/O와 같은 시스템 동작을 요청할 수 있게 한다.
현재의 HSA 태스크 큐잉 모델은 즉시 실행을 위해 HSA 관리 큐에 태스크의 인큐잉을 제공한다. 이 향상된 기능은 두 가지 추가 기능 (1) 지연된 인큐잉 및/또는 태스크의 실행 및 (2) 태스크 큐에 대한 태스크의 주기적인 재-인큐잉을 허용한다.
지연된 큐잉 및/또는 태스크의 실행을 위해, HSA 장치(700)는 소정 간격 후에 시간-기반 스케줄/지연 큐의 검사를 유발하도록 설정될 수 있는 타이머 성능을 이용할 수 있다. 이제 도 9를 참조하면, 시간-지연된 작업 항목의 흐름도가 도시되어 있다. 스케줄링된 태스크의 실행을 요청하는 컴퓨팅 장치는 표준 태스크 큐에 태스크를 인큐잉 할 수 있다. 인큐잉된 작업 항목은 작업 항목의 지연 필드(지연 값(910))의 값을 통해 시간-지연된 작업 항목인지 여부를 나타내는 정보가 포함할 수 있다. 지연 값(910)이 0(zero)이면(915), 작업 항목은 즉각적인 디스패치를 위해 인큐잉될 수 있다(920). 지연 값(910)이 0보다 큰 경우(925), 이는 단계(930)에서 태스크 실행을 연기할 시간 양(지연 값에 기초한 지연)을 결정하는데 사용할 값을 나타낸다. 예를 들어, 지연 값(910)은 태스크의 실행을 지연시키는 HSA 플랫폼 클록의 틱(ticks)의 수를 나타낼 수 있다. 지연 값(910)에 의해 지시된 지연이 완료된 후에, 태스크는 단계(940)에서 실행될 수 있다.
타이머 구현은 작업 항목에 특정된 것보다 더 큰 시간 세분성(granularity)으로 제한 될 수 있다. 이 경우, 구현은 태스크를 스케줄링하는 방법을 결정하기 위한 규칙을 선택할 수 있다. 예를 들어, 구현은 가장 가까운 시간 단위로 반올림(round)하거나, 다음으로 가장 높은 또는 다음으로 가장 낮은 시간 단위로 반올림하기로 결정될 수 있다.
작업 항목 정보는 또한 태스크가 재-인큐잉되는지 여부, 만약 그렇다면 얼마나 많이 재-인큐잉되는지 및 재-인큐잉 스케줄 정책을 나타내는 정보를 포함할 수 있다: 이것은 태스크 큐에 태스크의 주기적인 재-삽입을 가능하게 할 수 있다. 작업 항목은 재-인큐 플래그를 포함할 수 있다. 플래그가 0이 아니면, 그런 다음 작업 항목이 실행을 완료하면, 플래그는 반복 필드의 값, 지연 값 및 주기적 플래그의 값을 기반으로 하는 재-스케줄링 정책에 따라 재-스케줄링될 수 있다.
이제 도 10을 참조하면, 태스크 큐에 대한 태스크의 주기적인 재-삽입의 흐름도가 도시된다. 이 흐름은 단계(1010)에서 실행되는 태스크의 완료로 시작하여 주기적인 재 삽입을 허용한다. 단계(1020)에서 재-인큐잉 플래그가 검사된다. 재-인큐잉이 0이면, 주기적인 재 삽입은 단계(1060)에서 종료될 수 있다. 만일 재-인크잉 플래그가 0이 아니면, 재-인큐잉 로직은 단계(1030)에서 반복 필드를 조사함으로써 재-인큐잉 할 횟수를 결정할 수 있다. 반복 필드가 >0 인 경우, 태스크는 재-인큐잉되고, 반복 필드는 단계(1040)에서 1씩 감소된다. 반복 필드가 0에 도달하면, 태스크는 단계(1060)에서 더 이상 제-인큐잉되지 않는다. 특수 값의 반복 값, 예컨대 -1은 단계(1050)에서 태스크가 항상 재-인큐잉되는 것을 명령한다. 이 경우, 반복 필드는 각 태스크 실행 후 감소하지 않는다.
태스크가 재-인큐잉되는 시간 간격은 주기적 플래그의 값을 기초로 한다. 플래그가 0이 아니면, 지연 필드의 간격 동안 태스크가 재-인큐잉된다. 선택적인 확장 기능 중 하나는 랜덤한 간격(random interval)으로 재-인큐잉할 수 있도록 하는 것이다. 이것은 랜덤 시간 기반 실행을 지원할 수 있다. 이것은 데이터 스트림, 시스템 활동, 모니터링된 값 등의 랜덤-기반 샘플링에 유용할 수 있다. 이 랜덤 기반-샘플링을 수행하기 위해, 주기적 플래그가 0이면, 기간은 주기적이기보다는 랜덤하고, 재-인큐잉 기간은 0과 지연 필드 값 사이의 범위에서 랜덤하게 선택된다. 즉, 지연 필드의 값은 지연 범위의 상한 값이다.
스케줄링된 태스크에 대한 정보 검색 및 현재 스케줄링된 태스크의 취소와 같은 기능을 위해 추가 기능이 제공 될 수 있다. HSA 태스크 큐잉 프로토콜은 이러한 명령을 지원하도록 향상될 수 있다. 일부 실시 예는 태스크 식별자, 시스템 명 및 작업 항목 카운터 등을 통해 태스크들 사이의 고유성을 유지할 수 있다. 취소(cancel) 명령의 결과는 특정된 주기적 태스크를 타이머 큐에서 제거하여 더 이상 실행을 위해 스케줄링되지 않도록 한다. 현재 시스템은 지연 큐에 현재 있는 태스크의 리스트 및 상태(status)를 리턴할 수도 있다. 상태에는 다음과 같은 정보가 포함될 수 있다: 다음 실행 시간, 제-인큐잉 플래그 값, 제-인큐잉 카운트 값, 및 간격 값.
취소 및 리스트/상태 동작은 또한 권한 있는(예를 들어, 루트) 액세스를 제공할 수 있다. 이렇게 하면 시스템 관리자와 충분한 권한으로 실행되는 프로세스가 시간 기반 작업을 쿼리하고 가능하게 취소할 수 있다.
본 시스템 및 방법은 각각의 HSA 장치와 통합된 스케줄러가 아닌, 노드 내의 임의의 가용 HSA 장치 상에서 주기적 태스크를 스케줄링하는데 사용되는 단일 HSA 스케줄러 장치가 존재하도록 구성될 수 있다. 노드 당 하나의 HSA 스케줄러 장치, 또는 HSA 장치 당 통합된 HSA 스케쥴러에서, 태스크 큐의 클라이언트로부터의 상호 작용은 동일할 수 있다. 즉, HSA 구현은 스케줄링을 관리하는 단일 HSA 스케줄러 장치를 가질 수 있거나 HSA 디바이스 당 HSA 스케줄러를 가질 수 있다.
본 명세서의 개시 내용에 기초하여 많은 변형이 가능하다는 것을 이해해야 한다. 비록 특징 및 요소가 특정 조합으로 상술되었지만, 각각의 특징 또는 요소는 다른 특징 및 요소 없이 단독으로 또는 다른 특징 및 요소가 있거나 없는 다양한 조합으로 사용될 수 있다.
제공된 방법은 범용 컴퓨터, 프로세서 또는 프로세서 코어에서 구현될 수 있다. 적합한 프로세서는 예로서, 범용 프로세서, 특수 목적 프로세서, 종래의 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로 프로세서들, DSP 코어와 관련된 하나 이상의 마이크로 프로세서, 제어기, 마이크로컨트롤러, 어플리케이션 특정 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 회로, 임의의 다른 유형의 집적 회로(IC), 및/또는 상태 머신을 포함할 수 있다. 이러한 프로세서는 프로세싱된 하드웨어 설명 언어(HDL) 명령어의 결과 및 넷리스트(컴퓨터 판독 가능 매체에 저장될 수 있는 명령어)를 포함하는 다른 중간 데이터의 결과를 사용하여 제조 프로세스를 구성함으로써 제조될 수 있다. 이러한 프로세싱의 결과는 실시 예들의 양태를 구현하는 프로세서를 제조하기 위해 반도체 제조 공정에서 사용되는 마스크작업(maskworks)일 수 있다.
여기에 제공된 방법 또는 흐름도는 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 비 일시적 컴퓨터 판독 가능 저장 매체에 통합된 컴퓨터 프로그램, 소프트웨어 또는 펌웨어로 구현될 수 있다. 비 일시적인 컴퓨터 판독 가능 저장 매체의 예는 ROM (Read Only Memory), RAM (Random Access Memory), 레지스터, 캐시 메모리, 반도체 메모리 디바이스들, 내부 하드 디스크 및 이동식 디스크와 같은 자기 매체, 광 자기 매체, 및 CD-ROM 디스크와 같은 광학 매체, 및 디지털 다용도 디스크 (DVD)를 포함한다.

Claims (20)

  1. 컴퓨팅 장치(computing device)에 있어서,
    적어도 하나의 제1 컴퓨팅 장치 큐(queue)를 갖는 적어도 제1 컴퓨팅 장치, 및 적어도 하나의 제2 컴퓨팅 장치 큐를 갖는 적어도 제2 컴퓨팅 장치를 포함하는 프로세싱 유닛(processing unit); 및
    상기 적어도 하나의 제1 컴퓨팅 장치 큐 및 상기 적어도 하나의 제2 컴퓨팅 장치 큐 중 적어도 하나를 통해 적어도 하나의 컴퓨팅 태스크(task)의 생성(creation) 및 종료(termination)를 위해 운영 시스템의 사용의 오버헤드(overhead)를 감소시키기 위해 상기 적어도 하나의 컴퓨팅 태스크의 인큐잉(enqueuing)을 직접적으로 제어하는 타이머 장치를 포함하는, 장치.
  2. 청구항 1에 있어서, 상기 적어도 하나의 컴퓨팅 태스크는 시간-기반 지연을 이용하여 인큐잉되는, 장치.
  3. 청구항 2에 있어서, 상기 시간-기반은 장치 타이머를 사용하는, 장치.
  4. 청구항 2에 있어서, 상기 시간-기반은 범용 타이머를 사용하는, 장치.
  5. 청구항 2에 있어서, 상기 적어도 하나의 컴퓨팅 태스크는 상기 지연 큐가 0(zero)에 도달할 때 실행되는, 장치.
  6. 청구항 1에 있어서, 상기 제1 컴퓨팅 장치는 레이턴시(latency) 컴퓨팅 유닛을 포함하는, 장치.
  7. 청구항 1에 있어서, 상기 제2 컴퓨팅 장치는 스루풋(throughput) 컴퓨팅 유닛을 포함하는, 장치.
  8. 청구항 1에 있어서, 상기 인큐잉은 연산 리소스(computational resources)에 직접 액세스를 가능하게 하는, 장치.
  9. 청구항 1에 있어서, 상기 제2 컴퓨팅 장치는 상기 제1 컴퓨팅 장치와 다른 유형인, 장치.
  10. 청구항 1에 있어서, 상기 프로세싱 유닛은 이질(heterogeneous)인, 장치.
  11. 청구항 1에 있어서, 상기 적어도 하나의 컴퓨팅 태스크는 상기 적어도 하나의 제1 컴퓨팅 장치 큐 및 상기 적어도 하나의 제2 컴퓨팅 장치 큐 중 적어도 하나를 통해 재-인큐잉되는, 장치.
  12. 청구항 11에 있어서, 상기 재-인큐잉은 플래그로 활성화되는(enabled), 장치.
  13. 청구항 11에 있어서, 상기 재-인큐잉은 상기 적어도 하나의 컴퓨팅 태스크가 재-인큐잉되는 횟수를 트리거링하는 반복 플래그를 기초로 발생하는, 장치.
  14. 청구항 13에 있어서, 상기 반복 필드는 상기 적어도 하나의 컴퓨팅 태스크가 재-인큐잉되는 각각의 시간에 감소되는, 장치.
  15. 청구항 13에 있어서, 상기 반복 필드는 상기 적어도 하나의 컴퓨팅 태스크를 무한정으로 재-인큐잉하게 하는 특정 값을 포함하는, 장치.
  16. 청구항 15에 있어서, 상기 특정 값은 음수인, 장치.
  17. 컴퓨팅 장치에 있어서,
    적어도 하나의 이질 시스템 아키텍처(Heterogeneous System Architecture, HSA) 컴퓨팅 유닛(H-CU); 및
    상기 HSA의 적어도 하나의 프로세서가 적어도 하나의 메모리와 통신할 수 있게 하는 HSA 메모리 관리 유닛(HMMU)을 포함하고,
    적어도 하나의 컴퓨팅 태스크는 상기 적어도 하나의 프로세서에서 실행되도록 설정된 HSA-관리 큐에서 인큐잉되는, 장치.
  18. 청구항 17에 있어서, 상기 적어도 하나의 컴퓨팅 태스크는 시간-기반 지연 큐를 사용하여 인큐잉되는, 장치.
  19. 청구항 17에 있어서, 상기 적어도 하나의 컴퓨팅 태스크는 상기 HSA-관리 큐에서 재-인큐잉되는, 장치.
  20. 청구항 19에 있어서, 상기 재-인큐잉은 상기 적어도 하나의 컴퓨팅 태스크가 재-인큐잉되는 횟수를 트리거링하는 반복 플래그를 기초로 발생하는, 장치.
KR1020187016728A 2015-12-08 2016-09-19 태스크의 시간-기반 스케줄링을 위한 방법 및 장치 KR20180082560A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/962,784 US20170161114A1 (en) 2015-12-08 2015-12-08 Method and apparatus for time-based scheduling of tasks
US14/962,784 2015-12-08
PCT/US2016/052504 WO2017099863A1 (en) 2015-12-08 2016-09-19 Method and apparatus for time-based scheduling of tasks

Publications (1)

Publication Number Publication Date
KR20180082560A true KR20180082560A (ko) 2018-07-18

Family

ID=58798311

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187016728A KR20180082560A (ko) 2015-12-08 2016-09-19 태스크의 시간-기반 스케줄링을 위한 방법 및 장치

Country Status (6)

Country Link
US (1) US20170161114A1 (ko)
EP (1) EP3387529A4 (ko)
JP (1) JP2018536945A (ko)
KR (1) KR20180082560A (ko)
CN (1) CN108369527A (ko)
WO (1) WO2017099863A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10877801B2 (en) 2018-09-28 2020-12-29 Atlassian Pty Ltd. Systems and methods for scheduling tasks
US10776161B2 (en) * 2018-11-30 2020-09-15 Oracle International Corporation Application code callbacks at regular intervals

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05204867A (ja) * 1992-01-28 1993-08-13 Toshiba Corp 対称型マルチプロセッサシステムにおけるタイマ割込み制御方式
JP2643804B2 (ja) * 1993-12-03 1997-08-20 日本電気株式会社 デバッグ方式
JP2002099434A (ja) * 2000-09-25 2002-04-05 Matsushita Electric Ind Co Ltd 制御装置
US7725896B2 (en) * 2003-07-21 2010-05-25 Adc Dsl Systems, Inc. Periodic event execution control mechanism
US8533716B2 (en) * 2004-03-31 2013-09-10 Synopsys, Inc. Resource management in a multicore architecture
JP2006209386A (ja) * 2005-01-27 2006-08-10 Hitachi Ltd 仮想計算機システム及びその外部割込み制御方法
US8848723B2 (en) * 2010-05-18 2014-09-30 Lsi Corporation Scheduling hierarchy in a traffic manager of a network processor
US20110145515A1 (en) * 2009-12-14 2011-06-16 Advanced Micro Devices, Inc. Method for modifying a shared data queue and processor configured to implement same
US8161494B2 (en) * 2009-12-21 2012-04-17 Unisys Corporation Method and system for offloading processing tasks to a foreign computing environment
US8707314B2 (en) * 2011-12-16 2014-04-22 Advanced Micro Devices, Inc. Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations
US20130339978A1 (en) * 2012-06-13 2013-12-19 Advanced Micro Devices, Inc. Load balancing for heterogeneous systems
JP6209042B2 (ja) * 2013-09-30 2017-10-04 ルネサスエレクトロニクス株式会社 データ処理装置

Also Published As

Publication number Publication date
WO2017099863A1 (en) 2017-06-15
EP3387529A1 (en) 2018-10-17
EP3387529A4 (en) 2019-06-19
JP2018536945A (ja) 2018-12-13
CN108369527A (zh) 2018-08-03
US20170161114A1 (en) 2017-06-08

Similar Documents

Publication Publication Date Title
US10545789B2 (en) Task scheduling for highly concurrent analytical and transaction workloads
US9477521B2 (en) Method and system for scheduling repetitive tasks in O(1)
Herman et al. RTOS support for multicore mixed-criticality systems
JP6294586B2 (ja) 命令スレッドを組み合わせた実行の管理システムおよび管理方法
Reda et al. Rein: Taming tail latency in key-value stores via multiget scheduling
US10552213B2 (en) Thread pool and task queuing method and system
KR101332840B1 (ko) 병렬 컴퓨팅 프레임워크 기반의 클러스터 시스템, 호스트 노드, 계산 노드 및 어플리케이션 실행 방법
KR20180053359A (ko) 다중-버전형 태스크들의 효율적 스케줄링
US20150058858A1 (en) Dynamic task prioritization for in-memory databases
US9632836B2 (en) Scheduling applications in a clustered computer system
US9973512B2 (en) Determining variable wait time in an asynchronous call-back system based on calculated average sub-queue wait time
CN110308982B (zh) 一种共享内存复用方法及装置
US9507633B2 (en) Scheduling method and system
US20120297216A1 (en) Dynamically selecting active polling or timed waits
KR20110075296A (ko) 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
CN111597044A (zh) 任务调度方法、装置、存储介质及电子设备
KR20180082560A (ko) 태스크의 시간-기반 스케줄링을 위한 방법 및 장치
US11392388B2 (en) System and method for dynamic determination of a number of parallel threads for a request
Cheng et al. Dynamic resource provisioning for iterative workloads on Apache Spark
Tendulkar et al. A case study into predictable and composable MPSoC reconfiguration
US11474868B1 (en) Sharded polling system
Kerbl et al. Hierarchical Bucket Queuing for Fine‐Grained Priority Scheduling on the GPU
Afshar et al. Resource sharing under multiprocessor semi-partitioned scheduling
Ramasubramanian et al. Studies on Performance Aspect of Scheduling Algorithms on Multicore Platform
US20230367633A1 (en) Gpu and gpu method