KR20110075295A - 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 - Google Patents

멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 Download PDF

Info

Publication number
KR20110075295A
KR20110075295A KR1020090131711A KR20090131711A KR20110075295A KR 20110075295 A KR20110075295 A KR 20110075295A KR 1020090131711 A KR1020090131711 A KR 1020090131711A KR 20090131711 A KR20090131711 A KR 20090131711A KR 20110075295 A KR20110075295 A KR 20110075295A
Authority
KR
South Korea
Prior art keywords
core
work
task
performance
job
Prior art date
Application number
KR1020090131711A
Other languages
English (en)
Other versions
KR101651871B1 (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 KR1020090131711A priority Critical patent/KR101651871B1/ko
Priority to US12/842,470 priority patent/US20110161978A1/en
Publication of KR20110075295A publication Critical patent/KR20110075295A/ko
Application granted granted Critical
Publication of KR101651871B1 publication Critical patent/KR101651871B1/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/468Specific access rights for resources, e.g. using capability register
    • 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
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria

Landscapes

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

Abstract

본 발명은 복수개의 코어로 구성된 컴퓨팅 시스템에 있어서 효율적으로 각 코어에 작업을 할당하기 위한 발명으로, 다수의 코어가 사용되는 멀티코어 시스템상에서 특정 어플리케이션으로부터 요청된 업무를 복수개의 코어를 통해 병렬적으로 수행하는 동안 각 코어의 성능에 대한 정보를 주기적으로 수집한 다음, 각 코어의 성능 대비 잔여 작업량에 기초하여 코어에 추가 작업을 할당한다.
멀티 코어, 데이터 할당, 이종 멀티코어

Description

멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치{Job Allocation Method on Multi-core System and Apparatus thereof}
본 발명은 멀티코어 시스템에 관한 것으로, 복수개의 코어로 구성된 컴퓨팅 시스템에 있어서 효율적으로 각 코어에 작업을 할당하는 방법 및 그 장치에 관한 것이다.
최근 CE 기기의 저전력 고성능 요구사항이 증가함에 따라, 멀티 코어의 필요성이 높아지고 있다. 이러한 멀티 코어 시스템에는 동일한 코어가 다수개 존재하는 대칭형 멀티코어 시스템(SMP, Symmetric Multi-Processing)과 DSP(Digital Processing Processor)나 GPU(Graphic Processing Unit) 등 GPP(General Purpose Processor)로 사용될 수 있는 다양한 이기종 코어들로 이루어진 비대칭 멀티코어 시스템(AMP, Asymmetric Multi-Processing)이 있다.
많은 데이터를 처리하는 소프트웨어를 여러 코어에서 병렬로 실행시킴으로써 성능을 향상시키기 위해서는 처리해야 하는 전체 데이터를 분할하여 분할된 데이터를 각 코어에 할당하고 각 코어에서 이를 처리하도록 한다. 이를 위하여 처리 대상 데이터를 코어의 개수로 나누어 작업(job)을 분할하는 정적 스케줄링 방법이 있다. 또한 데이터의 분할시 분할된 데이터의 크기가 같더라도 OS, 멀티코어 S/W 플랫폼 그리고 다른 응용 프로그램의 영향으로 인해 코어들이 작업을 종료하는 시간이 다를 수 있기 때문에, 전체 성능에서 손실을 입는 경우에는 할당 받은 작업을 모두 종료한 코어가 다른 코어에게 할당된 작업의 일부를 가져와서 수행하는 동적 스케줄링 방법이 있다. 두 가지 방법 모두 코어마다 별도의 작업큐(work queue)를 가지고 있고, 데이터 처리를 시작할 때 전체 데이터가 여러 개로 분할되어 각 코어의 작업큐에 할당된다.
정적 스케줄링 방법은 각 코어의 성능이 모두 동일하고 코어에서 수행되는 작업이 다른 프로세스를 실행하기 위해 컨텍스트 스위칭(context switching) 되지 않을 경우에 성능상의 최대 이득을 얻을 수 있다. 동적 스케줄링 방법은 다른 코어의 작업큐에 할당 받은 작업을 취소하고 빼앗아 올 수 있을 경우에만 사용할 수 있다. 하지만 이종의 멀티코어 플랫폼은 각 코어마다 성능과 계산 특성이 다르기 때문에 동작시키는 프로그램의 성격에 따라 코어별 수행 시간을 예측하기가 어려워서 정적 스케줄링 방법이 효율적으로 동작하지 않는다. 또한, 각 코어가 가지고 있는 작업큐는 해당 코어만 접근할 수 있는 메모리 영역에 가지고 있는 경우가 대부분이어서 동작 중에 한 코어가 다른 코어의 작업큐에 접근하여 작업을 가지고 오는 것이 불가능하기 때문에 동적 스케줄링 방법을 사용하는 것이 불가능하다.
따라서, 본 발명의 일 양상에 따라, 현재 멀티코어 시스템에서 사용하고 있는 작업큐 방식에 변화를 주지 않고 데이터를 각 코어에 효율적으로 분배하여 전체 수행시간을 줄이는 작업 분배 방법을 제공하는 것을 목적으로 한다.
본 발명의 일 양상에 따른 멀티코어 시스템의 작업 분배 방법은, 업무(task)를 복수개의 작업(job)으로 분할하여 각각 처리하는 복수개의 코어로 구성된 컴퓨팅 시스템의 작업 분배 방법에 있어서, 각 코어의 성능에 대한 정보를 주기적으로 수집하고, 수집된 각 코어의 성능 대비 잔여 작업량이 가장 적은 코어에 분할된 작업을 추가적으로 할당한다.
또한, 본 발명의 다른 양상에 따른 복수개의 코어를 포함하는 컴퓨팅 시스템은, 특정 어플리케이션으로부터 요청 받은 업무에 대한 복수개의 단위 작업을 직접 수행하는 코어와, 이 단위 작업에 대한 정보를 저장하고 있는 작업큐를 포함하는 하나 또는 둘 이상의 작업 프로세서, 그리고 작업프로세서의 성능 대비 잔여 작업량에 기초하여 상기 단위작업을 상기 작업 프로세서에 할당하는 호스트 프로세서를 포함한다.
본 발명의 일실시예에 따르면, 현재 멀티코어 시스템에서 사용하고 있는 작업큐 방식에 변화를 주지 않고 작업을 각 코어에 효율적으로 분배하여 전체 수행시 간을 줄이는 작업 분배가 가능하게 한다.
이하 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대해 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 멀티코어 시스템의 전체 구성도이다.
도 1에서는 본 발명에 대한 설명의 편의를 위하여 본 발명의 일 실시예에 따른 멀티코어 시스템(10)을 4개의 프로세서(100, 200, 300, 400)로 구성되어 있는 것으로 가정하였다. 4개의 프로세서는 어플리케이션으로부터 요청받은 업무(task)가 제1 내지 제3 프로세서(200, 300, 400)에서 각각 병렬적으로 수행될 수 있도록 전체 작업을 복수개의 단위 작업(job)으로 나누고, 각 프로세서(200, 300, 400)에 대한 작업할당 및 작업이 수행되는 과정을 제어하고 관리하는 호스트 프로세서(100) 및 호스트 프로세서(100)의 제어에 따라 할당된 단위 작업(job)을 직접 수행하는 제1 프로세서(200), 제2 프로세서(300) 및 제3 프로세서(400)로 구성되어 있다.
이하 제1 내지 제3 프로세서(200, 300, 400)는 편의상 작업 프로세서라 칭한다.
각각의 작업 프로세서(200, 300, 400)는 각각 코어(210, 310, 410) 및 작업큐(220, 320, 420)를 포함할 수 있다. 이는 특히 각 작업 프로세서(200, 300), 400)에 포함된 코어가 서로 다른 비대칭 멀티코어 시스템인 경우이지만, 반드시 이에 한정되는 것은 아니다. 제1 내지 제3 작업큐(220, 320, 420)에는 각각의 코 어(210, 310, 410)에서 처리되어야 하는 작업들에 대한 정보가 저장되어 있다. 제1 내지 제3코어(210, 310, 410)는 각각 작업큐(220, 320, 420)에 저장되어 있는 정보에 기초하여 디램(DRAM) 등과 같은 제1 저장장치 또는 하드디스크 드라이브 등과 같은 제2 저장장치에 저장되어 있는 데이터를 읽어 들여 각자 필요한 작업을 수행하게 된다.
제1 내지 제3 코어(210, 310, 410)는 CPU(Central Processing Unit), DSP(Digital Processing Processor) 또는 GPU(Graphic Processing Unit) 중에서 선택되는 어느 하나로서, 제1 내지 제3 코어(210, 310, 410)가 모두 동일한 코어이거나 서로 다른 코어일 수 있다. 예컨대 제1 코어(210)는 DSP이고, 제2 코어(310) 및 제3 코어(410)는 GPU인 멀티코어 시스템이 본 발명의 대상일 수 있다.
제1 내지 제3 작업큐(220, 320, 420)는 도1에 도시한 바와 같이 각 코어(210, 310, 410)가 포함된 프로세서(200, 300, 400)의 로컬 메모리 내에 존재할 수 있다.
호스트 프로세서(100)는 특정 어플리케이션으로부터 요청 받은 업무가 복수개의 프로세서에 의하여 처리될 수 있도록 복수개의 단위 작업으로 분할하고, 이를 각 프로세서에 할당하여 작업의 전체 수행 과정을 관리한다. 호스트 프로세서(100)는 이를 위하여 작업 스케줄러(110) 및 작업큐 모니터(120)를 포함하여 구성된다.
호스트 프로세서(100)에서 동작하는 작업큐 모니터(120)는 멀티코어 시스템을 구성하는 복수개의 작업 프로세서(200, 300, 400)에 존재하는 작업큐(220, 320, 420)의 상태를 주기적으로 모니터링한다. 작업큐 모니터(120)의 모니터링 주기는 멀티코어 시스템(10)의 성능에 대한 요구사항에 따라 다르게 결정될 수 있다. 예컨대 각 코어(210, 310, 410) 에서 일정한 시간 주기마다 작업큐(220, 320, 420)의 상태를 모니터링 하거나, 각 코어(210, 310, 410)에서 매번 작업이 완료될 때마다 작업큐(220, 320, 420)의 상태를 모니터링 할 수 있다. 이를 위하여 작업큐 모니터(120)는 단위 작업(job) 이 끝날 때마다 이를 알리는 통지(notification)를 각 코어(210, 310, 410)로부터 받을 수 있다.
호스트 프로세서(100)에서 동작하는 작업 스케줄러(110)는 특정 어플리케이션으로부터 요청 받은 업무(task) 보다 작은 크기의 복수개의 단위 작업(job)으로 나눈 다음, 나누어진 작업이 작업 프로세서(200, 300, 400)에서 병렬적으로 처리될 수 있도록 작업을 할당한다. 이때 작업 스케줄러(110)는 작업큐 모니터(120)가 모니터링한 작업큐의 상태에 기초하여 어떤 작업 프로세서(200, 300, 400)에 어느 정도의 작업을 할당할지를 결정한다.
작업큐 모니터(120)는 단위 시간당 각 코어가 처리한 단위작업의 개수 혹은 데이터의 양인 각 코어의 작업 처리 속도값을 갱신하면서 멀티코어 시스템(10)이 가지고 있는 모든 코어(210, 310, 410)의 성능 비를 계산한다. 코어별 성능 비가 결정되면 작업 스케줄러(110)는 현재 각 코어의 작업큐(220, 320, 420)에 남아있는 단위작업의 개수 혹은 단위작업이 수행해야 할 계산 데이터의 양의 비를 구하고, 코어별 성능비와 비교한다. 그 후에 추가 작업을 어느 코어에 할당해야 두 개의 비율이 더욱 비슷해지는지를 계산한 다음 가장 비율이 비슷해지는 코어의 작업큐에 작업을 하나 할당한다.
도 2는 본 발명의 일 실시예에 따른 멀티코어 시스템에 있어서 각 코어에 작업을 분배하는 과정을 설명한 순서도이다.
먼저 본 발명에 따른 멀티코어 시스템이 특정 어플리케이션으로부터 업무(task) 수행 요청을 접수한다(S10). 본 발명에 따른 멀티코어 시스템(10)을 구비한 전체 컴퓨팅 시스템상에는 하나 이상의 어플리케이션이 수행 중이다. 이러한 어플리케이션은 새로이 데이터를 생성하거나 기존의 데이터를 다른 형태의 데이터로 변환하는 등의 작업(task)을 정해진 순서대로 수행하여야 한다. 이러한 작업은 메인 연산 장치에 해당하는 멀티코어 시스템이 디램(DRAM) 등과 같은 제1 저장장치 또는 하드디스크 드라이브 등과 같은 제2 저장장치에 저장되어 있는 데이터를 읽어 들여 처리하는 형태로 수행된다.
상기와 같은 요청을 접수한 멀티코어 시스템(10)은 해당 업무가 멀티코어 시스템(10)에 포함된 복수개의 프로세서들에 의하여 병렬적으로 수행될 수 있도록 보다 작은 크기의 복수개의 단위 작업(job)으로 구분해둔다(S12). 이러한 단위 작업의 크기는 멀티코어 시스템(10)에 포함된 프로세서의 개수 및 성능, 전체 컴퓨팅 시스템의 구성뿐만 아니라 처리되어야 할 업무(task)의 특성 등을 종합적으로 고려하여 결정될 수 있다.
단위 작업이 생성되고 나면 멀티코어 시스템(10)에 포함된 각 프로세서에게 초기 작업을 할당하게 된다(S14). 이러한 초기 작업 분으로 2개 이상의 단위 작업이 각 프로세서에 할당될 수 있다. 이러한 초기 작업 분의 양은 멀티코어 시스템(10)에 포함된 프로세서의 개수 및 성능, 전체 컴퓨팅 시스템의 구성 및 처리되 어야 할 업무(task)의 특성 등을 종합적으로 고려하여 결정될 수 있다.
멀티코어 시스템(10)이 각 프로세서에 작업을 할당하는 것은 호스트 프로세서 내에서 실행되는 작업 스케줄러가 각 프로세서에 내장되어 있는 작업큐(work queue)에 각 단위 작업(job)에 대한 정보를 입력(enque)하는 방식으로 수행될 수 있다.
이후 멀티코어 시스템(10)은 각 프로세서에 내장되어 있는 코어의 성능을 모니터링한다(S16). 이 단계는 멀티코어 시스템(10)을 구성하는 각각의 프로세서에 존재하는 작업큐의 상태를 주기적으로 확인하는 방식으로 수행될 수 있다.
작업큐에 대한 모니터링 주기는 멀티코어 시스템(10)의 성능에 대한 요구사항에 따라 다르게 결정될 수 있다. 예컨대 각 코어에서 일정한 시간 주기마다 작업큐의 상태를 모니터링 하거나, 각 코어에서 매번 작업이 완료될 때마다 작업큐의 상태를 모니터링 할 수 있다. 이를 위하여 각 프로세서에서 단위 작업(job)이 끝날 때마다 이를 알리는 통지(notification)를 받을 수 있다. 이때, 통지의 내용은 한 단위 작업을 수행한 전체 시간 혹은 작업 수행 시작 시간 및 종료 시간에 대한 정보를 포함할 수 있다.
본 발명의 일 실시예에 있어서 각 코어의 성능을 측정하는 방법으로는 각 코어가 수행한 단위 작업의 개수 또는 단위작업을 수행하면서 처리한 데이터의 양을 그 동안 수행된 시간으로 나누어 작업 처리 속도에 대한 산술평균을 얻는 방법을 예로 들 수 있다. 이때 각 코어별로 작업을 처리할 때마다의 성능이 동일할 수도 있지만 일부 디바이스에서는 코드 전송시간, 코드 캐쉬의 영향으로 인해 점점 성능 이 좋아지는 경향이 있으므로, 필요에 따라 전체 작업을 수행한 회수가 아니라 최근 수행하였던 몇 개의 단위작업 만을 성능 평가에 사용할 수 있다. 이러한 정보에 기초하여 단위 시간당 각 코어가 처리한 단위 작업(job)의 개수 혹은 데이터의 양을 주기적으로 갱신하면서 각 코어의 성능을 계산할 수 있다.
본 발명의 다른 실시예에서 각 코어의 성능의 초기값으로는 0이 아닌 가장 작은 숫자로 두어서, 초기에 일부 코어만 단위작업 종료에 대한 통지를 보내더라도 각 코어의 성능에 대한 평가값이 무한대가 되지 않도록 할 수 있다.
다음으로 각 프로세서에 추가 작업을 할당한다(S18). 이때 본 발명의 실시예에서는 S16단계에서 확인된 각 프로세서에 내장되어 있는 코어의 성능과 각 프로세서의 작업큐에 기록되어 있는 잔여 작업량을 종합적으로 고려하여 추가 작업을 부여할 수 있다.
본 발명의 일 실시예에 있어서 어느 코어에 추가 작업을 어느 정도로 할당할지 여부는 전체 코어의 성능 대비 잔여 작업량에 대한 평가값이 같아질 때까지, 다시 말해서 평균값들 사이의 편차를 최소화할 수 있도록 조정하는 방식을 예로 들 수 있다. 즉, 각 코어에 대한 평가값이 결정되면 현재 각 코어에 대한 작업큐에 저장되어 있는 단위작업의 개수 혹은 각 단위작업이 수행해야 할 계산 데이터의 양의 비를 구하고, 코어별 성능비와 비교한다. 그리고 나서 어느 정도의 추가작업을 어느 코어에 할당해야 각각의 평가값의 비율이 더욱 비슷해지는지를 계산한 다음 가장 비슷해지는 코어의 작업큐에 추가작업에 대한 정보를 입력(enque)한다. 코어의 성능 대비 잔여 작업량에 대한 평가값이 작다는 것은 성능에 비해 적은 양의 일을 가지고 있음을 나타낸다.
이러한 S16 및 S18 단계를 반복하면서 어플리케이션으로부터 요청받은 전체 업무(task)에 대한 단위 작업의 할당이 완료되고 나면 종료 처리하고 다음 지시를 기다리게 된다.
도 3a 및 도 3b는 본 발명의 일 실시예에 따른 멀티코어 시스템에 있어서 각 코어에 작업을 분배하는 과정을 보다 구체적으로 설명하기 위한 도면이다.
도 3a 및 도 3b에 도시된 멀티코어 시스템은 3개의 작업 프로세서(1200, 1300, 1400)와 1개의 호스트 프로세서(1100)로 구성되어 있다. 이때 작업 프로세서는 CPU 코어(1210)를 포함하고 있는 제1 프로세서(1200), GPU코어(1310)를 포함하고 있는 제2 프로세서(1300), DSP(1410)를 포함하고 있는 제3 프로세서(1400)로 구성되어 있다.
도 3a의 실시예에서는 어플리케이션으로부터 요청받은 1개의 업무(task)가 호스트 프로세서(1100)의 작업 스케줄러(1110)에 의하여 30개의 단위 작업(job)으로 나뉜 다음, 초기 작업으로 각 코어(1210, 1310, 1410)에 4개씩 할당되어 있다. 따라서 작업 스케줄러(1110)에는 18개의 단위 작업이 남아있는 상태이다.
각 작업큐(1220, 1320, 1420)에 초기 작업(job)이 들어오면 각 코어(1210, 1310, 1410)는 할당된 작업(job)을 처리하기 시작한다. 각 코어는 하나의 작업(job)을 끝낼 때마다 작업큐 모니터(1120)에 해당 작업이 끝났음을 통지한다. 통지의 내용은 해당 작업을 수행한 전체 시간 혹은 작업 수행 시작, 종료 시간이 포함된다.
작업큐 모니터(1120)는 단위 시간당 각 코어가 처리한 단위작업의 개수 혹은 데이터의 양인 각 코어의 작업 처리 속도 값을 갱신하면서 멀티코어 시스템이 가지고 있는 모든 코어(1210, 1310, 1410)의 성능 비를 계산한다. 코어별 성능 비가 결정되면 작업 스케줄러(1110)는 현재 각 코어의 작업큐(1220, 1320, 1420)에 남아있는 단위작업의 개수 혹은 단위작업이 수행해야 할 계산 데이터의 양의 비를 구하고, 코어별 성능비와 비교한다. 그 후에 추가 작업을 어느 코어에 할당해야 두 개의 비율이 더욱 비슷해지는지를 계산한 다음 가장 비율이 비슷해지는 코어의 작업큐에 작업을 하나 할당한다.
도 3b는 제1코어(1210), 제2코어(1310) 및 제3코어(1410)의 성능 비가 약 1 : 3 : 2 일 경우 일정 시간이 지나고 나서 작업 프로세서(1200, 1300, 1400)에 포함된 작업큐(1220, 1320, 1420)의 상태를 보여준다. 각 작업큐(1220, 1320, 1420)에 남아있는 작업의 개수가 각 코어(1210, 1310, 1410)의 성능 비와 동일하게 채워져 있다.
이제까지 본 발명의 바람직한 실시 예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
도 1은 일 실시예에 따른 멀티코어 시스템의 전체 구성도이고,
도 2는 일 실시예에 따라 각 코어에 작업을 분배하는 과정을 설명하는 순서도이고,
도 3a 및 도 3b는 일 실시예에 따라 각 코어에 작업을 분배하는 구체적인 과정을 설명하는 도면이다.

