KR20160128751A - 애플리케이션 프로세서, 시스템 온 칩, 및 이를 포함하는 컴퓨팅 장치 - Google Patents

애플리케이션 프로세서, 시스템 온 칩, 및 이를 포함하는 컴퓨팅 장치 Download PDF

Info

Publication number
KR20160128751A
KR20160128751A KR1020150060581A KR20150060581A KR20160128751A KR 20160128751 A KR20160128751 A KR 20160128751A KR 1020150060581 A KR1020150060581 A KR 1020150060581A KR 20150060581 A KR20150060581 A KR 20150060581A KR 20160128751 A KR20160128751 A KR 20160128751A
Authority
KR
South Korea
Prior art keywords
idle
core
checker
cluster
migration
Prior art date
Application number
KR1020150060581A
Other languages
English (en)
Other versions
KR102352756B1 (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 KR1020150060581A priority Critical patent/KR102352756B1/ko
Priority to US15/138,366 priority patent/US9996398B2/en
Publication of KR20160128751A publication Critical patent/KR20160128751A/ko
Application granted granted Critical
Publication of KR102352756B1 publication Critical patent/KR102352756B1/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/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • 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)
  • Power Sources (AREA)

Abstract

본 발명의 실시 예에 따른 애플리케이션 프로세서(application processor(AP))는, 제1코어와 제2코어를 포함하고, 상기 제1코어는 상기 제1코어의 태스크(task)의 워크로드(workload)를 모니터링하는 스케쥴러(scheduler)와, 상기 제2코어의 아이들(idle) 여부를 체크하는 아이들 체커(idle checker)를 실행하고, 상기 스케쥴러는 상기 아이들 체커를 이용하여 상기 제2코어의 아이들 여부를 체크한다.

Description

