KR101561496B1 - 이종 멀티프로세서 컴퓨팅 플랫폼 내에서의 애플리케이션 스케줄링 - Google Patents

이종 멀티프로세서 컴퓨팅 플랫폼 내에서의 애플리케이션 스케줄링 Download PDF

Info

Publication number
KR101561496B1
KR101561496B1 KR1020137007312A KR20137007312A KR101561496B1 KR 101561496 B1 KR101561496 B1 KR 101561496B1 KR 1020137007312 A KR1020137007312 A KR 1020137007312A KR 20137007312 A KR20137007312 A KR 20137007312A KR 101561496 B1 KR101561496 B1 KR 101561496B1
Authority
KR
South Korea
Prior art keywords
processor
performance
application
core
processor cores
Prior art date
Application number
KR1020137007312A
Other languages
English (en)
Other versions
KR20130062999A (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 인텔 코포레이션
Publication of KR20130062999A publication Critical patent/KR20130062999A/ko
Application granted granted Critical
Publication of KR101561496B1 publication Critical patent/KR101561496B1/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
    • 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
    • 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/3404Recording 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 parallel or distributed programming
    • 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/3433Recording 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 for load management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • 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
    • 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/461Saving or restoring of program or task context
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Power Sources (AREA)
  • Microcomputers (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

이종 멀티프로세서 컴퓨팅 플랫폼 내에서 애플리케이션을 스케줄링하는 방법 및 장치가 설명된다. 하나의 실시예에서, 프로세서의 복수의 프로세서 코어의 성능(예를 들어, 실행 성능 및/또는 전력 소비 성능)에 관한 정보가 계수기 및/또는 테이블 내에 저장(및 트래킹)될 수 있다. 프로세서 내의 로직은 저장된 정보에 기반하여 어떤 프로세서 코어가 애플리케이션을 실행해야 하는지를 판단한다. 다른 실시예가 또한 청구되고 개시된다.

Description

이종 멀티프로세서 컴퓨팅 플랫폼 내에서의 애플리케이션 스케줄링{APPLICATION SCHEDULING IN HETEROGENEOUS MULTIPROCESSOR COMPUTING PLATFORMS}
본 개시는 일반적으로 전자 공학 분야에 관한 것이다. 보다 구체적으로, 본 발명의 일 실시예는 이종 멀티프로세서 컴퓨팅 플랫폼 내에서 애플리케이션을 스케줄링하기 위한 기법에 관한 것이다.
성능을 향상시키기 위해, 일부 컴퓨팅 시스템은 복수의 프로세서를 포함한다. 그러나, 멀티프로세서 컴퓨팅 시스템의 크기 조정(scaling)은 전력 제약에 의해 제한된다. 즉, 하나의 시스템에 보다 많은 프로세서가 추가됨에 따라 전력 소비가 증가한다. 또한, 추가 전력 소비는 보다 많은 열을 발생시킨다. 그러므로, 열 및 전력 요건은 멀티프로세서 컴퓨팅 시스템의 크기 조정을 제한할 수 있다.
첨부 도면을 참조하여 상세한 설명이 제공된다. 도면에서, 참조 부호의 가장 왼쪽 숫자는 참조 부호가 처음으로 나타나는 도면을 식별한다. 상이한 도면에서 동일한 참조 부호의 사용은 유사하거나 동일한 항목을 표시한다.
도 1, 도 5, 및 도 6은 컴퓨팅 시스템의 실시예의 블록도를 도시하며, 컴퓨팅 시스템은 여기에서 논의된 다양한 실시예를 구현하기 위해 이용될 수 있다.
도 2는 일 실시예에 따른 컴퓨팅 시스템의 프로세서 코어 및 다른 컴포넌트의 일부에 대한 블록도를 도시한다.
도 3 및 도 4는 일부 실시예에 따른 흐름도를 도시한다.
이하의 설명에서, 다양한 실시예의 완전한 이해를 제공하기 위해 다양한 구체적인 세부 사항이 제시된다. 그러나, 본 발명의 다양한 실시예는 구체적인 세부 사항 없이 실시될 수 있다. 다른 경우에, 본 발명의 특정 실시예를 불명료하게 하지 않도록, 주지된 방법, 과정, 컴포넌트 및 회로는 상세하게 설명되지 않았다. 추가로, 본 발명의 실시예의 다양한 양태는 집적된 반도체 회로("하드웨어(hardware)"), 하나 이상의 프로그램 내로 체계화된 컴퓨터 판독 가능한 명령어("소프트웨어(software)"), 또는 하드웨어와 소프트웨어의 일종의 조합과 같은 다양한 수단을 사용하여 수행될 수 있다. 이러한 개시의 목적을 위해서, "로직(logic)"이라는 언급은 하드웨어, 소프트웨어, 또는 이들의 일종의 조합을 의미할 것이다. 또한, "명령어(instruction)" 및 "미세 동작(micro-operation)"(uop)의 사용은 여기에서 논의된 바와 같이 상호 교환 가능할 것이다.
예를 들어 서버 및 클라이언트 플랫폼에 대해 칩-멀티프로세서(Chip-MultiProcessor, CMP) 시스템이 일반적이 됨에 따라, 이종 CMP(heterogeneous CMP)가 힘을 얻기 시작한다. 예를 들어, 보다 작은 프로세서 코어가 보다 양호한 성능/와트(watt) 장점을 제공할 수 있다. 따라서, 보다 큰 프로세서 코어에 덧붙여 보다 작은 프로세서 코어를 추가하는 것이 매력적일 수 있다. 본 명세서에서 논의된 바와 같이, 이종 CMP는 성능, 면적, 및/또는 전력 손실에서 상이한 한 세트의 코어를 포함한다. 이러한 플랫폼은 다양한 애플리케이션에 대한 컴퓨팅 리소스의 보다 양호한 매핑을 허용할 기회를 제공하므로, 일부 실시예에서 성능 및 전력 효율이 달성될 수 있다.
그러나, 이종 CMP 플랫폼 설계에서 중요한 도전 중 하나는 애플리케이션 스케줄링, 즉, 성능 및/또는 전력 효율을 최적화하는 복수의 프로세서 코어에 애플리케이션을 매핑하는 것이다. 이를 위해, 하나의 실시예는 (예를 들어, 단일 집적 회로(integrated circuit, IC) 칩/다이 상에서) 상이한 코어들 사이에서 애플리케이션을 동적으로 스케줄링하는 것에 관한 것이다. 하나의 실시예에서, 애플리케이션을 스케줄링하기 위해 두 개의 컴포넌트가 사용될 수 있다. 첫째, 프로세서 코어 모델링 예측 휴리스틱스(processor core modeling predication heuristics)가 제공될 수 있다. 둘째, 코어 모델링 예측 휴리스틱스에 기반하여 이종 프로세서 코어에 대해 애플리케이션을 스케줄링하기 위해 스케줄링 로직(scheduling logic)이 사용될 수 있다.
여기에서 논의된 기법은 도 1, 도 5, 및 도 6과 관련하여 논의된 프로세서와 같은 성능 상태 설정(performance state setting)을 갖는 모든 유형의 프로세서에서 사용될 수 있다. 보다 구체적으로, 도 1은 본 발명의 일 실시예에 따른 컴퓨팅 시스템(100)의 블록도를 도시한다. 시스템(100)은 하나 이상의 프로세서(102-1 내지 102-N)(일반적으로 본 명세서에서 "프로세서들(102)" 또는 "프로세서(102)"로 지칭됨)를 포함할 수 있다. 프로세서들(102)은 상호접속 네트워크(interconnection network) 또는 버스(104)를 통해 통신할 수 있다. 각각의 프로세서는 다양한 컴포넌트를 포함할 수 있으며, 명료하게 하기 위해 다양한 컴포넌트 중에서 단지 일부 컴포넌트만이 프로세서(102-1)와 관련하여 논의된다. 따라서, 나머지 프로세서(102-2 내지 102-N) 각각은 프로세서(102-1)와 관련하여 논의된 동일하거나 유사한 컴포넌트를 포함할 수 있다.
일 실시예에서, 프로세서(102-1)는 하나 이상의 프로세서 코어(106-1 내지 106-M)(본 명세서에서 "코어들(106)"로 지칭되거나 보다 일반적으로 "코어(106)"로 지칭됨), 공유 캐시(shared cache)(108), 및/또는 라우터(router)(110)를 포함할 수 있다. 프로세서 코어(106)는 단일 집적 회로(IC) 칩 상에서 구현될 수 있다. 더군다나, 칩은 (캐시(108)와 같은) 하나 이상의 공유 및/또는 사유 캐시, (버스 또는 상호접속 네트워크(112)와 같은) 버스 또는 상호접속, (도 5 및 도 6과 관련하여 논의된 것과 같은) 메모리 제어기, 또는 다른 컴포넌트를 포함할 수 있다. 또한, 코어(106)는 이종일 수 있다(예를 들어, 본 명세서에 논의된 바와 같이 상이한 크기, 성능 특성, 전력 소비 특성 등을 가지는).
하나의 실시예에서, 프로세서(102-1) 및/또는 시스템(100)의 다양한 컴포넌트들 사이에서 통신하기 위해 라우터(110)가 사용될 수 있다. 더군다나, 프로세서(102-1)는 하나 초과의 라우터(110)를 포함할 수 있다. 추가로, 프로세서(102-1) 내부의 또는 프로세서(102-1) 외부의 다양한 컴포넌트들 사이에 데이터 라우팅을 가능하게 위해 복수의 라우터(110)는 통신 상태일 수 있다.
공유 캐시(108)는 코어(106)와 같은 프로세서(102-1)의 하나 이상의 컴포넌트에 의해 이용되는 (예를 들어, 명령어를 포함한) 데이터를 저장할 수 있다. 예를 들어, 공유 캐시(108)는 프로세서(102)의 컴포넌트에 의한 보다 빠른 접근을 위해 메모리(114) 내에 저장된 데이터를 국부적으로 캐싱할 수 있다. 일 실시예에서, 캐시(108)는 (레벨 2(L2)의 캐시, 레벨 3(L3)의 캐시, 레벨 4(L4)의 캐시, 또는 다른 레벨의 캐시와 같은) 미드-레벨(mid-level)의 캐시, 마지막 레벨의 캐시(last level cache, LLC), 및/또는 이들의 조합을 포함할 수 있다. 더군다나, 프로세서(102-1)의 다양한 컴포넌트는 버스(예를 들어, 버스(112)), 및/또는 메모리 제어기 또는 허브를 통해 공유 캐시(108)와 직접 통신할 수 있다. 도 1에 도시된 바와 같이, 일부 실시예에서, 코어(106) 중에서 하나 이상의 코어는 레벨 1(L1) 및/또는 레벨 2(L2) 캐시(116-1)(일반적으로 본 명세서에서 "L1/L2 캐시(116)"로 지칭됨)를 포함할 수 있다. L1 및/또는 L2 캐시(116)는 다양한 실시예에서 사유이거나 공유될 수 있다.
하나의 실시예에서, 도 2 내지 도 4를 참조하여 추가로 후술되는 바와 같이, 각각의 코어는 시스템 내의 다양한 프로세서 코어로 애플리케이션을 할당하는데 도움을 주는 로직(120)을 포함할 수 있다. 예를 들어, (시스템 내의 하나 이상의 다른 코어의 성능을 표시하는 성능 계수기와 같은) 계수기(122) 내에 저장된 정보에 기반하여(예를 들어, 운영 체제(Operating System, OS)에 의해) 애플리케이션이 할당될 수 있다. (성능 이력 테이블(performance history table, PHT)(124-1)과 같은) 테이블 내로 인덱싱하기 위해 사용될 수 있는 프로세스 식별자(process identifier, ID)에 기반하여 (예를 들어, OS에 의해) 애플리케이션이 또한 할당될 수 있다. 테이블은 (메모리(114) 및/또는 공유 캐시(108)와 같은) 공유 메모리 내에 저장되거나 또는 사유 캐시(예를 들어, L1/L2 캐시(116))와 같은 프로세서(102) 또는 코어(106) 내의 전용 저장 장치 내에 저장(예를 들어, PHT(124-1))될 수 있다. 테이블은 예를 들어 도 2 내지 도 4를 참조하여 추가로 후술되는 바와 같이 애플리케이션을 스케줄링할 때 운영 체제(OS)로 정보/힌트를 제공할 수 있다. 일부 실시예에서, OS 및 애플리케이션은 메모리(114)(또는 도 5의 메모리(512) 및 도 6의 메모리(610/612)) 내에 저장될 수 있다.
도 2는 본 발명의 일 실시예에 따른 컴퓨팅 시스템의 프로세서 코어(106) 및 다른 컴포넌트의 일부에 대한 블록도를 도시한다. 하나의 실시예에서, 도 2에 도시된 화살표는 코어(106)를 통한 명령어의 흐름 방향을 도시한다. (프로세서 코어(106)와 같은) 하나 이상의 프로세서 코어는 도 1과 관련하여 논의된 바와 같은 단일 집적 회로 칩(또는 다이) 상에서 구현될 수 있다. 더군다나, 칩은 하나 이상의 공유 및/또는 사유 캐시(예를 들어, 도 1의 캐시(106 및 108)), 상호접속(예를 들어, 도 1의 상호접속(104 및/또는 112)), 로직(120), 계수기(122), 메모리 제어기, 또는 다른 컴포넌트를 포함할 수 있다.
도 2에 도시된 바와 같이, 프로세서 코어(106)는 코어(106)에 의한 실행을 위한(조건 브랜치(conditional branch)를 갖는 명령어를 포함한) 명령어를 인출하는 인출 유닛(fetch unit)(202)을 포함할 수 있다. 명령어는 도 4 및 도 5와 관련하여 논의된 메모리(114) 및/또는 메모리 장치와 같은 모든 저장 장치로부터 인출될 수 있다. 코어(106)는 인출된 명령어를 디코딩하는 디코드 유닛(204) 또한 포함할 수 있다. 예를 들어, 디코드 유닛(204)은 인출된 명령어를 복수의 uop(미세 동작(micro-operation))로 디코딩할 수 있다. 추가로, 코어(106)는 스케줄 유닛(206)을 포함할 수 있다. 스케줄 유닛(206)은 명령어가 발송 준비가 될 때까지, 예를 들어 디코딩된 명령어의 소스값이 이용 가능하게 될 때까지 (예를 들어, 디코드 유닛(204)으로부터 수신된) 디코딩된 명령어를 저장하는 것과 연관된 다양한 동작을 수행할 수 있다. 하나의 실시예에서, 스케줄 유닛(206)은 디코딩된 명령어를 실행을 위한 실행 유닛(208)으로 스케줄링하고/하거나 발행(또는 발송)할 수 있다. 실행 유닛(208)은 발송된 명령어가 (예를 들어, 디코드 유닛(204)에 의해) 디코딩되고 (예를 들어, 스케줄 유닛(206)에 의해) 발송된 후에 발송된 명령어를 실행할 수 있다. 일 실시예에서, 실행 유닛(208)은 하나 초과의 실행 유닛을 포함할 수 있다. 실행 유닛(208)은 가산, 감산, 승산, 및/또는 제산과 같은 다양한 산술 연산을 또한 수행할 수 있고, 하나 이상의 산술 로직 유닛(arithmetic logic unit, ALU)을 포함할 수 있다. 일 실시예에서, 코프로세서(co-processor)(도시되지 않음)가 실행 유닛(208)과 함께 다양한 산술 연산을 수행할 수 있다.
추가로, 실행 유닛(208)은 명령어를 비순차(out-of-order)로 실행할 수 있다. 그러므로, 프로세서 코어(106)는 하나의 실시예에서 비순차(out-of-order) 프로세서 코어일 수 있다. 코어(106)는 또한 회수 유닛(retirement unit, 210)을 포함할 수 있다. 회수 유닛(210)은 실행된 명령어가 완료된 후에 실행된 명령어를 회수할 수 있다. 일 실시예에서, 실행된 명령어의 회수는 프로세서 상태가 명령어의 실행으로부터 완료되는 것, 명령어에 의해 사용된 물리적 레지스터가 할당 해제되는 것 등을 야기할 수 있다.
코어(106)는 또한 하나 이상의 버스(예를 들어, 버스(104 및/또는 112))를 통해 프로세서 코어(106)의 컴포넌트와 (도 1과 관련하여 논의된 컴포넌트와 같은) 다른 컴포넌트 사이의 통신을 가능하게 하는 버스 유닛(214)을 포함할 수 있다. 코어(106)는 도 1, 도 3, 및 도 4와 관련하여 논의된 바와 같은 로직(120)을 포함하는 코어(106)의 다양한 컴포넌트에 의해 접근된 데이터를 저장하는 하나 이상의 계수기(122)를 또한 포함할 수 있다.
더군다나, 일부 실시예에서, 로직(120)은 애플리케이션의 성능을 기록할 뿐만 아니라 (예를 들어, 계수기(122) 내에 저장된 값에 기반하여) 시스템 내의 또 다른 코어 상에서 실행된다고 가정할 때의 애플리케이션의 실행 및/또는 전력 소비 성능을 예측한다. 이러한 정보는 전력, 성능, 에너지, 및 이들의 조합과 같은 다양한 문턱값에 기반하여 스케줄링을 수행할 수 있는 OS로 제공될 수 있다. 예를 들어, OS 및/또는 로직(120)은 고려되고 있는 프로세서 코어의 다양한 실행 또는 전력 소비 성능 데이터를 비교할 수 있고, (본 명세서에서 논의된 다양한 문턱값에 기반하여) 어떤 코어가 더 양호한 실행 또는 전력 소비 성능을 제공할 것인 지에 관하여 판단할 수 있다.
일 실시예에 따라, 서명 기반 접근이 사용될 수 있다. 예를 들어, 각각의 애플리케이션은 시스템 내의 하나 이상의 코어 상에서 실행될 수 있고, 애플리케이션 성능 통계는 성능 이력 테이블(performance history table, PHT) 내에 저장될 수 있다. 성능 통계는 명령어 당 사이클(Cycles Per Instruction, CPI), 명령어 당 미스(Misses Per Instruction, MPI) 등을 포함할 수 있다. 예를 들어, 샘플 테이블 1에 도시된 바와 같이, 각각의 테이블 엔트리(table entry)는 세 개 이상의 필드를 가질 수 있다. 제 1 필드는 프로세스 ID를 표시하고, 제 2 필드는 대형 코어 상에서 실행하는 동안 애플리케이션의 CPI를 저장하기 위한 것이고, 마지막 필드는 소형 코어 상에서 실행하는 동안 애플리케이션의 성능을 저장한다. 애플리케이션이 나머지 코어로 콘텍스트 스위치(context switch)될 때마다, 로직(120)은 새로운 정보를 획득할 수 있고 PHT(124)를 업데이트할 수 있다.
Figure 112013024928362-pct00001
PHT(124)의 크기는 매우 작을 수 있다. 예를 들어, 오직 CPI만 사용되면, 이력 정보를 저장하기 위해 요구된 메모리는 엔트리 당 12 바이트이다. 애플리케이션이 실행되도록 스케줄링될 때마다, PHT(124)는 또한 애플리케이션의 프로세스 제어 블록(Process Control Block, PCB) 내에 저장될 수 있고/있거나 또 다른 메모리(예를 들어, PHT(124), 캐시(106), 메모리(114), 캐시(108) 등) 내로 로딩될 수 있다. 이러한 방법론은 하나의 프로세스를 넘어 확장될 수 있고, 하나의 프로세스 내의 다양한 핫스폿(hotspot)을 위해 사용될 수 있다.
일단 PHT가 설정되면, 애플리케이션이 실행되도록 스케줄링될 때마다, 도 3에 도시된 바와 같이, 로직(120)은 PHT로부터 정보를 판독하고, (전력/성능 등과 같은) 미리 정해진 메트릭스(metrics)에 기반하여 최적 스케줄링 정책을 위한 힌트를 OS로 제공한다.
도 3을 참조하면, 일 실시예에 따라, 서명 기반 코어 모델링 예측 휴리스틱스 접근법을 위한 흐름도가 도시된다. 일부 실시예에서, 도 1, 도 2, 도 5, 및 도 6과 관련하여 논의된 다양한 컴포넌트가 도 3과 관련하여 논의된 동작 중에서 하나 이상의 동작을 수행하기 위해 이용될 수 있다.
도 1 내지 도 3을 참조하면, 동작 302에서, 콘텍스트 스위치 상에 (예를 들어, 본 명세서에서 논의된 바와 같이 프로세스 제어 블록 또는 또 다른 위치로부터) 애플리케이션이 로딩된다. 동작 304에서, 로직(120)은 PHT로부터 정보를 판독한다. 동작 306에서, 대형 또는 소형 프로세스 코어에 대해, 프로세스가 (예를 들어, 성능 또는 전력 소비 목적을 위해) 최적인지 여부가 PHT 정보에 기반하여 판단된다. 그런 다음, 동작 308에서, 이러한 정보는 (일 실시예에서 예를 들어 로직(120)에 의해 판단된 바와 같은 전력 소비 및/또는 성능 고려 사항에 기반하여) OS로 송신된다. 동작 310에서, 로직(120)은 (예를 들어, 동작 306에서의 마지막 판단에 기반하여) 추가 이력 정보를 수집하고 PHT 정보를 업데이트한다.
도 4를 참조하면, 일 실시예에 따라, 성능 기반 코어 모델링 예측 휴리스틱스 접근법을 위한 흐름도가 도시된다. 일부 실시예에서, 도 1, 도 2, 도 5, 및 도 6과 관련하여 논의된 다양한 컴포넌트가 도 4와 참조하여 논의된 동작 중에서 하나 이상의 동작을 수행하기 위해 이용될 수 있다.
도 1, 도 2 및 도 4를 참조하면, 동작 402에서, 콘텍스트 스위치 상에 (예를 들어, 본 명세서에서 논의된 바와 같이 프로세스 제어 블록 또는 또 다른 위치로부터) 애플리케이션이 로딩된다. 동작 404에서, 로직(120)은 성능 계수기(예를 들어, 계수기 122) 내에 저장된 값을 판독한다. 동작 406에서, 대형 또는 소형 프로세스 코어에 대해, 프로세스가 (예를 들어, 성능 또는 전력 소비 목적을 위해) 최적인지 여부가 성능 계수기 정보에 기반하여 판단된다. 그런 다음, 동작 408에서, 이러한 정보는 (일 실시예에서 예를 들어 로직(120)에 의해 판단된 바와 같은 전력 소비 및/또는 성능 고려 사항에 기반하여) OS로 송신된다. 동작 410에서, 로직(120)은 (예를 들어, 동작 406에서의 마지막 판단에 기반하여) 추가 이력 정보를 수집하고 성능 계수기(예를 들어, 계수기(122))를 업데이트한다.
성능 계수기 기반 접근법에서, 일부 실시예에 따라, 대형 코어 상에서 애플리케이션이 실행 중에 있는 동안 소형 코어 상에서의 애플리케이션의 성능을 효율적으로 예측할 수 있고 그리고 그 반대로도 예측할 수 있는 동적 모델이 사용될 수 있다. 이러한 접근법은 성능 계수기(예를 들어, 계수기(122))를 사용하고, 이하의 방정식에 기반하여 성능을 예측한다.
소형 코어에서의 사이클 = ((대형 코어에서의 사이클 - 대형 코어 상에서의 스톨 사이클(stall cycle)) * 소형 코어의 발행 폭(issue width)/대형 코어의 발행 폭 * 승산 계수(multiplication factor)) + (대형 코어에서의 L1 미스(miss) * 소형 코어의 L1 미스 페널티(miss penalty)) + (대형 코어에서의 L2 미스 * 소형 코어의 L2 미스 페널티)
일 실시예에서, 승산 계수는 L2 미스 및 로딩/저장 명령어의 개수에 기반하여 경험적으로 유도될 수 있다. 일부 실시예에서, 대형 코어는 소형 코어에 비해 두 배의 로딩/저장 유닛의 개수를 가질 수 있다. 추가로, 일부 실시예에서, 중요한 L2 미스 애플리케이션은 일부 작업량에서 관찰된 메모리 레벨 병렬처리(memory level parallelism)의 결여로 인한 대형 코어의 비순차 특성(out-of-order nature)에 의해 유익하지 않을 수 있다.
대형 코어에서의 사이클 = ((소형 코어에서의 사이클 - 소형 코어 상에서의 스톨 사이클) * 대형 코어의 발행 폭/소형 코어의 발행 폭)/(1-스톨 인자)
스톨 인자(stall factor)는 대형 코어 상에서 일단 애플리케이션을 실행함으로써 그리고 스톨 사이클(stall cycle) 및 전체 사이클 성능 데이터를 수집함으로써 유도될 수 있다. 또한, 일부 플랫폼은 캐시 미스, 플로팅 포인트 스톨(floating point stall) 등과 같은 장기 대기시간 동작(long latency operation)으로 인해 스톨을 식별하는 다양한 성능 계수기를 포함할 수 있다. 실행 완료된 로딩/저장 명령어, L2 미스 등과 같은 다른 계수기와 조합된 이들 스톨은 로직(120)에서 사용될 때 애플리케이션이 또 다른 코어 상에서 실행된다고 가정할 때의 애플리케이션의 성능을 예측하는 것을 도울 수 있다. 설사 플랫폼 내에 구체적인 메모리 스톨 계수기가 존재하지 않더라도, 플랫폼 내에 다른 스톨 계수기를 사용하여 스톨이 추정될 수 있다.
스케줄링에 관하여, 일부 실시예는 다음과 같은 로직(120)에 의해 제공된 성능 정보에 기반하여 대형 및 소형 코어에 다양한 애플리케이션을 매핑할 수 있다. 즉, (1) 단일 애플리케이션인 경우에, 대형 코어 대 소형 코어의 성능 비율이 프로그래밍 가능한 값보다 크면, 대형 코어 상에서 애플리케이션을 스케줄링하고, 그렇지 않으면 소형 코어 상에서 애플리케이션을 스케줄링한다. 이러한 프로그래밍 가능한 값은 코어 내에 존재할 수 있고, 다양한 전력/성능 메트릭스에 기반하여 머신 상태 레지스터(Machine State Register, MSR)를 사용하여 기록될 수 있다. (2) 예를 들어, 스케줄링될 필요가 있는 N 개의 애플리케이션을 갖는 복수의 애플리케이션인 경우에, 대형 코어 대 소형 코어의 성능 비율에 기반하여 애플리케이션을 배열한다. 상부 N/2 개의 애플리케이션(예를 들어, 최대 이득을 갖는 애플리케이션)은 대형 코어 상으로 스케줄링되고, 하부 N/2 개의 애플리케이션은 소형 코어 상에 스케줄링된다.
일부 실시예에서, 이하의 계수기, 즉,
(1) 코어 클록 사이클(core clock cycle): 이 계수기는 코어가 활성 실행 명령어이었던 사이클의 개수를 계수함
(2) 실행 완료된 명령어(instruction retired): 이 계수기는 주어진 시간 샘플 동안에 코어가 회수했던 명령어의 개수를 계수함
(3) L2 미스(L2 miss): 이 계수기는 L2를 미스(miss)한 메모리 참조의 개수를 계수함
(4) 스케줄러 스톨(scheduler stall): 이 계수기는 소형 코어가 명령어를 스케줄링할 수 없었던 사이클의 개수를 계수함(이 계수기는 또한 소형 코어 내에서의 L2 미스와 L2 미스 대기시간(miss latency)의 곱에 기반하여 유도될 수 있다).
(5) 리소스 스톨(resource stall): 이 계수기는 대형 코어가 예약 스테이션, 장기 대기시간 미스 등과 같은 리소스의 이용 불가능성으로 인해 대형 코어가 스톨(stall)했던 사이클의 개수를 계수함, 및/또는
(6) 브랜치 스톨(branch stall): 이 계수기는 브랜치 예측 실패로 인해 잃어버린 사이클의 전체 개수를 계수함
중에서 하나 이상의 계수기가 (예를 들어, 계수기(122)를 위해) 사용될 수 있다.
도 5는 본 발명의 일 실시예에 따른 컴퓨팅 시스템(500)의 블록도를 도시한다. 컴퓨팅 시스템(500)은 상호접속 네트워크(또는 버스)(504)를 통해 통신하는 하나 이상의 중앙 처리 장치(central processing unit, CPU)(502) 또는 프로세서를 포함할 수 있다. 프로세서(502)는 일반적인 목적의 프로세서, (컴퓨터 네트워크(503)를 거쳐 통신된 데이터를 처리하는) 네트워크 프로세서, 또는 (감소된 명령어 세트 컴퓨터(reduced instruction set computer, RISC) 프로세서 또는 복잡한 명령어 세트 컴퓨터(complex instruction set computer, CISC)를 포함한) 다른 유형의 프로세서를 포함할 수 있다. 더군다나, 프로세서(502)는 단일 또는 복수의 코어 설계를 가질 수 있다. 복수의 코어 설계를 갖는 프로세서(502)는 동일한 집적 회로(IC) 다이 상에 상이한 유형의 프로세서 코어를 집적할 수 있다. 또한, 복수의 코어 설계를 갖는 프로세서(502)는 대칭 또는 비대칭 멀티프로세서로서 구현될 수 있다. 일 실시예에서, 프로세서(502) 중에서 하나 이상의 프로세서는 도 1의 프로세서(102)와 동일하거나 유사할 수 있다. 예를 들어, 프로세서(502) 중에서 하나 이상의 프로세서는 도 1 내지 도 4와 참조하여 논의된 코어(106)를 포함할 수 있다. 또한, 도 1 내지 도 4와 참조하여 논의된 동작은 컴퓨팅 시스템(500)의 하나 이상의 컴포넌트에 의해 수행될 수 있다.
칩셋(506)은 또한 상호접속 네트워크(504)와 통신할 수 있다. 칩셋(506)은 메모리 제어 허브(memory control hub(MCH))(508)를 포함할 수 있다. MCH(508)는 (도 1의 메모리(114)와 동일하거나 유사할 수 있는) 메모리(512)와 통신하는 메모리 제어기(510)를 포함할 수 있다. 메모리(512)는 컴퓨팅 시스템(500) 내에 포함된 CPU(502) 또는 모든 다른 장치에 의해 실행될 수 있는 명령어의 시퀀스들을 포함한 데이터를 저장할 수 있다. 본 발명의 하나의 실시예에서, 메모리(512)는 RAM(random access memory), 동적 RAM(dynamic RAM, DRAM), 동기 DRAM(synchronous DRAM, SDRAM), 정적 RAM(static RAM, SRAM), 또는 다른 유형의 저장 장치와 같은 하나 이상의 휘발성 저장(또는 메모리) 장치를 포함할 수 있다. 하드 디스크와 같은 비휘발성 메모리도 또한 이용될 수 있다. 추가 장치는 복수의 CPU 및/또는 복수의 시스템 메모리와 같은 상호접속 네트워크(504)를 통해 통신할 수 있다.
MCH(508)은 디스플레이 장치(516)와 통신하는 그래픽 인터페이스(514)를 또한 포함할 수 있다. 본 발명의 하나의 실시예에서, 그래픽 인터페이스(514)는 가속 그래픽 포트(accelerated graphics port, AGP)를 통해 디스플레이 장치(516)와 통신할 수 있다. 본 발명의 일 실시예에서, (평판 디스플레이와 같은) 디스플레이(516)는 예를 들어 비디오 메모리 또는 시스템 메모리와 같은 저장 장치 내에 저장된 영상의 디지털 표현을 디스플레이(516)에 의해 해석되고 디스플레이되는 디스플레이 신호로 변환하는 신호 변환기를 통해 그래픽 인터페이스(514)와 통신할 수 있다. 디스플레이 장치에 의해 생성된 디스플레이 신호는 디스플레이(516)에 의해 해석된 다음에 디스플레이(516) 상에 디스플레이 되기 전에 다양한 제어 장치를 통해 지나갈 수 있다.
허브 인터페이스(518)는 MCH(508) 및 입력/출력 제어 허브(input/output control hub, ICH)(520)가 통신하는 것을 허용한다. ICH(520)는 컴퓨팅 시스템(500)과 통신하는 I/O 장치로 인터페이스를 제공할 수 있다. ICH(520)는 주변 컴포넌트 인터커넥트(peripheral component interconnect, PCI) 브리지, 유니버셜 시리얼 버스(universal serial bus, USB) 제어기, 또는 다른 유형의 주변 브리지 또는 제어기와 같은 주변 브리지(또는 제어기)(524)를 통해 버스(522)와 통신할 수 있다. 브리지(524)는 CPU(502)와 주변 장치 사이에 데이터 경로를 제공할 수 있다. 다른 유형의 토폴로지가 이용될 수 있다. 또한, 예를 들어 복수의 브리지 또는 제어기를 통해 복수의 버스가 ICH(520)와 통신할 수 있다. 더군다나, 본 발명의 다양한 실시예에서, ICH(520)와 통신 상태에 있는 다른 주변 장치는 인테그레이티드 드라이브 일렉트로닉스(integrated drive electronics, IDE) 또는 스몰 컴퓨터 시스템 인터페이스(small computer system interface, SCSI) 하드 드라이브, USB 포트, 키보드, 마우스, 병렬 포트, 직렬 포트, 플로피 디스크 드라이브, 디지털 출력 지지대(예를 들어, 디지털 비디오 인터페이스(digital video interface, DVI)), 또는 다른 장치를 포함할 수 있다.
버스(522)는 오디오 장치(526), 하나 이상의 디스크 드라이브(528), 및 (컴퓨터 네트워크(503)와 통신 상태에 있는) 네트워크 인터페이스 장치(530)와 통신할 수 있다. 다른 장치는 버스(522)를 통해 통신할 수 있다. 또한, 본 발명의 일부 실시예에서, (네트워크 인터페이스 장치(530)와 같은) 다양한 컴포넌트는 MCH(508)와 통신할 수 있다. 또한, 프로세서(502) 및 MCH(508)는 단일 칩을 형성하기 위해 조합될 수 있다. 추가로, 본 발명의 다른 실시예에서, 그래픽 가속기(graphics accelerator)(516)는 MCH(508) 내에 포함될 수 있다.
추가로, 컴퓨팅 시스템(500)은 휘발성 및/또는 비휘발성 메모리(또는 저장소)를 포함할 수 있다. 예를 들어, 비휘발성 메모리는 판독 전용 메모리(read-only memory, ROM), 프로그래밍 가능한 ROM(PROM), 삭제 가능한 PROM(EPROM), 전기적 EPROM(EEPROM), 디스크 드라이브(예를 들어, 528), 플로피 디스크, 콤팩트 디스크 ROM(CD-ROM), 디지털 버서타일 디스크(digital versatile disk, DVD), 플래시 메모리, 광자기 디스크(magneto-optical disk), 또는 (예를 들어, 명령어를 포함한) 전자 데이터를 저장할 수 있는 다른 유형의 비휘발성 머신 판독 가능한 매체 중에서 하나 이상의 매체를 포함할 수 있다.
도 6은 본 발명의 일 실시예에 따라 점 대 점(point-to-point(PtP)) 구성 내에 배열되는 컴퓨팅 시스템을 도시한다. 특히, 도 6은 프로세서, 메모리, 및 입력/출력 장치가 복수의 점 대 점 인터페이스에 의해 상호접속되는 시스템을 도시한다. 도 1 내지 도 5와 참조하여 논의된 동작은 시스템(600)의 하나 이상의 컴포넌트에 의해 수행될 수 있다.
도 6에 도시된 바와 같이, 시스템(600)은 복수의 프로세서를 포함할 수 있으며, 명료성을 위해 그 중에서 단지 두 개의 프로세서(602 및 604)만이 도시되어 있다. 프로세서(602 및 604)는 메모리(610 및 612)와의 통신을 가능하게 하는 국부 메모리 제어기 허브(memory controller hub, MCH)(606)를 각각 포함할 수 있다. 메모리(610 및/또는 612)는 도 5의 메모리(512)와 참조하여 논의된 것과 같은 다양한 데이터를 저장할 수 있다.
일 실시예에서, 프로세서(602 및 604)는 도 5와 관련하여 논의된 프로세서(502) 중에서 하나의 프로세서일 수 있다. 프로세서(602 및 604)는 점 대 점(point-to-point(PtP)) 인터페이스 회로(616 및 618)를 사용하여 PtP 인터페이스(614)를 통해 데이터를 각각 교환할 수 있다. 또한, 프로세서(602 및 604)는 각각 점 대 점 인터페이스(626, 628, 630 및 632)를 사용하여 개별 PtP 인터페이스(622 및 624)를 통해 칩셋(620)과 데이터를 교환할 수 있다. 칩셋(620)은 예를 들어 PtP 인터페이스 회로(637)를 사용하여 그래픽 인터페이스(636)를 통해 그래픽 회로(634)와 데이터를 더 교환할 수 있다.
본 발명의 적어도 하나의 실시예는 프로세서(602 및 604) 내에서 제공될 수 있다. 예를 들어, 도 1 내지 도 5의 코어(106)는 프로세서(602 및 604) 내에 위치될 수 있다. 그러나, 본 발명의 다른 실시예는 도 6의 시스템(600) 내의 다른 회로, 로직 유닛, 또는 장치 내에 존재할 수 있다. 추가로, 본 발명의 다른 실시예는 도 6에 도시된 복수의 회로, 로직 유닛, 또는 장치를 통해 분산될 수 있다.
칩셋(620)은 PtP 인터페이스 회로(641)를 사용하여 버스(640)와 통신할 수 있다. 버스(640)는 버스 브리지(642) 및 I/O 장치(643)와 같은 하나 이상의 장치와 통신할 수 있다. 버스(644)를 통해, 버스 브리지(642)는 키보드/마우스(645), (모뎀, 네트워크 인터페이스 장치, 또는 컴퓨터 네트워크(503)와 통신할 수 있는 다른 통신 장치와 같은) 통신 장치(646), 오디오 I/O 장치(647), 및/또는 데이터 저장 장치(648)와 같은 다른 장치와 통신할 수 있다. 데이터 저장 장치(648)는 프로세서(602 및/또는 604)에 의해 실행될 수 있는 코드(649)를 저장할 수 있다.
본 발명의 다양한 실시예에서, 예를 들어 도 1 내지 도 6과 관련하여 본 명세서에서 논의된 동작은 하드웨어(예를 들어, 로직 회로), 소프트웨어, 펌웨어, 또는 이들의 조합으로서 구현될 수 있으며, 이는 예를 들어 본 명세서에서 논의된 프로세스를 수행하도록 컴퓨터를 프로그래밍하기 위해 사용된 명령어(또는 소프트웨어 절차)을 저장하는 (예를 들어, 비일시적인(non-transitory)) 머신 판독 가능한 또는 컴퓨터 판독 가능 매체를 포함한 컴퓨터 프로그램 제품으로서 제공될 수 있다. 머신 판독 가능한 매체는 도 1 내지 도 6과 관련하여 논의된 것과 같은 저장 장치를 포함할 수 있다.
추가로, 이러한 컴퓨터 판독 가능 매체는 컴퓨터 프로그램 제품으로서 다운로드될 수 있고, 프로그램은 통신 링크(예를 들어, 버스, 모뎀, 또는 네트워크 접속)를 통해 반송파 또는 다른 전파 매체 내에 구현된 데이터 신호를 매개로 원격 컴퓨터(예를 들어, 서버)로부터 요청 컴퓨터(예를 들어, 클라이언트)로 전달될 수 있다.
명세서에서 "하나의 실시예(one embodiment)", "일 실시예(an embodiment)" 또는 "일부 실시예(some embodiments)"라는 지칭은 실시예와 관련하여 설명된 특별한 특징, 구조, 또는 특성이 적어도 일 구현예 내에 포함될 수 있다는 것을 의미한다. 명세서 내의 다양한 곳에서 어구 "하나의 실시예에서(in one embodiment)"의 출현은 동일한 실시예를 모두 지칭할 수 있거나 또는 지칭하지 않을 수 있다.
또한, 명세서 및 특허청구범위에서, 용어 "결합된(coupled)" 및 "접속된(connected)"이 그에 대한 파생어와 함께 사용될 수 있다. 본 발명의 일부 실시예에서, 두 개 이상의 요소가 서로 물리적으로 또는 전기적으로 직접 접촉한다는 것을 표시하기 위해 "접속된"이 사용될 수 있다. "결합된"은 두 개 이상의 요소가 물리적으로 또는 전기적으로 직접 접촉한다는 의미할 수 있다. 그러나, "결합된"은 또한 두 개 이상의 요소가 직접 서로 접촉하지 않지만 여전히 서로 협동하거나 상호작용할 수 있다는 것을 의미할 수 있다.
따라서, 본 발명의 실시예가 구조적인 특징 및/또는 방법론적 행위에 특유한 언어로 설명되었지만, 청구된 발명 대상은 설명된 특별한 특징 또는 행위로 제한되지 않을 수 있다는 점이 이해될 것이다. 오히려, 특별한 특징 및 행위는 청구된 발명 대상을 구현하는 예시적 형태로서 개시된다.

Claims (30)

  1. 프로세서로서,
    상기 프로세서의 복수의 프로세서 코어의 성능에 상응하는 정보를 저장하는 저장 유닛과,
    애플리케이션이 상기 복수의 프로세서 코어 중 제 1 프로세서 코어 상에서 실행되는 경우와 상기 복수의 프로세서 코어 중 다른 프로세서 코어 상에서 실행되는 경우를 비교한 상기 애플리케이션의 예측된 성능의 비율에 기초하여, 상기 복수의 프로세서 코어 중 상기 애플리케이션을 실행하는 상기 제 1 프로세서 코어를 결정하고, 상기 제 1 프로세서 코어 상에서의 실행을 위해 상기 애플리케이션의 스케줄링을 야기하는 로직을 포함하되,
    상기 성능은 상기 다른 프로세서 코어에 대하여 상기 저장된 정보로부터 상기 제 1 프로세서 코어에 대하여 예측된 것이며,
    상기 로직은 상기 제 1 프로세서 코어 상에서의 상기 애플리케이션의 스케줄링을 야기하기 위해 운영 체제로 데이터를 전송하는
    프로세서.
  2. 제 1 항에 있어서,
    상기 로직은 콘텍스트 스위치의 검출에 응답하여 상기 제 1 프로세서 코어 상에서의 상기 애플리케이션의 스케줄링을 야기하기 위해 상기 운영 체제로 데이터를 전송하는
    프로세서.
  3. 제 1 항에 있어서,
    상기 프로세서의 상기 복수의 프로세서 코어의 상기 성능에 상응하는 상기 저장된 정보는 실행 성능 데이터 또는 전력 소비 성능 데이터를 포함하는
    프로세서.
  4. 제 1 항에 있어서,
    상기 로직은 수집된 정보에 기반하여 상기 저장된 정보를 업데이트하는
    프로세서.
  5. 제 1 항에 있어서,
    상기 로직은 상기 복수의 프로세서 코어 중에서 적어도 일부 프로세서 코어 상에서의 상기 애플리케이션의 실행 성능 또는 전력 소비 성능을 예측하는
    프로세서.
  6. 제 1 항에 있어서,
    상기 복수의 프로세서 코어는 이종(heterogeneous)인
    프로세서.
  7. 제 1 항에 있어서,
    상기 저장 유닛은 공유 메모리, 사유 캐시, 공유 캐시, 또는 전용 메모리를 포함하는
    프로세서.
  8. 제 1 항에 있어서,
    상기 저장된 정보는 상기 애플리케이션의 프로세스 제어 블록 내에 저장되는
    프로세서.
  9. 제 1 항에 있어서,
    상기 저장 유닛은 성능 이력 테이블(performance history table(PHT))을 저장하는
    프로세서.
  10. 제 9 항에 있어서,
    상기 PHT 내의 각각의 엔트리는 적어도 프로세스 식별자와, 상기 복수의 프로세서 코어에 상응하는 복수의 명령어 당 사이클(cycles per instruction)을 저장하는
    프로세서.
  11. 제 1 항에 있어서,
    상기 저장 유닛은 하나 이상의 성능 계수기를 저장하는
    프로세서.
  12. 제 11 항에 있어서,
    상기 하나 이상의 성능 계수기는 코어 클록 사이클, 실행 완료된 명령어(instructions retired), 레벨 2 캐시 미스, 스케줄러 스톨, 리소스 스톨, 또는 브랜치 스톨을 포함하는
    프로세서.
  13. 프로세서의 복수의 이종 프로세서 코어의 성능에 상응하는 정보를 저장하는 단계와,
    애플리케이션이 상기 복수의 프로세서 코어 중 제 1 프로세서 코어 상에서 실행되는 경우와 상기 복수의 프로세서 코어 중 다른 프로세서 코어 상에서 실행되는 경우를 비교한 상기 애플리케이션의 예측된 성능의 비율에 기초하여, 상기 복수의 프로세서 코어 중 상기 애플리케이션을 실행하는 상기 제 1 프로세서 코어를 결정하는 단계―상기 성능은 상기 다른 프로세서 코어에 대하여 상기 저장된 정보로부터 상기 제 1 프로세서 코어에 대하여 예측된 것임―와,
    상기 제 1 프로세서 코어에 상응하는 데이터의 운영 체제로의 전송에 응답하여 상기 제 1 프로세서 코어 상에서의 실행을 위해 상기 애플리케이션을 스케줄링하는 단계를 포함하는
    방법.
  14. 제 13 항에 있어서,
    상기 데이터의 전송은 콘텍스트 스위치의 검출에 응답하는
    방법.
  15. 제 13 항에 있어서,
    상기 프로세서의 상기 복수의 프로세서 코어의 상기 성능에 상응하는 상기 저장된 정보는 실행 성능 데이터 또는 전력 소비 성능 데이터를 포함하는
    방법.
  16. 제 13 항에 있어서,
    수집된 정보에 기반하여 상기 저장된 정보를 업데이트하는 단계를 더 포함하는
    방법.
  17. 제 13 항에 있어서,
    상기 복수의 프로세서 코어 중에서 적어도 일부 프로세서 코어 상에서의 상기 애플리케이션의 실행 성능 또는 전력 소비 성능을 예측하는 단계를 더 포함하는
    방법.
  18. 제 13 항에 있어서,
    상기 정보를 저장하는 단계는 상기 정보를 상기 애플리케이션의 프로세스 제어 블록 내에 저장하는
    방법.
  19. 제 13 항에 있어서,
    상기 저장된 정보는
    성능 이력 테이블(PHT) - 상기 PHT 내의 각각의 엔트리는 프로세스 식별자와, 상기 복수의 프로세서 코어에 상응하는 복수의 명령어 당 사이클을 적어도 저장함 -, 또는
    코어 클록 사이클, 실행 완료된 명령어, 레벨 2 캐시 미스, 스케줄러 스톨, 리소스 스톨, 또는 브랜치 스톨을 포함하는 하나 이상의 성능 계수기 내에 저장되는
    방법.
  20. 복수의 프로세서 코어를 포함하는 프로세서와,
    상기 프로세서의 상기 복수의 프로세서 코어의 성능에 상응하는 정보를 저장하는 저장 유닛―상기 복수의 프로세서 코어 중에서 적어도 하나의 프로세서 코어는, 애플리케이션이 상기 복수의 프로세서 코어 중 제 1 프로세서 코어 상에서 실행되는 경우와 상기 복수의 프로세서 코어 중 다른 프로세서 코어 상에서 실행되는 경우를 비교한 상기 애플리케이션의 예측된 성능의 비율에 기초하여, 상기 복수의 프로세서 코어 중 상기 애플리케이션을 실행하는 상기 제 1 프로세서 코어를 결정하고 상기 제 1 프로세서 코어 상에서의 실행을 위해 상기 애플리케이션의 스케줄링을 야기하는 로직을 포함하되, 상기 성능은 상기 다른 프로세서 코어에 대하여 상기 저장된 정보로부터 상기 제 1 프로세서 코어에 대하여 예측된 것이며, 상기 로직은 콘텍스트 스위치의 검출에 응답하여 상기 제 1 프로세서 코어 상에서의 상기 애플리케이션의 스케줄링을 야기하기 위해 운영 체제로 데이터를 전송함―을 포함하는
    컴퓨팅 시스템.
  21. 제 20 항에 있어서,
    상기 프로세서의 상기 복수의 프로세서 코어의 상기 성능에 상응하는 상기 저장된 정보는 실행 성능 데이터 또는 전력 소비 성능 데이터를 포함하는
    컴퓨팅 시스템.
  22. 제 20 항에 있어서,
    상기 로직은 상기 복수의 프로세서 코어 중에서 적어도 일부 프로세서 코어 상에서의 상기 애플리케이션의 실행 성능 또는 전력 소비 성능을 예측하는
    컴퓨팅 시스템.
  23. 제 20 항에 있어서,
    상기 복수의 프로세서 코어는 이종인
    컴퓨팅 시스템.
  24. 제 20 항에 있어서,
    상기 저장 유닛은 성능 이력 테이블(PHT)을 저장하며, 상기 PHT 내의 각각의 엔트리는 프로세스 식별자와, 상기 복수의 프로세서 코어에 상응하는 복수의 명령어 당 사이클을 적어도 저장하는
    컴퓨팅 시스템.
  25. 제 20 항에 있어서,
    상기 저장 유닛은 하나 이상의 성능 계수기를 저장하며, 상기 하나 이상의 성능 계수기는 코어 클록 사이클, 실행 완료된 명령어, 레벨 2 캐시 미스, 스케줄러 스톨, 리소스 스톨, 또는 브랜치 스톨을 포함하는
    컴퓨팅 시스템.
  26. 제 20 항에 있어서,
    상기 프로세서 코어에 결합된 오디오 장치를 더 포함하는
    컴퓨팅 시스템.
  27. 명령어를 저장하는 컴퓨터 판독가능 매체로서,
    상기 명령어는 프로세서에 의해 실행될 때 상기 프로세서로 하여금,
    상기 프로세서의 복수의 이종 프로세서 코어의 성능에 상응하는 정보를 저장하게 하고,
    애플리케이션이 상기 복수의 프로세서 코어 중 제 1 프로세서 코어 상에서 실행되는 경우와 상기 복수의 프로세서 코어 중 다른 프로세서 코어 상에서 실행되는 경우를 비교한 상기 애플리케이션의 예측된 성능의 비율에 기초하여, 상기 복수의 프로세서 코어 중 상기 애플리케이션을 실행하는 상기 제 1 프로세서 코어를 결정―상기 성능은 상기 다른 프로세서 코어에 대하여 상기 저장된 정보로부터 상기 제 1 프로세서 코어에 대하여 예측된 것임―하게 하며,
    상기 제 1 프로세서 코어에 상응하는 데이터의 운영 체제로의 전송에 응답하여 상기 제 1 프로세서 코어 상에서의 실행을 위해 상기 애플리케이션을 스케줄링하게 하는
    컴퓨터 판독가능 매체.
  28. 제 27 항에 있어서,
    상기 명령어는 상기 프로세서로 하여금,
    콘텍스트 스위치의 검출에 응답하여 상기 데이터의 전송을 야기하게 하는
    컴퓨터 판독가능 매체.
  29. 제 27 항에 있어서,
    상기 프로세서의 상기 복수의 프로세서 코어의 상기 성능에 상응하는 상기 저장된 정보는 실행 성능 데이터 또는 전력 소비 성능 데이터를 포함하는
    컴퓨터 판독가능 매체.
  30. 제 27 항에 있어서,
    상기 명령어는 상기 프로세서로 하여금,
    상기 복수의 프로세서 코어 중에서 적어도 일부 프로세서 코어 상에서의 상기 애플리케이션의 실행 성능 또는 전력 소비 성능을 예측하게 하는
    컴퓨터 판독가능 매체.
KR1020137007312A 2010-09-25 2011-09-24 이종 멀티프로세서 컴퓨팅 플랫폼 내에서의 애플리케이션 스케줄링 KR101561496B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/890,653 2010-09-25
US12/890,653 US9268611B2 (en) 2010-09-25 2010-09-25 Application scheduling in heterogeneous multiprocessor computing platform based on a ratio of predicted performance of processor cores
PCT/US2011/053177 WO2012040684A2 (en) 2010-09-25 2011-09-24 Application scheduling in heterogeneous multiprocessor computing platforms

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020147024707A Division KR20140114074A (ko) 2010-09-25 2011-09-24 이종 멀티프로세서 컴퓨팅 플랫폼 내에서의 애플리케이션 스케줄링

Publications (2)

Publication Number Publication Date
KR20130062999A KR20130062999A (ko) 2013-06-13
KR101561496B1 true KR101561496B1 (ko) 2015-10-20

Family

ID=45871864

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020147024707A KR20140114074A (ko) 2010-09-25 2011-09-24 이종 멀티프로세서 컴퓨팅 플랫폼 내에서의 애플리케이션 스케줄링
KR1020137007312A KR101561496B1 (ko) 2010-09-25 2011-09-24 이종 멀티프로세서 컴퓨팅 플랫폼 내에서의 애플리케이션 스케줄링

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020147024707A KR20140114074A (ko) 2010-09-25 2011-09-24 이종 멀티프로세서 컴퓨팅 플랫폼 내에서의 애플리케이션 스케줄링

Country Status (9)

Country Link
US (2) US9268611B2 (ko)
JP (1) JP5774707B2 (ko)
KR (2) KR20140114074A (ko)
CN (1) CN103119580B (ko)
BR (1) BR112013006483A2 (ko)
DE (1) DE112011103216T5 (ko)
GB (1) GB2497449B (ko)
TW (3) TWI450104B (ko)
WO (1) WO2012040684A2 (ko)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8397088B1 (en) 2009-07-21 2013-03-12 The Research Foundation Of State University Of New York Apparatus and method for efficient estimation of the energy dissipation of processor based systems
WO2013162589A1 (en) * 2012-04-27 2013-10-31 Intel Corporation Migrating tasks between asymmetric computing elements of a multi-core processor
WO2013178864A1 (en) * 2012-05-29 2013-12-05 Nokia Corporation A method and apparatus for deferring processor selection
WO2013177765A1 (en) 2012-05-30 2013-12-05 Intel Corporation Runtime dispatching among heterogeneous group of processors
KR102001414B1 (ko) 2012-09-27 2019-07-18 삼성전자주식회사 데이터 트랜잭션에 따라 전력공급을 제어하는 시스템-온-칩 및 그 동작방법
US9037889B2 (en) 2012-09-28 2015-05-19 Intel Corporation Apparatus and method for determining the number of execution cores to keep active in a processor
US9619284B2 (en) * 2012-10-04 2017-04-11 Intel Corporation Dynamically switching a workload between heterogeneous cores of a processor
US8949659B2 (en) 2012-10-18 2015-02-03 International Business Machines Corporation Scheduling workloads based on detected hardware errors
US20140189302A1 (en) * 2012-12-28 2014-07-03 Intel Corporation Optimal logical processor count and type selection for a given workload based on platform thermals and power budgeting constraints
US9442559B2 (en) 2013-03-14 2016-09-13 Intel Corporation Exploiting process variation in a multicore processor
US9727345B2 (en) 2013-03-15 2017-08-08 Intel Corporation Method for booting a heterogeneous system and presenting a symmetric core view
KR101553649B1 (ko) 2013-05-13 2015-09-16 삼성전자 주식회사 멀티 코어 장치 및 멀티 코어 장치의 작업 스케줄링 방법
KR102110812B1 (ko) * 2013-05-30 2020-05-14 삼성전자 주식회사 멀티 코어 시스템 및 멀티 코어 시스템의 작업 스케줄링 방법
US9842040B2 (en) 2013-06-18 2017-12-12 Empire Technology Development Llc Tracking core-level instruction set capabilities in a chip multiprocessor
WO2015050557A1 (en) * 2013-10-04 2015-04-09 Intel Corporation Techniques for heterogeneous core assignment
CN103645954B (zh) * 2013-11-21 2018-12-14 华为技术有限公司 一种基于异构多核体系的cpu调度方法、装置和系统
CN103646006B (zh) * 2013-11-26 2016-08-31 乐视致新电子科技(天津)有限公司 一种处理器的调度方法、装置和系统
JP6260303B2 (ja) * 2014-01-29 2018-01-17 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN103942103A (zh) * 2014-04-16 2014-07-23 乐视致新电子科技(天津)有限公司 多核体系中处理器调度策略的生成方法及装置、调度系统
CN105378670B (zh) * 2014-04-29 2019-02-26 华为技术有限公司 一种功率控制方法及装置
KR102197874B1 (ko) 2014-09-01 2021-01-05 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법
KR102354848B1 (ko) 2014-11-28 2022-01-21 삼성전자주식회사 캐시 메모리 장치 및 이를 포함하는 전자 시스템
US10101786B2 (en) * 2014-12-22 2018-10-16 Intel Corporation Holistic global performance and power management
US10133602B2 (en) * 2015-02-19 2018-11-20 Oracle International Corporation Adaptive contention-aware thread placement for parallel runtime systems
CN104809078B (zh) * 2015-04-14 2019-05-14 苏州中晟宏芯信息科技有限公司 基于退出退让机制的共享高速缓存硬件资源访问方法
WO2016171671A1 (en) 2015-04-21 2016-10-27 Hewlett-Packard Development Company, L.P. Performance change predictions
US10073718B2 (en) 2016-01-15 2018-09-11 Intel Corporation Systems, methods and devices for determining work placement on processor cores
US10303488B2 (en) * 2016-03-30 2019-05-28 Sony Interactive Entertainment Inc. Real-time adjustment of application-specific operating parameters for backwards compatibility
US10296074B2 (en) * 2016-08-12 2019-05-21 Qualcomm Incorporated Fine-grained power optimization for heterogeneous parallel constructs
US11513805B2 (en) * 2016-08-19 2022-11-29 Wisconsin Alumni Research Foundation Computer architecture with synergistic heterogeneous processors
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
US9747139B1 (en) * 2016-10-19 2017-08-29 International Business Machines Corporation Performance-based multi-mode task dispatching in a multi-processor core system for high temperature avoidance
EP4120070B1 (en) 2016-12-31 2024-05-01 INTEL Corporation Systems, methods, and apparatuses for heterogeneous computing
US11281586B2 (en) * 2017-05-09 2022-03-22 Andes Technology Corporation Processor and way prediction method thereof
US10628223B2 (en) * 2017-08-22 2020-04-21 Amrita Vishwa Vidyapeetham Optimized allocation of tasks in heterogeneous computing systems
CN109937410B (zh) * 2017-10-25 2021-02-23 华为技术有限公司 核心调度方法和终端
US11138037B2 (en) 2017-11-02 2021-10-05 Mediatek Inc. Switch policy for hybrid scheduling in multi-processor systems
US10812416B2 (en) * 2017-12-27 2020-10-20 International Business Machines Corporation Reduced number of counters for reliable messaging
WO2019153187A1 (en) 2018-02-08 2019-08-15 Alibaba Group Holding Limited Hybrid system-on-chip for power and performance prediction and control
CN108664285A (zh) * 2018-05-10 2018-10-16 Oppo广东移动通信有限公司 应用程序预加载方法、装置、存储介质及移动终端
TWI698798B (zh) * 2018-10-22 2020-07-11 致茂電子股份有限公司 一種多核心運算裝置及其運作方法
US10649688B1 (en) * 2018-11-01 2020-05-12 Intel Corporation Precise longitudinal monitoring of memory operations
KR102552954B1 (ko) * 2018-11-07 2023-07-06 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템의 동작 방법
GB2583103B (en) 2019-04-16 2022-11-16 Siemens Ind Software Inc Tracing instruction execution
US11544105B2 (en) 2019-09-11 2023-01-03 Google Llc Recommendations for scheduling jobs on distributed computing devices
TWI791929B (zh) 2019-11-28 2023-02-11 瑞昱半導體股份有限公司 通用分析裝置與方法
CN113609126B (zh) * 2021-07-06 2022-03-11 无锡四维时空信息科技有限公司 一种众源时空数据的一体化存储管理方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004252900A (ja) * 2003-02-21 2004-09-09 Sharp Corp 非対称マルチプロセッサシステム、それを備えた画像処理装置および画像形成装置
JP2008090546A (ja) * 2006-09-29 2008-04-17 Toshiba Corp マルチプロセッサシステム
US20090055826A1 (en) * 2007-08-21 2009-02-26 Kerry Bernstein Multicore Processor Having Storage for Core-Specific Operational Data

Family Cites Families (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2683344B1 (fr) * 1991-10-30 1996-09-20 Bull Sa Systeme multiprocesseur avec moyens microprogrammes pour la repartition des processus aux processeurs.
GB2272085A (en) 1992-10-30 1994-05-04 Tao Systems Ltd Data processing system and operating system.
JPH09167141A (ja) 1995-12-18 1997-06-24 Hitachi Ltd 負荷分散制御方法
US6298370B1 (en) 1997-04-04 2001-10-02 Texas Instruments Incorporated Computer operating process allocating tasks between first and second processors at run time based upon current processor load
US6134675A (en) 1998-01-14 2000-10-17 Motorola Inc. Method of testing multi-core processors and multi-core processor testing device
US6021076A (en) 1998-07-16 2000-02-01 Rambus Inc Apparatus and method for thermal regulation in memory subsystems
US6161188A (en) 1998-11-17 2000-12-12 Ip-First, L.L.C. Microprocessor having fuse control and selection of clock multiplier
US6728892B1 (en) 1999-09-15 2004-04-27 Koninklijke Philips Electronics N.V. Method for conserving power in a can microcontroller and a can microcontroller that implements this method
JP2001175627A (ja) * 1999-12-21 2001-06-29 Toshiba Corp 分散処理計算機システム
US7165257B2 (en) 2000-02-08 2007-01-16 Mips Technologies, Inc. Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts
US7032119B2 (en) 2000-09-27 2006-04-18 Amphus, Inc. Dynamic power and workload management for multi-server system
US20030070013A1 (en) 2000-10-27 2003-04-10 Daniel Hansson Method and apparatus for reducing power consumption in a digital processor
US7140016B2 (en) 2000-11-29 2006-11-21 Texas Instruments Incorporated Media accelerator quality of service
JP3817449B2 (ja) 2001-07-30 2006-09-06 株式会社ルネサステクノロジ データ処理装置
EP1306632A1 (en) * 2001-10-25 2003-05-02 Shell Internationale Researchmaatschappij B.V. Process for liquefying natural gas and producing liquid hydrocarbons
US6804632B2 (en) 2001-12-06 2004-10-12 Intel Corporation Distribution of processing activity across processing hardware based on power consumption considerations
US6907548B2 (en) 2002-01-02 2005-06-14 Intel Corporation Automatic testing for multi-core architecture
US7254812B1 (en) * 2002-05-31 2007-08-07 Advanced Micro Devices, Inc. Multi-processor task scheduling
US20040006729A1 (en) 2002-07-03 2004-01-08 Pendurkar Rajesh Y. Hierarchical test methodology for multi-core chips
KR100498487B1 (ko) 2003-02-08 2005-07-01 삼성전자주식회사 고속제어회로 및 저속·저전력 제어회로를 구비하는프로세서
DE10313605B4 (de) 2003-03-26 2009-03-19 Qimonda Ag Vorrichtung und Verfahren zum Steuern mehrerer Speicherbausteine
US7093147B2 (en) 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
WO2005105363A2 (en) * 2003-12-09 2005-11-10 Swagelok Company High production welding fixture
US7197652B2 (en) 2003-12-22 2007-03-27 International Business Machines Corporation Method and system for energy management in a simultaneous multi-threaded (SMT) processing system including per-thread device usage monitoring
EP1555595A3 (en) 2004-01-13 2011-11-23 LG Electronics, Inc. Apparatus for controlling power of processor having a plurality of cores and control method of the same
US7984442B2 (en) 2004-01-29 2011-07-19 Klingman Edwin E Intelligent memory device multilevel ASCII interpreter
US20050204346A1 (en) * 2004-03-09 2005-09-15 Intel Corporation Using sampling data for program phase detection
JP3862715B2 (ja) 2004-06-01 2006-12-27 株式会社ソニー・コンピュータエンタテインメント タスク管理方法、タスク管理装置、半導体集積回路、電子装置、およびタスク管理システム
JP4197672B2 (ja) 2004-09-30 2008-12-17 株式会社東芝 マルチプロセッサ計算機及びプログラム
US7788670B2 (en) * 2004-10-26 2010-08-31 Intel Corporation Performance-based workload scheduling in multi-core architectures
US20060168571A1 (en) * 2005-01-27 2006-07-27 International Business Machines Corporation System and method for optimized task scheduling in a heterogeneous data processing system
US20060212677A1 (en) 2005-03-15 2006-09-21 Intel Corporation Multicore processor having active and inactive execution cores
TW200638267A (en) 2005-04-22 2006-11-01 Chi Mei Comm Systems Inc Method for adjusting CPU speed of an electronic appliance
JP4838240B2 (ja) 2005-04-27 2011-12-14 パナソニック株式会社 情報処理装置における電力制御装置
TWI300903B (en) 2005-07-01 2008-09-11 Hon Hai Prec Ind Co Ltd Method for estimating cpu power
JP4367856B2 (ja) 2005-07-07 2009-11-18 レノボ シンガポール プライヴェート リミテッド プロセス制御システム及びその制御方法
US7694107B2 (en) * 2005-08-18 2010-04-06 Hewlett-Packard Development Company, L.P. Dynamic performance ratio proportionate distribution of threads with evenly divided workload by homogeneous algorithm to heterogeneous computing units
US7412353B2 (en) 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor
GB0519981D0 (en) 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
TW200805047A (en) 2005-12-23 2008-01-16 Koninkl Philips Electronics Nv Performance analysis based system level power management
JP2009527828A (ja) 2006-02-17 2009-07-30 クゥアルコム・インコーポレイテッド マルチプロセッサのアプリケーションサポートのためのシステムおよび方法
US7596430B2 (en) 2006-05-03 2009-09-29 International Business Machines Corporation Selection of processor cores for optimal thermal performance
US7406407B2 (en) 2006-06-01 2008-07-29 Microsoft Corporation Virtual machine for operating N-core application on M-core processor
US20070294693A1 (en) 2006-06-16 2007-12-20 Microsoft Corporation Scheduling thread execution among a plurality of processors based on evaluation of memory access data
US7493477B2 (en) 2006-06-30 2009-02-17 Intel Corporation Method and apparatus for disabling a processor core based on a number of executions of an application exceeding a threshold
US7463992B2 (en) 2006-09-29 2008-12-09 Intel Corporation Method and system to self-test single and multi-core CPU systems
US7596714B2 (en) 2006-11-20 2009-09-29 Intel Corporation Methods and apparatus to manage throttling in computing environments
US8819699B2 (en) * 2006-12-29 2014-08-26 Intel Corporation Controlling virtual machines based on performance counters
US7779235B2 (en) * 2007-02-06 2010-08-17 International Business Machines Corporation Using performance data for instruction thread direction
US8615767B2 (en) 2007-02-06 2013-12-24 International Business Machines Corporation Using IR drop data for instruction thread direction
US7714635B2 (en) 2007-02-06 2010-05-11 International Business Machines Corporation Digital adaptive voltage supply
US7560945B2 (en) 2007-02-06 2009-07-14 International Business Machines Corporation Integrated circuit failure prediction
US8022685B2 (en) 2007-02-06 2011-09-20 International Business Machines Corporation Temperature dependent voltage source compensation
US7971035B2 (en) 2007-02-06 2011-06-28 International Business Machines Corporation Using temperature data for instruction thread direction
US7865750B2 (en) 2007-02-06 2011-01-04 International Business Machines Corporation Fan speed control from adaptive voltage supply
US7936153B2 (en) 2007-02-06 2011-05-03 International Business Machines Corporation On-chip adaptive voltage compensation
US7895454B2 (en) 2007-02-06 2011-02-22 International Business Machines Corporation Instruction dependent dynamic voltage compensation
US8161482B1 (en) * 2007-04-13 2012-04-17 Marvell International Ltd. Power optimization for multi-core devices
WO2009002880A1 (en) * 2007-06-22 2008-12-31 Biofuelbox Corporation Vessels and methods for synthesis of biofuel
US7561770B2 (en) * 2007-07-30 2009-07-14 Hewlett-Packard Development Company, L.P. Microresonator systems and methods of fabricating the same
US8001338B2 (en) 2007-08-21 2011-08-16 Microsoft Corporation Multi-level DRAM controller to manage access to DRAM
US8005880B2 (en) 2007-08-24 2011-08-23 International Business Machines Corporation Half width counting leading zero circuit
US7797131B2 (en) * 2007-08-24 2010-09-14 International Business Machines Corporation On-chip frequency response measurement
US8185572B2 (en) 2007-08-24 2012-05-22 International Business Machines Corporation Data correction circuit
US20090210740A1 (en) * 2008-02-14 2009-08-20 Song Huang Off-chip access workload characterization methodology for optimizing computing efficiency
US8332865B2 (en) 2008-02-21 2012-12-11 International Business Machines Corporation Adjunct processor load balancing
US20090288092A1 (en) * 2008-05-15 2009-11-19 Hiroaki Yamaoka Systems and Methods for Improving the Reliability of a Multi-Core Processor
US8276145B2 (en) * 2008-06-27 2012-09-25 Microsoft Corporation Protected mode scheduling of operations
JP2010039923A (ja) * 2008-08-07 2010-02-18 Hitachi Ltd 情報処理装置
US8661129B2 (en) * 2008-11-05 2014-02-25 Xerox Corporation System and method for decentralized job scheduling and distributed execution in a network of multifunction devices
US8161304B2 (en) 2009-01-20 2012-04-17 Microsoft Corporation Power management for large memory subsystems
US8572581B2 (en) * 2009-03-26 2013-10-29 Microsoft Corporation Measurement and reporting of performance event rates
US8055805B2 (en) 2009-03-31 2011-11-08 Intel Corporation Opportunistic improvement of MMIO request handling based on target reporting of space requirements
JP5091912B2 (ja) * 2009-05-21 2012-12-05 株式会社東芝 マルチコアプロセッサシステム
US8924975B2 (en) * 2009-07-23 2014-12-30 Empire Technology Development Llc Core selection for applications running on multiprocessor systems based on core and application characteristics

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004252900A (ja) * 2003-02-21 2004-09-09 Sharp Corp 非対称マルチプロセッサシステム、それを備えた画像処理装置および画像形成装置
JP2008090546A (ja) * 2006-09-29 2008-04-17 Toshiba Corp マルチプロセッサシステム
US20090055826A1 (en) * 2007-08-21 2009-02-26 Kerry Bernstein Multicore Processor Having Storage for Core-Specific Operational Data

Also Published As

Publication number Publication date
GB2497449B (en) 2019-02-20
GB201303285D0 (en) 2013-04-10
TWI450104B (zh) 2014-08-21
CN103119580A (zh) 2013-05-22
WO2012040684A2 (en) 2012-03-29
TWI550413B (zh) 2016-09-21
TW201229781A (en) 2012-07-16
WO2012040684A3 (en) 2012-06-07
KR20140114074A (ko) 2014-09-25
JP2013537346A (ja) 2013-09-30
US20160132354A1 (en) 2016-05-12
DE112011103216T5 (de) 2013-07-04
TW201437828A (zh) 2014-10-01
CN103119580B (zh) 2016-08-17
TWI603207B (zh) 2017-10-21
TW201714103A (en) 2017-04-16
GB2497449A (en) 2013-06-12
JP5774707B2 (ja) 2015-09-09
BR112013006483A2 (pt) 2016-07-26
KR20130062999A (ko) 2013-06-13
US20120079235A1 (en) 2012-03-29
US9268611B2 (en) 2016-02-23

Similar Documents

Publication Publication Date Title
KR101561496B1 (ko) 이종 멀티프로세서 컴퓨팅 플랫폼 내에서의 애플리케이션 스케줄링
TWI494850B (zh) 通透地提供給作業系統之非對稱多核心處理器系統
US7788670B2 (en) Performance-based workload scheduling in multi-core architectures
JP5932044B2 (ja) 消費電力を低減する優先度に基づくアプリケーションイベント制御(paec)
US8418187B2 (en) Virtualization software migrating workload between processing circuitries while making architectural states available transparent to operating system
US8533505B2 (en) Data processing apparatus and method for transferring workload between source and destination processing circuitry
US10007323B2 (en) Platform power consumption reduction via power state switching
US20120079255A1 (en) Indirect branch prediction based on branch target buffer hysteresis
TWI454905B (zh) 在多核心平台中之受限制的啓動技術
JP2006524380A (ja) 同時マルチスレッド(smt)プロセッサにおいてスレッドごとのプロセッサ・リソース使用率を決定するためのアカウンティング方法および論理
TW201337771A (zh) 用於包括執行緒合併之能源效率及能源節約的方法、裝置及系統
US8028180B2 (en) Method and system for power conservation in a hierarchical branch predictor
Sahba et al. Improving IPC in simultaneous multi-threading (SMT) processors by capping IQ utilization according to dispatched memory instructions
EP3186704A1 (en) Multiple clustered very long instruction word processing core
US9152473B2 (en) Table driven multiple passive trip platform passive thermal management
KR101682985B1 (ko) 우선순위 기반 지능형 플랫폼 패시브 열 관리
Mehta et al. Fetch halting on critical load misses
Debnath et al. Adaptive instruction dispatching techniques for Simultaneous Multi-Threading (SMT) processors

Legal Events

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