Claims (10)

  1. 업무(task)를 복수개의 작업(job)으로 분할하여 각각 처리하는 복수개의 코어로 구성된 컴퓨팅 시스템의 작업 분배 방법에 있어서,
    상기 각 코어의 성능에 대한 정보를 주기적으로 수집하는 제1단계; 및,
    상기 수집된 각 코어의 성능 대비 잔여 작업량이 가장 적은 코어에 상기 분할된 작업을 추가적으로 할당하는 제2단계를 포함하는 멀티코어 시스템의 작업 분배 방법.
  2. 제 1항에 있어서, 상기 제2단계는
    상기 성능 대비 잔여 작업량이 작은 코어에 작업을 추가적으로 할당하면서, 성능 대비 잔여 작업량이 가장 많은 코어보다 성능 대비 잔여 작업량 수준을 초과하기 전까지 추가적으로 작업을 할당하는 멀티코어 시스템의 작업 분배 방법.
  3. 제 1항에 있어서, 상기 제2단계 수행 이전에
    상기 각 코어에 동일한 양의 작업을 할당하는 멀티코어 시스템의 작업 분배 방법.
  4. 제 1항에 있어서, 상기 제1단계는
    상기 각 코어에서 단위 작업이 종료할 때마다 주기적으로 각 코어의 성능에 대한 정보를 수집하는 멀티코어 시스템의 작업 분배 방법.
  5. 제1항에 있어서,
    상기 성능 정보는 일정 작업 구간에 대한 각 코어의 작업 처리 속도에 대한 산술 평균인 멀티코어 시스템의 작업 분배 방법
  6. 제1항에 있어서,
    상기 컴퓨팅 시스템은 서로 다른 성능의 코어를 2개 이상 포함하고 있는 멀티코어 시스템의 작업 분배 방법.
  7. 복수개의 코어를 포함하는 컴퓨팅 시스템에 있어서,
    특정 어플리케이션으로부터 요청 받은 업무에 대한 복수개의 단위 작업을 직접 수행하는 코어 및 상기 단위 작업에 대한 정보를 저장하고 있는 작업큐를 포함하는 하나 또는 둘 이상의 작업 프로세서; 및,
    상기 작업프로세서의 성능 대비 잔여 작업량에 기초하여 상기 단위작업을 상기 작업 프로세서에 할당하는 호스트 프로세서를 포함하는 컴퓨팅 시스템.
  8. 제7항에 있어서,
    상기 호스트 프로세서는
    상기 작업 프로세서에 존재하는 작업큐의 상태를 주기적으로 모니터링하는 작업큐 모니터; 및,
    특정 어플리케이션으로부터 요청받은 업무를 보다 작은 크기의 복수개의 단위 작업으로 나눈 다음 상기 작업을 각 작업 프로세서에게 할당하는 작업 스케줄러를 포함하는 컴퓨팅 시스템.
  9. 제7항에 있어서,
    상기 성능 정보는 일정 작업 구간에 대한 각 코어의 작업 처리 속도에 대한 산술 평균인 컴퓨팅 시스템.
  10. 제7항에 있어서,
    상기 복수개의 코어는 서로 다른 성능을 갖는 컴퓨팅 시스템.
KR1020090131711A 2009-12-28 2009-12-28 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 KR101651871B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090131711A KR101651871B1 (ko) 2009-12-28 2009-12-28 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
US12/842,470 US20110161978A1 (en) 2009-12-28 2010-07-23 Job allocation method and apparatus for a multi-core system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090131711A KR101651871B1 (ko) 2009-12-28 2009-12-28 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20110075295A true KR20110075295A (ko) 2011-07-06
KR101651871B1 KR101651871B1 (ko) 2016-09-09

Family

ID=44189101

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090131711A KR101651871B1 (ko) 2009-12-28 2009-12-28 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치

Country Status (2)

Country Link
US (1) US20110161978A1 (ko)
KR (1) KR101651871B1 (ko)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9411659B2 (en) 2013-08-13 2016-08-09 Samsung Sds Co., Ltd. Data processing method used in distributed system
KR20170014861A (ko) * 2015-07-31 2017-02-08 삼성전자주식회사 응용 프로그램을 제어하기 위한 장치 및 방법
KR101721341B1 (ko) * 2015-12-31 2017-04-10 전북대학교산학협력단 이종 멀티코어 환경에서 사용되는 수행장치 결정 모듈 및 이를 이용한 수행장치 결정방법
KR20170116439A (ko) * 2016-04-11 2017-10-19 한국전자통신연구원 태스크 스케줄링 방법 및 장치
KR20200068548A (ko) * 2018-12-05 2020-06-15 한국전자통신연구원 병렬계산 가속기 할당률 결정 장치 및 방법
KR102384821B1 (ko) * 2021-07-14 2022-04-08 (주)뤼이드 자동화 머신 러닝을 위한 작업 스케줄링 방법
KR102411681B1 (ko) * 2021-12-24 2022-06-22 주식회사 모빌린트 시간 결정적인 태스크의 가속을 지원하기 위한 동종 다중 코어 가속기의 sw 프레임워크 구조를 이용하는 하드웨어 가속기 제어 방법 및 장치

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100156888A1 (en) * 2008-12-23 2010-06-24 Intel Corporation Adaptive mapping for heterogeneous processing systems
JP5621287B2 (ja) * 2010-03-17 2014-11-12 富士通株式会社 負荷分散システムおよびコンピュータプログラム
US8843932B2 (en) * 2011-01-12 2014-09-23 Wisconsin Alumni Research Foundation System and method for controlling excessive parallelism in multiprocessor systems
KR20130115574A (ko) * 2012-04-12 2013-10-22 삼성전자주식회사 단말기에서 태스크 스케줄링을 수행하는 방법 및 장치
US9417935B2 (en) * 2012-05-01 2016-08-16 Microsoft Technology Licensing, Llc Many-core process scheduling to maximize cache usage
US9626216B2 (en) * 2012-05-09 2017-04-18 Nvidia Corporation Graphics processing unit sharing between many applications
US9575813B2 (en) 2012-07-17 2017-02-21 Microsoft Technology Licensing, Llc Pattern matching process scheduler with upstream optimization
KR102082859B1 (ko) 2013-01-07 2020-02-28 삼성전자주식회사 복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법
KR101694310B1 (ko) * 2013-06-14 2017-01-10 한국전자통신연구원 멀티코어 프로세서 기반의 모니터링 장치 및 그 방법
US9250953B2 (en) * 2013-11-12 2016-02-02 Oxide Interactive Llc Organizing tasks by a hierarchical task scheduler for execution in a multi-threaded processing system
US9785481B2 (en) * 2014-07-24 2017-10-10 Qualcomm Innovation Center, Inc. Power aware task scheduling on multi-processor systems
CN105404553A (zh) * 2015-12-01 2016-03-16 安徽瑞信软件有限公司 采集装置的任务分配方法
JP6904064B2 (ja) * 2017-05-29 2021-07-14 富士通株式会社 タスク配備プログラム、タスク配備方法、およびタスク配備装置
KR102442921B1 (ko) 2017-12-11 2022-09-13 삼성전자주식회사 디지털 시그널 프로세서(dsp)의 태스크 관리 효율을 높일 수 있는 전자 장치
CN110515749B (zh) * 2019-08-30 2022-06-24 深圳乐信软件技术有限公司 信息发送的队列调度的方法、装置、服务器和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040104510A (ko) * 2002-03-11 2004-12-10 가부시키가이샤 소니 컴퓨터 엔터테인먼트 그래픽 프로세스 최적화 방법 및 시스템
US20050013705A1 (en) * 2003-07-16 2005-01-20 Keith Farkas Heterogeneous processor core systems for improved throughput
US20080077928A1 (en) * 2006-09-27 2008-03-27 Kabushiki Kaisha Toshiba Multiprocessor system
KR20080114003A (ko) * 2007-06-26 2008-12-31 삼성전자주식회사 멀티코어 프로세서 상에서 연관된 작업들을 수행하는 방법및 장치

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6704799B1 (en) * 1998-12-29 2004-03-09 Honeywell Inc. Time-efficient inter-process communication in a harmonic rate system
US6741983B1 (en) * 1999-09-28 2004-05-25 John D. Birdwell Method of indexed storage and retrieval of multidimensional information
JP4475614B2 (ja) * 2000-04-28 2010-06-09 大正製薬株式会社 並列処理方法におけるジョブの割り当て方法および並列処理方法
JP3426223B2 (ja) * 2000-09-27 2003-07-14 株式会社ソニー・コンピュータエンタテインメント マルチプロセッサシステム、データ処理システム、データ処理方法、コンピュータプログラム
US7356655B2 (en) * 2003-05-15 2008-04-08 International Business Machines Corporation Methods, systems, and media for managing dynamic storage
US7590984B2 (en) * 2003-05-29 2009-09-15 International Business Machines Corporation System and method for balancing a computing load among computing resources in a distributed computing problem
US20050022173A1 (en) * 2003-05-30 2005-01-27 Codito Technologies Private Limited Method and system for allocation of special purpose computing resources in a multiprocessor system
US7665092B1 (en) * 2004-12-15 2010-02-16 Sun Microsystems, Inc. Method and apparatus for distributed state-based load balancing between task queues
US8015564B1 (en) * 2005-04-27 2011-09-06 Hewlett-Packard Development Company, L.P. Method of dispatching tasks in multi-processor computing environment with dispatching rules and monitoring of system status
US8555288B2 (en) * 2006-05-17 2013-10-08 Teradata Us, Inc. Managing database utilities to improve throughput and concurrency
CN101517576B (zh) * 2006-05-22 2011-10-05 相干逻辑公司 基于软件程序在处理系统上的运行而设计asic
US20080022283A1 (en) * 2006-07-19 2008-01-24 International Business Machines Corporation Quality of service scheduling for simultaneous multi-threaded processors
US20080263324A1 (en) * 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
KR101286700B1 (ko) * 2006-11-06 2013-07-16 삼성전자주식회사 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치및 방법
US8429663B2 (en) * 2007-03-02 2013-04-23 Nec Corporation Allocating task groups to processor cores based on number of task allocated per core, tolerable execution time, distance between cores, core coordinates, performance and disposition pattern
US8279865B2 (en) * 2007-04-20 2012-10-02 John Giacomoni Efficient pipeline parallelism using frame shared memory
KR20090005921A (ko) * 2007-07-10 2009-01-14 삼성전자주식회사 대칭적 다중 프로세서 시스템에서의 로드 밸런싱 방법 및장치
US7957948B2 (en) * 2007-08-22 2011-06-07 Hyperformit, Inc. System and method for capacity planning for systems with multithreaded multicore multiprocessor resources
US7716006B2 (en) * 2008-04-25 2010-05-11 Oracle America, Inc. Workload scheduling in multi-core processors
US8037350B1 (en) * 2008-04-30 2011-10-11 Hewlett-Packard Development Company, L.P. Altering a degree of redundancy used during execution of an application
US20090288092A1 (en) * 2008-05-15 2009-11-19 Hiroaki Yamaoka Systems and Methods for Improving the Reliability of a Multi-Core Processor
FR2931269A1 (fr) * 2008-05-16 2009-11-20 Ateji Soc Par Actions Simplifi Procede et systeme de developpement de programmes paralleles
US8347301B2 (en) * 2008-06-30 2013-01-01 Intel Corporation Device, system, and method of scheduling tasks of a multithreaded application
JP5245722B2 (ja) * 2008-10-29 2013-07-24 富士通株式会社 スケジューラ、プロセッサシステム、プログラム生成装置およびプログラム生成用プログラム
US8122269B2 (en) * 2009-01-07 2012-02-21 International Business Machines Corporation Regulating power consumption in a multi-core processor by dynamically distributing power and processing requests by a managing core to a configuration of processing cores

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040104510A (ko) * 2002-03-11 2004-12-10 가부시키가이샤 소니 컴퓨터 엔터테인먼트 그래픽 프로세스 최적화 방법 및 시스템
US20050013705A1 (en) * 2003-07-16 2005-01-20 Keith Farkas Heterogeneous processor core systems for improved throughput
US20080077928A1 (en) * 2006-09-27 2008-03-27 Kabushiki Kaisha Toshiba Multiprocessor system
KR20080114003A (ko) * 2007-06-26 2008-12-31 삼성전자주식회사 멀티코어 프로세서 상에서 연관된 작업들을 수행하는 방법및 장치

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9411659B2 (en) 2013-08-13 2016-08-09 Samsung Sds Co., Ltd. Data processing method used in distributed system
KR20170014861A (ko) * 2015-07-31 2017-02-08 삼성전자주식회사 응용 프로그램을 제어하기 위한 장치 및 방법
KR101721341B1 (ko) * 2015-12-31 2017-04-10 전북대학교산학협력단 이종 멀티코어 환경에서 사용되는 수행장치 결정 모듈 및 이를 이용한 수행장치 결정방법
KR20170116439A (ko) * 2016-04-11 2017-10-19 한국전자통신연구원 태스크 스케줄링 방법 및 장치
KR20200068548A (ko) * 2018-12-05 2020-06-15 한국전자통신연구원 병렬계산 가속기 할당률 결정 장치 및 방법
KR102384821B1 (ko) * 2021-07-14 2022-04-08 (주)뤼이드 자동화 머신 러닝을 위한 작업 스케줄링 방법
KR102411681B1 (ko) * 2021-12-24 2022-06-22 주식회사 모빌린트 시간 결정적인 태스크의 가속을 지원하기 위한 동종 다중 코어 가속기의 sw 프레임워크 구조를 이용하는 하드웨어 가속기 제어 방법 및 장치
WO2023120836A1 (ko) * 2021-12-24 2023-06-29 주식회사 모빌린트 시간 결정적인 태스크의 가속을 지원하기 위한 동종 다중 코어 가속기의 sw 프레임워크 구조를 이용하는 하드웨어 가속기 제어 방법 및 장치

