KR101834195B1 - 다중코어 시스템 및 로드 밸런싱 방법 - Google Patents

다중코어 시스템 및 로드 밸런싱 방법 Download PDF

Info

Publication number
KR101834195B1
KR101834195B1 KR1020120026757A KR20120026757A KR101834195B1 KR 101834195 B1 KR101834195 B1 KR 101834195B1 KR 1020120026757 A KR1020120026757 A KR 1020120026757A KR 20120026757 A KR20120026757 A KR 20120026757A KR 101834195 B1 KR101834195 B1 KR 101834195B1
Authority
KR
South Korea
Prior art keywords
core
cores
load
cache
run
Prior art date
Application number
KR1020120026757A
Other languages
English (en)
Other versions
KR20130104853A (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 KR1020120026757A priority Critical patent/KR101834195B1/ko
Priority to US13/709,608 priority patent/US9342365B2/en
Publication of KR20130104853A publication Critical patent/KR20130104853A/ko
Application granted granted Critical
Publication of KR101834195B1 publication Critical patent/KR101834195B1/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]
    • 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/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Hardware Redundancy (AREA)

Abstract

다중코어 시스템의 로드 밸런싱 방법은 적어도 3개 이상의 코어들 각각의 로드들을 동시에 비교하여 최대 로드와 최소 로드를 검출하고, 최대 로드를 가진 코어를 소스코어로 결정하고, 최소 로드를 가진 코어를 타켓코어로 결정하여 소스코어로부터 타켓코어로 로드를 이동시킨다. 따라서 다수의 코어들의 로드를 동시에 비교함으로써 멀티코어의 수가 3개 이상으로 증가하더라도 로드 밸런싱 처리에 소요되는 시간과 전력소모를 최소화 한다.

Description

다중코어 시스템 및 로드 밸런싱 방법 {System and Method for Balancing Load on Multi-core Architecture}
본 발명은 다중코어 시스템 및 로드 밸런싱 방법에 관한 것으로 로드 밸런싱을 위하여 코어들 간의 작업들을 비지 코어에서 아이들 코어로 이동시키는 시스템 및 방법에 관한 것이다.
현재의 다중코어 아키텍쳐(processor architecture)의 발전 방향은 하나의 칩(chip)에 다수의 코어들을 탑재함으로써, 동시에 다수의 작업을 실행한다.
탑재된 다수의 코어들은 균등하게 작업들을 분배하여 실행하는 것이 아니라 다른 코어에 비해 특정 코어에 더 많은 작업이 할당되어 실행하는 로드 불균형(load imbalance)이 발생한다.
따라서 이러한 문제점을 해결하기 위해 로드가 많은 코어에서 상대적으로 로드가 적은 다른 코어로 작업을 이동시켜 각 코어에 할당되는 작업들의 균형을 맞추는 로드 밸런싱이 필요하다.
다중 코어 시스템에서 코어들 사이의 로드를 균형 있게 유지하거나 필요에 따라 로드를 이동(migration)하는 기법은 운영체제의 스케줄러(scheduler)에서 제공하고 있다.
다중코어 시스템이 듀얼코어 시스템을 기본으로 발전되었기 때문에 종래에는 기본적으로 듀얼 코어 시스템에서 사용한 코어 쌍 비교방식으로 로드를 조절한다.
그러므로 쿼드코어 시스템에서는 코어 쌍 비교방식을 채택할 경우 로드 조절에 소모되는 시간과 전력소모가 듀얼코어 시스템 보다 증가하게 된다.
그러므로 사용되는 코어의 수가 두 개 이상으로 늘어남에 따라 시스템의 성능 및 소모 전력 면에서 효율적인 운용이 점점 더 중요해지고 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은 적어도 3개 이상의 다중 코어시스템에서 로드 밸런싱 (load balancing)에 소모되는 시간과 전력소모를 줄일 수 있는 시스템 및 방법을 제공하는 데 있다.
본 발명의 다른 목적은 소프트웨어적으로 다중 코어들의 로드를 동시에 비교를 할 수 있는 시스템 및 방법을 제공하는 데 있다.
본 발명의 또 다른 목적은 하드웨어적으로 다중코어의 로드를 동시에 비교를 할 수 있는 시스템 및 방법을 제공하는 데 있다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 실시예들에 따른 다중코어 시스템의 로드 밸런싱 방법은 적어도 3개 이상의 코어들 각각의 로드들을 동시에 비교하여 최대로드와 최소 로드를 검출하고, 최대 로드를 가진 코어를 소스코어로 결정하고, 최소 로드를 가진 코어를 타켓코어로 결정하여 소스 코어로부터 타켓코어로 로드를 이동시키는 것을 특징으로 한다.
본 발명에서 로드들을 동시에 비교하는 단계는 적어도 3개 이상의 코어들 각각의 런큐로부터 생성된 로드 웨이트, 각각의 프로그램 카운터의 단위 시간동안 업데이트 횟수 또는 캐시 리퀘스트 횟수를 동시에 비교하여 원 타임에 최대 로드 코어와 최소 로드 코어를 검출한다.
이와 같은 검출 결과에 응답하여 최대 로드 코어를 소스코어로 결정하고 최소 로드 코어를 타켓코어로 결정하여 소스코어의 런큐로부터 타켓코어의 런큐로 로드를 이동하는 것이다.
본 발명의 다중코어 시스템은 적어도 3개 이상의 코어들과, 적어도 3개 이상의 코어들 각각의 로드를 동시에 비교하여 최대로드와 최소 로드를 검출하는 로드비교수단과, 로드비교수단으로부터 검출된 최대 로드를 가진 코어를 소스 코어로 결정하고 최소 로드를 가진 코어를 타켓 코어로 결정하여 상기 소스 코어로부터 상기 타켓 코어로 로드를 이동시키는 로드이동수단을 포함한다.
본 발명의 시스템에서 일실시예의 로드비교수단은 적어도 3개 이상의 코어들 각각의 런큐로부터 생성된 로드 웨이트들을 동시에 비교하여 최대값을 검출하는 최대 로드 검출수단과, 적어도 3개 이상의 코어들 각각의 런큐로부터 생성된 로드 웨이트들을 동시에 비교하여 최소값을 검출하는 최소 로드 검출수단을 포함한다.
또한 다른 실시예로의 로드비교수단은 적어도 3개 이상의 코어들 각각의 프로그램 카운터의 단위 시간당 업데이트 횟수를 동시에 비교하여 최대값을 검출하는 최대 로드 검출수단과, 적어도 3개 이상의 코어들 각각의 프로그램 카운터의 단위 시간당 업데이트 횟수를 동시에 비교하여 최소값을 검출하는 최소 로드 검출수단을 포함한다.
또한 또 다른 실시예의 로드비교수단은 적어도 3개 이상의 코어들 각각의 캐시를 리퀘스트하는 횟수를 동시에 비교하여 최대값을 검출하는 최대 로드 검출수단과, 적어도 3개 이상의 코어들 각각의 캐시를 리퀘스트하는 횟수를 동시에 비교하여 최소값을 검출하는 최소 로드 검출수단을 포함한다.
본 발명의 컴퓨터 판독 가능 매체는 기록을 위한 컴퓨터 실행 가능 명령어를 하나 이상 포함한다. 컴퓨터 실행가능 명령어는 적어도 3개 이상의 코어들 각각의 로드를 동시에 비교하여 최대 로드와 최소 로드를 검색하는 명령어와, 최대 로드를 가진 코어를 소스코어로 결정하고, 최소 로드를 가진 코어를 타켓코어로 결정하여 소스코어로부터 타켓코어로 로드를 이동시키는 명령어를 포함한다.
상기와 같은 본 발명의 실시예들에 따른 다중코어 시스템에서는 3개 이상의 코어들을 포함하더라도 로드비교과정 원타임과 로드이동과정 원타임만으로 로드 밸런싱 처리가 가능하므로 코어의 수가 증가할수록 로드 밸런싱 시간 및 전력을 최소화할 수 있어서 로드 밸런싱 효율을 향상시킬 수 있다.
다만, 본 발명의 효과는 상기에서 언급된 효과로 제한되는 것은 아니며, 상기에서 언급되지 않은 다른 효과들은 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 당업자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 다중코어 시스템의 구성도이다.
도 2는 도 1의 로드 밸런싱 관리기(LBM)의 바람직한 일 실시예의 블록도이다.
도 3은 발명의 일 실시예에 따른 다중코어 시스템의 로드 밸런싱 동작을 설명하기 위한 플로챠트이다.
도 4는 쿼드코어 시스템에서 본 발명과 종래 기술의 로드 밸런싱 시간을 비교 설명하기 위한 타이밍도이다.
도 5는 도 1의 로드 밸런싱 관리기(LBM)의 바람직한 다른 실시예의 블록도이다.
도 6은 도 1의 로드 밸런싱 관리기(LBM)의 바람직한 또 다른 실시예의 블록도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 본문에 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 구성요소에 대해 사용하였다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시(說示)된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
한편, 어떤 실시예가 달리 구현 가능한 경우에 특정 블록 내에 명기된 기능 또는 동작이 순서도에 명기된 순서와 다르게 일어날 수도 있다. 예를 들어, 연속하는 두 블록이 실제로는 실질적으로 동시에 수행될 수도 있고, 관련된 기능 또는 동작에 따라서는 상기 블록들이 거꾸로 수행될 수도 있다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 다중코어 시스템의 구성도이다.
도 1을 참조하면, 본 실시예에 따른 다중코어 시스템(100)은 다중 프로세서(110), 메모리(120), 스케줄러(122), 버스(130) 및 로드 밸런싱 관리기(124)로 구성된다. 다만, 도 1에 도시된 다중 프로세서 시스템은 본 실시예를 설명하기 위한 가장 간단한 일례에 불과하며, 상기 구성 외에 디스크 장치 및 입출력 장치 등의 다른 구성 요소들이 포함될 수 있음을 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 이해할 수 있다. 또한, 도 1은 각각의 구성의 역할에 따라 도시한 관념적인 구성이므로 물리적인 하드웨어 구성과는 다소 차이가 있을 수 있다.
다중 프로세서(110)는 메모리에 저장된 작업들을 실행하는 n( n ≥ 3)개의 CPU들(CPU1~CPUn)로 구성된다. 예를들면 다중 프로세서(110)는 하나의 프로세서가 두 개 이상의 코어로 구성되어 있는 프로세서로, 듀얼코어 (dual-core) 프로세서는 2개의 코어로 구성되고, 쿼드코어 (quad-core) 프로세서는 4개의 코어로 구성되고, 헥사코어 (hexa-core) 프로세서는 6개의 코어로 구성된다. 본 발명에서는 2개의 코어들에서 로드의 최대 및 최소가 기술적으로 의미가 없으므로 적어도 3개 이상의 코어를 포함하는 다중 프로세서로 한정한다. 다중코어는 CPU(central processing unit), GPU(graphics processing unit), DSP(data signal processor)와 같은 이종의 코어로 구성될 수 있다.
각 CPU들(CPU1~CPUn)은 코어(CORE1~COREn), 레지스터들(PC1~PCn), 캐시(CCH1~CCHn)를 포함한다. 코어(CORE1~COREn)는 CPU내의 실제적인 프로세서 (processor)를 의미하며 프로그램 명령을 읽고 수행하는 블록이다. 본 발명에서 레지스터들(PC1~PCn)은 실질적으로 프로그램 카운터를 나타내며 본 발명과 관련이 없는 다른 레지스터들은 생략한다. 프로그램 카운터는 다음에 수행될 명령(instruction)의 어드레스(address)의 값을 가진다. 그러므로 코어(core)가 비지(busy)할수록 프로그램 카운터의 값이 업데이트 되는 횟수가 증가한다. 캐시(CCH1~CCHn)는 L1 CACHE 메모리로 L1이란 "level-1"의 약자로서, 마이크로프로세서 칩 그 자체 내에 마련되어 있는 내부캐시 메모리이다. 따라서 코어가 비지(busy) 할수록 내부 캐시 메모리의 리퀘스트 횟수가 증가하게 된다.
메모리(120)는 CPU가 작업을 처리하는 작업공간으로서 운영체계(OS)의 각종 프로그램과 작업들이 저장공간(120a)에 적재된다. 메모리(120)는 CPU들 각각에 대응하여 CPU들(CPU1 ~ CPUn)이 실행할 작업들이 저장되는 런큐들(RQ1 ~ RQn)을 저장공간(120b)에 가지며, 본 실시예에서는 CPU 1개당 런큐 1개를 대응시키도록 예시하고 있다.
런큐(Runqueue)는 컴퓨터 내에 여러 개의 프로세스들이 동시에 수행될 때, 활성화 된 프로세스들(active processes)이 놓이는 곳을 의미한다. 런큐(runqueue)는 각 프로세스들에 대한 우선순위 값(priority values)을 가지며 운영체제의 스케쥴러(scheduler)는 이 값을 이용하여 다음에 수행될 프로세스를 결정한다. 리눅스 운영체제에서는 한 시스템 내에 있는 각 CPU들마다 각각의 런큐(runqueue)를 가진다.
스케줄러(122)는 다중 프로세서 시스템의 다양한 작업들을 스케줄링하여 필요한 자원에 공급한다. 일반적으로 스케줄러에는 메모리(120) 내의 런큐들(RQ1 ~ RQn)에 저장된 작업들을 소정의 스케줄링 정책에 따라 각각의 대응하는 CPU에 작업을 할당하는 CPU 스케줄러와 디스크 장치(미도시)와 같은 저장 장치로부터 메모리로 필요한 프로그램을 적재하는 작업 스케줄러 등이 있으며, 본 실시예에서는 CPU 스케줄러를 중심으로 기술하고 있으므로, 이하에서는 편의상 스케줄러라고 줄여 호칭한다.
본 발명의 (LBM: Load Balancing management)(124)는 런큐들(RQ1 ~ RQn) 각각의 로드 가중치들(LW1~LWn)을 병렬로 동시 비교하여 최대 로드 런큐의 태스크를 가져다가 최소 로드 런큐로 이동시키고 로드 밸런싱 관리정보를 스케줄러(122)에 제공한다. 본 발명의 일실시예에서 로드 밸런싱 관리기(124)는 스케쥴러를 구성하는 일부 프로그램으로 구성된 것으로 소프트웨어 아키텍쳐(Architecture)를 가진다.
본 발명의 바람직한 일 실시예에 따른 스케줄러(122)는 다중 프로세서 시스템에서 로드 불균형이 발생한 경우 로드 밸런싱 관리기(124)를 통하여 소정 CPU의 런큐로부터 다른 CPU의 런큐로 작업을 이동시킨다. 또한, 런큐들에 저장된 작업들을 소정의 스케줄링 정책에 따라 선택하여 CPU에 할당한다. 소정의 스케줄링 정책은 우선순위에 따른 스케줄링 정책 등 통상의 운영체제에서 지원하는 다양한 스케줄링 방법이 알려져 있으므로 자세한 설명은 생략한다.
일반적으로 운영체제 내에서 CPU에 작업을 할당하거나 런큐들에 대하여 락을 획득하고, 락을 해제하고, 작업을 이동시키는 것은 모두 스케줄러(122)에 의해 이루어지는 것으로 본 발명에 속하는 기술 분야에서 통상의 지식을 가진 자는 이하의 실시예들에서 설명할 각각의 단계들에서 행위 주체를 특별히 언급하지 않더라도 스케줄러(122)에 의해 이루어지는 것임은 알 수 있다.
도 2는 도 1의 로드 밸런싱 관리기(LBM)의 바람직한 일 실시예의 블록도이다.
도 2를 참조하면, 로드 밸런싱 관리기(LBM)(124)는 로드비교수단(LCOM)과 로드이동수단(LMIG)을 포함한다. 로드비교수단(LCOM)은 n개의 코어들 각각의 로드를 동시에 비교하여 최대로드와 최소 로드를 검출하기 위하여 최대 로드 검출수단(MAX)과 최소 로드 검출수단(MIN)을 포함한다. 최대 로드 검출수단(MAX)은 n개의 코어들 각각의 런큐(RQ1 ~ RQn)로부터 생성된 로드 웨이트들(LW1~LWn)을 동시에 비교하여 최대 로드 코어를 검출한다. 여기서 로드 웨이트들(LW1~LWn)은 컴퓨터 시스템이 처리해야 하는 일의 양 측정값을 스케쥴 클래스와 우선순위 값을 적용하여 가공한 값이다. 마찬가지로 최소 로드 검출수단(MIN)은 n개의 코어들 각각의 런큐(RQ1 ~ RQn)로부터 생성된 로드 웨이트들(LW1~LWn)을 동시에 비교하여 최소 로드 코어를 검출한다.
로드이동수단(LMIG)에서는 로드비교수단(LCOM)에서 검출된 최대 로드 코어를 소스코어로 결정하고 최소 로드 코어를 타켓코어로 결정하여 소스코어에 대응하는 런큐로부터 타켓코어에 대응하는 런큐로 태스크를 이동(Migration)한다.
도 3은 발명의 일 실시예에 따른 다중코어 시스템의 로드 밸런싱 동작을 설명하기 위한 플로챠트이다.
도 3을 참조하면, 다중코어 시스템의 로드 밸런싱 처리과정은 먼저 메모리(120)내의 런큐들(RQ1~RQn)로부터 각각 스케쥴 클래스와 우선순위 값에 의해 작성된 로드 가중치들(LW1~LWn)을 리드한다(S102). 리드된 로드 가중치들(LW1~LWn)은 최대 로드 검출수단(MAX) 및 최소 로드 검출수단(MIN)에 동시에 제공되어 병렬 비교된다. 그러므로 비교동작 원 타임에 동시에 최대로드와 최소 로드가 검출된다(S104).
로드이동수단(LMIG)에서는 검출된 최대 로드를 가진 코어를 소스코어로 결정하고(S106), 최소 로드를 가진 코어를 타켓코어로 결정한다(S108). 이어서 결정된 소스코어의 런큐로부터 타켓코어의 런큐로 태스크를 이동시킨다(S110).
따라서 최대 로드의 런큐의 일부 프로세스가 최소 로드의 런큐로 이동되므로 전체적으로 로드가 분산되어 로드 밸런싱이 이루어지게 된다.
도 4는 쿼드코어 시스템에서 본 발명과 종래 기술의 로드 밸런싱 시간을 비교 설명하기 위한 타이밍도이다.
도 4를 참조하면, 종래의 코어 쌍 조합 비교방식(a)은 총 6회의 로드 가중치 비교(LW1 < LW2), (LW1 < LW3), (LW1 < LW4), (LW2 < LW3), (LW2 < LW4), (LW3 < LW4)와 6회의 로드 이동(RQ2 --> RQ1), (RQ3 --> RQ1), (RQ4 --> RQ1), (RQ3 --> RQ2), (RQ4 --> RQ2),(RQ4 --> RQ3)이 발생되므로 로드 밸런싱을 위하여 한 번의 로드 가중치 비교와 로드 이동에 소요되는 시간을 T라고 할 때 최대 총 6T의 시간이 소요된다. 한편 종래 방식을 토너먼트로 비교하더라도 코어 쌍 토너먼트 비교방식(b)은 총 3회의 로드 가중치 비교(LW1 < LW2), (LW3 < LW4), (LW2 < LW4)와 3회의 로드 이동(RQ2 --> RQ1), (RQ4 --> RQ3), (RQ4 --> RQ2)이 발생되므로 로드 밸런싱을 위하여 총 3T의 시간이 소요된다.
그러나 본 발명의 동시 비교방식은 모든 로드 가중치들(LW1~LW4)을 동시비교하고 그 결과 최대로드 RQ1에서 최소로드 RQ4로 이동하는 1T의 시간만 소요된다.
따라서 본 발명의 동시 비교방식은 코어의 수에 상관없이 1T의 시간만 소요되지만 종래의 코어 쌍 조합 비교방식과 코어 쌍 토너먼트 비교방식은 코어의 수가 증가될수록 로드 밸런싱에 소요되는 시간이 증가됨을 알 수 있다. 그러므로 본 발명은 코어 수가 많을수록 매우 효율적이다.
도 5는 도 1의 로드 밸런싱 관리기(LBM)(124)의 바람직한 다른 실시예의 블록도이다.
도 5를 참조하면, 다른 실시예의 로드 밸런싱 관리기(LBM)(124)는 상술한 일 실시예와 비교하여 로드 가중치(LW1~LWn) 대신에 각 코어들의 프로그램 카운터(PC1~PCn)에 명령이 업로드되는 횟수를 카운트하기 위한 업로드 카운터들(ULCT1~ULCTn)을 포함하고 이 카운트 값을 동시에 비교한다는 점이 다르고 나머지 구성은 동일하므로 구체적인 설명은 생략한다.
즉 프로그램 카운터(PC1~PCn)들 각각에는 다음에 수행될 명령(instruction)의 어드레스(address) 값을 가진다. 그러므로 코어(core)가 비지(busy)할수록 프로그램 카운터의 값이 업데이트 되는 횟수가 증가한다. 따라서 다른 실시예에서는 프로그램 카운터의 업데이트 되는 횟수를 해당 코어의 로드정보로 참조할 수 있다.
도 6은 도 1의 로드 밸런싱 관리기(LBM)(124)의 바람직한 또 다른 실시예의 블록도이다.
도 6을 참조하면, 또 다른 실시예의 로드 밸런싱 관리기(LBM)(124)는 상술한 일 실시예와 비교하여 로드 가중치(LW1~LWn) 대신에 각 코어들의 L1 캐시메모리(CCH1~CCHn)을 리퀘스트하는 횟수를 카운트하기 위한 캐시 리퀘스트 카운터들(CRCT1~CRCTn)을 포함하고 이 카운트 값을 동시에 비교한다는 점이 다르고 나머지 구성은 동일하므로 구체적인 설명은 생략한다.
즉 각 CPU들(CPU1~CPUn)들은 내부에 L1 캐시 메모리(CCH1~CCHn)를 각각 포함한다. 그러므로 코어(core)가 비지(busy)할수록 L1 캐시 메모리(CCH1~CCHn)를 리퀘스트하는 횟수가 증가한다. 따라서 또 다른 실시예에서는 L1 캐시 메모리(CCH1~CCHn)의 리퀘스트 되는 횟수를 해당 코어의 로드정보로 참조할 수 있다. 이를 위해서는 ARM core의 PMU (performance monitor unit) 등과 같은 기본적으로 또는 부가적으로 CPU에서 제공하는 디버깅 툴을 이용할 수 있다.
상기 블록도와 순서도에 나타난 각각의 블록 또는 블록의 집합들의 동작이나 기능들은 하드웨어 또는 소프트웨어 기반으로 다양한 형태로 구현될 수 있음을 이해하여야 한다. 상기 블록도와 순서도에 나타난 블록 또는 블록의 집합들의 동작이나 기능을 구현하기 위한 구조나 수단을 생성할 수 있도록, GPP(General Purpose Processor), SPP(Special Purpose Processor)를 탑재한 다중코어 컴퓨터, 그 외 프로그램이 가능한 장치에 의해 소프트웨어 기반으로도 구현될 수 있음을 이해하여야 한다.
본 발명은 같은 수의 다중코어(multi-core) 시스템에 로드 밸런싱(load balancing)작업을 수행하는 종래기술에 비하여 시간 및 전력 절감효과가 있다. 본 발명은 핫 플러그(hotplug) 등과 같은 CPU 전력관리(power management) 기법이 적용될 때 동적으로 변하는 코어(core)의 수와 성능에 대하여 적응적으로(adaptively) 적용될 수 있다. 또한 코어(core)의 수가 늘어나더라도 적용될 수 있다.
상술한 바와 같이, 본 발명의 바람직한 실시예를 참조하여 설명하였지만 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (10)

  1. 적어도 3개의 코어들을 포함하고, 상기 코어들 각각은 캐시와 런큐를 구비하고, 상기 캐시들은 각각 캐시 리퀘스트 카운터와 관련되는, 멀티코어 시스템의 태스크 밸런싱 방법에 있어서,
    비교 수단에 의하여, 상기 캐시 리퀘스트 카운터들로부터 각각이, 상기 코어들 중 하나의 캐시에 대한 단위 시간당 캐시 리퀘스트 횟수에 해당하는 적어도 3개의 값들을 병렬로 수신하는 단계;
    상기 비교수단에 의하여 상기 적어도 3개의 값들을 동시에 비교하여 최대값과 최소값을 검출하는 단계;
    상기 적어도 3개의 코어들 중 상기 최대값을 가지는 제1 코어를 소스코어로 결정하고 상기 최소값을 가지는 제2 코어를 타겟코어로 결정하는 단계; 및
    상기 소스코어의 런큐로부터 상기 소스코어에 할당된 태스크들을 상기 타겟코어의 런큐로 이동시키는 단계를 포함하는 멀티 코어 시스템의 태스크 밸런싱 방법.
  2. 제1항에 있어서, 상기 적어도 3개의 값들은 상기 적어도 3개의 런큐들의 로드 웨이트들에 해당하고, 상기 적어도 3개의 런큐들은 각각 상기 적어도 3개의 코어들 각각에 포함되는 것을 특징으로 하는 멀티 코어 시스템의 태스크 밸런싱 방법.
  3. 제2항에 있어서, 상기 적어도 3개의 로드 웨이트들은 상기 적어도 3개의 런 큐들과 관련된 적어도 3개의 로드들의 스케쥴링 정책과 우선순위들에 기초하여 생성되는 것을 특징으로 하는 멀티 코어 시스템의 태스크 밸런싱 방법.
  4. 삭제
  5. 삭제
  6. 적어도 3개의 코어들(상기 적어도 3개의 코어들은 각각 캐시와 런큐를 포함하고, 상기 캐시는 캐시 리퀘스트 카운터와 관련됨);
    상기 캐시 리퀘스트 카운터들로부터 각각이, 상기 코어들 중 하나의 캐시에 대한 단위 시간당 캐시 리퀘스트 횟수에 해당하는 적어도 3개의 값들을 병렬로 수신하고 상기 적어도 3개의 값들을 동시에 비교하여 최대값과 최소값을 검출하는 로드비교수단; 및
    상기 적어도 3개의 코어들 중 상기 최대값을 가지는 제1 코어를 소스코어로 결정하고 상기 최소값을 가지는 제2 코어를 타겟코어로 결정하고, 상기 소스코어의 런큐로부터 상기 소스코어에 할당된 태스크들을 상기 타겟코어의 런큐로 이동시키는 로드이동수단을 포함하는 멀티코어 시스템.
  7. 제6항에 있어서, 상기 로드비교수단은
    상기 적어도 3개의 코어들 각각의 런큐로부터의 적어도 3개의 로드 웨이트들을 동시에 비교하여 상기 최대값을 검출하는 최대 로드 검출수단; 및
    상기 적어도 3개의 코어들 각각의 런큐로부터의 상기 적어도 3개의 로드 웨이트들을 동시에 비교하여 상기 최소값을 검출하는 최소 로드 검출수단을 포함하는 것을 특징으로 하는 멀티코어 시스템.
  8. 제7항에 있어서, 상기 적어도 3개의 로드 웨이트들은 상기 적어도 3개의 런 큐들과 관련된 적어도 3개의 로드들의 스케쥴링 정책과 우선순위들에 기초하여 생성되는 것을 특징으로 하는 멀티코어 시스템.
  9. 삭제
  10. 제6항에 있어서, 상기 코어들 중 하나의 캐시에 대한 단위 시간당 캐시 리퀘스트 횟수는 상기 적어도 3개의 코어들 각각이 비지할수록 증가하는 것을 특징으로 하는 멀티코어 시스템.
KR1020120026757A 2012-03-15 2012-03-15 다중코어 시스템 및 로드 밸런싱 방법 KR101834195B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120026757A KR101834195B1 (ko) 2012-03-15 2012-03-15 다중코어 시스템 및 로드 밸런싱 방법
US13/709,608 US9342365B2 (en) 2012-03-15 2012-12-10 Multi-core system for balancing tasks by simultaneously comparing at least three core loads in parallel

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120026757A KR101834195B1 (ko) 2012-03-15 2012-03-15 다중코어 시스템 및 로드 밸런싱 방법

Publications (2)

Publication Number Publication Date
KR20130104853A KR20130104853A (ko) 2013-09-25
KR101834195B1 true KR101834195B1 (ko) 2018-04-13

Family

ID=49158929

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120026757A KR101834195B1 (ko) 2012-03-15 2012-03-15 다중코어 시스템 및 로드 밸런싱 방법

Country Status (2)

Country Link
US (1) US9342365B2 (ko)
KR (1) KR101834195B1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150032961A1 (en) * 2013-07-23 2015-01-29 Lexmark International Technologies S.A. System and Methods of Data Migration Between Storage Devices
KR20150136345A (ko) * 2014-05-27 2015-12-07 삼성전자주식회사 태스크 그룹 전달 방법 및 이를 제공하는 전자 장치
US9852005B2 (en) * 2014-10-02 2017-12-26 Mediatek Inc. Multi-core processor systems and methods for assigning tasks in a multi-core processor system
KR20160061726A (ko) * 2014-11-24 2016-06-01 삼성전자주식회사 인터럽트 핸들링 방법
CN105988872B (zh) * 2015-02-03 2020-02-18 阿里巴巴集团控股有限公司 一种cpu资源分配的方法、装置及电子设备
KR102247742B1 (ko) * 2015-04-21 2021-05-04 삼성전자주식회사 애플리케이션 프로세서와 시스템 온 칩
US10216744B2 (en) * 2015-05-01 2019-02-26 Microsoft Technology Licensing, Llc Data migration to a cloud computing system
US20170031724A1 (en) * 2015-07-31 2017-02-02 Futurewei Technologies, Inc. Apparatus, method, and computer program for utilizing secondary threads to assist primary threads in performing application tasks
CN105893141A (zh) * 2015-12-17 2016-08-24 乐视致新电子科技(天津)有限公司 一种多核处理器调控方法及装置及使用该方法的移动终端
FR3055159B1 (fr) * 2016-08-18 2018-08-17 Safran Electronics & Defense Systeme informatique multicoeur ou multiprocesseur pour l'execution de taches harmoniques
DE102016222375A1 (de) * 2016-11-15 2018-05-17 Robert Bosch Gmbh Vorrichtung und Verfahren zum Bearbeiten von Aufträgen
CN107870818B (zh) * 2017-10-19 2021-03-02 瑞芯微电子股份有限公司 多核处理器中断动态响应方法及存储介质
CN108255604A (zh) * 2017-12-07 2018-07-06 中国航空工业集团公司西安航空计算技术研究所 一种smt多核操作系统的负载均衡方法
CN108920413B (zh) * 2018-06-28 2019-08-09 中国人民解放军国防科技大学 面向gpdsp的卷积神经网络多核并行计算方法
CN112912849A (zh) * 2018-07-27 2021-06-04 浙江天猫技术有限公司 一种基于图数据的计算运行调度方法、系统、计算机可读介质及设备
CN110399214B (zh) * 2019-05-30 2024-03-22 腾讯科技(深圳)有限公司 一种优化显卡负载的方法、装置及计算机设备
US11513861B2 (en) * 2019-08-29 2022-11-29 International Business Machines Corporation Queue management in solid state memory
CN115269209B (zh) * 2022-09-30 2023-01-10 浙江宇视科技有限公司 一种gpu集群调度方法及服务器
CN116954929B (zh) * 2023-09-20 2023-12-01 四川并济科技有限公司 一种实时迁移的动态gpu调度方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7590149B1 (en) * 2006-11-10 2009-09-15 Juniper Networks, Inc. Load balancing with unequal routing metrics in a meshed overlay network

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860137A (en) * 1995-07-21 1999-01-12 Emc Corporation Dynamic load balancing
FR2792087B1 (fr) * 1999-04-07 2001-06-15 Bull Sa Procede d'amelioration des performances d'un systeme multiprocesseur comprenant une file d'attente de travaux et architecture de systeme pour la mise en oeuvre du procede
GB0011974D0 (en) * 2000-05-19 2000-07-05 Smith Neale B rocessor with load balancing
US20020099759A1 (en) * 2001-01-24 2002-07-25 Gootherts Paul David Load balancer with starvation avoidance
JP2003323414A (ja) 2002-05-01 2003-11-14 Matsushita Electric Ind Co Ltd マルチプロセッサ装置
US7075541B2 (en) * 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US7430167B2 (en) 2003-09-18 2008-09-30 International Business Machines Corporation Method and system to enable an adaptive load balancing in a parallel packet switch
JP4296996B2 (ja) 2004-06-15 2009-07-15 富士通株式会社 マルチコアプロセサ制御方式
US7793293B2 (en) * 2004-11-01 2010-09-07 Hewlett-Packard Development Company, L.P. Per processor set scheduling
US20060123423A1 (en) * 2004-12-07 2006-06-08 International Business Machines Corporation Borrowing threads as a form of load balancing in a multiprocessor data processing system
JP2007188212A (ja) 2006-01-12 2007-07-26 Seiko Epson Corp マルチプロセッサ及びマルチプロセッサの制御方法をコンピュータに実行させるためのプログラム
KR101286700B1 (ko) 2006-11-06 2013-07-16 삼성전자주식회사 멀티 코어 프로세서 시스템에서 로드 밸런싱을 위한 장치및 방법
JP2008191949A (ja) 2007-02-05 2008-08-21 Nec Corp マルチコアシステムおよびマルチコアシステムの負荷分散方法
KR20090005921A (ko) * 2007-07-10 2009-01-14 삼성전자주식회사 대칭적 다중 프로세서 시스템에서의 로드 밸런싱 방법 및장치
KR101366075B1 (ko) * 2007-12-20 2014-02-21 삼성전자주식회사 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치
KR100901286B1 (ko) 2008-12-23 2009-06-09 어울림정보기술주식회사 다중 코어 프로세서에서의 부하 변화에 따른 실시간 프로세스 동적 할당 시스템 및 그 방법
KR101553650B1 (ko) 2008-12-24 2015-09-16 삼성전자주식회사 멀티코어 시스템에서의 로드 밸런싱 장치 및 방법
US8352946B2 (en) * 2009-08-11 2013-01-08 International Business Machines Corporation Managing migration ready queue associated with each processor based on the migration ready status of the tasks
KR101680109B1 (ko) 2009-10-29 2016-12-12 삼성전자 주식회사 복수 코어 장치 및 그의 로드 조정 방법
JP2011141782A (ja) 2010-01-08 2011-07-21 Toyota Motor Corp 情報処理装置、電子制御ユニット、タスク割り当て方法
KR20140044596A (ko) * 2012-10-05 2014-04-15 삼성전자주식회사 멀티 코어 프로세서를 구비한 컴퓨팅 시스템 및 그것의 로드 밸런싱 방법
US20140137135A1 (en) * 2012-11-15 2014-05-15 Taejin Info Tech Co., Ltd. Multi-core-based load balancing data processing methods

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7590149B1 (en) * 2006-11-10 2009-09-15 Juniper Networks, Inc. Load balancing with unequal routing metrics in a meshed overlay network

Also Published As

Publication number Publication date
KR20130104853A (ko) 2013-09-25
US20130247068A1 (en) 2013-09-19
US9342365B2 (en) 2016-05-17

Similar Documents

Publication Publication Date Title
KR101834195B1 (ko) 다중코어 시스템 및 로드 밸런싱 방법
EP2430538B1 (en) Allocating computing system power levels responsive to service level agreements
EP2430541B1 (en) Power management in a multi-processor computer system
US8898435B2 (en) Optimizing system throughput by automatically altering thread co-execution based on operating system directives
US9086925B2 (en) Methods of processing core selection for applications on manycore processors
US20140059554A1 (en) Process grouping for improved cache and memory affinity
KR101680109B1 (ko) 복수 코어 장치 및 그의 로드 조정 방법
KR20180053359A (ko) 다중-버전형 태스크들의 효율적 스케줄링
US8892819B2 (en) Multi-core system and external input/output bus control method
US20130097382A1 (en) Multi-core processor system, computer product, and control method
JP6296678B2 (ja) ソフトリアルタイムオペレーティングシステムの実時間性を確保する方法及び装置
KR102110812B1 (ko) 멀티 코어 시스템 및 멀티 코어 시스템의 작업 스케줄링 방법
US9354934B2 (en) Partitioned shared processor interrupt-intensive task segregator
KR20100074920A (ko) 멀티코어 시스템에서의 로드 밸런싱 장치 및 방법
US20130339750A1 (en) Reducing decryption latency for encryption processing
Gottschlag et al. Automatic core specialization for AVX-512 applications
Nakajima et al. Enhancements for {Hyper-Threading} Technology in the Operating System: Seeking the Optimal Scheduling
US20060212840A1 (en) Method and system for efficient use of secondary threads in a multiple execution path processor
Chiang et al. Kernel mechanisms with dynamic task-aware scheduling to reduce resource contention in NUMA multi-core systems
KR101465657B1 (ko) 가상머신을 위한 협력 스케줄링 방법
JP6135392B2 (ja) キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法
KR101330609B1 (ko) 모바일 멀티코어 가상화 시스템에서 실시간 처리를 보장하기 위한 스케쥴링 방법
Gottschlag et al. Fair Scheduling for {AVX2} and {AVX-512} Workloads
WO2003040948A1 (fr) Ordinateur et procede de commande
KR101534139B1 (ko) 가상머신을 위한 협력 스케줄링 방법

Legal Events

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