KR102169692B1 - 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 동적 전력 관리 방법 - Google Patents

멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 동적 전력 관리 방법 Download PDF

Info

Publication number
KR102169692B1
KR102169692B1 KR1020140085335A KR20140085335A KR102169692B1 KR 102169692 B1 KR102169692 B1 KR 102169692B1 KR 1020140085335 A KR1020140085335 A KR 1020140085335A KR 20140085335 A KR20140085335 A KR 20140085335A KR 102169692 B1 KR102169692 B1 KR 102169692B1
Authority
KR
South Korea
Prior art keywords
driving voltage
hot plug
driving
cpu
driving clock
Prior art date
Application number
KR1020140085335A
Other languages
English (en)
Other versions
KR20160006328A (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 KR1020140085335A priority Critical patent/KR102169692B1/ko
Priority to US14/679,828 priority patent/US9746902B2/en
Publication of KR20160006328A publication Critical patent/KR20160006328A/ko
Application granted granted Critical
Publication of KR102169692B1 publication Critical patent/KR102169692B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3237Power saving characterised by the action undertaken by disabling clock generation or distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • 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

Abstract

본 발명의 실시 예에 따른 멀티-코어 프로세서를 포함하는 컴퓨팅 장치의 제어 방법은, 상기 멀티-코어 프로세서에서 수행될 런어블 태스크 비율 및 상기 멀티-코어 프로세서의 구동 전압 또는 구동 클록을 검출하는 단계, 제 1 시점으로부터 현재까지 샘플링된 상기 태스크들의 수 및 제 2 시점으로부터 현재까지 샘플링된 상기 구동 전압 또는 구동 클록의 변화가 핫플러그 조건을 충족하는지 판단하는 단계, 그리고 상기 런어블 태스크 비율과 상기 구동 전압 또는 구동 클록이 각각 핫플러그 조건을 만족하는 경우, 상기 멀티-코어 프로세서에 포함되는 적어도 하나의 코어를 핫플러그-인 또는 핫플러그-아웃하는 단계를 포함한다.

Description

멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 동적 전력 관리 방법{SYSTEM ON CHIP INCLUDING MULTI-CORE PROCESSOR AND DYNAMIC POWER MANAGEMENT METHOD THEREOF}
본 발명은 반도체 장치에 관한 것으로, 좀 더 구체적으로는 시스템 온 칩 및 그것의 전력 관리 방법에 관한 것이다.
최근, 스마트폰, 테이블릿 PC, 디지털 카메라, MP3 플레이어, PDA 등과 같은 모바일 장치의 이용이 폭발적으로 증가하고 있다. 이러한 모바일 장치에서도 멀티미디어의 구동 및 각종 데이터의 처리량이 증가하면서, 고속 프로세서 및 대용량 저장 매체의 채용이 확대되고 있다. 모바일 장치에는 다양한 응용 프로그램(Application program)들이 구동된다. 다양한 응용 프로그램들을 구동하기 위하여, 모바일 장치에는 워킹 메모리(예를 들면, DRAM), 불휘발성 메모리, 그리고 응용 프로세서(Application Processor: 이하, AP)와 같은 반도체 장치들이 사용된다. 그리고 모바일 환경에서의 고성능화에 대한 요구에 따라 상술한 반도체 장치들의 집적도 및 구동 주파수는 날로 높아지고 있다.
모바일 장치에서 프로세싱 유닛의 성능이나 메모리의 성능은 매년 비약적으로 발전하고 있다. 그러나 모바일 환경에서 높은 성능 요구는 상대적으로 효율적인 전력 관리를 어렵게 하는 요소이다. 최근에는 모바일 장치들의 처리 속도나 성능은 평준화되는 추세이다. 따라서, 모바일 환경에서 사용자에게 지속적인 서비스 시간을 제공하기 위한 배터리 기술이나 효율적인 전력 관리 기술에 대한 연구가 활발히 수행되고 있다.
최근의 모바일 장치에는 응용 프로세서(Application Processor)에는 높은 성능을 제공하기 위한 멀티-코어 프로세서가 장착되고 있다. 그리고 멀티-코어 환경에서 효율적인 전력의 관리를 위해서 하드웨어 기반한 방법 또는 소프트웨어 기반의 다양한 제어 기법들이 적용되고 있다.
본 발명의 목적은 멀티-코어 프로세서를 사용하는 시스템 온 칩 또는 모바일 장치에서 전력 효율을 높일 수 있는 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 멀티-코어 프로세서를 포함하는 컴퓨팅 장치의 제어 방법은, 상기 멀티-코어 프로세서에서 수행될 런어블 태스크 비율 및 상기 멀티-코어 프로세서의 구동 전압 및 구동 클록을 검출하는 단계, 제 1 시점으로부터 현재까지 샘플링된 상기 런어블 태스크 비율 및 제 2 시점으로부터 현재까지 샘플링된 상기 구동 전압 및 구동 클록의 변화가 핫플러그 조건을 충족하는지 판단하는 단계, 그리고 상기 태스크 비율과 상기 구동 전압 및 구동 클록이 각각 핫플러그 조건을 만족하는 경우, 상기 멀티-코어 프로세서에 포함되는 적어도 하나의 코어를 핫플러그-인 또는 핫플러그-아웃하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 시스템 온 칩은, 복수의 코어들을 포함하는 멀티-코어 프로세서, 그리고 상기 멀티-코어 프로세서에 의해서 구동되는 운영 체제가 로드되고, 상기 복수의 코어들 각각에 대응하는 런큐가 구성되는 워킹 메모리를 포함하고, 상기 운영 체제는 상기 멀티-코어 프로세서의 핫플러그 동작을 제어하기 위한 커널을 포함하며, 상기 커널은 상기 런어블 태스크 비율 그리고 상기 멀티-코어 프로세서의 구동 전압 및 구동 클록을 복수 회 샘플링한 결과를 이용하여 상기 복수의 코어들에 대한 핫플러그 동작의 실행 여부를 판단한다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 멀티-코어 프로세스를 포함하는 시스템 온 칩의 전력 관리 방법은, 복수의 샘플링 시점에서 검출된 상기 멀티-코어 프로세서의 런어블 태스크 비율 그리고 상기 복수의 샘플링 시점에서 검출된 상기 멀티-코어 프로세서의 구동 전압 및 구동 클록이 각각 핫플러그 조건을 충족하는지 검출하는 단계, 그리고 상기 핫플러그 조건을 충족하는 것으로 판단된 경우, 상기 복수의 멀티-코어 프로세서에 포함되는 적어도 하나의 코어에 전원을 공급하거나 차단하는 핫플러그 동작을 수행하는 단계를 포함한다.
본 발명에 따른 모바일 장치 및 그것의 제어 방법에 따르면, 멀티-코어 프로세서에서 불필요한 핫플러그-인을 최소화할 수 있으며, 그에 따른 전력 소모를 줄일 수 있다.
도 1은 본 발명의 실시 예에 따른 모바일 장치를 간략히 보여주는 블록도이다.
도 2는 도 1의 CPU(110)의 구조를 예시적으로 보여주는 도면이다.
도 3은 도 1의 모바일 장치의 소프트웨어 구조를 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 핫플러그 조건을 예시적으로 보여주는 테이블이다.
도 5는 본 발명의 CPU 사용율의 예를 간략히 보여주는 그래프이다.
도 6은 본 발명의 런어블 태스크의 수(nRT)를 결정하는 예를 보여주는 그래프이다.
도 7은 본 발명의 실시 예에 따른 멀티-코어의 런어블 태스크의 수(nRT)와 CPU 사용율을 샘플링하는 방법을 보여주는 타이밍도이다.
도 8은 본 발명의 일 실시 예에 따른 멀티-코어 프로세서의 제어 방법을 간략히 보여주는 순서도이다.
도 9는 본 발명의 다른 실시 예에 따른 멀티-코어 프로세서의 제어 방법을 간략히 보여주는 순서도이다.
도 10은 본 발명의 멀티-코어 프로세서의 제어 방법을 보여주는 개념도이다.
도 11a 및 도 11b는 본 발명의 효과를 설명하는 도면이다.
도 12a 및 도 12b는 본 발명의 다른 효과를 설명하는 도면이다.
도 13은 본 발명의 다른 실시 예에 따른 멀티-코어 프로세서를 보여주는 블록도이다.
도 14는 본 발명의 실시 예에 따른 휴대용 단말기를 나타내는 블록도이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다. 동일한 구성 요소들은 동일한 참조번호를 이용하여 인용될 것이다. 유사한 구성 요소들은 유사한 참조번호들을 이용하여 인용될 것이다. 아래에서 설명될 본 발명에 따른 모바일 장치 또는 프로세서에 의해 수행되는 동작은 예를 들어 설명한 것에 불과하며, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 변화 및 변경이 가능하다.
본 발명은 다른 실시 예들을 통해 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다. 이하, 본 발명에 따른 실시 예를 첨부된 도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 모바일 장치를 간략히 보여주는 블록도이다. 도 1을 참조하면, 모바일 장치(100)는 시스템 온 칩(SoC)과 워킹 메모리(130), 액정 표시 장치(152), 터치 패널(154), 저장 장치(170) 등을 포함할 수 있다. 시스템 온 칩(SoC)은 CPU(Central Processing Unit, 110), 디램 컨트롤러(120), 성능 컨트롤러(140), 사용자 인터페이스 컨트롤러(150), 메모리 인터페이스(160), 가속기(180) 등을 포함한다. 모바일 장치(100)의 구성 요소들은 도시된 구성 요소들에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 모바일 장치(100)는 영상 데이터를 처리하기 위한 하드웨어 코덱, 보안 블록 등을 더 포함할 수 있다.
CPU(110)는 모바일 장치(100)에서 수행될 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버들)를 실행한다. CPU(110)는 워킹 메모리(130)에 로드되는 운영 체제(OS)를 실행할 것이다. CPU(110)는 운영 체제(OS) 기반에서 구동될 다양한 응용 프로그램들(Application Program)을 실행할 것이다. CPU(110)는 동종 멀티-코어 프로세서(Homogeneous Multi-Core Processor) 또는 이종 멀티-코어 프로세서(Heterogeneous Multi-Core Processor)로 제공될 수 있다. 멀티-코어 프로세서는 적어도 2개의 독립적으로 구동 가능한 프로세서들(이하, 코어)을 갖는 컴퓨팅 컴포넌트(Computing component)이다. 코어들 각각은 프로그램 명령들(Program Instructions)을 독립적으로 읽고 실행할 수 있다.
본 발명의 CPU(110)의 멀티-코어들 각각은 독립된 구동 클록 및 독립된 구동 전압에 의해서 동작하는 복수의 파워 도메인(Power Domain)으로 구성될 수 있다. 그리고 멀티-코어들 각각에 공급되는 구동 전압과 구동 클록을 코어 단위로 차단 또는 연결할 수 있다. 각각의 파워 도메인들에 제공되는 구동 전압과 클록을 특정 코어로부터 차단하는 것을 핫플러그-아웃(Hotplug-out)이라 칭하기로 한다. 그리고 구동 전압과 클록을 특정 코어에 제공하는 것을 핫플러그-인(Hotplug-in)이라 칭하기로 한다. 더불어, 각 파워 도메인에 제공되는 구동 클록의 주파수 및 구동 전압의 레벨은 코어들 각각의 처리 로드에 따라 가변될 수 있다. 즉, 각각의 코어는 태스크들을 처리하는데 소요되는 시간이 길수록 해당 파워 도메인에 제공되는 구동 클록의 주파수나 구동 전압의 레벨을 상승시키는 동적 전압 주파수 스케일링(Dynamic Voltage Frequency Scaling: 이하, DVFS) 방식으로 제어될 수 있다. 본 발명에서는 DVFS를 통하여 조정된 CPU(110) 구동 전압 및 구동 클록의 주파수를 참조하여 핫플러그-인 및 핫플러그-아웃을 수행할 수 있다.
또한, 본 발명의 CPU(110)는 멀티-코어들에 할당되는 태스크(Task)들의 수와 멀티-코어 중에서 활성화되어 동작중인 코어의 수를 동시에 참조하여 핫플러그-인(Hotplug-in) 또는 핫플러그-아웃(Hotplug-out)을 수행할 수 있다. 운영 체제(OS)의 커널(Kernel)에서는 이러한 방식의 CPU(110) 제어를 위해서 런큐(Run Queue)에 있는 태스크들의 수와 CPU(110)의 구동 전압 및 구동 클록을 특정 시간 간격으로 모니터링할 것이다. 그리고 운영체제(OS)의 커널은 모니터링된 정보를 참조하여 CPU(110)의 핫플러그-인(Hotplug-in) 또는 핫플러그-아웃(Hotplug-out)을 제어할 것이다.
디램 컨트롤러(120)는 워킹 메모리(130)와 시스템 온 칩(SoC) 사이에서 인터페이싱을 제공한다. 디램 컨트롤러(120)는 CPU(110)나 다른 기능 블록(Intellectual Property: IP)의 요청에 따라 워킹 메모리(130)를 액세스할 것이다. 예를 들면, 디램 컨트롤러(120)는 CPU(110)의 쓰기 요청에 따라 데이터를 워킹 메모리(130)에 기입할 수 있다. 또는, 디램 컨트롤러(120)는 CPU(110)의 읽기 요청에 따라 워킹 메모리(130)로부터 데이터를 읽어내어 데이터 버스(Data bus)를 통해서 CPU(100)나 메모리 인터페이스(160)에 전달할 수 있다.
워킹 메모리(130)에는 부팅시에 운영 체제(OS)나 기본 응용 프로그램들(Application Program)이 로드될 것이다. 예를 들면, 모바일 장치(100)의 부팅시에 저장 장치(170)에 저장된 OS 이미지가 부팅 시퀀스에 의거하여 워킹 메모리(130)로 로드된다. 운영 체제(OS)에 의해서 모바일 장치(100)의 제반 입출력 동작들이 지원될 수 있다. 마찬가지로, 사용자의 의하여 선택되거나 기본적인 서비스 제공을 위해서 응용 프로그램들이 워킹 메모리(130)에 로드될 수 있다. 워킹 메모리(130)는 이뿐 아니라, 카메라와 같은 이미지 센서로부터 제공되는 영상 데이터를 저장하는 버퍼 메모리로 사용될 수도 있을 것이다. 워킹 메모리(130)는 SRAM(Static Random Access Memory)이나 DRAM(Dynamic Random Access Memory)과 같은 휘발성 메모리이거나, PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등의 비휘발성 메모리일 수 있다.
성능 컨트롤러(140)는 운영 체제(OS)의 커널(Kernel)로부터 제공되는 제어 요청에 따라 시스템 온 칩(SoC)의 동작 파라미터들을 조정할 수 있다. 예를 들면, 성능 컨트롤러(140)는 시스템 온 칩(SoC)의 성능을 높이기 위해서 DVFS(Dynamic Voltage Frequency Scaling)의 레벨을 조정할 수 있다. 또는, 성능 컨트롤러(140)는 커널(Kernel)의 요청에 따라 CPU(110)의 빅앤리틀(Big.LITTLE)과 같은 멀티-코어 프로세서의 구동 모드를 제어할 수 있다. 이때, 성능 컨트롤러(140)는 내부에 구동 전압 및 구동 클록의 주파수를 설정하는 성능 테이블(142)을 포함할 수 있다.
사용자 인터페이스 컨트롤러(150)는 사용자 인터페이스 장치들로부터의 사용자 입력 및 출력을 제어한다. 예를 들면, 사용자 인터페이스 컨트롤러(150)는 CPU(110)의 제어에 따라 액정 표시 장치(152)에 데이터를 입력하기 위한 키보드 화면 등을 표시할 수 있다. 또는, 사용자 인터페이스 컨트롤러(150)는 사용자가 요청한 데이터를 표시하도록 액정 표시 장치(152)를 제어할 수 있다. 사용자 인터페이스 컨트롤러(150)는 터치 패널(154)과 같은 사용자 입력 수단으로부터의 제공되는 데이터를 사용자 입력 데이터로 디코딩할 수 있다.
메모리 인터페이스(160)는 CPU(110)의 요청에 따라 저장 장치(170)를 액세스한다. 즉, 메모리 인터페이스(160)는 시스템 온 칩(SoC)과 저장 장치(170) 사이의 인터페이스를 제공한다. 예를 들면, CPU(110)에 의해서 처리된 데이터가 메모리 인터페이스(160)를 통해 저장 장치(170)에 저장된다. 다른 예로써, 저장 장치(170)에 저장된 데이터는 메모리 인터페이스(160)를 통해 CPU(110)에 제공될 수 있다.
저장 장치(170)는 모바일 장치(100)의 저장 매체(Storage Medium)로서 제공된다. 저장 장치(170)는 응용 프로그램들(Application Program), 운영 체제 이미지(OS Image) 및 각종 데이터를 저장할 수 있다. 저장 장치(170)는 메모리 카드(MMC, eMMC, SD, MicroSD 등)로 제공될 수도 있다. 저장 장치(170)는 대용량의 저장 능력을 가지는 낸드 플래시 메모리(NAND-type Flash memory)를 포함할 수 있다. 또는, 저장 장치(170)는 PRAM, MRAM, ReRAM, FRAM 등의 차세대 불휘발성 메모리나 NOR 플래시 메모리를 포함할 수도 있다. 본 발명의 다른 실시 예에서는 저장 장치(170)는 시스템 온 칩(SoC)의 내부에 구비되는 내장 메모리일 수 있다.
가속기(180)는 멀티미디어 또는 멀티미디어 데이터의 처리 속도를 향상하기 위한 별도의 기능 블록(IP)으로 제공될 수 있다. 예를 들면, 가속기(180)는 텍스트(Text), 오디오(Audio), 정지 영상들(Still images), 애니메이션(Animation), 비디오(Video), 2차원 데이터, 또는 3차원 데이터의 처리 성능을 향상시키기 위한 기능 블록(IP)으로 제공될 수 있다.
시스템 인터커넥터(190)는 시스템 온 칩(SoC)의 내부에서 온칩 네트워크를 제공하기 위한 시스템 버스(System Bus)이다. 시스템 인터커넥터(190)는 예를 들면, 데이터 버스(Data bus), 어드레스 버스(Address bus) 및 컨트롤 버스(Control bus)를 포함할 것이다. 데이터 버스(Data bus)는 데이터가 이동하는 경로이다. 주로, 워킹 메모리(130)이나 저장 장치(170)로의 메모리 접근 경로를 제공될 것이다. 어드레스 버스(Address bus)는 기능 블록들(IPs) 간의 어드레스 교환 경로를 제공한다. 컨트롤 버스(Control bus)는 기능 블록들(IPs) 간의 제어 신호를 전달하는 경로를 제공한다. 하지만, 시스템 인터커넥터(190)의 구성은 상술한 설명에만 국한되지 않으며, 효율적인 관리를 위한 중재 수단들을 더 포함할 수 있다.
이상의 설명에 따르면, 모바일 장치(100)는 CPU(110)에 할당되는 런어블 태스크의 수와 CPU 구동 전압 및 구동 클록을 동시에 고려하여 코어의 핫플러그-인(Hotplug-in) 또는 핫플러그-아웃(Hotplug-out)을 수행한다. 특히, 본 발명의 모바일 장치(100)는 런큐에 로드된 태스크의 수와 CPU 구동 전압 및 구동 클록의 누적된 샘플링 결과를 사용하여 핫플러그 동작을 수행한다. 즉, 모바일 장치(100)는 미리 정해진 시간 구간 동안 복수 회 샘플링된 런큐에 로드된 태스크 수와 CPU 구동 전압 및 구동 클록이 핫플러그 조건을 만족할 때에만 핫플러그-인(Hotplug-in) 또는 핫플러그-아웃(Hotplug-out)을 수행한다.
이러한 기능에 따라 본 발명의 모바일 장치(100)는 실시간으로 변화하는 멀티-코어들 각각의 구동 환경에 최적화된 태스크 할당이 가능하다. 그리고 멀티-코어들이 불필요하게 온라인 상태(On line: 전원 공급 상태)에서 아무런 연산을 수행하지 않는 유휴 상태(Idle)로 존재하는 상황을 최소화할 수 있다. 따라서 전력 효율의 향상이 가능하다.
도 2는 도 1의 CPU(110)의 구조를 예시적으로 보여주는 도면이다. 도 2를 참조하면, CPU(110)는 단일 파워 도메인(Single Power Domain)에 포함되는 동종(Homogenous)의 멀티-코어(Multi-Core)를 포함할 수 있다. 하지만, 본 발명의 이점은 이종(Heterogeneous)의 멀티-코어(Multi-Core)로 구성되는 CPU(110)에서도 용이하게 적용될 수 있음은 잘 이해될 것이다.
도 2를 참조하면, 각기 독립된 파워 도메인(Single Power Domain)에 포함되는 코어들(111, 112, 113, 114)에는 동일한 전원 전압(VDD) 및 동일한 구동 클록(CLK)이 제공될 수 있다. 예를 들면, 코어들(111, 112, 113, 114) 각각에 제공되는 구동 전압들(VDD1, VDD2, VDD3, VDD4)은 1.2V, 1.0V, 0.8V, 0.6V의 전압들 중 어느 하나의 동일한 크기의 값으로 제공될 수 있을 것이다. 그리고 코어들(111, 112, 113, 114) 각각에 제공되는 클록들(CLK1, CLK2, CLK3, CLK4)은 동일한 주파수의 구동 클록(CLK)으로 제공될 수 있다. 동적 전압 주파수 스케일링(Dynamic Voltage Frequency Scaling: 이하, DVFS) 기법에 따라 CPU(110)를 제어하는 경우, 구동 전압과 클록 주파수의 변화는 코어들(111, 112, 113, 114) 모두에 공통으로 적용될 것이다.
하지만, 코어들(111, 112, 113, 114) 각각은 핫플러그 방식에 의해서 전원이 차단되거나 연결될 수 있다. 즉, 코어(111)만이 할당된 태스크를 수행하고 나머지 코어들(112, 113, 114)은 일정 시간 동안 유휴 상태(Idle)로 존재하는 경우, 코어들(112, 113, 114)의 전원은 차단될 수 있다. 이러한 동작을 핫플러그-아웃(Hotplug-out)이라 한다. 반면, 활성화된 코어(111)에서 처리하기에 과중한 로드가 존재하는 경우, 핫플러그-아웃에 의해서 전원이 차단된 코어들(112, 113, 114) 중에서 적어도 하나에 전원을 제공하여 태스크 처리가 가능한 상태로 변경할 수 있다. 이러한 동작을 핫플러그-인(Hotplug-in)이라 한다. 이러한 멀티-코어 구조의 CPU(110)에서 핫플러그 방식에 의한 제어는 하드웨어[예를 들면, 성능 컨트롤러(140)]에서 지원하지만, 핫플러그-아웃이나 핫플러그-인의 결정은 운영 체제(OS)의 커널(Kernel)에서 이루어질 것이다.
도 3은 도 1의 모바일 장치의 소프트웨어 구조를 보여주는 블록도이다. 도 3을 참조하면, 워킹 메모리(130)에 로드되고 CPU(110)에 의해서 구동되는 모바일 장치(100)의 소프트웨어 계층 구조는 간략히 응용 프로그램(132)과 커널(Kernel, 134)로 구분될 수 있다. 물론, 운영 체제(OS)에는 메모리나 모뎀, 이미지 처리 장치와 같은 다양한 장치들을 관리하는 장치 드라이버(Device driver)가 더 포함될 수 있을 것이다.
응용 프로그램(132)은 기본적인 서비스로서 구동되거나, 사용자의 요청에 의해서 구동되는 상위 계층의 소프트웨어이다. 다양한 서비스를 제공하기 위하여 동시에 복수의 응용 프로그램들(App0, App1, App2, App3)이 실행될 수 있다. 실행되는 응용 프로그램들(App0, App1, App2, App3)은 워킹 메모리(130)에 로드된 후에 CPU(110)에 의해서 실행될 것이다. 예를 들면, 사용자에 의해서 동영상 파일의 재생이 요청되면, 동영상을 재생하기 위한 응용 프로그램(예를 들면, 비디오 플레이어)이 실행된다. 그러면, 실행된 플레이어는 사용자가 요청한 동영상 파일을 재생하기 위한 저장 장치(170)로의 읽기 요청(Read request) 또는 쓰기 요청(Write request)을 생성할 것이다.
커널(134)은 운영 체제(OS)의 구성으로, 응용 프로그램(132)과 하드웨어(Hardware) 사이에서 제어 동작을 수행한다. 커널(134)은 프로그램의 실행, 인터럽트, 멀티 태스킹, 메모리 관리, 파일 시스템, 그리고 장치 드라이버 등을 포함할 수 있다. 본 발명에서, 커널(134)의 일부로 제공되는 스케줄러(135) 및 CPU 거버너(137)에 대해서만 설명하기로 한다.
커널(134)은 스케줄러(135)와 CPU 거버너(137)를 포함할 수 있다. 스케줄러(135)는 멀티-코어(111, 112, 113, 114)들 각각에 대한 런큐(Run Queue)를 모니터링하고 관리한다. 런큐(Run Queue)는 복수의 태스크(Tasks)들이 동시에 수행될 때, 활성화된 태스크(Active tasks)들의 대기열을 의미한다. 즉, 런큐(Run Queue)에 존재하는 태스크들은 다른 태스크들에 비해서 CPU(110)에 의해 곧 처리될 태스크들이다. 스케줄러(135)는 런큐(Run Queue)에 로드된 태스크 정보를 참조하여 현재의 후속되는 프로세스를 결정하게 될 것이다. 즉, 스케줄러(135)는 런큐(Run Queue)의 값에 따라 CPU 자원의 우선 순위를 결정하게 된다. 리눅스 커널(Linux Kernel)에서 런큐는 도시된 바와 같이 멀티-코어들 각각에 대응하는 런큐(Run Queue)를 가진다. 예를 들면, 런큐(RQ_1)는 제 1 코어(Core_1, 111)에 의해서 수행될 태스크가 로드되고, 런큐(RQ_2)는 제 2 코어(Core_2, 112)에 의해서 수행될 태스크가 로드될 수 있다. 마찬가지로, 런큐(RQ_3)는 제 3 코어(Core_3, 113)에 의해서 수행될 태스크가 로드되고, 런큐(RQ_4)는 제 4 코어(Core_4, 114)에 의해서 수행될 태스크가 로드될 수 있다.
스케줄러(135)는 런큐들(RQ_1, RQ_2, RQ_3, RQ_4) 각각에 대응하는 태스크들을 해당하는 코어에 할당할 것이다. 여기서, 런큐들(RQ_1, RQ_2, RQ_3, RQ_4)에 로드되어 CPU(110)에 의해서 수행될 태스크들을 런어블 태스크(Runnable task)라고 한다. 스케줄러(135)는 런어블 태스크(Runnable task)의 수를 특정 샘플링 주기 동안 모니터링하여 CPU(110)의 코어들의 핫플러그 동작을 제어할 수 있다.
예를 들면, 런어블 태스크(Runnable task)의 수가 현재 온라인(On-line) 상태로 관리되는 코어의 수보다 기준치 이상으로 많아지는 경우, 스케줄러(135)는 샘플링된 시점에서의 핫플러그-인(Hotplug-in) 조건을 충족하는 것으로 판단한다. 반면, 현재의 런어블 태스크(Runnable task)의 수가 현재 온라인(On-line) 상태로 관리되는 코어의 수보다 기준치 이하로 검출되는 경우, 스케줄러(135)는 현재 시점에서는 핫플러그-아웃(Hotplug-out) 조건을 충족하는 것으로 판단할 것이다.
본 발명에서는 런어블 태스크 수를 온라인 상태의 코어 수의 수로 나눈 런어블 태스크 비율(RT)을 정의한다. 런어블 태스크 비율(RT)은 1보다 클 경우 현재의 런어블 태스크가 지연될 가능성이 있음을 나타낸다. 이때, 온라인 상태의 코어의 수와 런어블 태스크 수 사이에 오프셋을 추가로 고려하여 런어블 태스크 비율이 1보다 커지는 기준치를 조정할 수 있다. 즉, 런어블 태스크 비율(RT)은 ‘(런어블 태스크 수 + 오프셋) / 온라인 상태의 코어 수’로 계산되거나 혹은 ‘(런어블 태스크 수) / (온라인 상태의 코어수 + 오프셋)’으로 계산될 수 있다. 하지만, 런어블 태스크 비율(RT)의 기준은 이에 한정되지 않고, 런어블 태스크가 지연될 가능성을 나타낼 수 있는 다른 형태의 지수(index)도 채택 가능하다.
하지만, 본 발명의 커널(134)은 핫플러그 동작을 어느 한 시점의 판단에만 근거하지 않고 누적된 조건에 근거하여 수행할 수 있다. 즉, 본 발명의 스케줄러(135)는 런어블 태스크(Runnable task)의 수 및 온라인 상태의 코어의 수를 일정 시간 간격으로 샘플링할 수 있다. 예를 들면, 스케줄러(135)는 샘플링 주기마다 특정 시점으로부터 현재까지의 제 1 시간 구간(ΔT1) 동안의 런어블 태스크(Runnable task)의 수와 온라인 상태의 CPU 코어의 수를 기초로 런어블 태스크 비율(RT)을 누적하여 핫플러그-인 또는 핫플러그-아웃 조건을 만족하는지 검출한다.
CPU 거버너(137)는 커널(134) 내에서 CPU(110)의 구동 전압 및 구동 클록을 구할 수 있다. CPU(110)의 구동 전압 및 구동 클록에 따라 구동 클록(CLK)의 주파수나 구동 전압(VDD)의 레벨이 결정될 수 있다. 하지만, CPU(110)의 구동 전압 및 구동 클록은 여기에 개시된 것들에만 국한되지 않음을 잘 이해될 것이다. CPU 거버너(137)는 커널(134)이나 스케줄러(135)의 요청에 따라 CPU(110)의 구동 전압과 구동 클록 주파수를 조정할 수 있다. 물론, 커널(134) 계층에서 구동되는 CPU 거버너(137)의 제어에 따라 하드웨어적으로 CPU(110)의 구동 클록 주파수나 구동 전압의 레벨을 조정하는 구성이 존재할 수 있다. 예를 들면, 소프트웨어인 커널(134)의 호출에 따라 CPU(110)나 다양한 구성들의 구동 클록, 구동 전압을 가변하는 퍼포먼스 컨트롤러(140)가 이러한 CPU(110)의 구동 전압 및 구동 클록을 하드웨어적으로 제어할 수 있을 것이다.
커널(134)은 CPU(110)의 구동 전압 및 구동 클록을 런어블 태스크(Runnable task)의 수 및 온라인 상태의 코어 수를 샘플링하는 주기 및 시점과 동일하거나 다른 주기 및 시점에 샘플링할 수 있다. 커널(134)은 샘플링 주기마다 제 2 시간 구간(ΔT2) 동안 CPU(110)의 구동 전압 및 구동 클록이 지속적으로 핫플러그-인 또는 핫플러그-아웃 조건을 만족하는지 검출한다.
커널(134)은 제 1 시간 구간(ΔT1) 및 제 2 시간 구간(ΔT2)에서 런어블 태스크 비율(RT)과 CPU 구동 전압 및 구동 클록(VF)이 모두 핫플러그-인 또는 핫플러그-아웃 조건을 만족할 경우에만 핫플러그 동작을 수행한다. 그러나 런어블 태스크 비율(RT)과 CPU 구동 전압 및 구동 클록(VF) 중 적어도 하나가 핫플러그 조건을 충족하지 않으면, 커널(134)은 현재 CPU(110)의 온라인 코어 수를 유지할 것이다.
이상의 운영 체제(OS)의 커널(134) 계층에서 수행되는 본 발명의 멀티-코어 프로세서의 전력 관리 방법이 간략히 설명되었다. 본 발명의 실시 예에 따르면, 정해진 시간 동안의 런어블 태스크 비율(RT)과 CPU 구동 전압 및 구동 클록(VF) 각각이 핫플러그 조건을 충족하는 경우에 본 발명의 핫플러그-인 또는 핫플러그-아웃을 수행하게 될 것이다. 따라서, 현재 시점에서의 런어블 태스크 비율(RT)과 CPU 구동 전압 및 구동 클록(VF) 중에서 어느 하나의 조건만 충족되면 핫플러그 동작을 수행하는 경우에 발생하는 불필요한 핫플러그 동작이 차단될 수 있다.
도 4는 본 발명의 실시 예에 따른 핫플러그 조건을 예시적으로 보여주는 테이블이다. 도 4를 참조하면, 커널(134)은 런어블 태스크 비율(RT)과 CPU 구동 전압 및 구동 클록(VF)에 따라 핫플러그 동작을 수행할 수 있다.
CPU 구동 전압 및 구동 클록(VF)은, 예를 들면, 두 가지 레벨로 분류될 수 있다. 즉, 기준 주파수 이상으로 CPU(110)의 구동 클록 주파수가 일정 시간 동안 유지되면, CPU 구동 전압 및 구동 클록은 높은 구동 전압과 구동 클록(High Voltage/Frequency)로 결정될 수 있을 것이다. 반면, CPU(110)의 구동 클록 주파수가 기준 주파수 미만으로 일정 시간 동안 유지되면, CPU 구동 전압 및 구동 클록은 낮은 구동 전압과 구동 클록(Low Voltage/Frequency)로 결정될 수 있을 것이다. 하지만, CPU의 구동 전압 및 구동 클록(VF)은 여기에 개시된 방법 외에도 다양한 레벨로 정의될 수 있음은 잘 이해될 것이다. 특히, 런어블 태스크 비율(RT)과 CPU 구동 전압 및 구동 클록(VF)은 각각 정해진 시간 동안 복수 회 샘플링된 결과들의 누적치임은 잘 이해될 것이다.
현재 런어블 태스크 비유(RT)이 1보다 크고, CPU 구동 전압 및 구동 클록(VF)은 낮은 구동 전압과 구동 클록(Low Voltage/Frequency) 상태인 경우를 고려해 보기로 한다. 이런 상태는 런어블 태스크 비율(RT)이 1보다 큰 상태인데도 CPU 거버너(137)에 의해서 결정된 CPU 구동 전압 및 구동 클록(VF)이 낮다는 것은 추가적인 핫플러그-인 없이 현재의 온라인 코어들에 의해서도 태스크의 처리에는 문제가 없음을 나타낸다. 따라서 CPU(110)의 현재의 구동 상태를 유지해도 무관함을 의미한다.
반면, 현재 런어블 태스크 비율(RT)이 1보다 크고, CPU 구동 전압 및 구동 클록(VF)은 높은 구동 전압과 구동 클록(High Voltage/Frequency) 상태인 경우를 고려해 보기로 하자. 런어블 태스크 비율(RT)이 1보다 크고, CPU 구동 전압 및 구동 클록(VF)도 높다는 것은 추가적인 핫플러그-인이 필요한 상태임을 나타낸다. 따라서, 현재 오프라인 상태로 관리되는 어느 하나의 코어를 선택하여 핫플러그-인을 수행해야 한다. 그리고 어느 하나의 코어에 집중된 태스크들을 핫플러그-인된 코어로 분산하여, 워크 로드를 균형을 유지하게 될 것이다.
만약, 런어블 태스크 비율(RT)이 1보다 작거나 같고, CPU 구동 전압 및 구동 클록(VF)은 낮은 구동 전압과 구동 클록(Low Voltage/Frequency) 상태인 경우를 고려해 보기로 한다. 이런 상태는 런어블 태스크 비율(RT)과 CPU 구동 전압 및 구동 클록(VF) 모두가 특정 시간 동안 핫플러그-아웃 조건을 유지하고 있음을 나타낸다. 즉, 적어도 하나의 코어는 유휴 상태(Idle)로 존재함을 나타낸다. 따라서, 커널(134)은 유휴 상태로 존재하는 어느 하나의 코어를 선택하여 핫플러그-아웃시킬 것이다.
현재 런어블 태스크 비율(RT)이 1보다 작거나 같고, CPU 구동 전압 및 구동 클록(VF)은 높은 구동 전압과 구동 클록(High Voltage/Frequency) 상태인 경우를 고려해 보기로 하자. 런어블 태스크 비율(RT)이 1보다 작음에도 CPU 구동 전압 및 구동 클록(VF)이 높다는 것은 현재 실행중인 태스크의 연산량이 많음을 나타낼 수 있다. 따라서, 이 경우에도 현재의 CPU(110)의 현재 구동 상태를 유지하게 될 것이다.
이상에서는 본 발명의 개념을 간략하게 설명하기 위한 핫플러그 동작의 조건 테이블이 설명되었다. CPU 구동 전압 및 구동 클록(VF) 그리고 런어블 태스크 비율(RT)을 각각 2가지 경우로 분류하여 본 발명의 특징이 설명되었다. 하지만, CPU 구동 전압 및 구동 클록 및 런어블 태스크 비율(RT)에 대한 기준은 다양한 케이스들로 보다 세부적으로 분류하여 본 발명의 핫플러그 동작 조건이 설명될 수 있을 것이다.
도 5는 본 발명의 CPU 구동 전압 및 구동 클록(VF)의 예를 간략히 보여주는 그래프이다. 도 5를 참조하면, CPU 구동 전압 및 구동 클록(VF)은 온라인 상태에 있는 코어의 구동 전압과 구동 클록의 주파수를 확인하여 결정될 수 있다. 여기서, 구동 전압과 구동 클록은 DVFS 과정 후에는 서로 연관되어 조정된다. 구동 전압과 구동 클록 각각의 증감은 일반적으로 같은 방향으로 변화하는 경향이 있다. 따라서, 구동 전압과 구동 클록의 주파수 중에서 어느 하나만을 측정하여도 핫플러그-인 또는 핫플러그-아웃을 결정할 수도 있다. 도 5에서는, CPU의 구동 전압 및 구동 클록을 샘플링할 때, 구동 클록을 샘플링하는 경우를 예로 들어 설명하기로 한다. 구동 클록의 주파수 샘플링시, 기준이 되는 주파수를 기준 주파수(fr)이라 칭하기로 한다. 그리고 높은 주파수의 구동 클록에 대응하는 클록 주파수(f_clk)는 기준 주파수(fr)에 비하여 특정 크기(Δf) 이상으로 높은 주파수 대역(High Region)이다. 낮은 주파수의 구동 클록에 대응하는 클록 주파수(f_clk)는 기준 주파수(fr)에 비하여 특정 크기(Δf) 이하로 낮은 주파수 대역(Low Region)이다. 그리고 기준 주파수(fr)에 비하여 동작 주파수 차이가 특정 크기(Δf) 이하의 영역에 속하는 주파수 대역은 보통 주파수 대역(Normal Region)로 나타낼 수 있다. 여기서, 각각의 시점들(t0 ~ t8)는 CPU 구동 클록이 샘플링되는 시점이라 가정하기로 한다.
구동 클록(CLK)의 주파수(f_clk)는 처음에는 낮은 주파수 영역(Low Region)에서 시작되는 것으로 가정하기로 한다. 이어서 시점(t0) 이후에 기준 주파수(fr)로 구동 클록의 주파수(f_clk)가 상승하게 된다. 여기서, 도시되지는 않았지만, 동적 전압 주파수 스케일링(DVFS) 방식으로 구동되는 CPU(110)에서, 구동 클록의 주파수(f_clk)는 구동 전압의 레벨에 동반하여 상승할 수 있음은 잘 이해될 것이다. 이어서, 시점(t1)이 경과하고 시점(t2)가 되기 전에 구동 클록의 주파수(f_clk)는 낮아져서 낮은 주파수 대역(Low Region)으로 진입한다. 그리고 구동 클록의 주파수(f_clk)는 시점(t4)이 지난 시점까지 낮은 주파수 영역(Low Region)에 속한 값을 유지하게 될 것이다. 이어서, 구동 클록의 주파수(f_clk)는 시점(t4) 이후에 높은 주파수 대역(High Region)로 증가한다. 그리고 구동 클록의 주파수(f_clk)는 시점(t8)이 지난 시점까지 높은 주파수 대역(High Region)의 값을 유지하다가 기준 주파수(fr)로 복귀한다. CPU 구동 전압에 대한 샘플링도 CPU 구동 클록의 주파수 샘플링과 같은 방법으로 수행될 수 있으므로 자세한 설명은 생략한다. CPU 구동 전압 및 구동 클록의 주파수를 샘플링할 때는 도 1의 성능 테이블(142)를 주기적으로 읽어내어 CPU 구동 전압 및 구동 주파수를 확인할 수 있다.
위에서, CPU의 주파수 변화를 예로 들어 CPU 구동 전압 및 구동 클록의 샘플링 방법이 설명되었다. CPU 구동 전압 및 구동 클록(VF)의 샘플링은 시점들(t0, t1, t2,…, t8) 각각에서 수행된다. 그러나 CPU 구동 전압 및 구동 클록(VF)은 어느 한 시점에서의 크기로 제공되기보다는 일정한 시간 구간 동안(ΔT) 누적된 값을 참조하여 결정될 수 있다. 즉, CPU 구동 전압 및 구동 클록(VF)은 연속된 복수의 샘플링 값이 일정한 값을 유지하는 경우에 핫플러그 조건을 만족하는 것으로 이해될 수 있다. 예를 들면, 시점(t2)에서 샘플링된 CPU의 상태가 낮은 구동 전압과 구동 클록(Low Rgeion)에 해당하고, 그 이전 시점(t1)에서는 일반 상태(Normal Region)이기 때문에 핫플러그 조건을 만족하지 않는 것으로 결정될 수 있다. 반면, 시점(t4)에서 샘플링이 수행되면, 연속된 3회의 샘플링 시점(t2, t3, t4) 동안 낮은 구동 전압과 구동 클록(Low Rgeion)이 지속되고 있으므로, 핫플러그 조건을 충족하는 것으로 판단할 수 있다.
부가적으로 시점(t5)에서는 비록 높은 구동 전압과 구동 클록(High Region)으로 샘플링 되었지만, 이전의 샘플링 시점들(t3, t4)에서는 낮은 구동 전압과 구동 클록으로 샘플링 되었기 때문에 핫플러그 조건을 충족하지 못하는 것으로 볼 수 있다. 반면, 시점(t7)에서는 이전의 샘플링 시점들(t5, t6)에서부터 동일한 높은 구동 전압과 구동 클록을 유지하고 있기 때문에 핫플러그 조건을 충족하는 것으로 볼 수 있다. 이 경우, 시점(t7)에서는 CPU 구동 전압 및 구동 클록(VF)이 핫플러그 조건을 만족하는 높은 구동 전압과 구동 클록으로 제공될 것이다.
이상에서는 누적된 CPU 구동 전압 및 구동 클록(VF)을 사용하여 핫플러그 조건을 충족하는지 결정하는 예가 설명되었다. 하지만, 이러한 방법은 본 발명의 예시에 불과하며 다양한 방법 및 기준에 따라 CPU 구동 전압 및 구동 클록(VF)의 누적값을 결정할 수 있음은 이 분야의 당업자들에게는 잘 이해될 것이다.
도 6은 본 발명의 런어블 태스크의 비율(RT)를 결정하는 예를 간략히 보여주는 그래프이다. 도 6을 참조하면, 런어블 태스크 비율(RT)은 런어블 태스크의 수가 현재 온라인 상태로 존재하는 코어의 수에 대비하여 많은지 적은지의 여부로 검출될 수 있다. 여기서는, 런어블 태스크 비율(RT)을 모니터링하기 위하여 런어블 태스크 수와 온라인 상태의 코어 수 사이에 설정된 오프셋(Off-set)은 0으로 가정하였다.
점선으로 도시된 라인은 온라인 상태로 유지되는 코어의 수의 변화를 나타낸다. 그리고 실선으로 표시한 라인은 실시간으로 변화하는 런어블 태스크 비율(RT)을 나타낸다. 그리고 각각의 시점들(t0~t8)은 런어블 태스크의 수 및 온라인 상태의 코어 수를 샘플링하는 시점이라 가정하기로 한다.
멀티-코어들 각각에 대응하는 런큐(Run Queue)에 로드된 태스크의 수가 스케줄러(134)에 의해서 모니터링된다. 특히, 런어블 태스크 비율(RT)이 일정 시간 동안 연속된 복수의 샘플링 값을 참조하여 핫플러그 조건을 충족하는 값인지 여부가 판단된다. 예를 들면, 시점(t1)에서 샘플링된 런어블 태스크의 수는 2개이고, 이때 온라인 상태의 코어의 수는 1개이다. 하지만, 이전의 시점(t0)에서는 런어블 태스크 수가 1이었으므로, 온라인 코어의 수와 동일한 상태였다. 따라서, 지속적으로 핫플러그 조건을 충족하지 못한 것으로 판단될 수 있다.
반면, 시점(t4)에서 샘플링된 런어블 태스크 수는 3개이고, 이때 온라인 상태의 코어의 수는 2개이다. 따라서, 런어블 태스크의 수가 온라인 상태인 코어의 수보다 많다. 더불어, 이전의 샘플링 시점(t3)에서도 런어블 태스크 수는 온라인 상태의 코어의 수보다 많은 것으로 샘플링되었다. 따라서, 스케줄러(134)는 런어블 태스크 비율(RT)이 핫플러그 조건을 충족하는 것으로 판단할 수 있을 것이다. 즉, 정해진 복수의 연속된 샘플링 시점에서 런어블 태스크의 수가 온라인 코어 수보다 적거나 많은 경우에는 핫플러그 조건을 충족하는 것으로 결정된다. 반면, 연속된 복수의 샘플링 시점에서 런어블 태스크 수의 변동이 심하거나 온라인 상태로 존재하는 코어들의 수와 동일한 경우에는 핫플러그 조건을 충족하지 못하는 것으로 판단할 수 있다.
여기서, 런어블 태스크의 수가 온라인 코어의 수에 대한 상대적인 차이가 샘플링되는 것으로 본 발명의 실시 예가 설명되었다. 하지만, 본 발명의 실시 예는 여기에만 국한되지 않는다. 런어블 태스크 수가 특정 수 이상으로 증가하는 지의 여부에 따라 핫플러그 조건을 충족하는지 판단될 수도 있을 것이다.
도 7은 본 발명의 실시 예에 따른 멀티-코어의 런어블 태스크 비율(RT)과 CPU 구동 전압 및 구동 클록(VF)을 판단하는 방법을 보여주는 타이밍도이다. 도 7을 참조하면, 커널(134)은 특정 시간 동안 샘플링된 런어블 태스크 비율(RT)과 CPU 구동 전압 및 구동 클록(VF)을 동시에 참조하여 핫플러그 조건을 충족하는지 판단할 것이다. 여기서, 런어블 태스크 비율(RT)에 대한 핫플러그 조건을 판단하기 위한 시간 구간(ΔT1)은 CPU 구동 전압 및 구동 클록(VF)을 판단하기 위한 시간 구간(ΔT2)과 다른 값으로 설정될 수 있다. 왜냐하면, 런큐에 로드되는 태스크의 수의 변화 주기는 CPU 구동 전압 및 구동 클록(VF)의 변화 주기에 비해서 상대적으로 짧을 수 있기 때문이다.
먼저, 시점(T4)에서 런어블 태스크 비율(RT)이 실시간으로 샘플링될 것이다. 그리고 시점(T0)으로부터 누적된 런어블 태스크 비율(RT)이 지속적으로 핫플러그 조건을 충족하는지 평가될 것이다. 시간 구간(T0~T4) 동안 샘플링된 런어블 태스크 비율(RT)의 변화가 핫플러그 조건을 충족할 정도로 일정하게 유지되는지 판단될 것이다. 즉, 런어블 태스크 비율(RT)이 시간 구간(T0~T4) 동안 온라인 코어의 수에 비해서 적은 상태를 유지하는지, 또는 많은 상태를 유지하는지가 검출될 것이다. 여기서, 런어블 태스크의 수가 시간 구간(T0~T4) 동안 온라인 코어의 수에 비해서 적은 상태를 유지하는 것으로 가정하자. 시점(T4)에서의 CPU 구동 전압 및 구동 클록(VF)에 대한 핫플러그 조건은 평가되지 못한 상태이기 때문에, 시점(T4)의 샘플링 결과를 사용하여 멀티-코어에 대한 핫플러그 동작은 수행되지 않을 것이다.
이어서, 시점(T5)에서 런어블 태스크 비율(RT)이 실시간으로 샘플링될 것이다. 그리고 시점(T1)으로부터 누적된 런어블 태스크 비율(RT)이 지속적으로 핫플러그 조건을 충족하는지 평가될 것이다. 시간 구간(T1~T5) 동안 샘플링된 런어블 태스크 비율(RT)의 변화가 핫플러그 조건을 충족할 정도로 일정하게 유지되면, 스케줄러(135, 도 3 참조)는 런어블 태스크 비율(RT)에 있어서는 핫플러그 조건을 충족하는 것으로 판단한다. 더불어, 시점(T5)에서 시간 구간(T0~T5) 동안의 CPU 구동 전압 및 구동 클록(VF)에 대한 샘플링 결과를 참조하여 핫플러그 조건의 충족 여부가 평가될 것이다. 시간 구간(T0~T5) 동안 샘플링된 CPU 구동 전압 및 구동 클록(VF)의 변화가 핫플러그 조건을 충족할 정도로 일정하게 유지되면, 커널(134)은 도 4에서 설명된 기준에 따라 핫플러그-인 또는 핫플러그-아웃을 결정할 것이다.
시점(T6)에서 런어블 태스크 비율(RT) 및 CPU 구동 전압 및 구동 클록(VF)에 대한 샘플링이 수행된다. 그러나 시점(T6)에서 CPU 구동 전압 및 구동 클록(VF)의 누적된 값은 핫플러그 조건을 충족하지만, 런어블 태스크 비율(RT)의 누적값은 핫플러그 조건을 충족하지 못하는 것으로 평가되었다. 따라서, 이 경우에는 현재의 CPU(110) 구동 상태를 유지하게 될 것이다.
시점(T7)에서는 런어블 태스크 비율(RT) 및 CPU 구동 전압 및 구동 클록(VF)이 각각 모니터링될 것이다. 즉, 시점(T3)으로부터 샘플링된 런어블 태스크 비율(RT)이 지속적으로 핫플러그 조건을 충족하는지 평가될 것이다. 더불어, 시점(T2)으로부터 시점(T7)까지의 CPU 구동 전압 및 구동 클록(VF)의 변화가 핫플러그 조건을 충족하는지 평가될 것이다. 시점(T7)에서 평가된 런어블 태스크 비율(RT) 및 CPU 구동 전압 및 구동 클록(VF)의 누적값은 모두 핫플러그 조건을 충족하는 것으로 평가되었다. 따라서, 커널(134)은 도 4에서 설명된 기준에 따라 핫플러그-인 또는 핫플러그-아웃을 결정할 것이다.
이상에서 설명된 방식으로 런어블 태스크 비율(RT) 및 CPU 구동 전압 및 구동 클록이 각각의 샘플링 시점에서 누적된 값에 근거하여 핫플러그 조건을 충족하는지 판단된다. 그리고 그 판단 결과에 따라 멀티-코어 프로세서의 핫플러그-인 또는 핫플러그-아웃 또는 현재의 CPU 구동 상태를 유지할지 결정된다. 이러한 제어 방법에 따르면, 어느 하나의 조건만으로 핫플러그 동작을 수행하는 것에 비해서 멀티-코어 프로세서의 각 코어들이 유휴 상태(Idle)로 존재하는 시간을 줄일 수 있다. 따라서, 멀티 코어 프로세서의 전력 효율을 극대화할 수 있을 것이다.
도 8은 본 발명의 일 실시 예에 따른 멀티-코어 프로세서의 제어 방법을 간략히 보여주는 순서도이다. 도 8을 참조하면, 특정 시점에서 CPU 구동 전압 및 구동 클록(VF)과 런어블 태스크 비율(RT) 각각의 누적값이 모니터링되고, 그 결과에 따라 본 발명의 멀티-코어 프로세서의 핫플러그 동작이 수행될 것이다.
S110 단계에서, 커널(134)의 스케줄러(135) 및 CPU 거버너(137)에 의해서 현재 시점에서의 런어블 태스크 비율(RT) 및 CPU 구동 전압 및 구동 클록(VF)이 각각 모니터링될 것이다. 즉, 제 1 시간(ΔT1) 동안 샘플링된 런어블 태스크 비율(RT)이 계산될 것이다. 더불어, 제 2 시간(ΔT2) 동안의 CPU 구동 전압 및 구동 클록(VF)이 검출될 것이다.
S120 단계에서, 런어블 태스크 비율(RT) 및 CPU 구동 전압 및 구동 클록(VF)에 따른 핫플러그 동작의 방향이 결정된다. 즉, 검출된 CPU 구동 전압 및 구동 클록(VF)이 높은 구동 전압 및 구동 클록(High V/F)이고, 런어블 태스크 비율(RT)이 1보다 큰 경우(High), 절차는 S130 단계로 이동한다. 그리고 검출된 CPU 구동 전압 및 구동 클록(VF)이 높은 구동 전압 및 구동 클록(High V/F)이고, 런어블 태스크 비율(RT)이 1보다 작거나 같을 경우(Low), 절차는 S140 단계로 이동한다. 반대로, 검출된 CPU 구동 전압 및 구동 클록(VF)이 낮은 구동 전압 및 구동 클록(Low V/F)이고, 런어블 태스크 비율(RT)이 1보다 큰 경우(High)에도 절차는 S140 단계로 이동한다. 그리고 검출된 CPU 구동 전압 및 구동 클록(VF)이 낮은 구동 전압 및 구동 클록(Low V/F)이고, 런어블 태스크 비율(RT)이 1보다 작거나 같은 경우(Low), 절차는 S150 단계로 이동한다.
S130 단계에서, 커널(134)은 오프라인 상태로 존재하는 어느 하나의 코어를 활성화한다. 그리고 활성화된 코어에 런큐에 로드된 태스크를 할당하기 위한 핫플러그-인 동작을 수행할 것이다.
S140 단계에서, 커널(134)은 현재의 CPU 구동 조건을 유지할 것이다. 즉, 핫플러그-인 또는 핫플러그-아웃 동작의 수행없이 런큐에 로드된 태스크를 현재 활성화된 코어들에 할당하여 처리할 것이다.
S150 단계에서, 커널(134)은 온라인 상태로 존재하는 코어들 중에서 어느 하나를 파워-오프시키는 핫플러그-아웃 동작을 수행할 것이다.
이상의 절차들은 각각의 CPU 구동 전압 및 구동 클록(VF)과 런어블 태스크 비율(RT)의 샘플링 시점마다 반복될 것이다. 즉, CPU 구동 전압 및 구동 클록(VF)과 런어블 태스크 비율(RT)이 샘플링되면, 제 1 시간(ΔT1) 동안 샘플링된 런어블 태스크 비율(RT)의 변화와 그리고 제 2 시간(ΔT2) 동안 샘플링된 CPU 구동 전압 및 구동 클록(VF)의 변화를 동시에 고려하여 핫플러그 조건이 평가될 것이다.
도 9는 본 발명의 다른 실시 예에 따른 멀티-코어 프로세서의 제어 방법을 간략히 보여주는 순서도이다. 도 9를 참조하면, 특정 시점에서 CPU 구동 전압 및 구동 클록(VF)과 런어블 태스크 비율(RT)이 모니터링되고, 핫플러그 동작의 조건이 결정된다.
S210 단계에서, 커널(134)의 스케줄러(135) 및 CPU 거버너(137)에 의해서 현재 시점에서의 런어블 태스크 비율(RT) 및 CPU 구동 전압 및 구동 클록(VF)이 각각 모니터링될 것이다.
S220 단계에서, 현재의 CPU 구동 전압 및 구동 클록(VF)과 런어블 태스크 비율(RT)이 결정된다. 예를 들면, 현재 CPU의 구동 클록의 주파수를 참조하여 CPU의 사용율(VF)이 결정된다. 그리고 런어블 태스크 비율(RT)이 결정될 수 있다.
S230 단계에서, 누적된 CPU 구동 전압 및 구동 클록(VF) 및 누적된 런어블 태스크 비율(RT)이 계산된다. 즉, 현재 시점으로부터 제 1 시간(ΔT1) 이전까지의 샘플링된 런어블 태스크 비율(RT)의 변화가 검출될 것이다. 더불어, 현재 시점으로부터 제 2 시간(ΔT2) 이전까지 샘플링된 CPU 구동 전압 및 구동 클록(VF)의 변화가 계산될 수 있다.
S240 단계에서, 누적된 CPU 구동 전압 및 구동 클록(VF) 및 누적된 런어블 태스크 비율(RT)을 참조하여 핫플러그 조건을 만족하는지 평가될 것이다. 여기서, 핫플러그 조건을 만족하지 않는 경우(No 방향), 절차는 S280 단계로 이동하여 현재 CPU 상태를 유지하게 될 것이다. 반면, 핫플러그 조건을 만족하는 경우(Yes 방향), 절차는 S250 단계로 이동한다.
S250 단계에서, 런어블 태스크 비율(RT) 및 CPU 구동 전압 및 구동 클록(VF)에 따른 핫플러그 동작의 방향이 결정된다. 즉, 검출된 CPU 구동 전압 및 구동 클록(VF)이 높은 구동 전압 및 구동 클록(High V/F)이고, 런어블 태스크 비율(RT)이 1보다 큰 경우(High), 절차는 S260 단계로 이동한다. 그리고 검출된 CPU 구동 전압 및 구동 클록(VF)이 높은 구동 전압 및 구동 클록(High V/F)이고, 런어블 태스크 비율(RT)이 1보다 작거나 같은 경우(Low), 절차는 S280 단계로 이동한다. 반대로, 검출된 CPU 구동 전압 및 구동 클록(VF)이 낮은 구동 전압 및 구동 클록(Low V/F)이고, 런어블 태스크 비율(RT)이 1보다 큰 경우(High), 절차는 S280 단계로 이동한다. 그리고 검출된 CPU 구동 전압 및 구동 클록(VF)이 낮은 구동 전압 및 구동 클록(Low V/F)이고, 런어블 태스크 비율(RT)이 1보다 작거나 같은 경우(Low), 절차는 S270 단계로 이동한다.
S260 단계에서, 커널(134)은 오프-라인 상태로 존재하는 코어 중 적어도 하나를 활성화한다. 즉, 선택된 어느 하나의 코어에 전원을 공급하는 핫플러그-인 동작이 수행된다. 그리고 활성화된 코어에는 런큐에 로드된 태스크가 할당될 것이다.
S270 단계에서, 커널(134)은 온라인 상태로 존재하는 코어들 중에서 어느 하나를 파워-오프시키는 핫플러그-아웃 동작을 수행할 것이다.
S280 단계에서, 커널(134)은 현재의 CPU 구동 조건을 유지할 것이다. 즉, 핫플러그-인 또는 핫플러그-아웃 동작의 수행없이 런큐에 로드된 태스크를 현재 활성화된 코어들에 할당하여 처리할 것이다.
이상의 절차들은 각각의 CPU 구동 전압 및 구동 클록(VF)과 런어블 태스크 수의 샘플링 시점마다 반복될 것이다.
도 10은 본 발명의 멀티-코어 프로세서의 제어 방법을 보여주는 개념도이다. 도 10을 참조하면, 특정 주기로 발생하는 샘플링 시점에서 본 발명의 핫플러그 조건을 충족하는지 판단된다. 이후에 현재 CPU 구동 상태를 유지할지 또는 핫플러그-인이나 핫플러그-아웃을 수행할지 판단될 것이다.
S310 단계에서 샘플링이 시작된다. 샘플링의 수행은 미리 정해진 샘플링율에 근거하여 특정 주기로 이루어질 것이다. 샘플링 주기는 CPU 구동 전압 및 구동 클록과 런큐에 로드되는 태스크 비율(RT)의 변화를 동시에 반영할 수 있는 시간 주기로 설정될 것이다. 즉, 핫플러그-인이나 핫플러그-아웃을 최적의 시점에 수행하여 CPU(110)의 전력 효율을 극대화할 수 있는 주기로 설정될 수 있을 것이다.
S320a 및 S320b 단계에서, CPU 거버너(137, 도 3 참조)와 스케줄러(135, 도 3 참조)에 의한 모니터링이 실시된다. S320a 단계에서, CPU 거버너(137)는 현재 시점에서의 CPU 구동 전압 및 구동 클록(VF)을 모니터링할 것이다. CPU 구동 전압 및 구동 클록(VF)의 예로 DVFS 레벨이 사용될 수 있다. CPU 거버너(137)는 DVFS 테이블에서 현재 시점에서 CPU(110)의 파워 도메인에 제공되는 구동 클록(CLK)의 주파수를 선택할 것이다. S320b 단계에서, 스케줄러(135)는 멀티-코어 프로세서들 각각의 런큐(RQ)에 로드되는 태스크들을 취합한다. 그리고 스케줄러(135)는 각각의 런큐들에 해당하는 태스크들을 취합하여 런어블 태스크(Runnable task)로 제공할 수 있다. 여기서, S320a 및 S320b 단계는 병렬적으로 또는 동시에 수행될 수 있다.
S330a, S330b, S330c, 그리고 S330d 단계에서, 현재 시점에서의 CPU 구동 전압 및 구동 클록(VF)과 런어블 태스크 비율(RT)의 레벨이 결정된다. S330a 단계에서 현재의 CPU의 구동 클록의 주파수와 제 1 기준 주파수(fr-Δf)가 비교된다. 현재의 구동 클록 주파수가 제 1 기준 주파수(fr-Δf)보다 낮으면 현재의 CPU 구동 전압 및 구동 클록(VF)은 낮은 구동 전압 및 구동 클록으로 결정될 것이다. S330b 단계에서 현재의 CPU의 구동 클록의 주파수와 제 2 기준 주파수(fr+Δf)가 비교된다. 현재의 구동 클록 주파수가 제 1 기준 주파수(fr-Δf)보다 높으면 현재의 CPU 구동 전압 및 구동 클록(VF)은 높은 구동 전압 및 구동 클록으로 결정될 것이다. S330c, S330d 단계에서 현재의 런어블 태스크의 수와 온라인 상태로 존재하는 코어의 수(nCPU+n)가 비교된다. S330c 단계에서, 현재의 온라인 상태로 존재하는 코어의 수(nCPU)가 런어블 태스크 수보다 크거나 같으면 현재의 런어블 태스크 비율(RT)은 1보다 작거나 같은 값으로 결정될 것이다. S330d 단계에서, 현재의 온라인 상태로 존재하는 코어의 수(nCPU)가 런어블 태스크 수보다 작으면 현재의 런어블 태스크 비율(RT)은 1보다 큰 값으로 결정될 것이다.
S340a, S340b, S340c, 그리고 S340d 단계에서 누적된 CPU 구동 전압 및 구동 클록(VF)과 런어블 태스크 비율(RT)이 결정된다. S340a, S340b 단계에서 현재 시점으로부터 특정 시간(ΔT1) 이전까지의 샘플링된 CPU 구동 전압 및 구동 클록(VF)의 누적값이 계산될 것이다. S340a 단계에서는 누적된 CPU 구동 전압 및 구동 클록(VF)이 핫플러그-아웃 조건을 충족하는지 판단된다. 누적된 CPU 구동 전압 및 구동 클록(VF)이 핫플러그-아웃 조건을 충족하는 경우 논리 '1'로, 충족하지 않는 경우에는 논리 '0'으로 결과값이 생성된다. S340b 단계에서는 누적된 CPU 구동 전압 및 구동 클록(VF)이 핫플러그-인 조건을 충족하는지 판단된다. 누적된 CPU 구동 전압 및 구동 클록(VF)이 핫플러그-인 조건을 충족하는 경우 논리 '1'로, 충족하지 않는 경우에는 논리 '0'으로 결과값이 생성된다.
S340c, S340d 단계에서 현재 시점으로부터 특정 시간(ΔT2) 이전까지의 샘플링된 런어블 태스크 비율(RT)의 누적값이 계산될 수 있다. S340c 단계에서는 누적된 런어블 태스크 비율(RT)이 핫플러그-아웃 조건을 충족하는지 판단된다. 누적된 런어블 태스크 비율(RT)이 핫플러그-아웃 조건을 충족하는 경우 논리 '1'로, 충족하지 않는 경우에는 논리 '0'으로 결과값이 생성된다. S340d 단계에서는 누적된 런어블 태스크 비율(RT)이 핫플러그-인 조건을 충족하는지 판단된다. 누적된 런어블 태스크 비율(RT)이 핫플러그-인 조건을 충족하는 경우 논리 '1'로, 충족하지 않는 경우에는 논리 '0'으로 결과값이 생성된다.
S350a 단계에서는 누적된 CPU 구동 전압 및 구동 클록(VF)과 런어블 태스크 비율(RT)을 동시에 고려한 핫플러그-아웃 동작의 실행 여부가 결정된다. 만일, 누적된 CPU 구동 전압 및 구동 클록(VF)과 런어블 태스크 비율(RT)이 동시에 핫플러그-아웃 조건을 만족하는 경우, 커널(134)은 CPU(110)의 어느 하나의 코어를 핫플러그-아웃 시킬 것이다. 하지만, 누적된 CPU 구동 전압 및 구동 클록(VF)과 런어블 태스크 비율(RT) 중에서 어느 하나라도 핫플러그-아웃 조건을 충족하지 못하는 경우에는 현재의 CPU 상태를 유지하게 될 것이다.
S350b 단계에서는 누적된 CPU 구동 전압 및 구동 클록(VF)과 런어블 태스크 비율(RT)을 동시에 고려한 핫플러그-인 동작의 실행 여부가 결정된다. 만일, 누적된 CPU 구동 전압 및 구동 클록(VF)과 런어블 태스크 비율(RT)이 동시에 핫플러그-인 조건을 만족하는 경우, 커널(134)은 CPU(110)의 어느 하나의 코어를 핫플러그-인 시킬 것이다. 하지만, 누적된 CPU 구동 전압 및 구동 클록(VF)과 런어블 태스크 비율(RT) 중에서 어느 하나라도 핫플러그-인 조건을 충족하지 못하는 경우에는 현재의 CPU 상태를 유지하게 될 것이다.
이상에서는 누적된 CPU 구동 전압 및 구동 클록(VF)과 런어블 태스크 비율(RT)을 동시에 고려한 핫플러그 방법이 설명되었다. 이러한 핫플러그 방법에 따라 불필요하게 코어들이 유휴 상태(Idle)로 존재하는 시간을 최소화할 수 있다.
도 11a 및 도 11b는 본 발명의 효과를 설명하는 도면이다. 도 11a를 참조하면, 4개의 태스크들이 제 1 코어(Core_1) 및 제 2 코어(Core_2)에 몰려 있는 상황이 도시되어 있다. 만일, 현재의 런어블 태스크 비율(RT)만을 고려하여 핫플러그 동작이 수행되면, 제 3 코어(Core_3) 및 제 4 코어(Core_4)는 유휴 상태(Idle)임에도 여전히 온라인 상태로 유지될 것이다. 하지만, 본 발명의 누적된 CPU 구동 전압 및 구동 클록(VF)과 런어블 태스크 비율(RT)을 동시에 적용하는 경우, 유휴 상태(Idle)로 유지되는 제 3 코어(Core_3) 및 제 4 코어(Core_4)는 핫플러그-아웃으로 처리될 수 있다. 왜냐하면, CPU 구동 전압 및 구동 클록이 높지 않은 경우에는 현재의 런어블 태스크들을 제 1 코어(Core_1) 및 제 2 코어(Core_2)에서 충분히 처리할 수 있을 것으로 판단할 것이기 때문이다. 따라서, 도 11b와 같이 제 3 코어(Core_3) 및 제 4 코어(Core_4)의 전원이 차단되어 오프 라인 상태로 전환될 것이다.
도 12a 및 도 12b는 본 발명의 다른 효과를 설명하는 도면이다. 도 12a를 참조하면, 5개의 태스크들이 제 1 코어(Core_1) 내지 제 4 코어(Core_4)에 비교적 골고루 분포하는 상황이 도시되어 있다. 그리고 제 1 코어(Core_1) 내지 제 4 코어(Core_4)들 각각의 CPU 구동 전압 및 구동 클록이 높지 않다고 가정하자. 그러면, 샘플링을 수행하면 이러한 경우에는 낮은 CPU 구동 전압 및 구동 클록(VF)을 나타내고, 런어블 태스크의 수는 5로 나타날 것이다. 따라서, 스케줄러(135)는 제 2 코어(Core_2) 내지 제 4 코어(Core_4)에 할당된 태스크들을 제 1 코어(Core_1)로 마이그래이션(Migration)할 수 있다. 이러한 과정이 도 12a에 도시되어 있다. 제 2 코어(Core_2) 내지 제 4 코어(Core_4)에 할당된 태스크들을 제 1 코어(Core_1)로 마이그래이션(Migration)되면, 제 2 코어(Core_2) 내지 제 4 코어(Core_4)는 핫플러그-아웃시킬 수 있다. 이러한 과정이 도 12b에 도시되어 있다.
도 13은 본 발명의 다른 실시 예에 따른 멀티-코어 프로세서를 보여주는 블록도이다. 도 13을 참조하면, 이종(Heterogeneous) 멀티-코어(Multi-Core)로 구성되는 CPU(200)가 예시적으로 도시되어 있다.
CPU(200)는 2가지 이상의 이종의 멀티-코어들을 포함할 수 있다. 예시적으로 CPU(200)는 제 1 클러스터(210)와 제 2 클러스터(220)를 포함할 수 있다. 제 1 클러스터(210)는 상대적으로 높은 처리 속도를 제공하지만, 전력의 소모가 큰 코어들(211, 212, 213, 214)을 포함한다. 코어들(211, 212, 213, 214) 각각은 독립적인 연산이 가능하며, 각각 핫플러그 동작에 의해서 전원 제어가 가능하다. 코어들(211, 212, 213, 214)로 구성되는 제 1 멀티-코어(210)는 제 1 구동 전압(VDD1)과 제 1 구동 클록(CLK1)을 제공받는다. 따라서, 제 1 클러스터(210)는 제 2 클러스터(220)와는 독립적인 파워 도메인(Power Domain)을 형성한다.
제 2 클러스터(220)는 상대적으로 처리 속도는 낮지만, 높은 전력 효율을 갖는 코어들(221, 222, 223, 224)을 포함한다. 코어들(221, 222, 223, 224) 각각은 독립적인 연산 처리가 가능하다. 그리고 코어들(221, 222, 223, 224) 각각은 코어들(211, 212, 213, 214)에 비해서 상대적으로 저성능의 프로세서로 구성될 수 있다. 코어들(221, 222, 223, 224)로 구성되는 제 2 클러스터(220)는 제 2 구동 전압(VDD2)과 제 2 구동 클록(CLK2)을 제공받는다. 따라서, 제 2 클러스터(220)는 제 1 클러스터(210)와는 독립적인 파워 도메인(Power Domain)을 형성할 것이다.
캐시 코히런트 인터커넥터(230, CCI)는 클러스터들(210, 220) 간의 마이그레이션을 지원한다. 즉, 제 1 클러스터(210)가 비활성화되고, 제 2 클러스터(220)가 활성화되는 경우, 제 1 클러스터(210)의 캐시 데이터들이 제 2 클러스터(220)의 캐시로 이동해야 한다. 이러한 클러스터들(210, 220) 간의 데이터 일관성을 제공하기 위한 구조로 캐시 코히런트 인터커넥터(230)가 제공될 것이다.
본 발명의 이종(Heterogeneous) 멀티-코어(Multi-Core) CPU(200)에서 멀티-코어 프로세서에서 누적된 런어블 태스크 비율(RT)과 CPU 구동 전압 및 구동 클록을 동시에 고려한 핫플러그 동작은 클러스터 단위로 수행될 수 있다. 즉, 제 1 클러스터(210)가 활성화되면, 핫플러그 조건의 검출 및 핫플러그-인이나 핫플러그-아웃의 실행은 코어들(211, 212, 213, 214)의 사용율 및 런어블 태스크 비율(RT)에 따라 결정될 것이다. 그리고 제 1 클러스터(210)가 꺼지고 제 2 클러스터(220)가 활성화되면, 핫플러그 조건의 검출 및 핫플러그-인이나 핫플러그-아웃의 실행은 코어들(221, 222, 223, 224)의 구동 전압 및 구동 클록 및 런어블 태스크 비율(RT)에 따라 결정될 것이다. 핫플러그 동작시, 각 클러스터는 서로 다른 CPU 구동 전압 및 구동 클록 기준, 그리고 런어블 태스크 비율(RT)을 가질 수 있다. 또한, 런어블 태스크의 마이그래이션은 클러스터 간에 발생할 수도 있다.
이종 멀티-코어(Heterogeneous Multi-Core) 방식의 CPU에서는 각각 서로 다른 파워 도메인을 구성하는 클러스터 단위로 본 발명의 핫플러그 동작이 수행될 수 있다.
도 14는 본 발명의 실시 예에 따른 휴대용 단말기를 나타내는 블록도이다. 도 14를 참조하면, 본 발명의 실시 예에 따른 휴대용 단말기(1000)는 이미지 처리부(1100), 무선 송수신부(1200), 오디오 처리부(1300), 이미지 파일 생성부(1400), 불휘발성 메모리 장치(1500), 사용자 인터페이스(1600), 그리고 컨트롤러(1700)를 포함한다.
이미지 처리부(1100)는 렌즈(1110), 이미지 센서(1120), 이미지 프로세서(1130), 그리고 디스플레이부(1140)를 포함한다. 무선 송수신부(1210)는 안테나(1210), 트랜시버(1220), 모뎀(1230)을 포함한다. 오디오 처리부(1300)는 오디오 프로세서(1310), 마이크(1320), 그리고 스피커(1330)를 포함한다.
여기서, 불휘발성 메모리 장치(1500)는 본 발명의 실시 예에 따른 메모리 카드(MMC, eMMC, SD, micro SD) 등으로 제공될 수 있다. 더불어, 컨트롤러(1700)는 응용 프로그램, 운영 체제 등을 구동하는 시스템 온 칩(SoC)으로 제공될 수 있다. 시스템 온 칩에서 구동되는 운영 체제의 커널(Kernel)에는 런어블 태스크(Runnable task)가 관리되는 스케줄러와 CPU 거버너가 포함될 수 있다. 커널에 의해서 멀티-코어 프로세서들의 구동 전압 및 런어블 태스크 비율(RT)이 주기적으로 샘플링된다. 그리고 샘플링된 구동 전압 및 런어블 태스크 비율(RT)은 누적치로 카운트되어 핫플러그 조건에 해당하는지 결정되고, 구동 전압 및 런어블 태스크 비율(RT)의 조건이 동시에 만족하는 경우에만 핫플러그-인 또는 핫플러그-아웃이 실행될 것이다.
본 발명에 따른 시스템 온 칩 그리고/또는 멀티-코어 프로세서는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장 될 수 있다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100 : 모바일 장치 110 : CPU
120 : 디램 컨트롤러 130 : 워킹 메모리
132 : 응용 프로그램 134 : 커널
135 : 스케줄러 137: CPU 거버너
140 : 성능 컨트롤러 150 : UI 컨트롤러
152 : 액정 표시 장치 154 : 터치 패널
160 : 메모리 인터페이스 170 : 저장 장치
180 : 가속기 190 : 시스템 인터커넥터
210 : 제 1 클러스터 220 : 제 2 클러스터
1000 : 휴대용 단말기 1100 : 이미지 처리부
1110 : 렌즈 1120 : 이미지 센서
1130 : 이미지 프로세서 1140 : 디스플레이 유닛
1200 : 무선 송수신부 1210 : 안테나
1220 : 송수신기 1230 : 모뎀
1300 : 오디오 처리부 1310 : 오디오 프로세서
1320 : 마이크 1330 : 스피커
1400 : 이미지 파일 생성부 1500 : 불휘발성 메모리 장치
1600 : 유저 인터페이스 1700 : 컨트롤러