Also Published As

Publication number Publication date
US20110161978A1 (en) 2011-06-30
KR101651871B1 (ko) 2016-09-09

Similar Documents

Publication Publication Date Title
KR20110075295A (ko) 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
JP6799947B2 (ja) スライディングタイムウィンドウを用いてタスクをスケジュール設定するためのシステムおよび方法
KR101953906B1 (ko) 태스크 스케줄링 방법 및 장치
US9152200B2 (en) Resource and power management using nested heterogeneous hypervisors
KR101640848B1 (ko) 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
EP2466460B1 (en) Compiling apparatus and method for a multicore device
KR101626378B1 (ko) 병렬도를 고려한 병렬 처리 장치 및 방법
US9229783B2 (en) Methods and apparatus for resource capacity evaluation in a system of virtual containers
US8479205B2 (en) Schedule control program and schedule control method
US20110161943A1 (en) Method to dynamically distribute a multi-dimensional work set across a multi-core system
JP4705051B2 (ja) 計算機システム
JP2016526735A (ja) 仮想ハドゥープマネジャ
JP2008191949A (ja) マルチコアシステムおよびマルチコアシステムの負荷分散方法
JP2015146154A (ja) ジョブスケジューリング装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム
US10846144B2 (en) Multistep automated scaling for cluster containers
KR20100118826A (ko) 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법
KR101553650B1 (ko) 멀티코어 시스템에서의 로드 밸런싱 장치 및 방법
US8387041B2 (en) Localized multi-element processor resource sharing among logical partitions
KR20130088513A (ko) 멀티코어 시스템의 태스크 분배 방법 및 장치
JP6252140B2 (ja) タスク割り付けプログラム及びタスク割り付け方法
JP2021522593A (ja) Gpuについてのフィードバックガイド付き分割ワークグループのディスパッチ
JP2022539955A (ja) タスクスケジューリング方法及び装置
KR20180045347A (ko) 가상화 환경에서의 자원 관리 방법 및 이를 지원하는 장치
US11521042B2 (en) System and method to dynamically and automatically sharing resources of coprocessor AI accelerators
JP5178778B2 (ja) 仮想計算機およびcpu割り当て方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant