KR102082859B1 - 복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법 - Google Patents

복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법 Download PDF

Info

Publication number
KR102082859B1
KR102082859B1 KR1020130001760A KR20130001760A KR102082859B1 KR 102082859 B1 KR102082859 B1 KR 102082859B1 KR 1020130001760 A KR1020130001760 A KR 1020130001760A KR 20130001760 A KR20130001760 A KR 20130001760A KR 102082859 B1 KR102082859 B1 KR 102082859B1
Authority
KR
South Korea
Prior art keywords
cores
low power
high performance
core
target core
Prior art date
Application number
KR1020130001760A
Other languages
English (en)
Other versions
KR20140089838A (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 KR1020130001760A priority Critical patent/KR102082859B1/ko
Priority to US14/061,783 priority patent/US10255118B2/en
Publication of KR20140089838A publication Critical patent/KR20140089838A/ko
Application granted granted Critical
Publication of KR102082859B1 publication Critical patent/KR102082859B1/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/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • AHUMAN NECESSITIES
    • A46BRUSHWARE
    • A46BBRUSHES
    • A46B15/00Other brushes; Brushes with additional arrangements
    • A46B15/0055Brushes combined with other articles normally separate from the brushing process, e.g. combs, razors, mirrors
    • A46B15/0069Brushes fitted with a interdental devices, e.g. toothpick
    • A46B15/0071Toothbrushes with flossing arrangements
    • AHUMAN NECESSITIES
    • A46BRUSHWARE
    • A46BBRUSHES
    • A46B9/00Arrangements of the bristles in the brush body
    • A46B9/02Position or arrangement of bristles in relation to surface of the brush body, e.g. inclined, in rows, in groups
    • A46B9/04Arranged like in or for toothbrushes
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61CDENTISTRY; APPARATUS OR METHODS FOR ORAL OR DENTAL HYGIENE
    • A61C15/00Devices for cleaning between the teeth
    • A61C15/04Dental floss; Floss holders
    • A61C15/041Dental floss
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61CDENTISTRY; APPARATUS OR METHODS FOR ORAL OR DENTAL HYGIENE
    • A61C15/00Devices for cleaning between the teeth
    • A61C15/04Dental floss; Floss holders
    • A61C15/043Containers, dispensers, or the like, e.g. with cutting means
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61CDENTISTRY; APPARATUS OR METHODS FOR ORAL OR DENTAL HYGIENE
    • A61C15/00Devices for cleaning between the teeth
    • A61C15/04Dental floss; Floss holders
    • A61C15/046Flossing tools
    • 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
    • AHUMAN NECESSITIES
    • A46BRUSHWARE
    • A46BBRUSHES
    • A46B2200/00Brushes characterized by their functions, uses or applications
    • A46B2200/10For human or animal care
    • A46B2200/1066Toothbrush for cleaning the teeth or dentures
    • A46B2200/108Inter-dental toothbrush, i.e. for cleaning interdental spaces specifically
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5022Workload threshold
    • 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

복수 개의 멀티 코어들을 포함하는 SoC 및 상기 SoC의 동작방법이 제공된다. 본 발명의 실시예들에 따른 SoC는 복수 개의 고성능 코어들을 포함한 고성능 클러스터, 복수 개의 저전력 코어들을 포함한 저전력 클러스터 및 CPU(Central Processing Unit) 로드와 상기 각 고성능 코어 및 상기 각 저전력 코어 각각의 작업용량을 비교하여, 상기 고성능 클러스터와 상기 저전력 클러스터 간에 서로 스위칭하는 스위쳐를 포함한다. 상기 스위쳐는 상기 코어들 간의 히스토리 로그를 평준화시키는 방법으로 서로 스위칭시킴으로써 동작 중에도 스위칭에 참여할 코어의 개수를 쉽게 변경할 수 있고, 코어들 간의 수명(lifetime)을 고르게 평준화할 수 있다.

Description

복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법{SYSTEM ON CHIP INCLUDING A PLURALITY OF HETEROGENEOUS CORES AND OPERATING METHOD THEROF}
본 발명의 개념에 따른 실시 예는 CPU 운영 방법에 관한 것으로, 특히 저전력 코어와 고성능 코어를 포함하는 시스템-온 칩, 이의 동작 방법 및 이를 포함하는 장치에 관한 것이다.
모바일용 어플리케이션 프로세서는 빠른 성능과 낮은 소모전류를 보장하기 위해 고성능 코어와 저전력 코어를 하나의 칩에 구현하여 사용한다.
고성능 코어는 사용시 높은 파워소모와 발열 및 안정성 문제가 있다. 저전력 코어는 파워소모는 적으나 태스크 처리속도 및 처리용량에 한계가 있다.
저전력 코어가 사용되다가 CPU 로드가 증가하면 상기 저전력 코어에서 고성능 코어로 스위칭된다. 사용되는 고성능 코어의 개수가 늘어날수록 전력 소모 및 발열이 크게 증가한다. 한편 CPU 로드가 줄어들면 고성능 코어에서 저전력 코어로 스위칭된다.
멀티 코어 프로세서에서 태스크에 따른 CPU 로드를 보다 적은 전력으로 더 빠르게 수행하기 위해 다양한 스위칭 기법들이 개발되고 있다.
본 발명이 이루고자 하는 기술적인 과제는 멀티 코어 프로세서에서 CPU 로드에 따라 코어를 스위칭하는 시스템-온 칩, 이의 동작 방법 및 이를 포함하는 장치를 제공하는 것이다.
상술한 기술적 과제를 해결하기 위하여, 본 발명의 일실시예에 따른 SOC의 동작방법에 따르면,저전력 코어에서 CPU(Central Processing Unit) 로드를 측정하는 단계, 측정된 상기 CPU 로드가 상기 저전력 코어의 작업용량(capability)을 초과하는 경우 고성능 클러스터로의 스위칭을 요청하는 단계, 상기 고성능 클러스터에 포함된 복수의 고성능 코어들 각각의 히스토리 로그에 기초하여 어느 하나의 고성능 타겟 코어를 선택하는 단계 및 상기 요청에 따라 상기 저전력 코어로부터 상기 고성능 타겟 코어로 스위칭하는 단계를 포함한다.
상기 SoC의 동작방법은 상기 고성능 코어에서 상기 CPU 로드를 측정하는 단계, 측정된 상기 CPU 로드가 상기 저전력 코어의 작업용량 내인 경우 저전력 클러스터로의 역스위칭을 요청하는 단계, 상기 저전력 클러스터에 포함된 복수의 저전력 코어들 각각의 상기 히스토리 로그에 기초하여 어느 하나의 저전력 타겟 코어를 선택하는 단계 및 상기 요청에 따라 상기 고성능 코어로부터 상기 저전력 타겟 코어로 역스위칭을 요청하는 단계를 더 포함할 수 있다.
상기 선택하는 단계는 상기 고성능 코어들 각각 또는 상기 저전력 코어들 각각에 대한 외부요청에 기초하여 상기 고성능 타겟 코어를 선택하는 특징을 더 포함할 수 있다.
상기 히스토리 로그는 상기 코어들 각각의 선택 카운트 수(Selection Count number), 작업수행시간(Usage Time), 인스트럭션 카운트 수(Instruction Count number) 및 로드 카운트 수(Load Count number) 중 적어도 어느 하나일 수 있다.
상기 선택하는 단계는 상기 코어들 간의 히스토리 로그를 평준화시키는 방법으로 상기 각 타겟 코어를 선택하는 특징을 더 포함할 수 있다.
상술한 기술적 과제를 해결하기 위하여, 본 발명의 다른 일 실시예에 따른 SOC는 N개의 고성능 코어들을 포함한 고성능 클러스터(N은 1이상의 자연수), M개의 저전력 코어들을 포함한 저전력 클러스터(M은 1이상의 자연수) 및 CPU(Central Processing Unit) 로드와 상기 각 고성능 코어 및 상기 각 저전력 코어 각각의 작업용량을 비교하여, 상기 고성능 코어와 상기 저전력 코어 간에 서로 스위칭하는 스위쳐를 포함한다.
상기 스위쳐는 상기 고성능 코어들 각각과 상기 저전력 코어들 각각의 히스토리 로그에 기초하여 결정된 타겟 코어로 스위칭시킬 수 있다.
상기 스위쳐는 사용자 설정(User's Configuration), 시스템 설정 및 상기 SoC의 전력상태를 포함하는 외부요청을 적용하여 상기 타겟 코어를 결정하는 외부 요청 적용부를 포함할 수 있다.
상기 히스토리 로그는 상기 코어들 각각의 선택 카운트 수(Selection Count number), 작업수행시간(Usage Time), 인스트럭션 카운트 수(Instruction Count number) 및 로드 카운트 수(Load Count number) 중 적어도 어느 하나일 수 있다.
상기 스위쳐는 상기 고성능 코어들 각각의 히스토리 로그를 카운트하고 저장하는 고성능 서브 카운터들을 포함하는 고성능 코어 히스토리 카운터, 상기 저전력 코어들 각각의 히스토리 로그를 카운트하고 저장하는 저전력 서브 카운터들을 포함하는 저전력 코어 히스토리 카운터 및 상기 고성능 코어와 상기 저전력 코어 간에 서로 스위칭하는 스위칭 링커를 포함한다.
상기 스위칭 링커는 상기 각 히스토리 로그에 기초하여 상기 고성능 클러스터에서 상기 현재 작업 로드가 없는 고성능 코어들 중 어느 하나의 고성능 타겟 코어를 선택하는 제1 타겟코어 관리부, 상기 각 히스토리 로그에 기초하여 상기 저전력 클러스터에서 상기 현재 작업 로드가 없는 저전력 코어들 중 어느 하나의 저전력 타겟 코어를 선택하는 제2 타겟코어 관리부 및 상기 CPU 로드에 기초하여 상기 고성능 코어와 상기 저전력 코어 간에 서로 스위칭하는 코어 스위칭부를 포함한다.
상기 코어 스위칭부는 상기 CPU 로드가 상기 저전력 코어의 상기 작업용량을 초과하는 경우 상기 고성능 타겟 코어로 스위칭하고, 상기 CPU 로드가 상기 저전력 코어의 상기 작업용량 이내인 경우 상기 저전력 타겟코어로 역스위칭할 수 있다.
일례로, 상기 스위쳐는 상기 코어들 각각의 선택 카운트 수를 비교하여, 상기 선택 카운트 수가 가장 적은 코어를 선택하여 스위칭할 수 있다.
일례로, 상기 스위쳐는 상기 코어들 각각의 작업수행시간(Usage Time)을 비교하여, 상기 작업수행시간이 가작 적은 코어를 선택하여 스위칭할 수 있다.
일례로, 상기 스위쳐는 상기 코어들 각각의 인스트럭션 카운트 수(Instruction Count number) 또는 로드 카운트 수(Load Count number)가 가장 적은 코어를 선택하여 스위칭할 수 있다.
상술한 기술적 과제를 해결하기 위하여, 본 발명의 또다른 일 실시예에 따른 전자장치는 태스크에 따라 CPU 로드를 제공하는 적어도 하나의 어플리케이션, 복수의 고성능 코어들을 포함한 고성능 클러스터, 복수의 저전력 코어들을 포함한 저전력 클러스터 및 상기 CPU 로드에 따라 상기 고성능 코어 및 상기 저전력 코어 간에 서로 스위칭을 요청하고, 상기 코어들 각각의 히스토리 로그에 따라 선택된 타겟 코어로 스위칭하는 스위쳐를 포함한다.
상기 스위쳐는 상기 코어들 각각의 선택 카운트 수(Selection Count number), 작업수행시간(Usage Time), 인스트럭션 카운트 수(Instruction Count number) 및 로드 카운트 수(Load Count number) 중 적어도 어느 하나의 상기 히스토리 로그가 평준화되는 방법으로 상기 타겟 코어를 선택할 수 있다.
상기 스위쳐는 사용자 설정(User's Configuration), 시스템 설정 및 상기 SoC의 전력상태를 포함하는 외부요청에 따라 선택되는 상기 타겟 코어를 조정할 수 있다.
상기 스위쳐는 상기 저전력 코어에서 측정된 상기 CPU 로드가 상기 저전력 코어의 작업용량을 초과할 경우 상기 고성능 클러스터로 스위칭을 요청할 수 있다.
상기 스위쳐는 상기 고성능 코어에서 측정된 상기 CPU 로드가 상기 저전력 코어의 작업용량 이내인 경우 상기 저전력 클러스터로 역스위칭을 요청할 수 있다.
상술한 기술적 과제를 해결하기 위하여, 본 발명의 또다른 일 실시예에 따른 복수의 멀티 코어들을 포함하는 SoC(System-on-Chip)의 동작방법은 점유 고성능 코어에서 측정된 제1 CPU 로드가 비점유 저전력 코어의 작업용량 이내인 경우, 저전력 코어들로 스위칭을 요청하는 단계, 상기 저전력 코어들 중 히스토리 로그가 가장 작은 비점유 저전력 코어를 저전력 타겟 코어로 선택하는 단계 및 상기 점유 고성능 코어에서 상기 저전력 타겟 코어로 역스위칭하는 단계를 포함한다.
본 발명의 실시예에 따른 장치 및 방법은 멀티 코어를 탑재한 프로세서에서 낮은 전력 소모의 저전력 코어와, 고성능의 고성능 코어간 스위칭시에 히스토리 로그를 고려함으로써 코어들을 고르게 사용할 수 있는 효과가 있다.
또한, 본 발명의 실시예에 따른 장치 및 방법은 코어들 간의 수명을 평준화시키는 방법으로 사용함으로써 멀티 이종 코어들 전체의 수명을 연장하고, 나아가 SoC 전체의 수명을 연장시킬 수 있는 효과가 있다.
또한, 본 발명의 실시예에 따른 장치 및 방법은 고성능 코어와 저전력 코어간 비대칭적 스위칭을 함으로써 고성능 코어의 개수와 저전력 코어의 개수를 유연하게 조정할 수 있어 멀티 코어 프로세서 설계상의 이점이 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 실시예에 따른 전자 시스템의 블록도를 나타낸다.
도 2는 도 2의 CPU 에 대해 구체적으로 나타낸 블록도이다.
도 3은 도 2의 스위쳐를 설명하기 위한 블록도이다.
도 4는 도 3에 도시된 멀티 클러스터의 동작을 설명하기 위한 개념도이다.
도 5는 도 3에 도시된 스위쳐의 동작을 설명하기 위한 개념도이다.
도 6은 도 3에 도시된 스위쳐를 구체적으로 나타낸 블록도이다.
도 7은 도 3에 도시된 스위쳐를 구체적으로 나타낸 블록도이다.
도 8은 본 발명의 일 실시예에 따른 SoC의 동작방법을 나타낸 순서도이다.
도 9는 본 발명의 실시예에 따른 SoC를 포함하는 전자 시스템의 실시예를 나타낸 블록도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1구성요소는 제2구성요소로 명명될 수 있고, 유사하게 제2구성요소는 제1구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다.
도 1은 본 발명의 실시예에 따른 전자 시스템의 블록도를 나타낸다.
도 1을 참조하면, 전자 시스템(1)은 이동 전화기, 스마트폰, 태블릿 PC (tablet personal computer), 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), 또는 e-북(e-book)과 같이 손으로 들고다닐 수 있는 장치(handheld device)로 구현될 수 있다.
전자 시스템(1)은 시스템 온 칩(system on chip(SoC)); 10), 외부 메모리 (30), 및 디스플레이 디바이스(20)를 포함한다.
SoC(10)는 중앙처리장치(central processing unit(CPU); 100), ROM(read only memory; 110), RAM(random access memory; 120), 타이머(130), 디스플레이 컨트롤러(140), 그래픽 프로세싱 유닛(graphics processing unit(GPU); 150), 메모리 컨트롤러(160), 클럭 관리 유닛(clock management unit(CMU); 170), 및 버스 (180)를 포함할 수 있다. SoC(10)는 도시된 구성 요소 이외에 다른 구성 요소들을 더 포함할 수 있다. 전자 시스템(1)은 전원관리 IC(power management IC(PMIC); 40)를 더 포함할 수 있다.
도 1의 실시 예에서, PMIC(40)가 SoC(10)의 외부에 구현되나, 다른 실시 예에서 SoC(10)는 PMIC(40)의 기능을 수행할 수 있는 전력 관리 유닛(power management unit(PMU))을 포함할 수 있다.
프로세서(processor)라고도 불릴 수 있는 CPU(100)는 외부 메모리(30)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 예컨대, CPU(100)는 CMU(170)로부터 출력된 동작 클락 신호에 응답하여 상기 프로그램들 및/또는 상기 데이터를 처리 또는 실행할 수 있다.
CPU(100)는 멀티-코어 프로세서(multi-core processor)로 구현될 수 있다. 상기 멀티-코어 프로세서는 두 개 또는 그 이상의 독립적인 실질적인 프로세서들('코어들(cores)'이라고 불림)을 갖는 하나의 컴퓨팅 컴포넌트(computing component)이고, 상기 프로세서들 각각은 프로그램 명령들(program instructions)을 읽고 실행할 수 있다.
ROM(110), RAM(120), 및/또는 외부 메모리(30)에 저장된 프로그램들 및/또는 데이터는 필요에 따라 CPU(100)의 메모리(미도시)에 로드(load)될 수 있다.
ROM(110)은 영구적인 프로그램들 및/또는 데이터를 저장할 수 있다.
ROM(110)은 EPROM(erasable programmable read-only memory) 또는 EEPROM (electrically erasable programmable read-only memory)으로 구현될 수 있다.
RAM(120)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대, 메모리(110 또는 30)에 저장된 프로그램들 및/또는 데이터는 CPU(100)의 제어에 따라 또는 ROM(110)에 저장된 부팅 코드(booting code)에 따라 RAM(120)에 일시적으로 저장될 수 있다. RAM(120)은 DRAM(dynamic RAM) 또는 SRAM(static RAM)으로 구현될 수 있다.
타이머(130)는 CMU(170)로부터 출력된 동작 클락 신호에 기초하여 시간을 나타내는 카운트 값을 출력할 수 있다.
GPU(150)는 메모리 컨트롤러(160)에 의해 외부 메모리(30)로부터 리드 (read)된 데이터를 디스플레이 디바이스(20)에 적합한 신호로 변환할 수 있다.
CMU(170)는 동작 클락 신호를 생성한다. CMU(170)는 위상 동기 루프(phase locked loop(PLL)), 지연 동기 루프(delayed locked loop(DLL)), 또는 크리스탈 오실레이터 등과 같은 클락 신호 생성 장치를 포함할 수 있다.
동작 클락 신호는 GPU(150)로 공급될 수 있다. 물론, 동작 클락 신호는 다른 구성 요소(예컨대, CPU(100) 또는 메모리 컨트롤러(160) 등)로 공급될 수도 있다. CMU(170)는 동작 클락 신호의 주파수를 변경할 수 있다.
CPU(100)는 저전력 코어에 태스크를 할당하고 상기 태스크가 할당된 저전력 코어에서 CPU 로드를 측정하고, 측정된 CPU 로드가 저전력 코어에서 수행될 수 있는 작업 로드를 초과하면, 고성능 코어로 스위칭한다. 또한, CPU(100)는 측정된 CPU 로드에 기초하여 상기 고성능 코어에서 수행 중인 작업 로드가 저전력 코어에서도 수행할 수 있다고 판단되면, 고성능 코어로부터 저전력 코어로 역스위칭한다.
메모리 컨트롤러(160)는 외부 메모리(190)와 인터페이스한다. 메모리 컨트롤러(160)는 외부 메모리(190)의 동작을 전반적으로 제어하며, 호스트와 외부 메모리 (190) 사이의 데이터 교환을 제어한다. 예컨대, 메모리 컨트롤러(160)는 호스트의 요청에 따라 외부 메모리(190)에 데이터를 쓰거나 외부 메모리(190)로부터 데이터를 읽을 수 있다.여기서, 호스트는 CPU(100), GPU(150), 또는 디스플레이 컨트롤러(140)와 같은 마스터(master) 장치일 수 있다.
외부 메모리(30)는 데이터를 저장하기 위한 저장 매체(storage medium)로서, OS(Operating System), 각종 프로그램들, 및/또는 각종 데이터를 저장할 수 있다. 외부 메모리(30)는 예컨대 DRAM 일수 있으나 이에 한정되는 것은 아니다.
예컨대, 외부 메모리(30)는 불휘발성 메모리 장치(예컨대, 플래시 메모리, PRAM(phase change RAM), MRAM(magnetic RAM), RRAM(resistive RAM), 또는 FeRAM 장치)일 수도 있다. 본 발명의 다른 실시 예에서 외부 메모리(30)는 SoC(10)의 내부에 구비되는 내장 메모리일 수 있다. 또한, 외부 메모리(30)는 플래시 메모리, eMMC(embedded multimedia card), 또는 UFS(universal flash storage)일 수 있다.
각 구성 요소(100, 110, 120, 130, 140, 150, 160 및 170)는 버스(180)를 통하여 서로 통신할 수 있다.
디스플레이 디바이스(20)는 디스플레이 컨트롤러(140)로부터 출력된 이미지 신호들을 디스플레이할 수 있다. 예컨대, 디스플레이 디바이스(20)는 LCD(liquid crystal display), LED(light emitting diode) 디스플레이, OLED(organic LED) 디스플레이, AMOLED(active-matrix OLED) 디스플레이, 또는 플렉시블(flexible) 디스플레이로 구현될 수 있다.
디스플레이 컨트롤러(140)는 디스플레이 디바이스(25)의 동작을 제어한다.
도 2는 도 2의 CPU 에 대해 구체적으로 나타낸 블록도이다.
도 2를 참조하면, CPU(100), 즉, 프로세서는 고성능 클러스터(Big Cluster, 220), 저전력 클러스터(Little Cluster,230), 커널(301), 및 CCI(Cache Coherent Interconnect, 210)를 포함한다.
CPU(100)에서 실행되는 적어도 하나의 애플리케이션(application, 미도시)은 코어(Core)가 태스크를 수행하도록 한다. 커널(301)은 각 애플리케이션으로부터 태스크를 수신하여 각 클러스터, 즉, 각 코어에 대해 자원할당을 수행한다.
고성능 클러스터(220)는 복수(예를 들어 N개)의 고성능 코어들(221) 및 제1 캐시(225)를 포함한다. 저전력 클러스터(230)는 복수(예를 들어 M개)의 저전력 코어들(231) 및 제2 캐시(235)를 포함한다. 고성능 코어(221)는 높은 전력을 소모하며 높은 동작 주파수로 동작한다. 저전력 코어(231)는 낮은 전력을 소모하며 낮은 동작 주파수로 동작한다. 고성능 코어의 개수(N)와 저전력 코어의 개수(M)는 다를 수도 있고, 같을 수도 있다.
프로세서(100)는 고성능 코어(221)와 저전력 코어(231)를 포함하며, 각 어플리케이션들에 의해 제공된 CPU 로드에 따라 적절한 코어를 동작시킨다. 프로세서(100)는 CPU 로드가 작으면 저전력 코어(231)를 동작시키고, CPU 로드가 크면 고성능 코어(221)를 동작시킨다.
또한 프로세서(100)는 동작 중의 코어의 개수에 대한 강제 조정, 사용자 설정(User's Configuration), 시스템 설정 등의 외부 요청에 따라 각 코어들의 동작을 제어하여 SoC(10)를 안정적으로 동작시킨다.
커널(301)은 저전력 코어(231)에서 측정된 CPU 로드가 임계값을 초과할 때 태스크(task)를 저전력 코어(231)로부터 고성능 코어(221)로 스위칭한다. 커널(301)은 고성능 코어(221)에서 측정된 CPU 로드가 제2 임계값보다 작아지면, 태스크(task)를 고성능 코어(221)로부터 저전력 코어(231)로 스위칭한다. 커널(301)의 스위칭 동작은 페어(pair) 관계에 있지 않은 코어 간에도 수행될 수 있다.
커널(301)에 의한 이종 코어(heterogeneous core) 간의 코어 스위칭을 실행하기 위해, 제2 캐시(235)는 제1 캐시(225)로 또는 제1 캐시(225)는 제2 캐시(235)로 CCI(210)를 통해 데이터를 동기화 시킨다. CCI(210)를 통한 캐시 간의 데이터 동기화로 인해 코어 스위칭시에 스위칭된 코어는 즉시 주어진 태스크를 실행할 수 있다.
제1 캐시(225) 및 제2 캐시(235)는 각 코어(221,231)에 포함된 캐시 메모리이다.
커널(301)은 서로 다른 성능의 코어를 스위칭하는 스위쳐(300)를 포함할 수 있다.
본 명세서에서 커널(301), 스위쳐(300)라 함은 본 명세서에서 설명되는 각 명칭에 따른 기능과 동작을 수행할 수 있는 하드웨어를 의미할 수 있고, 특정한 기능과 동작을 수행할 수 있는 컴퓨터 프로그램 코드를 의미할 수 있고, 또는 특정한 기능과 동작을 수행시킬 수 있는 컴퓨터 프로그램 코드가 탑재된 전자적 기록매체, 예컨대 프로세서를 의미할 수도 있다.
즉, 각 구성요소(301,300)는 본 발명의 기술적 사상을 수행하기 위한 하드웨어 및/또는 상기 하드웨어를 구동하기 위한 소프트웨어의 기능적 및/또는 구조적 결합을 의미할 수 있다.
스위쳐(300)는 저전력 코어(231)에서 측정된 CPU 로드가 저전력(231) 코어의 작업용량(capability)를 초과하는 경우 상기 CPU 로드에 따른 태스크(task)를 저전력 코어(231)로부터 고성능 코어(221)로 스위칭한다. 스위쳐(300)는 고성능 코어(221)에서 측정된 CPU 로드가 저전력(231) 코어의 작업용량(capability)보다 작으면, 고성능 코어(221)로부터 저전력 코어(231)로 스위칭한다.
도 3은 도 2의 스위쳐를 설명하기 위한 블록도이고, 도 4는 도 3에 도시된 멀티 클러스터의 동작을 설명하기 위한 개념도이며, 도 5는 도 3에 도시된 스위쳐의 동작을 설명하기 위한 개념도이다.
도 3을 참조하면, 스위쳐(Switcher, 300)는 CPU의 로드에 따라 고성능 코어(221-1 내지 221-N) 또는 저전력 코어(231-1 내지 231-N)를 동작시킨다. 예를 들어, 스위쳐(300)는 저전력 코어(231-3)에서 측정된 CPU 로드가 저전력(231-1) 코어의 작업용량(capability)를 초과하는 경우 저전력 코어(231-3)로부터 고성능 코어(221-N)로 스위칭한다. 스위쳐(300)은 고성능 코어(221-1)에서 측정된 CPU 로드가 저전력(231) 코어의 작업용량(capability)보다 작으면, 태스크(task)를 고성능 코어(221-1)로부터 저전력 코어(231-2)로 스위칭한다.
코어 간 스위칭은 비대칭적으로(또는 랜덤(random)하게) 수행될 수 있다. 예를 들어 각 저전력 코어는 페어(pair) 관계에 있지 않은 다른 고성능 코어와 스위칭될 수 있다. 각 고성능 코어는 페어(pair) 관계에 있지 않은 다른 저전력 코어와 스위칭될 수 있다.
도 4를 참조하면, 설명의 편의를 위해, 고성능 코어(221)의 개수와 저전력 코어(231)의 개수가 다른 경우를 설명하나, 다양한 실시예에 따라 고성능 코어(221)의 개수와 저전력 코어(231)의 개수가 동일할 수도 있다.
스위쳐(301)은 각 애플리케이션의 요청에 따른 CPU(Central Processing Unit) 로드와 저전력 코어의 작업용량을 비교하여, 고성능 클러스터와 저전력 클러스터 간에 서로 스위칭한다. 스위쳐(301)는 각 코어들 간의 히스토리 로그를 평준화시키는 방법으로 서로 스위칭시킬 수 있다.
예를 들어 CPU 로드에 따라 제1 고성능 코어(221-1), 제2 저전력 코어(231-2), 제3 저전력 코어(231-3)는 파워 온(Power On) 시켜 동작을 수행(Active)하고, 각 클러스터(220,230) 내 나머지 코어들(제2 고성능 코어(221-2), 제3 고성능 코어(221-3),제1 저전력 코어(231-1), 제4 저전력 코어(231-4))은 파워 다운(Power Down) 상태로 스위칭한다.
도 5를 참조하면, 고성능 코어(221) 동작 중(Active 1)이라도 커널(301)에서 측정된 CPU 로드가 저전력 코어(231)의 작업용량 이내 라고 판단되면, 스위쳐(300)는 고성능 코어(221)로부터 복수의 저전력 코어들(231) 중 어느 하나를 선택하여 역스위칭한다.
예를 들면, 커널(301)이 MP3 음악 파일 재생, 소셜 네트워크 서비스(SNS) 이용, 이메일 송수신, 영상 플레이 등의 태스크가 고성능 코어에서 수행되더라도 저전력 코어의 작업용량 이내라고 판단하면, 상기 태스크들이 저전력 코어에서 수행되도록 스위쳐(300)는 고성능 코어(221)로부터 저전력 클러스터(230)로 스위칭한다. 이때 스위쳐(300)는 저전력 클러스터(230) 내 복수의 저전력 코어들(231) 각각의 히스토리 로그를 확인하여, 히스토리 로그가 평준화되는 방법으로 어느 하나의 저전력 코어(231-k)를 파워 온 시켜 상기 태스크를 수행(Active2)하도록 한다.
선택된 상기 저전력 코어(231-k)가 태스크를 수행하던 중, 소정의 애플리케이션에 의해 고화질 영상이 필요한 게임(HD Game), 웹-영상 플레이 등 고성능이 필요한 웹 서비스(Rich Web Service) 등의 태스크가 더 요청되고, 상기 태스크가 저전력 코어(231)의 작업용량을 초과하는 경우, 스위쳐(300)는 저전력 코어(231)로부터 고성능 클러스터(220)로 스위칭한다. 이때 스위쳐(300)는 고성능 클러스터(220) 내 복수의 고성능 코어들(221) 각각의 히스토리 로그를 확인하여, 히스토리 로그가 평준화되는 방법으로 어느 하나의 고성능 코어(221-k)를 파워 온 시켜 상기 태스크를 수행(Active3)하도록 한다.
도 6은 도 3에 도시된 스위쳐를 구체적으로 나타낸 블록도이고, 도 7은 도 3에 도시된 스위쳐를 보다 구체적으로 나타낸 블록도이다.
도 6 및 도 7을 참조하면, 스위쳐(300)는 고성능 코어 히스토리 카운터(310), 저전력 코어 히스토리 카운터(320) 및 스위쳐 링커(330)를 포함할 수 있다. 이하에서, 설명의 편의를 위해 파워 온 상태로 태스크를 수행 중인 코어를 점유 코어, 태스크를 수행하지 않고 파워 오프 상태인 코어를 비점유 코어라고 하자.
고성능 코어 히스토리 카운터(310)는 고성능 클러스터(220)의 히스토리 로그(History Log)를 카운트한다. 고성능 코어 히스토리 카운터(310)는 고성능 클러스터(220) 내 고성능 코어(221)의 개수만큼 고성능 서브 카운터(311, BC1 내지 BCn)를 포함한다. 각각의 고성능 서브 카운터(311)는 각 고성능 코어(221)의 히스토리 로그를 기록하고 저장한다.
저전력 코어 히스토리 카운터(320)는 저전력 클러스터(230)의 히스토리 로그(History Log)를 카운트 한다. 저전력 코어 히스토리 카운터(320)는 저전력 클러스터(230) 내 저전력 코어(231)의 개수만큼 저전력 서브 카운터(321, LC1 내지 LCn)를 포함한다. 각각의 저전력 서브 카운터(321)는 각 저전력 코어(231)의 히스토리 로그를 기록하고 저장한다.
히스토리 로그는 각 코어의 선택 카운트 수(Selection Count Number), 각 클러스터의 작업 수행 시간(Usage Time), 각 클러스터가 수행하는 태스크의 인스트럭션 카운트 수(Instruction Count Number) 및 CPU 로드 카운트 수(Load Count Number)를 포함한다.
스위쳐(300)는 각 히스토리 카운터(310,320)에 저장된 히스토리 로그들 , 즉, 각 클러스터의 선택 카운트 수(Selection Count Number), 각 클러스터의 작업 수행 시간(Usage Time), 각 클러스터가 수행하는 태스크의 인스트럭션 카운트 수(Instruction Count Number) 및 CPU 로드 카운트 수(Load Count Number) 중 적어도 어느 하나에 기초하여 태스크를 수행할 타겟 코어를 선택한다. 즉, 스위쳐(300)는 각 코어의 수명에 영향을 미치는 상기 요인들 중 적어도 어느 하나를 고려하여 각 코어의 사용빈도, 사용량이 고르게 분포, 즉, 평준화되는 방법으로 상기 타겟 코어를 선택한다.
스위쳐(300)는 전체 멀티코어의 수명을 저하시키지 않도록, 특정 코어에만의 빈번한 액세스를 회피하도록 설계된다. 즉 복수의 멀티 코어의 사용을 전체적으로 균등하게 분산시킨다.
예를 들어, 스위쳐(300)는 각각의 클러스터에서 각 비점유 코어의 선택 카운트 수를 비교하여, 선택 카운트 수가 가장 적은 코어를 타겟 코어로 선택할 수 있다.
예를 들어, 스위쳐(300)는 각각의 클러스터에서 각 비점유 코어의 작업수행시간을 비교하여, 작업수행시간이 가장 적은 코어를 타겟 코어로 선택할 수 있다.
예를 들어, 스위쳐(300)는 각각의 클러스터에서 각 비점유 코어의 인스트럭션 카운트 수(Instruction Count number)를 비교하여, 인스트럭션 카운트 수가 가장 적은 코어를 타겟 코어로 선택할 수 있다.
예를 들어, 스위쳐(300)는 각각의 클러스터에서 각 비점유 코어의 로드 카운트 수(Load Count number)를 비교하여, 로드 카운트 수가 가장 적은 코어를 타겟 코어를 선택할 수 있다.
예를 들어, 스위쳐(300)는 상기 각 히스토리 카운터(310,320)에 저장된 히스토리 로그들 , 즉, 각 클러스터의 선택 카운트 수(Selection Count Number), 각 클러스터의 작업 수행 시간(Usage Time), 각 클러스터가 수행하는 태스크의 인스트럭션 카운트 수(Instruction Count Number) 및 CPU 로드 카운트 수(Load Count Number)들 중 적어도 둘 이상을 가중평균한 중요도에 따라 타겟 코어를 선택할 수 있다.
스위쳐 링커(330)는 스위칭 요청에 따라 고성능 코어와 저전력 코어 간에 서로 스위칭을 한다. 스위쳐 링커(330)는 제1 타겟 코어 관리부(331), 코어 스위칭부(332), 제2 타겟 코어 관리부(333) 및 외부 요청 적용부(334)를 포함한다.
제1 타겟 코어 관리부(331)는 각 고성능 코어(221)의 파워 온오프 여부 및 점유 고성능 코어의 현재 CPU 로드를 모니터링한다. 제1 타겟 코어 관리부(331)는 고성능 코어들 각각의 히스토리 로그에 기초하여 상기 고성능 클러스터에서 상기 현재 작업 로드가 없는 고성능 코어들 중 어느 하나의 고성능 타겟 코어를 선택한다.
제2 타겟 코어 관리부(333)는 각 저전력 코어(231)의 파워 온오프 여부 및 점유 저전력 코어의 현재 CPU 로드를 모니터링한다. 제2 타겟 코어 관리부(333)는 저전력 코어들 각각의 히스토리 로그에 기초하여 상기 저전력 클러스터에서 상기 현재 작업 로드가 없는 저전력 코어들 중 어느 하나의 저전력 타겟 코어를 선택한다.
코어 스위칭부(332)는 제1 타겟 코어 관리부(331) 또는 제2 타겟 코어 관리부(333)로부터 스위칭 요청을 받으면, 모니터링된 CPU 로드와 저전력 코어의 작업용량과 비교하여 상기 고성능 코어와 상기 저전력 코어 간에 서로 스위칭한다.
예를 들어, 코어 스위칭부(332)는 CPU 로드가 저전력 코어의 작업용량을 초과하는 경우 저전력 코어에서 고성능 타겟 코어로 스위칭한다. 예를 들어, 코어 스위칭부(332)는 CPU 로드가 저전력 코어의 작업용량 이내인 경우 고성능 코어에서 저전력 타겟 코어로 역스위칭한다.
스위치 링커(330)는 외부 요청 적용부(334)를 더 포함할 수 있다.
외부 요청 적용부(334)는 외부 요청을 수신하고, 제1 타겟 코어 관리부(331) 또는 제2 타겟 코어 관리부(333)에서 선택된 비점유 코어들 중 외부 요청으로 강제조정된 코어를 타겟 코어 대상에서 제외시킨다. 외부요청은 사용자 설정(User's Configuration), 시스템 설정, 고장상태 및 SoC의 전력상태 등을 포함할 수 있다.
예를 들어, 외부 요청 적용부(334)는 시스템 설정 또는 SoC의 전력상태에 따라 SoC(10)에서 동시에 동작 중인 점유 코어들의 개수를 제한할 수 있다. 예를 들어 외부요청 적용부(334)는 사용자 설정에 따라 정해진 특정 코어의 사용을 제한할 수 있다. 예를 들어 외부 요청 적용부(334)는 고장나거나 에러 상태의 코어를 타겟 코어가 되지 않도록 제한할 수 있다.
도 8은 본 발명의 일 실시예에 따른 SoC의 동작방법을 나타낸 순서도이다.
도 8을 참조하면, SoC(10)는 점유 코어의 CPU 로드를 측정한다. SoC(10)는 측정된 CPU가 저전력 코어의 작업용량을 초과하는지 여부(S10)에 따라 이종 코어로 스위칭 요청을 할 수 있다(S20).
SoC(10)는 스위칭 요청이 있으면, 외부 요청이 있는지 여부에 따라(S30) 외부 요청으로 제한된 코어들을 제외한다(S40). SoC(10)는 이종 클러스터 내 제외되지 않은 나머지 코어들 중 점유 이종 코어와 비점유 이종 코어를 확인한다(S50). SoC(10)는 CPU 로드가 없어 파워 오프인 비점유 이종 코어들 각각의 히스토리 로그를 확인하고, 그 중 최소 히스토리 로그를 갖는 비점유 이종코어를 타겟 코어로 선택한다(S60). 최소 히스토리 로그는 일실시예에 따라 각 코어의 선택 카운트 수(Selection Count number), 작업수행시간(Usage Time), 인스트럭션 카운트 수(Instruction Count number) 및 로드 카운트 수(Load Count number) 중 어느 하나가 최소값을 갖는 경우일 수도 있고, 다른 실시예에 따라 상기 요소들 중 적어도 둘 이상을 가중평균한 값의 최소값을 갖는 경우를 말한다. 이때 가중평균은 사용자 또는 시스템 설정에 따라 설정될 수 있다.
SoC(10)는 스위칭 요청을 한 코어의 히스토리 로그를 업데이트한다(S70). 예를 들어 스위칭 요청을 한 코어의 작업수행시간, 인스트럭션 카운트 수 또는 로드 카운트 수 등을 업데이트할 수 있다.
SoC(10)는 스위칭 요청을 받은 타겟 코어의 히스토리 로그를 업데이트한다(S70). 예를 들어 타겟 코어의 선택 카운트 수 등을 업데이트할 수 있다.
일례로, 저전력 코어에서 고성능 코어로 스위칭된다고 가정하자.
점유 저전력 코어에서 측정된 제1 CPU 로드가 저전력 코어의 작업 용량을 초과하면(S10), 고성능 클러스터로 스위칭을 요청할 수 있다(S20). 고성능 클러스터는 고성능 클러스터들 중 외부 요청으로 제한되지 않은(S30,S40) 비점유 고성능 코어들을 확인한다(S50). SoC(10)는 비점유 고성능 코어들 각각의 히스토리 로그를 확인하여, 최소 히스토리 로그를 갖는 비점유 고성능 코어를 고성능 타겟 코어로 선택한다(S60). SoC(10)는 상기 스위칭 요청을 한 점유 저전력 코어 및 고성능 타겟 코어의 히스토리 로그를 업데이트한다(S70). SoC(10)는 상기 고성능 타겟 코어로 스위칭한다. 스위칭된 고성능 타겟 코어는 비점유 상태에서 점유 상태로 상태전환되어, 상기 제1 CPU 로드의 태스크들을 수행한다. 상기 제1 CPU 로드가 상기 고성능 타겟 코어로 모두 이전되면, SoC(10)는 상기 점유 저전력 코어를 비점유 상태로 상태전환한다(예를 들면, 파워 다운).
다른 일례로, 고성능 코어에서 저전력 코어로 스위칭된다고 가정하자.
점유 고성능 코어에서 측정된 제2 CPU 로드가 비점유 저전력 코어의 작업 용량 이내이면(S10), 저전력 클러스터로 스위칭을 요청할 수 있다(S20). 저전력 클러스터는 저전력 클러스터들 중 외부 요청으로 제한되지 않은(S30,S40) 비점유 저전력 코어들을 확인한다(S50). SoC(10)는 비점유 저전력 코어들 각각의 히스토리 로그를 확인하여, 최소 히스토리 로그를 갖는 비점유 저전력 코어를 저전력 타겟 코어로 선택한다(S60). SoC(10)는 상기 스위칭 요청을 한 점유 고성능 코어 및 저전력 타겟 코어의 히스토리 로그를 업데이트한다(S70). SoC(10)는 상기 저젼력 타겟 코어로 역스위칭한다. 역스위칭된 저전력 타겟 코어는 비점유 상태에서 점유 상태로 상태전환되어, 상기 제2 CPU 로드의 태스크들을 수행한다. 상기 제2 CPU 로드가 상기 저전력 타겟 코어로 모두 이전되면, SoC(10)는 상기 점유 고성능 코어를 비점유 상태로 상태전환한다(예를 들면, 파워 다운).
도 9는 본 발명의 실시예에 따른 SoC를 포함하는 전자 시스템의 실시예를 나타낸 블록도이다.
도 9를 참조하면, 전자 시스템은 PC(personal computer), 데이터 서버, 또는 휴대용 전자 장치로 구현될 수 있다.
상기 휴대용 전자 장치는 랩탑(laptop) 컴퓨터, 이동 전화기, 스마트 폰 (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), 또는 e-북(e-book)으로 구현될 수 있다.
전자 시스템은 SoC(10), 파워 소스(910), 스토리지(920), 메모리 (930), 입출력 포트(940), 확장 카드(950), 네트워크 디바이스(960), 및 디스플레이(970)를 포함한다. 실시 예에 따라. 전자 시스템은 카메라 모듈(980)을 더 포함할 수 있다.
SoC(10)는 도 1에 도시된 CPU(100)를 포함할 수 있다. 이때, CPU(100)는 멀티-코어 프로세서일 수 있다.
SoC(10)는 구성 요소들(elements; 910~980) 중에서 적어도 하나의 동작을 제어할 수 있다.
파워 소스(910)는 구성 요소들(100, 및 910~980) 중에서 적어도 하나로 동작 전압을 공급할 수 있다.파워 소스(910)는 도 1의 PMIC(40)에 의해 제어될 수 있다.
스토리지(920)는 하드디스크 드라이브(hard disk drive) 또는 SSD(solid state drive)로 구현될 수 있다.
메모리(930)는 휘발성 메모리 또는 불휘발성 메모리로 구현될 수 있으며, 도 1의 외부 메모리(30)에 해당할 수 있다. 실시 예에 따라, 메모리(930)에 대한 데이터 액세스 동작, 예컨대, 리드 동작, 라이트 동작(또는 프로그램 동작), 또는 이레이즈 동작을 제어할 수 있는 메모리 컨트롤러는 SoC(10)에 집적 또는 내장될 수 있다. 다른 실시 예에 따라, 상기 메모리 컨트롤러는 SoC(10)와 메모리(930) 사이에 구현될 수 있다.
입출력 포트(940)는 전자 시스템으로 데이터를 전송하거나 또는 전자 시스템(10)으로부터 출력된 데이터를 외부 장치로 전송할 수 있는 포트들을 의미한다. 예컨대, 입출력 포트(940)는 컴퓨터 마우스와 같은 포인팅 장치(pointing device)를 접속하기 위한 포트, 프린터를 접속하기 위한 포트, 또는 USB 드라이브를 접속하기 위한 포트일 수 있다.
확장 카드(950)는 SD(secure digital) 카드 또는 MMC(multimedia card)로 구현될 수 있다. 실시 예에 따라, 확장 카드(950)는 SIM(subscriber identification module) 카드 또는 USIM(universal subscriber identity module) 카드일 수 있다.
네트워크 디바이스(960)는 전자 시스템을 유선 네트워크 또는 무선 네트워크에 접속시킬 수 있는 장치를 의미한다.
디스플레이(970)는 스토리지(920), 메모리(930), 입출력 포트(940), 확장 카드(950), 또는 네트워크 디바이스(960)로부터 출력된 데이터를 디스플레이할 수 있다. 디스플레이(970)는 도 1의 디스플레이 디바이스(20)일 수 있다.
카메라 모듈(980)은 광학 이미지를 전기적인 이미지로 변환할 수 있는 모듈을 의미한다. 따라서, 카메라 모듈(980)로부터 출력된 전기적인 이미지는 스토리지(920), 메모리(930), 또는 확장 카드(950)에 저장될 수 있다. 또한, 카메라 모듈 (980)로부터 출력된 전기적인 이미지는 디스플레이(970)를 통하여 디스플레이될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면, 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
1 : 전자시스템
10 : SoC 20 : 디스플레이 디바이스
30 : 외부 메모리 40 : PMIC
100 : CPU 110 : ROM
120 : RAM 130 : TIMER
140 : 디스플레이 컨트롤러 150 : GPU
160 : 메모리 컨트롤러 170 : CMU
210 : CCI 220 : 고성능 클러스터
221-1 내지 221-N : 고성능 코어 225 : 제1 캐시
230 : 저전력 클러스터 231-1 내지 231-M : 저전력 코어
235 : 제2 캐시 301 : 커널
300 : 스위쳐 310 : 고성능 코어 히스토리 카운터
320 : 저전력 코어 히스토리 카운터 330 : 스위칭 링커
331 : 고성능 타겟 코어 관리부 332 : 코어 스위칭부
333 : 저전력 타겟 코어 관리부 334 : 외부 요청 적용부

Claims (20)

  1. 복수의 저전력 코어들과 복수의 고성능 코어들의 CPU(Central Processing Unit) 로드들을 측정하는 단계;
    상기 측정된 CPU 로드들에 기초하여 상기 복수의 저전력 코어들과 상기 복수의 고성능 코어들 중 비점유 코어들을 판별하는 단계;
    상기 복수의 저전력 코어들 중 하나가 작업을 수행하기 위한 제1 타겟 코어로서 결정되고 상기 측정된 CPU 로드들 중 상기 결정된 제1 타겟 코어의 CPU 로드가 상기 제1 타겟 코어의 작업용량(capability)을 초과하는 경우, 상기 제1 타겟 코어에 대한 스위칭을 요청하는 단계;
    상기 복수의 고성능 코어들의 히스토리 로그들에 기초하여, 상기 복수의 고성능 코어들에 포함된 상기 비점유 코어들 중에서 제2 타겟 코어를 선택하는 단계; 및
    상기 요청에 응답하여 상기 제1 타겟 코어로부터 상기 제2 타겟 코어로의 스위칭을 수행하는 단계; 및
    상기 복수의 저전력 코어들의 히스토리 로그들 및 상기 복수의 고성능 코어들의 상기 히스토리 로그들을 업데이트 하는 단계를 포함하는 SoC(System-on-Chip)의 동작방법.
  2. 제1항에 있어서, 상기 SoC의 동작방법은
    상기 제2 타겟 코어에 대한 CPU 로드를 측정하는 단계;
    상기 제2 타겟 코어의 상기 측정된 CPU 로드가 상기 제1 타겟 코어의 작업용량 내인 경우 저전력 클러스터로의 역스위칭을 요청하는 단계;
    상기 저전력 클러스터에 포함된 상기 복수의 저전력 코어들의 상기 히스토리 로그에 기초하여 제3 타겟 코어를 선택하는 단계; 및
    상기 요청에 따라 상기 제2 타겟 코어로부터 상기 제3 타겟 코어로의 역스위칭을 수행하는 단계를 포함하는 SoC의 동작방법.
  3. 제2항에 있어서, 상기 제3 타겟 코어를 선택하는 단계는
    상기 고성능 코어들 각각 또는 상기 저전력 코어들 각각에 대한 외부요청에 기초하여 상기 제3 타겟 코어를 선택하는 단계를 더 포함하는 SoC의 동작방법.
  4. 제1항에 있어서, 상기 히스토리 로그는
    선택 카운트 수(Selection Count number), 작업수행시간(Usage Time), 인스트럭션 카운트 수(Instruction Count number) 및 로드 카운트 수(Load Count number) 중 적어도 어느 하나인 SoC의 동작방법.
  5. 제1항에 있어서, 상기 제2 타겟 코어를 선택하는 단계는
    상기 복수의 저전력 코어들의 상기 히스토리 로그를 평준화시키는 방법으로 상기 제2 타겟 코어를 선택하는 단계를 더 포함하는 SoC의 동작방법.
  6. N개의 고성능 코어들을 포함한 고성능 클러스터(N은 1이상의 자연수);
    M개의 저전력 코어들을 포함한 저전력 클러스터(M은 1이상의 자연수); 및
    상기 고성능 코어들의 CPU 로드들 및 상기 저전력 코어들의 CPU 로드들에 기초하여 비점유 코어들을 판별하고, 상기 고성능 코어들의 작업용량들과 상기 CPU 로드들을 비교하고 상기 저전력 코어들의 작업용량들과 상기 CPU 로드들을 비교하여 획득되는 비교결과들에 기초하여, 상기 고성능 코어들과 상기 저전력 코어들 간의 스위칭을 수행하도록 구성되는 스위쳐를 포함하고,
    상기 스위쳐는 상기 고성능 코어들 각각과 상기 저전력 코어들 각각의 사용과 관련되는 히스토리 로그에 기초하여 작업을 수행하기 위한 타겟 코어를 결정하도록 더 구성되고,
    상기 스위칭이 수행됨에 따라, 상기 고성능 코어들 각각과 상기 저전력 코어들 각각의 상기 히스토리 로그가 업데이트되는 SoC(System-on-Chip).
  7. 제6항에 있어서, 상기 스위쳐는
    사용자 설정(User's Configuration), 시스템 설정 및 상기 SoC의 전력상태를 포함하는 외부요청에 기초하여 상기 타겟 코어를 결정하도록 구성되는 외부 요청 적용부를 포함하는 SoC.
  8. 제6항에 있어서, 상기 히스토리 로그는
    상기 고성능 코어들 각각과 상기 저전력 코어들 각각의 선택 카운트 수(Selection Count number), 작업수행시간(Usage Time), 인스트럭션 카운트 수(Instruction Count number) 및 로드 카운트 수(Load Count number) 중 적어도 어느 하나인 SoC.
  9. 제6항에 있어서, 상기 스위쳐는
    상기 고성능 코어들 각각의 상기 히스토리 로그를 카운트하고 저장하는 고성능 서브 카운터들을 포함하는 고성능 코어 히스토리 카운터;
    상기 저전력 코어들 각각의 상기 히스토리 로그를 카운트하고 저장하는 저전력 서브 카운터들을 포함하는 저전력 코어 히스토리 카운터; 및
    상기 고성능 코어들과 상기 저전력 코어들 사이의 스위칭을 수행하도록 구성되는 스위칭 링커를 포함하는 SoC.
  10. 제9항에 있어서, 상기 스위칭 링커는
    상기 히스토리 로그에 기초하여 상기 고성능 클러스터에서 현재 작업 로드가 없는 고성능 코어들 중 어느 하나의 고성능 타겟 코어를 선택하는 제1 타겟 코어 관리부;
    상기 각 히스토리 로그에 기초하여 상기 저전력 클러스터에서 현재 작업 로드가 없는 저전력 코어들 중 어느 하나의 저전력 타겟 코어를 선택하는 제2 타겟 코어 관리부; 및
    상기 CPU 로드에 기초하여 상기 고성능 코어들과 상기 저전력 코어들 사이의 스위칭을 수행하도록 구성되는 코어 스위칭부를 포함하는 SoC.
  11. 제10항에 있어서, 상기 코어 스위칭부는
    상기 CPU 로드가 상기 저전력 타겟 코어의 작업용량을 초과하는 경우 상기 고성능 타겟 코어로의 스위칭을 수행하고,
    상기 CPU 로드가 상기 저전력 타겟 코어의 상기 작업용량 이내인 경우 상기 저전력 타겟 코어로의 역스위칭을 수행하는 SoC.
  12. 제6항에 있어서, 상기 스위쳐는
    상기 고성능 코어들 및 상기 저전력 코어들 각각의 선택 카운트 수에 기초하여, 상기 선택 카운트 수가 가장 적은 코어를 상기 타겟 코어로서 결정하도록 더 구성되는 SoC.
  13. 제6항에 있어서, 상기 스위쳐는
    상기 고성능 코어들 및 상기 저전력 코어들 각각의 작업수행시간(Usage Time)에 기초하여, 상기 작업수행시간이 가작 적은 코어를 상기 타겟 코어로서 결정하도록 더 구성되는 SoC.
  14. 제6항에 있어서, 상기 스위쳐는
    상기 고성능 코어들 및 상기 저전력 코어들 각각의 인스트럭션 카운트 수(Instruction Count number) 또는 로드 카운트 수(Load Count number)에 기초하여 상기 타겟 코어를 결정하도록 더 구성되는 스위칭하는 SoC.
  15. 태스크에 따라 CPU 로드를 제공하는 적어도 하나의 어플리케이션;
    고성능 코어들을 포함한 고성능 클러스터;
    저전력 코어들을 포함한 저전력 클러스터; 및
    상기 CPU 로드에 따라 상기 고성능 코어들 및 상기 저전력 코어들 사이의 스위칭을 요청하고, 상기 고성능 코어들과 상기 저전력 코어들 각각의 사용과 관련되는 히스토리 로그에 기초하여 작업을 수행하기 위한 타겟 코어를 선택하고, 상기 CPU 로드 및 상기 작업의 작업용량 사이의 비교에 기초하여 상기 타겟 코어로의 스위칭을 수행하도록 구성되는 스위쳐를 포함하되,
    상기 타겟 코어로의 상기 스위칭이 수행됨에 따라 상기 고성능 코어들과 상기 저전력 코어들 각각의 상기 히스토리 로그가 업데이트 되는 전자 장치.
  16. 제15항에 있어서, 상기 스위쳐는
    상기 고성능 코어들 및 상기 저전력 코어들 각각의 선택 카운트 수(Selection Count number), 작업수행시간(Usage Time), 인스트럭션 카운트 수(Instruction Count number) 및 로드 카운트 수(Load Count number) 중 적어도 어느 하나에 기초하여 상기 타겟 코어를 선택하는 전자 장치.
  17. 제15항에 있어서, 상기 스위쳐는
    사용자 설정(User's Configuration), 시스템 설정 및 SoC의 전력상태를 포함하는 외부요청에 더 기초하여 상기 타겟 코어를 선택하는 전자 장치.
  18. 제17항에 있어서, 상기 스위쳐는
    상기 저전력 코어들에서 측정된 상기 CPU 로드가 상기 저전력 코어들의 작업용량을 초과할 경우 상기 고성능 클러스터로의 스위칭을 요청하는 전자 장치.
  19. 제15항에 있어서, 상기 스위쳐는
    상기 고성능 코어들에서 측정된 상기 CPU 로드가 상기 저전력 코어들의 작업용량 이내인 경우 상기 저전력 클러스터로 역스위칭을 요청하는 전자 장치.
  20. 복수의 멀티 코어들을 포함하는 SoC(System-on-Chip)의 동작방법에 있어서,
    점유 고성능 코어에서 측정된 CPU 로드가 비점유 저전력 코어의 작업용량 보다 적은 경우, 저전력 코어들로 스위칭을 요청하는 단계;
    상기 요청에 응답하여, 상기 저전력 코어들 중 비점유 코어이고 히스토리 로그가 가장 작은 저전력 코어를 타겟 코어로 선택하는 단계;
    상기 점유 고성능 코어에서 상기 선택된 타겟 코어로 역스위칭하는 단계; 및
    상기 역스위칭 동작에 기초하여 상기 히스토리 로그를 업데이트 하는 단계를 포함하되,
    상시 히스토리 로그는 상기 저전력 코어들의 사용과 관련되는 SoC의 동작방법.
KR1020130001760A 2013-01-07 2013-01-07 복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법 KR102082859B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130001760A KR102082859B1 (ko) 2013-01-07 2013-01-07 복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법
US14/061,783 US10255118B2 (en) 2013-01-07 2013-10-24 Processing system including a plurality of cores and method of operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130001760A KR102082859B1 (ko) 2013-01-07 2013-01-07 복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법

Publications (2)

Publication Number Publication Date
KR20140089838A KR20140089838A (ko) 2014-07-16
KR102082859B1 true KR102082859B1 (ko) 2020-02-28

Family

ID=51062049

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130001760A KR102082859B1 (ko) 2013-01-07 2013-01-07 복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법

Country Status (2)

Country Link
US (1) US10255118B2 (ko)
KR (1) KR102082859B1 (ko)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9027029B2 (en) * 2013-03-28 2015-05-05 International Business Machines Corporation Method for activating processor cores within a computer system
JP6483609B2 (ja) * 2013-05-23 2019-03-13 ルネサスエレクトロニクス株式会社 マルチcpuシステム
US9405340B2 (en) * 2013-06-27 2016-08-02 Intel Corporation Apparatus and method to implement power management of a processor
KR102205836B1 (ko) 2014-01-29 2021-01-21 삼성전자 주식회사 태스크 스케줄링 방법 및 장치
KR102326945B1 (ko) * 2014-03-14 2021-11-16 삼성전자 주식회사 태스크 마이그레이션 방법 및 장치
US9785481B2 (en) * 2014-07-24 2017-10-10 Qualcomm Innovation Center, Inc. Power aware task scheduling on multi-processor systems
WO2016049336A1 (en) 2014-09-26 2016-03-31 Moog Inc. Data visualization and logging system
KR20160054850A (ko) * 2014-11-07 2016-05-17 삼성전자주식회사 다수의 프로세서들을 운용하는 장치 및 방법
US10169104B2 (en) * 2014-11-19 2019-01-01 International Business Machines Corporation Virtual computing power management
US9958932B2 (en) 2014-11-20 2018-05-01 Apple Inc. Processor including multiple dissimilar processor cores that implement different portions of instruction set architecture
US20160147545A1 (en) * 2014-11-20 2016-05-26 Stmicroelectronics International N.V. Real-Time Optimization of Many-Core Systems
US9830242B2 (en) * 2015-01-14 2017-11-28 Mediatek Inc. Loading calculation method and loading calculation system for processor in electronic device
CN104778083B (zh) * 2015-03-27 2018-07-03 华为技术有限公司 异构多核可重构计算平台上任务调度的方法和装置
KR102352756B1 (ko) * 2015-04-29 2022-01-17 삼성전자주식회사 애플리케이션 프로세서, 시스템 온 칩, 및 이를 포함하는 컴퓨팅 장치
US10198262B2 (en) * 2015-08-05 2019-02-05 Sonicwall Inc. Adaptive core grouping
JP6578824B2 (ja) * 2015-08-31 2019-09-25 コニカミノルタ株式会社 画像形成装置、同装置におけるタスク制御方法及びタスク制御プログラム
US10332230B2 (en) 2015-08-31 2019-06-25 Qualcomm Incorporated Characterizing GPU workloads and power management using command stream hinting
US9928115B2 (en) 2015-09-03 2018-03-27 Apple Inc. Hardware migration between dissimilar cores
KR102578648B1 (ko) * 2016-03-14 2023-09-13 삼성전자주식회사 모뎀 데이터에 따라 코어 스위칭이 수행되는 애플리케이션 프로세서 및 이를 포함하는 시스템 온 칩
FR3056786B1 (fr) * 2016-09-29 2019-11-22 Commissariat A L'energie Atomique Et Aux Energies Alternatives Procede de gestion des taches de calcul sur un processeur multi-cœurs fonctionnellement asymetrique
JP6798900B2 (ja) * 2017-02-14 2020-12-09 Necプラットフォームズ株式会社 制御装置、情報システムおよび制御方法
US10459517B2 (en) * 2017-03-31 2019-10-29 Qualcomm Incorporated System and methods for scheduling software tasks based on central processing unit power characteristics
KR102452205B1 (ko) * 2017-11-20 2022-10-06 삼성전자주식회사 멀티 코어 제어 시스템
US11630693B2 (en) * 2018-04-12 2023-04-18 Intel Corporation Technologies for power-aware scheduling for network packet processing
US10915356B2 (en) * 2018-08-30 2021-02-09 Intel Corporation Technology to augment thread scheduling with temporal characteristics
CN111083569B (zh) * 2018-10-18 2021-11-05 杭州海康威视数字技术股份有限公司 一种视频播放方法及装置
US10771982B2 (en) * 2018-10-24 2020-09-08 Mentor Graphics Corporation Resource utilization of heterogeneous compute units in electronic design automation
KR102641520B1 (ko) * 2018-11-09 2024-02-28 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 태스크 스케줄링 방법
US11586472B2 (en) 2019-12-10 2023-02-21 Advanced Micro Devices, Inc. Method of task transition between heterogenous processors
US11755100B2 (en) * 2021-03-18 2023-09-12 Dell Products L.P. Power/workload management system
US11586476B2 (en) * 2021-05-24 2023-02-21 Nxp Usa, Inc. Resource sharing in a multi-core system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007148952A (ja) * 2005-11-30 2007-06-14 Renesas Technology Corp 半導体集積回路
JP2007287020A (ja) * 2006-04-19 2007-11-01 Toshiba Corp 動作モード制御方法
US7296167B1 (en) 2004-10-01 2007-11-13 Advanced Micro Devices, Inc. Combined system responses in a chip multiprocessor
US20110265090A1 (en) * 2010-04-22 2011-10-27 Moyer William C Multiple core data processor with usage monitoring
US8234431B2 (en) 2009-10-13 2012-07-31 Empire Technology Development Llc Interrupt masking for multi-core processors

Family Cites Families (25)

* 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
US20060112226A1 (en) 2004-11-19 2006-05-25 Hady Frank T Heterogeneous processors sharing a common cache
US7624250B2 (en) 2005-12-05 2009-11-24 Intel Corporation Heterogeneous multi-core processor having dedicated connections between processor cores
US7673113B2 (en) * 2006-12-29 2010-03-02 Intel Corporation Method for dynamic load balancing on partitioned systems
US7925900B2 (en) 2007-01-26 2011-04-12 Microsoft Corporation I/O co-processor coupled hybrid computing device
US8806491B2 (en) * 2007-12-31 2014-08-12 Intel Corporation Thread migration to improve power efficiency in a parallel processing environment
JP4784842B2 (ja) 2008-03-31 2011-10-05 学校法人早稲田大学 マルチプロセッサ及びマルチプロセッサシステム
US10216692B2 (en) 2009-06-17 2019-02-26 Massively Parallel Technologies, Inc. Multi-core parallel processing system
US8276142B2 (en) * 2009-10-09 2012-09-25 Intel Corporation Hardware support for thread scheduling on multi-core processors
KR101651871B1 (ko) 2009-12-28 2016-09-09 삼성전자주식회사 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
KR101703328B1 (ko) 2010-11-23 2017-02-07 삼성전자 주식회사 이종 멀티 프로세서 환경에서의 데이터 처리 최적화 장치 및 방법
US9063730B2 (en) 2010-12-20 2015-06-23 Intel Corporation Performing variation-aware profiling and dynamic core allocation for a many-core processor
US8533720B2 (en) 2011-02-25 2013-09-10 International Business Machines Corporation Offloading work from one type to another type of processor based on the count of each type of service call instructions in the work unit
US8874941B2 (en) * 2011-06-14 2014-10-28 Utah State University Apparatus and method for designing an architecturally homogeneous power-performance heterogeneous multicore processor using simulated annealing optimization
US9069553B2 (en) * 2011-09-06 2015-06-30 Marvell World Trade Ltd. Switching tasks between heterogeneous cores
KR102082242B1 (ko) * 2011-09-06 2020-02-27 인텔 코포레이션 전력 효율적 프로세서 아키텍처
US9569278B2 (en) 2011-12-22 2017-02-14 Intel Corporation Asymmetric performance multicore architecture with same instruction set architecture
US9348594B2 (en) * 2011-12-29 2016-05-24 Intel Corporation Core switching acceleration in asymmetric multiprocessor system
US9727388B2 (en) * 2011-12-29 2017-08-08 Intel Corporation Migrating threads between asymmetric cores in a multiple core processor
WO2013101139A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Providing an asymmetric multicore processor system transparently to an operating system
WO2013162589A1 (en) * 2012-04-27 2013-10-31 Intel Corporation Migrating tasks between asymmetric computing elements of a multi-core processor
US8984200B2 (en) * 2012-08-21 2015-03-17 Lenovo (Singapore) Pte. Ltd. Task scheduling in big and little cores
US9619282B2 (en) * 2012-08-21 2017-04-11 Lenovo (Singapore) Pte. Ltd. Task scheduling in big and little cores
US9619284B2 (en) * 2012-10-04 2017-04-11 Intel Corporation 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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7296167B1 (en) 2004-10-01 2007-11-13 Advanced Micro Devices, Inc. Combined system responses in a chip multiprocessor
JP2007148952A (ja) * 2005-11-30 2007-06-14 Renesas Technology Corp 半導体集積回路
JP2007287020A (ja) * 2006-04-19 2007-11-01 Toshiba Corp 動作モード制御方法
US8234431B2 (en) 2009-10-13 2012-07-31 Empire Technology Development Llc Interrupt masking for multi-core processors
US20110265090A1 (en) * 2010-04-22 2011-10-27 Moyer William C Multiple core data processor with usage monitoring

Also Published As

Publication number Publication date
US20140196050A1 (en) 2014-07-10
US10255118B2 (en) 2019-04-09
KR20140089838A (ko) 2014-07-16

Similar Documents

Publication Publication Date Title
KR102082859B1 (ko) 복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법
CN104679586B (zh) 包括异构多核处理器的电子系统及其操作方法
US9696771B2 (en) Methods and systems for operating multi-core processors
US10671133B2 (en) Configurable power supplies for dynamic current sharing
KR102060430B1 (ko) 웨이크-업 시간을 줄일 수 있는 시스템 온 칩. 애플리케이션 프로세서, 및 상기 시스템 온 칩을 포함하는 컴퓨터 시스템
US9086834B2 (en) Controlling configurable peak performance limits of a processor
US20140184619A1 (en) System-on-chip performing dynamic voltage and frequency scaling
KR102169692B1 (ko) 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 동적 전력 관리 방법
US9588915B2 (en) System on chip, method of operating the same, and apparatus including the same
US20100235662A1 (en) Server power manager and method for dynamically managing server power consumption
US11693466B2 (en) Application processor and system on chip
US9996398B2 (en) Application processor and system on chip
TWI553549B (zh) 包括多個不同處理器核心之處理器
US11734067B2 (en) Multi-core system and controlling operation of the same
KR102166644B1 (ko) 복수의 이종 코어들을 포함하는 전자 시스템 및 이의 동작 방법
JP5862727B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム

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