KR101641541B1 - 다중 코어에서 동적으로 부하를 분배하는 장치 및 방법 - Google Patents

다중 코어에서 동적으로 부하를 분배하는 장치 및 방법 Download PDF

Info

Publication number
KR101641541B1
KR101641541B1 KR1020100029403A KR20100029403A KR101641541B1 KR 101641541 B1 KR101641541 B1 KR 101641541B1 KR 1020100029403 A KR1020100029403 A KR 1020100029403A KR 20100029403 A KR20100029403 A KR 20100029403A KR 101641541 B1 KR101641541 B1 KR 101641541B1
Authority
KR
South Korea
Prior art keywords
core
function
load
functions
distributed
Prior art date
Application number
KR1020100029403A
Other languages
English (en)
Other versions
KR20110109608A (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 KR1020100029403A priority Critical patent/KR101641541B1/ko
Priority to US12/923,758 priority patent/US8930436B2/en
Publication of KR20110109608A publication Critical patent/KR20110109608A/ko
Application granted granted Critical
Publication of KR101641541B1 publication Critical patent/KR101641541B1/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3017Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
    • 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/5033Allocation 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 data affinity
    • 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
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/33Director till display
    • G05B2219/33334Load balancing, distribution between processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/10Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
    • G06F2206/1012Load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/15Indexing scheme related to printer interfaces for computers, indexing schema related to group G06F3/12
    • G06F2206/1508Load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor

Abstract

멀티 코어 시스템에서 데이터 병렬 처리를 위한 동적 태스크 관리 시스템 및 방법에 관한 것으로서, 병렬 처리하려는 태스크에 대한 등록 신호를 생성하고, 상기 생성된 등록 신호에 응답하여, 적어도 하나 이상의 태스크를 동적 관리하는 동적 관리 신호를 생성하며, 상기 생성된 동적 관리 신호에 응답하여 적어도 하나 이상의 코어에 상기 적어도 하나 이상의 태스크를 생성/소멸하도록 제어하는 기술적 사상을 개시한다.

Description

다중 코어에서 동적으로 부하를 분배하는 장치 및 방법{APPARATUS AND METHOD OF DYNAMICALLY DISTRIBUTING LOAD IN MULTI-CORE}
본 발명의 실시예들은 다중 코어에서 발생하는 부하를 동적으로 분배하는 장치 및 방법에 관한 것으로서, 응용프로그램을 구성하는 기능들이 어느 코어에서 수행될지를 코어 내부에서 자체적으로 결정하여 전체적인 처리 속도를 향상시킬 수 있다.
한 개의 프로세서를 사용하는 기존 싱글 코어 시스템은 클럭 향상의 한계 및 전력 문제 때문에, 근래에는 여러 개의 프로세서를 사용하는 다중 코어 시스템으로 변화하고 있다.
다중 코어 시스템에서 중요한 과정의 하나는 다중 코어 시스템이 제공하는 성능과 유연성을 활용함과 동시에 다중 코어 프로세서 프로그램의 복잡성을 관리하는 것이다.
다중 코어 시스템의 성능을 충분히 발휘하기 위해, 근래에는 다중 코어용 운영체제, 병렬 처리를 가능하게 해주는 병렬 프로그래밍 모델, 동적 실행 환경 등, 다중 코어를 위한 연구가 활발히 진행되고 있다.
기능적 분할을 이용하여 하나의 응용프로그램 소프트웨어(application software)를 다중 코어 시스템에서 구동시키는 경우에는, 응용프로그램 소프트웨어를 여러 개의 기능(function)으로 분할하고 이들을 각 코어에 할당하는 방법으로 부하 분배가 이루어 질 수 있다.
이 때 각 코어의 부하가 최대한 균등해지도록 기능들을 분할 하지만 기능들 각각의 부하의 크기가 다르고, 코어간 통신 등의 다양한 요소로 인해 분할이 제약을 받는 경우가 발생하기 때문에 각 코어에 할당되는 부하가 균등해 지기는 거의 불가능하다. 또한 실제 구동 시 발생하는 불확실성으로 인해 부하의 불균등은 더 커진다.
본 발명의 일실시예에 따른 동적 부하 분배 장치는 제1 코어, 제2 코어, 응용프로그램에 포함된 적어도 하나 이상의 기능을 상기 제1 코어 및 상기 제2 코어 중에서 적어도 하나의 코어에 분배되도록 처리하는 기능 분배 처리부, 상기 분배된 적어도 하나 이상의 기능에 의해 상기 제1 코어 및 상기 제2 코어 중 적어도 하나의 코어에서 발생하는 부하를 모니터링 하는 부하 감시부, 및 상기 모니터링된 부하에 기초하여, 상기 제1 코어 및 상기 제2 코어 중에서 상기 분배된 적어도 하나 이상의 기능을 처리할 코어를 결정하는 코어 결정부를 포함하는 것을 특징으로 한다.
본 발명의 일실시예에 따른 동적 부하 분배 방법은 제1 코어를 유지하는 단계, 제2 코어를 유지하는 단계, 응용프로그램에 포함된 적어도 하나 이상의 기능을 상기 제1 코어 및 상기 제2 코어 중에서 적어도 하나의 코어에 분배되도록 처리하는 단계, 상기 분배된 적어도 하나 이상의 기능에 의해 상기 제1 코어 및 상기 제2 코어 중 적어도 하나의 코어에서 발생하는 부하를 모니터링 하는 단계, 및 상기 모니터링된 부하에 기초하여, 상기 제1 코어 및 상기 제2 코어 중에서 상기 분배된 적어도 하나 이상의 기능을 처리할 코어를 결정하는 단계를 포함하는 것을 특징으로 한다.
본 발명의 실시예들에 따르면, 코어에 발생하는 기능의 부하를 동적으로 분배함으로써, 코어를 효율적으로 활용할 수 있다.
본 발명의 실시예들에 따르면, 코어를 효율적으로 활용함으로써, 안정된 서비스 품질을 유지하면서 처리 시간을 단축시킬 수 있다.
본 발명의 실시예들에 따르면, 각 코어에서 발생하는 불필요한 대기 시간(idle time)을 현저하게 줄일 수 있다.
도 1은 본 발명의 일실시예에 따른 동적 부하 분배 장치를 설명하기 위한 블록도이다.
도 2는 본 발명의 일실시예에 따른 동적 부하 분배 장치를 구체적으로 설명하는 도면이다.
도 3은 본 발명의 다른 일실시예에 따른 동적 부하 분배 장치를 구체적으로 설명하는 도면이다.
도 4는 본 발명의 일실시예에 따른 동적 부하 분배 방법을 설명하기 위한 블록도이다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 발명을 설명함에 있어서, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고, 본 명세서에서 사용되는 용어(terminology)들은 본 발명의 바람직한 실시예를 적절히 표현하기 위해 사용된 용어들로서, 이는 사용자, 운용자의 의도 또는 본 발명이 속하는 분야의 관례 등에 따라 달라질 수 있다. 따라서, 본 용어들에 대한 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일실시예에 따른 동적 부하 분배 장치(100)를 설명하기 위한 블록도이다.
본 발명의 일실시예에 따른 동적 부하 분배 장치(100)는 제1 코어(110), 제2 코어(120), 기능 분배 처리부(130), 부하 감시부(140), 및 코어 결정부(150)를 포함할 수 있다.
예를 들어, 본 발명의 일실시예에 따른 동적 부하 분배 장치(100)는 전자 기기를 제어하는 중앙 처리 장치로 해석되거나, 상기 중앙 처리 장치의 내부에 위치하는 모듈의 형태로 해석될 수도 있다.
본 발명의 일실시예에 따른 동적 부하 분배 장치(100)는 응용프로그램에 포함된 기능들 중에서 일부의 기능을 하나의 코어가 아니라 인접한 코어에서도 수행이 가능하도록 변경할 수 있다.
본 발명의 일실시예에 따른 동적 부하 분배 장치(100)는 각각의 코어 상태를 알 수 있는 상태 레지스터(status register)의 정보를 이용해서 해당 기능을 현재의 코어에서 수행할지 또는 인접한 코어에서 수행할지 동적으로 결정할 수 있다.
즉 단위 데이터 유닛(data unit)을 처리 할 때마다, 상태 레지스터(status register) 등을 통해 인접 코어의 상태를 파악하여, 일부 기능을 인접한 코어들 중에서 어느 코어에서 처리 할지를 동적으로 결정할 수 있다. 이로써, 동적인 부하 분배를 달성하여 부하 불균등 문제가 해결될 수 있다.
실제로, 이러한 구성을 이용하여 듀얼 코어 시스템(Dual core system)에서 H264 비디오 디코더(video decoder)에 적용하여 부하 불균등으로 인해 발생한 대기 시간(waiting time)을 약 80% 줄일 수 있다.
구체적으로 설명하면, 제1 코어(110) 및 제2 코어(120)는 데이터의 처리를 위한 수단으로서, 도 1에서는 설명의 편의를 위해서 두 개의 코어만을 이용하여 동적 부하 분배 장치(100)를 설명한다.
동적 부하 분배 장치(100)는 응용프로그램들을 처리하는 기능을 수행하는데, 상기 응용프로그램을 구성하는 복수의 기능들은 제1 코어(110) 및 제2 코어(120) 중에서 적어도 하나의 코어에서 처리될 수 있다.
기능 분배 처리부(130)는 상기 복수의 기능들을 어느 코어에 분배할지 판단하고, 각각의 기능들의 분배를 처리할 수 있다.
구체적으로, 기능 분배 처리부(130)는 상기 응용프로그램에 포함된 적어도 하나 이상의 기능을 제1 코어(110) 및 제2 코어(120) 중에서 적어도 하나의 코어에 분배되도록 처리할 수 있다.
예를 들어, 기능 분배 처리부(130)는 상기 응용프로그램에 포함된 적어도 하나 이상의 기능 중에서 일부의 제1 기능 세트를 제1 코어(110)에 분배하고, 다른 일부의 제2 기능 세트를 제2 코어(120)에 분배할 수 있다.
또 다른 예로, 기능 분배 처리부(130)는 상기 응용프로그램에 포함된 적어도 하나 이상의 기능 중에서 일부의 제1 기능 세트를 제1 코어(110) 및 제2 코어(120) 중에서 어느 하나의 코어에만 할당할 수 있다.
또한, 기능 분배 처리부(130)는 제1 코어(110) 및 제2 코어(120) 중에서 어느 하나의 코어에 할당되지 않은 나머지 제2 기능 세트에 대해서 제1 코어(110) 및 제2 코어(120) 모두에 분배할 수 있다.
상기 기능 세트라 함은, 적어도 하나 이상의 기능을 포함하는 집합의 의미로 해석될 수 있다.
즉, 기능 분배 처리부(130)는 선별된 기능들을 선택하여, 복수의 코어들 각각에 동일하게 할당할 수 있다.
기능 분배 처리부(130)는 기능들을 선별하기 위한 기준으로써, 응용프로그램의 제작시 각 기능들의 중요도, 부하, 해당 기능이 처리하는 데이터의 종류 등을 이용할 수 있다.
기능 분배 처리부(130)가 제1 코어(110) 및 제2 코어(120)에 동일하게 분배한 두 개의 기능들 중에서, 어느 하나의 코어만이 활성화되고, 나머지 코어는 비활성화될 수 있다.
즉, 기능 분배 처리부(130)에 의해서 동일한 기능이 서로 다른 코어들에 할당되었음에도 불구하고, 하나의 코어에서만 해당 기능이 동작하고, 나머지 코어에 할당된 코어는 동작하지 않는다.
본 발명의 일실시예에 따른, 기능 분배 처리부(130)는 상기 분배된 적어도 하나 이상의 기능의 자체 부하 및 처리할 데이터의 독립성 중에서 적어도 어느 하나에 기초하여 상기 제1 기능 세트 및 상기 제2 기능 세트 중에서 적어도 어느 하나를 결정할 수 있다.
부하 감시부(140)는 각각의 코어에 발생하는 부하를 모니터링 할 수 있다.
구체적으로, 부하 감시부(140)는 상기 분배된 적어도 하나 이상의 기능에 의해 제1 코어(110) 및 제2 코어(120) 중 적어도 하나의 코어에서 발생하는 부하를 모니터링 할 수 있다.
일례로, 부하 감시부(140)는 제1 코어 및 상기 제2 코어 간에 발생하는 데이터 흐름에 확인하여 상기 발생하는 부하를 모니터링 할 수 있다.
구체적으로, 부하 감시부(140)는 동일한 기능이 동시에 할당되고, 서로 인접한 제1 코어(110) 및 제2 코어(120)를 모니터링 할 수 있다.
본 발명의 일실시예에 따른 부하 감시부(140)는 제1 코어(110)와 제2 코어(120) 사이에서 데이터의 통신을 지원하는 버퍼를 모니터링 할 수 있다.
즉, 본 발명의 일실시예에 따른 부하 감시부(140)는 제1 코어(110) 및 제2 코어(120) 간에 위치하는 버퍼를 확인하여 상기 데이터 흐름을 확인할 수 있다.
상기 버퍼는 제1 코어(110)와 제2 코어(120) 간에 이동하는 데이터의 흐름을 임시로 보관하는 기능을 수행할 수 있다.
이때, 부하 감시부(140)는 제1 코어(110)에서 제2 코어(120)로 이동하는 데이터의 흐름만이 모니터링 되는 경우, 제2 코어(120)에서 해당 기능이 유휴 상태에 있다고 판단할 수 있다.
코어 결정부(150)는 부하 감시부(140)의 모니터링 결과, 제1 코어(110) 및 제2 코어(120)에 모두 분배된 기능에 대해서, 처리할 코어를 결정할 수 있다.
구체적으로, 부하 감시부(140)는 제1 코어(110) 및 제2 코어(120) 간에 발생하는 데이터 흐름에 확인하여 상기 발생하는 부하를 모니터링 하고, 코어 결정부(150)는 상기 확인된 데이터 흐름에 기초하여, 상기 제2 기능 세트를 제1 코어(110)에서 처리할지 또는 제2 코어(120)에서 처리할지를 결정할 수 있다.
이에, 코어 결정부(150)는 제1 코어(110) 및 제2 코어(120) 중 상기 결정된 코어에서 해당 기능 세트를 활성화 상태로 변경하고, 나머지 코어에서 상기 해당 기능 세트를 비활성화 상태로 변경할 수 있다.
예를 들어, 제1 코어(110) 및 제2 코어(120) 중에서, 제1 코어(110)에 부하가 높은 경우, 제1 코어(110) 및 제2 코어(120)에 모두 분배된 기능 중에서 제2 코어(120)에 분배된 기능을 활성화할 수 있다.
활성화된 기능은 데이터의 처리를 진행하며, 선정된 데이터에 선정된 처리를 진행할 수 있다.
이와는 달리, 부하가 높은 제1 코어(110)의 경우, 제2 코어(120)에서 상기 활성화된 기능과 동일한 기능에 대해 비활성화 상태를 유지할 수 있다.
따라서, 기능적 분할에 있어서, 응용프로그램의 일부 기능이 최초 제1 코어(110) 및 제2 코어(120)에 동일하게 분배되었다고 하더라도, 코어 결정부(150)는 각 코어에서 발생하는 부하를 고려하여, 어느 하나의 코어에서만 실행되도록 제어할 수 있다.
본 발명의 일실시예에 따르면, 기능적 분할의 부하 불균등을 해결할 수 있고, 각각의 코어에 할당된 기능들이 실제로 구동되는 상황에서 각각의 코어에 부하가 불균등하게 배분되어서 성능이 저하되는 문제를 예방할 수 있다.
도 2는 본 발명의 일실시예에 따른 동적 부하 분배 장치(200)를 설명하는 도면이다.
이하, 도 2 및 도 3에서는 부하 감시부의 구체적인 예로써, 버퍼 및 버퍼 레벨 레지스터(buffer level register)를 통해서 본 발명을 설명한다. 또한, 코어 결정부와 기능 분배 처리부는 소프트웨어의 형태로 동작하는 것으로 설명하며, 도면상의 표시를 생략하였다.
도 2에서 보는 바와 같이, 응용프로그램의 기능들은 기능 분배 처리부에 의해 제1 코어(210)와 제2 코어(220)에 분배될 수 있다.
도 2를 참조하면, 본 발명의 일실시예에 따른 동적 부하 분배 장치(200)는 상기 응용프로그램을 구성하는 기능 A~D 중에서, 기능 A, 기능 B, 및 기능 C를 제1 코어(210)에 분배할 수 있다.
또한, 본 발명의 일실시예에 따른 동적 부하 분배 장치(200)는 기능 E, 기능 F, 및 기능 G를 제2 코어(220)에 분배할 수 있다.
이와 더불어, 본 발명의 일실시예에 따른 동적 부하 분배 장치(200)는 기능 D를 제1 코어(210)와 제2 코어(220) 모두에 동일하게 분배할 수 있다.
제1 코어(210)와 제2 코어(220)는 데이터의 처리를 위해, 각 기능들을 수행하고, 수행 과정에서 데이터를 교환할 수 있다. 이러한 데이터의 교환은 버퍼(240)를 통해서 수행되고, 버퍼 레벨 레지스터(230)는 상기 버퍼(240)를 모니터링하여 제1 코어(210)와 제2 코어(220)의 부하를 감시할 수 있다.
만약, 제1 코어(210)에서 부하가 높게 감시되고 제2 코어(220)의 부하가 낮게 감시된다면, 본 발명의 일실시예에 따른 동적 부하 분배 장치(200)는 제1 코어(210)와 제2 코어(220) 모두에 분배된 기능 D를 통해 전체적인 부하를 동적으로 분배할 수 있다.
즉, 부하가 높게 감시되는 제1 코어(210)의 기능 D를 비활성화 상태로 변경하고, 해당 데이터를 비교적 부하가 낮게 감시되는 제2 코어(220)를 통해 처리할 수 있다. 이때, 데이터에 대해 동일한 기능을 처리하는 기능 D가 이미 제2 코어(220)에 분배되었기 때문에, 본 발명의 일실시예에 따른 동적 부하 분배 장치(200)는 제2 코어(220)에 분배된 기능 D를 활성화하여 상기 데이터의 처리에 이용할 수 있다.
도 3은 본 발명의 다른 일실시예에 따른 동적 부하 분배 장치가 적용된 다중 코어 장치를 설명하는 도면이다.
도 2에서는 두 개의 코어만을 포함하는 구성을 설명하였으나, 본 발명의 다른 일실시예에 따른 동적 부하 분배 장치는 두 개 이상의 코어를 갖는 CPU에서도 효율적으로 부하를 분배할 수 있다.
구체적으로, 본 발명의 다른 일실시예에 따른 동적 부하 분배 장치는 제1 코어(310), 제2 코어(320), 및 제3 코어(330)에 응용프로그램을 구성하는 기능들을 분배할 수 있다.
응용프로그램은 기능 A~J를 포함할 수 있다.
본 발명의 다른 일실시예에 따른 동적 부하 분배 장치는 기능 A, 기능 B, 기능 C, 및 기능 D를 제1 코어(310)에 할당하고, 기능 E, 기능 F, 기능 G, 및 기능 D를 제2 코어(320)에 할당하며, 기능 E, 기능 H, 기능 I, 및 기능 J를 제3 코어(330)에 할당할 수 있다.
이때, 기능 A~D, 기능 E~G, 및 기능 H~J는 어느 하나의 코어에만 분배되고, 기능 D 및 기능 E는 인접한 두 개의 코어에 동일하게 분배될 수 있다.
즉, 인접한 제1 코어(310)와 제2 코어(320)는 기능 D를 공통으로 갖고 있고, 인접한 제2 코어(320)와 제3 코어(330)는 기능 E를 공통으로 갖고 있다.
제1 코어(310)와 제2 코어(320) 사이에는 버퍼(350)가 위치하며, 버퍼(350)를 통해서 제1 코어(310)와 제2 코어(320) 간의 데이터 통신이 수행될 수 있다. 상술한 바와 같이, 버퍼 레벨 레지스터(340)는 버퍼(350)를 모니터링하여 제1 코어(310)와 제2 코어(320)에 발생하는 부하를 감시할 수 있다.
마찬가지로, 제2 코어(320)와 제3 코어(330) 사이에는 버퍼(370)가 위치하며, 버퍼(370)를 통해서 제2 코어(320)와 제3 코어(330) 간의 데이터 통신이 수행될 수 있다. 버퍼 레벨 레지스터(360)는 버퍼(370)를 모니터링하여 제2 코어(320)와 제3 코어(330)에 발생하는 부하를 감시할 수 있다.
본 발명의 다른 일실시예에 따른 동적 부하 분배 장치는 감시되는 부하에 기초하여, 기능 D 및 기능 E에 대해서 어느 코어에서 활성화 할지를 결정할 수 있다.
결국, 본 발명의 실시예들에 따르면, 코어에 발생하는 기능의 부하를 동적으로 분배함으로써, 코어를 효율적으로 활용할 수 있을 뿐만 아니라, 코어를 효율적으로 활용함으로써, 안정된 서비스 품질을 유지하면서 처리 시간을 단축시킬 수 있다.
또한, 본 발명의 실시예들에 따르면, 각 코어에서 발생하는 불필요한 대기 시간(waiting time)을 현저하게 줄일 수 있다.
본 발명의 실시예들에 따르면, 이중 코어뿐만 아니라 코어의 개수에 관계없이 동일한 방법을 적용할 수 있다는 장점이 있어 임의의 코어 개수를 가지는 다중 코어 시스템에 용이하게 적용할 수 있다.
도 4는 본 발명의 일실시예에 따른 동적 부하 분배 방법을 설명하기 위한 블록도이다.
본 발명의 일실시예에 따른 동적 부하 분배 방법은 제1 코어를 유지하고(단계 402), 제2 코어를 유지할 수 있다(단계 402).
본 발명의 일실시예에 따른 동적 부하 분배 방법은 응용프로그램에 포함된 적어도 하나 이상의 기능을 상기 제1 코어 및 상기 제2 코어 중에서 적어도 하나의 코어에 분배되도록 처리할 수 있다.
예를 들어, 본 발명의 일실시예에 따른 동적 부하 분배 방법은 상기 응용프로그램에 포함된 제1 기능(function) 세트를 상기 제1 코어 및 상기 제2 코어 중에서 하나의 코어에만 분배되도록 처리할 수 있다.
이와 더불어, 본 발명의 일실시예에 따른 동적 부하 분배 방법은 상기 응용프로그램에 포함된 제2 기능 세트를 상기 제1 코어 및 상기 제2 코어에 모두 분배되도록 처리할 수 있다.
상기 제1 코어와 상기 제2 코어 모두에 분배된 제2 기능 세트는 어느 하나의 코어에서만 활성화 상태를 유지하고, 나머지 하나의 코어에서는 비활성화 상태를 유지할 수 있다.
본 발명의 일실시예에 따른 동적 부하 분배 방법은 상기 분배된 적어도 하나 이상의 기능에 의해 제1 코어 및 제2 코어 중 적어도 하나의 코어에서 발생하는 부하를 모니터링 할 수 있다(단계 403).
또한, 본 발명의 일실시예에 따른 동적 부하 분배 방법은 상기 모니터링된 부하에 기초하여, 상기 제1 코어 및 상기 제2 코어 중에서 상기 분배된 적어도 하나 이상의 기능을 처리할 코어를 결정할 수 있다(단계 404).
구체적으로, 본 발명의 일실시예에 따른 동적 부하 분배 방법은 상기 모니터링된 부하에 기초하여, 상기 제2 기능 세트를 제1 코어에서 활성화할지 또는 제2 코어에서 활성화할지를 결정할 수 있다.
결국, 본 발명의 일실시예에 따른 동적 부하 분배 방법은 코어의 부하를 동적으로 분배하여, 코어의 대기 시간을 현저하게 줄일 수 있다.
본 발명의 일실시예에 따른 동적 부하 분배 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 동적 부하 분배 장치 110: 제1 코어
120: 제2 코어 130: 기능 분배 처리부
140: 부하 감시부 150: 코어 결정부

Claims (14)

  1. 응용프로그램에 포함된 적어도 하나의 기능(function)을 제1 코어 및 제2 코어 중에서 적어도 하나의 코어에 분배되도록 처리하는 기능 분배 처리부;
    상기 제1 코어 및 상기 제2 코어 중 적어도 하나의 코어에서 발생하는 현재 부하를 모니터링 하는 부하 감시부;
    상기 모니터링 된 현재 부하에 기초하여, 상기 제1 코어 및 상기 제2 코어 중에서 상기 분배된 적어도 하나의 기능을 처리할 코어를 결정하는 코어 결정부;
    상기 부하 감시부는,
    버퍼 레벨 레지스터를 사용하여 상기 제1 코어와 상기 제2 코어 간에 위치하는 버퍼를 확인하여 현재 데이터 흐름을 모니터링함으로써, 상기 모니터링된 현재 부하를 결정하는 것을 특징으로 하는
    동적 부하 분배 장치.
  2. 제1항에 있어서,
    상기 기능 분배 처리부는,
    상기 응용프로그램에 포함된 제1 기능 세트 및 제2 기능 세트 중에서 적어도 하나를 처리하여 상기 제1 기능 세트를 적어도 하나의 상기 제1 코어에 분배하고, 상기 제2 기능 세트를 적어도 하나의 상기 제2 코어에 분배하고, 및
    상기 기능 분배 처리부는,
    상기 응용프로그램에 포함된 제3 기능 세트를 처리하여 상기 제3 기능 세트를 상기 제1 코어와 상기 제2 코어 모두에게 분배하는 것을 특징으로 하는
    동적 부하 분배 장치.
  3. 제2항에 있어서,
    상기 기능 분배 처리부는,
    상기 분배된 적어도 하나의 기능의 자체 부하 및 처리할 데이터의 독립성 중에서 적어도 어느 하나에 기초하여 상기 제1 기능 세트 및 상기 제2 기능 세트 중에서 적어도 어느 하나를 결정하는 것을 특징으로 하는 동적 부하 분배 장치.
  4. 삭제
  5. 삭제
  6. 제2항에 있어서,
    상기 코어 결정부는,
    상기 제1 코어와 상기 제2 코어 간 데이터 흐름에 기초하여, 상기 제3 기능 세트를 상기 제1 코어에서 처리할지 또는 상기 제2 코어에서 처리할지를 결정하는 것을 특징으로 하는 동적 부하 분배 장치.
  7. 제6항에 있어서,
    상기 코어 결정부는,
    상기 제1 코어 및 상기 제2 코어 중 상기 결정된 코어에서 제3 기능 세트를 활성화 상태로 변경하고, 나머지 코어에서 상기 제3 기능 세트를 비활성화 상태로 변경하는 것을 특징으로 하는 동적 부하 분배 장치.
  8. 기능 분배 처리부가 응용프로그램에 포함된 적어도 하나의 기능을 제1 코어 및 제2 코어 중에서 적어도 하나의 코어에 분배되도록 처리하는 단계;
    부하 감시부가 상기 제1 코어 및 상기 제2 코어의 현재 부하를 모니터링 하는 단계;
    코어 결정부는 상기 모니터링 된 현재 부하에 기초하여, 상기 제1 코어 및 상기 제2 코어 중에서 상기 분배된 적어도 하나의 기능을 처리할 코어를 결정하는 단계;
    상기 모니터링 하는 단계는,
    상기 부하 감시부가 버퍼 레벨 레지스터를 사용하여 상기 제1 코어와 상기 제2 코어 간에 위치하는 버퍼를 확인하여 현재 데이터 흐름을 모니터링함으로써, 상기 모니터링된 현재 부하를 결정하는 단계를 포함하는 것을 특징으로 하는
    동적 부하 분배 방법.
  9. 제8항에 있어서,
    상기 분배되도록 처리하는 단계는,
    응용프로그램에 포함되어 있는 제1 코어와 제2코어를, 적어도 하나의 제1 기능 세트를 적어도 하나의 제1 코어로 분배하고, 제2 기능 세트를 적어도 하나의 제2 코어로 분배하는 단계; 및
    상기 응용프로그램에 포함된 제3 기능 세트를 상기 제1 코어와 상기 제2 코어로 분배하는 단계를 포함하는 것을 특징으로 하는
    동적 부하 분배 방법.
  10. 제2항에 있어서,
    상기 버퍼는,
    상기 제1 코어와 상기 제2 코어 사이에 위치해 있고, 상기 제1 코어와 상기 제2 코어의 상기 현재 데이터 흐름에 대한 데이터를 저장하는 것을 특징으로 하는
    동적 부하 분배 장치.
  11. 제10항에 있어서,
    상기 기능 분배 처리부는,
    데이터가 상기 제1 코어에서 상기 제2 코어로 흐르고 있으면 상기 제2 코어로부터 상기 제1 코어로는 아무 데이터도 흐르지 않도록 결정하는 상기 부하 감시부에 기초해 상기 제3 기능 세트가 상기 제2 코어에 의해 처리되게 결정하도록 세팅되어 있고,
    상기 기능 분배 처리부는,
    데이터가 상기 제2 코어에서 상기 제1 코어로 흐르고 있으면 상기 제1 코어로부터 상기 제2 코어로는 아무 데이터도 흐르지 않음을 결정하는 상기 부하 감시부에 기초해 상기 제3 기능 세트가 상기 제1 코어로부터 처리되게 결정하도록 세팅되어 있는 것을 특징으로 하는
    동적 부하 분배 장치.
  12. 제6항에 있어서,
    상기 부하 감시부는 상기 제1 코어에 분배된 제1 기능 세트의 제1 기능과 상기 제2 코어에 분배된 제2 기능 세트의 제2 기능 간의 데이터 교환을 모니터링 함으로써 상기 제1 코어와 상기 제2 코어 간 상기 현재 데이터 흐름을 모니터링 하는 것을 특징으로 하는
    동적 부하 분배 장치.
  13. 삭제
  14. 삭제
KR1020100029403A 2010-03-31 2010-03-31 다중 코어에서 동적으로 부하를 분배하는 장치 및 방법 KR101641541B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100029403A KR101641541B1 (ko) 2010-03-31 2010-03-31 다중 코어에서 동적으로 부하를 분배하는 장치 및 방법
US12/923,758 US8930436B2 (en) 2010-03-31 2010-10-06 Apparatus and method of dynamically distributing load in multiple cores

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100029403A KR101641541B1 (ko) 2010-03-31 2010-03-31 다중 코어에서 동적으로 부하를 분배하는 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20110109608A KR20110109608A (ko) 2011-10-06
KR101641541B1 true KR101641541B1 (ko) 2016-07-22

Family

ID=44720238

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100029403A KR101641541B1 (ko) 2010-03-31 2010-03-31 다중 코어에서 동적으로 부하를 분배하는 장치 및 방법

Country Status (2)

Country Link
US (1) US8930436B2 (ko)
KR (1) KR101641541B1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102280170B1 (ko) 2013-10-04 2021-07-21 삼성전자주식회사 프레임의 특성에 따라 부하를 분배하는 방법 및 장치
KR102304387B1 (ko) * 2015-01-13 2021-09-23 현대모비스 주식회사 오토사 기반의 전자제어유닛 멀티코어 아키텍처 및 이를 포함하는 차량
KR102352756B1 (ko) 2015-04-29 2022-01-17 삼성전자주식회사 애플리케이션 프로세서, 시스템 온 칩, 및 이를 포함하는 컴퓨팅 장치
US10402072B2 (en) * 2015-05-04 2019-09-03 Graphisoft Se Predictive background updating
CN109714269B (zh) * 2018-12-19 2022-05-17 迈普通信技术股份有限公司 一种数据处理方法及网络设备
KR102468452B1 (ko) * 2022-01-24 2022-11-21 (주)레오테크코리아 고객 맞춤형 광고 승인 플랫폼 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050041031A1 (en) * 2003-08-18 2005-02-24 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
JP2005316854A (ja) 2004-04-30 2005-11-10 Fujitsu Ltd 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ
JP2008191949A (ja) 2007-02-05 2008-08-21 Nec Corp マルチコアシステムおよびマルチコアシステムの負荷分散方法
US7634637B1 (en) * 2005-12-16 2009-12-15 Nvidia Corporation Execution of parallel groups of threads with per-instruction serialization

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101286700B1 (ko) 2006-11-06 2013-07-16 삼성전자주식회사 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치및 방법
KR101392349B1 (ko) 2007-08-23 2014-05-19 삼성전자주식회사 비디오 디코딩 방법 및 장치
JP5182792B2 (ja) 2007-10-07 2013-04-17 アルパイン株式会社 マルチコアプロセッサ制御方法及び装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050041031A1 (en) * 2003-08-18 2005-02-24 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
JP2005316854A (ja) 2004-04-30 2005-11-10 Fujitsu Ltd 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ
US7634637B1 (en) * 2005-12-16 2009-12-15 Nvidia Corporation Execution of parallel groups of threads with per-instruction serialization
JP2008191949A (ja) 2007-02-05 2008-08-21 Nec Corp マルチコアシステムおよびマルチコアシステムの負荷分散方法

Also Published As

Publication number Publication date
US20110247006A1 (en) 2011-10-06
US8930436B2 (en) 2015-01-06
KR20110109608A (ko) 2011-10-06

Similar Documents

Publication Publication Date Title
CN109117260B (zh) 一种任务调度方法、装置、设备和介质
US9027028B2 (en) Controlling the use of computing resources in a database as a service
KR101641541B1 (ko) 다중 코어에서 동적으로 부하를 분배하는 장치 및 방법
US9183019B2 (en) Certification for flexible resource demand applications
US8930633B2 (en) Reducing read latency using a pool of processing cores
US8495627B2 (en) Resource allocation based on anticipated resource underutilization in a logically partitioned multi-processor environment
JP5245722B2 (ja) スケジューラ、プロセッサシステム、プログラム生成装置およびプログラム生成用プログラム
US8935698B2 (en) Management of migrating threads within a computing environment to transform multiple threading mode processors to single thread mode processors
US9389921B2 (en) System and method for flexible device driver resource allocation
US8810584B2 (en) Smart power management in graphics processing unit (GPU) based cluster computing during predictably occurring idle time
CN106557369A (zh) 一种多线程的管理方法及系统
US9256470B1 (en) Job assignment in a multi-core processor
KR20110075295A (ko) 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
KR20170139872A (ko) 멀티 테넌트 기반의 서비스 제공 시스템 및 방법
US10210338B2 (en) Reducing decryption latency for encryption processing
US20070150894A1 (en) System for determining and reporting benefits of borrowed computing resources in a partitioned environment
KR101553650B1 (ko) 멀티코어 시스템에서의 로드 밸런싱 장치 및 방법
US20090178049A1 (en) Multi-Element Processor Resource Sharing Among Logical Partitions
JP6679146B2 (ja) 電力管理のための論理的にパーティション化された環境のイベント駆動型再最適化
US20150033226A1 (en) Host system and method for managing data consumption rate in a virtual data processing environment
KR20180045347A (ko) 가상화 환경에서의 자원 관리 방법 및 이를 지원하는 장치
KR102052964B1 (ko) 컴퓨팅 스케줄링 방법 및 시스템
US20110154357A1 (en) Storage Management In A Data Processing System
US8977752B2 (en) Event-based dynamic resource provisioning
JP2008217575A (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
FPAY Annual fee payment

Payment date: 20190627

Year of fee payment: 4