KR102576443B1 - 연산 장치 및 그 잡 스케줄링 방법 - Google Patents

연산 장치 및 그 잡 스케줄링 방법 Download PDF

Info

Publication number
KR102576443B1
KR102576443B1 KR1020180128665A KR20180128665A KR102576443B1 KR 102576443 B1 KR102576443 B1 KR 102576443B1 KR 1020180128665 A KR1020180128665 A KR 1020180128665A KR 20180128665 A KR20180128665 A KR 20180128665A KR 102576443 B1 KR102576443 B1 KR 102576443B1
Authority
KR
South Korea
Prior art keywords
job
type processor
memory
processor
jobs
Prior art date
Application number
KR1020180128665A
Other languages
English (en)
Other versions
KR20200046886A (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 삼성에스디에스 주식회사
Priority to KR1020180128665A priority Critical patent/KR102576443B1/ko
Priority to US16/664,369 priority patent/US11494228B2/en
Publication of KR20200046886A publication Critical patent/KR20200046886A/ko
Application granted granted Critical
Publication of KR102576443B1 publication Critical patent/KR102576443B1/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/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
    • 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
    • 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/505Allocation 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 load
    • 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

Abstract

제1 타입 프로세서와 제2 타입 프로세서를 구비한 컴퓨팅 시스템에서 수행 되는 잡 스케줄링 방법이 제공된다. 본 발명의 일 실시예에 따른 방법은, 상기 제2 타입 프로세서의 코어 사용률이 측정되는 단계와, 상기 측정된 코어 사용률이 기준치에 미달하는 경우, 상기 제1 타입 프로세서가 상기 제2 타입 프로세서에 현재 실행 중인 제1 잡(job)을 중지하라는 잡 중지 명령을 송신하는 단계와, 상기 잡 중지 인스트럭션의 수신에 응답하여, 상기 제1 잡이 상기 제2 타입 프로세서의 메모리에 점유하고 있는 영역의 데이터가 메인 메모리에 복사되는 단계와, 상기 메인 메모리에 저장된 제2 잡(job)의 데이터가 상기 제2 타입 프로세서의 메모리에 복사되는 단계와, 상기 제1 타입 프로세서가 상기 제2 타입 프로세서에 상기 제2 잡의 실행을 지시하는 명령을 송신하는 단계를 포함한다.

Description

연산 장치 및 그 잡 스케줄링 방법{Calculating apparatus and job scheduling method thereof}
본 발명은 연산 장치 및 그 잡 스케줄링(job scheduling) 방법에 관한 것이다. 보다 자세하게는 메인 프로세서의 역할을 수행하는 제1 타입 프로세서 및 특화된 형태의 연산이 강화된 제2 타입 프로세서를 구비한 컴퓨팅 시스템에서, 상기 제2 타입 프로세서의 활용성이 강화되는 방향으로 잡 스케줄링 방식을 개선한 연산 장치 및 그 잡 스케줄링 방법에 관한 것이다.
멀티 쓰레딩(multi-threading) 방식으로 구현된 잡(job)의 연산을 효율적으로 처리하기 위한 전용 프로세서가 제공된다. 예를 들어, GPU(Graphic Processing Unit)이 그것이다. 상기 GPU는 그래픽 연산에 특화된 프로세서로서 내부에 다수의 코어가 집적되어 있어 멀티 쓰레딩 연산을 효율적으로 처리할 수 있다. GPU는 그래픽 연산이 아니라, 일반의 멀티 쓰레드 연산의 처리에도 널리 활용되고 있다. 이러한 범용 멀티 쓰레딩 연산 능력이 강화된 점을 강조하기 위하여 GPGPU(General-Purpose Graphic Processing Unit)임을 표방하는 제품도 제공되고 있다. 상기 GPU, 또는 GPGPU는 내부에 전용 메모리를 구비하고 있다. 상기 전용 메모리에 로드 된 각각의 잡 코드가 멀티 코어를 통해 병렬 연산 된다.
상기 전용 메모리에 더 이상의 잡 코드가 로드(load) 될 수 없는 경우에는, 로드 된 잡 코드의 연산이 종료 되어 언로드(unload) 될 때까지 기다려야 새로운 잡 코드가 상기 GPU 또는 GPGPU를 통하여 연산 될 수 있을 것이다. 코어 사용률이 높은 경우에는, 기존의 잡이 연산 완료될 때까지 기다려야 함은 물론이다. 그러나, 코어 사용률이 낮은 경우에도 불구하고 상기 전용 메모리에 더 이상의 잡 코드 로딩 공간이 존재하지 않음을 이유로 기존의 잡이 연산 완료될 때까지 기다려야 하는 비효율성이 발생되고 있어 문제가 된다. 이러한 문제는, 시중에 유통되고 있는 GPU 또는 GPGPU 패키지에 구비된 전용 메모리의 용량이 충분하지 않은 경우 더욱 심각한 비효율성을 야기하고 있다.
미국공개특허 제2018-0088989호
본 발명이 해결하고자 하는 기술적 과제는, 특화된 형태의 연산이 강화된 제2 타입 프로세서의 코어 사용률이 낮은 경우 발생되는 제2 타입 프로세서 활용성 측면의 비효율성을 개선하는 장치 및 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는, 상기 제2 타입 프로세서에 가상화 기술(virtualization)이 적용된 환경에서, 상기 제2 타입 프로세서의 코어 사용률이 낮은 경우 발생되는 제2 타입 프로세서 활용성 측면의 비효율성을 개선하는 장치 및 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는, 복수의 잡의 코드 사이즈가 상기 제2 타입 프로세서의 메모리 용량을 초과하는 경우에도 상기 복수의 잡이 상기 제2 타입 프로세서를 통하여 실행될 수 있도록 함으로써, 제2 타입 프로세서 활용성을 개선하는 장치 및 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명의 기술분야에서의 통상의 기술자에게 명확하게 이해 될 수 있을 것이다.
상기 기술된 문제점들을 해결하기 위한 본 발명의 일 실시예에 따르면, 제1 타입 프로세서와 제2 타입 프로세서를 구비한 컴퓨팅 시스템에서 수행 되는 잡 스케줄링 방법이 제공된다. 상기 잡 스케줄링 방법은, 상기 제2 타입 프로세서의 코어 사용률이 측정되는 단계와, 상기 측정된 코어 사용률이 기준치에 미달하는 경우, 상기 제1 타입 프로세서가 상기 제2 타입 프로세서에 현재 실행 중인 제1 잡(job)을 중지하라는 잡 중지 명령을 송신하는 단계와, 상기 잡 중지 인스트럭션의 수신에 응답하여, 상기 제1 잡이 상기 제2 타입 프로세서의 메모리에 점유하고 있는 영역의 데이터가 메인 메모리에 복사되는 단계와, 상기 메인 메모리에 저장된 제2 잡(job)의 데이터가 상기 제2 타입 프로세서의 메모리에 복사되는 단계와, 상기 제1 타입 프로세서가 상기 제2 타입 프로세서에 상기 제2 잡의 실행을 지시하는 명령을 송신하는 단계를 포함한다.
일 실시예에서, 상기 잡 중지 명령을 송신하는 단계는 상기 메모리의 유휴 공간이 기준치에 미달하고 동시에 상기 측정된 코어 사용률이 기준치에 미달하는 경우, 상기 제1 타입 프로세서가 상기 제2 타입 프로세서에 현재 실행 중인 제1 잡(job)을 중지하라는 잡 중지 명령을 송신하는 단계, 및 상기 측정된 코어 사용률이 기준치에 미달하며, 또한 동시에 상기 제1 잡의 상기 제2 프로세스 이용 트렌드가 안정화 상태인 경우, 상기 제1 타입 프로세서가 상기 제2 타입 프로세서에 현재 실행 중인 제1 잡(job)을 중지하라는 잡 중지 명령을 송신하는 단계 중 하나 이상을 포함할 수 있다.
일 실시예에서, 상기 제2 타입 프로세서는 GPU(Graphic Processing Unit)일 수 있다. 이 때, 상기 GPU의 메모리와 상기 메인 메모리는 직접 메모리 억세스(Direct Memory Access; DMA) 방식으로 서로 데이터를 송수신 할 수 있는 것이고, 상기 제1 잡이 상기 제2 타입 프로세서의 메모리에 점유하고 있는 영역의 데이터가 메인 메모리에 복사되는 단계는 상기 제1 잡이 상기 제2 타입 프로세서의 메모리에 점유하고 있는 영역의 데이터가 상기 메인 메모리에 메모리 억세스 방식을 통해 직접 복사되는 단계를 포함하고, 상기 메인 메모리에 저장된 제2 잡(job)의 데이터가 상기 제2 타입 프로세서의 메모리에 복사되는 단계는 상기 메인 메모리에 저장된 제2 잡(job)의 데이터가 상기 제2 타입 프로세서의 메모리에 메모리 억세스 방식을 통해 직접 복사되는 단계를 포함할 수 있다.
일 실시예에서, 상기 제2 잡은 상기 제1 잡과 동일한 잡 스위칭 그룹에 속한 것이다. 이 때, 상기 잡 스위칭 그룹은, 제2 타입 프로세서 메모리의 요구 사이즈가 상기 잡 스위칭 그룹에 할당된 소정 범위 이내인 복수의 잡들로 구성된 것일 수 있다. 이 때, 상기 제2 잡은, 상기 제1 타입 프로세서를 통해 수행되던 도중 상기 제2 타입 프로세서의 사용을 기다리는 잡들 중에서 선정된 것이거나, 상기 제1 잡이 속한 그룹에 포함된 복수의 잡(job)들이 순차적으로 변경되어 가며 선정되는 것일 수 있다.
일 실시예에서, 상기 제2 잡은, 상기 제1 잡이 상기 제2 타입 프로세서의 메모리에 점유하고 있는 영역 사이즈의 이하만큼 상기 제2 타입 프로세서의 메모리를 요구하는 잡이고, 상기 제1 타입 프로세서를 통해 수행되던 도중 상기 제2 타입 프로세서의 사용을 기다리는 잡일 수 있다.
일 실시예에서, 상기 제2 타입 프로세서는 두 개 이상의 잡의 합산 메모리 요구량이 상기 제2 타입 프로세서의 메모리 용량을 초과하지 않는 경우, 상기 두 개 이상의 잡이 동시에 상기 제2 타입 프로세서를 활용할 수 있도록 지원하는 것이고, 상기 잡 중지 명령을 송신하는 단계는, 상기 제1 타입 프로세서가 상기 제2 타입 프로세서에 현재 실행 중인 제1 잡 및 제3 잡 중 상기 제1 잡을 중지하라는 잡 중지 명령을 송신하는 단계를 포함할 수 있다. 이 때, 상기 제2 타입 프로세서는 GPU이고, 상기 두 개 이상의 잡의 일부는 상기 GPU를 잡 스케줄러를 통해 프로비저닝(provisioning) 받은 제1 컴퓨팅 환경에서 실행되는 것이고, 상기 두 개 이상의 잡의 나머지 잡들 중 적어도 일부는, 상기 GPU를 잡 스케줄러를 통해 프로비저닝 받은 제2 컴퓨팅 환경에서 실행되는 것일 수 있다. 상기 제2 잡은 상기 제1 잡과 동일한 잡 스위칭 그룹에 속한 것으로서, 잡 스케줄러를 통해 상기 제1 잡을 생성한 컴퓨팅 환경 에 프로비저닝 된 상기 제1 타입 프로세서를 통해 수행되던 도중 상기 제2 타입 프로세서의 사용을 기다리는 잡들 중에서 순차적으로 변경되어 가며 선정되는 것이거나, 상기 제1 잡과 동일한 잡 스위칭 그룹에 속한 것으로서, 상기 잡 스케줄러를 통해 상기 제1 잡을 생성한 컴퓨팅 환경에 프로비저닝 된 상기 제1 타입 프로세서를 통해 수행되던 도중 상기 제2 타입 프로세서의 사용을 기다리는 잡들 중에서, 각각의 잡에 부여된 우선순위를 기준으로 선정되는 것일 수 있다. 이 때, 상기 각각의 잡에 부여된 우선순위는, 각각의 잡을 생성한 컴퓨팅 환경 에 부여된 우선순위에 기초하여 결정된 것일 수 있다.
일 실시예에서, 상기 제1 잡이 상기 제2 타입 프로세서의 메모리에 점유하고 있는 영역의 데이터가 메인 메모리에 복사되는 단계는, 상기 제1 잡의 연산이 상기 제1 타입 프로세서에서 수행되는 단계를 포함하고, 상기 잡 스케줄링 방법은 상기 제2 잡의 실행을 지시하는 명령을 송신하는 단계 이후에, 상기 제1 타입 프로세서에서 수행되는 제1 잡이 상기 제2 타입 프로세서의 연산을 요하는 경우, 상기 제1 잡과 상기 제2 잡의 프로세서 스위칭을 수행하는 단계를 더 포함할 수 있다. 이 때, 상기 제1 잡과 상기 제2 잡의 프로세서 스위칭을 수행하는 단계는, 상기 제1 타입 프로세서에서 수행되는 제1 잡이 상기 제2 타입 프로세서의 연산을 요하는 경우, 상기 제2 잡이 상기 제2 타입 프로세서를 활용 중인 경우에도 상기 제1 잡과 상기 제2 잡의 프로세서 스위칭을 수행하는 단계를 포함할 수 있다. 이 때, 상기 제1 잡과 상기 제2 잡의 프로세서 스위칭을 수행하는 단계는, 상기 제1 타입 프로세서가 상기 제2 타입 프로세서에 현재 실행 중인 제2 잡을 중지하라는 잡 중지 명령을 송신하는 단계와, 상기 잡 중지 인스트럭션의 수신에 응답하여, 상기 제2 잡이 상기 제2 타입 프로세서의 메모리에 점유하고 있는 영역의 데이터가 메인 메모리에 복사되는 단계와, 상기 메인 메모리에 저장된 제1 잡의 데이터가 상기 제2 타입 프로세서의 메모리에 복사되는 단계와, 상기 제1 타입 프로세서가 상기 제2 타입 프로세서에 상기 제1 잡의 실행을 지시하는 명령을 송신하는 단계를 포함할 수 있다.
상기 기술된 문제점들을 해결하기 위한 본 발명의 다른 실시예에 따른 제1 타입 프로세서와 제2 타입 프로세서를 구비한 컴퓨팅 시스템에서 수행 되는 방법은, 잡 큐(job queue)로부터 디큐(dequeue)된 잡이 GPU의 메모리에 로드 되는 것이, 더이상의 로드가 불가능할 때까지 반복되는 단계와, 상기 제2 타입 프로세서의 코어 사용률이 측정되는 단계와, 상기 측정된 코어 사용률이 기준치에 미달하는 경우, 상기 제1 타입 프로세서가 상기 제2 타입 프로세서에서 현재 실행 중인 잡들 중 하나의 중지 잡을 선정하고, 선정된 중지 잡을 중지하라는 잡 중지 명령을 상기 제2 타입 프로세서에 송신하는 단계와, 상기 잡 중지 인스트럭션의 수신에 응답하여, 상기 선정된 중지 잡이 상기 제2 타입 프로세서의 메모리에 점유하고 있는 영역의 데이터가 메인 메모리에 복사되는 단계와, 상기 잡 큐로부터 상기 중지 잡과 잡 스위칭 그룹을 구성하는 것으로 선정된 신규 잡의 데이터가 상기 제2 타입 프로세서의 메모리에 복사되는 단계와, 상기 제1 타입 프로세서가 상기 제2 타입 프로세서에 상기 제2 잡의 실행을 지시하는 명령을 송신하는 단계와, 상기 제2 타입 프로세서의 코어 사용률을 모니터링하여, 상기 코어 사용률이 기준치에 미달할 때마다 상기 잡 스위칭 그룹에 속한 잡을 순차적으로 변경하여 상기 제2 타입 프로세서에서 실행하는 단계를 포함한다.
상기 기술된 문제점들을 해결하기 위한 본 발명의 다른 실시예에 따른 연산 장치는 복수의 인스트럭션(instruction)을 로드하는 메인 메모리와, 상기 메모리에 로드된 복수의 인스트럭션을 실행하는 제1 타입 프로세서와, 전용 메모리를 포함하는 제2 타입 프로세서를 포함한다. 이 때, 상기 복수의 인스트럭션은, 상기 제2 타입 프로세서의 코어 사용률을 측정하는 인스트럭션과, 상기 측정된 코어 사용률이 기준치에 미달하는 경우, 상기 제2 타입 프로세서에 현재 실행 중인 제1 잡(job)을 중지하라는 잡 중지 명령을 송신하는 인스트럭션과, 상기 잡 중지 인스트럭션의 수신에 응답하여 상기 제1 잡이 상기 제2 타입 프로세서의 메모리에 점유하고 있는 영역의 데이터가 상기 메인 메모리에 복사되면, 상기 메인 메모리에 저장된 제2 잡(job)의 데이터를 상기 제2 타입 프로세서의 메모리에 복사하는 인스트럭션과, 상기 제2 타입 프로세서에 상기 제2 잡의 실행을 지시하는 명령을 송신하는 인스트럭션을 포함한다.
도 1은 본 발명의 일 실시예에 따른 연산 장치의 구성도이다.
도 2는 본 발명의 다른 실시예에 따른 연산 장치의 구성도이다.
도 3은 본 발명의 몇몇 실시예들에 의하여 해결되는 제2 프로세서의 활용성 측면의 비효율성을 설명하기 위한 도면이다.
도 4는 본 발명의 또 다른 실시예에 따른 연산 장치의 구성도이다.
도 5는 본 발명의 몇몇 실시예들이 가상화 환경에서 적용될 수 있음을 설명하기 위한 도면이다.
도 6은 본 발명의 또 다른 실시예에 따른 잡 스케줄링 방법을 설명하기 위한 순서도이다.
도 7 내지 도 8은 도 6을 참조하여 설명한 잡 스케줄링 방법이 일부 변형된 실시예를 설명하기 위한 순서도이다.
도 9a 내지 도 9b는 도 6 내지 도 8을 참조하여 설명한 잡 스케줄링 방법을 예시를 들어 설명하기 위한 도면이다.
도 10은 도 6 내지 도 8을 참조하여 설명한 잡 스케줄링 방법에 따른 후속 동작을 설명하기 위한 도면이다.
도 11은 본 발명의 또 다른 실시예에 따른 잡 스케줄링 방법을 설명하기 위한 순서도이다.
도 12a 내지 도 12d는 도 11에 따른 결과를 예시를 들어 설명하기 위한 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 게시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 이하, 도면들을 참조하여 본 발명의 몇몇 실시예들을 설명한다.
본 발명의 일 실시예에 따른 연산 장치의 구성 및 동작을 도 1을 참조하여 설명한다. 도 1에 도시된 바와 같이, 본 실시예에 따른 연산 장치(1000)는 제1 타입 프로세서(100), 제2 타입 프로세서(200) 및 메인 메모리(300)를 포함한다.
제1 타입 프로세서(100)는 메인 메모리(300)에 로드된 인스트럭션을 실행하는, 연산 장치(1000)의 메인 프로세서로 이해될 수 있을 것이다. 상기 인스트럭션에서, 제2 타입 프로세서(200)를 통한 연산이 요청되면, 제1 타입 프로세서(100)는 제2 타입 프로세서(200)의 메모리(210)에 연산 대상 인스트럭션 및 관련 데이터를 복사하고, 제2 타입 프로세서(200)에 연산을 지시(instruct)한다. 제2 타입 프로세서(200)는 코어(220)를 통해 메모리(210)에 저장된 인스트럭션을 실행한다.
이하, 본 명세서에서, 제2 타입 프로세서(200)에 부여된 연산 작업의 단위를, 잡(job)으로 지칭하기로 한다.
일 실시예에서, 제2 타입 프로세서(200)는 각각 성능은 강하지 않으나 다수가 병렬 집적된 코어(220)를 구비하여, 병렬 연산에 강점을 보이는 것일 수 있다. 제2 타입 프로세서의 메모리(210)는 read/write가 모두 가능한 것으로서, 예를 들어 DRAM인 것으로 이해될 수 있을 것이다. 제2 타입 프로세서의 메모리(210)는 제2 타입 프로세서에 구비된 캐시, 레지스터를 가리키지는 않는다. 제2 타입 프로세서의 메모리(210)는 제2 타입 프로세서(200)의 코어(220) 및 기타 모듈과 함께 패키징 된 것일 수 있으나, 제2 타입 프로세서(200)의 코어(220)에 페치(fetch) 되는 인스트럭션이 로드되는 메모리이면 족하고, 반드시 제2 타입 프로세서(200)의 코어(220) 및 기타 모듈과 함께 패키징되어야 하는 것은 아니다.
그런데, 제2 타입 프로세서의 메모리(210)는 제2 타입 프로세서(200)의 코어(220) 및 기타 모듈과 함께 패키징 된 것인 경우라면, 제2 타입 프로세서의 메모리(210)는 제2 타입 프로세서(200) 구매 후에 확장이 어렵다. 따라서, 코어(220)의 처리 속도에 걸맞는 충분한 용량이 확보되기 어려운 것이 현실이다.
한편, 제2 타입 프로세서의 메모리(210)에 더 이상의 새로운 잡이 로드 될 수 없는 경우에는, 제2 타입 프로세서(200)의 사용을 요하는 잡은, 현재 제2 타입 프로세서(200)를 사용하고 있는 잡이 종료되어 제2 타입 프로세서 메모리(210)로부터 언로드(unload) 될 때까지 기다려야 한다. 이처럼, 어떠한 잡이 제2 타입 프로세서의 메모리(210)를 점유하면 그 잡이 제2 타입 프로세서의 코어(220)를 활용하고 있지 않은 경우에도, 다른 잡이 제2 타입 프로세서의 코어(220)를 활용할 수 없다는 비효율성이 존재하는 것이다.
그런데, 이러한 점을 해결하기 위하여, 제2 타입 프로세서의 메모리(210)를 제2 타입 프로세서(200) 구매 후 용량 확장하는 것도 이미 설명한 바와 같이 어렵다. 제2 타입 프로세서(200)의 가격이 메인 메모리(300) 대비 비싼 점을 고려하면, 이러한 비효율성은 경제적 손실로 연결될 것이다.
따라서, 제2 타입 프로세서의 메모리(210)를 용량 확장하지 않고, 제2 타입 프로세서의 코어(220)의 사용률을 증대 시키기 위한 방법이 제공될 필요가 있다. 본 실시예에 따른 연산 장치(1000)는 개선된 잡 스케줄링 로직을 실행한다. 상기 개선된 잡 스케줄링 로직은, i) 제2 타입 프로세서의 코어 사용률이 측정되는 것, ii) 상기 측정된 코어 사용률이 기준치에 미달하는 경우, 상기 제1 타입 프로세서가 상기 제2 타입 프로세서에 현재 실행 중인 제1 잡(job)을 중지하라는 잡 중지 명령을 송신하는 것, iii) 상기 잡 중지 인스트럭션의 수신에 응답하여, 상기 제1 잡이 상기 제2 타입 프로세서의 메모리에 점유하고 있는 영역의 데이터가 메인 메모리에 복사되는 것, iv) 상기 메인 메모리에 저장된 제2 잡(job)의 데이터가 상기 제2 타입 프로세서의 메모리에 복사되는 것, v) 상기 제1 타입 프로세서가 상기 제2 타입 프로세서에 상기 제2 잡의 실행을 지시하는 명령을 송신하는 것을 포함한다.
상기 개선된 잡 스케줄링 로직은 복수의 인스트럭션 형태로 컴파일 되어 메인 메모리(300)에 로드 됨으로써 연산 장치(1000)에서 실행될 수 있을 것이다.
상기 개선된 잡 스케줄 로직은 제2 타입 프로세서의 메모리(210)에 로드 되어 있지만, 코어(220)를 통하여 연산되지는 않고 있는 잡을 메인 메모리(300)에 백업하고, 그 대신 제2 타입 프로세서를 이용한 연산이 필요한 신규의 잡을 제2 타입 프로세서의 메모리(210)에 새롭게 로드함으로써, 제2 타입 프로세서(200)의 코어(220)의 사용률을 높인다. 상기 개선된 잡 스케줄 로직의 구체적인 동작 및 세부적인 실시예들은 본 명세서를 통해 추후 상세하게 설명될 것이다.
도 2에 도시된 바와 같이, 몇몇 실시예들에서 제2 프로세서는 GPU(Graphic Processing Unit)(200a)일 수 있다. 이 때, GPU 메모리(210a)와 메인 메모리(300)가 직접 메모리 억세스(Direct Memory Access; DMA) 기술을 통하여 빠르게 데이터를 송수신 할 수 있도록 하는 DMA 엔진(240)이 GPU(200a)에 구비될 수 있다. DMA 엔진(240)이 구비됨으로써, 상기 개선된 잡 스케줄 로직은 상기 제1 잡이 상기 제2 타입 프로세서의 메모리에 점유하고 있는 영역의 데이터가 상기 메인 메모리에 메모리 억세스 방식을 통해 직접 복사되고, 상기 메인 메모리에 저장된 제2 잡(job)의 데이터가 상기 제2 타입 프로세서의 메모리에 메모리 억세스 방식을 통해 직접 복사되는 것으로 일부 변경될 것이다.
GPU(200a)는 멀티-쓰레딩 방식의 잡(job)을 다수의 GPU 코어(220a)를 통해 병렬 실행한다. 상기 병렬 실행은 쓰레드 실행 컨트롤 유닛(230)에 의하여 제어된다.
도 2의 연산 장치에서 발생할 수 있는 GPU 코어(220a)의 활용성 측면의 비효율성을 다시 한번 도 3을 참조하여 설명한다. GPU(200a)에 구비된 메모리(210a)의 용량이 12기가 바이트라고 가정하고, GPU 메모리(210a)에 4 기가 바이트 용량의 잡 A(201a-1) 및 8기가 바이트 용량의 잡 B(201a-2)가 로드 되어 있다고 가정하면, 이 상황에서 GPU 코어(220a)의 사용률이 23% 밖에 되지 않는 경우에도, 용량이 2기가 바이트 밖에 되지 않는 신규의 잡 C의 실행 요청(1)은, 잡 A(201a-1) 및 잡 B(201a-2) 중 어느 하나가 GPU(200a) 사용을 마무리 하여 스스로 GPU 메모리(210a)에서 unload 될 때까지 기다려야 하는 것이다. 상기 개선된 잡 스케줄 로직은 잡 A(201a-1) 또는 잡 B(201a-2)를 메인 메모리로 백업하고, 그 대신 잡 C를 GPU 메모리(210a)에 load 함으로써, GPU 코어(220a)의 사용률을 증대시킬 수 있을 것이다.
이하, 본 발명의 또 다른 실시예에 따른 연산 장치의 구성 및 동작을 도 4를 참조하여 설명한다. 도 4에 도시된 바와 같이, 본 실시예에 따른 연산 장치(1000)는 제2 타입 프로세서(200), 메인 메모리(300), 잡 스케줄러(60) 및 잡 스케줄러 개선부(50)를 포함한다.
개선된 잡 스케줄러(50)는 잡 스케줄러(60)잡 스케줄러 인터페이스(52), 제2 프로세서 모니터링부(530), 잡 그룹핑부(54), GPU 버퍼 관리부(55) 및 그룹 잡 실행부(56)를 포함할 수 있다. 예를 들어, 잡 스케줄러 개선부(50)는 메인 메모리(300)에 로드된 복수의 인스트럭션이 CPU(미도시)에 의하여 수행됨으로써 구현되는 것일 수 있을 것이다.
잡 스케줄러(60)는 CPU(미도시)에서 실행되는 인스트럭션의 요청에 응답하여, 제2 타입 프로세서(200)에서 실행되는 잡들의 시작, 정지, 재시작, 종료를 관리한다. 잡 스케줄러(60)는 각각의 잡의 우선순위를 반영하여 각각의 잡들의 시작, 정지, 재시작, 종료를 관리할 수 있다.
잡 스케줄러(60)는 물리적 하드웨어(physical hardware)를 가상화(virtualization) 하여 각각의 컴퓨팅 환경에 프로비저닝(provisioning) 해주는 기능을 더 구비할 수도 있다. 상기 컴퓨팅 환경은 예를 들어, 가상 머신(virtual machine), 베어메털(Baremetal) 및 컨테이너(container) 등 일 수 있다.
잡 스케줄러 인터페이스(52)는 잡 스케줄러(60)와 제2 프로세서 모니터링부(530), 잡 그룹핑부(54), GPU 버퍼 관리부(55) 및 그룹 잡 실행부(56) 사이의 데이터 송수신을 중개하고, 개선된 잡 스케줄러의 전반적인 로직 흐름을 제어한다.
도 4를 참조하여 설명하는 잡 스케줄러 개선부(50)는, 도 5에 도시된 GPU 가상화 환경에도 적용될 수 있을 것이다. 도 5에는 다수의 GPU(200a), 다수의 CPU(100a) 및 다수의 RAM을 포함하는 물리적 하드웨어를 잡 스케줄러(60)가 가상화 하여 다수의 컴퓨팅 환경(70)에 프로비저닝(provisioning) 해주는 환경에 개선된 스케줄러 개선부(50)가 일종의 미들웨어로서 적용된 것이 도시되어 있다. 도 4에 도시된 다수의 컴퓨팅 환경(70)은, 그 일 예시로 가상 머신(Virtual Machine; VM)이 도시 되어 있으나, 베어메털 및 컨테이너 등 다양한 컴퓨팅 환경에도 도 4를 참조한 설명이 적용될 수 있음을 유의한다.
이하, GPU 가상화 환경에 잡 스케줄러 개선부(50)가 적용된 경우를 가정하여, 잡 스케줄러 개선부(50)의 동작을 설명한다.
잡 스케줄러(60)는 잡 큐(Job Queue)로 부터 잡을 dequeue하여, 잡이 필요로 하는 GPU 메모리가 가용한 GPU를 선정하여 Job에 GPU를 배정한다. Job은 GPU 코어(220)를 활용하여 병렬 연산을 수행한다. 잡 스케줄러(60)는 GPU 메모리(210)가 가용한 상태에서 계속해서 잡 큐에서 얻은 신규 Job을 동일한 GPU(200)에 배정한다. 제2 프로세서 모니터링부(53)는 일정 시간 단위로 계속해서 GPU(200)를 모니터링하고, 잡 그룹핑부(54)은 GPU 메모리(210)에 로드 된 각각의 잡들을 로드된 사이즈 영역 별로 그룹핑 한다.
제2 프로세서 모니터링부(53)가 특정 GPU(200)에 대하여 GPU 메모리(210)의 유휴 공간이 기준치 이하(Full)이지만 코어(220)의 사용률은 기준치 이하인 것을 감지하면, 잡 스케줄러 인터페이스(52)는 잡 그룹핑부(54)에서 관리하는 잡 그룹핑 정보를 기반으로 잡 스케줄러(60)의 잡 큐에서 신규로 실행할 대기 잡(A 잡)을 요청한다.
다음으로, 그룹 잡 실행부(56)는 GPU 메모리(210)를 점유하고 있는 잡 중 순차적으로 한 개를 선정(B 잡)하여 상기 잡이 점유하고 있는 GPU 메모리(210)를 메인 메모리(300)로 복사하라고 GPU 버퍼 관리부(55)에 요청하고, 선정된 B 잡의 실행을 정지할 것을 잡 스케줄러(510)에 요청한다.
B 잡의 실행이 정지된 이후에, 그룹 잡 실행부(56)는 A 잡을 실행해 줄 것을 잡 스케줄러 인터페이스(52)에 요청한다. 잡 스케줄러 인터페이스(52)는 A 잡의 실행을 잡 스케줄러(510)에 요청한다. 잡 그룹핑부(54)는 A 잡과 B 잡을 동일한 잡 스위칭 그룹에 포함시킨다. 상기 잡 스위칭 그룹 내의 잡들은 동일한 규모의 GPU 메모리를 사용하는 잡들이다. 하지만 이 잡들은 GPU 메모리의 사이즈 관계상 동시에 실행될 수는 없고, 그룹 잡 실행부(56)의 제어에 따라 순차적으로 실행될 것이다.
이하, 본 발명의 또 다른 실시예에 따른 잡 스케줄링 방법을 도 6을 참조하여 설명한다. 본 실시예에 따른 잡 스케줄링 방법은 제1 타입 프로세서 및 제2 타입 프로세서를 구비한 컴퓨팅 장치에 의하여 수행될 수 있다. 다만, 본 실시예에 따른 잡 스케줄링 방법이 가상화된 환경에서 수행되는 경우, 본 실시예에 따른 방법을 구성하는 각각의 동작 중 적어도 일부가 서로 다른 물리적 컴퓨팅 장치에서 실행될 수도 있을 것이다.
단계 S100에서, 제2 타입 프로세서의 코어 사용률이 측정된다. 측정 된 코어 사용률이 기준치에 미달하지 않는 경우라면 기존의 방식으로 잡 스케줄링이 수행 될 것이다(S103).
측정 된 코어 사용률이 기준치에 미달하는 경우라면, 상기 제2 타입 프로세서를 점유하고 있는 잡의 제2 타입 프로세서의 코어를 이용한 연산량이 많지 않다는 것을 의미한다. 따라서, 단계 S104에서, 제1 타입 프로세서가 제2 타입 프로세서에 잡 중지 명령을 송신한다. 제2 타입 프로세서의 메모리에 로드 된 잡이 하나인 경우 그 잡이 중지 대상 잡이 될 것이며, 제2 타입 프로세서의 메모리에 로드 된 잡이 복수인 경우 소정의 기준에 의하여 선정된 하나의 잡이 중지 대상 잡이 될 것이다.
제2 타입 프로세서의 메모리에 로드 된 잡이 복수인 경우, 상기 복수의 잡들 중에서 잡 중지 명령에 의하여 제2 타입 프로세서에서의 실행이 중지된 이력이 있는 잡이 하나도 없는 경우에는, 각각의 잡의 제2 타입 프로세서의 메모리 사이즈, 각각의 잡의 제2 타입 프로세서 코어 사용률 및 각각의 잡에 부여된 우선 순위 중 적어도 하나를 기준으로 하는 상기 소정의 기준에 의하여 하나의 중지 대상 잡이 선정된다. 반대로, 상기 복수의 잡들 중에서 잡 중지 명령에 의하여 제2 타입 프로세서에서의 실행이 중지된 이력이 있는 잡이 있는 경우에는, 상기 실행이 중지된 이력이 있는 잡 중 하나가 중지 대상 잡으로 선정된다.
이하, 제2 타입 프로세서에서 실행이 중지되는 잡을 '프로세서 스위칭 대상 잡'으로 지칭한다.
몇몇 실시예에서, 상기 프로세서 스위칭 대상 잡은, 소정의 기준에 따라 하나가 아니라 복수개로 결정될 수도 있다. 예를 들어, 상기 코어 사용률이 기준치에 많이 미달할수록 제2 타입 프로세서의 메모리의 전체 용량 대비 더 많은 비율에 해당하는 잡이 교체될 수 있을 것이다. 예를 들어, 코어 사용률의 기준치가 50%인데 측정된 코어 사용률이 10%인 경우, 제2 타입 프로세서의 메모리 전체 용량의 40%가 교체 대상으로 잡힐 수 있다. 제2 타입 프로세서의 메모리 전체 용량이 10기가 바이트라면, 4기가 바이트에 해당하는 잡이 교체되어야 하는데, 4기가 바이트의 용량을 가지는 잡이 존재하지 않고 더 작은 용량을 가지는 잡들만 존재한다면, 더 작업 용량을 가지는 잡들을 복수개 프로세서 스위칭 대상 잡으로 지정하게 될 것이다.
단계 S106에서, 상기 프로세서 스위칭 대상 잡(제1 잡)이 제2 타입 프로세서의 메모리에 점유 중이던 데이터가 메인 메모리로 복사된다. 이는, 상기 프로세서 스위칭 대상 잡의 작업 결과를 백업해 두기 위함이다.
다음으로, 단계 S108에서, 제1 잡 대신 제2 타입 프로세서에서 수행될 잡이 선정되고, 선정된 잡(제2 잡)의 데이터가 제2 타입 프로세서의 메모리로 복사된다. 제2 타입 프로세서에서 수행될 잡을 적절하게 선정하는 것이 본 발명의 목적을 달성하기 위하여 상당히 중요하다. 상기 선정된 잡은 상기 제1 잡 보다 상기 제2 타입 프로세서의 코어를 더 많이 사용하는 것이어야 할 것이다. 이와 관련하여 다양한 실시예들을 도 9a 및 도 9b를 참조하여 후술한다.
다음으로, 단계 S110에서, 제1 타입 프로세서가 제2 타입 프로세서에 제2 잡의 실행 지시를 송신하면, 제2 타입 프로세서가 제2 잡을 실행하게 된다.
본 실시예를 효과적인 측면에서 해석하면 다음과 같다. 제2 타입 프로세서의 메모리에 로딩 된 모든 잡들의 사이즈를 합산하면 거의 제2 타입 프로세서의 메모리 용량에 비슷해진다면, 사실상 상기 제2 타입 프로세서의 메모리는 가득 찬 상태가 된다. 따라서, 제2 타입 프로세서의 메모리에 추가의 잡을 로드 할 수는 없을 것이다. 이러한 점으로 인하여, 기존에는 상기 제2 타입 프로세서의 메모리가 실질적으로 가득 찬 상태였다면 상기 제2 타입 프로세서의 코어 사용률이 낮은 경우에도 어떠한 조치를 취하는 것이 곤란하였고, 제2 타입 프로세서에 로드 된 잡이 스스로 종료될 때까지 기다려서 종료 된 잡이 비운 공간에 신규의 잡이 제2 타입 프로세서에서 실행됨으로써 GPU 코어의 사용률을 높이게 되기를 바라는 수밖에 없었다.
반면에, 본 실시예에서는 제2 타입 프로세서의 메모리가 실질적으로 가득 찬 상태여서 제2 타입 프로세서의 메모리에는 더 이상의 잡이 로드 될 수 없는 상황에서도, 상대적으로 가격이 저렴한 메인 메모리를 제2 타입 프로세서의 메모리의 버퍼처럼 활용함으로써 제2 타입 프로세서의 메모리의 용량을 초과하는 사이즈의 잡들이 동시에 실행되는 것이 가능해지고, 이로 인해 상대적으로 값 비싼 제2 타입 프로세서를 효율적으로 이용할 수 있게 된다. 이 과정에서 제2 타입 프로세서의 메모리에서 메인 메모리로 이동하는 잡은 제1 타입 프로세서에서 실행되다가 다시 제2 타입 프로세서 연산을 요할 때 다시 제2 타입 프로세서 메모리로 로드 될 수 있다. 이 점에 대하여는 추후 도 10을 참조하여 자세히 설명하기로 한다.
이하, 도 6을 참조하여 설명한 실시예의 일부 변형 실시예에 대하여 도 7을 참조하여 설명한다. 도 7에 도시된 순서도는, 코어 사용률이 기준치에 미달하여 추가의 잡을 제2 타입 프로세서에서 실행시키기 위한 동작을 수행하는 것은, 제2 타입 프로세서의 메모리에 로드 된 잡이 안정화 된 상태인 경우에 한하여 수행되는 점이 도 6의 순서도 대비 추가된 것이다. 이하 자세히 설명한다.
단계 S98에서 제2 타입 프로세서의 메모리에 로드 된 잡이 안정화 상태인지 확인한다. 이 때, 제2 타입 프로세서의 메모리에 로드 된 모든 잡이 안정화 상태인 경우에 한하여 단계 S99에서 안정화 상태가 맞는 것으로 보고, 제2 타입 프로세서의 코어 사용률을 측정하는 단계(S100)로 넘어갈 수도 있고, 제2 타입 프로세서의 메모리에 로드 된 하나 이상의 잡이 안정화 상태이면 단계 S99에서 안정화 상태가 맞는 것으로 보고, 제2 타입 프로세서의 코어 사용률을 측정하는 단계(S100)로 넘어갈 수도 있다. 제2 타입 프로세서의 메모리에 로드 된 잡이 안정화 상태가 아닌 것으로 판단된 경우에는 기존 방식으로 잡 스케줄링이 수행된다(S103).
도 7의 안정화 상태 판정 관련 실시예는 GPU와 같이 제2 타입 프로세서가 멀티 쓰레딩 연산의 처리에 특화된 것인 경우에 효과적이다. 멀티 쓰레딩 연산과 일반 연산을 포함하는 잡의 경우, 잡의 실행이 시작되고 로직의 초기 부분이 지나면 주기적으로 멀티 쓰레딩 연산과 일반 연산이 반복되는 경우가 많기 때문이다. 이는, 멀티 쓰레딩 연산과 일반 연산을 포함하는 잡에는 루프(loop) 연산이 포함될 수 밖에 없는 점을 감안하면 쉽게 그 이유가 이해될 수 있을 것이다. 따라서, 제2 타입 프로세서에서 안정화 상태에 이르기 전의 잡을 섣불리 제1 타입 프로세서로 옮기는 것보다는, 안정화 상태에 있어서 주기적으로 멀티 쓰레딩 연산과 일반 연산이 반복되는 잡을 제1 타입 프로세서로 옮기는 것이 제2 타입 프로세서를 효율적으로 사용하는데 보다 도움이 될 것이다.
어떠한 잡의 상기 제1 타입 프로세서의 사용 시간과 상기 제2 타입 프로세서의 사용 시간 사이의 비율이 일정 값에서 기준 오차를 벗어나지 않는 상태라면 상기 잡은 안정화 상태에 있는 것으로 판단할 수 있을 것이다.
이하, 도 6을 참조하여 설명한 실시예의 일부 변형 실시예에 대하여 도 8을 참조하여 설명한다. 도 6에서는 제2 타입 프로세서의 코어 사용률이 기준치에 못 미치는 것 만을 조건으로 하여, 단계 S104, S106, S108, S110이 수행되었다. 즉, 도 6을 참조하여 설명한 실시예에서는, 제2 타입 프로세서의 메모리가 FULL 상태인지 여부와 무관하게 제2 타입 프로세서의 코어 사용률이 기준치에 못 미치면, 제2 타입 프로세서의 메모리에 로드 된 잡에 대한 교체를 수행하는 것으로 이해할 수 있을 것이다. 반면에, 도 8을 참조하여 설명할 실시예에서는, 제2 타입 프로세서의 메모리 유휴 공간이 기준치에 못미치고(즉, 메모리 FULL 상태), 동시에 제2 타입 프로세서의 코어 사용률이 기준치에 못 미치는 경우에 한하여, 단계 S104, S106, S108, S110이 수행된다.
도 8에 도시된 실시예에 따르면, 단계 S102에서 제2 타입 프로세서의 코어 사용률이 기준치에 못 미치는 것으로 판단되는 경우는, 제2 타입 프로세서의 메모리의 유휴 공간(즉, 이미 특정 잡이 load 되어 점유하고 있는 공간을 제외한 공간)의 측정(S102a) 결과, 유휴 공간이 기준치에 미달하고(S102b), 동시에 제2 타입 프로세서의 코어 사용률이 기준치에 미달하는 경우(S102c)로 한정된다. 이 때, 유휴 공간이 기준치에 미달(S102b)한다는 것은, 유효 공간의 데이터 사이즈가 기준치에 미달하거나, 제2 타입 프로세서의 메모리 전체 용량 대비 유효 공간의 데이터 사이즈 비율이 기준치에 미달하는 것을 가리킬 수 있다.
도 6 내지 도 8을 참조하여 설명한 실시예들에서, 제2 프로세서의 메모리에서 어떤 잡을 제1 프로세서의 메모리로 옮길 것이고, 그 대신 어떤 잡을 제2 프로세서에서 실행시킬 것인지가 상당히 중요한 요소이다. 이미 설명한 바와 같이, 상기 제2 프로세서에서 새롭게 실행 된 잡이 기존의 잡보다 제2 프로세서의 코어를 더 많이 사용해야 제2 프로세서 코어 사용률이 개선될 것이기 때문이다. 이하, 도 9a 내지 도 9b를 참조하여, 가상의 예시를 들어 제2 프로세서에서 제1 프로세서로 옮길 잡의 선정 방법 및 제2 프로세서에서 실행시켜줄 잡의 선정 방법을 설명한다.
도 9a는 잡 큐(job queue)(3)를 도시한다. 잡 스케줄러는 잡 큐(3)를 이용하여 여러 종류의 어플리케이션 또는 서비스에서 요청된 잡들의 실행을 관리한다. 요청된 잡들은 잡 큐(3)에 enqueue되고, 잡 스케줄러는 잡 큐(3)에서 하나 이상의 잡을 dequeue하여 실행해 준다. 큐(queue)는 선착순(FIFO; First-In-First-Out)에 의하여 동작하는 데이터 구조인 바, 각각의 잡들은 기본적으로 요청된 순서대로 실행될 것이다.
도 9b는 각각의 잡들에 대한 정보 테이블의 일례이다. 상기 정보 테이블은, 예를 들어 도 4를 참조하여 설명한 잡 스케줄러 인터페이스에 의하여 관리될 수 있을 것이다. 이해를 돕기 위해, 도 9b에서는 제1 타입 프로세서가 CPU이고, 제2 타입 프로세서가 GPU인 것으로 가정하여 설명한다. 도 9b의 정보 테이블은 도 5를 참조하여 설명한 바와 같이 GPU의 가상화 환경에서 개선된 잡 스케줄러가 구동되는 상황을 가정한 것이다. 이에 따라, 가상화 되어 각각의 잡에 제공된 2개의 물리 GPU가 표시 되어 있다(GPU ID로서, G#41, G#42). 아래에서는, G#41에 대하여 처리하는 예시를 설명하기로 한다.
도 9b에서, GPU G#41에서 실행 중인(즉, GPU 메모리에 로드되어 있는) 잡은 총 2개로 J#8, J#9이다. GPU 메모리 사이즈는 12기가 바이트이고, 유휴 GPU 메모리 사이즈가 15% 미만이고, GPU 코어 사용률이 50% 미만인 경우 GPU 메모리에 로드 된 잡을 정리하는 스케줄링을 수행하는 설정이 세팅되어 있다고 가정하자. 도 9b에 도시된 상황에서 GPU 메모리의 유휴 사이즈는 1.2 기가 바이트로 GPU 메모리의 10%이며, GPU 코어 사용률은 21%에 불과하므로, GPU 메모리에 로드 된 잡을 정리하는 스케줄링이 되어야 하는 상황이다. 한편, J#10, J#11, J#12는 CPU 실행 중이며, 아직 한번도 GPU 연산을 진행한 적 없는 잡이어서, GPU 메모리 요구량 및 잡 스위칭 그룹에 대한 정보가 비어 있다.
먼저, J#8, J#9 중 하나 이상의 잡을 프로세서 스위칭 대상 잡으로 선정해야 한다.
안정화 여부를 고려하지 않는 실시예에서는, J#8 및 J#9 모두가 프로세서 스위칭 대상 잡으로 선정될 수 있을 것이다. 안정화 상태의 잡 만으로 프로세서 스위칭 대상 잡으로 선정하는 실시예에서는, 안정화 상태에 있는 J#9가 프로세서 스위칭 대상 잡으로 선정될 것이다. 이하, 이해의 편의를 위해 J#9가 프로세서 스위칭 대상 잡으로 선정되는 경우, J#9 대신 GPU에서 실행 될 잡은 어떤 것이 될지 각각의 실시예 별로 설명한다. 이하, J#9 대신 GPU에서 실행 될 잡으로서 선정되는 잡을 'J#9 스위칭 잡'으로 지칭하기로 한다.
CPU의 연산이 이뤄지고 있는 잡에 대하여 굳이 CPU의 연산을 홀딩(holding) 시키고 GPU 연산을 시작하는 것은 무의미 하므로, 일 실시예에서 CPU에서 실행되다가 GPU 연산이 필요하여 GPU 사용을 대기하고 있는 잡들 중에서 J#9 스위칭 잡이 선정될 수 있다. 본 실시예에 따르면, J#9 스위칭 잡은 J#3,J#4, J#5, J#6, J#7 중에서 선정된다.
한편, J#9의 GPU 메모리 용량만큼이 비워지는 것이므로, J#9 스위칭 잡의 GPU 용량은 J#9과 동일하거나 더 작아야 할 것이다. 이와 관련하여, 잡 스위칭 그룹이 구성되는 점을 설명한 바 있다. J#9 잡의 GPU 메모리 요구량은 5.2 기가 바이트로, Under 6G 그룹이 할당 되어 있으므로, J#9 스위칭 잡은 Under 6G 또는 Under 2G에 속하는 것으로 한정되어야 한다. 결론적으로, J#9 스위칭 잡은 J#4, J#5, J#6, J#7 중에서 선정되어야 한다.
다만, 효율성 측면에서, J#9 스위칭 잡의 GPU 용량은 J#9과 동일한 것이 바람직하다. 이러한 실시예에 따르면, J#9 스위칭 잡은 Under 6G에 속하는 것으로 한정되어야 한다. 그 결과, J#9 스위칭 잡은 J#5, J#6, J#7 중에서 선정될 수 있다. 한편, 일 실시예에서, 안정화 상태에 있는 잡이 GPU에서 수행될 잡의 선정에 있어서 우선시 될 수도 있다. 안정화 상태에 있는 잡은 주기적으로 GPU 연산 및 CPU 연산을 반복하기 때문에, 이러한 주기를 잘 맞춰 주면 GPU 활용의 효율성을 극대화 할 수 있을 것이다. 이러한 실시예에 따르면, J#9 스위칭 잡은 J#4, J#6, J#7 중에서 선정될 수 있다.
일 실시예에서, J#9 스위칭 잡은 J#9와 같은 가상 머신(VM)에 의하여 생성된 것으로 선정될 수도 있다. 이로써, 잡 스위칭 그룹에 속한 잡들이 모두 동일한 가상 머신에 의하여 생성된 것으로 구성될 수 있다. 동일한 가상 머신에 의하여 생성된 것으로 잡 스위칭 그룹을 구성하는 경우, 그 가상 머신의 연산은 안정적으로 신속하게 종료되는 효과를 기대할 수 있을 것이다. J#9는 VM#1에 의하여 생성된 것이므로, 이러한 실시예에 따르면, J#9 스위칭 잡은 J#5, J#6 중에서 선정될 수 있다.
일 실시예에서, J#9 스위칭 잡은 각각의 잡이 가진 우선 순위를 기준으로 선정될 수 있다. 이러한 실시예에 따르면, J#9 스위칭 잡은 J#4, J#5, J#6, J#7 중에서 우선 순위가 가장 높은 J#5, J#6 중에서 선정될 수 있다. 몇몇 실시예에서, 각각의 잡에 부여된 상기 우선순위는, 각각의 잡을 생성한 가상 머신에 부여된 우선순위에 기초하여 결정된 것일 수 있다. 이로써, 높은 우선 순위를 가지는 가상 머신이 생성한 잡은, 다른 잡들 보다 먼저 GPU 연산을 시작할 수 있는 효과를 얻을 수 있다.
일 실시예에서, J#9 스위칭 잡은 J#9이 속한 잡 스위칭 그룹의 잡들을 순차적으로 변경해 가며 선정하는 것일 수도 있다.
이상 설명한 J#9 스위칭 잡 선정 관련 실시예들은, 필요에 따라 조합하여 적용할 수 있음은 물론이다.
이하, 도 10을 참조하여 도 6 내지 도 8을 참조하여 설명한 잡 스케줄링 방법에 따른 후속 동작을 설명한다. 도 6 내지 도 8을 참조하여, 제2 타입 프로세서에서 실행 중이던 제1 잡이 강제로 제1 타입 프로세서로 이동 된 점을 설명하였다. 상기 제1 잡은 메인 메모리에 복사 되고, 이를 이용하여 제1 타입 프로세서에 의한 연산을 수행하게 된다.
단계 S112에서, 상기 제1 잡이 제1 타입 프로세서에 의한 연산을 마무리 하고 제2 타입 프로세서의 연산이 필요한 경우, 제2 타입 프로세서의 연산을 요구하는 것이 감지된다. 상기 감지는 제2 타입 프로세서의 연산을 요청하는 함수를 후킹(hooking) 하는 등의 소프트웨어적 구현에 의하여 수행될 수 있다.
단계 S112에서, 상기 제1 잡이 제2 타입 프로세서 연산을 요구하는 것이 감지된 경우, 상기 제1 잡과 상기 제2 잡 사이에서 프로세서 스위칭이 수행 될 수 있다. 이는, 제2 잡과의 관계에서는, 원래 제2 타입 프로세서에서 수행되고 있던 제1 잡에 제2 타입 프로세서 사용 권한의 우선권을 주는 것으로 이해할 수 있을 것이다. 도 10에는 제1 잡과 상기 제2 잡 사이에서 프로세서 스위칭 과정이 순차적으로 도시되어 있다. 단계 S114에서, 제1 타입 프로세서가 제2 타입 프로세서에 제2 잡의 실행 중지 명령을 송신하고, 단계 S116에서, 제2 타입 프로세서의 메모리에 저장된 제2 잡의 데이터가 메인 메모리에 복수된다. 그리고 단계 S118에서, 제1 잡의 데이터가 메인 메모리에서 제2 타입 프로세서의 메모리로 복사되고, 단계 S120에서, 제1 타입 프로세서가 제2 타입 프로세서에 제1 잡의 실행 지시를 송신함으로써, 제1 잡은 다시 제2 타입 프로세서에서 실행되던 원래 상태로 돌아가고, 제2 잡도 다시 제1 타입 프로세서에서 실행되던 원래 상태로 돌아가게 된다.
다음으로, 도 11을 참조하여, 본 발명의 또 다른 실시예에 따른 잡 스케줄링 방법을 설명한다.
단계 S200에서, GPU 메모리가 가득 찰 때까지 GPU 메모리에 신규의 잡을 배정한다. 이 때, 잡 큐(job queue)로부터 디큐(dequeue)된 잡이 GPU의 메모리에 로드 되는 것이, 더이상의 로드가 불가능할 때까지 반복되는 것을 이해할 수 있을 것이다.
다음으로, GPU 코어 사용률을 모니터링(S202) 하여, 코어 사용률이 기준치에 미달하면(S204), GPU 메모리를 점유하고 있는 잡 중에서 소정의 기준(예를 들어, 도 9b를 참조하여 설명한 기준)에 의하여 선정된 잡을, 상기 선정된 잡의 잡 스위칭 그룹에 속한 잡들 중 순차적으로 선정된 잡과 프로세서 스위칭한다(S206). 단계 S206은, 아래와 같이 상세 동작으로 수행 될 수 있다.
상기 측정된 코어 사용률이 기준치에 미달하는 경우, 상기 제1 타입 프로세서가 상기 제2 타입 프로세서에서 현재 실행 중인 잡들 중 하나의 중지 잡을 선정하고, 선정된 중지 잡을 중지하라는 잡 중지 명령을 상기 제2 타입 프로세서에 송신한다. 다음으로, 상기 잡 중지 인스트럭션의 수신에 응답하여, 상기 선정된 중지 잡이 상기 제2 타입 프로세서의 메모리에 점유하고 있는 영역의 데이터가 메인 메모리에 복사된다. 다음으로, 상기 잡 큐로부터 상기 중지 잡과 잡 스위칭 그룹을 구성하는 것으로 선정된 신규 잡의 데이터가 상기 제2 타입 프로세서의 메모리에 복사된다. 다음으로, 상기 제1 타입 프로세서가 상기 제2 타입 프로세서에 상기 제2 잡의 실행을 지시하는 명령을 송신한다. 다음으로, 상기 제2 타입 프로세서의 코어 사용률을 모니터링하여, 상기 코어 사용률이 기준치에 미달할 때마다 상기 잡 스위칭 그룹에 속한 잡을 순차적으로 변경하여 상기 제2 타입 프로세서에서 실행한다.
도 11을 참조하여 설명한 실시예를, 도 12a 내지 도12d의 예시를 참조하여 보다 상세히 설명한다.
도 12a 내지 도 12d를 설명하기 위하여, 아래의 사항을 전제한다.
전제1: 제1 잡의 메모리(GM1) 내지 제i 잡의 메모리(GMi)의 용량 합계는 제2 타입 프로세서의 메모리(210)의 용량보다 작지만, 제1 잡의 메모리(GM1) 내지 제(i+1) 잡의 메모리(GM(i+1))의 용량 합계는 제2 타입 프로세서의 메모리(210)의 용량보다 크다. 따라서, 제1 잡부터 순차적으로 제2 타입 프로세서의 메모리(210)에 잡을 로드(load) 하게되면, 제i 잡까지만 load 가능하다.
전제2: 제(i-1) 잡의 메모리 크기 = 제i 잡의 메모리 크기 = 제(i+1)잡의 메모리 크기. 따라서, 제(i-1) 잡, 제i 잡 및 제(i+1) 잡은 잡 스위칭 그룹을 구성한다.
도 12a에는 제1 잡의 메모리(GM1) 내지 제i 잡의 메모리(GMi)를 순차적으로 제2 타입 프로세서의 메모리(210)에 로드한 상황이 도시 되어 있다. 이 상황의 제2 타입 프로세서 메모리(210)는 제(i+1) 잡을 더 load 할 여유 공간이 부족한 상황이다. 이 상황에서, 제2 타입 프로세서의 코어 사용률이 기준치에 미달하는 경우, 도 12b에 도시된 바와 같이 [제(i-1) 잡, 제i 잡 및 제(i+1) 잡]의 잡 스위칭 그룹 중, 제i 잡이 메인 메모리(300)로 이동하고, 그 대신 제i+1 잡이 제2 타입 프로세서의 메모리(210)로 로드 되어 제2 타입 프로세서의 연산을 수행할 수 있다.
도 12b에 도시된 상황에서 제i 잡이 제2 타입 프로세서의 연산을 요구하는 경우, 도 12c에 도시된 바와 같이 [제(i-1) 잡, 제i 잡 및 제(i+1) 잡]의 잡 스위칭 그룹 중, 제(i-1) 잡이 메인 메모리(300)로 이동하고, 그 대신 제i 잡이 제2 타입 프로세서의 메모리(210)로 로드되어 제2 타입 프로세서의 연산을 수행할 수 있다.
도 12c에 도시된 상황에서 제(i-1) 잡이 제2 타입 프로세서의 연산을 요구하는 경우, 도 12d에 도시된 바와 같이 [제(i-1) 잡, 제i 잡 및 제(i+1) 잡]의 잡 스위칭 그룹 중, 제(i+1) 잡이 메인 메모리(300)로 이동하고, 그 대신 제(i-1) 잡이 제2 타입 프로세서의 메모리(210)로 로드되어 제2 타입 프로세서의 연산을 수행할 수 있다.
도 12a 내지 도 12d에 도시된 바와 같이, 잡 스위칭 그룹에 속한 각각의 잡들은 순차적으로 변경되어 가면서 제2 타입 프로세서의 메모리(210)로 로드 되어 제2 타입 프로세서의 연산을 수행할 수 있다. 또한, 이는 반대로 잡 스위칭 그룹에 속한 각각의 잡들은 순차적으로 변경되어 가면서 제2 타입 프로세서의 메모리(210)에서 메인 메모리(300)로 이동하는 것을 의미하기도 한다.
본 실시예에서, 프로세서 스위칭은 메인 메모리의 잡이 제2 타입 프로세서의 연산을 요구하는 경우 수행된다. 따라서, 메인 메모리에서 제2 프로세서의 메모리로 이동한 잡은 제2 프로세서에서 곧바로 제2 프로세서의 코어를 사용한다. 따라서, 제2 프로세서의 코어 사용률이 높아진다.
또한, 기존에는 i개의 잡만이 제2 타입 프로세서에서 동시 실행 가능했으나, 본 실시예에서는 (i+1)개의 잡을 동시 실행하는 효과를 얻을 수 있다. 즉, 본 실시예에 따르면 자원의 증설 없이 동시에 실행 될 수 있는 잡의 개수를 늘릴 수 있는 효과를 얻을 수 있다.
지금까지 설명된 본 발명의 실시예에 따른 방법들은 컴퓨터가 읽을 수 있는 코드로 구현된 컴퓨터프로그램의 실행에 의하여 수행될 수 있다. 상기 컴퓨터프로그램은 인터넷 등의 네트워크를 통하여 제1 전자 장치로부터 제2 전자 장치에 전송되어 상기 제2 전자 장치에 설치될 수 있고, 이로써 상기 제2 전자 장치에서 사용될 수 있다. 상기 제1 전자 장치 및 상기 제2 전자 장치는, 서버 장치, 클라우드 서비스를 위한 서버 풀에 속한 물리 서버, 데스크탑 피씨와 같은 고정식 전자 장치를 모두 포함한다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다.

Claims (19)

  1. 제1 타입 프로세서와 제2 타입 프로세서를 구비한 컴퓨팅 시스템에서 수행 되는 방법에 있어서,
    상기 제2 타입 프로세서의 메모리에 로드되는 잡이 더 이상의 로드가 불가능할 때까지 상기 제2 타입 프로세서의 메모리에 잡을 배정하는 단계;
    상기 제2 타입 프로세서의 코어 사용률이 측정되는 단계;
    상기 측정된 코어 사용률이 기준치에 미달하는 경우, 상기 제1 타입 프로세서가 상기 제2 타입 프로세서에 현재 실행 중인 제1 잡(job)을 중지하라는 잡 중지 명령을 송신하는 단계;
    상기 잡 중지 명령의 수신에 응답하여, 상기 제1 잡이 상기 제2 타입 프로세서의 메모리에 점유하고 있는 영역의 데이터가 메인 메모리에 복사되는 단계;
    상기 메인 메모리에 저장된 제2 잡(job)의 데이터가 상기 제2 타입 프로세서의 메모리에 복사되는 단계;
    상기 제1 타입 프로세서가 상기 제2 타입 프로세서에 상기 제2 잡의 실행을 지시하는 명령을 송신하는 단계; 및
    상기 제2 잡은 상기 제1 잡과 동일한 잡 스위칭 그룹에 속한 것이고,
    상기 잡 스위칭 그룹은, 제2 타입 프로세서 메모리의 요구 사이즈가 상기 잡 스위칭 그룹에 할당된 소정 범위 이내인 복수의 잡들로 구성되고,
    상기 복수의 잡들이 순차적으로 변경되어 가며 선정되는 단계를 포함하는,
    잡 스케줄링(job scheduling) 방법.
  2. 제1 항에 있어서,
    상기 제2 타입 프로세서의 메모리의 유휴 공간이 측정 되는 단계를 더 포함하고,
    상기 잡 중지 명령을 송신하는 단계는,
    상기 메모리의 유휴 공간이 기준치에 미달하고 동시에 상기 측정된 코어 사용률이 기준치에 미달하는 경우, 상기 제1 타입 프로세서가 상기 제2 타입 프로세서에 현재 실행 중인 제1 잡(job)을 중지하라는 잡 중지 명령을 송신하는 단계를 포함하는,
    잡 스케줄링 방법.
  3. 제1 항에 있어서,
    상기 잡 중지 명령을 송신하는 단계는,
    상기 측정된 코어 사용률이 기준치에 미달하고 동시에 상기 제2 타입 프로세서의 메모리에 로드 된 하나 이상의 잡이 안정화 상태인 경우, 상기 제1 타입 프로세서가 상기 제2 타입 프로세서에 현재 실행 중인 상기 제1 잡(job)을 중지하라는 잡 중지 명령을 송신하는 단계 - 상기 하나 이상의 잡은 상기 제1 잡을 포함함 - 를 포함하는,
    잡 스케줄링 방법.
  4. 제3 항에 있어서,
    상기 안정화 상태는,
    상기 제1 타입 프로세서의 사용 시간과 상기 제2 타입 프로세서의 사용 시간 사이의 비율이 일정 값에서 기준 오차를 벗어나지 않는 상태를 가리키는,
    잡 스케줄링 방법.
  5. 제1 항에 있어서,
    상기 제2 타입 프로세서는 GPU(Graphic Processing Unit)인,
    잡 스케줄링 방법.
  6. 제5 항에 있어서,
    상기 GPU의 메모리와 상기 메인 메모리는 직접 메모리 억세스(Direct Memory Access; DMA) 방식으로 서로 데이터를 송수신 할 수 있는 것이고,
    상기 제1 잡이 상기 제2 타입 프로세서의 메모리에 점유하고 있는 영역의 데이터가 메인 메모리에 복사되는 단계는,
    상기 제1 잡이 상기 제2 타입 프로세서의 메모리에 점유하고 있는 영역의 데이터가 상기 메인 메모리에 메모리 억세스 방식을 통해 직접 복사되는 단계를 포함하고,
    상기 메인 메모리에 저장된 제2 잡(job)의 데이터가 상기 제2 타입 프로세서의 메모리에 복사되는 단계는,
    상기 메인 메모리에 저장된 제2 잡(job)의 데이터가 상기 제2 타입 프로세서의 메모리에 메모리 억세스 방식을 통해 직접 복사되는 단계를 포함하는,
    잡 스케줄링 방법.
  7. 삭제
  8. 제1 항에 있어서,
    상기 제2 잡은,
    상기 제1 타입 프로세서를 통해 수행되던 도중 상기 제2 타입 프로세서의 사용을 기다리는 잡들 중에서 선정된 것인,
    잡 스케줄링 방법.
  9. 삭제
  10. 제1 항에 있어서,
    상기 제2 잡은,
    상기 제1 잡이 상기 제2 타입 프로세서의 메모리에 점유하고 있는 영역 사이즈의 이하만큼 상기 제2 타입 프로세서의 메모리를 요구하는 잡이고, 상기 제1 타입 프로세서를 통해 수행되던 도중 상기 제2 타입 프로세서의 사용을 기다리는 잡인,
    잡 스케줄링 방법.
  11. 제1 항에 있어서,
    상기 제2 타입 프로세서는 두 개 이상의 잡의 합산 메모리 요구량이 상기 제2 타입 프로세서의 메모리 용량을 초과하지 않는 경우, 상기 두 개 이상의 잡이 동시에 상기 제2 타입 프로세서를 활용할 수 있도록 지원하는 것이고,
    상기 잡 중지 명령을 송신하는 단계는,
    상기 제1 타입 프로세서가 상기 제2 타입 프로세서에 현재 실행 중인 제1 잡 및 제3 잡 중 상기 제1 잡을 중지하라는 잡 중지 명령을 송신하는 단계를 포함하는,
    잡 스케줄링 방법.
  12. 제11 항에 있어서,
    상기 제2 타입 프로세서는 GPU이고,
    상기 두 개 이상의 잡의 일부는 상기 GPU를 잡 스케줄러를 통해 프로비저닝(provisioning) 받은 제1 컴퓨팅 환경에서 실행되는 것이고, 상기 두 개 이상의 잡의 나머지 잡들 중 적어도 일부는, 상기 GPU를 잡 스케줄러를 통해 프로비저닝 받은 제2 컴퓨팅 환경에서 실행되는 것인,
    잡 스케줄링 방법.
  13. 제12 항에 있어서,
    상기 제2 잡은 상기 제1 잡과 동일한 잡 스위칭 그룹에 속한 것이고, 상기 잡 스케줄러를 통해 상기 제1 잡을 생성한 컴퓨팅 환경에 프로비저닝 된 상기 제1 타입 프로세서를 통해 수행되던 도중 상기 제2 타입 프로세서의 사용을 기다리는 잡들 중에서 순차적으로 변경되어 가며 선정되는 것인,
    잡 스케줄링 방법.
  14. 제12 항에 있어서,
    상기 제2 잡은,
    상기 제1 잡과 동일한 잡 스위칭 그룹에 속한 것으로서, 상기 잡 스케줄러를 통해 상기 제1 잡을 생성한 컴퓨팅 환경에 프로비저닝 된 상기 제1 타입 프로세서를 통해 수행되던 도중 상기 제2 타입 프로세서의 사용을 기다리는 잡들 중에서, 각각의 잡에 부여된 우선순위를 기준으로 선정되는 것이되,
    상기 각각의 잡에 부여된 우선순위는, 각각의 잡을 생성한 컴퓨팅 환경에 부여된 우선순위에 기초하여 결정된 것인,
    잡 스케줄링 방법.
  15. 제1 항에 있어서,
    상기 제1 잡이 상기 제2 타입 프로세서의 메모리에 점유하고 있는 영역의 데이터가 메인 메모리에 복사되는 단계는, 상기 제1 잡의 연산이 상기 제1 타입 프로세서에서 수행되는 단계를 포함하고,
    상기 제2 잡의 실행을 지시하는 명령을 송신하는 단계 이후에, 상기 제1 타입 프로세서에서 수행되는 제1 잡이 상기 제2 타입 프로세서의 연산을 요하는 경우, 상기 제1 잡과 상기 제2 잡의 프로세서 스위칭을 수행하는 단계를 더 포함하는,
    잡 스케줄링 방법.
  16. 제15 항에 있어서,
    상기 제1 잡과 상기 제2 잡의 프로세서 스위칭을 수행하는 단계는,
    상기 제1 타입 프로세서에서 수행되는 제1 잡이 상기 제2 타입 프로세서의 연산을 요하는 경우, 상기 제2 잡이 상기 제2 타입 프로세서를 활용 중인 경우에도 상기 제1 잡과 상기 제2 잡의 프로세서 스위칭을 수행하는 단계를 포함하는,
    잡 스케줄링 방법.
  17. 제15 항에 있어서,
    상기 제1 잡과 상기 제2 잡의 프로세서 스위칭을 수행하는 단계는,
    상기 제1 타입 프로세서가 상기 제2 타입 프로세서에 현재 실행 중인 제2 잡을 중지하라는 잡 중지 명령을 송신하는 단계;
    상기 잡 중지 명령의 수신에 응답하여, 상기 제2 잡이 상기 제2 타입 프로세서의 메모리에 점유하고 있는 영역의 데이터가 메인 메모리에 복사되는 단계;
    상기 메인 메모리에 저장된 제1 잡의 데이터가 상기 제2 타입 프로세서의 메모리에 복사되는 단계; 및
    상기 제1 타입 프로세서가 상기 제2 타입 프로세서에 상기 제1 잡의 실행을 지시하는 명령을 송신하는 단계를 포함하는,
    잡 스케줄링 방법.
  18. 제1 타입 프로세서와 제2 타입 프로세서를 구비한 컴퓨팅 시스템에서 수행 되는 방법에 있어서,
    잡 큐(job queue)로부터 디큐(dequeue)된 잡이 GPU의 메모리에 로드 되는 것이, 더이상의 로드가 불가능할 때까지 반복되는 단계;
    상기 제2 타입 프로세서의 코어 사용률이 측정되는 단계;
    상기 측정된 코어 사용률이 기준치에 미달하는 경우, 상기 제1 타입 프로세서가 상기 제2 타입 프로세서에서 현재 실행 중인 잡들 중 하나의 중지 잡을 선정하고, 선정된 중지 잡을 중지하라는 잡 중지 명령을 상기 제2 타입 프로세서에 송신하는 단계;
    상기 잡 중지 명령의 수신에 응답하여, 상기 선정된 중지 잡이 상기 제2 타입 프로세서의 메모리에 점유하고 있는 영역의 데이터가 메인 메모리에 복사되는 단계;
    상기 잡 큐로부터 상기 중지 잡과 잡 스위칭 그룹을 구성하는 것으로 선정된 신규 잡의 데이터가 상기 제2 타입 프로세서의 메모리에 복사되는 단계;
    상기 제1 타입 프로세서가 상기 제2 타입 프로세서에 상기 신규 잡의 실행을 지시하는 명령을 송신하는 단계; 및
    상기 제2 타입 프로세서의 코어 사용률을 모니터링하여, 상기 코어 사용률이 기준치에 미달할 때마다 상기 잡 스위칭 그룹에 속한 잡을 순차적으로 변경하여 상기 제2 타입 프로세서에서 실행하는 단계를 포함하는,
    잡 스케줄링(job scheduling) 방법.
  19. 복수의 인스트럭션(instruction)을 로드하는 메인 메모리;
    상기 메모리에 로드된 복수의 인스트럭션을 실행하는 제1 타입 프로세서; 및
    전용 메모리를 포함하는 제2 타입 프로세서를 포함하되,
    상기 제2 타입 프로세서의 메모리에 로드되는 잡이 더 이상의 로드가 불가능할 때까지 상기 제2 타입 프로세서의 메모리에 잡을 배정하는 인스트럭션;
    상기 복수의 인스트럭션은,
    상기 제2 타입 프로세서의 코어 사용률을 측정하는 인스트럭션;
    상기 측정된 코어 사용률이 기준치에 미달하는 경우, 상기 제2 타입 프로세서에 현재 실행 중인 제1 잡(job)을 중지하라는 잡 중지 명령을 송신하는 인스트럭션;
    상기 잡 중지 명령의 수신에 응답하여 상기 제1 잡이 상기 제2 타입 프로세서의 메모리에 점유하고 있는 영역의 데이터가 상기 메인 메모리에 복사되면, 상기 메인 메모리에 저장된 제2 잡(job)의 데이터를 상기 제2 타입 프로세서의 메모리에 복사하는 인스트럭션;
    상기 제2 타입 프로세서에 상기 제2 잡의 실행을 지시하는 명령을 송신하는 인스트럭션; 및
    상기 제2 잡은 상기 제1 잡과 동일한 잡 스위칭 그룹에 속한 것이고,
    상기 잡 스위칭 그룹은, 제2 타입 프로세서 메모리의 요구 사이즈가 상기 잡 스위칭 그룹에 할당된 소정 범위 이내인 복수의 잡들로 구성되고,
    상기 복수의 잡들이 순차적으로 변경되어 가며 선정하는 인스트럭션을 포함하는,
    연산 장치.
KR1020180128665A 2018-10-26 2018-10-26 연산 장치 및 그 잡 스케줄링 방법 KR102576443B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020180128665A KR102576443B1 (ko) 2018-10-26 2018-10-26 연산 장치 및 그 잡 스케줄링 방법
US16/664,369 US11494228B2 (en) 2018-10-26 2019-10-25 Calculator and job scheduling between jobs within a job switching group

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180128665A KR102576443B1 (ko) 2018-10-26 2018-10-26 연산 장치 및 그 잡 스케줄링 방법

Publications (2)

Publication Number Publication Date
KR20200046886A KR20200046886A (ko) 2020-05-07
KR102576443B1 true KR102576443B1 (ko) 2023-09-07

Family

ID=70326727

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180128665A KR102576443B1 (ko) 2018-10-26 2018-10-26 연산 장치 및 그 잡 스케줄링 방법

Country Status (2)

Country Link
US (1) US11494228B2 (ko)
KR (1) KR102576443B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102491987B1 (ko) * 2020-12-04 2023-01-26 (주)글루버 가상화 서버, 이의 동작 방법, 및 프로그램

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140298060A1 (en) * 2013-03-26 2014-10-02 Via Technologies, Inc. Asymmetric multi-core processor with native switching mechanism
US20150019737A1 (en) * 2013-07-09 2015-01-15 Korea Institute Of Science & Technology Information (Kisti) Method and apparatus for allocating resource reflecting adaptive evaluation in cloud computing for high-throughput computing
US20150113542A1 (en) * 2013-10-17 2015-04-23 Nec Laboratories America, Inc. Knapsack-based sharing-aware scheduler for coprocessor-based compute clusters
US20150178879A1 (en) * 2013-12-20 2015-06-25 Nvidia Corporation System, method, and computer program product for simultaneous execution of compute and graphics workloads
US20160246647A1 (en) * 2015-02-19 2016-08-25 Oracle International Corporation Adaptive Contention-Aware Thread Placement for Parallel Runtime Systems
US20170031829A1 (en) * 2015-07-28 2017-02-02 Futurewei Technologies, Inc. Advance Cache Allocator
US20170185448A1 (en) * 2015-12-29 2017-06-29 Capital One Services, Llc Systems and Methods for Caching Task Execution

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6246396B1 (en) * 1997-04-30 2001-06-12 Canon Kabushiki Kaisha Cached color conversion method and apparatus
US10318348B2 (en) 2016-09-23 2019-06-11 Imagination Technologies Limited Task scheduling in a GPU
KR20180088989A (ko) 2017-01-31 2018-08-08 이채현 선반 위 고정계
US11119788B2 (en) * 2018-09-04 2021-09-14 Apple Inc. Serialization floors and deadline driven control for performance optimization of asymmetric multiprocessor systems

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140298060A1 (en) * 2013-03-26 2014-10-02 Via Technologies, Inc. Asymmetric multi-core processor with native switching mechanism
US20150019737A1 (en) * 2013-07-09 2015-01-15 Korea Institute Of Science & Technology Information (Kisti) Method and apparatus for allocating resource reflecting adaptive evaluation in cloud computing for high-throughput computing
US20150113542A1 (en) * 2013-10-17 2015-04-23 Nec Laboratories America, Inc. Knapsack-based sharing-aware scheduler for coprocessor-based compute clusters
US20150178879A1 (en) * 2013-12-20 2015-06-25 Nvidia Corporation System, method, and computer program product for simultaneous execution of compute and graphics workloads
US20160246647A1 (en) * 2015-02-19 2016-08-25 Oracle International Corporation Adaptive Contention-Aware Thread Placement for Parallel Runtime Systems
US20170031829A1 (en) * 2015-07-28 2017-02-02 Futurewei Technologies, Inc. Advance Cache Allocator
US20170185448A1 (en) * 2015-12-29 2017-06-29 Capital One Services, Llc Systems and Methods for Caching Task Execution

Also Published As

Publication number Publication date
KR20200046886A (ko) 2020-05-07
US20200133722A1 (en) 2020-04-30
US11494228B2 (en) 2022-11-08

Similar Documents

Publication Publication Date Title
US11797327B2 (en) Dynamic virtual machine sizing
US10073711B2 (en) Virtual machine monitor configured to support latency sensitive virtual machines
US10452572B2 (en) Automatic system service resource management for virtualizing low-latency workloads that are input/output intensive
WO2017070900A1 (zh) 多核数字信号处理系统中处理任务的方法和装置
US9411636B1 (en) Multi-tasking real-time kernel threads used in multi-threaded network processing
US20150242254A1 (en) Method and apparatus for processing message between processors
WO2005046304A2 (en) Method and system for allocation of special purpose computing resources in a multiprocessor system
US20120284720A1 (en) Hardware assisted scheduling in computer system
JP2007148746A (ja) ヘテロマルチプロセッサシステムおよびそのos構成方法
US10409640B1 (en) Methods and apparatus for data request scheduling in performing parallel IO operations
US9122522B2 (en) Software mechanisms for managing task scheduling on an accelerated processing device (APD)
KR102576443B1 (ko) 연산 장치 및 그 잡 스케줄링 방법
KR101330609B1 (ko) 모바일 멀티코어 가상화 시스템에서 실시간 처리를 보장하기 위한 스케쥴링 방법
US9015719B2 (en) Scheduling of tasks to be performed by a non-coherent device
KR20160061726A (ko) 인터럽트 핸들링 방법
US20230015852A1 (en) Opportunistic exclusive affinity for threads in a virtualized computing system
CN115951987A (zh) 一种存储系统中多线程的任务执行方法、装置以及介质
JP2011257973A (ja) メモリ管理方法及びメモリ管理装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant