KR20220051158A - 에너지 효율을 위해 스레드들을 동적으로 그룹화하기 위한 기술 - Google Patents

에너지 효율을 위해 스레드들을 동적으로 그룹화하기 위한 기술 Download PDF

Info

Publication number
KR20220051158A
KR20220051158A KR1020227002115A KR20227002115A KR20220051158A KR 20220051158 A KR20220051158 A KR 20220051158A KR 1020227002115 A KR1020227002115 A KR 1020227002115A KR 20227002115 A KR20227002115 A KR 20227002115A KR 20220051158 A KR20220051158 A KR 20220051158A
Authority
KR
South Korea
Prior art keywords
core
idle
low
priority
lps
Prior art date
Application number
KR1020227002115A
Other languages
English (en)
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 인텔 코포레이션
Publication of KR20220051158A publication Critical patent/KR20220051158A/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • G06F11/3423Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time where the assessed time is active or idle time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Multi Processors (AREA)
  • Power Sources (AREA)

Abstract

스레드들을 동적으로 그룹화하기 위한 기술을 갖는 데이터 처리 시스템은 머신-판독가능 매체 및 제1 및 제2 코어들을 포함하고, 각각의 코어는 다수의 LP들(logical processors)을 갖는다. 이러한 시스템은, 실행될 때, 시스템이 새로운 낮은-우선순위 스레드를 수신하기 위해 LP를 선택하는 것 및 새로운 낮은-우선순위 스레드를 선택된 LP에 배정하는 것을 가능하게 하는 운영 체제를 또한 포함한다. 새로운 낮은-우선순위 스레드를 수신하기 위해 LP를 선택하는 동작은, 제1 코어가 다수의 유휴 LP들을 가질 때, 제2 코어가 유휴 LP 및 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는지를 자동으로 결정하는 것을 포함한다. 제2 코어가 유휴 LP 및 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는다고 결정하는 것에 응답하여, 시스템은 새로운 낮은-우선순위 스레드를 수신하기 위해 제2 코어에서의 유휴 LP를 자동으로 선택한다. 다른 실시예들이 설명되고 청구된다.

Description

에너지 효율을 위해 스레드들을 동적으로 그룹화하기 위한 기술
본 개시내용은 일반적으로 데이터 처리 시스템들에, 그리고 특히 프로세서들이 효율적으로 동작하는 것을 가능하게 하는 기술에 관련된다.
데이터 처리 시스템은 다수의 코어들을 갖는 CPU(central processing unit)를 포함할 수 있고, 각각의 코어는 SMT(simultaneous multithreading)를 제공하기 위해 다수의 LP들(logical processors)을 포함할 수 있다. 이러한 데이터 처리 시스템은 CPU 상에서 스레드들로서 소프트웨어를 실행할 수 있고, 각각의 LP는 다른 LP들 상에서 실행되는 다른 스레드들과 동시에 스레드를 실행할 수 있다. 특히, OS(operating system)는 각각의 스레드를 특정 LP에 배정할 수 있다. 또한, 코어를 공유하는 LP들의 그룹은 형제(siblings)라고 지칭될 수 있다.
CPU는 또한 상이한 시간들에서 상이한 주파수들에서 실행될 수 있고, 주파수가 증가함에 따라 더 많은 전력이 필요하다. 특히, 각각의 수락가능한 주파수는 대응하는 전압 요건과 쌍을 이룰 수 있다. CPU가 지원하는 각각의 상이한 전압-주파수 페어링은 "성능 상태(performance state)" 또는 "P-상태(P-state)"라고 지칭될 수 있다. 그러나, 종래의 CPU는 모놀리식 P-상태 모델을 이용하도록 설계될 수 있다. 모놀리식 P-상태 모델 하에서, CPU는 코어들 전부에 대해 동일한 P-상태를 항상 사용한다. 다시 말해서, 현재의 P-상태는 CPU에서의 코어들 전부에 대한 속도 및 전압을 설정한다. 따라서, 이러한 CPU에 대해, P-상태는 CPU 당이다. 대조적으로, 일부 현재의 개발 노력들은 CPU에서의 상이한 코어들이 상이한 P-상태들을 동시에 사용하는 것을 허용하는 CPU의 타입을 향해 지향된다. 예를 들어, CPU에서의 전력 관리 유닛은 각각의 코어를 상이한 P-상태로 설정할 수 있다. 따라서, 이러한 타입의 CPU는 PCPS(per-core P-state)를 지원한다.
일부 종래의 CPU들은, HWP("Hardware-Controlled Performance States"), HDC("Hardware Duty Cycling") 등과 같은 명칭들 또는 상표들 하에서 Intel Corporation에 의해 제공되는 기술들과 같은, 효율을 강화하기 위한 추가적인 기술들을 포함한다. 또한, CPU는 OS가 각각의 스레드에 대한 성능/효율 선호를 명시하는 것을 허용할 수 있다. 다시 말해서, CPU는 소프트웨어-명시된 스레드-당 효율/성능 선호들을 지원할 수 있다.
그럼에도 불구하고, 적어도 일부 상황들에서, 종래의 데이터 처리 시스템에 의해 제공되는 것들을 초과하는 성능 및 효율의 레벨들을 달성하는 것이 바람직할 수 있다. 예를 들어, 배터리-전력형 데이터 처리 시스템들에 의해 제공될 수 있는 배터리 수명의 시간들의 수를 증가시키는 것이 바람직할 수 있다.
아래에 더 상세히 설명되는 바와 같이, 본 개시내용은 CPU가 성능 및 효율 양자 모두의 바람직한 레벨들을 달성하는 것을 가능하게 하는 기술을 도입한다.
본 발명의 특징들 및 장점들은 첨부된 청구항들, 하나 이상의 예시적인 실시예의 다음의 상세한 설명, 및 대응하는 도면들로부터 명백해질 것이다.
도 1은 에너지 효율을 위해 스레드들을 동적으로 그룹화하기 위한 기술을 갖는 데이터 처리 시스템의 예시적인 실시예를 묘사하는 블록도이다.
도 2는 코어들 및 LP들에 대한 에너지 효율 설정들을 관리하기 위한 프로세스의 예시적인 실시예의 흐름도를 제시한다.
도 3a 및 도 3b는 에너지 효율을 위해 스레드들을 동적으로 그룹화하기 위한 프로세스의 예시적인 실시예의 흐름도를 제시한다.
도 4는 하나보다 많은 코어가 유휴 LP를 가질 때 스레드들을 LP들에 배정하기 위한 프로세스의 3개의 상이한 스테이지들을 묘사하는 블록도이다.
도 5는 유휴 LP들을 갖는 상이한 코어들이 상이한 효율/성능 선호들을 갖는 스레드들을 또한 가질 때 스레드들을 LP들에 배정하기 위한 프로세스의 2개의 상이한 스테이지들을 묘사하는 블록도이다.
도 6은 코어가 유휴 LP를 갖지 않을 때 스레드들을 LP들에 배정하기 위한 프로세스의 3개의 상이한 스테이지들을 묘사하는 블록도이다.
도 7은 에너지 효율에 관련되는 설정들로 도 1의 데이터 처리 시스템의 프로세서에서의 레지스터를 업데이트하기 위한 프로세스의 예시적인 실시예의 흐름도를 제시한다.
도 8은 본 발명의 실시예들에 따른 하나보다 많은 코어를 가질 수 있고, 통합 메모리 제어기를 가질 수 있고, 통합 그래픽을 가질 수 있는 프로세서의 블록도이다.
도 9는 본 발명의 실시예들에 따른 시스템의 블록도이다.
도 10 및 도 11은 본 발명의 실시예에 따른 보다 구체적인 예시적인 시스템들의 블록도들이다.
도 12는 본 발명의 실시예들에 따른 시스템 온 칩의 블록도이다.
데이터 처리 시스템에서의 OS가 코어에서의 하나의 LP에 대한 고-성능 힌트 및 해당 코어에서의 다른 LP에 대한 고-효율 힌트를 명시할 때, CPU는 고-성능 힌트에 선호를 제공할 수 있고, 사실상 고-성능 힌트에 응답하여, 코어를 비교적 높은 P-상태로 설정하는 것에 의해, 고-효율 힌트를 무시할 수 있다. 다시 말해서, LP 상의 고-성능 소프트웨어 요청/힌트는 자신의 SMT 형제 상의 고-효율 요청/힌트를 무시한다. 결과적으로, 데이터 처리 시스템은 배경 작업을 효율적으로 실행할 기회를 잃을 수 있으며, 이는 배터리 수명에 상당히 영향을 줄 수 있다. 따라서, CPU는 소프트웨어가 동일한 코어 상의 상이한 LP들에 대해 상이한 효율/성능 선호들을 명시할 때 최적의 효율을 달성할 수 없을 수 있다.
위에 표시된 바와 같이, 본 개시내용은 CPU가 성능 및 효율 양자 모두의 바람직한 레벨들을 달성하는 것을 가능하게 하는 기술을 도입한다. 특히, 본 개시내용은 에너지 효율을 위해 스레드들을 동적으로 그룹화하기 위한 기술을 도입한다. 예를 들어, 아래에 더 상세히 설명되는 바와 같이, 데이터 처리 시스템에서의 OS는 코어가 하나의 LP 상의 고-성능 스레드 및 다른 LP 상의 고-효율 스레드를 가질 가능성을 감소시키는 또는 제거하는 방식으로 스레드들을 LP들에 배정할 수 있다. 결과적으로, 데이터 처리 시스템은 종래의 데이터 처리 시스템보다 더 많은 에너지 효율로 동작할 수 있다. 본 개시내용의 목적들을 위해, LP에 스레드를 "배정(assigning)"하는 것은 해당 LP 상에서 실행되는 스레드를 시작하는 것을 의미한다. 통상적으로, 스레드들은 OS에서의 스케줄러에 의해 LP들에 배정된다. 따라서, 스레드를 LP에 "배정(assigning)"하는 것은 LP 상의 스레드를 "스케줄링(scheduling)"하는 것 또는 스레드를 LP에 "디스패치(dispatching)"하는 것이라고 또한 지칭될 수 있다.
아래에 더 상세히 설명되는 바와 같이, 본 개시내용은, 종래의 데이터 처리 시스템들에 비해, 데이터 처리 시스템의 에너지 효율 및/또는 성능을 개선하는 방식들로 스레드들을 그룹화하기 위한 기술을 설명한다.
도 1은 에너지 효율을 위해 스레드들을 동적으로 그룹화하기 위한 기술을 갖는 데이터 처리 시스템(10)의 예시적인 실시예를 묘사하는 블록도이다. 데이터 처리 시스템(10)은, 본 명세서에 도입되는 기술을 예시하기 위한 다양한 가상 컴포넌트들 및 특징들을 갖는, 가상 시스템이다.
도 1의 실시예에서, 데이터 처리 시스템(10)은, RAM(random access memory)(14), NVS(non-volatile storage)(16), NIC(network interface controller)(18) 등과 같은 다른 컴포넌트들과 함께, CPU 또는 프로세서(12)를 포함한다. 패키지를 형성하기 위해 기판에 장착되는 집적 회로 또는 "칩(chip)"으로서 프로세서가 구현될 수 있다. 대안적으로, 하나보다 많은 칩을 포함하는 패키지로서 프로세서가 구현될 수 있다.
도 1의 실시예에서, 프로세서(12)는, PMU(power management unit)(50)과 같은, 다른 모듈들 뿐만 아니라, 2개의 코어들(20 및 30)을 포함한다. PMU(50)는 전력 제어 유닛이라고 또한 지칭될 수 있다. 또한, 각각의 코어는 2개의 LP들(logical processors)을 제공한다. 구체적으로, 코어(20)는 LP(22) 및 LP(24)를 포함하고, 코어(30)는 LP(32) 및 LP(34)를 포함한다. 그러나, 다른 실시예들에서, 프로세서는 더 적은 코어들 또는 더 많은 코어들, 및 코어 당 더 적은 LP들 또는 더 많은 LP들을 포함할 수 있다. 예를 들어, 프로세서는 수십 또는 수백 개의 코어들을 포함할 수 있고, 이러한 코어들 각각은 하나 이상의 LP를 포함할 수 있다. 따라서, 비록 도 1에서의 각각의 코어는 2개의 LP들만을 포함하더라도, 본 교시내용은 3개 이상의 LP들을 갖는 코어들에 마찬가지로 적용된다. 결과적으로, 코어에서의 LP들의 "양자 모두(both)"를 지칭하는 것 대신에, 본 개시내용은 코어에서의 LP들 "전부(all)"를 더 일반적으로 지칭할 수 있거나, 또는 그 반대일 수 있다. 또한, 위에 표시된 바와 같이, 코어가 다수의 LP들을 포함할 때, 이러한 LP들은 형제라고 지칭될 수 있다.
NVS(16)는 OS(60), 하나 이상의 사용자 애플리케이션(40) 등과 같은 소프트웨어를 포함한다. 데이터 처리 시스템(10)은 LP들 중 하나 이상에서 실행하기 위해 이러한 소프트웨어를 RAM(14)에 복사할 수 있다. 특히, 데이터 처리 시스템(10)은 프로세서(12) 상에서 스레드들로서 소프트웨어를 실행할 수 있고, 각각의 LP는 다른 LP들 상에서 실행되는 다른 스레드들과 동시에 스레드를 실행할 수 있다.
프로세서(12)에서, PMU(50)는 각각의 코어를 상이한 P-상태로 설정할 수 있다. 다시 말해서, 프로세서(12)는 코어-당 P-상태를 지원한다.
아래에 더 상세히 설명되는 바와 같이, 도 1의 실시예에서, PMU(50)는 프로세서(12) 내의 다양한 코어들, LP들 등에 관련되는 전력 관리 설정들을 포함하는 다양한 데이터 스토리지 구조들을 포함한다. 본 개시내용의 목적들을 위해, 이러한 데이터 스토리지 구조들은 레지스터들이라고 지칭될 수 있다. 하나의 실시예에서, 이러한 레지스터들은 SPR들("special-purpose registers")로서 구현된다. SPR은 MSR("model-specific register")라고 또한 지칭될 수 있다.
아래에 더 상세히 설명되는 바와 같이, 하나의 타입의 전력 관리 설정은 "EPP(efficiency/performance preference) 설정"이라고 지칭될 수 있다. 도 1의 실시예에서, PMU(50)는 각각의 LP에 대해 하나의 EPP 레지스터를 제공한다. OS(60)는 실행되고 있는 각각의 상이한 스레드에 대해 상이한 EPP 설정을 제공하기 위해 EPP 레지스터들(23, 25, 33, 및 35)을 사용할 수 있다. 특히, OS(60)는 해당 LP에 대한 스레드가 에너지 효율을 선호하는 방식으로 또는 성능을 선호하는 방식으로 실행되어야 하는지에 관한 표시를 프로세서에 제공하기 위해 LP에 대한 EPP 설정을 사용할 수 있다. 예를 들어, OS(60)는 작업부하 카테고리(예를 들어, 실시간, 전경, 높은 우선순위, 높은 성능, 배경, 낮은 우선순위, 높은 효율 등)를 표시하기 위해 EPP 설정을 제공할 수 있다.
하나의 실시예에서, 이러한 EPP 설정들은 2016년 9월부터의 "Intel® 64 and IA-32 Architectures, Software Developer's Manual, Volume 3B: System Programming Guide, Part 2"("SDM")와 같은 문헌들에서 "에너지/성능 선호 제어(energy/performance preference control)"에 대해 제시되는 가이드라인들을 따를 수 있다. 예를 들어, SDM의 페이지들 14-8 및 페이지 14 -9에 표시되는 바와 같이, OS는 "IA32_HWP_REQUEST Register"라고 지칭되는 SPR의 바이트들 31:24에 EPP 설정 또는 값을 기입할 수 있고, 값 0은 최대 성능이 선호된다는 점을 표시하고, 0FFFxH는 최대 에너지 효율이 선호된다는 점을 표시한다. 그러나, 예시의 목적들을 위해, 본 개시내용은 프로세서(12)가 0 내지 100의 EPP 설정들을 지원하는 가상 시나리오를 설명하며, 0은 최대 성능이 선호된다는 점을 표시하고, 100은 최대 에너지 효율이 선호된다는 점을 표시한다. EPP 설정들은 "소프트웨어 힌트들(software hints)"이라고 또한 지칭될 수 있다. PMU(50)는 이러한 힌트들에 적어도 부분적으로 기초하여 코어들에 대한 P-상태를 자동으로 선택할 수 있다. 예를 들어, 각각의 코어에 대해, PMU(50)는 해당 코어에 대한 EPP 설정들 및 현재 작업부하에 기초하여 P-상태를 선택할 수 있고, 다음으로 PMU 제어 흐름들은 해당 P-상태를 코어에 적용할 것이다.
또한, 본 개시내용의 목적들을 위해, "높은 우선순위"라는 용어는 스펙트럼의 고-성능 절반(0-50)에 있는 EPP 설정을 지칭하기 위해 일반적으로 사용될 수 있고, "낮은 우선순위(low priority)"라는 용어는 스펙트럼의 고-효율 절반(51-100)에 있는 EPP 설정을 지칭하기 위해 일반적으로 사용될 수 있다. 유사하게, "고 전력 상태(high power state)"라는 용어는 스펙트럼의 고-성능 절반에 있는 P-상태 또는 지원되는 P-상태들을 지칭하기 위해 사용될 수 있고, "저 전력 상태(low power state)"라는 용어는 스펙트럼의 저-성능(또는 고-효율) 절반에 있는 P-상태 또는 지원되는 P-상태들을 지칭하기 위해 사용될 수 있다.
도 1은 어느 전력 관리 설정들이 어느 컴포넌트들에 관련되는지를 표시하기 위해 점선들을 사용한다. 예를 들어, EPP 레지스터(23)를 둘러싸는 점선들은 해당 레지스터에서의 EPP 설정이 LP(22)에 관련된다는 점을 표시한다.
또한, PMU(50)는 다수의 코어들에 관련되는 전력 관리 설정들을 위한 LPCS(low-priority-core-set) 레지스터(52)를 포함한다. LPCS 레지스터(52)는 "하드웨어 효율 코어세트 MSR"이라고 또한 지칭될 수 있다. 도 1의 실시예에서, LPCS 레지스터(52)는, 어느 코어들이 어떠한 높은-우선순위 스레드들도 실행하지 않고 있는지를 표시하기 위해, 프로세서(12)에서의 각각의 코어에 대한 엔트리(54)를 포함한다. 데이터 처리 시스템(12)이 어떻게 LPCS 레지스터(52)를 사용하는지가 아래에 더 상세히 설명된다.
따라서, EPP 레지스터들(23, 25, 33, 및 35)은 LP-당 전력 관리 설정들을 포함하고, LPCS 레지스터(52)는 글로벌하게-적용가능한 전력 관리 설정들을 포함한다. 그러나, 다른 실시예들에서, 프로세서는 전력 관리 설정들을 저장하기 위해 임의의 적합한 수의 레지스터들을 사용할 수 있다(예를 들어, 모든 설정들이 단일 레지스터에 저장될 수 있다). 따라서, 본 개시내용의 목적들을 위해, "레지스터(register)"라는 용어는 레지스터의 일부, 다수의 레지스터들의 관련 부분들 등을 지칭하기 위해 사용될 수 있다. 또한, 다른 실시예들에서, 데이터 처리 시스템은 다수의 프로세서들을 수용하기 위해 다수의 소켓들을 포함할 수 있다. 이러한 프로세서들 각각은 프로세서(12)와 관련하여 위에 설명된 것들과 같은 특징들을 포함할 수 있다.
프로세서(12)가 코어-당 P-상태를 지원하기 때문에, PMU(50)는 비교적 낮은 P-상태에서 하나 이상의 코어를 실행하는 한편, 비교적 높은 P-상태에서 하나 이상의 다른 코어를 실행하는 것에 의해 (모든 코어들에 대해 동일한 P-상태를 사용해야 하는 프로세서에 비해) 전력을 절약할 수 있다. 또한, 코어들의 다른 서브세트 상에 절약되는 전력 헤드룸을 사용하여 코어들의 서브세트의 주파수를 증가시키는 것이 가능할 수 있다.
위에 표시된 바와 같이, 본 개시내용은 코어가 하나의 LP 상의 높은-우선순위 스레드 및 다른 LP 상의 낮은-우선순위 스레드를 가질 가능성을 감소시키는 또는 제거하는 것에 의해 에너지 효율을 개선하는 방식들로 스레드들을 그룹화하기 위한 기술을 설명한다. 예를 들어, OS(60)는 어느 LP들 및 어느 코어들이 높은-우선순위 스레드들을 실행하지 않고 있는지를 표시하는 리스트들을 유지할 수 있고, OS(60)는 새로운 스레드를 LP에 배정하기 전에 이러한 리스트들을 참고할 수 있다. 특히, LP가 유휴이거나 또는 낮은-우선순위 스레드를 실행하고 있으면, 해당 LP는 "낮은-우선순위 LP(low-priority LP)" 또는 "배경 LP(background LP)"라고 지칭될 수 있다. 유사하게, 코어에서의 LP들 전부가 유휴이거나 또는 낮은-우선순위 스레드들을 실행하고 있으면, 해당 코어는 "낮은-우선순위 코어(low-priority core)" 또는 "배경 코어(background core)"라고 지칭될 수 있다.
OS(60)은 낮은-우선순위 LP들을 식별하기 위한 낮은-우선순위-LP 리스트(62), 및 낮은-우선순위 코어들을 식별하기 위한 낮은-우선순위-코어 리스트(66)를 포함한다. 낮은-우선순위 LP들의 리스트는 "낮은-우선순위 LP 세트(low-priority LP set)", "배경 LP 세트(background LP set)", 또는 "낮은-우선순위-LP-리스트(Low-Priority-LP-List)"라고 또한 지칭될 수 있다. 유사하게, 낮은-우선순위 코어들의 리스트는 "낮은-우선순위 코어 세트(low-priority core set)", "배경 코어 세트(background core set)", 또는 "낮은-우선순위-코어-리스트(Low-Priority-Core-List)"라고 또한 지칭될 수 있다. 도 1의 실시예에서, 낮은-우선순위-LP 리스트(62)는 프로세서(12)에서의 각각의 LP에 대한 LP 엔트리(64)를 포함하고, OS(60)는 대응하는 LP가 낮은-우선순위 LP인지 여부를 표시하기 위해 이러한 엔트리들 각각을 설정하거나 또는 클리어한다. 유사하게, 낮은-우선순위-코어 리스트(66)는 프로세서(12)에서의 각각의 코어에 대한 코어 엔트리(68)를 포함하고, OS(60)는 대응하는 코어가 낮은-우선순위 코어인지 여부를 표시하기 위해 이들 엔트리들 각각을 설정하거나 또는 클리어한다.
또한, 아래에 더 상세히 설명되는 바와 같이, OS(60)는 프로세서(12)가 효율적으로 동작하는 것을 가능하게 하는 방식들로 스레드들을 LP들에 배정하기 위해 이러한 리스트들을 사용할 수 있다. 예를 들어, OS(60)는, 어느 코어들이 낮은 우선순위이고 어느 것이 높은 우선순위인지 뿐만 아니라, 어느 스레드들 및 LP들이 낮은 우선순위이고 어느 것이 높은 우선순위인지를 결정하기 위해 이러한 리스트들을 사용할 수 있다.
도 2는 코어들 및 LP들에 대한 에너지 효율 설정들을 관리하기 위한 프로세스의 예시적인 실시예의 흐름도를 제시한다. 도 2의 프로세스는 데이터 처리 시스템(10)이 OS(60)에 부팅하는 것으로 시작할 수 있다. 부트 업 시에, 블록 110에 도시되는 바와 같이, OS(60)는 낮은-우선순위-LP 리스트(62) 및 낮은-우선순위-코어 리스트(66)에서의 모든 엔트리들(64 및 68)을 각각 클리어할 수 있다. 다음으로, OS(60)는 실행을 위해 스레드들을 LP들에 배정하고 이러한 스레드들이 유휴일 때 스레드들을 LP들로부터 제거하는 것, 스레드들을 선점하는 것 등을 시작할 수 있다. 본 개시내용의 목적들을 위해, 실행을 위해 LP에 스레드를 배정하고 스레드가 유휴이거나 또는 마무리될 때 LP로부터 스레드를 제거하는 것과 같은 액션들은 "컨텍스트 스위치들(context switches)"이라고 지칭될 수 있다.
특히, 블록 120에 도시되는 바와 같이, OS(60)은 컨텍스트 스위치가 수행되어야 하는지를 결정할 수 있다. 해당 결정이 부정적이면, 프로세서(12)는, 블록 122에 도시되는 바와 같이, 임의의 활성 스레드들을 실행하는 것을 단순히 계속할 수 있다. 그러나, 해당 결정이 긍정적이면, 블록 130에 도시되는 바와 같이, OS(60)는 컨텍스트 스위치가 새로운 스레드 진입 실행을 위한 것인지를 또한 결정할 수 있다. 컨텍스트 스위치가 새로운 스레드 진입 실행을 위한 것이면, 블록 132에 도시되는 바와 같이, OS(60)는 해당 스레드를 LP에 배정할 수 있다. 새로운 스레드를 수신하기 위해 선택되는 LP는 "타겟 LP(target LP)"라고 지칭될 수 있다. 또한, 타겟 LP를 포함하는 코어는 "타겟 코어(target core)"라고 지칭될 수 있다. 더욱이, 어느 타겟 LP가 해당 스레드를 수신할지를 결정하기 위한 제어 로직의 일부가 도 3a 및 도 3b와 관련하여 아래에 더 상세히 설명된다.
또한, 블록 140에 도시되는 바와 같이, OS(60)는 새로운 스레드가 낮은-우선순위로 실행될지를 결정할 수 있다. 예를 들어, OS(60)가 배경 처리를 수행하기 위해 스레드를 스케줄링하고 있으면, OS(60)는 새로운 스레드가 낮은-우선순위로 실행되어야 한다고 결정할 수 있고, 따라서, OS(60)는 낮은-우선순위 설정으로 타겟 LP에 대한 EPP 레지스터를 설정할 수 있다. 새로운 스레드가 낮은-우선순위로 실행될 것이라는 결정에 응답하여, OS(60)는, "낮은-우선순위-LP-리스트(LP) = 1(Low-Priority-LP-List(LP) = 1)"이라는 표현으로 블록 142에 도시되는 바와 같이, 낮은-우선순위-LP 리스트(62)에서 타겟 LP에 대한 엔트리를 설정할 수 있다.
또한, 블록 150에 도시되는 바와 같이, OS(60)는 타겟 코어에서의 형제 LP들 전부가 또한 낮은-우선순위 LP들인지를 결정할 수 있다. 형제 LP들이 또한 낮은-우선순위 LP들이면, OS(60)는, "낮은-우선순위-코어-리스트(LP-코어) = 1(Low-Priority-Core-List(LP-Core) = 1)"이라는 표현으로 블록 152에 도시되는 바와 같이, 타겟 코어에 대한 낮은-우선순위-코어 리스트(66)에 엔트리를 또한 설정할 수 있다.
그러나, 블록 140을 다시 참조하면, 새로운 스레드가 낮은 우선순위를 갖지 않으면(즉, 스레드가 높은 우선순위를 갖는다면), 블록 144에 도시되는 바와 같이, OS(60)는 낮은-우선순위-LP 리스트(62)에서의 타겟 LP에 대한 엔트리를 클리어할 수 있다. 블록 146에 도시되는 바와 같이, OS(60)는 낮은-우선순위-코어 리스트(66)에서의 타겟 코어에 대한 엔트리를 또한 클리어할 수 있다. 다음으로, 프로세스는 블록 120으로 복귀할 수 있고, 프로세서(12)는 다음 컨텍스트 스위치까지 현재 스레드들을 실행하는 것을 계속한다.
또한, 블록 130을 다시 참조하면, 새로운 스레드가 진입하고 있지 않으면, 컨텍스트 스위치는 종료하고 있는 오래된 스레드에 대한 것이다. 따라서, 블록 134에 도시되는 바와 같이, OS(60)는 해당 오래된 스레드를 종료할 수 있고, 그렇게 함으로써 해당 스레드에 대한 LP를 유휴로 만든다. 본 개시내용의 목적들을 위해, 종료되고 있는 스레드에 대한 LP는 "타겟 LP(target LP)"라고 지칭될 수 있고, 이러한 타겟 LP를 포함하는 코어는 "타겟 코어(target core)"라고 지칭될 수 있다.
또한, 블록 160에 도시되는 바와 같이, OS(60)는 종료된 스레드가 높은 우선순위를 갖는지를 결정할 수 있다. 그리고 그렇다면, 블록 142에 도시되는 바와 같이, OS(60)는 낮은-우선순위-LP 리스트(62)에서 해당 LP에 대한 엔트리를 설정할 수 있다. 따라서, 낮은-우선순위-LP 리스트(62)에서 설정되는 엔트리는 대응하는 LP가 낮은-우선순위 LP라는 점을 표시한다.
또한, 블록 150에 도시되는 바와 같이, OS(60)는 형제 LP들이 또한 낮은-우선순위 LP들인지를 결정할 수 있다. 그렇다면, 블록 152에 도시되는 바와 같이, OS(60)는 낮은-우선순위-코어 리스트(66)에서 타겟 코어에 대한 엔트리를 설정할 수 있다. 따라서, 코어 상의 최종 높은-우선순위 스레드가 종료될 때마다, OS(60)는 해당 코어를 낮은-우선순위 코어로서 마킹한다. 다음으로, 프로세스는 블록 120으로 복귀할 수 있고, 프로세서(12)는 다음 컨텍스트 스위치까지 현재 스레드들을 실행하는 것을 계속한다. 따라서, OS(60)는 어느 LP들 및 어느 코어들이 낮은-우선순위인지의 추적을 유지한다.
도 3a 및 도 3b는 에너지 효율을 위해 스레드들을 동적으로 그룹화하기 위한 프로세스의 예시적인 실시예의 흐름도를 제시한다. 특히, 도 3a 및 도 3b는 새로운 스레드를 수신할 타겟 LP를 선택하기 위한 도 2의 블록 132에서의 동작에 대한 더 많은 상세사항들을 제공한다. 블록 210에 도시되는 바와 같이, 도 3a의 프로세스는 OS(60)이 프로세서(12)에서의 LP들 중 임의의 것이 유휴인지를 결정하는 것으로 시작할 수 있다. LP들이 유휴가 아니면, 프로세스는 도 3b로의 페이지 커넥터 B를 통과할 수 있다.
LP가 유휴이면, 블록 230에 도시되는 바와 같이, OS(60)는 새로운 스레드가 낮은-우선순위 스레드인지 또는 높은-우선순위 스레드인지에 의존하여 상이한 분기들을 취할 수 있다. 새로운 스레드가 높은-우선순위 스레드이면, 블록 232에 도시되는 바와 같이, OS(60)는 임의의 코어가 자신의 LP들 전부를 유휴로 갖는지를 결정할 수 있다. 임의의 코어가 완전히 유휴이면, 블록 262에 도시되는 바와 같이, 프로세스는 커넥터 A를 통과할 수 있고, OS(60, 60)는 완전히 유휴인 코어 상의 유휴 LP를 선택할 수 있다. 유휴 코어가 이용가능하지 않으면, 블록 240에 도시되는 바와 같이, OS(60)는 유휴 LP를 갖는 코어들 중 임의의 것이 다른 LP 상에서 높은-우선순위 스레드를 또한 실행하고 있는지를 결정할 수 있다. 임의의 코어가 유휴 LP 및 높은 우선순위 LP를 갖는다면, 블록 242에 도시되는 바와 같이, OS(60)는 ("높은-우선순위 코어(high-priority core)"라고 지칭될 수 있는) 해당 코어를 선택할 수 있다. 또한, 블록 244에 도시되는 바와 같이, OS(60)는 해당 선택된 코어 상의 유휴 LP에 새로운 스레드를 배정할 수 있다. 따라서, OS(60)는 코어 상에서 높은-우선순위 스레드들을 함께 그룹화할 수 있고, 그렇게 함으로써 혼합된 LP들(즉, 하나 이상의 낮은-우선순위 LP와 함께 하나 이상의 높은-우선순위 LP)을 코어가 포함하는 경우보다 더 효과적으로 프로세서(12)가 효율 및 성능을 관리하는 것을 가능하게 한다. 다음으로 프로세스가 종료될 수 있다.
그러나, 블록 240을 다시 참조하면, 유휴 LP들을 갖는 코어들 전부가 낮은-우선순위 LP들만을 갖는다면, 블록 246에 도시되는 바와 같이, OS(60)는 이들 코어들 중 하나("낮은-우선순위 코어(low-priority core)"라고 지칭될 수 있음)를 선택할 수 있다. 또한, 블록 244에 도시되는 바와 같이, OS(60)는 해당 선택된 코어 상의 유휴 LP에 새로운 스레드를 배정할 수 있고, 다음으로 프로세스가 종료될 수 있다. 또한, 도 2의 블록들 144 및 146과 관련하여 위에 표시된 바와 같이, OS(60)는 낮은-우선순위-LP 리스트(62) 및 낮은-우선순위-코어 리스트(66)에서의 타겟 LP 및 타겟 코어에 대한 엔트리들을 클리어할 수 있다.
그러나, 도 3a의 블록 230을 다시 참조하면, 새로운 스레드가 낮은-우선순위 스레드이면, 블록 150에 도시되는 바와 같이, OS(60)는 유휴 LP를 갖는 낮은-우선순위 코어들 중 임의의 것이 낮은-우선순위 스레드를 실행하고 있는지를 결정할 수 있다. 유휴 LP 및 낮은-우선순위 스레드를 실행하고 있는 다른 LP를 갖는 낮은-우선순위 코어가 존재하면, 블록 252에 도시되는 바와 같이, OS(60)는 해당 코어를 선택할 수 있다.
(a) 유휴 LP 및 (b) 낮은-우선순위 스레드를 실행하고 있는 다른 LP를 갖는 낮은-우선순위 코어가 존재하지 않으면, 블록 260에 도시되는 바와 같이, OS(60)는 임의의 코어가 자신의 LP들 전부를 유휴로 갖는지를 결정할 수 있다. 임의의 코어가 자신의 LP들 전부를 유휴로 갖는다면, 블록 262에 도시되는 바와 같이, OS(60)는 완전히 유휴인 코어를 선택할 수 있다. 그러나, 코어가 완전히 유휴가 아니면, 블록 242에 도시되는 바와 같이, OS(60)는 높은-우선순위 코어를 선택할 수 있다. 블록 244에 도시되는 바와 같이, OS(60)는 선택된 코어 상의 유휴 LP에 새로운 스레드를 배정할 수 있다.
대안적으로, (a) (i) 유휴 LP 및 (ii) 낮은-우선순위 스레드를 실행하고 있는 다른 LP를 갖는 낮은-우선순위 코어가 존재하지 않고, (b) 완전히 유휴인 코어가 존재하지 않으면, OS(60)는 (a) 새로운 낮은-우선순위 스레드가 기존의 낮은-우선순위 스레드보다 더 높은-우선순위를 갖는 경우에, 선점할 낮은-우선순위 코어 상의 낮은-우선순위 LP를 찾거나, 또는 (b) 낮은-우선순위 LP가 새로운 낮은-우선순위 스레드를 스케줄링하기 위해 이용가능하게 될 때까지 기다릴 수 있다.
다음으로 도 3a의 프로세스가 종료될 수 있다.
도 4는 하나보다 많은 코어가 유휴 LP를 가질 때 스레드들을 LP들에 배정하기 위한 프로세스의 3개의 상이한 스테이지들을 묘사하는 블록도이다. 이러한 스테이지들은 도 3a에 묘사되는 프로세스의 부분들에 대응한다. 특히, 도 4에 도시되는 바와 같이, 제1 스테이지(410)에서, 코어(20)는 LP(22) 상에서 낮은-우선순위 스레드 A를 실행하고 있는 반면, LP들(24, 32 및 34)은 유휴이다. 또한, 스테이지(410)에서, OS(60)는 LP에 배정할 새로운 낮은-우선순위 스레드 B를 가지며, 이러한 새로운 스레드는 타원으로서 묘사된다.
도 3a의 프로세스를 사용하여, 블록들 252 및 244에서, OS(60)는 LP(24)를 타겟 LP로서 선택하고, 그 이유는 코어(20)가 유휴 LP를 갖고 자신의 형제 LP가 낮은-우선순위 스레드를 실행하고 있기 때문이다. LP(22)의 낮은 우선순위는 EPP 레지스터(23)에서의 100의 EPP 설정에서 반영된다. 이것은 낮은-우선순위-LP 리스트(62)에서의 대응하는 엔트리에서 또한 반영될 것이다.
결과적으로, 스테이지(420)에 도시되는 바와 같이, OS(60)는 낮은-우선순위 스레드 B를 LP(24)에 배정하였다. 또한, OS(60)는 새로운 높은-우선순위 스레드 C를 LP에 배정할 준비를 하고 있다. 본 개시내용의 목적들을 위해, 높은 우선순위를 나타내기 위해 점 채움이 사용될 수 있다. 프로세서(12)가 유휴 LP 및 높은-우선순위 LP를 갖는 코어를 갖는다면, OS(60)는, 도 3a의 블록 242에 따라, 높은-우선순위 스레드 C를 해당 유휴 LP에 배정할 것이다. 그러나, 도 4의 시나리오에서는, 스테이지(420)에서, 프로세서(12)가 이러한 코어를 갖지 않는다. 결과적으로, 도 3a의 블록들 246 및 244에서, 도 4의 스테이지(430)에 도시되는 바와 같이, OS(60)는 타겟 코어로서 낮은-우선순위 코어(30)를 선택하고, OS(60)는 코어(30)에서의 LP(32)에 높은-우선순위 스레드 C를 배정한다. LP(32)의 높은 우선순위는 EPP 레지스터(33)에서의 0의 EPP 설정(및 스테이지(430)에서의 LP(32)에 대한 점 채움)에서 반영된다. 결과적으로, 프로세서(12)는 이제, 코어(30)에 대한 성능을 최적화하면서, 코어(20)에 대한 효율을 최적화할 수 있다.
대조적으로, 종래의 데이터 처리 시스템에서, 낮은-우선순위 스레드 B와 같은 스레드를 배정할 때, OS는 완전히 유휴가 아닌 코어 상의 LP를 선택하기보다는 오히려, 완전히 유휴인 코어 상의 LP를 선택할 것이다. 결과적으로, 도 4의 것과 같은 시나리오에서 높은-우선순위 스레드를 후속하여 배정할 때, 이용가능한 유휴 스레드들만이 낮은-우선순위 스레드들을 이미 실행하고 있는 코어들 상에 있을 것이다. 그리고 일단 OS가 높은-우선순위 스레드를 이러한 LP들 중 하나에 배정하면, 프로세서가 효율을 위해 하나의 코어를 그리고 성능을 위해 다른 코어를 최적화하는 것은 어렵거나, 불가능하거나, 또는 역효과를 낳을 것이다. 예를 들어, 코어가 하나의 낮은-우선순위 LP 및 하나의 높은-우선순위 LP를 갖는다면, 낮은-우선순위 스레드에 대한 EPP 요청의 유효성은 (프로세서가 2개의 형제 EPP 설정들 중 수치적으로 더 낮은 것에 선호를 제공하는 것으로 인해) 감소될 가능성이 있다. 더욱이, (도 4의 스테이지(430)와 같은 시나리오에서의 에너지 예산에 비해) 감소된 에너지 예산으로 인해, 높은 우선순위 LP의 전경 스레드 성능이 감소될 수 있다.
도 5는 유휴 LP들을 갖는 상이한 코어들이 상이한 EPP 설정들을 갖는 스레드들을 또한 가질 때 스레드들을 LP들에 배정하기 위한 프로세스의 2개의 상이한 스테이지들을 묘사하는 블록도이다. 이러한 스테이지들은 도 3a에 묘사되는 프로세스의 부분들에 또한 대응한다. 특히, 도 5에 도시되는 바와 같이, 제1 스테이지(510)에서, 코어(20)는 LP(22) 상에서 높은-우선순위 스레드 A를 실행하고 있고, 코어(30)는 LP(32) 상에서 낮은-우선순위 스레드 B를 실행하고 있는 반면, LP들(24 및 34)은 유휴이다. 또한, 스테이지(510)에서, OS(60)는 LP에 배정할 새로운 낮은-우선순위 스레드 C를 갖는다.
도 3a의 프로세스를 사용하여, 블록들 252 및 244에서, OS(60)는 LP(34)를 타겟 LP로서 선택하고, 그 이유는 코어(30)가 유휴 LP를 갖고 자신의 형제 LP가 낮은-우선순위 스레드를 실행하고 있기 때문이다. 따라서, 도 5의 스테이지(520)에 도시되는 바와 같이, 코어(30)는 낮은-우선순위 LP들만을 갖고, 코어(20)는 높은-우선순위 LP 및 유휴 LP를 갖는다. 결과적으로, 프로세서(12)는 고-성능에 적합한 설정들(예를 들어, P-상태)로 코어(20)를 구성할 수 있고, 프로세서(12)는 고-효율에 적합한 설정들로 코어(30)를 구성할 수 있다.
대조적으로, 종래의 데이터 처리 시스템에서, OS는 높은-우선순위 스레드를 또한 실행하고 있는 코어에 새로운 낮은-우선순위 스레드를 배정할 수 있다. 위에 표시된 바와 같이, 이러한 배열은 프로세서가 바람직한 레벨의 성능 및 효율을 각각의 스레드에 제공하는 것을 어렵게 또는 불가능하게 할 수 있다.
도 3a의 블록 210을 다시 참조하면, 위에 표시된 바와 같이, OS(60)가 새로운 스레드를 수신하기 위해 타겟 LP를 선택하고 있을 때, 현재 유휴인 LP들이 없다면, 프로세스는 페이지 커넥터 B를 통해 도 3b로 진행할 수 있다. 다음으로, 블록 310에 도시되는 바와 같이, OS(60)는 새로운 스레드가 낮은-우선순위 스레드인지 또는 높은-우선순위 스레드인지를 결정할 수 있다. 낮은-우선순위 스레드이면, OS(60)는, 가능하다면, 다른 낮은-우선순위 스레드를 갖는 코어에 이를 배정할 수 있다. 특히, 블록 320에 도시되는 바와 같이, OS(60)는 임의의 코어가 낮은-우선순위 스레드들만을 실행하고 있는지를 결정할 수 있다. 그리고 긍정적인 결정에 응답하여, 블록 322에 도시되는 바와 같이, OS(60)는 새로운 스레드로 이러한 코어 상의 낮은-우선순위 스레드를 선점할 수 있다. 이러한 시나리오가 도 6에 묘사된다.
도 6은 코어가 유휴 LP를 갖지 않을 때 스레드들을 LP들에 배정하기 위한 프로세스의 3개의 상이한 스테이지들을 묘사하는 블록도이다. 도 6의 제1 스테이지(610)에서, LP들(22, 24, 및 32)은 각각 낮은-우선순위 스레드들 A, B, 및 C를 실행하고 있는 반면, LP(34)는 높은-우선순위 스레드 D를 실행하고 있다. 또한, 낮은-우선순위 스레드 E는 OS(60)에 의해 LP에 배정될 새로운 스레드이다(스테이지(610)에서 "[LP 스레드 E]" 전의 플러스 부호로 표시됨). 결과적으로, 도 3b의 블록들 320 및 322에서, 도 6의 스테이지(620)에 도시되는 바와 같이, OS(60)는 낮은-우선순위 스레드 E를 갖는 코어(20) 상의 스레드들 중 하나(예를 들어, 낮은-우선순위 스레드 B)를 선점할 것이다.
또한, 도 6의 시나리오에서는, 스테이지(620) 후에, 더 오래된 LP 스레드들 중 하나가 종료된다. 구체적으로, LP(32) 상의 낮은-우선순위 스레드 C는 종료된다(스테이지(620)에서 "[LP 스레드 C]" 전에 마이너스 부호로 표시됨). 결과적으로, 스테이지(630)에서, LP(32)는 유휴이다. 결과적으로, 프로세서(12)는 다음으로 고-효율을 위해 코어(20)를 구성하면서, 고-성능을 위해 코어(30)를 구성할 수 있다.
대조적으로, 종래의 데이터 처리 시스템에서, OS는 높은-우선순위 스레드를 또한 실행하고 있는 코어 상의 오래된 낮은-우선순위 스레드를 선점할 수 있다. 그리고 새로운 낮은-우선순위 스레드는 더 오래된 스레드들 중 어느 것보다 전에 종료될 가능성이 없을 수 있다. 결과적으로, 다음 LP가 유휴가 될 때, 해당 LP는 낮은-우선순위 스레드들만을 갖는 코어 상의 LP들 중 하나일 가능성이 더 크다.
대조적으로, 도 6의 시나리오에서는, 혼합된 LP들(즉, 하나의 낮은-우선순위 LP 및 하나의 높은-우선순위 LP를 갖는 코어)을 갖는 코어는 새로운 스레드가 해당 코어에 배정되지 않기 때문에 더 빨리 균일해질 가능성이 있다.
도 3b를 다시 참조하면, 도 3b의 블록 310에서, 새로운 스레드가 낮은-우선순위 스레드가 아니면, LP들이 유휴가 아닐 때, 이것은 LP에 배정될 높은-우선순위 스레드이다. 이러한 경우에, 프로세스는 블록 330으로 넘어가고, OS(60)는 임의의 코어가 낮은-우선순위 스레드를 실행하고 있는지를 결정한다. 임의의 코어가 낮은 우선순위 LP를 갖는다면, 블록 334에 도시되는 바와 같이, OS(60)는 새로운 높은 우선순위 스레드에 대해 그러한 LP를 선택하고, 새로운 높은-우선순위 스레드를 갖는 해당 LP 상의 낮은-우선순위 스레드를 선점한다. 또한, 블록들 336 및 338에 도시되는 바와 같이, OS(60)는 낮은-우선순위-LP 리스트(62) 및 낮은-우선순위-코어 리스트(66)에서의 해당 LP 및 해당 코어에 대한 엔트리들을 클리어하고, 그 이유는 해당 LP가 더 이상 낮은-우선순위 LP가 아니고, 해당 코어가 낮은-우선순위 코어가 아니기 때문이다(해당 코어가 이제 적어도 하나의 높은-우선순위 LP를 갖기 때문임). 대안적으로, 선택된 LP 및 선택된 코어에 대한 엔트리들을 클리어하기 위한 동작들은, 블록 160의 "아니오" 분기 상의, 도 2의 일부로서 묘사될 수 있다.
그러나, 도 3b의 블록 330을 다시 참조하면, OS(60)가 LP에 배정할 새로운 높은-우선순위 스레드를 갖지만, (a) LP들이 현재 유휴가 아니고, (b) LP들이 현재 낮은-우선순위 스레드를 실행하고 있지 않으면, 블록 332에 도시되는 바와 같이, OS(60)는 해당 새로운 스레드를 배정하는 방법을 결정하기 위해 임의의 적합한 접근법을 사용할 수 있다. 예를 들어, OS(60)는 새로운 스레드가 활성 높은 우선순위 스레드들 중 어느 것보다 더 중요한지 또는 더 높은 우선순위를 갖는지를 결정할 수 있고, OS(60)는 LP가 유휴가 되는 것 등을 기다릴 수 있다. 다음으로 도 3b의 프로세스가 종료될 수 있다.
도 7은 에너지 효율에 관련되는 설정들로 LPCS 레지스터(52)를 업데이트하기 위한 프로세스의 예시적인 실시예의 흐름도를 제시한다. 도 7의 프로세스는 도 2 및 도 3a 및 도 3b의 프로세스들과 동시에 실행될 수 있다. 블록 410에 도시되는 바와 같이, 도 2 및 도 3a 및 도 3b와 관련하여 위에 설명된 바와 같이, OS(60)는 적절할 때 낮은-우선순위-코어 리스트(66)를 업데이트할 수 있다. OS(60)는 다음으로 OS(60)가 LPCS 레지스터(52)를 업데이트한 이후 미리 결정된 시간량(즉, "업데이트 간격")이 경과했는지를 결정할 수 있다. 업데이트 간격이 경과했다면, 블록 422에 도시되는 바와 같이, OS(60)는 낮은-우선순위-코어 리스트(66)로부터의 데이터를 LPCS 레지스터(52)에 기입할 수 있다. 또한, 블록 424에 도시되는 바와 같이, OS(60)는, 다음 업데이트 간격의 시작을 수립하기 위해, 업데이트에 대한 타임스탬프를 저장할 수 있다. 블록 426에 도시되는 바와 같이, 프로세서(12)는 다음으로, LPCS 레지스터(52)에서의 새로운 설정들에 기초하여, 코어들(20 및 30)의 효율 및 성능을 관리할 수 있다. 그러나, 블록 420을 다시 참조하면, 업데이트 간격이 아직 경과하지 않았다면, OS(60)는, LPCS 레지스터(52)에서 기존 설정들에 기초하여, 코어들(20 및 30)의 효율 및 성능을 관리하는 것을 계속할 수 있다.
더욱이, PMU(50)는 프로세서(12)의 성능 및 효율을 더 효과적으로 관리하기 위해 LPCS 레지스터(52)를 사용할 수 있다. 예를 들어, PMU(50)는 어느 코어들이 어떠한 높은-우선순위 스레드들도 실행하지 않고 있는지(즉, 어느 코어들이 낮은-우선순위 코어들인지)를 결정하기 위해 LPCS 레지스터(52)를 사용할 수 있고, PMU(50)는 다음으로 이러한 코어들에 더 적극적인 효율 기법들을 적용할 수 있다. 대조적으로, 프로세서가 EPP 설정들에만 의존한다면, 프로세서는 이러한 적극적인 효율 기법들을 적용하지 않을 수 있다. 예를 들어, 2개의 LP들을 갖는 그리고 효율을 향한 약 70%의 EPP 설정들을 갖는 코어를 갖는 종래의 프로세서는, 부적절한 성능을 제공하는 것을 회피하기 위해, 명시된 효율 백분율에 대해 실제로 필요한 것보다 더 높은 P-상태에서 해당 코어를 실행할 수 있다. 예를 들어, OS는 미디어 재생과 같은 전경 작업을 위한 효율을 향한 약 70%의 EPP 설정들을 명시할 수 있고, 프로세서는 사용자 경험에 대한 악영향을 회피하기 위해 70% 효율에 대응하는 P-상태보다 더 높은 P-상태에서 코어를 실행할 수 있다.
대조적으로, 프로세서(12)는 LPCS 레지스터(52) 뿐만 아니라 EPP 레지스터들(23, 25, 33, 및 35)을 고려하고, 프로세서(12)는, 원하는 또는 적합한 레벨의 효율과 관련하여, 이러한 설정들이 일치할 때 더 적극적인 절전 알고리즘들로 스위치한다. 프로세서는, 원하는 또는 적합한 레벨의 성능과 관련하여, 이러한 설정들이 일치할 때 더 적극적인 성능 알고리즘들로 또한 스위치할 수 있다.
예를 들어, LPCS 레지스터(52)에서의 설정들 및 EPP 설정들이 함께 고려되고, 이러한 설정들이 하나의 코어가 다른 코어들보다 더 높은-우선순위 스레드들을 갖는 것에 일치할 때, 프로세서(12)는 더 낮은-우선순위 스레드들을 갖는 하나 이상의 코어로부터 더 높은-우선순위 스레드들을 갖는 코어로 하드웨어 리소스들을 전용시킬 수 있다. 이러한 하드웨어 리소스들은, 예를 들어, 캐시, 메모리 대역폭, 링 대역폭 등을 포함할 수 있다. 예를 들어, 프로세서(12)는 더 높은-우선순위 스레드들을 갖는 코어로부터의 링 대역폭 요청들을 우선순위화할 수 있고, 및/또는 프로세서(12)는 더 높은-우선순위 스레드들을 갖는 코어에 더 많은 캐시(예를 들어, 캐시의 80%)를 할당할 수 있다. 유사하게, 데이터 처리 시스템(10)은 더 높은-우선순위 스레드를 갖는 코어로부터의 메모리 대역폭 요청들을 우선순위화는 등일 수 있다.
또한 또는 대안적으로, LPCS 레지스터(52)에서의 설정들 및 EPP 설정들이 패키지에서의 모든 코어들이 낮은 우선순위 코어들이라는 점(즉, LP들이 높은-우선순위 스레드들을 실행하지 않는다는 점)을 표시함에 있어서 일치한다고 결정하는 것에 응답하여 프로세서(12)가 적극적 효율 기법들을 사용할 수 있다. 예를 들어, 프로세서(12)는 코어들 전부를 듀티 사이클할 수 있다. 또한 또는 대안적으로, 프로세서(12)는, 코어 "C-상태(C-state)" 이용(예를 들어, C0 백분율 이용) 등에 기초하여, 보다 제한적인 에너지 예산을 구현하기 위해 더 낮은 P-상태들로 스위치할 수 있다. 또한 또는 대안적으로, 프로세서(12)는 적극적인 패키지 유휴 엔트리들로 스위치할 수 있다.
또한, 높은-우선순위 코어가 다수의 높은-우선순위 LP들을 가질 때, 해당 유휴 LP가 유휴로 진입하는 것에 응답하여, OS(60)는 이러한 LP들 중 하나로부터 다른 코어 상의 유휴 LP로 스레드를 자동으로 전송할 수 있다. 특히, 코어가 2개의 낮은-우선순위 스레드들을 실행하고 있고, 다음으로 이러한 스레드들 중 하나가 종료될 때, OS(60)가 이러한 전송을 수행할 수 있다. 결과적으로, OS(60)가 스레드들 중 하나를 높은-우선순위 코어로부터 멀리 전송한 후에, 해당 높은-우선순위 코어는, 자신의 감소된 작업부하로 인해, 더 빠르게 및/또는 효과적으로 실행하는 것이 가능할 수 있다.
데이터 처리 시스템은 원하는 레벨들의 성능 및 효율을 실현하기 위해 본 교시내용을 사용할 수 있다. 예를 들어, 배경 코어들 상에서 배경 작업(예를 들어, 높은 QoS(quality of service)가 필요하지 않은 작업)을 그룹화하는 것, 및 그렇게 함으로써 전체 물리적 코어들이 전경 작업(예를 들어, 높은 QoS(quality of service)가 요구되는 작업)에 이용가능하게 하는 것에 의해, 프로세서는 코어들에 걸쳐 스레드 마이그레이션 및 스레드 시그널링을 회피하거나 또는 감소시킬 수 있고, 그렇게 함으로써 증가된 응답성을 실현할 수 있다. 이러한 프로세서는 배경 코어들을 더 효율적으로 또한 실행할 수 있고, 그렇게 함으로써 배터리 수명을 개선하고, 배경 코어들을 효율적으로 실행하는 것으로부터 이용가능한 추가적인 에너지 예산으로 인해, 전경 작업을 실행하는 코어들 상의 성능 및 응답성을 또한 개선한다.
추가적인 실시예들:
도 8 내지 도 12는 예시적인 컴퓨터 아키텍처들의 블록도들이다. 도 8 내지 도 12에서의 동일한 또는 유사한 엘리먼트들은 비슷한 참조 번호들을 갖는다. 랩톱들, 데스크톱들, 핸드헬드 PC들, 개인용 디지털 보조기기들, 엔지니어링 워크스테이션들, 서버들, 네트워크 디바이스들, 네트워크 허브들, 스위치들, 내장 프로세서들, DSP들(digital signal processors), 그래픽 디바이스들, 비디오 게임 디바이스들, 셋-톱 박스들, 마이크로 제어기들, 셀 전화들, 휴대용 미디어 플레이어들, 핸드 헬드 디바이스들, 및 다양한 다른 전자 디바이스들에 대해 해당 분야들에서 알려진 다른 시스템 설계들 및 구성들이 또한 적합하다. 일반적으로, 본 명세서에 개시되는 바와 같은 프로세서 및/또는 다른 실행 로직을 포함할 수 있는 아주 다양한 시스템들 또는 전자 디바이스들이 일반적으로 적합하다.
도 8은 본 발명의 실시예들에 따른 하나보다 많은 코어를 가질 수 있고, 통합 메모리 제어기를 가질 수 있고, 통합 그래픽을 가질 수 있는 프로세서(1100)의 블록도이다. 도 8에서의 실선 박스들은 단일 코어(1102A), 시스템 에이전트(1110), 하나 이상의 버스 제어기 유닛들(1116)의 세트를 갖는 프로세서(1100)를 예시하는 한편, 점선 박스들의 선택적인 추가는 다수의 코어들(1102A-N), 시스템 에이전트 유닛(1110)에서의 하나 이상의 통합 메모리 제어기 유닛(들)의 세트, 및 특수 목적 로직(1108)을 갖는 대안적인 프로세서(1100)를 예시한다.
따라서, 프로세서(1100)의 상이한 구현들은, 1) (하나 이상의 코어를 포함할 수 있는) 통합 그래픽 및/또는 과학 (스루풋) 로직인 특수 목적 로직(1108), 및 하나 이상의 범용 코어(예를 들어, 범용 순차적 코어들, 범용 비순차적 코어들, 이 둘의 조합)인 코어들(1102A-N)을 갖는 CPU; 2) 그래픽 및/또는 과학 (스루풋)을 위해 주로 의도되는 다수의 특수 목적 코어들인 코어들(1102A-N)을 갖는 코프로세서; 및 3) 다수의 범용 순차적 코어들인 코어들(1102A-N)을 갖는 코프로세서를 포함할 수 있다. 따라서, 프로세서(1100)는, 예를 들어, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU, 하이-스루풋 MIC(many integrated core) 코프로세서(30개 이상의 코어들을 포함함), 내장 프로세서 등과 같은, 범용 프로세서, 코프로세서 또는 특수-목적 프로세서일 수 있다. 프로세서는 하나 이상의 칩 상에 구현될 수 있다. 프로세서(1100)는, 예를 들어, BiCMOS, CMOS, 또는 NMOS 등과 같은, 다수의 프로세스 기술들 중 어느 것을 사용하여 하나 이상의 기판의 일부가 될 수 있고 및/또는 이들 기판 상에 구현될 수 있다.
메모리 계층구조는, 코어들 내의 하나 이상의 레벨의 캐시 유닛(1104A-N), 하나 이상의 공유 캐시 유닛(1106)의 세트, 및 통합 메모리 제어기 유닛(1114)의 세트에 연결되는 외부 메모리(도시되지 않음)를 포함한다. 공유 캐시 유닛들(1106)의 세트는, L2, L3(level 3), L4(level 4), 또는 다른 레벨들의 캐시와 같은, 하나 이상의 중간-레벨 캐시들, LLC(last level cache), 및/또는 이들의 조합을 포함할 수 있다. 하나의 실시예에서는 링 기반 인터커넥트 유닛(1112)이 특수 목적 로직(1108), 공유 캐시 유닛들(1106)의 세트, 및 시스템 에이전트 유닛(1110)/통합 메모리 제어기 유닛(들)(1114)을 인터커넥트하지만, 대안적인 실시예들은 이러한 유닛들을 인터커넥트하기 위한 임의의 수의 잘-알려진 기법들을 사용할 수 있다. 하나의 실시예에서, 하나 이상의 캐시 유닛(1106)과 코어들(1102-A-N) 사이에 코히어런시(coherency)가 유지된다.
시스템 에이전트 유닛(1110)은 코어들(1102A-N)을 조정 및 운영하는 컴포넌트들을 포함한다. 시스템 에이전트 유닛(1110)은, 예를 들어, PCU(power control unit) 및 디스플레이 유닛을 포함할 수 있다. PCU는 코어들(1102A-N) 및 통합 그래픽 로직(1108)의 전력 상태를 조절하기 위해 필요한 로직 및 컴포넌트들이거나 또는 이들을 포함할 수 있다. 디스플레이 유닛은 하나 이상의 외부 접속된(externally connected) 디스플레이를 구동하기 위한 것이다.
코어들(1102A-N)은 아키텍처 명령어 세트의 면에서 동종 또는 이종일 수 있다; 즉, 코어들(1102A-N) 중 2개 이상은 동일한 명령어 세트를 실행가능할 수 있는 한편, 다른 것들은 단지 해당 명령어 세트의 서브세트 또는 상이한 명령어 세트를 실행할 수 있다. 이러한 코어들(1102A-N)은 본 명세서에 설명되는 바와 같이 특정 메모리 액세스 명령어들을 서브라인 메모리 액세스 명령어들로 변환할 수 있다.
도 9는 본 발명의 실시예들에 따른 시스템(1200)의 블록도이다. 시스템(1200)은, 제어기 허브(1220)에 연결되는, 하나 이상의 프로세서(1210, 1215)를 포함할 수 있다. 하나의 실시예에서, 제어기 허브(1220)는 GMCH(graphics memory controller hub)(1290) 및 IOH(Input/Output Hub)(1250)(개별 칩들 상에 있을 수 있음)를 포함하고; GMCH(1290)는 메모리(1240) 및 코프로세서(1245)에 연결되는 그래픽 제어기 및 연결된 메모리 내의 동작들을 제어하는 메모리 제어기를 포함하고; IOH(1250)는 I/O(input/output) 디바이스들(1260)을 GMCH(1290)에 연결한다. 대안적으로, 메모리 및 그래픽 제어기들 중 하나 또는 양자 모두는 프로세서 내에 통합되고, 메모리(1240) 및 코프로세서(1245)는 프로세서(1210)에 직접 연결되고, 제어기 허브(1220)는 IOH(1250)와 단일 칩에 있다.
추가적인 프로세서들(1215)의 선택적 속성이 도 9에 파선들로 표기된다. 각각의 프로세서(1210, 1215)는 본 명세서에 설명되는 하나 이상의 처리 코어를 포함할 수 있고 프로세서(1100)의 일부 버전일 수 있다.
메모리(1240)는, 예를 들어, DRAM(dynamic random access memory), PCM(phase change memory) 또는 이 둘의 조합일 수 있다. 적어도 하나의 실시예에 대하여, 제어기 허브(1220)는 FSB(frontside bus)와 같은 멀티-드롭 버스(multi-drop bus), QPI(QuickPath Interconnect)와 같은 포인트-투-포인트 인터페이스, 또는 유사한 접속(1295)을 통해 프로세서(들)(1210, 1215)와 통신한다.
하나의 실시예에서, 코프로세서(1245)는, 예를 들어, 하이-스루풋 MIC 프로세서, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU, 내장 프로세서 등과 같은 특수-목적 프로세서이다. 하나의 실시예에서, 제어기 허브(1220)는 통합 그래픽 가속기를 포함할 수 있다.
아키텍처, 마이크로아키텍처, 열, 전력 소비 특성들 등을 포함하는 성능의 메트릭들의 스펙트럼의 면에서 물리적 리소스들(1210, 1215) 사이에 다양한 차이가 존재할 수 있다.
하나의 실시예에서, 프로세서(1210)는 일반적인 타입의 데이터 처리 동작들을 제어하는 명령어들을 실행한다. 이러한 명령어들 내에는 코프로세서 명령어들이 내장될 수 있다. 프로세서(1210)는 이러한 코프로세서 명령어들을 부속된 코프로세서(1245)에 의해 실행되어야 하는 타입의 것으로 인식한다. 따라서, 프로세서(1210)는 이러한 코프로세서 명령어들(또는 코프로세서 명령어들을 표현하는 제어 신호들)을 코프로세서 버스 또는 다른 인터커넥트 상에서 코프로세서(1245)에 발행한다. 코프로세서(들)(1245)는 수신된 코프로세서 명령어들을 수락하여 실행한다.
도 10 및 도 11은 본 발명의 실시예에 따른 보다 구체적인 예시적인 시스템 (1300 및 1400)의 블록도이다. 도 10에 도시되는 바와 같이, 멀티프로세서 시스템(1300)은 포인트-투-포인트 인터커넥트 시스템이며, 포인트-투-포인트 인터커넥트(1350)를 통해 연결되는 제1 프로세서(1370) 및 제2 프로세서(1380)를 포함한다. 프로세서들(1370, 1380) 각각은 일부 버전의 프로세서(1100)일 수 있다. 본 발명의 하나의 실시예에서, 프로세서들(1370 및 1380)은 각각 프로세서들(1210 및 1215)이고, 한편 코프로세서(1338)는 코프로세서(1245)이다. 다른 실시예에서, 프로세서들(1370 및 1380)은 각각 프로세서(1210) 및 코프로세서(1245)이다.
프로세서들(1370, 1380)은, 각각, IMC(Integrated Memory Controller) 유닛들(1372, 1382)을 포함하는 것으로 도시된다. 프로세서(1370)는 버스 제어기 유닛들의 P-P(point-to-point) 인터페이스들(1376 및 1378)을 자신의 일부로서 또한 포함하고; 유사하게, 제2 프로세서(1380)는 P-P 인터페이스들(1386 및 1388)을 포함한다. 프로세서들(1370, 1380)은 P-P 인터페이스 회로들(1378, 1388)을 사용하여 P-P 인터페이스(1350)를 통해 정보를 교환할 수 있다. 도 10에 도시되는 바와 같이, IMC들(1372 및 1382)은 프로세서들을 각각의 메모리들, 즉 메모리(1332) 및 메모리(1334)에 연결하며, 이는 각각의 프로세서들에 국부적으로 부속되는 메인 메모리의 일부일 수 있다.
프로세서들(1370, 1380)은 포인트 투 포인트 인터페이스 회로들(1376, 1394, 1386, 1398)을 사용하여 개별 P-P 인터페이스들(1352, 1354)을 통해 칩셋(1390)과 정보를 각각 교환할 수 있다. 칩셋(1390)은 고-성능 인터페이스(1339)를 통해 코프로세서(1338)와 정보를 선택적으로 교환할 수 있다. 하나의 실시예에서, 코프로세서(1338)는, 예를 들어, 하이-스루풋 MIC 프로세서, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU, 내장 프로세서 등과 같은 특수-목적 프로세서이다.
공유 캐시(도시되지 않음)가 양자 모두의 프로세서들의 외부에 또는 어느 하나의 프로세서에 포함될 수 있지만, P-P 인터커넥트를 통해 프로세서들과 접속되어, 프로세서가 저 전력 모드로 배치되면 어느 하나의 프로세서 또는 양자 모두의 프로세서의 로컬 캐시 정보가 공유 캐시에 저장될 수 있다.
칩셋(1390)은 인터페이스(1396)를 통해 제1 버스(1316)에 연결될 수 있다. 하나의 실시예에서, 제1 버스(1316)는 PCI(Peripheral Component Interconnect) 버스이거나, 또는 PCI Express 버스 또는 다른 제3 세대 I/O 인터커넥트 버스와 같은 버스일 수 있지만, 본 발명의 범위가 이에 제한되는 것은 아니다.
도 10에 도시되는 바와 같이, 제1 버스(1316)를 제2 버스(1320)에 연결하는 버스 브릿지(1318)와 함께, 다양한 I/O 디바이스들(1314)이 제1 버스(1316)에 연결될 수 있다. 하나의 실시예에서, 코프로세서들, 하이-스루풋 MIC 프로세서들, GPGPU들, (예를 들어, 그래픽 가속기들 또는 DSP(digital signal processing) 유닛들과 같은)가속기들, 필드 프로그램가능 게이트 어레이들, 또는 임의의 다른 프로세서와 같은, 하나 이상의 추가적인 프로세서(1315)가 제1 버스(1316)에 연결된다. 하나의 실시예에서, 제2 버스(1320)는 LPC(low pin count) 버스일 수 있다. 하나의 실시예에서, 예를 들어, 키보드 및/또는 마우스(1322), 통신 디바이스들(1327), 및 명령어들/코드 및 데이터(1330)를 포함할 수 있는 디스크 드라이브 또는 다른 대용량 스토리지 디바이스와 같은 스토리지 유닛(1328)을 포함하는 다양한 디바이스들이 제2 버스(1320)에 연결될 수 있다. 추가로, 오디오 I/O(1324)가 제2 버스(1320)에 연결될 수 있다. 다른 아키텍처들이 가능하다는 점에 주목한다. 예를 들어, 도 10의 포인트-투-포인트 아키텍처 대신에, 시스템은 멀티-드롭 버스 또는 다른 이러한 아키텍처를 구현할 수 있다.
도 11은 본 발명의 하나의 실시예에 따른 제2의 보다 구체적인 예시적인 시스템(1400)의 블록도를 제시한다. 도 10의 특정 양태들은 도 11의 다른 양태들을 불명료하게 하는 것을 회피하기 위해 도 11에서 생략되었다.
도 11은 프로세서들(1370, 1380)이, 각각, 통합 메모리 및 I/O 제어 로직("CL")(1372, 1382)을 포함할 수 있다는 점을 예시한다. 따라서, CL(1372, 1382)은 통합 메모리 제어기 유닛들을 포함하고 I/O 제어 로직을 포함한다. 도 11은, CL(1372, 1382)에 메모리(1332, 1334)가 연결되어 있을 뿐만 아니라, 또한 I/O 디바이스들(1414)이 제어 로직(1372, 1382)에 또한 연결되어 있는 것을 예시하고 있다. 레거시 I/O 디바이스들(1415)이 칩셋(1390)에 연결된다.
도 12는 본 발명의 실시예들에 따른 SoC(system on a chip)(1500)의 블록도이다. 점선 박스들은 더 진보된 SoC들 상의 선택적 특징들이다. 도 12에서, 인터커넥트 유닛(들)(1502)은, 하나 이상의 코어(1102A-N)(구성 캐시 유닛들(1104A-N)을 포함함)의 세트 및 공유 캐시 유닛(들)(1106)을 포함하는 애플리케이션 프로세서(1510); 시스템 에이전트 유닛(1110); 버스 제어기 유닛(들)(1116); 통합 메모리 제어기 유닛(들)(1114); 통합 그래픽 로직, 이미지 프로세서, 오디오 프로세서, 및 비디오 프로세서를 포함할 수 있는 하나 이상의 코프로세서(1520)의 세트; SRAM(static random access memory) 유닛(1530); DMA(direct memory access) 유닛(1532); 및 하나 이상의 외부 디스플레이에 연결하기 위한 디스플레이 유닛(1540)에 연결된다. 하나의 실시예에서, 코프로세서(들)(1520)는, 예를 들어, 네트워크 또는 통신 프로세서, 압축 엔진, GPGPU, 하이-스루풋 MIC 프로세서, 내장 프로세서 등과 같은 특수-목적 프로세서를 포함한다.
결론
본 개시내용에서, "실시예(an embodiment)", "하나의 실시예(one embodiment)", 및 "다른 실시예(another embodiment)"와 같은 표현들은 일반적으로 실시예 가능성들을 참조하도록 의도된다. 이러한 표현들이 본 발명을 특정 실시예 구성들로 제한하도록 의도되는 것은 아니다. 본 명세서에 사용되는 바와 같이, 이러한 표현들은 동일한 실시예 또는 상이한 실시예들을 참조할 수 있으며, 해당 실시예들은 다른 실시예들로 조합될 수 있다. 본 명세서에 설명되고 예시되는 원리들 및 예시적인 실시예들에 비추어, 예시된 실시예들이 본 명세서에 설명되는 및/또는 예시되는 원리들로부터 벗어나지 않고 배열 및 상세사항이 수정될 수 있다는 점이 인식될 것이다.
또한, 본 개시내용에 따르면, 디바이스는, 프로세서에 의해 액세스될 때, 디바이스로 하여금 특정 동작들을 수행하게 하는 명령어들 및 다른 데이터를 포함할 수 있다. 본 개시내용의 목적들을 위해, 디바이스로 하여금 동작들을 수행하게 하는 명령어들은 일반적으로 소프트웨어라고 지칭될 수 있다. 소프트웨어 등은 제어 로직이라고 또한 지칭될 수 있다. 부트 프로세스 동안 사용되는 소프트웨어는 펌웨어라고 지칭될 수 있다. 비휘발성 메모리에 저장되는 소프트웨어는 펌웨어라고 또한 지칭될 수 있다. 소프트웨어는 임의의 적합한 구조 또는 구조들의 조합을 사용하여 조직될 수 있다. 따라서, 프로그램 및 모듈과 같은 용어들은, 제한없이 애플리케이션 프로그램들, 서브프로그램들, 루틴들, 함수들, 프로시저들, 드라이버들, 라이브러리들, 데이터 구조들, 프로세스들, 마이크로코드, 및 다른 타입들의 소프트웨어 컴포넌트들을 포함하는, 광범위한 소프트웨어 구성들을 커버하기 위해 일반적으로 사용될 수 있다. 또한, 소프트웨어 모듈은 하나보다 많은 컴포넌트를 포함할 수 있고, 이러한 컴포넌트들은 모듈의 동작들을 완료하도록 협력할 수 있다는 점이 이해되어야 한다. 또한, 소프트웨어가 디바이스로 하여금 수행하게 하는 동작들은 동작 컨텍스트를 생성하는 것, 특정 데이터 구조를 인스턴스화하는 것 등을 포함할 수 있다. 실시예들은, 적어도 하나의 프로세서, 스토리지 시스템(예를 들어, 휘발성 메모리 및/또는 하나 이상의 비-휘발성 스토리지 엘리먼트), 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스를 포함하는 프로그램가능한 시스템 상에서 실행할 소프트웨어로서 구현될 수 있다.
임의의 적합한 동작 환경 및 프로그래밍 언어(또는 동작 환경들과 프로그래밍 언어들의 조합)가 본 명세서에 설명되는 소프트웨어 컴포넌트들을 구현하기 위해 사용될 수 있다. 예를 들어, 프로그램 코드는 하이-레벨 프로시저형 또는 객체 지향 프로그래밍 언어로, 또는 어셈블리 또는 머신 언어로 구현될 수 있다. 본 명세서에 설명되는 메커니즘들이 임의의 특정 프로그래밍 언어로 제한되는 것은 아니다. 임의의 경우에, 이러한 언어는 컴파일형 또는 해석형 언어일 수 있다.
데이터를 포함하는 그리고 다른 컴포넌트가 해당 데이터를 획득하는 것을 허용하는 매체는 머신-액세스가능 매체 또는 머신-판독가능 매체라고 지칭될 수 있다. 따라서, 실시예들은 본 명세서에 설명되는 동작들의 일부 또는 전부를 수행하기 위한 명령어들을 포함하는 머신-판독가능 매체를 포함할 수 있다. 이러한 매체는 장치, 특히 프로그램 제품이라고 일반적으로 지칭될 수 있다. 하나의 실시예에서, 다수의 컴포넌트들에 대한 소프트웨어가 하나의 머신-판독가능 매체에 저장된다. 다른 실시예들에서, 2개 이상의 머신-판독가능 매체가 하나 이상의 컴포넌트에 대한 소프트웨어를 저장하기 위해 사용될 수 있다. 예를 들어, 하나의 컴포넌트에 대한 명령어들이 하나의 매체에 저장될 수 있고, 다른 컴포넌트에 대한 명령어들이 다른 매체에 저장될 수 있다. 또는 하나의 컴포넌트에 대한 명령어들의 일부가 하나의 매체에 저장될 수 있고, 해당 컴포넌트에 대한 명령어들(마찬가지로 다른 컴포넌트들에 대한 명령어들)의 나머지가 하나 이상의 다른 매체에 저장될 수 있다. 유사하게, 하나의 실시예에서 특정 디바이스 상에 존재하는 것으로 위에 설명된 소프트웨어는, 다른 실시예들에서, 하나 이상의 다른 디바이스 상에 존재할 수 있다. 예를 들어, 분산 환경에서, 일부 소프트웨어는 국부적으로 저장될 수 있고, 일부는 원격으로 저장될 수 있다. 유사하게, 하나의 실시예에서 하나의 특정 디바이스 상에서 수행되는 것으로서 위에 설명된 동작들은, 다른 실시예들에서, 하나 이상의 다른 디바이스에 의해 수행될 수 있다.
다른 실시예들은 데이터로 구현될 수 있고, 적어도 하나의 머신에 의해 사용되면, 적어도 하나의 머신으로 하여금 본 개시내용에 따른 하나 이상의 동작을 수행하기 위해 적어도 하나의 집적 회로를 제조하게 하는, 비-일시적 스토리지 매체 상에 저장될 수 있다. 또 다른 실시예들은, SoC 또는 다른 프로세서로 제조될 때, 본 개시내용에 따른 하나 이상의 동작을 수행하도록 SoC 또는 다른 프로세서를 구성하는 정보를 포함하는 컴퓨터 판독가능 스토리지 매체에서 구현될 수 있다. 적어도 하나의 실시예의 하나 이상의 양태는, 프로세서에서의 다양한 로직 유닛들을 표현내고, 머신에 의해 판독될 때, 머신으로 하여금 본 명세서에 설명되는 기법들을 수행하기 위한 로직 유닛들을 제조하게 하는, 머신-판독가능 매체 상에 저장되는 대표적인 명령어들에 의해 구현될 수 있다. 다양한 로직 유닛들을 표현하는 명령어들은 "IP 코어들("IP cores)"이라고 지칭될 수 있고, 이들은 유형의 머신-판독가능 매체 상에 저장될 수 있고, 로직 유닛들 또는 프로세서를 실제로 만드는 제조 머신들에 로딩하기 위해 다양한 고객들 또는 제조 설비들에 공급될 수 있다. 적어도 하나의 실시예의 하나 이상의 양태는 본 명세서에 설명되는 구조들, 회로들, 장치들, 프로세서들 및/또는 시스템 특징들을 정의하는 명령어들 또는 설계 데이터를 포함하는 머신-판독가능 매체를 포함할 수 있다. 예를 들어, 설계 데이터는 HDL(hardware description language)로 포맷될 수 있다.
일부 실시예들에 대한 머신-판독가능 매체는, 제한없이, 자기 디스크들, 광학 디스크들, 광자기 디스크들, 동적 RAM(random access memory), 정적 RAM, ROM(read-only memory), SSD들(solid state drives), PCM(phase change memory) 등과 같은 유형의 비-일시적 스토리지 컴포넌트들 뿐만 아니라, 프로세서들, 제어기들, 및 데이터 스토리지 설비들을 포함하는 다른 컴포넌트들을 포함할 수 있다. 본 개시내용의 목적들을 위해, "ROM"이라는 용어는 EPROM(erasable programmable ROM), EEPROM(electrically erasable programmable ROM), 플래시 ROM, 플래시 메모리 등과 같은 비휘발성 메모리 디바이스들을 지칭하기 위해 일반적으로 사용될 수 있다.
또한, 본 명세서에 묘사되는 하드웨어 및 소프트웨어 컴포넌트들은, 각각이 다른 것들과는 실질적으로 독립적으로 설계, 구성, 또는 업데이트될 수 있도록, 알맞게 자체 완비된(reasonably self-contained) 기능 엘리먼트를 표현한다는 점이 또한 이해되야 한다. 대안적인 실시예들에서, 컴포넌트들은 본 명세서에 설명되고 예시되는 기능성을 제공하기 위한 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 조합들로서 구현될 수 있다. 일부 실시예들에서, 설명된 동작들을 구현하기 위한 제어 로직의 일부 또는 전부는 (예를 들어, 집적 회로 칩에서의 마이크로코드로서, PGA(programmable gate array)로서, ASIC(application-specific integrated circuit)로서 등) 하드웨어 로직으로 구현될 수 있다. 또한, "회로(circuit 및 circuitry)"와 같은 용어들은 본 명세서에서 교환가능하게 사용될 수 있다. 이러한 용어들 및 "로직(logic)"과 같은 용어들은 아날로그 회로, 디지털 회로, 하드-와이어드 회로, 프로그램가능 회로, 프로세서 회로, 마이크로제어기 회로, 하드웨어 로직 회로, 상태 머신 회로, 임의의 다른 타입의 하드웨어 컴포넌트, 또는 하드웨어 컴포넌트들의 임의의 적합한 조합을 지칭하기 위해 사용될 수 있다.
추가적으로, 본 교시내용은 많은 상이한 종류의 데이터 처리 시스템에서 장점을 취하기 위해 사용될 수 있다. 이러한 데이터 처리 시스템은, 제한없이, 가속기들, SoC들(systems on a chip), 웨어러블 디바이스들, 핸드헬드 디바이스들, 스마트폰들, 전화들, 오디오 디바이스들, 비디오 디바이스들, 오디오/비디오 디바이스들(예를 들어, 텔레비전들 및 셋-톱 박스들)과 같은 엔터테인먼트 디바이스들, 차량 처리 시스템들, PDA들(personal digital assistants), 태블릿 컴퓨터들, 랩톱 컴퓨터들, 휴대용 컴퓨터들, PC들(personal computers), 워크스테이션들, 서버들, 클라이언트-서버 시스템들, 분산형 컴퓨팅 시스템들, 수퍼컴퓨터들, 고-성능 컴퓨팅 시스템들, 컴퓨팅 클러스터들, 메인프레임 컴퓨터들, 미니-컴퓨터들, 및 정보를 처리 또는 송신하기 위한 다른 디바이스들을 포함할 수 있다. 따라서, 달리 명시적으로 명시되거나 또는 문맥에 의해 요구되지 않는 한, 임의의 특정 타입의 데이터 처리 시스템(예를 들어, PC)에 대한 참조는, 마찬가지로, 다른 타입들의 데이터 처리 시스템들을 포함하는 것으로서 이해되어야 한다. 데이터 처리 시스템은 장치라고 또한 지칭될 수 있다. 데이터 처리 시스템의 컴포넌트들은 장치라고 또한 지칭될 수 있다.
또한, 명확히 달리 명시되지 않는 한, 서로 연결되는 것, 또는 서로 통신하는 것, 또는 서로 응답하는 것 등으로서 설명되는 컴포넌트들이 서로 연속적으로 통신할 필요가 없고 서로 직접 연결될 필요가 없다. 마찬가지로, 하나의 컴포넌트가 데이터를 다른 컴포넌트로부터 수신하는 것 또는 또다른 컴포넌트에 전송하는 것으로서 설명될 때, 달리 명확하게 명시되지 않는 한, 해당 데이터는 하나 이상의 중간 컴포넌트를 통해 전송되거나 또는 수신될 수 있다. 또한, 데이터 처리 시스템의 일부 컴포넌트들은 버스와 통신하기 위한 인터페이스들(예를 들어, 커넥터)을 갖는 어댑터 카드들로서 구현될 수 있다. 대안적으로, 디바이스들 또는 컴포넌트들은 프로그램가능 또는 비-프로그램가능 로직 디바이스들 또는 어레이들, ASIC들, 내장 컴퓨터들, 스마트 카드들 등과 같은 컴포넌트들을 사용하여 내장 제어기들로서 구현될 수 있다. 본 개시내용의 목적들을 위해, "버스(bus)"이라는 용어는 2개보다 많은 디바이스들에 의해 공유될 수 있는 경로들, 뿐만 아니라 포인트-투-포인트 경로들을 포함한다. 유사하게, "라인(line)", "핀(pin)" 등과 같은 용어들은 와이어, 와이어들의 세트, 또는 임의의 다른 적합한 전도체 또는 전도체들의 세트를 지칭하는 것으로서 이해되어야 한다. 예를 들어, 버스는 하나 이상의 직렬 링크를 포함할 수 있고, 직렬 링크는 하나 이상의 레인을 포함할 수 있고, 레인은 하나 이상의 차동 시그널링 쌍으로 구성될 수 있고, 이러한 전도체들 운반하고 있는 전기의 변화하는 특성들은 라인 상의 신호들이라고 지칭될 수 있다. 또한, 본 개시내용의 목적을 위해, "프로세서(processor)"이라는 용어는 소프트웨어를 실행할 수 있는 하드웨어 컴포넌트를 나타낸다. 예를 들어, 프로세서는 CPU(central processing unit)로서, 처리 코어로서, 또는 임의의 다른 적합한 타입의 처리 엘리먼트로서 구현될 수 있다. CPU는 하나 이상의 처리 코어를 포함할 수 있고, 디바이스는 하나 이상의 CPU를 포함할 수 있다.
또한, 하나 이상의 예시적인 프로세스가 특정 시퀀스로 수행되는 특정 동작들과 관련하여 설명되었더라도, 본 발명의 다수의 대안적인 실시예들을 유도하기 위해 다수의 수정이 해당 프로세스들에 적용될 수 있다. 예를 들어, 대안적인 실시예들은 개시된 동작들 전부보다 더 적은 동작들을 사용하는 프로세스들, 추가적인 동작들을 사용하는 프로세스, 및 본 명세서에 개시되는 개별 동작들이 조합되고, 세부분할되고, 재배열되거나, 또는 그렇지 않으면 변경되는 프로세스들을 포함할 수 있다.
실시예들은 다음의 예들을 포함한다:
예 A1은 스레드들을 동적으로 그룹화하기 위한 기술을 갖는 장치이다. 이러한 장치는 비-일시적 머신-판독가능 매체, 및, 다수의 코어들 및 코어 당 다수의 LP들을 포함하는 프로세서를 갖는 데이터 처리 시스템에 의해 실행될 때, 데이터 처리 시스템이 동작들을 수행하는 것을 가능하게 하는 머신-판독가능 매체에서의 명령어들을 포함하고, 이러한 동작들은, (a) 새로운 낮은-우선순위 스레드를 수신하기 위해 프로세서에서의 LP들 중 하나를 선택하는 동작; 및 (b) 새로운 낮은-우선순위 스레드를 선택된 LP에 배정하는 동작을 포함한다. 또한, 새로운 낮은-우선순위 스레드를 수신하기 위해 프로세서에서의 LP들 중 하나를 선택하는 동작은, (1) 프로세서에서의 제1 코어가 다수의 유휴 LP들을 가질 때, 프로세서에서의 제2 코어가 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는지를 자동으로 결정하는 동작; 및 (2) 제2 코어가 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는다고 결정하는 것에 응답하여, 새로운 낮은-우선순위 스레드를 수신하기 위해 제2 코어에서의 유휴 LP를 자동으로 선택하는 동작을 포함한다.
예 A2는 예 A1에 따른 장치이며, 명령어들은 실행될 때, 데이터 처리 시스템이 추가 동작들을 수행하는 것을 가능하게 하고, 이러한 동작들은, (a) 새로운 낮은-우선순위 스레드를 수신하기 위해 제2 코어에서의 유휴 LP를 자동으로 선택한 후에, 제2 코어에서의 유휴 LP에 대한 EPP 레지스터를 에너지 효율에 대한 선호를 표시하는 값으로 자동으로 설정하는 동작; 및 (b) 제2 코어에서의 유휴 LP에 대한 EPP 레지스터를 에너지 효율에 대한 선호를 표시하는 값으로 설정한 후에, 제2 코어를 저 전력 상태에서 실행하는 동작을 포함한다.
예 A3은 예 A1에 따른 장치이며, 명령어들은, 실행될 때, 데이터 처리 시스템이 추가 동작들을 수행하는 것을 가능하게 하고, 이러한 동작들은, 새로운 낮은-우선순위 스레드를 제2 코어에서의 유휴 LP에 자동으로 배정한 후에, (a) 새로운 높은-우선순위 스레드를 제1 코어에서의 유휴 LP에 배정하는 동작, (b) 제1 코어에서의 유휴 LP에 대한 EPP 레지스터를 성능에 대한 선호를 표시하는 값으로 설정하는 동작, 및 (c) 제1 코어를 고 전력 상태에서 실행하는 동작을 포함한다. 예 A3은 예 A2의 특징들을 또한 포함할 수 있다.
예 A4는 예 A1에 따른 장치이며, 새로운 낮은-우선순위 스레드를 수신하기 위해 프로세서에서의 LP들 중 하나를 선택하는 동작은 추가로, (1) 프로세서에서의 코어들 중 어느 것도 자신의 LP들 전부를 유휴로 갖지 않을 때, 코어들 중 임의의 것이 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는지를 자동으로 결정하는 동작; (2) 선택 코어가 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는다고 결정하는 것에 응답하여, 자동으로 (i) 새로운 낮은-우선순위 스레드를 선택 코어에서의 유휴 LP에 배정하는 동작 및 (ii) 선택 코어에서의 유휴 LP에 대한 EPP 레지스터를 에너지 효율에 대한 선호를 표시하는 값으로 설정하는 동작; 및 (3) 새로운 낮은-우선순위 스레드를 선택 코어에서의 유휴 LP에 자동으로 배정한 후에, 선택 코어를 저-전력 상태에서 실행하는 동작을 포함한다. 예 A4는 예들 A2-A3 중 어느 하나 이상의 특징을 또한 포함할 수 있다.
예 A5는 예 A4에 따른 장치이며, 선택 코어가 제1 코어를 포함할 때, 명령어들은, 실행될 때, 데이터 처리 시스템이 추가 동작들을 수행하는 것을 가능하게 하며, 이러한 동작들은, 새로운 낮은-우선순위 스레드를 제1 코어에서의 유휴 LP에 자동으로 배정한 후에, (a) 새로운 높은-우선순위 스레드를 제2 코어에서의 유휴 LP에 배정하는 동작, (b) 제2 코어에서의 유휴 LP에 대한 EPP 레지스터를 성능에 대한 선호를 표시하는 값으로 설정하는 동작, 및 (c) 제2 코어를 고 전력 상태에서 실행하는 동작을 포함한다.
예 A6은 예 A1에 따른 장치이며, 새로운 낮은-우선순위 스레드를 수신하기 위해 프로세서에서의 LP들 중 하나를 선택하는 동작은 추가로, (1) LP들 중 어느 것도 유휴가 아닐 때, 코어들 중 임의의 것이 낮은-우선순위 스레드들을 실행하는 자신의 LP들 전부를 갖는지를 자동으로 결정하는 동작; 및 (2) 선택 코어가 낮은-우선순위 스레드들을 실행하는 자신의 LP들 전부를 갖는다고 결정하는 것에 응답하여, 새로운 낮은-우선순위 스레드를 선택 코어에서의 LP들 중 하나에 자동으로 배정하는 동작을 포함한다. 예 A6은 예들 A2-A5 중 어느 하나 이상의 특징을 또한 포함할 수 있다.
예 A7은 예 A6에 따른 장치이며, 명령어들은, 실행될 때, 데이터 처리 시스템이 추가 동작들을 수행하는 것을 가능하게 하며, 이러한 동작들은, 새로운 낮은-우선순위 스레드를 선택 코어에서의 LP들 중 하나에 자동으로 배정한 후에, 선택 코어를 저-전력 상태에서 실행하는 동작을 포함한다.
예 A8은 예 A1에 따른 장치이며, 명령어들은, 실행될 때, 데이터 처리 시스템이 추가 동작들을 수행하는 것을 가능하게 하며, 이러한 동작들은, 다수의 높은-우선순위 스레드들이 제1 코어 상에서 실행되고 있을 때, 제2 코어가 유휴에 진입하는 것에 응답하여, (a) 높은-우선순위 스레드들 중 하나를 제1 코어로부터 유휴에 진입한 제2 코어에서의 LP로 전송하는 동작 및 (b) 해당 LP에 대한 EPP 레지스터를 성능에 대한 선호를 표시하는 값으로 설정하는 동작을 포함한다.
예 B1은 스레드들을 동적으로 그룹화하기 위한 기술을 갖는 데이터 처리 시스템이다. 이러한 데이터 처리 시스템은 다수의 LP들을 포함하는 제1 코어, 다수의 LP들을 포함하는 제2 코어, 제1 및 제2 코어들에 응답하는 머신-판독가능 매체, 및 머신-판독가능 매체에 적어도 부분적으로 저장되는 OS를 포함한다. 이러한 OS는, 데이터 처리 시스템에서 실행될 때, 데이터 처리 시스템이 동작들을 수행하는 것을 가능하게 하고, 이러한 동작들은, 새로운 낮은-우선순위 스레드를 수신하기 위해 프로세서에서의 LP들 중 하나를 선택하는 동작, 및 새로운 낮은-우선순위 스레드를 선택된 LP에 배정하는 동작을 포함한다. 새로운 낮은-우선순위 스레드를 수신하기 위해 프로세서에서의 LP들 중 하나를 선택하는 동작은, (1) 프로세서에서의 제1 코어가 다수의 유휴 LP들을 가질 때, 프로세서에서의 제2 코어가 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는지를 자동으로 결정하는 동작; 및 (2) 제2 코어가 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는다고 결정하는 것에 응답하여, 새로운 낮은-우선순위 스레드를 수신하기 위해 제2 코어에서의 유휴 LP를 자동으로 선택하는 동작을 포함한다.
예 B2는 예 B1에 따른 데이터 처리 시스템이고, 각각의 코어의 각각의 LP에 대한 EPP 레지스터를 추가로 포함한다. 또한, OS는, 실행될 때, 데이터 처리 시스템이 추가 동작들을 수행하는 것을 가능하게 하고, 이러한 동작들은, (1) 새로운 낮은-우선순위 스레드를 수신하기 위해 제2 코어에서의 유휴 LP를 자동으로 선택한 후에, 제2 코어에서의 유휴 LP에 대한 EPP 레지스터를 에너지 효율에 대한 선호를 표시하는 값으로 자동으로 설정하는 동작; 및 (2) 제2 코어에서의 유휴 LP에 대한 EPP 레지스터를 에너지 효율에 대한 선호를 표시하는 값으로 설정한 후에, 제2 코어를 저 전력 상태에서 실행하는 동작을 포함한다.
예 B3은 예 B1에 따른 데이터 처리 시스템이고, 각각의 코어의 각각의 LP에 대한 EPP 레지스터를 추가로 포함한다. 또한, OS는, 실행될 때, 데이터 처리 시스템이 추가 동작들을 수행하는 것을 가능하게 하고, 이러한 동작들은, 새로운 낮은-우선순위 스레드를 제2 코어에서의 유휴 LP에 자동으로 배정한 후에, (a) 새로운 높은-우선순위 스레드를 제1 코어에서의 유휴 LP에 배정하는 동작, (b) 제1 코어에서의 유휴 LP에 대한 EPP 레지스터를 성능에 대한 선호를 표시하는 값으로 설정하는 동작, 및 (c) 제1 코어를 고 전력 상태에서 실행하는 동작을 포함한다. 예 B3은 예 B2의 특징을 또한 포함할 수 있다.
예 B4는 예 B1에 따른 데이터 처리 시스템이고, 각각의 코어의 각각의 LP에 대한 EPP 레지스터를 추가로 포함한다. 또한, 새로운 낮은-우선순위 스레드를 수신하기 위해 프로세서에서의 LP들 중 하나를 선택하는 동작은 추가로, (1) 코어들 중 어느 것도 자신의 LP들 전부를 유휴로 갖지 않을 때, 코어들 중 임의의 것이 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는지를 자동으로 결정하는 동작; (2) 선택 코어가 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는다고 결정하는 것에 응답하여, 자동으로 (i) 새로운 낮은-우선순위 스레드를 선택 코어에서의 유휴 LP에 배정하는 동작 및 (ii) 선택 코어에서의 유휴 LP에 대한 EPP 레지스터를 에너지 효율에 대한 선호를 표시하는 값으로 설정하는 동작; 및 (3) 새로운 낮은-우선순위 스레드를 선택 코어에서의 유휴 LP에 자동으로 배정한 후에, 선택 코어를 저-전력 상태에서 실행하는 동작을 포함한다. 예 B4는 예들 B2-B3 중 어느 하나 이상의 특징을 또한 포함할 수 있다.
예 B5는 예 B4에 따른 데이터 처리 시스템이며, 선택 코어가 제1 코어를 포함할 때, OS는, 실행될 때, 데이터 처리 시스템이 추가 동작들을 수행하는 것을 가능하게 하며, 이러한 동작들은, 새로운 낮은-우선순위 스레드를 제1 코어에서의 유휴 LP에 자동으로 배정한 후에, (a) 새로운 높은-우선순위 스레드를 제2 코어에서의 유휴 LP에 배정하는 동작, (b) 제2 코어에서의 유휴 LP에 대한 EPP 레지스터를 성능에 대한 선호를 표시하는 값으로 설정하는 동작, 및 (c) 제2 코어를 고 전력 상태에서 실행하는 동작을 포함한다.
예 B6은 예 B1에 따른 데이터 처리 시스템이고, 새로운 낮은-우선순위 스레드를 수신하기 위해 프로세서에서의 LP들 중 하나를 선택하는 동작은 추가로, (1) LP들 중 어느 것도 유휴가 아닐 때, 코어들 중 임의의 것이 낮은-우선순위 스레드들을 실행하는 자신의 LP들 전부를 갖는지를 자동으로 결정하는 동작; 및 (2) 선택 코어가 낮은-우선순위 스레드들을 실행하는 자신의 LP들 전부를 갖는다고 결정하는 것에 응답하여, 새로운 낮은-우선순위 스레드를 선택 코어에서의 LP들 중 하나에 자동으로 배정하는 동작을 포함한다. 예 B6은 예들 B2-B5 중 어느 하나 이상의 특징을 또한 포함할 수 있다.
예 B7은 예 B6에 따른 데이터 처리 시스템이며, 선택 코어가 제1 코어를 포함할 때, OS는, 실행될 때, 데이터 처리 시스템이 추가 동작들을 수행하는 것을 가능하게 하며, 이러한 동작들은, 새로운 낮은-우선순위 스레드를 선택 코어에서의 LP들 중 하나에 자동으로 배정한 후에, 선택 코어를 저-전력 상태에서 실행하는 동작을 포함한다.
예 B8은 예 B1에 따른 데이터 처리 시스템이고, 각각의 코어의 각각의 LP에 대한 EPP 레지스터를 추가로 포함한다. 또한, OS는, 실행될 때, 데이터 처리 시스템이 추가 동작들을 수행하는 것을 가능하게 하며, 이러한 동작들은, 다수의 높은-우선순위 스레드들이 제1 코어 상에서 실행되고 있을 때, 제2 코어가 유휴에 진입하는 것에 응답하여, (a) 높은-우선순위 스레드들 중 하나를 제1 코어로부터 유휴에 진입한 제2 코어에서의 LP로 전송하는 동작 및 (b) 해당 LP에 대한 EPP 레지스터를 성능에 대한 선호를 표시하는 값으로 설정하는 동작을 포함한다. 예 B8은 예들 B2-B7 중 어느 하나 이상의 특징을 또한 포함할 수 있다.
예 B9는 예 B1에 따른 데이터 처리 시스템이고, (1) CPU, (2) 각각의 코어의 각각의 LP에 대한 EPP 레지스터, 및 (3) LPCS(low-priority-core-set) 레지스터를 추가로 포함한다. 또한, 제1 및 제2 코어들, EPP 레지스터들, 및 LPCS 레지스터는 CPU에 존재한다. 또한, OS는, 실행될 때, LPCS 레지스터에 데이터를 기입하여 어느 코어들이 어떠한 높은-우선순위 스레드들도 실행하지 않고 있는지를 표시한다. 또한, CPU는, 전원이 켜질 때, 데이터 처리 시스템이 동작들을 수행하는 것을 가능하게 하고, 이러한 동작들은, (1) LPCS 레지스터에서의 데이터에 기초하여, 코어들 중 임의의 것이 어떠한 높은-우선순위 스레드들도 실행하지 않고 있는지를 자동으로 결정하는 동작; 및 (2) 제1 코어가 어떠한 높은-우선순위 스레드들도 실행하고 있지 않다고 결정하는 것에 응답하여, 하드웨어 리소스들을 제1 코어로부터 제2 코어로 자동으로 전용시키는 동작을 포함한다. 예 B9는 예들 B2-B8 중 어느 하나 이상의 특징을 또한 포함할 수 있다.
예 B10은 예 B9에 따른 데이터 처리 시스템이고, 하드웨어 리소스들은 캐시, 메모리 대역폭, 및 링 대역폭으로 이루어지는 그룹으로부터의 적어도 하나의 리소스를 포함한다.
예 C1은 스레드들을 동적으로 그룹화하기 위한 방법이다. 이러한 방법은, 다수의 코어들 및 코어 당 다수의 LP들을 포함하는 프로세서를 갖는 데이터 처리 시스템에서, (a) 새로운 낮은-우선순위 스레드를 수신하기 위해 프로세서에서의 LP들 중 하나를 선택하는 동작, 및 (b) 새로운 낮은-우선순위 스레드를 선택된 LP에 배정하는 동작을 포함한다. 또한, 새로운 낮은-우선순위 스레드를 수신하기 위해 프로세서에서의 LP들 중 하나를 선택하는 동작은, (1) 프로세서에서의 제1 코어가 다수의 유휴 LP들을 가질 때, 프로세서에서의 제2 코어가 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는지를 자동으로 결정하는 동작; 및 (2) 제2 코어가 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는다고 결정하는 것에 응답하여, 새로운 낮은-우선순위 스레드를 수신하기 위해 제2 코어에서의 유휴 LP를 자동으로 선택하는 동작을 포함한다.
예 C2는 예 C1에 따른 방법이고, 추가로, (1) 새로운 낮은-우선순위 스레드를 수신하기 위해 제2 코어에서의 유휴 LP를 자동으로 선택한 후에, 제2 코어에서의 유휴 LP에 대한 EPP(efficiency/performance preference) 레지스터를 에너지 효율에 대한 선호를 표시하는 값으로 자동으로 설정하는 동작; 및 (2) 제2 코어에서의 유휴 LP에 대한 EPP 레지스터를 에너지 효율에 대한 선호를 표시하는 값으로 설정한 후에, 제2 코어를 저 전력 상태에서 실행하는 동작을 포함한다.
예 C3은 예 C1에 따른 방법이며, 새로운 낮은-우선순위 스레드를 수신하기 위해 프로세서에서의 LP들 중 하나를 선택하는 동작은 추가로, (1) 프로세서에서의 코어들 중 어느 것도 자신의 LP들 전부를 유휴로 갖지 않을 때, 코어들 중 임의의 것이 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는지를 자동으로 결정하는 동작; (2) 선택 코어가 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는다고 결정하는 것에 응답하여, 자동으로 (i) 새로운 낮은-우선순위 스레드를 선택 코어에서의 유휴 LP에 배정하는 동작 및 (ii) 선택 코어에서의 유휴 LP에 대한 EPP(efficiency/performance preference) 레지스터를 에너지 효율에 대한 선호를 표시하는 값으로 설정하는 동작; 및 (3) 새로운 낮은-우선순위 스레드를 선택 코어에서의 유휴 LP에 자동으로 배정한 후에, 선택 코어를 저-전력 상태에서 실행하는 동작을 포함한다.
예 C4는 예 C1에 따른 방법이며, 새로운 낮은-우선순위 스레드를 수신하기 위해 프로세서에서의 LP들 중 하나를 선택하는 동작은 추가로, (1) LP들 중 어느 것도 유휴가 아닐 때, 코어들 중 임의의 것이 낮은-우선순위 스레드들을 실행하는 자신의 LP들 전부를 갖는지를 자동으로 결정하는 동작; 및 (2) 선택 코어가 낮은-우선순위 스레드들을 실행하는 자신의 LP들 전부를 갖는다고 결정하는 것에 응답하여, 새로운 낮은-우선순위 스레드를 선택 코어에서의 LP들 중 하나에 자동으로 배정하는 동작을 포함한다.
본 명세서에 설명되는 예시적인 실시예들로부터 용이하게 유도될 수 있는 광범위한 유용한 치환들의 관점에서, 이러한 상세한 설명은 단지 예시적인 것으로 의도되며, 커버리지의 범위를 제한하는 것으로서 해석되지 않아야 한다.

Claims (23)

  1. 스레드들을 동적으로 그룹화하기 위한 기술을 갖는 장치로서, 상기 장치는,
    비-일시적 머신-판독가능 매체; 및
    다수의 코어들 및 코어 당 다수의 LP들(logical processors)을 포함하는 프로세서를 갖는 데이터 처리 시스템에 의해 실행될 때, 상기 데이터 처리 시스템이 동작들을 수행하는 것을 가능하게 하는 상기 머신-판독가능 매체에서의 명령어들을 포함하고, 상기 동작들은,
    새로운 낮은-우선순위 스레드를 수신하기 위해 상기 프로세서에서의 LP들 중 하나를 선택하는 동작; 및
    상기 새로운 낮은-우선순위 스레드를 상기 선택된 LP에 배정하는 동작을 포함하고;
    상기 새로운 낮은-우선순위 스레드를 수신하기 위해 상기 프로세서에서의 LP들 중 하나를 선택하는 동작은,
    상기 프로세서에서의 제1 코어가 다수의 유휴 LP들을 가질 때, 상기 프로세서에서의 제2 코어가 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는지를 자동으로 결정하는 동작; 및
    상기 제2 코어가 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는다고 결정하는 것에 응답하여, 상기 새로운 낮은-우선순위 스레드를 수신하기 위해 상기 제2 코어에서의 유휴 LP를 자동으로 선택하는 동작을 포함하는 장치.
  2. 제1항에 있어서, 상기 명령어들은, 실행될 때, 상기 데이터 처리 시스템이 추가 동작들을 수행하는 것을 가능하게 하고, 상기 추가 동작들은,
    상기 새로운 낮은-우선순위 스레드를 수신하기 위해 상기 제2 코어에서의 유휴 LP를 자동으로 선택한 후에, 상기 제2 코어에서의 유휴 LP에 대한 EPP(efficiency/performance preference) 레지스터를 에너지 효율에 대한 선호를 표시하는 값으로 자동으로 설정하는 동작; 및
    상기 제2 코어에서의 유휴 LP에 대한 EPP 레지스터를 에너지 효율에 대한 선호를 표시하는 값으로 설정한 후에, 상기 제2 코어를 저 전력 상태에서 실행하는 동작을 포함하는 장치.
  3. 제1항에 있어서, 상기 명령어들은, 실행될 때, 상기 데이터 처리 시스템이 추가 동작들을 수행하는 것을 가능하게 하고, 상기 추가 동작들은,
    상기 새로운 낮은-우선순위 스레드를 상기 제2 코어에서의 유휴 LP에 자동으로 배정한 후에, (a) 새로운 높은-우선순위 스레드를 상기 제1 코어에서의 유휴 LP에 배정하는 동작, (b) 상기 제1 코어에서의 유휴 LP에 대한 EPP(efficiency/performance preference) 레지스터를 성능에 대한 선호를 표시하는 값으로 설정하는 동작, 및 (c) 상기 제1 코어를 고 전력 상태에서 실행하는 동작을 포함하는 장치.
  4. 제1항에 있어서, 상기 새로운 낮은-우선순위 스레드를 수신하기 위해 상기 프로세서에서의 LP들 중 하나를 선택하는 동작은 추가로,
    상기 프로세서에서의 코어들 중 어느 것도 자신의 LP들 전부를 유휴로 갖지 않을 때, 상기 코어들 중 임의의 것이 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는지를 자동으로 결정하는 동작;
    선택 코어가 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는다고 결정하는 것에 응답하여, 자동으로 (i) 상기 새로운 낮은-우선순위 스레드를 상기 선택 코어에서의 유휴 LP에 배정하는 동작 및 (ii) 상기 선택 코어에서의 유휴 LP에 대한 EPP(efficiency/performance preference) 레지스터를 에너지 효율에 대한 선호를 표시하는 값으로 설정하는 동작; 및
    상기 새로운 낮은-우선순위 스레드를 상기 선택 코어에서의 유휴 LP에 자동으로 배정한 후에, 상기 선택 코어를 저-전력 상태에서 실행하는 동작을 포함하는 장치.
  5. 제4항에 있어서, 상기 선택 코어가 상기 제1 코어를 포함할 때, 상기 명령어들은, 실행될 때, 상기 데이터 처리 시스템이 추가 동작들을 수행하는 것을 가능하게 하고, 상기 추가 동작들은,
    상기 새로운 낮은-우선순위 스레드를 상기 제1 코어에서의 유휴 LP에 자동으로 배정한 후에, (a) 새로운 높은-우선순위 스레드를 상기 제2 코어에서의 유휴 LP에 배정하는 동작, (b) 상기 제2 코어에서의 유휴 LP에 대한 EPP 레지스터를 성능에 대한 선호를 표시하는 값으로 설정하는 동작, 및 (c) 상기 제2 코어를 고 전력 상태에서 실행하는 동작을 포함하는 장치.
  6. 제1항에 있어서, 상기 새로운 낮은-우선순위 스레드를 수신하기 위해 상기 프로세서에서의 LP들 중 하나를 선택하는 동작은 추가로,
    상기 LP들 중 어느 것도 유휴가 아닐 때, 상기 코어들 중 임의의 것이 낮은-우선순위 스레드들을 실행하는 자신의 LP들 전부를 갖는지를 자동으로 결정하는 동작; 및
    선택 코어가 낮은-우선순위 스레드들을 실행하는 자신의 LP들 전부를 갖는다고 결정하는 것에 응답하여, 상기 새로운 낮은-우선순위 스레드를 상기 선택 코어에서의 LP들 중 하나에 자동으로 배정하는 동작을 포함하는 장치.
  7. 제6항에 있어서, 상기 명령어들은, 실행될 때, 상기 데이터 처리 시스템이 추가 동작들을 수행하는 것을 가능하게 하고, 상기 추가 동작들은,
    상기 새로운 낮은-우선순위 스레드를 상기 선택 코어에서의 LP들 중 하나에 자동으로 배정한 후에, 상기 선택 코어를 저-전력 상태에서 실행하는 동작을 포함하는 장치.
  8. 제1항에 있어서, 상기 명령어들은, 실행될 때, 상기 데이터 처리 시스템이 추가 동작들을 수행하는 것을 가능하게 하고, 상기 추가 동작들은,
    다수의 높은-우선순위 스레드들이 상기 제1 코어 상에서 실행되고 있을 때, 상기 제2 코어가 유휴에 진입하는 것에 응답하여, (a) 상기 높은-우선순위 스레드들 중 하나를 상기 제1 코어로부터 유휴에 진입한 상기 제2 코어에서의 LP로 전송하는 동작 및 (b) 해당 LP에 대한 EPP(efficiency/performance preference) 레지스터를 성능에 대한 선호를 표시하는 값으로 설정하는 동작을 포함하는 장치.
  9. 스레드들을 동적으로 그룹화하기 위한 기술을 갖는 데이터 처리 시스템으로서, 상기 데이터 처리 시스템은,
    다수의 LP들(logical processors)을 포함하는 제1 코어;
    다수의 LP들을 포함하는 제2 코어;
    상기 제1 및 제2 코어들에 응답하는 머신-판독가능 매체; 및
    상기 머신-판독가능 매체에 적어도 부분적으로 저장되는 OS(operating system)를 포함하고, 상기 OS는, 상기 데이터 처리 시스템에서 실행될 때, 상기 데이터 처리 시스템이 동작들을 수행하는 것을 가능하게 하고, 상기 동작들은,
    새로운 낮은-우선순위 스레드를 수신하기 위해 상기 프로세서에서의 LP들 중 하나를 선택하는 동작; 및
    상기 새로운 낮은-우선순위 스레드를 상기 선택된 LP에 배정하는 동작을 포함하고;
    상기 새로운 낮은-우선순위 스레드를 수신하기 위해 상기 프로세서에서의 LP들 중 하나를 선택하는 동작은,
    상기 제1 코어가 다수의 유휴 LP들을 가질 때, 상기 제2 코어가 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는지를 자동으로 결정하는 동작; 및
    상기 제2 코어가 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는다고 결정하는 것에 응답하여, 상기 새로운 낮은-우선순위 스레드를 수신하기 위해 상기 제2 코어에서의 유휴 LP를 자동으로 선택하는 동작을 포함하는 데이터 처리 시스템.
  10. 제9항에 있어서, 추가로,
    각각의 코어의 각각의 LP에 대한 EPP(efficiency/performance preference) 레지스터를 포함하고;
    상기 OS는, 실행될 때, 상기 데이터 처리 시스템이 추가 동작들을 수행하는 것을 가능하게 하고, 상기 추가 동작들은,
    상기 새로운 낮은-우선순위 스레드를 수신하기 위해 상기 제2 코어에서의 유휴 LP를 자동으로 선택한 후에, 상기 제2 코어에서의 유휴 LP에 대한 EPP 레지스터를 에너지 효율에 대한 선호를 표시하는 값으로 자동으로 설정하는 동작; 및
    상기 제2 코어에서의 유휴 LP에 대한 EPP 레지스터를 에너지 효율에 대한 선호를 표시하는 값으로 설정한 후에, 상기 제2 코어를 저 전력 상태에서 실행하는 동작을 포함하는 데이터 처리 시스템.
  11. 제9항에 있어서, 추가로,
    각각의 코어의 각각의 LP에 대한 EPP(efficiency/performance preference) 레지스터를 포함하고;
    상기 OS는, 실행될 때, 상기 데이터 처리 시스템이 추가 동작들을 수행하는 것을 가능하게 하고, 상기 추가 동작들은,
    상기 새로운 낮은-우선순위 스레드를 상기 제2 코어에서의 유휴 LP에 자동으로 배정한 후에, (a) 새로운 높은-우선순위 스레드를 상기 제1 코어에서의 유휴 LP에 배정하는 동작, (b) 상기 제1 코어에서의 유휴 LP에 대한 EPP 레지스터를 성능에 대한 선호를 표시하는 값으로 설정하는 동작, 및 (c) 상기 제1 코어를 고 전력 상태에서 실행하는 동작을 포함하는 데이터 처리 시스템.
  12. 제9항에 있어서, 추가로,
    각각의 코어의 각각의 LP에 대한 EPP(efficiency/performance preference) 레지스터를 포함하고;
    상기 새로운 낮은-우선순위 스레드를 수신하기 위해 상기 프로세서에서의 LP들 중 하나를 선택하는 동작은 추가로,
    상기 코어들 중 어느 것도 자신의 LP들 전부를 유휴로 갖지 않을 때, 상기 코어들 중 임의의 것이 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는지를 자동으로 결정하는 동작;
    선택 코어가 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는다고 결정하는 것에 응답하여, 자동으로 (i) 상기 새로운 낮은-우선순위 스레드를 상기 선택 코어에서의 유휴 LP에 배정하는 동작 및 (ii) 상기 선택 코어에서의 유휴 LP에 대한 EPP 레지스터를 에너지 효율에 대한 선호를 표시하는 값으로 설정하는 동작; 및
    상기 새로운 낮은-우선순위 스레드를 상기 선택 코어에서의 유휴 LP에 자동으로 배정한 후에, 상기 선택 코어를 저-전력 상태에서 실행하는 동작을 포함하는 데이터 처리 시스템.
  13. 제12항에 있어서, 상기 선택 코어가 상기 제1 코어를 포함할 때, 상기 OS는, 실행될 때, 상기 데이터 처리 시스템이 추가 동작들을 수행하는 것을 가능하게 하고, 상기 추가 동작들은,
    상기 새로운 낮은-우선순위 스레드를 상기 제1 코어에서의 유휴 LP에 자동으로 배정한 후에, (a) 새로운 높은-우선순위 스레드를 상기 제2 코어에서의 유휴 LP에 배정하는 동작, (b) 상기 제2 코어에서의 유휴 LP에 대한 EPP 레지스터를 성능에 대한 선호를 표시하는 값으로 설정하는 동작, 및 (c) 상기 제2 코어를 고 전력 상태에서 실행하는 동작을 포함하는 데이터 처리 시스템.
  14. 제9항에 있어서, 상기 새로운 낮은-우선순위 스레드를 수신하기 위해 상기 프로세서에서의 LP들 중 하나를 선택하는 동작은 추가로,
    상기 LP들 중 어느 것도 유휴가 아닐 때, 상기 코어들 중 임의의 것이 낮은-우선순위 스레드들을 실행하는 자신의 LP들 전부를 갖는지를 자동으로 결정하는 동작; 및
    선택 코어가 낮은-우선순위 스레드들을 실행하는 자신의 LP들 전부를 갖는다고 결정하는 것에 응답하여, 상기 새로운 낮은-우선순위 스레드를 상기 선택 코어에서의 LP들 중 하나에 자동으로 배정하는 동작을 포함하는 데이터 처리 시스템.
  15. 제14항에 있어서, 상기 선택 코어가 상기 제1 코어를 포함할 때, 상기 OS는, 실행될 때, 상기 데이터 처리 시스템이 추가 동작들을 수행하는 것을 가능하게 하고, 상기 추가 동작들은,
    상기 새로운 낮은-우선순위 스레드를 상기 선택 코어에서의 LP들 중 하나에 자동으로 배정한 후에, 상기 선택 코어를 저-전력 상태에서 실행하는 동작을 포함하는 데이터 처리 시스템.
  16. 제9항에 있어서, 추가로,
    각각의 코어의 각각의 LP에 대한 EPP(efficiency/performance preference) 레지스터를 포함하고;
    상기 OS는, 실행될 때, 상기 데이터 처리 시스템이 추가 동작들을 수행하는 것을 가능하게 하고, 상기 추가 동작들은,
    다수의 높은-우선순위 스레드들이 상기 제1 코어 상에서 실행되고 있을 때, 상기 제2 코어가 유휴에 진입하는 것에 응답하여, (a) 상기 높은-우선순위 스레드들 중 하나를 상기 제1 코어로부터 유휴에 진입한 상기 제2 코어에서의 LP로 전송하는 동작 및 (b) 해당 LP에 대한 EPP 레지스터를 성능에 대한 선호를 표시하는 값으로 설정하는 동작을 포함하는 데이터 처리 시스템.
  17. 제9항에 있어서, 추가로,
    CPU(central processing unit);
    각각의 코어의 각각의 LP에 대한 EPP(efficiency/performance preference) 레지스터; 및
    LPCS(low-priority-core-set) 레지스터를 포함하고;
    상기 제1 및 제2 코어들, 상기 EPP 레지스터들, 및 상기 LPCS 레지스터는 상기 CPU에 존재하고;
    상기 OS는, 실행될 때, 상기 LPCS 레지스터에 데이터를 기입하여 어느 코어들이 어떠한 높은-우선순위 스레드들도 실행하지 않고 있는지를 표시하고;
    상기 CPU는, 전원이 켜질 때, 상기 데이터 처리 시스템이 동작들을 수행하는 것을 가능하게 하고, 상기 동작들은,
    상기 LPCS 레지스터에서의 데이터에 기초하여, 상기 코어들 중 임의의 것이 어떠한 높은-우선순위 스레드들도 실행하지 않고 있는지를 자동으로 결정하는 동작; 및
    상기 제1 코어가 어떠한 높은-우선순위 스레드들도 실행하고 있지 않다고 결정하는 것에 응답하여, 하드웨어 리소스들을 상기 제1 코어로부터 상기 제2 코어로 자동으로 전용시키는 동작을 포함하는 데이터 처리 시스템.
  18. 제17항에 있어서, 상기 하드웨어 리소스들은 캐시, 메모리 대역폭, 및 링 대역폭으로 이루어지는 그룹으로부터의 적어도 하나의 리소스를 포함하는 데이터 처리 시스템.
  19. 스레드들을 동적으로 그룹화하기 위한 방법으로서, 상기 방법은,
    다수의 코어들 및 코어 당 다수의 LP들(logical processors)을 포함하는 프로세서를 갖는 데이터 처리 시스템에서, (a) 새로운 낮은-우선순위 스레드를 수신하기 위해 상기 프로세서에서의 LP들 중 하나를 선택하는 동작, 및 (b) 상기 새로운 낮은-우선순위 스레드를 상기 선택된 LP에 배정하는 동작을 포함하고;
    상기 새로운 낮은-우선순위 스레드를 수신하기 위해 상기 프로세서에서의 LP들 중 하나를 선택하는 동작은,
    상기 프로세서에서의 제1 코어가 다수의 유휴 LP들을 가질 때, 상기 프로세서에서의 제2 코어가 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는지를 자동으로 결정하는 동작; 및
    상기 제2 코어가 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는다고 결정하는 것에 응답하여, 상기 새로운 낮은-우선순위 스레드를 수신하기 위해 상기 제2 코어에서의 유휴 LP를 자동으로 선택하는 동작을 포함하는 방법.
  20. 제19항에 있어서, 추가로,
    상기 새로운 낮은-우선순위 스레드를 수신하기 위해 상기 제2 코어에서의 유휴 LP를 자동으로 선택한 후에, 상기 제2 코어에서의 유휴 LP에 대한 EPP(efficiency/performance preference) 레지스터를 에너지 효율에 대한 선호를 표시하는 값으로 자동으로 설정하는 동작; 및
    상기 제2 코어에서의 유휴 LP에 대한 EPP 레지스터를 에너지 효율에 대한 선호를 표시하는 값으로 설정한 후에, 상기 제2 코어를 저 전력 상태에서 실행하는 동작을 포함하는 방법.
  21. 제19항에 있어서, 상기 새로운 낮은-우선순위 스레드를 수신하기 위해 상기 프로세서에서의 LP들 중 하나를 선택하는 동작은 추가로,
    상기 프로세서에서의 코어들 중 어느 것도 자신의 LP들 전부를 유휴로 갖지 않을 때, 상기 코어들 중 임의의 것이 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는지를 자동으로 결정하는 동작;
    선택 코어가 (a) 유휴 LP 및 (b) 현재의 낮은-우선순위 스레드를 실행하고 있는 사용중인 LP를 갖는다고 결정하는 것에 응답하여, 자동으로 (i) 상기 새로운 낮은-우선순위 스레드를 상기 선택 코어에서의 유휴 LP에 배정하는 동작 및 (ii) 상기 선택 코어에서의 유휴 LP에 대한 EPP(efficiency/performance preference) 레지스터를 에너지 효율에 대한 선호를 표시하는 값으로 설정하는 동작; 및
    상기 새로운 낮은-우선순위 스레드를 상기 선택 코어에서의 유휴 LP에 자동으로 배정한 후에, 상기 선택 코어를 저-전력 상태에서 실행하는 동작을 포함하는 방법.
  22. 제19항에 있어서, 상기 새로운 낮은-우선순위 스레드를 수신하기 위해 상기 프로세서에서의 LP들 중 하나를 선택하는 동작은 추가로,
    상기 LP들 중 어느 것도 유휴가 아닐 때, 상기 코어들 중 임의의 것이 낮은-우선순위 스레드들을 실행하는 자신의 LP들 전부를 갖는지를 자동으로 결정하는 동작; 및
    선택 코어가 낮은-우선순위 스레드들을 실행하는 자신의 LP들 전부를 갖는다고 결정하는 것에 응답하여, 상기 새로운 낮은-우선순위 스레드를 상기 선택 코어에서의 LP들 중 하나에 자동으로 배정하는 동작을 포함하는 방법.
  23. 장치로서, 제19항 내지 제22항 중 어느 한 항에서 청구되는 바와 같은 방법을 수행하는 수단을 포함하는 장치.
KR1020227002115A 2019-08-22 2020-07-21 에너지 효율을 위해 스레드들을 동적으로 그룹화하기 위한 기술 KR20220051158A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/547,767 2019-08-22
US16/547,767 US11422849B2 (en) 2019-08-22 2019-08-22 Technology for dynamically grouping threads for energy efficiency
PCT/US2020/042900 WO2021034440A1 (en) 2019-08-22 2020-07-21 Technology for dynamically grouping threads for energy efficiency

Publications (1)

Publication Number Publication Date
KR20220051158A true KR20220051158A (ko) 2022-04-26

Family

ID=74645356

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227002115A KR20220051158A (ko) 2019-08-22 2020-07-21 에너지 효율을 위해 스레드들을 동적으로 그룹화하기 위한 기술

Country Status (4)

Country Link
US (1) US11422849B2 (ko)
EP (1) EP4018308A4 (ko)
KR (1) KR20220051158A (ko)
WO (1) WO2021034440A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11940860B2 (en) 2021-06-22 2024-03-26 Microsoft Technology Licensing, Llc. Power budget management using quality of service (QoS)
KR20230106865A (ko) * 2022-01-07 2023-07-14 울산과학기술원 스레드 할당 방법, 컴퓨터 판독 가능한 기록 매체, 컴퓨터 프로그램 및 장치
CN117667324A (zh) * 2022-08-24 2024-03-08 华为技术有限公司 用于处理任务的方法、装置、设备和存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020184290A1 (en) 2001-05-31 2002-12-05 International Business Machines Corporation Run queue optimization with hardware multithreading for affinity
US7748001B2 (en) * 2004-09-23 2010-06-29 Intel Corporation Multi-thread processing system for detecting and handling live-lock conditions by arbitrating livelock priority of logical processors based on a predertermined amount of time
US7707578B1 (en) * 2004-12-16 2010-04-27 Vmware, Inc. Mechanism for scheduling execution of threads for fair resource allocation in a multi-threaded and/or multi-core processing system
US7870551B2 (en) 2006-05-18 2011-01-11 International Business Machines Corporation Optimization of thread wake up for shared processor partitions
US8739162B2 (en) * 2007-04-27 2014-05-27 Hewlett-Packard Development Company, L.P. Accurate measurement of multithreaded processor core utilization and logical processor utilization
US8813080B2 (en) 2007-06-28 2014-08-19 Intel Corporation System and method to optimize OS scheduling decisions for power savings based on temporal characteristics of the scheduled entity and system workload
US8954977B2 (en) 2008-12-09 2015-02-10 Intel Corporation Software-based thread remapping for power savings
US9372526B2 (en) * 2012-12-21 2016-06-21 Intel Corporation Managing a power state of a processor
US9760158B2 (en) * 2014-06-06 2017-09-12 Intel Corporation Forcing a processor into a low power state
US10503550B2 (en) 2017-09-30 2019-12-10 Intel Corporation Dynamic performance biasing in a processor

Also Published As

Publication number Publication date
US20210055958A1 (en) 2021-02-25
EP4018308A4 (en) 2023-09-27
EP4018308A1 (en) 2022-06-29
US11422849B2 (en) 2022-08-23
WO2021034440A1 (en) 2021-02-25

Similar Documents

Publication Publication Date Title
JP6227737B2 (ja) コア単位電圧及び周波数制御の提供
US10775873B2 (en) Performing power management in a multicore processor
US10310588B2 (en) Forcing core low power states in a processor
TWI233545B (en) Mechanism for processor power state aware distribution of lowest priority interrupts
KR20220051158A (ko) 에너지 효율을 위해 스레드들을 동적으로 그룹화하기 위한 기술
US20070150759A1 (en) Method and apparatus for providing for detecting processor state transitions
CN111522585A (zh) 基于平台热以及功率预算约束,对于给定工作负荷的最佳逻辑处理器计数和类型选择
US12079612B2 (en) Firmware boot task distribution to enable low latency boot performance
CN118113657A (zh) 使用网络流量元数据来控制处理器
EP3770727A1 (en) Technology for managing per-core performance states
KR100978147B1 (ko) 중앙형 인터럽트 콘트롤러를 위한 장치, 방법 및 시스템
US11531563B2 (en) Technology for optimizing hybrid processor utilization
KR20200107251A (ko) 비대칭 멀티코어 기반 스마트 모바일 단말의 에너지 소모를 줄이기 위한 실시간 태스크의 코어 할당 방법 및 그 장치
CN117539595A (zh) 一种协同调度方法和相关设备