KR20140134190A - 멀티 코어 시스템 및 멀티 코어 시스템의 작업 스케줄링 방법 - Google Patents

멀티 코어 시스템 및 멀티 코어 시스템의 작업 스케줄링 방법 Download PDF

Info

Publication number
KR20140134190A
KR20140134190A KR1020130054031A KR20130054031A KR20140134190A KR 20140134190 A KR20140134190 A KR 20140134190A KR 1020130054031 A KR1020130054031 A KR 1020130054031A KR 20130054031 A KR20130054031 A KR 20130054031A KR 20140134190 A KR20140134190 A KR 20140134190A
Authority
KR
South Korea
Prior art keywords
core
cycles
stall
active
task
Prior art date
Application number
KR1020130054031A
Other languages
English (en)
Other versions
KR101553649B1 (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 KR1020130054031A priority Critical patent/KR101553649B1/ko
Priority to US14/276,522 priority patent/US9645855B2/en
Publication of KR20140134190A publication Critical patent/KR20140134190A/ko
Priority to US14/606,395 priority patent/US9274845B2/en
Priority to US14/800,002 priority patent/US10585709B2/en
Application granted granted Critical
Publication of KR101553649B1 publication Critical patent/KR101553649B1/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/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5022Workload threshold

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

멀티 코어 시스템의 각 코어에 할당되는 작업의 최대 건수를 동적으로 관리하여 공유되는 자원에 기인한 코어의 성능 감소를 최소화하는 멀티 코어 시스템 및 멀티 코어 시스템의 작업 스케줄링 방법이 개시된다.
일 측면에 따른 멀티 코어 시스템은, 액티브 사이클의 개수를 저장하는 액티브 사이클 계수부 및 스톨 사이클의 개수를 저장하는 스톨 사이클 계수부를 포함하는 적어도 하나의 코어; 상기 적어도 하나의 코어마다 적어도 하나의 작업을 할당하는 작업 스케줄러; 상기 코어와 상기 작업 스케줄러의 입출력 데이터를 저장하는 메모리; 및 상기 적어도 하나의 코어, 상기 작업 스케줄러 및 상기 메모리를 연결하는 네트워크를 포함한다.

Description

멀티 코어 시스템 및 멀티 코어 시스템의 작업 스케줄링 방법{MULTICORE SYSTEM AND JOB SCHEDULING METHOD THEREOF}
멀티 코어 시스템 및 멀티 코어 시스템의 작업 스케줄링 방법에 관련된다. 보다 상세하게는, 멀티 코어 시스템의 각 코어에 할당되는 작업의 최대 건수를 동적으로 관리하는 멀티 코어 시스템 및 멀티 코어 시스템의 작업 스케줄링 방법에 관련된다.
멀티 코어 시스템의 응용(application), 특히 그래픽스 및 범용 GPU(GPGPU: General Purpose computing on Graphics Processing Units)의 응용은 처리 대상이 되는 대량의 데이터를 병렬화(parallelism)하기 왕이하다. 처리 대상이 되는 데이터 상호 간에 의존성(dependency)가 없기 때문이다.
도 1은 일반적인 멀티 코어 시스템의 구성을 예시한 블록도이다.
도 1에서 나타낸 바와 같이, 멀티 코어 시스템(1)은 작업 스케줄러(10), 다수의 코어(11), 다수의 메모리(12) 및 이들을 상호 연결하는 네트워크(13)를 포함하여 이루어진다.
작업 스케줄러(job scheduler)(10)는 멀티 코어를 이루는 각 코어의 자원(resource) 상태에 따라 작업(job)을 코어마다 분배한다. 작업은 코어에서 일괄 처리되는 다수의 데이터의 묶음을 말한다.
코어(11)는 할당된 하나의 작업 또는 다수의 작업을 처리한다. 이 때, 한 사이클(cycle)에 동시에 처리할 수 있는 단위로 나누어 관리하기 위하여 레지스터 파일 및 소규모의 캐시(pivate cache) 또는 메모리(scratchpad memory)를 갖는다.
메모리(12)는 입출력 데이터를 저장한다. 메모리(12)는 모든 코어(11)에 의해 공유된다.
네트워크(13)는 작업 스케줄러(10), 다수의 코어(11), 다수의 메모리(12)를 서로 연결하며, 데이터와 제어 신호의 전달 경로가 된다.
한편, 일반적으로, 가용 컴퓨팅 자원을 최대로 활용할수록 병렬화에 의한 성능 향상의 효과가 더욱 두드러지는 것으로 알려져 있다. 코어마다 독립적인 자원(코어 내의 레지스터 파일, 스크래치패드 메모리, 컴퓨팅 유닛 등)을 주로 사용하는 응용의 경우, 작업의 건수를 증가시킬 수록 메모리 액세스 지연(memory access latency)이나 파이프라인 지연(pipeline patency)으로 인한 영향이 감소되어 전체적인 성능이 향상된다.
따라서, 작업 스케줄러(10)는 코어(11)의 자원 상태, 예컨대 레지스터 파일의 상태 및 공유 메모리의 상태를 고려하여 각 코어(11)가 처리할 수 있는 최대 건수의 작업을 할당한다.
그러나, 모든 코어가 공유하는 메모리, 예컨대 도 1의 메모리(12)를 주로 사용하는 응용의 경우, 네트워크(13) 및 메모리(12)의 최대 대역폭(bandwidth)의 한계로 인하여, 작업의 건수를 증가시켜도 성능 향상이 이루어지지 않는 경우가 있다. 또한, 과도한 트래픽이 유발하는 네트워크 정체(network congestion) 및 L2 캐시 용량의 고갈 등에 따라, 오히려 작업의 건수를 증가시킬 때 성능이 저하되는 경우가 발생하기도 한다.
도 2는 응용별 작업의 건수에 따른 IPC의 변화를 예시한 그래프이다.
도 2에서 예시한 바와 같이, 응용 A(application A)의 경우, 작업 건수가 4건이 되는 지점(20)까지는 성능(Normalized IPC)이 향상된다. 그러나, 작업 건수가 4건을 초과하는 경우에는 오히려 성능이 저하되는 양상을 나타낸다.
마찬가지로, 응용 B(application B)의 경우, 작업 건수가 5건이 되는 지점(21)까지는 성능이 향상되는 반면, 작업 건수가 5건을 초과하는 경우에는 성능이 저하되며, 응용 C(application C)의 경우, 작업 건수가 2건이 되는 지점(22)까지는 성능이 향상되는 반면, 작업 건수가 5건을 초과하는 경우에는 성능이 저하되는 양상을 나타낸다.
따라서, 성능이 저하되지 않는 작업 건수의 한도 내에서 각 코어에 작업을 할당하는 스케줄링이 필요하다.
멀티 코어 시스템의 각 코어에 할당되는 작업의 최대 건수를 동적으로 관리하여 공유되는 자원에 기인한 코어의 성능 감소를 최소화하는 멀티 코어 시스템 및 멀티 코어 시스템의 작업 스케줄링 방법을 제공하는 것을 목적으로 한다.
일 측면에 따른 멀티 코어 시스템은, 액티브 사이클의 개수를 저장하는 액티브 사이클 계수부 및 스톨 사이클의 개수를 저장하는 스톨 사이클 계수부를 포함하는 적어도 하나의 코어; 상기 적어도 하나의 코어마다 적어도 하나의 작업을 할당하는 작업 스케줄러; 상기 코어와 상기 작업 스케줄러의 입출력 데이터를 저장하는 메모리; 및 상기 적어도 하나의 코어, 상기 작업 스케줄러 및 상기 메모리를 연결하는 네트워크를 포함한다.
다른 측면에 따른 멀티 코어 시스템의 작업 스케줄링 방법은, 코어로부터 전송된 액티브 사이클의 개수 및 스톨 사이클의 개수를 기초로 상기 액티브 사이클의 개수에 대한 상기 스톨 사이클의 개수의 비율을 계산하는 단계; 및 상기 액티브 사이클의 개수에 대한 상기 스톨 사이클의 개수의 비율이 임계값을 초과한 경우, 상기 특정 코어에 할당하는 작업 건수를 감소시키고, 상기 액티브 사이클의 개수에 대한 상기 스톨 사이클의 개수의 비율이 임계값을 초과하지 않은 경우, 상기 특정 코어에 할당하는 작업 건수를 유지하는 단계;를 포함한다.
멀티 코어 시스템의 각 코어에 할당되는 작업의 최대 건수를 동적으로 관리하여 공유되는 자원에 기인한 코어의 성능 감소를 최소화하는 멀티 코어 시스템 및 멀티 코어 시스템의 작업 스케줄링 방법을 구현할 수 있는 효과가 있다.
도 1은 일반적인 멀티 코어 시스템의 구성을 예시한 블록도이다.
도 2는 응용별 작업의 건수에 따른 IPC의 변화를 예시한 그래프이다.
도 3은 일 측면에 따른 멀티 코어 시스템을 예시한 블록도이다.
도 4는 멀티 코어 시스템의 동적 스케줄링 방법을 예시한 흐름도이다.
도 5는 다른 측면에 따른 멀티 코어 시스템을 예시한 블록도이다.
도 6은 L1 캐시를 포함하는 멀티 코어 시스템의 작업 스케줄링 방법을 예시한 흐름도이다.
이하, 첨부된 도면을 참조하여 실시를 위한 구체적인 예를 상세히 설명한다.
도 3은 일 측면에 따른 멀티 코어 시스템을 예시한 블록도이다.
도 3에서 나타낸 바와 같이, 멀티 코어 시스템(3)은 작업 스케줄러(30), 다수의 코어(31), 다수의 메모리(32) 및 이들을 상호 연결하는 네트워크(33)를 포함하여 이루어진다.
작업 스케줄러(30)는 멀티 코어를 이루는 각 코어의 자원(resource) 상태에 따라 작업(job)을 코어마다 분배하여 할당한다.
코어(31)는 할당된 하나의 작업 또는 다수의 작업을 처리한다. 이 때, 한 사이클(cycle)에 동시에 처리할 수 있는 단위로 나누어 관리하기 위하여 레지스터 파일 및 소규모의 캐시(pivate cache) 또는 스크래치패드 메모리(scratchpad memory)를 갖는다.
메모리(32)는 입출력 데이터를 저장한다. 메모리(32)는 모든 코어(31)에 의해 공유된다.
네트워크(33)는 작업 스케줄러(30), 다수의 코어(31), 다수의 메모리(32)를 서로 연결하며, 데이터와 제어 신호의 전달 경로가 된다.
한편, 각각의 코어(31)는 프론트엔드부(300), 실행부(310), 메모리 액세스부(320), 기록부(330), 액티브 사이클 계수부(340) 및 스톨 사이클 계수부(350)를 더 포함한다.
프론트엔드부(300)는 할당된 작업의 명령어(instruction)를 메모리(32) 또는 캐시(도면에 나타내지 않음)로부터 읽어오며, 이를 실행부(310)로 전달한다.
또한, 프론트엔드부(300)는 명령어 상호 간의 의존성을 확인하여, 사이클(cycle) 내에서 의존성이 해소되지 않은 경우에는 그 사이클에서 명령어의 전달을 보류한다. 시스템의 자원이 부족한 경우에도 명령어의 전달을 보류할 수 있다. 이처럼 프론트엔드부(300)로부터 실행부(310)로 유효한 명령어가 전달되지 못한 상황을 스톨 상황(stall condition)이라고 하며, 스톨 상황이 발생한 사이클을 스톨 사이클(stall cycle)이라 한다.
프론트엔드부(300)가 실행부(310)로 유효한 명령어를 전달한 경우, 액티브 상황(active condition)이라고 하며, 액티브 상황이 발생한 사이클을 액티브 사이클(active cycle)이라 한다.
실행부(310)는 프론트엔드부(300)로부터 입력된 데이터를 명령어의 유형에 따라 처리한다.
메모리 액세스부(320)는 메모리(32)로부터 데이터를 읽어 오거나, 메모리(32)에 데이터를 기록한다.
기록부(330)는 실행부(310)에서 처리를 마친 데이터 또는 메모리 액세스부(320)에 의해 메모리(32)로부터 읽어온 데이터를 코어(31)의 레지스터 파일(도면에 나타내지 않음)에 기록한다.
액티브 사이클 계수부(340)는 프론트엔드부(300)에서 실행부(310)로 명령어를 전달할 때에, 액티브 사이클의 개수를 기록한다. 또한, 스톨 사이클 계수부(350)는 프론트엔드부(300)에서 실행부(310)로 명령어를 전달할 때에 스톨 사이클의 개수를 기록한다.
스톨 사이클 개수와 액티브 사이클 개수 사이에는 표 1과 같이 사이클비를 정의할 수 있다.
[표 1]
(사이클비) = (스톨 사이클 개수)/(액티브 사이클 개수).
앞서 설명한 바와 같이, 응용에 따라서는 작업 건수가 임계값(threshold)을 초과하는 경우 오히려 성능이 저하되는 양상을 나타낸다. 이 경우, 스톨 사이클의 개수가 증가하는 현상이 나타난다.
따라서, 사이클비가 증가한다는 것은 코어의 처리 성능이 저하된다는 의미로 해석할 수 있다.
도 3의 멀티 코어 시스템(3)에서, 작업 스케줄러(30)는 다수의 코어(31) 중 특정 코어의 사이클비가 일정 값, 예컨대 "1"을 초과하는 경우에는, 그 코어에 대한 최대 작업 건수를 낮춤으로써 작업 스케줄링을 수행한다.
이를 위하여, 작업 스케줄러(30)는 다수의 코어(31)의 각각의 액티브 사이클 계수부(340) 및 스톨 사이클 계수부(350)로부터 그 코어의 액티브 사이클 개수 및 스톨 사이클 개수를 수신한 후, 사이클비를 계산하여 각 코어에 대한 작업 스케줄링을 수행할 수 있다.
또는, 다수의 코어(31)의 각각의 프론트엔드부(300)는, 그 코어의 액티브 사이클 계수부 사이클 계수부(340) 및 스톨 사이클 계수부(350)에 저장된 그 코어의 액티브 사이클 개수 및 스톨 사이클 개수에 기초하여 사이클비를 계산할 수 있다. 이 경우, 작업 스케줄러(30)는 각 코어의 프론트엔드부(300)로부터 그 코어의 사이클비를 수신한 후, 각 코어의 최대 작업 건수를 조정함으로써 작업 스케줄링을 수행할 수 있다.
도 4는 멀티 코어 시스템의 작업 스케줄링 방법을 예시한 흐름도이다.
도 4에서는 도 3의 멀티 코어 시스템의 멀티 코어 중 하나의 코어에 대해서 이루어지는 작업 스케줄러의 작업 스케줄링을 예시하였다.
먼저, 작업 스케줄러는 그 코어에 대한 최대 할당 작업 건수(N_max)를 그 코어에 대한 최적 할당 작업 건수(N_optimal)로 설정한 후, 최대 할당 작업 건수(N_max)만큼의 작업을 할당한다(S100).
코어는 작업 스케줄러가 할당한 작업을 수행한다(S110). 모든 작업이 완료되지 않았으면, 모든 작업이 완료될 때까지 계속 작업을 수행한다(S120).
코어에서 모든 작업의 수행이 완료되면, 코어는 네트워크를 통하여 작업 스케줄러에 작업 수행 완료 사실을 알린다. 이 때, 액티브 사이클 개수 및 스톨 사이클 개수를 작업 스케줄러에 함께 알린다. 이와 함께, 작업 스케줄러는 그 코어로부터 전송된 액티브 사이클 개수 및 스톨 사이클 개수에 기초하여, 표 1에서 정의한 바와 같이 사이클비를 계산한다(S130).
만약 코어의 사이클비가 1을 초과하면, 코어에서 스톨 사이클이 차지하는 비율이 높다는 의미이므로, 작업 스케줄러는 코어에 대한 최적 할당 작업 건수(N_optimal)를 "1"만큼 감소시킨다(S140). 반면, 코어의 사이클비가 1을 초과하지 않는다면, 코어에서 스톨 사이클이 차지하는 비율이 높지 않다는 의미이므로, 작업 스케줄러는 코어에 대한 최적 할당 작업 건수를 변경하지 않는다(S140).
코어에서 모든 작업의 수행이 완료되었으므로, 작업 스케줄러는 신규 작업을 할당하여야 한다. 이 때, 작업 스케줄러는 신규 작업 할당 건수(N)가 최적 작업 할당 건수(N_optimal)보다 적은 경우, 최적 작업 할당 건수(N_optimal)를 "1"만큼 증가시키고, 그렇지 않은 경우 최적 작업 할당 건수(N-optimal)를 변경하지 않는다(S160).
이후, 작업 스케줄러는 단계(S160)에서 신규 작업 할당 건수(N)가 최적 작업 할당 건수(N_optimal)보다 적은 경우, 코어에 신규 작업을 할당한다(S170).
단계(S100~S170)는 각각의 코어에 대해서 독립적으로 수행됨으로써, 각 코어마다 그 코어에 대한 최적 작업 할당 건수가 할당될 수 있다. 또한, 최적 작업 할당 건수가 사이클비를 고려하여 작업 스케줄러에 의하여 동적으로 증가 또는 감소되므로, 코어의 성능이 저하되지 않도록 실시간으로 코어에 할당되는 작업의 건수가 변화한다.
한편, 작업 스케줄러는 코어에서 최초로 할당받은 작업을 실행할 때에는, 최적 작업 할당 건수(N-optimal)을 구하기 위하여 소정 시간(T_monitor)동안 모니터링을 할 수 있다. 소정 시간(T_monitor)은 예컨대 각 코어에서 처음 CTA가 종료하는 데에 소요된 사이클이 될 수 있다. 작업 스케줄러는 소정 시간(T_monitor)동안 액티브 사이클 개수와 스톨 사이클 개수를 지속적으로 관찰하여 사이클비(r)를 구한 후 최적 작업 할당 건수(N_optimal)를 구할 수 있다.
도 5는 다른 측면에 따른 멀티 코어 시스템을 예시한 블록도이다.
도 5에서 나타낸 바와 같이, 멀티 코어 시스템(5)은 작업 스케줄러(50), 다수의 코어(51), 다수의 메모리(52) 및 이들을 상호 연결하는 네트워크(53)를 포함하여 이루어진다. 도 5의 멀티 코어 시스템(5)의 각 구성요소의 기능은 도 3의 멀티 코어 시스템(3)의 각 구성요소의 기능에 대응된다.
또한, 각각의 코어(51)는 프론트엔드부(500), 실행부(510), 메모리 액세스부(520), 기록부(530), 액티브 사이클 계수부(540), 스톨 사이클 계수부(550) 및 L1 캐시(560)를 더 포함한다.
프론트엔드부(500)는 할당된 작업의 명령어(instruction)를 메모리(52) 또는 L1 캐시(560)로부터 읽어오며, 이를 실행부(510)로 전달한다.
또한, 프론트엔드부(500)는 명령어 상호 간의 의존성을 확인하여, 사이클(cycle) 내에서 의존성이 해소되지 않은 경우에는 그 사이클에서 명령어의 전달을 보류한다. 시스템의 자원이 부족한 경우에도 명령어의 전달을 보류할 수 있다. 이처럼 프론트엔드부(500)로부터 실행부(510)로 유효한 명령어가 전달되지 못한 상황을 스톨 상황(stall condition)이라고 하며, 스톨 상황이 발생한 사이클을 스톨 사이클(stall cycle)이라 한다.
프론트엔드부(500)가 실행부(510)로 유효한 명령어를 전달한 경우, 액티브 상황(active condition)이라고 하며, 액티브 상황이 발생한 사이클을 액티브 사이클(active cycle)이라 한다.
실행부(510)는 프론트엔드부(500)로부터 입력된 데이터를 명령어의 유형에 따라 처리한다.
메모리 액세스부(520)는 메모리(52)로부터 데이터를 읽어 오거나, 메모리(52)에 데이터를 기록한다.
기록부(530)는 실행부(510)에서 처리를 마친 데이터 또는 메모리 액세스부(520)에 의해 메모리(52)로부터 읽어온 데이터를 코어(51)의 레지스터 파일(도면에 나타내지 않음)에 기록한다.
액티브 사이클 계수부(540)는 프론트엔드부(500)에서 실행부(510)로 명령어를 전달할 때에, 액티브 사이클의 개수를 기록한다. 또한, 스톨 사이클 계수부(550)는 프론트엔드부(500)에서 실행부(510)로 명령어를 전달할 때에 스톨 사이클의 개수를 기록한다.
L1 캐시(560)는 코어(51)에서 처리되는 작업, 명령어 및 데이터 등을 임시 저장한다. L1 캐시(560)는 접근 속도가 빠를 뿐만 아니라, 코어마다 독립적으로 처리될 수 있으므로 시스템의 성능 향상에 기여한다. 그러나, 일반적으로 작은 크기의 캐시 메모리로 인하여, 참조되는 데이터 간의 충돌이 빈번하게 발생하며, 이는 성능 저하를 유발한다. 따라서, L1 캐시(560)를 사용하는 경우에는 코어에 할당된 작업 상호 간의 데이터 로컬리티(data locality)를 고려하여야 한다.
도 6은 L1 캐시를 포함하는 멀티 코어 시스템의 작업 스케줄링 방법을 예시한 흐름도이다.
도 6에서 나타낸 바와 같이, 먼저 특정 코어의 L1 캐시의 라인 사이즈(LS: line size)를 작업의 연속한 입력 데이터의 크기(JS: job size)로 나누었을 때의 몫(quotient)을 비교대상값(t_r)으로 설정한다(S200).
그 코어에서 하나의 작업이 수행되면(S210), 작업 스케줄러는 코어에 할당될 수 있는 작업의 건수(vs)를 비교대상값(t_r)과 비교한다(S220).
만약 코어에 할당될 수 있는 작업의 건수(vs)가 비교대상값(t_r)보다 크지 않으면, 코어는 계속해서 다음 작업을 수행하되, 만약 코어에 할당될 수 있는 작업의 건수(vs)가 비교대상값(t_r)보다 크면, 작업 스케줄러는 그 코어에 신규 작업을 할당한다(S230).
비교대상값(t_r), 즉 코어의 L1 캐시의 라인 사이즈(LS: line size)를 작업의 연속한 입력 데이터의 크기(JS: job size)로 나누었을 때의 몫(quotient)이 할당된 작업 건수(N)인 경우, 연속하거나 인접한 작업들의 입력 데이터는 하나의 캐시 라인을 공유하여 접근할 가능성이 크다. 따라서, L1 캐시를 포함하는 멀티 코어 시스템에서, 작업 스케줄러는 매 작업이 종료할 때마다 신규 작업을 할당하는 것이 아니라, N개의 작업을 동시에 할당할 수 있을 때까지 기다린 후 할당함으로써 캐시 라인의 활용도를 향상시킬 수 있다.
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
나아가 전술한 실시 예들은 본 발명을 예시적으로 설명하기 위한 것으로 본 발명의 권리범위가 특정 실시 예에 한정되지 아니할 것이다.

Claims (8)

  1. 액티브 사이클의 개수를 저장하는 액티브 사이클 계수부 및 스톨 사이클의 개수를 저장하는 스톨 사이클 계수부를 포함하는 적어도 하나의 코어;
    상기 적어도 하나의 코어마다 적어도 하나의 작업을 할당하는 작업 스케줄러;
    상기 코어와 상기 작업 스케줄러의 입출력 데이터를 저장하는 메모리; 및
    상기 적어도 하나의 코어, 상기 작업 스케줄러 및 상기 메모리를 연결하는 네트워크를 포함하는 멀티 코어 시스템.
  2. 제1항에 있어서,
    상기 코어는 프론트엔드부 및 실행부를 더 포함하며,
    상기 프론트엔드부는 명령어가 상기 실행부로 전달될 때에 상기 액티브 사이클 및 상기 스톨 사이클을 상기 액티브 사이클 계수부 및 상기 스톨 사이클 계수부에 각각 저장하는 멀티 코어 시스템.
  3. 제2항에 있어서,
    상기 작업 스케줄러는, 상기 액티브 사이클의 개수에 대한 상기 스톨 사이클의 개수의 비율에 기초하여 상기 적어도 하나의 코어마다 할당할 작업 건수를 결정하는 멀티 코어 시스템.
  4. 제3항에 있어서,
    상기 작업 스케줄러는, 특정 코어의 액티브 사이클의 개수에 대한 스톨 사이클의 개수의 비율이 임계값을 초과한 경우, 상기 특정 코어에 할당하는 작업 건수를 감소시키는 멀티 코어 시스템.
  5. 코어로부터 전송된 액티브 사이클의 개수 및 스톨 사이클의 개수를 기초로 상기 액티브 사이클의 개수에 대한 상기 스톨 사이클의 개수의 비율을 계산하는 단계; 및
    상기 액티브 사이클의 개수에 대한 상기 스톨 사이클의 개수의 비율이 임계값을 초과한 경우, 상기 특정 코어에 할당하는 작업 건수를 감소시키고, 상기 액티브 사이클의 개수에 대한 상기 스톨 사이클의 개수의 비율이 임계값을 초과하지 않은 경우, 상기 특정 코어에 할당하는 작업 건수를 유지하는 단계;를 포함하는 멀티 코어 시스템의 작업 스케줄링 방법.
  6. 제5항에 있어서,
    상기 특정 코어에 현재 할당되어 있는 작업의 건수가 상기 특정 코어의 최적 작업 건수보다 작은 경우, 신규 작업을 상기 특정 코어에 할당함과 함께 상기 최적 작업 건수를 증가시키는 단계;를 더 포함하는 멀티 코어 시스템의 작업 스케줄링 방법.
  7. 제5항에 있어서,
    상기 특정 코어에 현재 할당되어 있는 작업의 건수가 상기 특정 코어의 최적 작업 건수보다 작지 않은 경우, 상기 특정 코어에 신규 작업을 할당하지 않는 단계;를 더 포함하는 멀티 코어 시스템의 작업 스케줄링 방법.
  8. 제5항에 있어서,
    상기 멀티 코어 시스템이 L1 캐시를 갖는 경우, 작업의 연속한 입력 데이터의 크기와 L1 캐시 라인 사이즈를 고려하여 각 코어에 동시 할당되는 작업의 건수를 조절하는 단계;를 더 포함하는 멀티 코어 시스템의 작업 스케줄링 방법.

KR1020130054031A 2013-05-13 2013-05-13 멀티 코어 장치 및 멀티 코어 장치의 작업 스케줄링 방법 KR101553649B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020130054031A KR101553649B1 (ko) 2013-05-13 2013-05-13 멀티 코어 장치 및 멀티 코어 장치의 작업 스케줄링 방법
US14/276,522 US9645855B2 (en) 2013-05-13 2014-05-13 Job scheduling optimization based on ratio of stall to active cycles
US14/606,395 US9274845B2 (en) 2013-05-13 2015-01-27 Job scheduling apparatus and job scheduling method thereof to assign jobs to a core
US14/800,002 US10585709B2 (en) 2013-05-13 2015-07-15 Job scheduling optimization based on ratio of stall to active cycles

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130054031A KR101553649B1 (ko) 2013-05-13 2013-05-13 멀티 코어 장치 및 멀티 코어 장치의 작업 스케줄링 방법

Publications (2)

Publication Number Publication Date
KR20140134190A true KR20140134190A (ko) 2014-11-21
KR101553649B1 KR101553649B1 (ko) 2015-09-16

Family

ID=51865816

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130054031A KR101553649B1 (ko) 2013-05-13 2013-05-13 멀티 코어 장치 및 멀티 코어 장치의 작업 스케줄링 방법

Country Status (2)

Country Link
US (3) US9645855B2 (ko)
KR (1) KR101553649B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160066420A (ko) * 2014-12-02 2016-06-10 한국과학기술정보연구원 자원할당장치 및 그 동작 방법 그리고 이에 적용되는 프로그램
KR102125791B1 (ko) * 2019-01-23 2020-06-23 주식회사 윈스 멀티코어 환경에서 네트워크 세션 관리 방법 및 장치
US11758023B2 (en) 2019-03-22 2023-09-12 Samsung Electronics Co., Ltd. Multicore electronic device and packet processing method thereof

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10198262B2 (en) * 2015-08-05 2019-02-05 Sonicwall Inc. Adaptive core grouping
US10108564B2 (en) * 2016-03-28 2018-10-23 Qualcomm Incorporated Active and stall cycle based dynamic scaling of processor frequency and bus bandwidth
US10387210B2 (en) * 2016-04-04 2019-08-20 International Business Machines Corporation Resource schedule optimization
US10390114B2 (en) 2016-07-22 2019-08-20 Intel Corporation Memory sharing for physical accelerator resources in a data center
KR102670999B1 (ko) * 2016-12-28 2024-05-30 삼성전자주식회사 Dvfs 동작을 수행하는 어플리케이션 프로세서, 이를 포함하는 컴퓨팅 시스템 및 이의 동작 방법
US10529049B2 (en) * 2017-03-27 2020-01-07 Oracle International Corporation Efficient parallel algorithm for integral image computation for many-core CPUs
GB2563587B (en) 2017-06-16 2021-01-06 Imagination Tech Ltd Scheduling tasks
FR3071335B1 (fr) * 2017-09-20 2022-11-25 Bull Sas Procede et systeme pour l'optimisation de l'ordonnancement de traitements par lots
CN108132834B (zh) * 2017-12-08 2020-08-18 西安交通大学 多级共享高速缓冲存储器架构下的任务分配方法和系统
US10853082B1 (en) * 2019-04-30 2020-12-01 Splunk Inc. Pipeline set selection based on duty cycle estimation of pipeline threads
KR20210017054A (ko) * 2019-08-06 2021-02-17 삼성전자주식회사 멀티-코어 시스템 및 그 동작 제어 방법
KR102227644B1 (ko) * 2019-11-11 2021-03-15 한국전자기술연구원 마이크로 데이터센터 환경에서의 학습형 워크로드 측정 방법
US11726823B2 (en) * 2020-02-06 2023-08-15 Samsung Electronics Co., Ltd. Electronic device having heterogeneous processors and method of processing task using the heterogeneous processors
US20210182194A1 (en) * 2020-12-26 2021-06-17 Intel Corporation Processor unit resource exhaustion detection and remediation
CN112650573B (zh) * 2020-12-31 2024-04-12 中国农业银行股份有限公司 一种任务调度方法和装置
CN112988360B (zh) * 2021-05-10 2022-04-01 杭州绿城信息技术有限公司 一种基于大数据分析的任务分发系统

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08153023A (ja) 1994-11-30 1996-06-11 Toshiba Corp 命令実行頻度計測方法、及び同方法を用いたマルチプロセッサシステム
DE69632098T2 (de) * 1995-04-21 2005-03-24 Nippon Telegraph And Telephone Corp. MOSFET Schaltung und ihre Anwendung in einer CMOS Logikschaltung
US6549930B1 (en) * 1997-11-26 2003-04-15 Compaq Computer Corporation Method for scheduling threads in a multithreaded processor
US6938252B2 (en) 2000-12-14 2005-08-30 International Business Machines Corporation Hardware-assisted method for scheduling threads using data cache locality
US8365181B2 (en) * 2004-07-12 2013-01-29 Hewlett-Packard Development Company, L.P. Method and system for guiding scheduling decisions in clusters of computers using dynamic job profiling
US8539491B1 (en) * 2004-07-26 2013-09-17 Oracle America, Inc. Thread scheduling in chip multithreading processors
DE102004059972B4 (de) 2004-12-13 2010-07-01 Infineon Technologies Ag Thread-Scheduling-Verfahren, und Thread-List-Scheduler-Vorrichtung
US20060168571A1 (en) * 2005-01-27 2006-07-27 International Business Machines Corporation System and method for optimized task scheduling in a heterogeneous data processing system
US7386739B2 (en) * 2005-05-03 2008-06-10 International Business Machines Corporation Scheduling processor voltages and frequencies based on performance prediction and power constraints
US8069444B2 (en) * 2006-08-29 2011-11-29 Oracle America, Inc. Method and apparatus for achieving fair cache sharing on multi-threaded chip multiprocessors
US8832702B2 (en) 2007-05-10 2014-09-09 Freescale Semiconductor, Inc. Thread de-emphasis instruction for multithreaded processor
US8185906B2 (en) * 2007-05-23 2012-05-22 Sap Ag Method and apparatus for dynamically adjusting thread pool
US20080307419A1 (en) 2007-06-06 2008-12-11 Microsoft Corporation Lazy kernel thread binding
US8245232B2 (en) * 2007-11-27 2012-08-14 Microsoft Corporation Software-configurable and stall-time fair memory access scheduling mechanism for shared memory systems
US20090138683A1 (en) * 2007-11-28 2009-05-28 Capps Jr Louis B Dynamic instruction execution using distributed transaction priority registers
US8219993B2 (en) * 2008-02-27 2012-07-10 Oracle America, Inc. Frequency scaling of processing unit based on aggregate thread CPI metric
US8429665B2 (en) * 2010-03-19 2013-04-23 Vmware, Inc. Cache performance prediction, partitioning and scheduling based on cache pressure of threads
US9244732B2 (en) * 2009-08-28 2016-01-26 Vmware, Inc. Compensating threads for microarchitectural resource contentions by prioritizing scheduling and execution
US8881157B2 (en) * 2009-09-11 2014-11-04 Empire Technology Development Llc Allocating threads to cores based on threads falling behind thread completion target deadline
US8533719B2 (en) * 2010-04-05 2013-09-10 Oracle International Corporation Cache-aware thread scheduling in multi-threaded systems
US8612984B2 (en) * 2010-04-28 2013-12-17 International Business Machines Corporation Energy-aware job scheduling for cluster environments
US8732711B2 (en) 2010-09-24 2014-05-20 Nvidia Corporation Two-level scheduler for multi-threaded processing
US9268611B2 (en) * 2010-09-25 2016-02-23 Intel Corporation Application scheduling in heterogeneous multiprocessor computing platform based on a ratio of predicted performance of processor cores
KR101177059B1 (ko) 2011-01-17 2012-08-28 전자부품연구원 병렬 제어 모듈을 동적으로 할당하는 방법
US9176759B1 (en) * 2011-03-16 2015-11-03 Google Inc. Monitoring and automatically managing applications
US20120284720A1 (en) * 2011-05-06 2012-11-08 International Business Machines Corporation Hardware assisted scheduling in computer system
KR102110812B1 (ko) * 2013-05-30 2020-05-14 삼성전자 주식회사 멀티 코어 시스템 및 멀티 코어 시스템의 작업 스케줄링 방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160066420A (ko) * 2014-12-02 2016-06-10 한국과학기술정보연구원 자원할당장치 및 그 동작 방법 그리고 이에 적용되는 프로그램
KR102125791B1 (ko) * 2019-01-23 2020-06-23 주식회사 윈스 멀티코어 환경에서 네트워크 세션 관리 방법 및 장치
US11758023B2 (en) 2019-03-22 2023-09-12 Samsung Electronics Co., Ltd. Multicore electronic device and packet processing method thereof

Also Published As

Publication number Publication date
US20150331719A1 (en) 2015-11-19
US20140337849A1 (en) 2014-11-13
US10585709B2 (en) 2020-03-10
US9645855B2 (en) 2017-05-09
KR101553649B1 (ko) 2015-09-16
US9274845B2 (en) 2016-03-01
US20150143383A1 (en) 2015-05-21

Similar Documents

Publication Publication Date Title
KR101553649B1 (ko) 멀티 코어 장치 및 멀티 코어 장치의 작업 스케줄링 방법
US10185592B2 (en) Network storage device using dynamic weights based on resource utilization
KR102110812B1 (ko) 멀티 코어 시스템 및 멀티 코어 시스템의 작업 스케줄링 방법
US20130212594A1 (en) Method of optimizing performance of hierarchical multi-core processor and multi-core processor system for performing the method
KR101651871B1 (ko) 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
KR101834195B1 (ko) 다중코어 시스템 및 로드 밸런싱 방법
US20110161965A1 (en) Job allocation method and apparatus for a multi-core processor
JP2008257572A (ja) 論理区画に動的に資源割り当てを行うストレージシステム及びストレージシステムの論理分割方法
US9471387B2 (en) Scheduling in job execution
JP2009528610A (ja) タスクの実行フェーズに基づいてキャッシュパーティションを動的にリサイズする方法及び装置
US9507633B2 (en) Scheduling method and system
US10860352B2 (en) Host system and method for managing data consumption rate in a virtual data processing environment
CN110018781B (zh) 磁盘流控方法、装置以及电子设备
KR20100074920A (ko) 멀티코어 시스템에서의 로드 밸런싱 장치 및 방법
CN111352735A (zh) 数据加速方法、装置、存储介质及设备
CN112925616A (zh) 任务分配方法、装置、存储介质及电子设备
KR102045125B1 (ko) 분산환경에서의 cda 프로토콜을 활용한 자원할당방법 및 이를 적용한 기록매체 및 분산처리장치
CN113010453A (zh) 一种内存管理的方法、系统、设备及可读存储介质
WO2011078162A1 (ja) スケジューリング装置、スケジューリング方法及びプログラム
CN114816777A (zh) 命令处理装置、方法、电子设备以及计算机可读存储介质
CN116382861A (zh) Numa架构的服务器网络进程自适应调度方法、系统及介质
US20160077882A1 (en) Scheduling system, scheduling method, and recording medium
CN111124691B (zh) 多进程共享的gpu调度方法、系统及电子设备
KR101932523B1 (ko) 가상 머신에 할당된 가상 gpu 메모리의 슬롯을 동적으로 증감시키는 방법 및 이를 구현하는 컴퓨팅 장치
KR20210021262A (ko) 다수의 비동기 소비자들을 위한 방법들 및 장치들

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180831

Year of fee payment: 4