Claims (10)

  1. 멀티-코어 프로세서를 포함하는 시스템 온 칩의 제어 방법에 있어서:
    상기 멀티-코어 프로세서에서 수행될 런어블 태스크의 비율과, 상기 멀티-코어 프로세서의 구동 전압 또는 구동 클록을 검출하는 단계;
    제 1 시점으로부터 현재까지 샘플링된 상기 런어블 태스크의 비율 및 제 2 시점으로부터 현재까지 샘플링된 상기 구동 전압 또는 구동 클록의 변화가 핫플러그 조건을 충족하는지 판단하는 단계; 그리고
    상기 런어블 태스크 비율과 상기 구동 전압 또는 구동 클록이 각각 핫플러그 조건을 만족하는 경우, 상기 멀티-코어 프로세서에 포함되는 적어도 하나의 코어를 핫플러그-인 또는 핫플러그-아웃하는 단계를 포함하는 제어 방법.
  2. 제 1 항에 있어서,
    상기 런어블 태스크 비율을 검출하기 위한 샘플링 동작 및 상기 멀티-코어 프로세서의 구동 전압 또는 구동 클록을 검출하기 위한 샘플링 동작은 동시에 수행되는 제어 방법.
  3. 제 1 항에 있어서,
    상기 구동 전압 또는 구동 클록은 상기 멀티-코어 프로세서에 제공되는 구동 클록 주파수 또는 구동 전압의 레벨을 참조하여 계산되는 제어 방법.
  4. 제 1 항에 있어서,
    상기 판단하는 단계에서, 상기 런어블 태스크 비율에 대한 핫플러그 조건은 상기 제 1 시점으로부터 현재까지의 제 1 누적 구간 동안 복수회 샘플링된 상기 태스크들의 수가 온라인 상태의 코어 수보다 지속적으로 큰값을 유지하거나 적은 값을 유지하는 경우에 대응하는 제어 방법.
  5. 제 4 항에 있어서,
    상기 제 1 누적 구간 동안 상기 샘플링된 태스크들의 수가 상기 온라인 상태의 코어 수보다 많은 경우에는 핫플러그-아웃 조건에, 상기 제 1 누적 구간 동안 상기 샘플링된 태스크들의 수가 상기 온라인 상태의 코어 수보다 적은 경우에는 핫플러그-인 조건에 대응하는 제어 방법.
  6. 제 1 항에 있어서,
    상기 판단하는 단계에서, 상기 구동 전압 또는 구동 클록에 대한 핫플러그 조건은 상기 제 2 시점으로부터 현재까지의 제 2 누적 구간 동안 복수회 샘플링된 상기 구동 전압 또는 구동 클록이 기준 사용율보다 지속적으로 큰값을 유지하거나 적은 값을 유지하는 경우에 대응하는 제어 방법.
  7. 제 6 항에 있어서,
    상기 제 2 누적 구간 동안 샘플링된 상기 구동 전압 또는 구동 클록이 제 1 기준치보다 높은 경우에는 핫플러그-인 조건에, 상기 제 2 누적 구간 동안 샘플링된 상기 구동 전압 또는 구동 클록이 제 2 기준치보다 낮은 경우에는 핫플러그-아웃 조건에 대응하되, 상기 제 1 기준치는 상기 제 2 기준치보다 높은 제어 방법.
  8. 제 1 항에 있어서,
    상기 판단하는 단계에서, 핫플러그 조건을 만족하지 않는 경우에는 상기 멀티-코어 프로세서의 현재 전원 상태를 유지하는 제어 방법.
  9. 복수의 코어들을 포함하는 멀티-코어 프로세서; 그리고
    상기 멀티-코어 프로세서에 의해서 구동되는 운영 체제가 로드되고, 상기 복수의 코어들 각각에 대응하는 런큐가 구성되는 워킹 메모리를 포함하고,
    상기 운영 체제는 상기 멀티-코어 프로세서의 핫플러그 동작을 제어하기 위한 커널을 포함하며,
    상기 커널은 상기 런큐에 존재하는 런어블 태스크의 수와 상기 멀티-코어 프로세서에서 활성화된 코어의 수의 비에 대응하는 런어블 태스크 비율 그리고 상기 멀티-코어 프로세서의 구동 전압 또는 구동 클록을 복수 회 샘플링한 결과를 이용하여 상기 복수의 코어들에 대한 핫플러그 동작의 실행 여부를 판단하며,
    상기 커널은 상기 런어블 태스크의 수를 모니터링하고, 그 결과에 따라 태스크 마이그레이션을 수행하는 스케줄러를 포함하는 시스템 온 칩.
  10. 제 9 항에 있어서,
    상기 멀티-코어 프로세서의 구동 전압 또는 구동 클록은 상기 멀티-코어 프로세서에 제공되는 구동 클록의 주파수 또는 구동 전압의 레벨을 사용하여 샘플링되는 시스템 온 칩.
KR1020140085335A 2014-07-08 2014-07-08 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 동적 전력 관리 방법 KR102169692B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140085335A KR102169692B1 (ko) 2014-07-08 2014-07-08 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 동적 전력 관리 방법
US14/679,828 US9746902B2 (en) 2014-07-08 2015-04-06 System-on-chip including multi-core processor and dynamic power management method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140085335A KR102169692B1 (ko) 2014-07-08 2014-07-08 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 동적 전력 관리 방법

Publications (2)

Publication Number Publication Date
KR20160006328A KR20160006328A (ko) 2016-01-19
KR102169692B1 true KR102169692B1 (ko) 2020-10-26

Family

ID=55067534

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140085335A KR102169692B1 (ko) 2014-07-08 2014-07-08 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 동적 전력 관리 방법

Country Status (2)

Country Link
US (1) US9746902B2 (ko)
KR (1) KR102169692B1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170351311A1 (en) * 2016-06-07 2017-12-07 Intel Corporation Power aware packet distribution
US10340916B1 (en) * 2017-12-29 2019-07-02 Advanced Micro Devices, Inc. Using islands to control operating parameters for functional blocks in an electronic device
KR102635811B1 (ko) * 2018-03-19 2024-02-13 삼성전자 주식회사 사운드 데이터를 처리하는 시스템 및 시스템의 제어 방법
US11100698B2 (en) * 2019-06-28 2021-08-24 Ati Technologies Ulc Real-time GPU rendering with performance guaranteed power management
KR20210017054A (ko) 2019-08-06 2021-02-17 삼성전자주식회사 멀티-코어 시스템 및 그 동작 제어 방법
CN112925592A (zh) 2019-12-05 2021-06-08 超威半导体公司 渲染主页面的内核软件驱动的颜色重新映射
CN111292716A (zh) * 2020-02-13 2020-06-16 百度在线网络技术(北京)有限公司 语音芯片和电子设备
TWI760046B (zh) * 2021-01-05 2022-04-01 和碩聯合科技股份有限公司 熱插拔式電源模組
CN113311934B (zh) * 2021-04-09 2022-10-11 北京航空航天大学 一种多核异构域控制器动态功耗调整方法及系统
US20230098742A1 (en) * 2021-09-30 2023-03-30 Advanced Micro Devices, Inc. Processor Power Management Utilizing Dedicated DMA Engines

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7788519B2 (en) 2003-07-15 2010-08-31 Intel Corporation Method, system, and apparatus for improving multi-core processor performance
US8281160B1 (en) 2008-04-17 2012-10-02 Marvell International Ltd. Method and system for selecting an operating frequency for a chip to provide a desired overall power dissipation value for the chip
US8364997B2 (en) 2009-12-22 2013-01-29 Intel Corporation Virtual-CPU based frequency and voltage scaling
US20130227326A1 (en) * 2012-02-24 2013-08-29 Samsung Electronics Co., Ltd. Apparatus and method for controlling power of electronic device having multi-core

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7111178B2 (en) 2001-09-28 2006-09-19 Intel Corporation Method and apparatus for adjusting the voltage and frequency to minimize power dissipation in a multiprocessor system
US7739532B2 (en) 2004-06-07 2010-06-15 Intel Corporation Method, apparatus and system for enhanced CPU frequency governers
US7730340B2 (en) 2007-02-16 2010-06-01 Intel Corporation Method and apparatus for dynamic voltage and frequency scaling
US8892916B2 (en) 2008-08-06 2014-11-18 International Business Machines Corporation Dynamic core pool management
US8527796B2 (en) 2009-08-24 2013-09-03 Intel Corporation Providing adaptive frequency control for a processor using utilization information
US8650426B2 (en) 2009-12-16 2014-02-11 Qualcomm Incorporated System and method for controlling central processing unit power in a virtualized system
US8775830B2 (en) 2009-12-16 2014-07-08 Qualcomm Incorporated System and method for dynamically controlling a plurality of cores in a multicore central processing unit based on temperature
EP2362297B1 (en) 2010-02-25 2014-05-14 Telefonaktiebolaget L M Ericsson (publ) Technique for selecting a frequency of operation in a processor system
JP5763168B2 (ja) 2010-03-23 2015-08-12 ソニー株式会社 プロセッサパフォーマンスマネジメントシステムからの処理のマスキングによる電源消費の低減
CN103229123B (zh) * 2010-11-25 2016-08-31 飞思卡尔半导体公司 在多核处理器内管理功率的方法及装置
KR101770587B1 (ko) * 2011-02-21 2017-08-24 삼성전자주식회사 멀티코어 프로세서의 핫 플러깅 방법 및 멀티코어 프로세서 시스템
US8695008B2 (en) * 2011-04-05 2014-04-08 Qualcomm Incorporated Method and system for dynamically controlling power to multiple cores in a multicore processor of a portable computing device
US20130060555A1 (en) * 2011-06-10 2013-03-07 Qualcomm Incorporated System and Apparatus Modeling Processor Workloads Using Virtual Pulse Chains
US8862917B2 (en) 2011-09-19 2014-10-14 Qualcomm Incorporated Dynamic sleep for multicore computing devices
US8943340B2 (en) * 2011-10-31 2015-01-27 Intel Corporation Controlling a turbo mode frequency of a processor
US20130155081A1 (en) 2011-12-15 2013-06-20 Ati Technologies Ulc Power management in multiple processor system
CN102566739B (zh) * 2012-01-06 2014-11-26 威盛电子股份有限公司 多核处理器系统及其动态电源管理方法与控制装置
US9858095B2 (en) * 2012-09-17 2018-01-02 International Business Machines Corporation Dynamic virtual machine resizing in a cloud computing infrastructure
US9262363B2 (en) * 2012-11-30 2016-02-16 Ciena Corporation PCI and PCI express virtual hot plug systems and methods
JP6051924B2 (ja) * 2013-02-21 2016-12-27 富士通株式会社 情報処理装置の制御方法、制御プログラム、情報処理装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7788519B2 (en) 2003-07-15 2010-08-31 Intel Corporation Method, system, and apparatus for improving multi-core processor performance
US8281160B1 (en) 2008-04-17 2012-10-02 Marvell International Ltd. Method and system for selecting an operating frequency for a chip to provide a desired overall power dissipation value for the chip
US8364997B2 (en) 2009-12-22 2013-01-29 Intel Corporation Virtual-CPU based frequency and voltage scaling
US20130227326A1 (en) * 2012-02-24 2013-08-29 Samsung Electronics Co., Ltd. Apparatus and method for controlling power of electronic device having multi-core

Also Published As

Publication number Publication date
US9746902B2 (en) 2017-08-29
KR20160006328A (ko) 2016-01-19
US20160011645A1 (en) 2016-01-14

Similar Documents

Publication Publication Date Title
KR102169692B1 (ko) 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 동적 전력 관리 방법
KR102197874B1 (ko) 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법
KR102114453B1 (ko) 모바일 장치 및 그것의 제어 방법
CN111176828B (zh) 包括多核处理器的片上系统及其任务调度方法
US10255118B2 (en) Processing system including a plurality of cores and method of operating the same
EP3155521B1 (en) Systems and methods of managing processor device power consumption
JP6249953B2 (ja) ヘテロジニアスマルチプロセッサシステムオンチップにおける熱駆動作業負荷スケジューリング
US9671854B2 (en) Controlling configurable peak performance limits of a processor
US9934048B2 (en) Systems, methods and devices for dynamic power management of devices using game theory
US9411649B2 (en) Resource allocation method
GB2544609A (en) Granular quality of service for computing resources
US10768684B2 (en) Reducing power by vacating subsets of CPUs and memory
US20210042157A1 (en) Multi-core system and controlling operation of the same
TW202209122A (zh) 記憶體共享
US11243604B2 (en) Method of performing dynamic voltage and frequency scaling based on power step
US20230153121A1 (en) Accelerator usage prediction for improved accelerator readiness

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