애플리케이션 프로세서, 시스템 온 칩, 및 이를 포함하는 컴퓨팅 장치 {APPLICATION PROCESSOR, SYSTEM ON CHIP (SoC), AND COMPUTING DEVICE INCLUDING THE SoC}
본 발명의 개념에 따른 실시 예는 애플리케이션 프로세서에 관한 것으로, 특히 코어(core)의 상태를 체크할 수 있는 스케쥴러를 포함하는 애플리케이션 프로세서, 시스템 온 칩, 및 상기 시스템 온 칩을 포함하는 컴퓨팅 장치에 관한 것이다.
최신 마이크로프로세서는 복수의 코어들을 포함하는 것이 일반적이다. 특히, 전력 공급이 한정적인 모바일 컴퓨팅 장치에 사용되는 애플리케이션 프로세서는 고성능과 저전력에 유연하게 대응하고자 HMP(heterogeneous multi-processor) 아키텍쳐를 사용한다. 상기 HMP 아키텍쳐는 코어의 유휴 시간에 소모되는 전력을 줄이기 위해 코어의 작동 전압의 레벨 및/또는 클락 신호의 주파수를 제어하고 있다.
따라서 저성능-저전력 코어와 고성능-고전력 코어로 구성된 상기 HMP 아키텍쳐에서 상기 고성능-고전력 코어는 대부분 작동 전압과 클락 신호가 차단된 상태로 존재한다. 이때 상기 저성능-저전력 코어에서 수행되던 특정 태스크의 워크로드 (workload)가 높아져 상기 태스크가 고성능-고전력 코어로 마이그레이션될 때, 상기 태스크를 마이그레이션시키는 스케쥴러는 상기 고성능-고전력 코어의 상태를 체크할 수 없으므로, 상기 작동 전압 및/또는 상기 클락 신호가 차단된 상기 고성능-고전력 코어가 완전히 작동 가능하게 될 때까지 상기 태스크가 일정 시간 동작대기 상태에 빠지고 이로 인해 성능이 저하되는 문제가 발생한다.
본 발명이 이루고자 하는 기술적인 과제는 코어의 상태를 체크하고, 체크 결과에 기초하여 태스크를 마이그레이션할 수 있는 스케쥴러를 포함하는 애플리케이션 프로세서, 시스템 온 칩, 및 상기 시스템 온 칩을 포함하는 컴퓨팅 장치를 제공하는 것이다.
본 발명의 실시 예에 따른 애플리케이션 프로세서(application processor(AP))는, 제1코어와 제2코어를 포함하고, 상기 제1코어는 상기 제1코어의 태스크(task)의 워크로드(workload)를 모니터링하는 스케쥴러(scheduler)와, 상기 제2코어의 아이들(idle) 여부를 체크하는 아이들 체커(idle checker)를 실행하고, 상기 스케쥴러는 상기 아이들 체커를 이용하여 상기 제2코어의 아이들 여부를 체크한다.
상기 스케쥴러는, 제1API(application programming interface)를 통해 상기 아이들 체커를 호출하고, 호출된 상기 아이들 체커는, 제2API를 이용하여 상기 제2코어의 상기 아이들 여부를 체크하고, 체크 결과를 상기 제1API를 통해 상기 스케쥴러로 전송한다.
상기 아이들 체커는, 상기 제2코어가 아이들 상태일 때, 인터럽트를 상기 제2코어로 전송하고, 상기 제2코어가 웨이크-업 상태일 때, 마이그레이션 트리거 신호를 상기 제1API를 통해 상기 스케쥴러로 전송한다.
실시 예에 따라, 상기 아이들 체커는 상기 인터럽트에 응답하여 웨이크-업되는 상기 제2코어가 상기 아이들 상태로 재진입하는 것을 방지한다.
실시 예에 따라, 상기 스케쥴러는 상기 제1API를 통해 상기 아이들 체커를 호출하는 호출 프로그램을 포함하고, 상기 호출 프로그램은 상기 태스크를 상기 제2코어로 마이그레이션할 것인지 여부를 결정하는 마이그레이션 체커(migration checker)이다.
실시 예에 따라, 상기 제1코어와 상기 제2코어는 이종 프로세서 코어들(heterogeneous processor cores)이다.
본 발명의 실시 예에 따른 시스템 온 칩(system on chip(SoC))은, 제1캐시와 제1코어를 포함하는 제1클러스터, 제2캐시와 제2코어를 포함하는 제2클러스터, 상기 제1캐시와 상기 제2캐시 사이에 접속되는 인터페이스, 및 상기 제1코어의 태스크의 워크로드를 체크하는 스케쥴러와, 상기 제2코어의 아이들 여부를 체크하는 아이들 체커를 저장하는 메모리를 포함하고, 상기 제1코어에 의해 상기 메모리에 저장된 상기 스케쥴러와 상기 아이들 체커가 실행되면, 상기 스케쥴러는 제1API를 통해 상기 아이들 체커를 호출한다.
상기 SoC는, 상기 아이들 체커로부터 출력된 제어 신호에 기초하여 상기 인터럽트를 상기 제2코어로 전송하는 인터럽트 컨트롤러를 더 포함한다.
본 발명의 실시 예에 따른 컴퓨팅 장치는, 제1코어와 제2코어를 포함하는 SoC와, 상기 제1코어와 상기 제2코어 각각으로 파워를 공급하는 전력 관리 IC(power management integrated circuit)를 포함하고, 상기 제1코어는 상기 제1코어의 태스크의 워크로드를 모니터링하는 스케쥴러와, 상기 제2코어의 아이들 여부를 체크하는 아이들 체커를 실행하고, 상기 스케쥴러는 상기 아이들 체커를 이용하여 상기 제2코어의 아이들 여부를 체크한다.
상기 스케쥴러는, 제1API(application programming interface)를 통해 상기 아이들 체커를 호출하고, 호출된 상기 아이들 체커는, 제2API를 이용하여 상기 제2코어의 상기 아이들 여부를 체크하고, 체크 결과를 상기 제1API를 통해 상기 스케쥴러로 전송한다.
상기 아이들 체커는, 상기 제2코어가 아이들 상태일 때, 인터럽트를 상기 SoC에 포함된 전력 관리 유닛(power management unit(PMU))으로 전송하고, 상기 제2코어가 웨이크-업 상태일 때, 마이그레이션 트리거 신호를 상기 제1API를 통해 상기 스케쥴러로 전송한다.
상기 PMU는, 상기 인터럽트에 응답하여 상기 전력 관리 IC를 제어하기 위한 제어 신호를 출력하고, 상기 전력 관리 IC는 상기 제어 신호에 응답하여 상기 제2코어로 파워를 공급하고, 상기 아이들 체커는 웨이크-업되는 상기 제2코어가 상기 아이들 상태로 재진입하는 것을 방지한다.
본 발명의 실시 예에 따른 애플리케이션 프로세서는 스케쥴러가 코어의 상태를 체크하고, 체크 결과에 기초하여 태스크를 상기 코어로 마이그레이션할 수 있다. 따라서, 상기 태스크를 마이그레이션할 때 발생할 수 있는 성능 저하를 방지할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 장치의 개략적인 블록도를 나타낸다.
도 2는 본 발명의 다른 실시 예에 따른 컴퓨팅 장치의 개략적인 블록도를 나타낸다.
도 3부터 도 4는 도 1에 도시된 컨트롤러의 작동에 대한 실시 예를 나타내는 블록도들이다.
도 5부터 도 6은 도 1에 도시된 컨트롤러의 작동에 대한 다른 실시 예를 나타내는 블록도들이다.
도 7부터 도 9는 도 2에 도시된 컨트롤러의 작동에 대한 실시 예를 나타내는 블록도들이다.
도 10부터 도 12는 도 2에 도시된 컨트롤러의 작동에 대한 다른 실시 예를 나타내는 블록도들이다.
도 13은 도 3부터 도 6에 도시된 아이들 체커의 일 실시 예를 나타내는 블록도이다.
도 14는 도 7부터 도 12에 도시된 아이들 체커의 일 실시 예를 나타내는 블록도이다.
도 15는 도 3부터 도 4, 또는 도 7부터 도 9에 도시된 컨트롤러의 작동에 대한 플로우차트이다.
도 16은 도 5부터 도 6, 또는 도 10부터 도 12에 도시된 컨트롤러의 작동에 대한 플로우차트이다.
도 15는 본 발명의 실시 예에 따른 전자 시스템의 개략적인 블록도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 컴퓨팅 장치의 개략적인 블록도를 나타낸다. 도 1을 참조하면, 컴퓨팅 장치(100-1)는 컨트롤러(200-1), 전력 관리 IC (power management integrated circuit(PMIC); 300-1), 및 메모리(400)를 포함할 수 있다.
컴퓨팅 장치(100-1)는 PC(personal computer) 또는 모바일 컴퓨팅 장치를 의미할 수 있다. 상기 모바일 컴퓨팅 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 모바일 인터넷 장치(mobile internet device(MID)), 웨어러블 컴퓨터, 사물 인터넷(internet of things(IoT)) 장치, 만물 인터넷(internet of everything(IoE)) 장치, 또는 e-북(e-book)을 의미할 수 있다.
컨트롤러(200-1)는 PMIC(300-1)와 메모리(400)의 작동을 제어할 수 있다. 컨트롤러(200-1)는 호스트, 집적 회로(IC), 마더보드, 시스템 온 칩(system on chip(SoC)), 애플리케이션 프로세서(application processor(AP)), 또는 모바일 (mobile) AP로 구현될 수 있다. 예컨대, 컨트롤러(200-1)가 SoC, AP, 또는 모바일 AP를 포함하는 제1패키지로 구현되고 메모리(400)가 제2패키지로 구현될 때, 상기 제2패키지는 스택 볼들을 통해 상기 제1패키지의 위(over)에 적층될 수 있다.
컨트롤러(200-1)는 CPU(central processing unit; 210-1), 버스 구조(211), 메모리 인터페이스(220), 전력 관리 유닛(power management unit(PMU); 230-1), 클락 관리 유닛(clock management unit(CMU); 240-1), 내부 메모리(250), 및 입출력 인터페이스(260)를 포함할 수 있다.
CPU(210-1)는 복수의 코어들(C1~C8)을 포함하는 멀티코어 프로세서일 수 있다. 비록 도 1에서는 CPU(210-1)가 8개의 코어들(C1~C8)을 포함하는 것으로 도시되어 있으나, 실시 예에 따라 코어들의 개수는 다양할 수 있다.
복수의 코어들(C1~C8)은 동종(homogeneous) 프로세서 코어들일 수도 있고, 이종 프로세서 코어들(heterogeneous processor cores)일 수도 있다. 예컨대, CPU (210-1)는 HMP(heterogeneous multi-core processor)로 구현될 수 있다. 복수의 코어들(C1~C8) 중에서 제1코어(C1)부터 제4코어(C4)를 저성능-저전력 코어로 가정할 때, 제1코어(C1)부터 제4코어(C4)는 제1클러스터(212)에 포함될 수 있다. 제5코어 (C5)부터 제8코어(C8)를 고성능-고전력 코어로 가정할 때, 제5코어(C5)부터 제8코어(C8)는 제2클러스터(214)에 포함될 수 있다.
복수의 코어들(C1~C8) 각각은 서로 독립적으로 작동할 수 있다. 예컨대, 제1코어(C1)가 웨이크-업(wake-up) 상태일 때, 제5코어(C5)는 아이들(idle) 상태일 수 있다.
상기 웨이크-업 상태란, 코어가 태스크(task)를 수행하고 있는 상태이거나 태스크를 할당받는 즉시 작동할 수 있는 상태를 의미할 수 있다. 다르게 표현하면, 상기 웨이크-업 상태는 상기 코어로 공급되는 파워의 레벨 및/또는 클락 신호의 주파수가 기준 레벨 및/또는 기준 주파수 이상인 상태를 의미할 수 있다.
상기 아이들 상태란, 코어가 태스크를 할당받더라도 즉시 작동할 수 없는 상태를 의미할 수 있다. 다르게 말하면, 상기 아이들 상태는 상기 코어로 공급되는 파워의 레벨 및/또는 클락 신호의 주파수가 기준 레벨 및/또는 기준 주파수보다 낮은 상태를 의미할 수 있다.
코어가, 아이들 상태일 때, 태스크를 할당받으면, PMU(230-1)는 상기 코어로 공급되는 파워의 레벨을 기준 레벨 이상으로 높이고, CMU(240-1)는 클락 신호의 주파수를 기준 주파수 이상으로 높일 수 있다. 상기 파워의 상기 레벨이 상기 기준 레벨 이상으로 높아지기 전까지, 상기 태스크는 상기 코어에서 수행될 수 없으므로, 상기 태스크는 수행 대기 상태에 빠진다.
실시 예에 따라, 제1클러스터(212)와 제2클러스터(214)는 서로 독립적으로 작동할 수 있다. 예컨대, 제1클러스터(212)가 웨이크-업 상태일 때, 제2클러스터 (214)는 아이들 상태일 수 있다. 제1클러스터(212)가 상기 웨이크-업 상태일 때, 제1클러스터(212)에 포함된 제1코어(C1)부터 제4코어(C4)는 상기 웨이크-업 상태 또는 아이들 상태일 수 있고, 제2클러스터(214)가 상기 아이들 상태일 때, 제2클러스터(214)에 포함된 제5코어(C5)부터 제8코어(C8)는 상기 아이들 상태일 수 있다.
복수의 코어들(C1~C8) 각각은 적어도 하나의 태스크를 수행할 수 있다. 복수의 코어들(C1~C8) 각각에서 실행될 수 있는 스케쥴러(420)는 상기 태스크의 워크로드(workload)를 모니터링하고, 모니터링 결과에 기초하여 상기 태스크를 다른 코어로 마이그레이션(migrate)할 수 있다. 스케쥴러(420)의 마이그레이션 작동은 도 3부터 도 12를 참조하여 설명될 것이다.
각 클러스터(212 또는 214)는 각 캐시 메모리(213 또는 215)를 포함할 수 있다. 캐시 메모리들(213과 215)은 인터페이스(216)를 통해 서로 접속될 수 있다.
인터페이스(216)는 캐시 메모리들(213과 215) 사이의 캐시 일관성(cache coherence)을 위해 사용될 수 있다. 캐시 일관성을 위해, 인터페이스(216)는 제1캐시 메모리(213)에 저장된 데이터와, 이에 상응하는 제2캐시 메모리(215)에 저장된 데이터를 일치시킬 수 있다. 즉, 인터페이스(216)는 제1클러스터(212)에 포함된 코어들(C1~C4) 중에서 어느 하나에 의해 제1캐시 메모리(213)에 저장된 데이터가 변경되면, 변경된 데이터를 스누핑(snooping)하여 제2캐시 메모리(215)에 카피(copy)할 수 있으나, 이에 한정되는 것은 아니다.
버스 구조(211)는 AMBA(Advanced Microcontroller Bus Architecture), AHB (Advanced High-performance Bus), APB(Advanced Peripheral Bus), AXI(Advanced eXtensible Interface), ASB(Advanced System Bus) 또는 이들의 결합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
메모리 인터페이스(220)는, CPU(210-1)의 제어에 따라, 메모리(400)에 대한 라이트 작동 또는 리드 작동을 제어할 수 있다. 메모리 인터페이스(220)는, CMU (240-1)로부터 출력된 제2클락 신호(CLK2)의 제2주파수와 PMIC(300-1)로부터 출력된 제4파워(PW4)의 레벨에 기초하여, 메모리(400)에 대한 라이트 작동 또는 리드 작동을 제어할 수 있다. 제2클락 신호(CLK2)의 제2주파수와 제4파워(PW4)의 레벨 각각은 변경가능하다.
비록, 도 1에서는 하나의 메모리 인터페이스(220)와 하나의 메모리(400)가 도시되었으나, 메모리 인터페이스(220)는 복수의 서로 다른 메모리 인터페이스들을 포함하는 메모리 인터페이스 세트(set)를 의미할 수 있고, 메모리(400)는 서로 다른 메모리들을 포함하는 세트를 의미할 수 있다.
예컨대, 메모리(400)가 DRAM(dynamic random access memory)과 플래시 메모리(예컨대, NAND-타입 플래시 메모리 또는 NOR-타입 플래시 메모리)를 포함하는 세트일 때, 메모리 인터페이스(220)는 DRAM 컨트롤러와 플래시 메모리 컨트롤러를 포함하는 세트일 수 있으나 이에 한정되는 것은 아니다.
메모리(400)는 휘발성 메모리 및/또는 불휘발성 메모리로 구현될 수 있다. 휘발성 메모리는 RAM(random access memory), DRAM, SRAM(static random access memory), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM (Twin Transistor RAM)으로 구현될 수 있다.
불휘발성 메모리는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque MRAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(Resistive RAM(RRAM)), 나노튜브 RRAM(Nanotube RRAM), 폴리머 RAM(Polymer RAM: PoRAM), 나노 부유 게이트 메모리(Nano Floating Gate Memory: NFGM), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리 소자(Molecular Electronics Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다.
실시 예들에 따라, 메모리(400)는 솔리드 스테이트 드라이브(solid state drive or solid state disk(SSD)), 임베드된 SSD(embedded SSD(eSSD)), 멀티미티어 카드(multimedia card(MMC)), 임베드된 MMC(embedded MMC(eMMC)), 또는 유니버설 플래시 스토리지(universal flash storage(UFS))로 구현될 수 있으나 이에 한정되는 것은 아니다.
메모리(400)는 아이들 모듈(410)과 스케쥴러(420)를 저장할 수 있다. 아이들 모듈(410)과 스케쥴러(420)는 컴퓨팅 장치(100-1)가 부팅될 때, 메모리(400)로부터 내부 메모리(250)로 로드될 수 있다. 아이들 모듈(410)과 스케쥴러(420)의 작동은 도 3부터 도 12를 참조하여 상세히 설명될 것이다.
도 1과 도 2에서는 아이들 모듈(410)과 스케쥴러(420)가 메모리(400)에 저장되는 펌웨어 또는 소프트웨어인 것으로 도시되어 있으나, 실시 예에 따라 아이들 모듈(410)과 스케쥴러(420)는 별도의 하드웨어로 구현될 수도 있다. 이 때, 메모리(400)는 상기 하드웨어로 구현된 아이들 모듈(410)과 스케쥴러(420) 각각의 작동을 제어하기 위한 펌웨어 또는 소프트웨어를 저장할 수 있다.
PMU(230-1)는, CPU(210-1)로부터 출력된 제1인터럽트(I1)에 응답하여, PMIC (300-1)의 작동을 제어할 수 있는 제1제어 신호(CS1)를 생성할 수 있다. 여기서, 제1인터럽트(I1)는 PMU(230-1)의 작동을 제어하기 위한 제어 신호일 수 있다.
PMIC(300-1)는, 제1제어 신호(CS1)에 응답하여, 각 파워(PW1~PW7)의 레벨을 조절할 수 있다. 예컨대, PMIC(300-1)는 제1제어 신호(CS1)에 응답하여 CPU(210-1)로 공급되는 제1파워(PW1)의 레벨을 제어할 수 있고, PMU(230-1)로 공급되는 제2파워(PW2)의 레벨을 제어할 수 있고, CMU(240-1)으로 공급되는 제3파워(PW3)의 레벨을 제어할 수 있고, 메모리 인터페이스(220)로 공급되는 제4파워(PW4)의 레벨을 제어할 수 있고, 메모리(400)로 공급되는 제5파워(PW5)의 레벨을 제어할 수 있고, 입출력 인터페이스(260)로 공급되는 제6파워(PW6)의 레벨을 제어할 수 있고, 내부 메모리(250)로 공급되는 제7파워 (PW7)의 레벨을 제어할 수 있으나 이에 한정되는 것은 아니다.
실시 예에 따라, 제1파워(PW1)는 복수의 파워들을 포함할 수 있고, 상기 복수의 파워들 각각의 레벨은 서로 다를 수 있다. 상기 복수의 파워들 각각은 CPU (210-1)에 포함된 제1클러스터(212), 제2클러스터(214), 및 인터페이스(216) 중에서 상응하는 어느 하나로 공급될 수 있다. 다른 실시 예에 따라, 상기 복수의 파워들 각각은 CPU(210-1)에 포함된 제1코어(C1)부터 제8코어(C8), 및 인터페이스(216) 중에서 상응하는 어느 하나로 공급될 수 있다.
CMU(240-1)는, CPU(210-1)로부터 출력된 제2인터럽트(I2)에 응답하여, CPU (210-1)로 공급되는 제1클락 신호(CLK1)의 제1주파수, 메모리 인터페이스(220)로 공급되는 제2클락 신호(CLK2)의 제2주파수, 및/또는 입출력 인터페이스(260)로 공급되는 제3클락 신호(CLK3)의 제3주파수를 조절할 수 있다. 여기서, 조절은 증가, 유지, 또는 감소를 의미할 수 있다. 제2인터럽트(I2)는 CMU(240-1)의 작동을 제어하기 위한 제어 신호일 수 있다.
실시 예에 따라, 제1클락 신호(CLK1)는 복수의 클락 신호들을 포함할 수 있고, 상기 복수의 클락 신호들 각각의 주파수는 서로 다를 수 있다. 상기 복수의 클락 신호들 각각은 CPU(210-1)에 포함된 제1클러스터(212), 제2클러스터(214), 및 인터페이스(216) 중에서 상응하는 어느 하나로 공급될 수 있다. 다른 실시 예에 따라, 상기 복수의 클락 신호들 각각은 CPU(210-1)에 포함된 제1코어(C1)부터 제8코어(C8), 및 인터페이스(216) 중에서 상응하는 어느 하나로 공급될 수 있다.
내부 메모리(250)는 CPU(210-1)의 작동 메모리일 수 있다. 예컨대, 내부 메모리(250)는 ROM(read only memory) 또는 SRAM일 수 있으나 이에 한정되는 것은 아니다. 예컨대, 메모리(400)가 불휘발성 메모리로 구현될 때, 컴퓨팅 장치(100)가 부팅될 때, 메모리(400)에 저장된 아이들 모듈(410)과 스케쥴러(420)는 내부 메모리(250)로 로드(load)되고, CPU(210-1)에 의해 실행될 수 있다.
입출력 인터페이스(260)는 데이터의 입출력을 위한 인터페이스로서, CMU (240-1)로부터 출력된 제3클락 신호(CLK3)와 PMIC(300-1)로부터 출력된 제6파워 (PW6)에 기초하여 데이터를 전송하거나 수신할 수 있다. 제3클락 신호(CLK3)의 제3주파수와 제6파워(PW6)의 레벨 각각은 변경가능하다.
실시 예들에 따라, 입출력 인터페이스(250)는 SATA(Serial Advanced Technology Attachment), SATAe(SATA express), SAS(serial attached small computer system interface(SCSI)), PCIe(peripheral component interconnect express) 또는 MIPI®(Mobile Industry Processor Interface)를 지원할 수 있는 인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다.
도 2는 본 발명의 다른 실시 예에 따른 컴퓨팅 장치의 개략적인 블록도를 나타낸다. 도 1과 도 2를 참조하면, 인터럽트 컨트롤러(270)를 제외하면, 컴퓨팅 장치(100-2)의 구조와 작동은 도 1에 도시된 컴퓨팅 장치(100-1)의 구조와 작동과 실질적으로 동일 또는 유사하다.
인터럽트 컨트롤러(270)는, CPU(210-2)로부터 출력되는 제2제어 신호(CS2)에 응답하여, PMU(230-2), CMU(240-2), 및 CPU(210-2) 중에서 적어도 하나로 인터럽트를 전송할 수 있다. 예컨대, 인터럽트 컨트롤러(270)는 PMU(230-2)로 제1인터럽트 (I1)를 전송하거나, CMU(240-2)로 제2인터럽트(I2)를 전송하거나, CPU(210-2)로 제3인터럽트(I3)를 전송할 수 있다. 실시 예에 따라, 제3인터럽트(I3)는 CPU(210-2)에 포함되는 제1클러스터(212) 및/또는 제2클러스터(214)로 전송되거나, 제1코어 (C1)부터 제8코어(C8) 중에서 어느 하나로 전송될 수 있다.
인터럽트 컨트롤러(270)는 CMU(240-2)로부터 제4주파수를 갖는 제4클락 신호 (CLK4)를 수신하고, PMIC(300-2)로부터 제8파워(PW8)를 수신할 수 있다.
도 3부터 도 4는 도 1에 도시된 컨트롤러의 작동에 대한 실시 예를 나타내는 블록도들이다. 도 3부터 도 4는 CPU(210-1)가 코어 단위로 아이들 상태로 되거나 웨이크-업 상태로 되는 경우에 대한 실시 예를 나타낸다.
본 명세서에서, 아이들 체커(idle checker; 412-1)와 아이들 엔터(idle enter; 416)를 포함하는 아이들 모듈(410)과, 스케쥴링 타이머(scheduling timer; 423)와 마이그레이터(migrator; 426)를 포함하는 스케쥴러(420), 코어 상태 모듈(430), 및 클러스터 상태 모듈(431) 각각은 각 명칭에 따른 기능과 동작을 수행할 수 있는 컴퓨터 프로그램 코드 또는 소프트웨어 IP(intellectual property)를 의미하는 것으로 도시되어 있다.
그러나, 실시 예에 따라 아이들 모듈(410), 스케쥴러(420), 코어 상태 모듈(430), 및 클러스터 상태 모듈(431) 각각은 하드웨어로 구현될 수 있다. 이 때 내부 메모리(250)는 상기 하드웨어로 구현된 아이들 모듈(410), 스케쥴러(420), 코어 상태 모듈(430), 및 클러스터 상태 모듈(431) 각각의 작동에 필요한 펌웨어 또는 소프트웨어를 메모리(400)로부터 로드할 수도 있다.
비록, 도 3부터 도 12에 도시된 아이들 모듈(410)과 스케쥴러(420)는 제2코어(C2)에서 실행되는 것으로 가정하였으나, 아이들 모듈(410)과 스케쥴러(420)는 코어들(C1~C8) 각각에서 실행될 수 있다.
도 1과 도 3을 참조하면, 스케쥴러(420)에 포함된 스케쥴링 타이머(423)는 일정 시간 주기마다 스케쥴링 틱(scheduling tick; ST1)을 발생하고, 발생된 스케쥴링 틱(ST1)을 마이그레이션 체커(425)로 출력할 수 있다. 마이그레이션 체커(425)는 스케쥴링 틱(ST1)에 응답하여, 제2코어(C2)에서 작동하는 태스크(TASK)의 워크로드를 모니터링할 수 있다. 예컨대, 마이그레이션 체커(425)는 상기 일정 시간 주기마다 태스크(TASK)의 작동/유휴 상태를 체크할 수 있다. 마이그레이션 체커(425)는, 체크된 상기 작동/유휴 상태에 기초하여, 상기 워크로드를 판단하고, 판단된 상기 워크로드에 기초하여 태스크(TASK)를 제2코어(C2)에서 다른 코어로 마이그레이션할 것인지 여부를 상기 일정 시간 주기마다 결정할 수 있다.
실시 예에 따라, 제1클러스터(212)에 포함된 코어들(C1~C4)을 저성능-저전력 코어들로 가정하고, 제2클러스터(214)에 포함된 코어들(C5~C8)을 고성능-고전력 코어들로 가정할 때, 마이그레이션 체커(425)는, 워크로드가 기준 워크로드보다 높은 경우 태스크(TASK)를 제2클러스터(214)에 포함된 코어들(C5~C8) 중에서 어느 하나로 마이그레이션하도록 결정할 수 있다.
다른 실시 예에 따라, 제1클러스터(212)에 포함된 코어들(C1~C4)을 고성능-고전력 코어들로 가정하고, 제2클러스터(214)에 포함된 코어들(C5~C8)을 저성능-저전력 코어들로 가정할 때, 마이그레이션 체커(425)는, 워크로드가 기준 워크로드보다 낮은 경우 태스크(TASK)를 제2클러스터(214)에 포함된 코어들(C5~C8) 중에서 어느 하나로 마이그레이션하도록 결정할 수 있다.
마이그레이션 체커(425)는 태스크(TASK)를 제5코어(C5)로 마이그레이션하기 위해 마이그레이션 신호(MI)를 마이그레이터(426)로 전송할 수 있다. 마이그레이션 체커(425)는 마이그레이션 신호(MI)를 전송하기 전에, 제1API(application programming interface; 427)를 통해 아이들 모듈(410)에 포함된 아이들 체커(412-1)를 호출(CALL1a)할 수 있다. 즉, 마이그레이션 체커(425)는 아이들 체커(412-1)를 호출하는 호출 프로그램으로서 작동할 수 있다.
마이그레이션 체커(425)에 의해 호출된 아이들 체커(412-1)는 제2API(428)를 통해 코어 상태 모듈(430)을 호출(CALL2a)하고, 호출된 코어 상태 모듈(430)로부터 제5코어(C5)의 상태 정보(CSIa)를 제2API(428)를 통해 수신할 수 있다.
실시 예에 따라, 코어 상태 모듈(430)은 코어들(C1~C8) 각각의 파워의 레벨 정보를 포함하고 PMU(230-1)를 제어할 수 있는 PMU 제어 모듈일 수 있고, 상태 정보(CSIa)는 제5코어(C5)의 상기 파워의 상기 레벨 정보일 수 있다. 다른 실시 예에 따라, 코어 상태 모듈(430)은 코어들(C1~C8) 각각의 클락 신호의 주파수 정보를 포함하고 CMU(240-1)를 제어할 수 있는 CMU 제어 모듈일 수 있고, 상태 정보(CSIa)는 제5코어(C5)의 상기 클락 신호의 상기 주파수 정보일 수 있다.
아이들 체커(412-1)는 수신된 상태 정보(CSIa)에 기초하여 제5코어(C5)의 아이들 여부를 체크하고, 체크 결과를 제1API(427)를 통해 마이그레이션 체커(425)로 전송할 수 있다. 상기 아이들 여부를 체크하는 작동은 제5코어(C5)가 아이들 상태인지 또는 웨이크-업 상태인지를 체크하는 작동을 의미한다.
예컨대, 상태 정보(CSIa)가 제5코어(C5)의 상기 파워의 상기 레벨 정보인 경우, 아이들 체커(412-1)는 수신된 상기 레벨 정보와 기준 레벨 정보를 비교하고, 비교 결과 상기 레벨 정보가 상기 기준 레벨 정보보다 낮을 경우 제5코어(C5)가 상기 아이들 상태인 것으로 판단할 수 있다. 상기 레벨 정보가 상기 기준 레벨 정보보다 높을 경우, 아이들 체커(412-1)는 제5코어(C5)가 상기 웨이크-업 상태인 것으로 판단할 수 있다. 실시 예에 따라 아이들 체커(412-1)가 제5코어(C5)의 상태를 판단하는 방법은 통상의 기술자에게 예측가능한 범위에서 다양하게 변경될 수 있다.
상기 체크 결과 제5코어(C5)가 상기 아이들 상태일 때, 아이들 체커(412-1)는 마이그레이션 체커(425)로 제5코어(C5)가 상기 아이들 상태임을 지시하는 응답 신호(RESPa)를 전송하고, 제5코어(C5)를 웨이크-업시킬 수 있다. 예컨대, 아이들 체커(412-1)는 제5코어(C5)로 상기 기준 레벨 이상의 레벨을 갖는 파워를 공급하기 위해 제1인터럽트(I1a)를 PMU(230-1)로 전송하거나, 제5코어(C5)로 상기 기준 주파수 이상의 주파수를 갖는 클락 신호를 공급하기 위해 제2인터럽트(I2a)를 CMU(240-1)로 전송할 수 있다.
PMU(230-1)는 제1인터럽트(I1a)에 응답하여 PMIC(300-1)로 제1제어 신호(CS1a)를 전송하고, PMIC(300-1)는 제1제어 신호(CS1a)에 응답하여 제5코어(C5)와 인터페이스(216) 각각으로 파워(PW1a 또는 PW1b)를 공급할 수 있다. CMU(240-1)는 제2인터럽트(I2a)에 응답하여 제5코어(C5)와 인터페이스(216) 각각으로 클락 신호(CLK1a 또는 CLK1b)를 공급할 수 있다.
제5코어(C5)는 파워(PW1a) 및/또는 클락 신호(CLK1a)를 수신하고, 아이들 체커(412-1)로부터 제3인터럽트(I3)를 수신하여 웨이크-업될 수 있다. 인터페이스(216)는 파워(PW1b) 및/또는 클락 신호(CLK1b)를 수신하여 작동할 수 있고, 인터페이스(216)가 작동함에 따라, 제1캐시 메모리(213)에 저장되고 태스크(TASK)에 관련된 데이터는 제2캐시 메모리(215)로 옮겨지거나 복사될 수 있다.
아이들 체커(412-1)는 제5코어(C5)가 상기 아이들 상태로 재진입하는 것을 방지하기 위해, 아이들 엔터(416)로 아이들 제한 신호(IR)를 전송할 수 있다. 제5코어(C5)를 아이들시킬 수 있는 아이들 엔터(416)는, 아이들 제한 신호(IR)에 응답하여 제5코어(C5)를 아이들시키지 않을 수 있다.
본 명세서에서는 아이들 체커(412-1)가 제5코어(C5)의 아이들 여부를 체크하고 아이들 엔터(416)로 아이들 제한 신호(IR)를 전송하는 작동을 모두 수행하는 것으로 도시되어 있으나, 실시 예에 따라 아이들 체커(412-1)는 상기 아이들 여부를 체크하는 제1모듈과, 아이들 제한 신호(IR)를 전송하는 제2모듈을 포함하는 형태로 구현될 수도 있다.
마이그레이션 체커(425)는 제5코어(C5)가 상기 아이들 상태임을 지시하는 응답 신호(RESPa)를 수신한 경우, 태스크(TASK)를 마이그레이션하지 않을 수 있다. 따라서, 스케쥴링 타이머(423)가 다음 스케쥴링 틱(ST2)을 전송하기 전까지 태스크(TASK)는 제2코어(C2)에서 수행될 수 있다.
즉, 스케쥴러(420)는 아이들 모듈(410)에 포함된 아이들 체커(412-1)를 이용하여 제5코어(C5)의 아이들 여부를 체크하고, 체크 결과 제5코어(C5)가 웨이크-업되기 전까지 태스크(TASK)를 마이그레이션하지 않을 수 있다. 본 명세서에서는 아이들 체커(412-1)가 아이들 모듈(410) 내에 포함된 것으로 도시되어 있으나, 실시 예에 따라 아이들 체커(412-1)는 아이들 모듈(410) 외부에 별도로 구현될 수도 있다.
도 4를 참조하면, 도 3에 도시된 컨트롤러(200-1)의 작동들이 완료된 후에, 스케쥴링 타이머(423)로부터 마이그레이션 체커(425)로 다음 스케쥴링 틱(ST2)이 전송되면, 마이그레이션 체커(425)는 아이들 체커(412-1)를 호출(CALL1b)할 수 있다. 호출된 아이들 체커(412-1)는 코어 상태 모듈(430)을 호출(CALL2b)하여 제5코어(C5)의 상태 정보(CSIb)를 수신할 수 있다. 아이들 체커(412-1)는 수신된 상태 정보(CSIb)에 기초하여 제5코어(C5)의 아이들 여부를 체크하고, 체크 결과를 마이그레이션 체커(425)로 전송할 수 있다.
도 3에서 제5코어(C5)는 웨이크-업 상태로 되고, 아이들 제한 신호(IR)에 의해 아이들 엔터(416)가 제5코어(C5)를 아이들시키지 않으므로, 아이들 체커(412-1)는 태스크(TASK)를 제5코어(C5)로 마이그레이션하도록 지시하는 응답 신호(또는 마이그레이션 트리거 신호; RESPb)를 마이그레이션 체커(425)로 전송할 수 있다.
마이그레이션 체커(425)는 마이그레이션 트리거 신호(RESPb)에 응답하여 태스크(TASK)를 제5코어(C5)로 마이그레이션하기 위해 마이그레이션 신호(MI)를 생성하고, 생성된 마이그레이션 신호(MI)를 마이그레이터(426)로 전송할 수 있다.
마이그레이터(426)는, 마이그레이션 신호(MI)에 응답하여, 태스크(TASK)를 제5코어(C5)로 마이그레이션(MIGR)할 수 있다. 실시 예에 따라, 마이그레이터(426)는 마이그레이션(MIGR)이 완료된 후, 아이들 체커(412-1)로 마이그레이션 완료 신호(MIGC)를 전송할 수 있다. 아이들 체커(412-1)는 마이그레이션 완료 신호(MIGC)에 응답하여 아이들 제한 신호(IR)를 더이상 출력하지 않을 수 있다.
실시 예에 따라, 제2코어(C2)에서 수행될 태스크가 존재하지 않을 때, 아이들 모듈(410)은 제2코어(C2)를 아이들 상태로 변경시킬 수 있다. 아이들 엔터(416)는 PMU(230-1)로 제1인터럽트(I1b)를 전송하거나, CMU(240-1)로 제2인터럽트(I2b)를 전송할 수 있다.
PMU(230-1)는 제1인터럽트(I1b)에 응답하여, PMIC(300-1)로 제1제어 신호(CS1b)를 전송하고, PMIC(300-1)는 제1제어 신호(CS1b)에 응답하여 제2코어(C2)로 공급되는 파워(PW1c)를 차단하거나 파워(PW1c)의 레벨을 상기 기준 레벨보다 낮출 수 있다. 실시 예에 따라, PMIC(300-1)는 제1제어 신호(CS1b)에 응답하여 인터페이스(216)로 공급되는 파워(PW1b)를 차단할 수도 있다.
CMU(240-1)는 제2인터럽트(I2b)에 응답하여, 제2코어(C2)로 공급되는 클락 신호(CLK1c)를 차단하거나 클락 신호(CLK1c)의 주파수를 상기 기준 주파수보다 낮출 수 있다. 실시 예에 따라, CMU(240-1)는 인터페이스(216)로 공급되는 클락 신호(CLK1b)를 차단할 수도 있다. 파워(PW1c) 및/또는 클락 신호(CLK1c)가 조절됨에 따라, 제2코어(C2)는 아이들 상태로 될 수 있다.
도 5부터 도 6은 도 1에 도시된 컨트롤러의 작동에 대한 다른 실시 예를 나타내는 블록도들이다. 도 5부터 도 6은 CPU(210-1)가 클러스터 단위로 아이들 상태로 되거나 웨이크-업 상태로 되는 경우에 대한 실시 예를 나타낸다.
도 1, 도 3, 및 도 5를 참조하면, 마이그레이션 체커(425)는 스케쥴링 타이머(423)로부터 출력된 스케쥴링 틱(ST1)에 응답하여, 제2코어(C2)에서 작동하는 태스크(TASK)의 워크로드를 모니터링할 수 있다. 마이그레이션 체커(425)는, 태스크(TASK)의 작동/유휴 상태에 기초하여 상기 워크로드를 판단하고, 판단된 상기 워크로드에 기초하여 태스크(TASK)를 제2코어(C2)에서 다른 코어(예컨대, 제5코어(C5))로 마이그레이션할 것인지 여부를 상기 일정 주기마다 결정할 수 있다.
실시 예에 따라, 제1클러스터(212)에 포함된 코어들(C1~C4)을 저성능-저전력 코어들로 가정하고, 제2클러스터(214)에 포함된 코어들(C5~C8)을 고성능-고전력 코어들로 가정할 때, 마이그레이션 체커(425)는, 상기 워크로드가 기준 워크로드보다 높은 경우 태스크(TASK)를 제2클러스터(214)에 포함된 코어들(C5~C8) 중에서 어느 하나로 마이그레이션하도록 결정할 수 있다.
다른 실시 예에 따라, 제1클러스터(212)에 포함된 코어들(C1~C4)을 고성능-고전력 코어들로 가정하고, 제2클러스터(214)에 포함된 코어들(C5~C8)을 저성능-저전력 코어들로 가정할 때, 마이그레이션 체커(425)는, 상기 워크로드가 상기 기준 워크로드보다 낮은 경우 태스크(TASK)를 제2클러스터(214)에 포함된 코어들(C5~C8) 중에서 어느 하나로 마이그레이션하도록 결정할 수 있다.
마이그레이션 체커(425)는 태스크(TASK)를 제5코어(C5)로 마이그레이션하기 전에, 제1API(427)를 통해 아이들 모듈(410)에 포함된 아이들 체커(412-1)를 호출(CALL1a)할 수 있다.
호출된 아이들 체커(412-1)는 제2API(428)를 통해 클러스터 상태 모듈(431)을 호출(CALL2a)하고, 호출된 클러스터 상태 모듈(431)로부터 제2클러스터(214)의 상태 정보(CSIa)를 제2API(428)를 통해 수신할 수 있다. 실시 예에 따라, 클러스터 상태 모듈(431)은 클러스터들(212와 214) 각각의 파워의 레벨 정보를 포함하고 PMU(230-1)를 제어할 수 있는 PMU 제어 모듈일 수 있고, 상태 정보(CSIa)는 제2클러스터(214)의 상기 파워의 상기 레벨 정보일 수 있다. 다른 실시 예에 따라, 클러스터 상태 모듈(431)은 클러스터들(212와 214) 각각의 클락 신호의 주파수 정보를 포함하고 CMU(240-1)를 제어할 수 있는 CMU 제어 모듈일 수 있고, 상태 정보(CSIa)는 제2클러스터(214)의 상기 클락 신호의 상기 주파수 정보일 수 있다.
아이들 체커(412-1)는 수신된 상태 정보(CSIa)에 기초하여 제2클러스터(214)의 아이들 여부를 체크하고, 체크 결과를 제1API(427)를 통해 마이그레이션 체커(425)로 전송할 수 있다.
상기 체크 결과 제2클러스터(214)가 아이들 상태일 때, 아이들 체커(412-1)는 마이그레이션 체커(425)로 제2클러스터(214)가 상기 아이들 상태임을 지시하는 응답 신호(RESPa)를 전송하고, 제2클러스터(214)를 웨이크-업시킬 수 있다. 예컨대, 아이들 체커(412-1)는 제2클러스터(214)로 상기 기준 레벨 이상의 레벨을 갖는 파워를 공급하기 위해 제1인터럽트(I1a)를 PMU(230-1)로 전송하거나, 제2클러스터(214)로 상기 기준 주파수 이상의 주파수를 갖는 클락 신호를 공급하기 위해 제2인터럽트(I2a)를 CMU(240-1)로 전송할 수 있다.
PMU(230-1)는 제1인터럽트(I1a)에 응답하여 PMIC(300-1)로 제1제어 신호(CS1a)를 전송하고, PMIC(300-1)는 제1제어 신호(CS1a)에 응답하여 제2클러스터(214)와 인터페이스(216) 각각으로 파워(PW1a 또는 PW1b)를 공급할 수 있다. CMU(240-1)는 제2인터럽트(I2a)에 응답하여 제2클러스터(214)와 인터페이스(216) 각각으로 클락 신호(CLK1a 또는 CLK1b)를 공급할 수 있다.
제2클러스터(214)는 파워(PW1a) 및/또는 클락 신호(CLK1a)를 수신하고, 아이들 체커(412-1)로부터 제3인터럽트(I3)를 수신하여 웨이크-업될 수 있다. 인터페이스(216)는 파워(PW1b) 및/또는 클락 신호(CLK1b)를 수신하여 작동할 수 있고, 인터페이스(216)가 작동함에 따라, 제1캐시 메모리(213)에 저장되고 태스크(TASK)에 관련된 데이터는 제2캐시 메모리(215)로 옮겨지거나 복사될 수 있다.
아이들 체커(412-1)는 제2클러스터(214)가 상기 아이들 상태로 재진입하는 것을 방지하기 위해, 아이들 엔터(416)로 아이들 제한 신호(IR)를 전송할 수 있다. 제2클러스터(214)를 아이들시킬 수 있는 아이들 엔터(416)는, 아이들 제한 신호(IR)에 응답하여 제2클러스터(214)를 아이들시키지 않을 수 있다.
마이그레이션 체커(425)는 제2클러스터(214)가 상기 아이들 상태임을 지시하는 응답 신호(RESPa)를 수신한 경우, 마이그레이션 신호(MI)를 마이그레이터(426)로 출력하지 않을 수 있다. 따라서, 스케쥴링 타이머(423)가 다음 스케쥴링 틱(ST2)을 전송하기 전까지 태스크(TASK)는 제2코어(C2)에서 수행될 수 있다. 즉, 스케쥴러(420)는 아이들 모듈(410)에 포함된 아이들 체커(412-1)를 이용하여 제5코어(C5)의 아이들 여부를 체크하고, 체크 결과 제5코어(C5)가 웨이크-업되기 전까지 태스크(TASK)를 마이그레이션하지 않을 수 있다.
도 6을 참조하면, 도 5에 도시된 컨트롤러(200-1)의 작동들이 완료된 후에, 스케쥴링 타이머(423)로부터 마이그레이션 체커(425)로 다음 스케쥴링 틱(ST2)이 전송되면, 마이그레이션 체커(425)는 아이들 체커(412-1)를 호출(CALL1b)할 수 있다. 호출된 아이들 체커(412-1)는 클러스터 상태 모듈(431)을 호출(CALL2b)하여 제2클러스터(214)의 상태 정보(CSIb)를 수신할 수 있다. 아이들 체커(412-1)는 수신된 상태 정보(CSIb)에 기초하여 제2클러스터(214)의 아이들 여부를 체크하고, 체크 결과를 마이그레이션 체커(425)로 전송할 수 있다.
도 5에서 제2클러스터(214)는 웨이크-업 상태로 되고, 아이들 제한 신호(IR)에 의해 아이들 엔터(416)가 제2클러스터(214)를 아이들시키지 않으므로, 아이들 체커(412-1)는 태스크(TASK)를 제5코어(C5)로 마이그레이션하도록 지시하는 응답 신호(또는 마이그레이션 트리거 신호; RESPb)를 마이그레이션 체커(425)로 전송할 수 있다.
마이그레이션 체커(425)는 마이그레이션 트리거 신호(RESPb)에 응답하여 마이그레이션 신호(MI)를 마이그레이터(426)로 출력하고, 마이그레이터(426)는 수신된 마이그레이션 신호(MI)에 응답하여 태스크(TASK)를 제5코어(C5)로 마이그레이션(MIGR)할 수 있다. 실시 예에 따라, 마이그레이터(426)는 마이그레이션이 완료된 후, 마이그레이션 완료 신호(MIGC)를 아이들 체커(412-1)로 전송할 수 있고, 아이들 체커(412-1)는 마이그레이션 완료 신호(MIGC)에 응답하여 아이들 제한 신호(IR)를 더이상 출력하지 않을 수 있다.
실시 예에 따라, 제1클러스터(212)에 포함된 코어들(C1~C4)에서 수행될 태스크가 더이상 존재하지 않을 때, 아이들 모듈(410)은 제1클러스터(212)를 아이들 상태로 변경시킬 수 있다. 아이들 엔터(416)는 PMU(230-1)로 제1인터럽트(I1b)를 전송하거나, CMU(240-1)로 제2인터럽트(I2b)를 전송할 수 있다.
PMU(230-1)는 제1인터럽트(I1b)에 응답하여, PMIC(300-1)로 제1제어 신호(CS1b)를 전송하고, PMIC(300-1)는 제1제어 신호(CS1b)에 응답하여 제1클러스터(212)로 공급되는 파워(PW1c)를 차단하거나 파워(PW1c)의 레벨을 상기 기준 레벨보다 낮출 수 있다. 실시 예에 따라, PMIC(300-1)는 제1제어 신호(CS1b)에 응답하여 인터페이스(216)로 공급되는 파워(PW1b)를 차단할 수도 있다.
CMU(240-1)는 제2인터럽트(I2b)에 응답하여, 제1클러스터(212)로 공급되는 클락 신호(CLK1c)를 차단하거나 클락 신호(CLK1c)의 주파수를 상기 기준 주파수보다 낮출 수 있다. 실시 예에 따라, CMU(240-1)는 인터페이스(216)로 공급되는 클락 신호(CLK1b)를 차단할 수도 있다. 파워(PW1c) 및/또는 클락 신호(CLK1c)가 조절됨에 따라, 제1클러스터(212)는 아이들될 수 있다.
도 7부터 도 9는 도 2에 도시된 컨트롤러의 작동에 대한 실시 예를 나타내는 블록도들이다. 도 1부터 도 4, 및 도 7을 참조하면, 스케쥴링 타이머(423)와 마이그레이션 체커(425), 및 마이그레이터(426)의 작동은 도 3에 도시된 스케쥴링 타이머(423), 마이그레이션 체커(425), 및 마이그레이터(426)의 작동과 실질적으로 동일하므로, 이에 대한 설명은 생략하기로 한다.
마이그레이션 체커(425)는 제1API(427)를 통해 아이들 체커(412-2)를 호출(CALL1a)하고, 호출된 아이들 체커(412-2)는 제2API(428)를 통해 코어 상태 모듈(430)을 호출(CALL2a)하여 제5코어(C5)의 상태 정보(CSIa)를 수신할 수 있다. 아이들 체커(412-2)는 수신된 상태 정보(CSIa)에 기초하여 제5코어(C5)의 아이들 여부를 체크하고, 체크 결과를 제1API(427)를 통해 마이그레이션 체커(425)로 전송할 수 있다.
상기 체크 결과 제5코어(C5)가 아이들 상태일 때, 아이들 체커(412-2)는 마이그레이션 체커(425)로 제5코어(C5)가 상기 아이들 상태임을 지시하는 응답 신호(RESPa)를 전송하고, 제5코어(C5)를 웨이크-업시킬 수 있다. 예컨대, 아이들 체커(412-2)는 제5코어(C5)를 웨이크-업시키기 위한 제2제어 신호(CS2)를 인터럽트 컨트롤러(270)로 전송할 수 있다.
아이들 체커(412-2)는 제5코어(C5)가 상기 아이들 상태로 재진입하는 것을 방지하기 위해, 아이들 엔터(416)로 아이들 제한 신호(IR)를 전송할 수 있다. 제5코어(C5)를 아이들시킬 수 있는 아이들 엔터(416)는, 아이들 제한 신호(IR)에 응답하여 제5코어(C5)를 아이들시키지 않을 수 있다.
도 8을 참조하면, 인터럽트 컨트롤러(270)는 제2제어 신호(CS2)에 응답하여, 제1인터럽트(I1a)를 PMU(230-2)로 전송하거나, 제2인터럽트(I2a)를 CMU(240-2)로 전송할 수 있다.
PMU(230-2)는 제1인터럽트(I1a)에 응답하여 PMIC(300-2)로 제1제어 신호(CS1a)를 전송하고, PMIC(300-2)는 제1제어 신호(CS1a)에 응답하여 제5코어(C5)와 인터페이스(216) 각각으로 파워(PW1a 또는 PW1b)를 공급할 수 있다. CMU(240-2)는 제2인터럽트(I2a)에 응답하여 제5코어(C5)와 인터페이스(216) 각각으로 클락 신호(CLK1a 또는 CLK1b)를 공급할 수 있다.
제5코어(C5)는 파워(PW1a) 및/또는 클락 신호(CLK1a)를 수신하고, 인터럽트 컨트롤러(270)로부터 제3인터럽트(I3)를 수신하여 웨이크-업될 수 있다. 인터페이스(216)는 파워(PW1b) 및/또는 클락 신호(CLK1b)를 수신하여 작동할 수 있고, 인터페이스(216)가 작동함에 따라 제1캐시 메모리(213)에 저장된, 태스크(TASK)에 관련된 데이터는 제2캐시 메모리(215)로 옮겨지거나 복사될 수 있다.
도 9를 참조하면, 도 7과 도 8에 도시된 컨트롤러(200-2)의 작동들이 완료된 후에, 스케쥴링 타이머(423)로부터 마이그레이션 체커(425)로 다음 스케쥴링 틱(ST2)이 전송되면, 마이그레이션 체커(425)는 아이들 체커(412-2)를 호출(CALL1b)할 수 있다. 호출된 아이들 체커(412-2)는 코어 상태 모듈(430)을 호출(CALL2b)하여 제5코어(C5)의 상태 정보(CSIb)를 수신할 수 있다. 아이들 체커(412-2)는 수신된 상태 정보(CSIb)에 기초하여 제5코어(C5)의 아이들 여부를 체크하고, 체크 결과를 마이그레이션 체커(425)로 전송할 수 있다.
도 8에서 제5코어(C5)는 웨이크-업 상태로 되고, 아이들 제한 신호(IR)에 의해 아이들 엔터(416)가 제5코어(C5)를 아이들시키지 않으므로, 아이들 체커(412-2)는 태스크(TASK)를 제5코어(C5)로 마이그레이션하도록 지시하는 응답 신호(또는 마이그레이션 트리거 신호; RESPb)를 마이그레이션 체커(425)로 전송할 수 있다.
마이그레이션 체커(425)는 마이그레이션 트리거 신호(RESPb)에 응답하여 마이그레이션 신호(MI)를 마이그레이터(426)로 전송하고, 마이그레이터(426)는 태스크(TASK)를 제5코어(C5)로 마이그레이션(MIGR)할 수 있다. 실시 예에 따라, 마이그레이터(426)는 마이그레이션(MIGR)이 완료된 후, 아이들 체커(412-2)로 마이그레이션 완료 신호(MIGC)를 전송할 수 있다. 아이들 체커(412-2)는 마이그레이션 완료 신호(MIGC)에 응답하여 아이들 제한 신호(IR)를 더이상 출력하지 않을 수 있다.
실시 예에 따라, 제2코어(C2)에서 수행될 태스크가 존재하지 않을 때, 아이들 모듈(410)은 제2코어(C2)를 아이들 상태로 변경시킬 수 있다. 아이들 엔터(416)는 제2코어(C2)를 아이들시키기 위한 제2제어 신호(CS2b)를 인터럽트 컨트롤러(270)로 전송할 수 있다. 인터럽트 컨트롤러(270)는 제2제어 신호(CS2b)에 응답하여, PMU(230-2)로 제1인터럽트(I1b)를 전송하거나, CMU(240-2)로 제2인터럽트(I2b)를 전송할 수 있다.
PMU(230-2)는 제1인터럽트(I1b)에 응답하여, PMIC(300-2)로 제1제어 신호(CS1b)를 전송하고, PMIC(300-2)는 제1제어 신호(CS1b)에 응답하여 제2코어(C2)로 공급되는 파워(PW1c)를 차단하거나 파워(PW1c)의 레벨을 상기 기준 레벨보다 낮출 수 있다. 실시 예에 따라, PMIC(300-2)는 제1제어 신호(CS1b)에 응답하여 인터페이스(216)로 공급되는 파워(PW1b)를 차단할 수도 있다.
CMU(240-2)는 제2인터럽트(I2b)에 응답하여, 제2코어(C2)로 공급되는 클락 신호(CLK1c)를 차단하거나 클락 신호(CLK1c)의 주파수를 상기 기준 주파수보다 낮출 수 있다. 실시 예에 따라, CMU(240-2)는 인터페이스(216)로 공급되는 클락 신호(CLK1b)를 차단할 수도 있다. 파워(PW1c) 및/또는 클락 신호(CLK1c)가 조절됨에 따라, 제2코어(C2)는 아이들될 수 있다.
도 10부터 도 12는 도 2에 도시된 컨트롤러의 작동에 대한 다른 실시 예를 나타내는 블록도들이다. 도 1부터 도 2, 도 5부터 도 6, 및 도 10을 참조하면, 스케쥴링 타이머(423), 마이그레이션 체커(425), 및 마이그레이터(426)의 작동은 도 5에 도시된 스케쥴링 타이머(423), 마이그레이션 체커(425), 및 마이그레이터(426)의 작동과 실질적으로 동일하므로, 이에 대한 설명은 생략하기로 한다.
마이그레이션 체커(425)는 제1API(427)를 통해 아이들 체커(412-2)를 호출(CALL1a)하고, 호출된 아이들 체커(412-2)는 제2API(428)를 통해 클러스터 상태 모듈(431)을 호출(CALL2a)할 수 있다. 아이들 체커(412-2)는 클러스터 상태 모듈(431)로부터 제2클러스터(214)의 상태 정보(CSIa)를 수신하면, 수신된 상태 정보(CSIa)에 기초하여 제2클러스터(214)의 아이들 여부를 체크하고, 체크 결과를 제1API(427)를 통해 마이그레이션 체커(425)로 전송할 수 있다.
상기 체크 결과 제2클러스터(214)가 아이들 상태일 때, 아이들 체커(412-2)는 마이그레이션 체커(425)로 제2클러스터(214)가 상기 아이들 상태임을 지시하는 응답 신호(RESPa)를 전송하고, 제2클러스터(214)를 웨이크-업시킬 수 있다. 예컨대, 아이들 체커(412-2)는 제2클러스터(214)를 웨이크-업시키기 위한 제2제어 신호(CS2)를 인터럽트 컨트롤러(270)로 전송할 수 있다.
아이들 체커(412-2)는 제2클러스터(214)가 상기 아이들 상태로 재진입하는 것을 방지하기 위해, 아이들 엔터(416)로 아이들 제한 신호(IR)를 전송할 수 있다. 제2클러스터(214)를 아이들시킬 수 있는 아이들 엔터(416)는, 아이들 제한 신호(IR)에 응답하여 제2클러스터(214)를 아이들시키지 않을 수 있다.
마이그레이션 체커(425)는 제2클러스터(214)가 상기 아이들 상태임을 지시하는 응답 신호(RESPa)를 수신한 경우, 마이그레이션 신호(MI)를 마이그레이터(426)로 전송하지 않을 수 있다. 따라서, 스케쥴링 타이머(423)가 다음 스케쥴링 틱(ST2)을 전송하기 전까지 태스크(TASK)는 제2코어(C2)에서 수행될 수 있다.
도 11을 참조하면, 인터럽트 컨트롤러(270)는 제2제어 신호(CS2)에 응답하여, 제1인터럽트(I1a)를 PMU(230-2)로 전송하거나, 제2인터럽트(I2a)를 CMU(240-2)로 전송할 수 있다.
PMU(230-2)는 제1인터럽트(I1a)에 응답하여 PMIC(300-2)로 제1제어 신호(CS1a)를 전송하고, PMIC(300-2)는 제1제어 신호(CS1a)에 응답하여 제2클러스터(214)와 인터페이스(216) 각각으로 파워(PW1a 또는 PW1b)를 공급할 수 있다. CMU(240-2)는 제2인터럽트(I2a)에 응답하여 제2클러스터(214)와 인터페이스(216) 각각으로 클락 신호(CLK1a 또는 CLK1b)를 공급할 수 있다.
제2클러스터(214)는 파워(PW1a) 및/또는 클락 신호(CLK1a)를 수신하고, 인터럽트 컨트롤러(270)로부터 제3인터럽트(I3)를 수신하여 웨이크-업될 수 있다. 인터페이스(216)는 파워(PW1b) 및/또는 클락 신호(CLK1b)를 수신하여 작동할 수 있고, 인터페이스(216)가 작동함에 따라, 제1캐시 메모리(213)에 저장되고 태스크(TASK)에 관련된 데이터는 제2캐시 메모리(215)로 옮겨지거나 복사될 수 있다.
도 12를 참조하면, 도 10과 도 11에 도시된 컨트롤러(200-2)의 작동들이 완료된 후에, 스케쥴링 타이머(423)로부터 마이그레이션 체커(425)로 다음 스케쥴링 틱(ST2)이 전송되면, 마이그레이션 체커(425)는 아이들 체커(412-2)를 호출(CALL1b)할 수 있다. 호출된 아이들 체커(412-2)는 클러스터 상태 모듈(431)을 호출(CALL2b)하여 제2클러스터(214)의 상태 정보(CSIb)를 수신할 수 있다. 아이들 체커(412-2)는 수신된 상태 정보(CSIb)에 기초하여 제2클러스터(214)의 아이들 여부를 체크하고, 체크 결과를 마이그레이션 체커(425)로 전송할 수 있다.
도 11에서 제2클러스터(214)는 웨이크-업 상태로 되고, 아이들 제한 신호(IR)에 의해 아이들 엔터(416)가 제2클러스터(214)를 아이들시키지 않으므로, 아이들 체커(412-2)는 태스크(TASK)를 제5코어(C5)로 마이그레이션하도록 지시하는 응답 신호(또는 마이그레이션 트리거 신호; RESPb)를 마이그레이션 체커(425)로 전송할 수 있다.
마이그레이션 체커(425)는 마이그레이션 트리거 신호(RESPb)에 응답하여 마이그레이션 신호(MI)를 마이그레이터(426)로 전송하고, 마이그레이터(426)는 마이그레이션 신호(MI)에 응답하여 태스크(TASK)를 제5코어(C5)로 마이그레이션(MIGR)할 수 있다. 실시 예에 따라, 마이그레이터(426)는 마이그레이션(MIGR)이 완료된 후, 아이들 체커(412-2)로 마이그레이션 완료 신호(MIGC)를 전송할 수 있다. 아이들 체커(412-2)는 마이그레이션 완료 신호(MIGC)에 응답하여 아이들 제한 신호(IR)를 더이상 출력하지 않을 수 있다
실시 예에 따라, 제1클러스터(212)에 포함된 코어들(C1~C4)에서 수행될 태스크가 더이상 존재하지 않을 때, 아이들 모듈(410)은 제1클러스터(212)를 아이들 상태로 변경시킬 수 있다. 아이들 엔터(416)는 제1클러스터(212)를 아이들시키기 위한 제2제어 신호(CS2b)를 인터럽트 컨트롤러(270)로 전송할 수 있다. 인터럽트 컨트롤러(270)는 제2제어 신호(CS2b)에 응답하여, PMU(230-2)로 제1인터럽트(I1b)를 전송하거나, CMU(240-2)로 제2인터럽트(I2b)를 전송할 수 있다.
PMU(230-2)는 제1인터럽트(I1b)에 응답하여, PMIC(300-2)로 제1제어 신호(CS1b)를 전송하고, PMIC(300-2)는 제1제어 신호(CS1b)에 응답하여 제1클러스터(212)로 공급되는 파워(PW1c)를 차단하거나 파워(PW1c)의 레벨을 상기 기준 레벨보다 낮출 수 있다. 실시 예에 따라, PMIC(300-2)는 제1제어 신호(CS1b)에 응답하여 인터페이스(216)로 공급되는 파워(PW1b)를 차단할 수도 있다.
CMU(240-2)는 제2인터럽트(I2b)에 응답하여, 제1클러스터(212)로 공급되는 클락 신호(CLK1c)를 차단하거나 클락 신호(CLK1c)의 주파수를 상기 기준 주파수보다 낮출 수 있다. 실시 예에 따라, CMU(240-2)는 인터페이스(216)로 공급되는 클락 신호(CLK1b)를 차단할 수도 있다. 파워(PW1c) 및/또는 클락 신호(CLK1c)가 조절됨에 따라, 제1클러스터(212)는 아이들될 수 있다.
도 13은 도 3부터 도 6에 도시된 아이들 체커의 일 실시 예를 나타내는 블록도이다.
도 3부터 도 6, 및 도 13을 참조하면, 아이들 체커(412-1)는 마이그레이션 통지자(migration notifier; 413), 웨이크-업 관리자(wake-up manager; 414-1), 및 아이들 금지자(idle prohibitor; 415)를 포함할 수 있다.
마이그레이션 통지자(413)는 마이그레이션 체커(425)에 의해 호출(CALL1)될 수 있다. 호출된 마이그레이션 통지자(413)는 코어 상태 모듈(430) 또는 클러스터 상태 모듈(431)을 호출(CALL2)하고, 코어 상태 정보 또는 클러스터 상태 정보(CSI)를 수신할 수 있다. 마이그레이션 통지자(413)는 수신된 코어 상태 정보 또는 클러스터 상태 정보(CSI)에 기초하여 응답 신호(RESP)를 마이그레이션 체커(425)로 전송할 수 있다. 응답 신호(RESP)는 코어(또는 클러스터)가 아이들 상태임을 지시하는 응답 신호(RESPa) 또는 마이그레이션 트리거 신호(RESPb)일 수 있다.
마이그레이션 통지자(413)는 상기 코어(또는 상기 클러스터)를 웨이크-업시키거나 아이들시키기 위해 웨이크-업 관리자(414-1)를 제어할 수 있다. 웨이크-업 관리자(414-1)는 PMU(230-1), CMU(240-1), 및/또는 상기 코어(또는 상기 클러스터)로 인터럽트(I1, I2, 및/또는 I3)를 출력할 수 있다.
마이그레이션 통지자(413)는 상기 코어(또는 상기 클러스터)를 웨이크-업시키고, 웨이크-업된 상기 코어(또는 상기 클러스터)가 다시 아이들되지 않도록 하기 위해, 아이들 금지자(415)로 하여금 아이들 제한 신호(IR)를 아이들 엔터(416)로 출력하도록 제어할 수 있다.
실시 예에 따라, 마이그레이션이 완료된 후, 마이그레이션 통지자(413)는 마이그레이터(426)로부터 전송된 마이그레이션 완료 신호(MIGC)에 응답하여, 아이들 금지자(415)가 더이상 아이들 제한 신호(IR)를 출력하지 않도록 제어할 수 있다.
도 14는 도 7부터 도 12에 도시된 아이들 체커의 일 실시 예를 나타내는 블록도이다.
도 7부터 도 14를 참조하면, 도 14에 도시된 아이들 체커(412-2)에 포함된 마이그레이션 통지자(413)와 아이들 금지자(415)의 구조와 작동은 도 13에 도시된 아이들 체커(412-1)에 포함된 마이그레이션 통지자(413)와 아이들 금지자(415)의 구조와 작동과 실질적으로 동일하므로, 이에 대한 설명은 생략하기로 한다.
마이그레이션 통지자(413)는 상기 코어(또는 상기 클러스터)를 웨이크-업시키거나 아이들시키기 위해 웨이크-업 관리자(414-2)를 제어할 수 있다. 웨이크-업 관리자(414-2)는 인터럽트 컨트롤러(270)를 제어하기 위한 제2제어 신호(CS2)를 생성하고, 생성된 제2제어 신호(CS2)를 인터럽트 컨트롤러(270)로 전송할 수 있다. 인터럽트 컨트롤러(270)는 제2제어 신호(CS2)에 기초하여 PMU(230-2), CMU(240-2), 및/또는 상기 코어(또는 상기 클러스터)로 인터럽트를 출력할 수 있다.
도 15는 도 3부터 도 4, 또는 도 7부터 도 9에 도시된 컨트롤러의 작동에 대한 플로우차트이다. 도 15와 도 16에서, 제1코어는 도 3부터 도 12에 도시된 제2코어(C2)를 의미하고, 제2코어는 도 3부터 도 12에 도시된 제5코어(C5)를 의미할 수 있다.
도 1부터 도 4, 도 7부터 도 9, 및 도 15를 참조하면, 제1코어(C2)에서 실행되고, 제1코어(C2)에서 수행되는 태스크(TASK)의 워크로드를 모니터링하는 스케쥴러(420)가 아이들 체커(412-1 또는 412-2)를 호출할 수 있다(S100). 예컨대, 스케쥴러(420)에 포함된 마이그레이션 체커(425)는, 태스크(TASK)를 제2코어(C5)로 마이그레이션하기 전에, 제2코어(C5)의 상태를 체크하기 위해 제1API(427)를 통해 아이들 체커(412-1 또는 412-2)를 호출할 수 있다.
호출된 아이들 체커(412-1 또는 412-2)는, 제2API(428)를 통해 코어 상태 모듈(430)을 호출하고, 호출된 코어 상태 모듈(430)로부터 수신된 제2코어(C5)의 상태 정보(CSIa 또는 CSIb)에 기초하여 제2코어(C5)의 아이들 여부를 체크할 수 있다(S110). 아이들 체커(412-1 또는 412-2)는 체크 결과에 따른 응답 신호(RESPa 또는 RESPb)를 제1API(427)를 통해 마이그레이션 체커(425)로 전송할 수 있다.
상기 체크 결과 제2코어(C5)가 아이들 상태인 경우(S120의 YES), 아이들 체커(412-1 또는 412-2)는 제2코어(C5)를 웨이크-업시키고, 제2코어(C5)가 상기 아이들 상태로 재진입하는 것을 방지할 수 있다(S130).
실시 예에 따라, 아이들 체커(412-1 또는 412-2)는 제2코어(C5)를 웨이크-업시키기 위해 인터럽트 컨트롤러(270)를 제어할 수 있다. 제2코어(C5)는 PMIC(300-1 또는 300-2)로부터 기준 레벨 이상의 파워(PW1a)를 공급받거나, CMU(240-1 또는 240-2)로부터 기준 주파수 이상의 클락 신호(CLK1a)를 공급받음으로써 웨이크-업될 수 있다.
아이들 체커(412-1 또는 412-2)는 제2코어(C5)가 상기 아이들 상태로 재진입하는 것을 방지하기 위해, 아이들 제한 신호(IR)를 아이들 엔터(416)로 전송하고, 아이들 엔터(416)는 아이들 제한 신호(IR)에 응답하여 제2코어(C5)를 아이들시키지 않을 수 있다.
마이그레이션 체커(425)는 제2코어(C5)가 상기 아이들 상태임을 지시하는 응답 신호(RESPa)를 수신하면, 태스크(TASK)를 제2코어(C5)로 마이그레이션하지 않을 수 있다. 따라서, 태스크(TASK)는 제1코어(C2)에서 수행될 수 있다(S140).
상기 체크 결과 제2코어(C5)가 아이들 상태가 아닌 경우, 즉 웨이크-업 상태인 경우(S120의 NO), 아이들 체커(412-1 또는 412-2)는 태스크(TASK)를 제2코어(C5)로 마이그레이션시키기 위한 응답 신호(또는 마이그레이션 트리거 신호; RESPb)를 마이그레이션 체커(425)로 전송할 수 있다(S150).
마이그레이션 체커(425)는, 마이그레이션 트리거 신호(RESPb)에 응답하여 태스크(TASK)를 제2코어(C5)로 마이그레이션하기 위한 마이그레이션 신호(MI)를 마이그레이터(426)로 출력하고, 마이그레이터(426)는 마이그레이션 신호(MI)에 응답하여 태스크(TASK)를 제2코어(C5)로 마이그레이션(MIGR)할 수 있다(S160). 따라서 태스크(TASK)는 제2코어(C5)에서 수행될 수 있다(S170).
도 16은 도 5부터 도 6, 또는 도 10부터 도 12에 도시된 컨트롤러의 작동에 대한 플로우차트이다. 도 1부터 도 2, 도 5부터 도 6, 도 10부터 도 12, 및 도 15부터 도 16을 참조하면, 제1클러스터(212)에 포함된 제1코어(C2)에서 실행되고, 제1코어(C2)에서 수행되는 태스크(TASK)의 워크로드를 모니터링하는 스케쥴러(420)가 아이들 체커(412-1 또는 412-2)를 호출할 수 있다(S200). 예컨대, 스케쥴러(420)에 포함된 마이그레이션 체커(425)는, 태스크(TASK)를 제2코어(C5)로 마이그레이션하기 전에, 제2클러스터(214)의 상태를 체크하기 위해 제1API(427)를 통해 아이들 체커(412-1 또는 412-2)를 호출할 수 있다.
호출된 아이들 체커(412-1 또는 412-2)는, 제2API(428)를 통해 클러스터 상태 모듈(431)을 호출하고, 호출된 클러스터 상태 모듈(431)로부터 수신된 제2클러스터(214)의 상태 정보(CSIa 또는 CSIb)에 기초하여 제2클러스터(214)의 아이들 여부를 체크할 수 있다(S210). 아이들 체커(412-1 또는 412-2)는 체크 결과에 따른 응답 신호(RESPa 또는 RESPb)를 제1API(427)를 통해 마이그레이션 체커(425)로 전송할 수 있다.
상기 체크 결과 제2클러스터(214)가 아이들 상태인 경우(S220의 YES), 아이들 체커(412-1 또는 412-2)는 제2클러스터(214)를 웨이크-업시키고, 제2클러스터(214)가 상기 아이들 상태로 재진입하는 것을 방지할 수 있다(S230).
실시 예에 따라, 아이들 체커(412-1 또는 412-2)는 제2클러스터(214)를 웨이크-업시키기 위해 인터럽트 컨트롤러(270)를 제어할 수 있다. 제2클러스터(214)는 PMIC(300-1 또는 300-2)로부터 기준 레벨 이상의 파워(PW1a)를 공급받거나, CMU(240-1 또는 240-2)로부터 기준 주파수 이상의 클락 신호(CLK1a)를 공급받음으로써 웨이크-업될 수 있다.
아이들 체커(412-1 또는 412-2)는 제2클러스터(214)가 상기 아이들 상태로 재진입하는 것을 방지하기 위해, 아이들 제한 신호(IR)를 아이들 엔터(416)로 전송하고, 아이들 엔터(416)는 아이들 제한 신호(IR)에 응답하여 제2클러스터(214)를 아이들시키지 않을 수 있다.
마이그레이션 체커(425)는 제2클러스터(214)가 상기 아이들 상태임을 지시하는 응답 신호(RESPa)를 수신하면, 태스크(TASK)를 제2코어(C5)로 마이그레이션하지 않을 수 있다. 따라서, 태스크(TASK)는 제1코어(C2)에서 수행될 수 있다(S240).
상기 체크 결과 제2클러스터(214)가 아이들 상태가 아닌 경우, 즉 웨이크-업 상태인 경우(S220의 NO), 아이들 체커(412-1 또는 412-2)는 태스크(TASK)를 제2코어(C5)로 마이그레이션시키기 위한 응답 신호(또는 마이그레이션 트리거 신호; RESPb)를 마이그레이션 체커(425)로 전송할 수 있다(S250).
마이그레이션 체커(425)는, 마이그레이션 트리거 신호(RESPb)에 응답하여 마이그레이션 신호(MI)를 마이그레이터(426)로 출력하고, 마이그레이터(426)는 마이그레이션 신호(MI)에 응답하여 태스크(TASK)를 제2코어(C5)로 마이그레이션(MIGR)할 수 있다(S260). 따라서 태스크(TASK)는 제2코어(C5)에서 수행될 수 있다(S270).
도 17은 본 발명의 실시 예에 따른 전자 시스템의 개략적인 블록도이다. 도 1부터 도 17을 참조하면, 전자 시스템(1200, 1300, 1400, 또는 1500)은 도 1 또는 도 2에 도시된 컴퓨팅 장치(100-1 또는 100-2)로 구현될 수 있다.
전자 시스템(1200, 1300, 1400, 또는 1500)은 컨트롤러(1210), 파워 소스(1220), 저장 장치(1230), 메모리(1240), 입출력 포트들(1250), 확장 카드(1260), 네트워크 장치(1270), 및 디스플레이(1280)를 포함한다. 실시 예에 따라. 전자 시스템(1200, 1300, 1400, 또는 1500)은 카메라 모듈(1290)을 더 포함할 수 있다.
컨트롤러(1210)는 도 1 또는 도 2에 도시된 컨트롤러(200-1 또는 200-2)를 의미한다. 컨트롤러(1210)는 구성 요소들(elements; 1210~1280) 각각의 동작을 제어할 수 있다. 파워 소스(1220)는 구성 요소들(1210~1280) 중에서 적어도 하나로 동작 전압을 공급할 수 있다. 저장 장치(1230)는 하드디스크 드라이브(hard disk drive) 또는 SSD(solid state drive)로 구현될 수 있다.
메모리(1240)는 휘발성 메모리 또는 불휘발성 메모리로 구현될 수 있다. 실시 예에 따라, 메모리(1240)에 대한 데이터 액세스 동작, 예컨대, 리드 동작, 라이트 동작(또는 프로그램 동작), 또는 이레이즈 동작을 제어할 수 있는 메모리 컨트롤러는 컨트롤러(1210)에 집적 또는 내장될 수 있다. 다른 실시 예에 따라, 상기 메모리 컨트롤러는 컨트롤러(1210)와 메모리(1240) 사이에 구현될 수 있다.
입출력 포트들(1250)은 전자 시스템(1200, 1300, 1400, 또는 1500)으로 데이터를 전송하거나 또는 전자 시스템(1200, 1300, 1400, 또는 1500)으로부터 출력된 데이터를 외부 장치로 전송할 수 있는 포트들을 의미한다. 예컨대, 입출력 포트들(1250)은 컴퓨터 마우스와 같은 포인팅 장치(pointing device)를 접속하기 위한 포트, 프린터를 접속하기 위한 포트, 또는 USB 드라이브를 접속하기 위한 포트일 수 있다.
확장 카드(1260)는 SD(secure digital) 카드 또는 MMC(multimedia card)로 구현될 수 있다. 실시 예에 따라, 확장 카드(1260)는 SIM(subscriber identification module) 카드 또는 USIM(universal subscriber identity Module) 카드일 수 있다.
네트워크 장치(1270)는 전자 시스템(1200, 1300, 1400, 또는 1500)을 유선 네트워크 또는 무선 네트워크에 접속시킬 수 있는 장치를 의미한다. 디스플레이(1280)는 저장 장치(1230), 메모리(1240), 입출력 포트들(1250), 확장 카드(1260), 또는 네트워크 장치(1270)로부터 출력된 데이터를 디스플레이할 수 있다.
카메라 모듈(1290)은 광학 이미지를 전기적인 이미지로 변환할 수 있는 모듈을 의미한다. 따라서, 카메라 모듈(1290)로부터 출력된 전기적인 이미지는 저장 장치(1230), 메모리(1240), 또는 확장 카드(1260)에 저장될 수 있다. 또한, 카메라 모듈(1290)로부터 출력된 전기적인 이미지는 디스플레이(1280)를 통하여 디스플레이될 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100-1, 100-2 : 컴퓨팅 장치
200-1, 200-2, 1210 : 컨트롤러
212 : 제1클러스터
214 : 제2클러스터
216 : 인터페이스
230-1, 230-3 : 전력 관리 유닛(power management unit(PMU))
240-1, 240-2 : 클락 관리 유닛(clock management unit(CMU))
250 : 내부 메모리
260 : 입출력 인터페이스
270 : 인터럽트 컨트롤러
300-1, 300-2 : 전력 관리 IC(power management IC)
400 : 불휘발성 메모리
1200, 1300, 1400, 1500 : 전자 시스템

Claims (10)

  1. 제1코어; 및
    제2코어를 포함하고,
    상기 제1코어는 상기 제1코어의 태스크(task)의 워크로드(workload)를 모니터링하는 스케쥴러(scheduler)와, 상기 제2코어의 아이들(idle) 여부를 체크하는 아이들 체커(idle checker)를 실행하고,
    상기 스케쥴러는 상기 아이들 체커를 이용하여 상기 제2코어의 아이들 여부를 체크하는 애플리케이션 프로세서(application processor(AP)).
  2. 제1항에 있어서, 상기 스케쥴러는,
    제1API(application programming interface)를 통해 상기 아이들 체커를 호출하고,
    호출된 상기 아이들 체커는, 제2API를 이용하여 상기 제2코어의 상기 아이들 여부를 체크하고, 체크 결과를 상기 제1API를 통해 상기 스케쥴러로 전송하는 AP.
  3. 제2항에 있어서, 상기 아이들 체커는,
    상기 제2코어가 아이들 상태일 때, 인터럽트를 상기 제2코어로 전송하고,
    상기 제2코어가 웨이크-업 상태일 때, 마이그레이션 트리거 신호를 상기 제1API를 통해 상기 스케쥴러로 전송하는 AP.
  4. 제3항에 있어서, 상기 아이들 체커는,
    상기 인터럽트에 응답하여 웨이크-업되는 상기 제2코어가 상기 아이들 상태로 재진입하는 것을 방지하는 AP.
  5. 제2항에 있어서, 상기 스케쥴러는,
    상기 제1API를 통해 상기 아이들 체커를 호출하는 호출 프로그램을 포함하는 AP.
  6. 제1항에 있어서,
    상기 제1코어와 상기 제2코어는 이종 프로세서 코어들(heterogeneous processor cores)인 AP.
  7. 제1캐시와 제1코어를 포함하는 제1클러스터;
    제2캐시와 제2코어를 포함하는 제2클러스터;
    상기 제1캐시와 상기 제2캐시 사이에 접속되는 인터페이스; 및
    상기 제1코어의 태스크의 워크로드를 체크하는 스케쥴러와, 상기 제2코어의 아이들 여부를 체크하는 아이들 체커를 저장하는 메모리를 포함하고,
    상기 제1코어에 의해 상기 메모리에 저장된 상기 스케쥴러와 상기 아이들 체커가 실행되면,
    상기 스케쥴러는 제1API를 통해 상기 아이들 체커를 호출하고,
    호출된 상기 아이들 체커는,
    제2API를 이용하여 상기 제2코어의 상기 아이들 여부를 체크하고, 체크 결과 상기 제2코어가 아이들 상태일 때, 인터럽트를 상기 제2코어로 전송하고, 상기 제2코어가 웨이크-업 상태일 때, 마이그레이션 트리거 신호를 상기 제1API를 통해 상기 스케쥴러로 전송하는 시스템 온 칩(system on chip(SoC)).
  8. 제7항에 있어서, 상기 아이들 체커는,
    상기 인터럽트에 응답하여 웨이크-업되는 상기 제2코어가 상기 아이들 상태로 재진입하는 것을 방지하는 SoC.
  9. 제7항에 있어서,
    상기 아이들 체커로부터 출력된 제어 신호에 기초하여 상기 인터럽트를 상기 제2코어로 전송하는 인터럽트 컨트롤러를 더 포함하는 SoC.
  10. 제1코어와 제2코어를 포함하는 SoC; 및
    상기 제1코어와 상기 제2코어 각각으로 파워를 공급하는 전력 관리 IC(power management integrated circuit)를 포함하고,
    상기 제1코어는 상기 제1코어의 태스크(task)의 워크로드(workload)를 모니터링하는 스케쥴러(scheduler)와, 상기 제2코어의 아이들(idle) 여부를 체크하는 아이들 체커(idle checker)를 실행하고,
    상기 스케쥴러는,
    제1API(application programming interface)를 통해 상기 아이들 체커를 호출하고,
    호출된 상기 아이들 체커는, 제2API를 이용하여 상기 제2코어의 상기 아이들 여부를 체크하고, 체크 결과를 상기 제1API를 통해 상기 스케쥴러로 전송하는 컴퓨팅 장치.
KR1020150060581A 2015-04-29 2015-04-29 애플리케이션 프로세서, 시스템 온 칩, 및 이를 포함하는 컴퓨팅 장치 KR102352756B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150060581A KR102352756B1 (ko) 2015-04-29 2015-04-29 애플리케이션 프로세서, 시스템 온 칩, 및 이를 포함하는 컴퓨팅 장치
US15/138,366 US9996398B2 (en) 2015-04-29 2016-04-26 Application processor and system on chip

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150060581A KR102352756B1 (ko) 2015-04-29 2015-04-29 애플리케이션 프로세서, 시스템 온 칩, 및 이를 포함하는 컴퓨팅 장치

Publications (2)

Publication Number Publication Date
KR20160128751A true KR20160128751A (ko) 2016-11-08
KR102352756B1 KR102352756B1 (ko) 2022-01-17

Family

ID=57204090

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150060581A KR102352756B1 (ko) 2015-04-29 2015-04-29 애플리케이션 프로세서, 시스템 온 칩, 및 이를 포함하는 컴퓨팅 장치

Country Status (2)

Country Link
US (1) US9996398B2 (ko)
KR (1) KR102352756B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022196889A1 (ko) * 2021-03-19 2022-09-22 삼성전자 주식회사 멀티 프로세서를 포함하는 전자 장치 및 그 운용 방법

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170300101A1 (en) * 2016-04-14 2017-10-19 Advanced Micro Devices, Inc. Redirecting messages from idle compute units of a processor
US10540300B2 (en) * 2017-02-16 2020-01-21 Qualcomm Incorporated Optimizing network driver performance and power consumption in multi-core processor-based systems
KR102539044B1 (ko) 2017-10-30 2023-06-01 삼성전자주식회사 시스템 온 칩의 구동 방법, 이를 수행하는 시스템 온 칩 및 이를 포함하는 전자 시스템
US10838636B2 (en) * 2018-05-18 2020-11-17 Western Digital Technologies, Inc. Hierarchical clock scaling in a data storage controller
KR102650129B1 (ko) * 2018-10-01 2024-03-21 삼성전자주식회사 전자장치와 그의 제어방법, 디스플레이장치, 및 통합 리모컨
US11169855B2 (en) * 2019-12-03 2021-11-09 Sap Se Resource allocation using application-generated notifications

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040059875A1 (en) * 2002-09-20 2004-03-25 Vivek Garg Cache sharing for a chip multiprocessor or multiprocessing system
KR20130039268A (ko) * 2011-10-11 2013-04-19 엘지전자 주식회사 이동 단말기 및 그의 전력 절감 방법
US20140101411A1 (en) * 2012-10-04 2014-04-10 Premanand Sakarda Dynamically Switching A Workload Between Heterogeneous Cores Of A Processor
US20140173623A1 (en) * 2012-12-17 2014-06-19 Mediatek Inc. Method for controlling task migration of task in heterogeneous multi-core system based on dynamic migration threshold and related computer readable medium
KR20140089838A (ko) * 2013-01-07 2014-07-16 삼성전자주식회사 복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7437581B2 (en) 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US8881157B2 (en) 2009-09-11 2014-11-04 Empire Technology Development Llc Allocating threads to cores based on threads falling behind thread completion target deadline
US20110066830A1 (en) 2009-09-11 2011-03-17 Andrew Wolfe Cache prefill on thread migration
KR101641541B1 (ko) 2010-03-31 2016-07-22 삼성전자주식회사 다중 코어에서 동적으로 부하를 분배하는 장치 및 방법
KR101770587B1 (ko) 2011-02-21 2017-08-24 삼성전자주식회사 멀티코어 프로세서의 핫 플러깅 방법 및 멀티코어 프로세서 시스템
US8683243B2 (en) 2011-03-11 2014-03-25 Intel Corporation Dynamic core selection for heterogeneous multi-core systems
DE112011105590T5 (de) 2011-09-06 2014-07-03 Intel Corp. Energieeffiziente Prozessorarchitektur
KR20130093995A (ko) 2012-02-15 2013-08-23 한국전자통신연구원 계층적 멀티코어 프로세서의 성능 최적화 방법 및 이를 수행하는 멀티코어 프로세서 시스템
US9495718B2 (en) 2012-06-08 2016-11-15 Advanced Micro Devices, Inc. System and method for providing low latency to applications using heterogeneous processors
KR101954668B1 (ko) 2013-01-15 2019-06-12 삼성전자주식회사 이종 멀티코어 프로세서를 이용하는 전자장치에서 전력효율을 개선하기 위한 방법 및 장치
KR20140145748A (ko) 2013-06-14 2014-12-24 한국전자통신연구원 다중 코어 환경에서 프로세스의 할당 방법 및 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040059875A1 (en) * 2002-09-20 2004-03-25 Vivek Garg Cache sharing for a chip multiprocessor or multiprocessing system
KR20130039268A (ko) * 2011-10-11 2013-04-19 엘지전자 주식회사 이동 단말기 및 그의 전력 절감 방법
US20140101411A1 (en) * 2012-10-04 2014-04-10 Premanand Sakarda Dynamically Switching A Workload Between Heterogeneous Cores Of A Processor
US20140173623A1 (en) * 2012-12-17 2014-06-19 Mediatek Inc. Method for controlling task migration of task in heterogeneous multi-core system based on dynamic migration threshold and related computer readable medium
KR20140089838A (ko) * 2013-01-07 2014-07-16 삼성전자주식회사 복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022196889A1 (ko) * 2021-03-19 2022-09-22 삼성전자 주식회사 멀티 프로세서를 포함하는 전자 장치 및 그 운용 방법

Also Published As

Publication number Publication date
KR102352756B1 (ko) 2022-01-17
US20160321102A1 (en) 2016-11-03
US9996398B2 (en) 2018-06-12

Similar Documents

Publication Publication Date Title
KR102352756B1 (ko) 애플리케이션 프로세서, 시스템 온 칩, 및 이를 포함하는 컴퓨팅 장치
US11656675B2 (en) Application processor performing a dynamic voltage and frequency scaling operation, computing system including the same, and operation method thereof
KR102082859B1 (ko) 복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법
US10203740B2 (en) Information processing device and semiconductor device
JP6215630B2 (ja) データトランザクションによって電力供給を制御するSoC、及びその動作方法
CN109478172B (zh) 用于总线主控的转换功能的方法、装置和系统
TWI412993B (zh) 增加於多核心處理器上的一個或多個核心之工作量效能
KR102060430B1 (ko) 웨이크-업 시간을 줄일 수 있는 시스템 온 칩. 애플리케이션 프로세서, 및 상기 시스템 온 칩을 포함하는 컴퓨터 시스템
US9086834B2 (en) Controlling configurable peak performance limits of a processor
US11693466B2 (en) Application processor and system on chip
JP6333971B2 (ja) ジェネリックホストベースのコントローラレイテンシ方法及び装置
KR20140078944A (ko) 시스템-온 칩, 이의 동작 방법, 및 이를 포함하는 장치
US10496149B2 (en) Method of operating CPU and method of operating system having the CPU
KR20160063974A (ko) 워크로드를 이용하여 전력을 제어할 수 있는 시스템 온 칩, 이의 작동 방법, 및 이를 포함하는 컴퓨팅 장치
US11734067B2 (en) Multi-core system and controlling operation of the same
KR101672357B1 (ko) 응답 타이밍 최적화에 기초하는 멀티프로세서 시스템에서의 주파수 조정 수행
US20170220354A1 (en) Server node shutdown
CN106575276B (zh) 子系统的电源管理控制
WO2023010265A1 (en) Firmware update technologies
US20240103601A1 (en) Power management chip, electronic device having the same, and operating method thereof
US20160216756A1 (en) Power management in computing devices
EP4381383A1 (en) Firmware update technologies
TW202316284A (zh) 藉助於輔助設定管理來進行在預定通訊架構中的記憶體裝置的自動設定控制的方法、記憶體裝置、電子裝置以及記憶體裝置的記憶體控制器
KR20240043635A (ko) 전력 관리 칩, 그것을 포함하는 전자 장치, 및 그것의 동작 방법
CN117581189A (zh) 降低远存储器中的存储器功率使用

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