KR100880060B1 - 가용 병렬 기능의 양에 따라 명령어 당 에너지를변화시키는 방법 및 장치 - Google Patents

가용 병렬 기능의 양에 따라 명령어 당 에너지를변화시키는 방법 및 장치 Download PDF

Info

Publication number
KR100880060B1
KR100880060B1 KR1020077006963A KR20077006963A KR100880060B1 KR 100880060 B1 KR100880060 B1 KR 100880060B1 KR 1020077006963 A KR1020077006963 A KR 1020077006963A KR 20077006963 A KR20077006963 A KR 20077006963A KR 100880060 B1 KR100880060 B1 KR 100880060B1
Authority
KR
South Korea
Prior art keywords
core
cores
processor
power consumption
threads
Prior art date
Application number
KR1020077006963A
Other languages
English (en)
Other versions
KR20070049226A (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 KR20070049226A publication Critical patent/KR20070049226A/ko
Application granted granted Critical
Publication of KR100880060B1 publication Critical patent/KR100880060B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/20Cooling means
    • G06F1/206Cooling means comprising thermal management
    • 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/28Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
    • 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/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
    • 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
    • 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
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Power Sources (AREA)
  • Microcomputers (AREA)

Abstract

멀티코어 프로세서의 구성을 변경시키기 위한 방법 및 장치가 개시되어 있다. 일 실시예에서, 스로틀 모듈(또는 스로틀 로직)은 현재 실행중인 프로그램의 병렬 기능의 양을 결정하여, 그 프로그램의 스레드의 실행을 다양한 코어 상에서 변경시킬 수 있다. 병렬 기능의 양이 많은 경우, 프로세서는 적은 전력을 소비하도록 구성된 코어 상에서 더 많은 수의 스레드를 동작시키도록 구성될 수 있다. 병렬 기능의 양이 적은 경우, 프로세서는 더 좋은 스칼라 성능을 위해 구성된 코어 상에서 더 적은 수의 스레드를 동작시키도록 구성될 수 있다.
멀티코어 프로세서, 명령 당 에너지 변화, 프로세서 구성 변화

Description

가용 병렬 기능의 양에 따라 명령어 당 에너지를 변화시키는 방법 및 장치{METHOD AND APPARATUS FOR VARYING ENERGY PER INSTRUCTION ACCORDING TO THE AMOUNT OF AVAILABLE PARALLELISM}
본 발명은 일반적으로 스칼라(scalar)와 병렬 자원 요건(parallel resource requirement)의 양을 변화시키면서 프로그램을 실행할 수 있는 마이크로프로세서에 관한 것이며, 특히 다중 코어를 사용하는 마이크로프로세서에 관한 것이다.
일부 실시예에서, 컴퓨터 워크로드(workload)는, 고유의 병렬 기능(parallelism)을 갖지 않는(확실하게 스칼라인) 것으로부터 충분한 양의 병렬 구조를 갖는(확실히 병렬적인) 것에 이르기까지 연속하여(in a continuum) 동작하며, 이러한 특성은 소프트웨어에 있어서 세그먼트 단위마다 변화할 수 있다. 통상적인 스칼라 워크로드는 소프트웨어 개발 툴, 오피스 제품군(office productivity suites), 및 운영체제 커널 루틴을 포함한다. 통상적인 병렬 워크로드는 3D 그래픽, 미디어 프로세싱, 및 학술 어플리케이션을 포함한다. 스칼라 워크로드는 클럭 당 명령(instruction per clock; IPC)을 0.2 내지 2.0의 범위로 방출하고, 반면 병 렬 워크로드는 4 내지 수천 IPC 범위의 처리량을 달성할 수 있다. 후자의 높은 IPC는 명령 레벨의 병렬구조(instruction-level parallelism) 및 스레드 레벨의 병렬구조(thread-level parallelism)를 이용함으로써 얻을 수 있다.
종래 기술의 마이크로프로세서는 흔히 스칼라 또는 병렬적 성능 중 하나를 주요한 목적으로 하여 설계되어 왔다. 고성능 스칼라 성능을 얻기 위해, 흔히 실행 대기 시간(execution latency)을 가능한 감소시키는 것이 필요하다. 유효 대기 시간을 감소시키기 위한 마이크로아키텍처 기술은 추론적 실행(speculative execution), 분기 예측 및 캐싱(caching)을 포함한다. 고성능 스칼라 기능에 대한 연구는 매우 비순차적인, 매우 추론적인, 깊은 파이프라인 마이크로프로세서를 낳았다. 높은 병렬적 성능을 얻기 위해, 가능한 많은 실행 처리량(대역폭)을 제공하는 것이 필요할 수 있다. 처리량을 증가시키기 위한 마이크로아키텍처 기술은 넓은 수퍼스칼라 프로세싱, 단일 명령 복수 데이터 방식의 명령(single-instruction-multiple-data instruction), 칩 레벨의 멀티 프로세싱 및 멀티스레딩을 포함한다.
스칼라와 병렬 작업 양쪽에서 모두 잘 동작하는 마이크로프로세서를 생산하고자 하는 경우 문제가 발생할 수 있다. 한가지 문제는 짧은 대기 시간을 얻는데 필요한 설계 기술은 일부 경우에 있어서 높은 처리량을 얻는데 필요한 설계 기술과 매우 다르다는 점에서 발생할 수 있다.
본 발명은 첨부된 도면의 도에 있어서 한정이 아닌 예시의 방법으로 도시된 것이며, 유사한 참조 부호는 유사한 구성 요소를 나타낸다. 도면에서,
도 1은 일 실시예에 따른, 전압과 주파수에 의해 구성 가능한 코어를 포함하는 프로세서의 개략적인 다이어그램.
도 2는 일 실시예에 따른, 프로세싱 전력 및 전력 소비에 의해 선택 가능한 코어를 포함하는 프로세서의 개략적인 다이어그램.
도 3은 일 실시예에 따른, 선택적인(optional) 성능 회로에 의해 구성 가능한 코어를 포함하는 프로세서의 개략적인 다이어그램.
도 4는 본 명세서의 일 실시예에 따른, 선택적인 추론 회로에 의해 구성 가능한 코어를 포함하는 프로세서의 개략적인 다이어그램.
도 5는 본 명세서의 일 실시예에 따른, 코어와 스로틀(throttle) 모듈의 세부 요소를 포함하는 프로세서의 개략적인 다이어그램.
도 6은 본 명세서의 다른 실시예에 따른, 다른 코어 구성으로의 변화를 도시하는 흐름도.
도 7은 본 명세서의 다른 실시예에 따른, 다른 코어 구성으로의 변화를 도시하는 흐름도.
도 8은 본 명세서의 다른 실시예에 따른, 다른 코어 구성으로의 변화를 도시하는 흐름도.
도 9는 본 명세서의 다른 실시예에 따른, 다른 코어 구성으로의 변화를 도시하는 흐름도.
도 10A는 본 명세서의 일 실시예에 따른, 스로틀과 복수의 코어를 구비한 프 로세서를 포함하는 시스템의 개략적인 다이어그램.
도 10B는 본 명세서의 다른 실시예에 따른, 스로틀과 복수의 코어를 구비한 프로세서를 포함하는 시스템의 개략적인 다이어그램.
이하, 소프트웨어 프로그램에서 가용한 병렬 기능의 양에 따라 각 명령을 처리하는데 소비되는 에너지의 양을 변화시키는 기술에 대해 설명한다. 이하의 설명에서, 로직 구현, 소프트웨어 모듈 할당, 버스 및 기타 인터페이스 시그널링 기술, 및 상세 연산과 같은 수많은 상세 내용이 본 발명의 보다 정확한 이해를 제공하기 위해 나열된다. 그러나, 당업자라면 그러한 상세 내용이 없이도 본 발명을 실시할 수 있음을 인식할 것이다. 다른 예에서, 제어 구조, 게이트 레벨의 회로 및 전체 소프트웨어 명령 시퀀스는 발명을 모호하게 하지 않도록 상세하게 다루지 않았다. 당업자는, 첨부된 명세서로, 별도의 실험 없이 적절한 기능성을 구현할 수 있다. 소정 실시예에서, 발명은 Intel® Corporation에 의해 생산된 것과 같은 Pentium® 겸용 프로세서의 멀티코어 구현 형태로 개시된다. 그러나, 본 발명은 Intanum 프로세서 패밀리 겸용 프로세서, X-Scale® 패밀리 겸용 프로세서, 또는 다른 회사 또는 설계자의 임의의 프로세서 아키텍처로부터의 다양한 종류의 다른 임의의 범용 프로세서와 같은, 다른 종류의 프로세서로 실시될 수 있다. 또한 일부 실시예는, 그래픽, 네트워크, 이미지, 커뮤니케이션, 또는 임의의 다른 공지의 또는 다른 방식의 가능한 종류의 프로세서와 같은, 특정 목적의 프로세서를 포함하거나 그러한 프로세서에 대한 실시예일 수 있다.
전력 효율은 와트(watt) 당 IPS(instruction-per-second)의 값으로 측정될 수 있다. IPS/watt 메트릭(metric)은 명령 당 에너지와 동등하고, 또는 더 정확히는, 아래 식과 같이 IPS/watt는 명령 당 에너지의 역수에 비례한다.
(IPS)/(Watt) = (명령)/(줄(Joule))
명령 메트릭(instruction metric) 당 에너지의 중요한 특성은 명령 처리에 필요한 시간의 양에 독립적이라는 것이다. 이러한 점이 명령 당 에너지를 처리량 성능에 유용한 메트릭으로 만든다.
마이크로프로세서의 전력 소비에 대한 대략적인 분석은 마이크로프로세서를 처리된 모든 명령과 함께 충전 또는 방전되는 커패시터로 모델링함으로써 수행될 수 있다(단순화를 위해, 누설 전류와 단락 스위칭 전류(short-circuit switching current)는 무시될 수 있다). 이러한 가정에 의해, 명령 당 에너지는 단 두 가지값에 종속될 수 있다: 즉, (인출에서 방출까지) 각 명령 처리에 토글된 커패시턴스의 양과, 전력 공급 전압이다. 즉, 이하의 잘 알려진 공식이다.
E = C V2 / 2
이는 일반적으로 커패시터에 적용되는 공식이며, 마이크로프로세서에도 적용될 수 있다. E는 명령 처리에 필요한 에너지이고, C는 명령 처리에 토글된 커패시 턴스의 크기이며, V는 전력 공급 전압이다.
마이크로프로세서는 고정된 전력 예산(budget), 예를 들면 100 와트, 내에서 동작할 수 있다. 소정 시간 간격에 걸쳐 평균하여, 마이크로프로세서의 전력 소비는 마이크로프로세서 또는 소프트웨어가 하는 일에 관계없이 전력 예산을 초과할 수 없다. 이러한 목적을 달성하기 위해, 마이크로프로세서는 일부 형태의 동적 열 관리(dynamic thermal management)를 통합할 수 있다. 이와 유사하게, 칩 레벨의 멀티프로세서는 예를 들면 클럭당 0.2 명령을 방출하고 있는지 또는 20 명령을 방출하고 있는지에 관계없이 고정된 전력 예산 내에 남기 위해 활동성을 조절(또는 스로틀(throttle))할 수 있다. 좋은 성능을 얻기 위해, 본 예에서 칩 레벨 멀티프로세서는 MIPS/watt를, 또는 대등하게는 에너지/명령을, 100:1 이상의 범위로 변화시킬 수 있어야 한다.
고성능의 스칼라 성능과 높은 처리량 성능을 모두 얻을 수 있는 마이크로프로세서를 디자인하는 한 가지 접근법은 소프트웨어에서 가용하거나 가용할 것으로 예측되는 병렬 기능의 양에 따라 각 명령을 처리하는데 소비되는 에너지의 양을 동적으로 변화시키는 것이다. 다시 말해, 병렬 기능의 양이 적은 경우, 마이크로프로세서는 몇몇 명령을 처리함에 있어서 가용한 모든 에너지를 소비할 수 있고, 병렬 기능의 양이 많은 경우, 마이크로프로세서는 각 명령을 처리함에 있어서 매우 작은 에너지를 소비할 수 있다. 이는 이하의 식과 같이 표현될 수 있다.
P = (EPI) x (IPS)
여기서 P는 고정된 전력 예산이고, EPI는 방출된 명령 당 평균 에너지이며, IPS는 전체 프로세서 코어를 통해 초당 방출된 명령의 총 수이다. 본 실시예는 총 멀티프로세서 칩 전력을 거의 일정한 레벨에서 유지하고자 한다.
서로 다른 명령 당 에너지 비율을 얻기 위해 시모스(Complementary Metal-Oxide-Semiconductor; CMOS) 전압 및 주파수 스케일링이 이용될 수 있다. 일 실시예에서, 로직은 마이크로프로세서의 전력 공급 전압 및 클럭 주파수를 필요한 성능 및 전력 레벨에 따라 조화롭게(in unison) 변형시킨다. 칩 레벨 멀티프로세서의 총 전력 소비를 고정된 전력 예산 내로 유지하기 위하여, 전압 및 주파수 스케일링이 이하와 같이 동적으로 적용될 수 있다. 낮은 스레드 병렬 기능의 위상에 있어서, 최상의 스칼라 성능을 위하여 몇몇 코어가 높은 전력 공급 전압과 고주파수를 이용하며 동작할 수 있다. 높은 스레드 병렬 기능의 위상에 있어서, 최상의 처리량 성능을 위하여 많은 코어가 낮은 공급 전압과 낮은 주파수를 이용하며 동작할 수 있다. 비활성(inactive) 코어에 대하여는 낮은 전력 소모가 요구될 수 있기 때문에, 동적 휴면 트랜지스터(dynamic sleep transistor) 및 바디 바이어스(body bias)와 같은 누설 제어 기술(leakage control technique)이 이용될 수 있다.
이제 도 1을 참조하면, 일 실시예에 따른, 전압과 주파수에 의해 구성 가능한 코어를 포함하는 프로세서의 개략적인 다이어그램이 도시되어 있다. 코어1(120), 코어2(130), 코어3(140) 및 코어4(150)가 도시되어 있으나, 다른 실시예에서는 프로세서 내에 4개 이상 또는 이하의 코어가 존재할 수 있다. 하나 이상의 코어는 전압 제어 회로 및 클럭 주파수 제어 회로를 구비할 수 있다. 도 1은 코어 1(120)이 전압 제어 회로(122) 및 주파수 제어 회로(124)를 구비하고 있음을 명시하나, 다른 코어도 동등한 회로를 구비할 수 있고, 또는 전압 제어 회로 및 주파수 제어 회로가 특정 코어에 직접 연관되지 않은 분리된 로직으로 존재할 수 있다.
스로틀 모듈(110)은 정보를 취합하여 소프트웨어 프로그램을 실행함에 있어서 존재하는 병렬 기능의 양을 결정하거나 예측하는데 이용될 수 있다. 일 실시예에서, 병렬 기능의 양은 지원되는 동시 스레드의 수일 수 있다. 다른 실시예에서, 초당 방출된 명령의 총 수, 또는 추론적 멀티스레드 실행을 지원할 수 있는 분기 명령의 수와 같은, 다른 메트릭이 병렬 기능의 양을 나타내는데 이용될 수 있다. 스로틀 모듈(110)은 병렬 기능의 양을 결정하는 것을 돕기 위해 운영체제에 의해 제공된 정보를 이용할 수 있다. 다른 실시예에서, 스로틀 모듈(110)은 프로세서와 코어 내의 하드웨어 로직을 이용하여 이러한 결정을 할 수 있다. 상기 결정은 연속적 기반으로 또는 주기적으로 이루어질 수 있다.
스로틀 모듈(110)이 프로그램 내의 병렬 기능의 양을 결정하는 각 시간마다, 코어(120, 130, 140, 150)는 신호 라인(112, 114, 116 및 118)을 통해 전압과 클럭 주파수를 변경하도록 할 수 있다. 일 실시예에서, 신호 라인(112, 114, 116 및 118)은 또한 코어를 온오프시키거나, 코어를 포함하는 전력 공급처(power well)로부터 전력을 제거하는데 이용될 수 있다. 다른 실시예에서, 코어는 클럭 게이팅(clock gating) 또는 명령 고갈(instruction starvation) 기술에 의해 턴오프(turn off)될 수 있다. 일 실시예에서, 현재 스레드 레벨 병렬 기능의 양이 이전 양을 임계치 값 이상 초과할 경우, 스로틀 모듈은 더 많은 수의 코어 상에서 스 레드를 동작시키는 것 외에, 각 코어의 전압 및 클럭 주파수를 감소시킴으로써 더 많은 수의 스레드를 동작시키는 것으로의 천이(transition)를 개시할 수 있다. 이전에 턴오프되었던 코어는 더 많은 수의 스레드를 지원하기 위해 턴온(turn on)될 수 있다. 이와 유사하게, 현재 스레드 레벨 병렬 기능의 양이 이전 양보다 임계치 값 이상 적을 경우, 스로틀 모듈은 더 적은 수의 코어 상에서 스레드를 동작시키지는 것 외에, 일부 코어의 전압 및 클럭 주파수를 증가시킴으로써 더 적은 수의 스레드를 동작시키는 것으로의 천이를 개시할 수 있다. 이전에 턴온되었던 일부 코어는 더 적은 수의 스레드를 지원하는데 더 이상 필요하지 않을 수 있게 됨에 따라 턴오프될 수 있다.
일 실시예에서 성능과 전력의 범위를 측정하는데 서로 다른 마이크로아키텍처가 사용될 수 있는, 단일 명령 집합 아키텍처(single-instruction-set-architecture; ISA) 혼성 멀티코어 마이크로프로세서(heterogeneous multi-core microprocessor)를 설계하는 것이 가능할 수 있다. 일 실시예에서, 칩 레벨의 멀티프로세서는 두 가지 유형의 프로세서 코어로부터 생산될 수 있으며, 이는 큰 코어(large core)와 작은 코어(small core)로 지칭된다. 두 유형의 코어는 동일한 명령 집합 아키텍처를 구현하고, 공유 메모리를 구현하기 위해 캐시 일관성(cache coherency)을 이용하며, 마이크로아키텍처에 있어서만 상이할 수 있다. 다른 실시예에서, 두 유형의 코어는 유사한 명령 집합 아키텍처를 구현할 수 있고, 또는 작은 코어는 큰 코어의 명령 집합의 서브집합을 구현할 수 있다. 큰 코어는 비순차적인, 수퍼스칼라의, 깊은 파이프라인 시스템(machine)일 수 있고, 반면 작은 코어 는 순차적인, 스칼라의, 짧은 파이프라인 시스템(machine)일 수 있다. 인텔 펜티엄 4 프로세서와 인텔 i486 프로세서는 두 코어 계층의 대표적인 예이다. 다른 실시예에서, 실질적으로 유사하거나 동일한 명령 집합 아키텍처를 동작시키는 두 개 이상의 계층 또는 두 개 이상의 성능 레벨의 코어가 사용될 수 있다.
일 실시예에서, 칩 레벨 멀티프로세서는 하나의 큰 코어와 25개의 작은 코어를 포함하며, 상기 두 유형의 코어는 전력 소비 면에서 25:1의 비율을, 스칼라 성능에 있어서 5:1의 비율을, 명령 당 에너지 범위에서 5:1의 비율을 가진다. 칩 레벨 멀티프로세서 또는 본 실시예는 이하와 같이 동작할 수 있다. 낮은 스레드 레벨 병렬 기능의 경우, 큰 코어가 최상의 스칼라 성능을 위해 동작할 수 있다. 높은 스레드 레벨 병렬 기능의 경우, 복수의 작은 코어가 최상의 처리량 성능을 위해 동작할 수 있다.
어느 순간에 있어서나, 마이크로프로세서는 하나의 큰 코어 또는 25개의 작은 코어 중 한쪽을 동작시킬 수 있다. 가용 소프트웨어 스레드의 수가 시간에 따라 변화하게 되므로, 비대칭 멀티프로세서(asymmetric multiprocessor)는 스레드를 큰 코어와 작은 코어 사이에서 이동시킬 수 있어야 한다. 이러한 기능을 지원하기 위해 스레드 이동(thread-migration) 로직이 구현될 수 있다.
실무상, 큰 코어를 스위치 오프하는 시점에서의 처리량 성능의 불연속성(discontinuity)을 감소시키기 위해 몇몇의 작은 코어가 큰 코어와 동시에 동작하도록 하는 것이 필요할 수 있다. 이전의 예에서, 큰 코어를 스위치 오프하고 두 개의 작은 코어를 스위치 온함으로써 3개 단위의 처리량의 불연속성이 야기될 수 있다. 손실된 총 처리량의 비율을 감소시키기 위해, 전력 공급이 단기간 동안 지원할 수 있다면, 예를 들어 5개까지의 작은 코어를 큰 코어와 동시에 동작하도록 함으로써 더 많은 수의 동작 스레드를 이용하여 불연속성이 발생하는 것을 제거할 수 있다.
오늘날 마이크로프로세서를 대표하는 두 유형의 코어를 이용하여, 4:1 범위의 명령 당 에너지를 얻을 수 있다. 미래의 마이크로프로세서가 보다 높은 레벨의 스칼라 성능을 계속하여 얻게 됨에 따라, 가능한 명령 당 에너지의 범위는 아마도 6:1 또는 그 이상 비율로 증가될 것으로 기대할 수 있다.
이제 도 2를 참조하면, 일 실시예에 따른, 프로세싱 전력 및 전력 소비에 의해 선택 가능한 코어를 포함하는 프로세서의 개략적인 다이어그램이 도시되어 있다. 프로세서는 수 개의 큰 코어, 즉 A코어를 포함할 수 있고, 또한 다수의 작은 코어, 즉 B코어를 포함할 수 있다. A코어1(220), A코어2(222) 및 B코어1 내지 60(230-262)이 도시되어 있으나, 다른 실시예에서는 프로세서 내에 두 개의 A코어와 60개의 B코어 이상 또는 이하의 수가 존재할 수 있다.
스로틀 모듈(210)은 여기서도 정보를 취합하여 소프트웨어 프로그램에 존재하는 병렬 기능의 양에 대하여 결정할 수 있다. 일 실시예에서, 병렬 기능의 양은 지원되는 동시 스레드의 수일 수 있다. 다른 실시예에서, 이전에 기술된 것과 같이 병렬 기능의 양을 나타내기 위해 다른 메트릭이 사용될 수 있다. 스로틀 모듈(210)은 병렬 기능의 양을 결정하는 것을 돕기 위해 운영 체제에 의해 제공된 정보를 이용할 수 있다. 다른 실시예에서, 스로틀 모듈(210)은 프로세서와 코어 내 의 하드웨어 로직을 이용하여 이러한 결정을 할 수 있다. 상기 결정은 연속적 기반으로 또는 주기적으로 이루어질 수 있다.
가용 소프트웨어 스레드의 수는 시간에 따라 변화할 수 있기 때문에, 도 1의 프로세서는 스레드를 큰 A코어와 작은 B코어 사이에서 이동시킬 수 있는 스레드 이동 로직(thread-migration logic)(212)을 포함할 수 있다. 큰 A코어를 스위치 오프하는 시점에서의 처리량 성능 불연속성을 감소시키기 위해 수 개의 작은 B코어를 큰 A코어와 동시에 동작하도록 하는 것이 필요할 수 있다. 손실된 총 처리량의 비율을 감소시키기 위해, 예를 들면 5개까지의 작은 코어를 큰 코어와 동시에 동작하도록 함으로써 더 많은 수의 동작 스레드를 이용하여 불연속성이 발생하는 것을 제거할 수 있다.
스로틀 모듈(210)이 프로그램 내의 병렬 기능의 양을 결정하는 매 시간마다, 신호 라인(224 내지 266)을 이용하여 A코어와 B코어로의 전력 증감을 개시할 수 있다. 일 실시예에서, 현재 병렬 기능의 양이 이전 양을 임계치 이상 초과하는 경우, 스로틀 모듈(210)은, 스레드 이동 로직(212)을 이용하여, 더 많은 수의 B코어 상에서 동작할 수 있는 더 많은 수의 스레드를 동작시키는 것으로의 천이를 개시한다. 이전에 턴오프되었던 B코어는 더 많은 수의 스레드를 지원하기 위해 턴온될 수 있고, 턴온되었던 임의의 A코어는 턴오프될 수 있다. 이와 유사하게, 현재 병렬 기능의 양이 이전 양보다 임계치 이상 적은 경우, 스로틀 모듈은 더 적은 수의 A코어 상에서 스레드를 동작시킴으로써 더 적은 수의 스레드를 동작시키는 것으로의 천이를 개시한다. 이전에 턴온되었던 B코어는 더 이상 적은 수의 스레드를 지 원할 필요가 없어질 수 있음에 따라 턴오프될 수 있고, A코어는 더 적은 수의 스레드를 지원하기 위해 턴온될 수 있다. 상기 언급된 바와 같이, 큰 코어를 스위치 오프하는 시점에서의 처리량 성능의 불연속성을 감소시키기 위해 수 개의 B코어를 A코어와 동시에 동작하도록 할 필요가 있을 수 있다.
일 실시예에서, 스로틀 모듈은 피드백 루프를 필요로 하지 않는 방식으로 구현될 수 있다. 이 경우 스로틀의 제어 동작(예로, 스레드를 동작시킬 코어의 종류와 수에 대한 결정)은 입력 값(예로, 스레드에 대한 코어의 할당 및 구성)에 영향을 주도록 회귀되지 않는다. 이러한 실시예에 있어서, 각 A코어(220, 222)는 25개의 B코어(230 내지 262)와 동일한 양의 전력을 소비할 수 있다고 추측할 수 있다. 다른 실시예에서, 다른 전력 소비 비율이 이용될 수 있다. 프로세서는 총 전력 예산을 두 부분으로 분할할 수 있다. 각 부분에 대해, 전력 예산은 하나의 A코어와 5개까지의 B코어를 동시에 동작시키거나, A코어는 동작시키지 않고 30개까지의 B코어를 동시에 동작시키도록 허용할 수 있다. 다른 실시예에서, 전력 예산은 다른 방식으로 분할될 수 있다.
일 실시예에서, 동작 스레드(running thread; RT)의 수는 표 1에 따라 A코어의 수(quantity of A cores; QAC) 및 B코어의 수(quantity of B cores; QBC)에 할당될 수 있다.
Figure 112007024071342-pct00001
동작 스레드의 수가 증가하고, 새로운 스레드가 시작되는 경우(인터프로세서 인터럽트를 경유한 실시예에서), 스로틀 모듈은 현재 동작 스레드(currently-running thread)의 수를 결정할 수 있다. 현재 동작 스레드의 수에 따라, 새로운 스레드는 상기 표 1에 따라 A코어 또는 B코어에 할당될 수 있다. 이러한 실시예에 있어서, 스레드 수가 12에서 13으로 또는 36에서 37로 증가하는 경우와 같은 특정한 경우에 대해, A코어에서 동작 중인 기존 스레드는 B코어 상에서 동작하도록 이동될 것이다. 이러한 이동이 완료되면, 이동한 기존 스레드와 새로운 스레드 모두 시작될 수 있다. 이러한 이유로, 본 실시예에서 새로운 스레드는 시작할 때 딜레이를 보일 수 있다.
동작 스레드의 수가 감소하는 경우 유사한 프로세스가 발생할 수 있다. 특정 스레드가 종료하고, 스레드의 코어가 정지되는 경우, 남은 스레드 중 하나를 B코어 상으로부터 A코어 상에서 동작하도록 잠재적으로 이동시키는데 다양한 방법이 이용될 수 있다. 이는, 예를 들면, 동작 스레드의 수가 13에서 12로, 또는 37에서 36으로 감소하는 경우 발생할 수 있다. 일 실시예에서, 특정 시간 간격 내에 단 한 번만 이동이 허용되도록 주기적인 타이머가 사용될 수 있다. 이는 스레드가 빠르게 생성되고 종료되는 경우에 있어서 너무 빈번한 스레드 이동을 효과적으로 방지할 수 있다. 그러한 영향을 받은 스레드는 특정 시간 간격까지 동안 B코어 상에 남아 동작할 수 있다.
일 실시예에서, 스로틀 모듈은 소프트웨어에 공개적으로(transparently) A코어로부터 B코어로 이동을 수행할 수 있다. 스로틀 모듈의 스레드 이동 메카니즘은 논리 코어(logical core)를 물리 코어(physical core)로 매핑하는 테이블, 코어 이동이 필요할 수 있음을 알리는 인터럽트, 코어의 프로세서 상태를 복제하는 마이크로코드(microcode) 또는 하드와이어드 로직(hardwired logic) 및 프로세서의 코어 간의 상호 연결 네트워크(interconnect network)를 포함할 수 있다. 논리 코어의 수는 B코어의 수와 일치할 수 있다.
다른 실시예에서, 스로틀 모듈은 소프트웨어에 공개되지 않은 방식으로 A코어로부터 B코어로 이동을 수행할 수 있다. 스레드 이동은 운영 체제 스케줄러에 의해 수행될 수 있다. 운영 체제는 현재 스레드가 동작중인 코어의 수를 추적하고, 새로운 스레드를 코어에 할당하며, 스레드를 A코어에서 B코어로(또는 B코어에서 A코어로) 이동시킬 수 있다. 소프트웨어 스레드 이동은 하드웨어 구현의 측면에서 상기 기술된 것과 동등한 기능을 사용할 수 있다. 일 실시예에서, 스로틀 모듈 동작은 운영 체제에는 공개되지 않으나 어플리케이션 프로그램에는 공개될 수 있다.
전력 소비를 조정하는 다른 한가지 방법은 로직 블록(logic block)의 크기 또는 기능성을 조정하는 것이다. 예를 들면, 큰 어레이(array) 사이즈가 필요하지 않은 경우, 가변 크기의(variable-sized) 스케줄러, 캐시, 변환 색인 버퍼(translation look-aside buffer; TLB), 분기 예측기, 및 기타 선택적인 성능 회로가 스위칭 커패시턴스(또한 에너지)를 감소시키는데 이용될 수 있다. 동적으로 리사이즈되는 어레이외에, 실행 유닛, 파이프라인 스테이지(pipeline stage) 및 기타 선택적인 성능 회로를 동적으로 디스에이블(disable)시킴으로써 작은 코어의 성능으로 그 성능을 강등시키는 큰 코어를 설계할 수도 있다. 이러한 기술은 통합적으로 적응 프로세싱(adaptive processing)으로 알려져 있다.
칩 레벨의 멀티프로세서의 일 실시예는 다음과 같이 동작할 수 있다. 낮은 스레드 병렬 기능의 위상에 있어서, 좋은 스칼라 성능을 위해 각 코어 상에서 가용한 선택적 성능 회로의 첫번째 집합(예로, 전부 또는 많은 수)을 이용하여 수 개의 코어가 동작될 수 있다. 높은 스레드 병렬 기능의 위상에 있어서, 좋은 처리량 성능을 위해 각 코어 상에서 적은 수의 선택적인 성능 회로를 이용하여 많은 수의 코어가 동작될 수 있다.
어레이 사이즈를 줄이고 실행 유닛을 디스에이블시키는 것의 궁극적인 결과는 명령 당 토글된 커패시턴스를 감소시키는 것일 수 있다. 그러나, 스위칭 커패시턴스는 함께 동작할 작은 코어를 설계하는 것만큼 감소하지 않을 수 있다. 사용되지 않는 실행 하드웨어는 차단(gate off)될 수 있으나, 코어의 물리적인 크기는 변하지 않으며, 따라서 계속 활성상태인 하드웨어 블록과 연관된 배선 길이는 작은 코어에 있어서보다 긴 채로 남을 수 있다.
명령 당 에너지에 있어서 가능한 감소를 예측하는 것은 큰 비순차적 마이크로프로세서의 평면도를 검사하여 프로세서를 작은 순차적 머신으로 변환하기 위해 얼마만큼의 선택적인 성능 회로가 차단될 수 있는지를 판단함으로써 이루어질 수 있다(블록은 물리적으로 제거될 수 없음을 유의). 차단되는 프로세서 코어 영역의 비율은 이렇게 측정될 수 있으며, 이는 스위칭 커패시턴스를 감소시키는 것에 근접할 수 있다. 수학식 2에서, 명령 당 에너지는 대략 스위칭 커패시턴스의 양에 비례한다.
대략적으로 근사하면 일부 경우에서 50%까지의 스위칭 커패시턴스가 차단될 수 있으며, 이는 명령 당 에너지에 있어서 1x 내지 2x의 감소를 가져온다. 일부 실시예에서, 클럭 게이팅 뿐만 아니라 동적 휴면 트랜지스터 및 바디 바이어스와 같은 누설 제어 기술의 이용은 명령 당 소비되는 에너지의 감소를 촉진시킬 수 있다.
이제 도 3을 참조하면, 일 실시예에 따른, 선택적인 성능 회로에 의해 구성 가능한 코어를 포함하는 프로세서의 개략적인 다이어그램이 도시되어 있다. 도 3의 프로세서는 4개의 코어, 즉 코어1(320), 코어2(370), 코어3(380) 및 코어4(390)를 포함할 수 있다. 다른 실시예에서, 4개 이상 또는 이하의 코어가 사용될 수 있다. 코어1(320)은 다양한 선택적 성능 회로를 보인다. 스케줄러A(334)는, 턴온(turn on)될 경우 성능을 향상시킬 수 있는 선택적 스케줄러B(336)에 연결될 수 있다. 실행 유닛1(340)은, 턴온될 경우 성능을 향상시킬 수 있는 선택적 실행 유닛2 내지 4(342, 344, 346)에 연결될 수 있다. 제로 레벨(L0) 캐시A(322)는, 턴온될 경우 성능을 향상시킬 수 있는 L0 캐시B(324)에 연결될 수 있다. TLB A(326)는, 턴온될 경우 성능을 향상시킬 수 있는 TLB B(328)에 연결될 수 있다. 재구성 버퍼(reorder buffer; ROB)(338)는 가변적인 수의 라인을 가질 수 있거나, 또는 비순차적 실행을 방지하기 위해 전부 턴오프(turn off)될 수 있다. 마지막으로 기타 파이프라인 스테이지(330)와 분리된, 프리페치 스테이지(prefetch)(332)는 파워 온된 경우 추론적인 인출(fetch)을 수행한다. 다른 실시예에서, 기타 선택적인 성능 회로가 사용될 수 있다.
스로틀 모듈(310)은 여기서도 정보를 취합하여 소프트웨어 프로그램을 실행시키는데 있어서 존재하는 병렬 기능의 양에 대한 결정을 내릴 수 있다. 스로틀 모듈(310)은 도 1 및 2와 관련하여 상기 기술된 것과 유사할 수 있다. 스로틀 모듈(310)이 프로그램에 있어서의 병렬 기능의 양에 대한 판단을 내리는 각 시점에, 스로틀 모듈(310)은 신호 라인(312, 314, 316 및 318)을 통해 코어(320, 370, 380 및 390)로 하여금 전력이 증감하는 선택적 성능 회로의 수를 변경하도록 조종한다. 일 실시예에서, 신호 라인(312, 314, 316 및 318)은 또한 코어(320, 370, 380 및 390)를 온오프시키는데 이용될 수 있다. 일 실시예에서, 현재 병렬 기능의 양이 이전 양을 임계치 값 이상 초과할 경우, 스로틀 모듈은 더 많은 코어 상에서 스레드를 동작시키는 것 외에, 각 코어 내의 턴온된 선택적 성능 회로를 감소시킴으로써 더 많은 수의 스레드를 동작시키는 것으로의 천이를 개시한다. 이전에 턴오프된 코어는 더 많은 수의 스레드를 지원하기 위해 턴온될 수 있다. 이와 유사하게, 현재 병렬 기능의 양이 이전 양보다 임계치 이상 작을 경우, 스로틀 모듈은 더 적은 수의 코어 상에서 스레드를 동작시키는 것 외에, 일부 코어에서 턴온된 선택적 성능 회로를 증가시킴으로써 더 적은 수의 스레드를 동작시키는 것으로의 천이를 개시한다. 이전에 턴온되었던 일부 코어는 더 적은 수의 스레드를 지원하는데 더 이상 필요하지 않게 됨에 따라 턴오프될 수 있다.
잘못 추론된(misspeculated) 명령, 예를 들면 잘못 예측된 분기(mispredicted branch)를 따른 명령으로 인해 낭비되는 에너지를 감소시키기 위해 다양한 형태의 추론 제어(speculation control)가 제안되어 왔다. 추가적인 에너지는 잘못 추론된 명령을 처리하기 위해 토글된 커패시턴스에 기인한다. 잘못 추론된 명령의 결과는 폐기될 수 있지만, 에너지는 이미 소비된 것이다. 이러한 에너지는 차후의 올바르게 추론된(방출된) 명령이 부담함으로써 책임지워질 수 있다.
파이프라인 게이팅(pipeline gating)은 하나 이상의 낮은 신뢰도(low-confidence)의 분기 예측으로 인해 취소될 가능성이 있는 명령들로 파이프라인이 차는 것을 막는 기술이다. 추론 제어를 이용하는 일 실시예에서, 칩 레벨 멀티프로세서는 다음과 같이 동작할 수 있다. 낮은 스레드 병렬 기능의 위상에 있어서, 좋은 스칼라 성능을 위해 수 개의 코어가 증가된 양의 추론을 사용하여 동작할 수 있다. 높은 스레드 병렬 기능의 위상에 있어서, 좋은 처리량 성능을 위해 많은 코어가 각 코어 상의 감소된 양의 추론을 이용하여 동작할 수 있다.
스케줄러와 재구성 버퍼 엔트리(entry)의 수의 감소는 또한 추론될 수 있는 명령의 수도 감소시키기 때문에, 가변 사이즈 코어 기술과 추론 제어 간에 일부 중복이 존재한다. 캐시, TLB 및 분기 예측기와 같은 기타 프로세서 자원의 크기는 가능한 추론의 양에 큰 영향을 미치지 않을 수 있다.
이제 도 4를 참조하면, 본 명세서의 일 실시예에 따른, 선택적인 추론 회로에 의해 구성 가능한 코어를 포함하는 프로세서의 개략적인 다이어그램이 도시되어 있다. 도 4의 프로세서는 4개의 코어, 즉 코어1(420), 코어2(470), 코어3(480) 및 코어4(490)를 포함한다. 다른 실시예에 있어서, 4개 이상 또는 이하의 코어가 사용될 수 있다. 코어1(420)은 다양한 선택적인 추론 회로를 보여준다. 프리페치 스테이지(430)는 명령을 추론적으로 인출하는데 이용될 수 있다. 분기 예측기(434)는 프로그램 분기의 추론적 실행을 지원하는데 이용될 수 있다. 기타 예측기(436)는 일부 실시예에서 루프 예측기 또는 다른 형태의 추론적 실행을 지원하는 기타 형태의 예측기일 수 있다. 다른 실시예에서, 더 많은 선택적 추론 회로가 사용될 수 있다.
스로틀 모듈(410)은 여기서도 정보를 취합하여 소프트웨어 프로그램을 실행시킴에 있어서 존재하는 병렬 기능의 양에 대한 결정을 내리는데 이용될 수 있다. 스로틀 모듈(410)은 일반적으로 도 1, 2 및 3과 관련하여 상기 기술된 바와 같이 동작할 수 있다. 스로틀 모듈(410)이 프로그램에 있어서의 병렬 기능의 양에 대한 판단을 내리는 각 시점에, 스로틀 모듈(410)은 신호 라인(412, 414, 416 및 418)을 통해 코어(420, 470, 480 및 490)로 하여금 전력이 증감되는 선택적 추론 회로의 수를 변경시키도록 한다. 일 실시예에서, 신호 라인(412, 414, 416 및 418)은 또한 코어(420, 470, 480 및 490)를 온오프시키는데 이용될 수도 있다. 일 실시예에서, 현재 병렬 기능의 양이 이전 양을 임계치 이상 초과할 경우, 스로틀 모듈은 더 많은 수의 코어 상에서 스레드를 동작시키는 것 외에 각 코어의 턴온된 선택적 추론 회로를 감소시킴으로써 더 많은 수의 스레드를 동작시키는 것으로의 천이를 개시한다. 이전에 턴오프되었던 코어는 더 많은 수의 스레드를 지원하기 위해 턴온될 수 있다. 이와 유사하게, 현재 병렬 기능의 양이 이전 양보다 임계치 이상 적은 경우, 스로틀 모듈은 더 적은 수의 코어 상에서 스레드를 동작시키는 것 외에 일부 코어의 턴온된 선택적 추론 회로를 증가시킴으로써 더 적은 수의 스레드를 동작시키는 것으로의 천이를 개시한다. 이전에 턴온되었던 일부 코어는 더 적은 수의 스레드를 지원하는데 더 이상 필요하지 않게 됨에 따라 턴오프될 수 있다.
도 1, 2, 3 및 4와 관련하여 상기 설명된 각각의 기술들에 대해, 스로틀 모듈은 총 칩 전력을 고정된 전력 예산 내에 유지하기 위해 멀티프로세서의 동작을 조정한다. 스로틀 모듈 하드웨어는 초당 방출된 명령의 총 수에 반비례하는 명령 당 에너지의 양을 변화시킴으로써 수학식 3을 만족할 수 있다. 과전력(over power) 상황에 대응하여, 여러 실시예에 있어서 스로틀 모듈은 다음과 같은 하나 이상의 동작을 취할 수 있다: 즉, 전압과 주파수를 낮추거나(도 1에서의 전압 및 주파수 스케일링의 경우), 스레드를 큰 코어에서 작은 코어로 이동시키거나(도 2에서의 비대칭 코어의 경우), 선택적 성능 회로의 용량을 감소시키거나(도 3에서의 가변 사이즈 코어의 경우), 또는 추론의 양을 감소시키는 것이다(도 4에서 추론 제어의 경우).
각 경우에 있어서, 소프트웨어가 하드웨어로 하여금 더 많은 스레드를 동시에 동작시키도록 요청함에 따라 실질 처리량은 증가하지만 기존 스레드는 느려지는 특이한 특성에도 불구하고, 소프트웨어 프로그램은 프로세서를 큰 대칭적(symmetrical) 칩 레벨 멀티 프로세서로 간주할 수 있다. 이러한 접근법으로, 현재의 공유 메모리 멀티프로세서 프로그래밍 모델을 위해 작성된 소프트웨어는 수정 없이 계속 동작할 수 있다.
이제 도 5를 참조하면, 본 명세서의 일 실시예에 따른, 코어와 스로틀(throttle) 모듈의 세부 요소를 포함하는 프로세서의 개략적인 다이어그램이 도시되어 있다. M개의 프로세서 코어1 내지 M(502 내지 508)은, 여러 실시예에 있어서, 도 1에서의 전압과 주파수에 의해 구성 가능한 코어, 도 2에서의 프로세싱 전력 및 전력 소비에 있어서 변화하는 큰 코어 및 작은 코어, 도 3에서의 선택적 성능 회로에 의해 구성 가능한 코어, 도 4에서의 선택적 추론 회로에 의해 구성 가능한 코어, 또는 이들 유형의 일부 또는 전부의 조합일 수 있다. 다른 실시예에 있어서, 다른 유형의 코어가 사용될 수 있다.
모니터1 내지 M(512 내지 518)은 연관된 코어 및 보조 프로세서 회로의 하나 이상의 속성을 모니터링할 수 있다. 일부 실시예에서, 이러한 속성은, 코어가 동작중인지 정지 상태인지, 클럭 사이클 당 방출된 명령의 순간 수(instantaneous number), 코어의 주어진 임의의 기능 블록이 활성(active) 상태인지 휴지(idle) 상태인지, 코어 내부의 것과는 다른 프로세서의 주어진 임의의 기능 블록이 활성(active) 상태인지 휴지(idle) 상태인지, 그리고 공급 전류 및 코어의 온도(또는 다이(die)의 온도)를 포함할 수 있다. 코어 내부의 것과는 다른 프로세서의 기능 블록은 공유 캐시 또는 메모리 컨트롤러와 같은 회로를 포함할 수 있다. 공급 전류는 전류 센서 레지스터(current sensor resistor) 및 아날로그-디지털(A/D) 컨버터를 경유하여 측정될 수 있다. 온도는 열 다이오드(thermal diode) 및 A/D 컨버터를 경유하여 측정될 수 있다. 모니터1 내지 M(512 내지 518) 각각은 이러한 속성들의 전부 또는 일부의 모니터링 값을 출력할 수 있다.
전력 변환 로직(convert-to-power logic)(530)은 모니터1 내지 M(512 내지 518)으로부터의 모니터링 값을 수신할 수 있다. 다양한 실시예에 있어서, 모니터링 값은 전력 소비 단위로 변환될 수 있다. 모니터링 값이 코어가 동작중인지 정지 상태인지를 나타내는 실시예에 있어서, 코어 동작(또는 정지) 상태에, 코어가 동작(또는 정지) 상태에 있는 동안 매 클럭 소비되는 에너지의 평균량을 곱함으로써, 모니터링 값은 전력 소비로 변환될 수 있다. 그 후 이 산출값을 프로세서 내의 모든 코어에 대해 합산할 수 있다. 모니터링 값이 클럭 사이클 당 방출되는 명령의 순간 수를 나타내는 실시예에 있어서, 명령의 수에 클럭 당 명령마다 소비되는 에너지의 평균량을 곱함으로써, 모니터링 값은 전력 소비로 변환된다. 그 후 이 산출값을 프로세서 내의 모든 코어에 대해 합산할 수 있다. 모니터링 값이 코어의 주어진 임의의 기능 블록이 활성 또는 휴지 상태인지를 나타내는 실시예(또는 코어 내부의 것과는 다른 프로세서의 주어진 임의의 기능 블록이 활성 또는 휴지 상태인지를 나타내는 실시예)에 있어서, 활성(또는 휴지) 상태에, 블록이 활성(또는 휴지) 상태에 있는 동안 클럭 당 소비되는 에너지의 평균량을 곱함으로써, 모니터링 값은 전력 소비로 변환될 수 있다. 그 후 이 산출값을 각 코어의 모든 블록에 대해, 또한 프로세서의 모든 코어에 대해 합산할 수 있다. 코어 내에 있지 않은 블록을 감안하는 경우, 그 산출값도 합산에 포함될 수 있다. 각각의 이러한 실시예에 있어서, 합산 결과는 클럭 주파수에 공급 전압의 제곱을 곱한 값에 비례하는 값을 곱함으로써 전압 및 주파수에 대해 조정될 수 있다.
모니터링 값이 각 코어의 공급 전류를 나타내는 실시예에 있어서, 모니터링 값은 공급 전류에 공급 전압을 곱함으로써 전력 소비로 변환될 수 있다.
모니터링 값이 코어 또는 다이의 온도를 나타내는 실시예에 있어서, 도 5의 회로는 거의 일정한 전력 소비를 유지하는데 사용되는 대신 거의 일정한 코어 또는 다이 온도를 유지하는데 사용될 수 있다.
전력 변환 로직(530)의 변환된 전력 소비(또는 다이 온도) 출력값과 희망 전력 소비값(또는 희망 다이 온도값)의 차이를 계산하기 위해 차이 계산 로직(compute-difference logic)(534)이 사용될 수 있다. 상기 차이는 "오차" 값(error value)으로 사용될 수 있다.
적분 로직(538)은 일 실시예에서, 차이 계산 로직(534)에 의해 제공된 오차값의 시간에 대한 적분에 비례하는 적분값을 제공한다. 일 실시예에서, 적분은 누산기(accumulator)를 이용하여 계산될 수 있으며, 이는 가산기(adder) 및 레지스터를 이용하여 구현될 수 있다. 누산기는 오버플로우를 막기 위해 상단 및 하단 경계에 포화(saturated)될 수 있다. 일 실시예에서, 누산기의 출력은, 예를 들면 2 내지 6개의 정수 비트와 2 내지 16개의 분수 비트(fractional bit)를 갖는 고정 소수점(fixed point) 2진수일 수 있다. 누산기의 최상위 비트만을 검사할 수 있으며, 이는 출력이 느리게 변화하도록 하는 속성을 만들 수 있는 이점이 있다. 적분 로직(538)의 이용은 시간에 대한 오차값을 0으로 감소시키도록 하기 위한 느린 피드백 루프(550)에 도움이 된다. 순간 전력 소비는 실질적으로 클럭 사이클마다 변화할 수 있기 때문에, 적분 로직(538)을 이용하는 것은 오차값이 전력인 경우 매우 유용하다.
다른 실시예에 있어서, 적분 로직(538)은 오차값에 비례하는 값을 출력하는 로직으로 대체될 수 있으며, 이는 오차값이 온도인 경우 유용할 수 있다. 또 다른 실시예에서, 로직은 오차값의 시간 미분에 비례하는 값, 또는 상기 값 모두의 소정의 선형 조합을 출력할 수 있다.
샘플 로직(544)은 특정 실시예에서 사용될 수 있다. 이론적으로 적분값은 도 5의 로직의 속도에 비하여 느리게 변화할 수 있지만, 적분 로직(538)으로부터의 적분값은 매 클럭 사이클마다 변화할 수 있다. 일부 제어 기술은 시스템 손실이 거의 없이 매 클럭 사이클마다 동작을 변화시킬 수 있다. 이러한 경우 샘플링은 필요하지 않다. 다른 제어 기술에 있어서, 적분 로직(538)의 출력이 변동 지점 근방에 있는 경우 매 클럭 진동하는 값을 줄일 수 있도록 샘플링을 사용하는 것이 유용할 수 있다.
일 실시예에서, 고정 샘플링 기술이 샘플 로직(544)에 사용될 수 있다. 고정된 클럭 사이클 수(N)에 한번 값이 샘플링될 수 있는 것이다. 이 기술은 상기 값이 매 N 클럭 사이클에 한번 이상 빈번하게 변화하는 것을 방지한다. 그러나, 이러한 기술은 N 클럭 사이클 이하의 시간 간격 동안 제어가 수행될 수 있도록 하지 못하며, N 클럭 사이클의 시간 간격과 비교할 때 적분이 느린 경우에 최상으로 동작할 수 있다.
다른 실시예에서, 이력 기술(hysteresis technique)이 샘플 로직(544)에 사용될 수 있다. 샘플 로직(544)의 출력은 입력값과 출력값의 차이가 임계치 값(T)를 초과하는 경우에만 변화할 수 있다. 상기 차이가 T를 초과하는 경우 출력값은 입력값으로 대체될 수 있고, 그렇지 않은 경우 출력값은 변화하지 않고 남을 수 있다.
느린 피드백 루프(550)를 사용하는 실시예에 있어서, 제어 로직(548)이 사용될 수 있다. 일 실시예에서, 도 1의 경우와 같이, 공급 전압 및 주파수를 변경시킴으로써 코어가 전력 소비를 변화시키는 경우, 제어 로직(548)은 공급 전압과 주파수의 변경을 관리할 수 있다. 이러한 실시예에 있어서 전력 공급 전압을 변경시키는 것은, 100ms와 같은, 상대적으로 긴 시간이 소요될 수 있다는 것을 유의하여야 한다. 일 실시예에서, 테이블 또는 로직 블록이 전력 공급 전압 및 주파수를 설정하는데 사용될 수 있다. 표 2는 다양한 값의 제어 값(control value; CV)에 대하여 그러한 테이블 또는 로직 블록의 예를 보여준다.
Figure 112007024071342-pct00002
일 실시예에서, 도 2의 경우와 같이, 스레드가 큰 코어 및 작은 코어에 할당될 수 있는 경우, 제어 로직(548)은 소프트웨어에 공개적으로 스레드를 코어에 할당하고 제어값에 따라 스레드를 이동시킬 수 있다. 스레드 이동 메카니즘은 "논리" 프로세서 코어를 "물리" 프로세서 코어에 매핑하는 테이블 또는 로직 블록을 포함할 수 있다. 스레드 이동 메카니즘은 또한 이동이 요청되었음을 알리는 인터럽트, 프로세서 상태를 복제하는 마이크로코드 또는 등가 로직, 및 다양한 프로세서 코어들 간의 상호접속 네트워크를 포함할 수 있다. 소프트웨어에 노출된 논리 프로세서의 수는 동작중인 작은 코어의 수와 동일할 수 있다. 전력 예산이 허락하는 경우 작은 코어를 큰 코어로 대용할 수 있다. 큰 코어를 제어값의 역할로 사용하는 계획에 이용되는 테이블 또는 로직 블록이 일 실시예에 있어서 표 3과 같이 주어질 수 있다.
Figure 112007024071342-pct00003
여기서 큰 코어가 사용되지 않는 경우 스레드는 작은 코어 상에서 동작할 것이라는 단순화된 가정이 이루어질 수 있다.
일 실시예에서, 도 3의 경우와 같이, 자원이 동적으로 변화 가능한 코어에 스레드가 할당될 수 있는 경우, 제어 로직(548)은 코어의 기능 유닛의 수 또는 용량을 변경시킬 수 있는 제어값을 부여할 수 있다. 일부 실시예에서, 코어의 용량을 변화시키는 것이 어레이를 채우거나 다시 기록되게, 또는 파이프라인을 다시 채우도록 할 것을 필요로 할 수 있는 경우, 변경을 위해 사용된 시간은 10ms의 범위 내일 수 있다. 코어 기능 유닛을 제어값의 역할로 사용하는 계획에 테이블 또는 로직 블록이 이용될 수 있다. 기능 유닛을 제어값의 기능으로 사용하는 계획에 이용된 테이블 또는 로직 블록은 일 실시예에서 표 4와 같이 주어질 수 있으며, 상기 기능 유닛은 코어의 실행 유닛일 수 있다.
Figure 112007024071342-pct00004
일 실시예에서, 도 4의 경우와 같이, 추론의 양이 동적으로 변화 가능한 코어에 스레드가 할당될 경우, 제어 로직(548)은 코어 내에서 허용된 추론의 양을 변경시킬 수 있는 제어값을 부여할 수 있다. 코어 내의 추론의 양을 제어값의 역할로 사용하는 계획에 테이블 또는 로직 블록이 이용될 수 있다. 추론의 양을 제어값의 역할로 조정하는데 이용되는 테이블 또는 로직 블록이 일 실시예에서 표 5와 같이 주어질 수 있으며, 상기 추론의 양은 코어의 비추론적(non-speculative) 명령에 앞서 추론적으로 실행하는 명령의 수로 주어질 수 있다.
Figure 112007024071342-pct00005
많은 실시예에서, 프로세서 코어는 다양한 상기 속성들을 포함할 수 있다. 예를 들면, 프로세서는 전압 및 주파수 스케일링이 가능하고, 또한 추론적 실행의 양이 조정 가능한 코어를 포함할 수 있다. 일 실시예에서, 도 2의 큰 A코어와 작은 B코어도 도 1에 도시된 바와 같은 전압 및 주파수 스케일링을 포함할 수 있다. 일 실시예에 대해, 전압 및 주파수는 고정되어, 큰 A코어는 높은 전압에서 동작하도록 구성되고 작은 B코어는 낮은 전압에서 동작하도록 구성될 수 있다. 다른 실시예에서, 전압 및 주파수의 조정 범위는 큰 A코어와 작은 B코어 간에 상이할 수 있다. 큰 A코어와 작은 B코어 간의 이동을 보조하기 위해, 작은 B코어가 애초에 높은 전압과 주파수에서 동작하고 있는 경우, 스레드는 큰 A코어로부터 작은 B코어로 이동할 수 있다. 일단 큰 A코어가 동작하고 있지 않게 되면 B코어의 전압 및 주파수는 추후적으로 낮아질 수 있다.
다시 한번, 테이블 또는 로직 블록은 스레드를 큰 A코어 또는 작은 B코어에 할당하는데 이용될 수 있으며, 또한 스레드를 코어의 전압 및 주파수에 할당하는데 이용될 수 있다. 이러한 조정을 제어값의 역할로 만드는데 이용되는 테이블 또는 로직 블록은 일 실시예에서 표 6과 같이 주어질 수 있다.
Figure 112007024071342-pct00006
느린 피드백 루프(550)에 대하여 어느 정도 일정한 이득(gain)을 유지하는 것이 바람직할 수 있으며, 이는 그러한 테이블 또는 로직 블록에 있어서 각 단계(gradation)의 전력 효과를 사이즈 면에서 유사하게 만듦으로써 달성될 수 있다.
소정 실시예에 있어서, 빠른 피드백 루프(560)가 이전 논의된 느린 피드백 루프(550)와 관련하여 사용될 수 있다. 클럭 조절(clock throttling)은 명령 당 에너지의 양에 영향을 주지 않을 수 있으나, 일 실시예에서 클럭 스로틀(540)이 사용될 수 있다. 클럭 스로틀(540)을 사용하는 것은 상기 논의된 느린 피드백 루프(550) 기술이 하나 이상 조합되어 사용되는 경우 바람직할 수 있다.
소정의 경우에 있어서, 빠른 피드백 루프(560)는 과전력 상황을 방지하기 위한 짧은 대기시간의 경우 적용될 수 있으며, 어플리케이션은 느린 피드백 루프(550)가 응답할 시간을 가질 때까지만 유효하게 남을 수 있다. 빠른 피드백 루프(560)가 구현되지 않은 실시예에 있어서, 프로세서 및 그 전력 전달 시스템은 느린 피드백 루프(550)의 응답 시간 만큼 지속되는 과전력 상황을 처리하도록 설계되어야 한다. 빠른 피드백 루프(560)가 추가된 경우, 과전력 상황은 빠른 피드백 루프(560)의 응답 시간보다 오래 지속되지 않을 수 있으며, 상기 응답 시간은 10ns 범위에 있을 수 있다.
클럭 스로틀(540)은, 차이 계산 로직(534)에서 산출된 오차값을 입력으로 사용하여, 소정 충격 계수(duty cycle)로 코어 클럭을 온오프하도록 동작할 수 있다. 하나의 단순한 실시예에서, 오차값이 고정된 임계치를 초과하는 경우, 클럭은 소정 사이클 수 동안 정지될 수 있다. 이러한 연산은 매 클럭 사이클마다 이루어질 수 있으며 완전히 파이프라이닝된다. 소정 사이클 수는, 전력을 어느 정도 희망 전력 이상(느린 피드백 루프(550)가 응답하도록 할 수 있는 값)으로, 그러나 최대 전력을 초과하지 않는 값으로 제한하도록 선택될 수 있다.
다른 실시예에서, 클럭 스로틀(550)은 차이 계산 로직(553)이 제공한 오차값의 크기(예를 들면 프로세서가 전력 임계치를 어느 정도 초과하여 동작하고 있는지)에 따라 충격 계수를 조정할 수 있다. 일 실시예에서, 충격 계수와 오차값은 표 7과 같이 관련될 수 있다.
Figure 112007024071342-pct00007
이제 도 6을 참조하면, 본 명세서의 일 실시예에 따른, 다른 코어 구성으로의 변화를 도시하는 흐름도가 도시되어 있다. 프로세스는 블록(610)에서 시작하며, 다양한 스레드를 가용한 코어에 할당하는 동작을 포함할 수 있다. 일 실시예에서, 스레드의 수가 결정되고, 각 스레드는 코어에 할당된다. 일부 실시예에 있어서 이러한 결정은 운영 체제와 같은 소프트웨어에 의해 이루어질 수 있다. 다른 실시예에서, 이러한 결정은 하드웨어 로직에 의해, 또는 하드웨어와 소프트웨어의 조합에 의해 이루어질 수 있다. 블록(614)에서, 각 코어에 의해 소비되는 전력의 양이 모니터링되고, 관측된 전력 소비와 희망 전력 소비 사이에서 오차값이 산출된다. 다양한 실시예에서, 도 5와 관련하여 상기 논의된 임의의 모니터링 기술이 사용될 수 있다. 그 후 블록(618)에서, 도 5와 관련하여 상기 기술된 바와 같이, 블록(614)의 오차값은 적분 또는 샘플링 기술, 혹은 양쪽 모두에 의해 좌우될 수 있다. 일부 실시예에 있어서, 블록(618)은 선택적(optional)이다. 블록(618)의 출력은 소정 시간 간격 동안의 오차값이 코어 구성 변경에 대한 성능 손해(penalty)를 정당화할 만큼 충분히 큰 것으로 판단될 수 있을 때까지 코어 구성의 변화를 방지할 수 있는 제어값일 수 있다.
판단 블록(622)에서, 시간 동안의 오차값이 코어 구성의 변경을 정당화할 만큼 충분한지에 대한 결정이 이루어질 수 있다. 상기 차이가 충분하지 않은 경우, 프로세스는 판단 블록(622)을 '아니오' 경로로 이탈할 수 있으며 상기 프로세스가 반복된다. 그러나, 상기 차이가 충분한 경우, 프로세스는 판단 블록(622)을 '예' 경로로 이탈할 수 있다.
블록(626)에서, 제어값에 따라 전압 및 주파수가 변경될 수 있다. 일 실시예에서, 전압 및 주파수는 상기 표 2에 도시된 바와 같이 제어값에 대해 변경될 수 있다. 일 실시예에서, 다양한 코어의 전압 및 주파수가 이와 같이 모두 변경될 수 있다. 다른 실시예에서, 전압 및 주파수는 다양한 코어 상에서 서로 다르게 변경될 수 있다. 모든 경우에 있어서 프로세스는 블록(610)에서 반복된다.
이제 도 7을 참조하면, 본 명세서의 일 실시예에 따른, 다른 코어 구성으로의 변화를 도시하는 흐름도가 도시되어 있다. 프로세스는 블록(710)에서 시작하며, 다양한 소프트웨어 스레드를 가용한 코어에 할당하는 동작을 포함할 수 있다. 일 실시예에서, 스레드의 수가 결정되고, 각 스레드는 코어에 할당된다. 일부 실시예에 있어서 이러한 결정은 운영 체제와 같은 소프트웨어에 의해 이루어질 수 있다. 다른 실시예에서, 이러한 결정은 하드웨어 로직에 의해, 또는 하드웨어와 소프트웨어의 조합에 의해 이루어질 수 있다. 블록(714)에서, 각 코어에 의해 소비되는 전력의 양이 모니터링되고, 관측된 전력 소비와 희망 전력 소비 사이에서 오차값이 산출된다. 다양한 실시예에서, 도 5와 관련하여 상기 논의된 임의의 모니터링 기술이 사용될 수 있다. 그 후 블록(718)에 있어서, 도 5와 관련하여 상기 기술된 바와 같이, 블록(714)의 오차값은 적분 또는 샘플링 기술, 혹은 양쪽 모두에 의해 좌우될 수 있다. 일부 실시예에 있어서, 블록(718)은 선택적(optional)이다. 블록(718)의 출력은 소정 시간 간격 동안의 오차값이 코어 구성 변경에 대한 성능 손해를 정당화할 만큼 충분히 큰 것으로 판단될 수 있을 때까지 코어 구성의 변화를 방지할 수 있는 제어값일 수 있다.
판단 블록(722)에서, 시간 동안의 오차값이 코어 구성의 변경을 정당화할 만큼 충분한지에 대한 결정이 이루어질 수 있다. 상기 차이가 충분하지 않은 경우, 프로세스는 판단 블록(722)을 '아니오' 경로로 이탈할 수 있으며 상기 프로세스가 반복된다. 그러나, 상기 차이가 충분한 경우, 프로세스는 판단 블록(722)을 '예' 경로로 이탈할 수 있다.
블록(726)에서, 스레드는 제어값에 따라 코어들 간에 재할당(re-allocate)될 수 있다. 일 실시예에서, 스레드는 상기 표 3에 도시된 바와 같이 제어값에 대하여 특정 수의 큰 코어에 재할당될 수 있다. 일 실시예에서, 큰 코어의 수는 표 3과 같이 주어지고, 큰 코어 상에서 동작할 수 없는 스레드는 작은 코어로 재할당될 수 있다. 다른 실시예에서, 스레드를 코어로 재할당하는 다른 기법이 사용될 수 있다. 모든 경우에 있어서 프로세스는 블록(710)에서 반복된다.
이제 도 8을 참조하면, 본 명세서의 일 실시예에 따른, 다른 코어 구성으로의 변화를 도시하는 흐름도가 도시되어 있다. 프로세스는 블록(810)에서 시작하며, 다양한 소프트웨어 스레드를 가용한 코어에 할당하는 동작을 포함할 수 있다. 일 실시예에서, 스레드의 수가 결정되고, 각 스레드는 코어에 할당된다. 일부 실시예에 있어서 이러한 결정은 운영 체제와 같은 소프트웨어에 의해 이루어질 수 있다. 다른 실시예에서, 이러한 결정은 하드웨어 로직에 의해, 또는 하드웨어와 소프트웨어의 조합에 의해 이루어질 수 있다. 블록(814)에서, 각 코어에 의해 소비되는 전력의 양이 모니터링되고, 관측된 전력 소비와 희망 전력 소비 사이에서 오차값이 산출된다. 다양한 실시예에서, 도 5와 관련하여 상기 논의된 임의의 모니터링 기술이 사용될 수 있다. 그 후 블록(818)에 있어서, 도 5와 관련하여 상기 기술된 바와 같이, 블록(814)의 오차값은 적분 또는 샘플링 기술, 혹은 양쪽 모두에 의해 좌우될 수 있다. 일부 실시예에 있어서, 블록(818)은 선택적(optional)이다. 블록(818)의 출력은 소정 시간 간격 동안의 오차값이 코어 구성 변경에 대한 성능 손해를 정당화할 만큼 충분히 큰 것으로 판단될 수 있을 때까지 코어 구성의 변화를 방지할 수 있는 제어값일 수 있다.
판단 블록(822)에서, 시간 동안의 오차값이 코어 구성의 변경을 정당화할 만큼 충분한지에 대한 결정이 이루어질 수 있다. 상기 차이가 충분하지 않은 경우, 프로세스는 판단 블록(822)을 '아니오' 경로로 이탈할 수 있으며 상기 프로세스가 반복된다. 그러나, 상기 차이가 충분한 경우, 프로세스는 판단 블록(822)을 '예' 경로로 이탈할 수 있다.
블록(826)에서, 코어 내의 선택적 회로의 양은 표 4에 주어진 바와 같이 제어값에 따라 턴온 또는 턴오프될 수 있다. 일 실시예에서, 온 또는 오프되는 실행 유닛의 수는 상기 표 4에 도시된 것과 같이 제어값에 대하여 변경될 수 있다. 다른 실시예에서, 기타 선택적인 성능 회로가 제어값에 따라 턴온 또는 턴오프될 수 있다. 이러한 기타 선택적인 성능 회로는 스케줄러, 캐시, 변환 색인 버퍼, 스케줄러 및 재구성 버퍼를 포함할 수 있다. 모든 경우에 있어서 프로세스는 블록(810)에서 반복된다.
이제 도 9를 참조하면, 본 명세서의 일 실시예에 따른, 다른 코어 구성으로의 변화를 도시하는 흐름도가 도시되어 있다. 프로세스는 블록(910)에서 시작하며, 다양한 소프트웨어 스레드를 가용한 코어에 할당하는 동작을 포함할 수 있다. 일 실시예에서, 스레드의 수가 결정되고, 각 스레드는 코어에 할당된다. 일부 실시예에 있어서 이러한 결정은 운영 체제와 같은 소프트웨어에 의해 이루어질 수 있다. 다른 실시예에서, 이러한 결정은 하드웨어 로직에 의해, 또는 하드웨어와 소프트웨어의 조합에 의해 이루어질 수 있다. 블록(914)에서, 각 코어에 의해 소비되는 전력의 양이 모니터링되고, 관측된 전력 소비와 희망 전력 소비 사이에서 오차값이 산출된다. 다양한 실시예에서, 도 5와 관련하여 상기 논의된 임의의 모니터링 기술이 사용될 수 있다. 그 후 블록(918)에 있어서, 도 5와 관련하여 상기 기술된 바와 같이, 블록(914)의 오차값은 적분 또는 샘플링 기술, 혹은 양쪽 모두에 의해 좌우될 수 있다. 일부 실시예에 있어서, 블록(918)은 선택적(optional)이다. 블록(918)의 출력은 소정 시간 간격 동안의 오차값이 코어 구성 변경에 대한 성능 손해를 정당화할 만큼 충분히 큰 것으로 판단될 수 있을 때까지 코어 구성의 변화를 방지할 수 있는 제어값일 수 있다.
판단 블록(922)에서, 시간 동안의 오차값이 코어 구성의 변경을 정당화할 만큼 충분한지에 대한 결정이 이루어질 수 있다. 상기 차이가 충분하지 않은 경우, 프로세스는 판단 블록(922)을 '아니오' 경로로 이탈할 수 있으며 상기 프로세스가 반복된다. 그러나, 상기 차이가 충분한 경우, 프로세스는 판단 블록(922)을 '예' 경로로 이탈할 수 있다.
블록(926)에서, 코어 내의 추론의 양은 상기 표 5에 주어진 바와 같이 제어값에 따라 변화할 수 있다. 일 실시예에서, 추론적으로 실행되는 명령의 수는 상기 표 5에 도시된 것과 같이 제어값에 대하여 변경될 수 있다. 다른 실시예에서, 기타 방법이 제어값에 따라 추론의 양을 변화시키는데 이용될 수 있다. 추론의 양을 변화시키는 이러한 기타 방법은 프리페치 유닛(prefetch unit), 분기 예측기 또는 다른 형태의 예측기를 온오프시키는 방법을 포함한다. 모든 경우에 있어서 프로세스는 블록(910)에서 반복된다.
이제 도 10A 및 10B를 참조하면, 본 명세서의 두 실시예에 따른, 스로틀 및 복수의 코어를 구비한 프로세서를 포함하는 시스템의 개략적인 다이어그램이 도시되어 있다. 도 10A의 시스템은 프로세서, 메모리 및 입출력 장치가 시스템 버스에 의해 상호접속된 시스템을 일반적으로 도시하고, 반면 도 10B의 시스템은 프로세서, 메모리 및 입출력 장치가 다수의 지점간 인터페이스(point-to-point interface)로 상호접속된 시스템을 일반적으로 도시한다.
도 10A의 시스템은 하나 또는 여러 개의 프로세서를 포함할 수 있으며, 여기서는 명료한 설명을 위해 프로세서(40, 60) 두 개만 도시한다. 프로세서(40, 60)는 레벨1 캐시(42, 62)를 포함할 수 있다. 도 10A의 시스템은 버스 인터페이스(44, 64, 12, 8)를 경유하여 시스템 버스(6)와 연결된 여러 기능을 가질 수 있다. 일 실시예에서, 시스템 버스(6)는 Intel® Corporation이 생산하는 펜티엄®급 마이크로프로세서에서 이용되는 전면 버스(front side bus)일 수 있다. 다른 실시예에서, 기타 버스가 사용될 수 있다. 일부 실시예에 있어서 메모리 컨트롤러(34) 및 버스 브리지(32)는 통합적으로 칩셋으로 지칭될 수 있다. 일부 실시예에서, 칩셋의 기능은 도 10A에 도시된 것과는 달리 물리적 칩 간에 분할될 수 있다.
메모리 컨트롤러(34)는 프로세서(40, 60)로 하여금 시스템 메모리(10)로부터 및 기본 입출력 시스템(BIOS) EPROM(erasable programmable read-only memory)(36)으로부터 판독 및 기록을 행하도록 할 수 있다. 일부 실시예에서 BIOS EPROM(36)은 플래시 메모리(flash memory)를 사용할 수 있다. 메모리 컨트롤러(34)는 메모리로 하여금 시스템 버스(6) 상의 버스 에이전트에게 전달되는 또한 버스 에이전트로부터 전달되는 데이터를 판독 및 기록할 수 있게 하는 버스 인터페이스(8)을 포함할 수 있다. 메모리 컨트롤러(34)는 또한 고성능 그래픽 인터페이스(39)를 통해 고성능 그래픽 회로(38)와 연결될 수 있다. 소정 실시예에서 고성능 그래픽 인터페이스(39)는 진보된 그래픽 포트 AGP 인터페이스일 수 있다. 메모리 컨트롤러(34)는 시스템 메모리(10)로부터의 데이터를 고성능 그래픽 인터페이스(39)를 통해 고성능 그래픽 회로(38)로 유도한다.
도 10B의 시스템은 또한 하나 또는 여러 프로세서를 포함하며, 명료한 설명을 위해 프로세서(70, 80) 두 개만 도시한다. 프로세서(70, 80)는 메모리(2, 4)와 접속하는 로컬 메모리 컨트롤러 허브(memory controller hub; MCH)(72, 82)를 각각 포함할 수 있다. 프로세서(70, 80)는 지점간 인터페이스 회로(78, 88)를 사용하여 지점간 인터페이스(50)을 통해 데이터를 상호교환할 수 있다. 프로세서(70, 80)는 지점간 인터페이스 회로(76, 94, 86, 98)를 사용하여 개별 지점간 인터페이스(52, 54)를 통해 칩셋(90)과 데이터를 각각 상호교환할 수 있다. 칩셋(90)은 또한 고성능 그래픽 인터페이스(92)를 경유하여 고성능 그래픽 회로(38)와 데이터를 상호교환할 수 있다.
도 10A의 시스템에 있어서, 버스 브리지(32)는 시스템 버스(6) 및 버스(16) 간에 데이터가 상호교환되게끔 할 수 있으며, 이는 일부 실시예에서 ISA(industry standard architecture) 버스 또는 PCI(peripheral component interconnect) 버스일 수 있다. 도 10B의 시스템에 있어서, 칩셋(90)은 버스 인터페이스(96)를 경유하여 버스(16)와 데이터를 상호교환할 수 있다. 두 시스템에 있어서, 버스(16) 상에 다양한 입출력 I/O 장치(14)가 존재할 수 있으며, 일부 실시예에서 이는 낮은 성능의 그래픽 컨트롤러, 비디오 컨트롤러 및 네트워크 컨트롤러를 포함한다. 일부 실시예에서 다른 버스 브리지(18)가 버스(16) 및 버스(20) 간에 데이터가 상호교환될 수 있도록 하는데 사용될 수 있다. 일부 실시예에서 버스(20)는 SCSI(small computer system interface) 버스, IDE(integrated drive electronics) 버스, 또는 USB(universal serial bus) 버스일 수 있다. 추가적인 I/O 장치가 버스(20)와 연결될 수 있다. 이들은 키보드 및 마우스를 포함하는 커서 조종 장치(22), 오디오 I/O(24), 모뎀 및 네트워크 인터페이스를 포함하는 통신 장치(26), 및 데이터 저장 장치(28)를 포함할 수 있다. 소프트웨어 코드(30)는 데이터 저장 장치(28)에 저장될 수 있다. 일부 실시예에서, 데이터 저장 장치(28)는 고정된 자기 디스크, 플로피 디스크 드라이브, 광학 디스크 드라이브, 광자기 디스크 드라이브, 자기 테이프, 또는 플래시 메모리를 포함하는 비휘발성 메모리일 수 있다.
전술한 명세서에서, 발명은 특정한 실시예에 대한 참조로 설명되었다. 그러나, 첨부된 청구항에 나열된 바와 같은 발명의 넓은 의미와 범주를 벗어나지 않고 다양한 수정 및 변경이 이루어질 수 있음은 자명할 것이다. 따라서, 명세서와 도면은 한정의 측면보다는 예시의 의미로 간주되어야 한다.

Claims (62)

  1. 적어도 하나의 큰 코어 및 복수의 작은 코어를 갖는 프로세서로서,
    상기 큰 코어의 속성 값을 모니터링하는 모니터 로직(monitor logic);
    상기 속성에 대응하여 상기 프로세서의 전력 소비량을 결정하는 변환 로직(convert logic); 및
    상기 큰 코어에 의해 실행되는 스레드들을 상기 작은 코어들 중 둘 이상의 작은 코어들로 이동시켜 병렬로 실행되도록 함으로써, 상기 전력 소비량에 대응하여 상기 프로세서의 명령 메트릭(instruction metric) 당 에너지를 조정하는 제어 로직(control logic)
    을 포함하는 프로세서.
  2. 제1항에 있어서,
    상기 코어의 상기 속성은 코어 동작 상태(core running state)인 프로세서.
  3. 제2항에 있어서,
    상기 전력 소비량은, 상기 코어 동작 상태에, 상기 코어가 상기 코어 동작 상태에 있는 경우 클럭 당 소비되는 에너지의 양을 곱함으로써 결정되는 프로세서.
  4. 제1항에 있어서,
    상기 코어의 상기 속성은 클럭 당 방출된 명령의 수인 프로세서.
  5. 제4항에 있어서,
    상기 전력 소비량은, 상기 클럭당 방출된 명령의 수에, 클럭 당 명령마다 소비된 에너지의 양을 곱함으로써 결정되는 프로세서.
  6. 제1항에 있어서,
    상기 코어의 상기 속성은 상기 코어의 기능 블록의 활성 상태(active state)인 프로세서.
  7. 제6항에 있어서,
    상기 전력 소비량은, 상기 기능 블록의 상기 활성 상태에, 상기 기능 블록이 상기 활성 상태에 있는 경우 클럭 당 소비되는 에너지의 양을 곱함으로써 결정되는 프로세서.
  8. 제1항에 있어서,
    상기 속성은 코어 공급 전류(core supply current)인 프로세서.
  9. 제8항에 있어서,
    상기 전력 소비량은 상기 코어 공급 전류를 포함하는 프로세서.
  10. 제1항에 있어서,
    상기 제어 로직은 상기 전력 소비량에 대응하여 상기 프로세서의 구동 전압 및 구동 주파수를 조정하는 프로세서.
  11. 삭제
  12. 제1항에 있어서,
    상기 제어 로직은 상기 전력 소비량에 대응하여 상기 프로세서의 상기 코어 내의 선택적 성능 회로(optional performance circuitry)를 턴온시키는 프로세서.
  13. 제1항에 있어서,
    상기 제어 로직은 상기 전력 소비량에 대응하여 상기 프로세서의 상기 코어 내의 선택적 추론 회로(optional speculation circuitry)를 턴온시키는 프로세서.
  14. 제1항에 있어서,
    상기 전력 소비량과 희망 전력 소비 사이의 차이를 산출하는 차이 로직(difference logic)을 더 포함하는 프로세서.
  15. 제14항에 있어서,
    상기 전력 소비량과 희망 전력 소비 간의 상기 차이의 시간 적분을 결정하는 적분 회로(integration circuitry)를 더 포함하는 프로세서.
  16. 제14항에 있어서,
    샘플링 방법에 따라 상기 제어 로직에게 상기 전력 소비량을 제공하는 샘플링 회로(sampling circuitry)를 더 포함하는 프로세서.
  17. 제1항에 있어서,
    빠른 피드백 제어를 가능케 하는 클럭 스로틀 회로(clock throttle circuitry)를 더 포함하는 프로세서.
  18. 프로세서로서,
    제1 유형의 복수의 제1 코어;
    제2 유형의 복수의 제2 코어; 및
    상기 제1 유형의 복수의 제1 코어 또는 상기 제2 유형의 복수의 제2 코어 중 하나에 복수의 스레드를 할당하는 모듈
    을 포함하고,
    상기 모듈은 전력 예산에 따라 상기 스레드를 할당하고, 상기 복수의 스레드는 상기 복수의 제2 코어에 할당되는 경우 병렬로 실행되며,
    상기 제1 유형의 코어들은 낮은 스레드 레벨 병렬 기능(thread-level parallelism) 상태에서 최적의 스칼라 성능(scalar performance)을 위해 동작하고, 상기 제2 유형의 코어들은 높은 스레드 레벨 병렬 기능 상태에서 최적의 처리량 성능(throughput performance)을 위해 동작하는, 프로세서.
  19. 삭제
  20. 제18항에 있어서,
    상기 모듈은 할당 테이블에 따라 상기 스레드를 할당하는 프로세서.
  21. 제18항에 있어서,
    상기 모듈은 신규 스레드를 상기 복수의 제2 코어 중 하나에 할당하고 기존 스레드를 상기 복수의 제1 코어 중 하나로부터 상기 복수의 제2 코어 중 하나로 이동시키는 스레드 이동 로직(thread migration logic)을 포함하는 프로세서.
  22. 제21항에 있어서,
    상기 스레드 이동 로직은 논리 코어를 물리 코어에 매핑하는 테이블을 포함하는 프로세서.
  23. 제21항에 있어서,
    상기 스레드 이동 로직은 운영체제 스케줄러에 대응하는 프로세서.
  24. 제18항에 있어서,
    상기 제1 유형의 코어는 설계에 의해 상기 제2 유형의 코어보다 높은 성능을 갖는 프로세서.
  25. 제18항에 있어서,
    상기 제1 유형의 코어는 구성에 의해 상기 제2 유형의 코어보다 높은 성능을 갖는 프로세서.
  26. 다중 코어 프로세서에 의한 스레드 할당을 제어하기 위한 방법으로서,
    하나 이상의 큰 코어와 둘 이상의 작은 코어를 포함하는 일련의 프로세서 코어에 일련의 스레드를 할당하는 단계;
    상기 프로세서 코어의 소비 전력을 모니터링하는 단계;
    상기 소비 전력과 희망 전력 간의 오차 값을 산출하는 단계; 및
    상기 오차 값에 기초하여, 상기 하나 이상의 큰 코어로부터 상기 스레드들이 병렬로 실행되는 상기 둘 이상의 작은 코어로, 상기 할당에서 천이(transitioning)하는 단계
    를 포함하는 방법.
  27. 제26항에 있어서,
    상기 천이 단계는 상기 일련의 프로세서 코어 내의 상기 큰 코어와 상기 복수의 작은 코어 사이에서 상기 일련의 스레드의 상기 할당을 변경시키는 단계를 포함하는 방법.
  28. 삭제
  29. 제26항에 있어서,
    상기 오차 값을 시간에 대해 적분하는 단계를 더 포함하는 방법.
  30. 제26항에 있어서,
    상기 오차 값을 시간에 대해 샘플링하는 단계를 더 포함하는 방법.
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 시스템으로서, 상기 시스템은,
    큰 코어 및 복수의 작은 코어를 갖는 프로세서로서
    상기 큰 코어의 속성 값을 모니터링하는 모니터 로직,
    상기 속성에 대응하여 상기 프로세서의 전력 소비량을 결정하는 변환 로직, 및
    상기 큰 코어에 의해 실행되는 스레드들을 상기 작은 코어들 중 둘 이상의 작은 코어들로 이동시켜 병렬로 실행되도록 함으로써, 상기 전력 소비량에 대응하여 상기 프로세서의 명령 메트릭 당 에너지를 조정하는 제어 로직
    을 포함하는 프로세서;
    오디오 입출력 로직; 및
    상기 프로세서를 상기 오디오 입출력 로직에 연결하는 인터페이스
    를 포함하는 시스템.
  38. 제37항에 있어서,
    상기 코어의 상기 속성은 코어 동작 상태이고, 상기 전력 소비량은 상기 코 어 동작 상태에, 상기 코어가 상기 코어 동작 상태에 있는 경우 클럭 당 소비되는 에너지의 양을 곱함으로써 결정되는 시스템.
  39. 제37항에 있어서,
    상기 코어의 상기 속성은 클럭 당 방출된 명령의 수이고, 상기 전력 소비량은 상기 클럭 당 방출된 명령의 수에, 클럭 당 명령마다 소비된 에너지의 양을 곱함으로써 결정되는 시스템.
  40. 제37항에 있어서,
    상기 코어의 상기 속성은 상기 코어의 기능 블록의 활성 상태이고, 상기 전력 소비량은 상기 기능 블록의 상기 활성 상태에, 상기 기능 블록이 상기 활성 상태에 있는 경우 클럭 당 소비된 에너지의 양을 곱함으로써 결정되는 시스템.
  41. 제37항에 있어서,
    상기 속성은 코어 공급 전류이고, 상기 전력 소비량은 상기 코어 공급 전류를 포함하는 시스템.
  42. 제37항에 있어서,
    상기 제어 로직은 상기 전력 소비량에 대응하여 상기 프로세서의 구동 전압 및 구동 주파수를 조정하는 시스템.
  43. 제37항에 있어서,
    상기 제어 로직은 상기 전력 소비량에 대응하여 상기 프로세서의 큰 코어 및 작은 코어 사이에서 프로그램의 스레드를 이동시키는 시스템.
  44. 제37항에 있어서,
    상기 제어 로직은 상기 전력 소비량에 대응하여 상기 프로세서의 상기 코어 내의 선택적 성능 회로를 턴온시키는 시스템.
  45. 제37항에 있어서,
    상기 제어 로직은 상기 전력 소비량에 대응하여 상기 프로세서의 상기 코어 내의 선택적 추론 회로를 턴온시키는 시스템.
  46. 제45항에 있어서,
    샘플링 방법에 따라 상기 제어 로직에게 상기 전력 소비량을 제공하는 샘플링 회로를 더 포함하는 시스템.
  47. 시스템으로서,
    제1 유형의 복수의 제1 코어, 제2 유형의 복수의 제2 코어, 및 상기 제1 유형의 복수의 제1 코어 또는 상기 제2 유형의 복수의 제2 코어 중 하나에 복수의 스레드를 할당하는 모듈을 포함하는 프로세서;
    오디오 입출력 로직; 및
    상기 프로세서를 상기 오디오 입출력 로직에 연결하는 인터페이스
    를 포함하고,
    상기 모듈은 전력 예산에 따라 상기 스레드를 할당하고, 상기 복수의 스레드는 상기 복수의 제2 코어에 할당되는 경우 병렬로 실행되는 시스템.
  48. 제47항에 있어서,
    상기 모듈은 전력 예산에 따라 상기 스레드를 할당하는 시스템.
  49. 제47항에 있어서,
    상기 모듈은 할당 테이블에 따라 상기 스레드를 할당하는 시스템.
  50. 제47항에 있어서,
    상기 모듈은 신규 스레드를 상기 복수의 제2 코어 중 하나에 할당하고 기존 스레드를 상기 복수의 제1 코어 중 하나로부터 상기 복수의 제2 코어 중 하나로 이동시키는 스레드 이동 로직을 포함하는 시스템.
  51. 제50항에 있어서,
    상기 스레드 이동 로직은 논리 코어를 물리 코어에 매핑하는 테이블을 포함하는 시스템.
  52. 큰 코어 및 복수의 작은 코어를 포함하는 일련의 프로세서 코어에 일련의 스레드를 할당하는 수단;
    상기 프로세서 코어의 소비 전력을 모니터링하는 수단;
    상기 소비 전력과 희망 전력 간의 오차 값을 산출하는 수단; 및
    상기 큰 코어에 의해 실행되는 스레드들을 상기 작은 코어들 중 둘 이상의 작은 코어들로 이동시켜 병렬로 실행되도록 함으로써, 상기 오차 값에 기초하여 상기 할당에서 천이하는 수단
    을 포함하는 프로세서.
  53. 제52항에 있어서,
    상기 천이 수단은 상기 일련의 프로세서 코어 내의 상기 큰 코어와 상기 복수의 작은 코어 사이에서 상기 일련의 스레드의 상기 할당을 변경시키는 수단을 포함하는 프로세서.
  54. 제52항에 있어서,
    상기 오차 값을 시간에 대하여 적분하는 수단을 더 포함하는 프로세서.
  55. 제52항에 있어서,
    상기 오차 값을 시간에 대하여 샘플링하는 수단을 더 포함하는 프로세서.
  56. 삭제
  57. 삭제
  58. 삭제
  59. 삭제
  60. 제37항에 있어서,
    상기 전력 소비량과 희망 전력 소비 사이의 차이를 산출하는 차이 로직을 더 포함하는 시스템.
  61. 제60항에 있어서,
    상기 전력 소비량과 희망 전력 소비 간의 상기 차이의 시간 적분을 결정하는 적분 회로를 더 포함하는 시스템.
  62. 제52항에 있어서,
    상기 천이 수단은 상기 일련의 프로세서 코어 내의 상기 큰 코어와 상기 복수의 작은 코어 사이에서 상기 일련의 스레드의 상기 할당을 변경시키는 수단을 포함하는 프로세서.
KR1020077006963A 2004-09-28 2005-09-28 가용 병렬 기능의 양에 따라 명령어 당 에너지를변화시키는 방법 및 장치 KR100880060B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/952,627 2004-09-28
US10/952,627 US7437581B2 (en) 2004-09-28 2004-09-28 Method and apparatus for varying energy per instruction according to the amount of available parallelism

Publications (2)

Publication Number Publication Date
KR20070049226A KR20070049226A (ko) 2007-05-10
KR100880060B1 true KR100880060B1 (ko) 2009-01-22

Family

ID=35759336

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077006963A KR100880060B1 (ko) 2004-09-28 2005-09-28 가용 병렬 기능의 양에 따라 명령어 당 에너지를변화시키는 방법 및 장치

Country Status (6)

Country Link
US (1) US7437581B2 (ko)
JP (6) JP4898687B2 (ko)
KR (1) KR100880060B1 (ko)
CN (1) CN100565426C (ko)
TW (1) TWI315847B (ko)
WO (1) WO2006037119A2 (ko)

Families Citing this family (198)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6895520B1 (en) 2001-03-02 2005-05-17 Advanced Micro Devices, Inc. Performance and power optimization via block oriented performance measurement and control
US7227383B2 (en) * 2004-02-19 2007-06-05 Mosaid Delaware, Inc. Low leakage and data retention circuitry
US7702848B2 (en) * 2004-06-10 2010-04-20 Marvell World Trade Ltd. Adaptive storage system including hard disk drive with flash interface
US7788427B1 (en) 2005-05-05 2010-08-31 Marvell International Ltd. Flash memory interface for disk drive
US20070094444A1 (en) * 2004-06-10 2007-04-26 Sehat Sutardja System with high power and low power processors and thread transfer
US7730335B2 (en) 2004-06-10 2010-06-01 Marvell World Trade Ltd. Low power computer with main and auxiliary processors
US20070083785A1 (en) * 2004-06-10 2007-04-12 Sehat Sutardja System with high power and low power processors and thread transfer
US8607241B2 (en) 2004-06-30 2013-12-10 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US7603571B2 (en) * 2004-10-08 2009-10-13 Dell Products L.P. System and method for regulating the power consumption of a computer system
US8719819B2 (en) 2005-06-30 2014-05-06 Intel Corporation Mechanism for instruction set based thread execution on a plurality of instruction sequencers
US20100281245A1 (en) * 2005-01-12 2010-11-04 Nxp B.V. Method and apparatus for tuning a digital system
US20060294401A1 (en) * 2005-06-24 2006-12-28 Dell Products L.P. Power management of multiple processors
US7613935B2 (en) * 2005-07-29 2009-11-03 Hewlett-Packard Development Company, L.P. Power monitoring for processor module
US7461275B2 (en) 2005-09-30 2008-12-02 Intel Corporation Dynamic core swapping
US8108863B2 (en) 2005-12-30 2012-01-31 Intel Corporation Load balancing for multi-threaded applications via asymmetric power throttling
US7802073B1 (en) 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
US20080005591A1 (en) 2006-06-28 2008-01-03 Trautman Mark A Method, system, and apparatus for dynamic thermal management
US7836212B2 (en) * 2006-07-20 2010-11-16 Oracle America, Inc. Reflecting bandwidth and priority in network attached storage I/O
US20080263324A1 (en) 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
US7941805B2 (en) * 2006-08-15 2011-05-10 International Business Machines Corporation Affinity dispatching load balancer with precise CPU consumption data
GB2443277B (en) * 2006-10-24 2011-05-18 Advanced Risc Mach Ltd Performing diagnostics operations upon an asymmetric multiprocessor apparatus
US8060765B1 (en) * 2006-11-02 2011-11-15 Nvidia Corporation Power estimation based on block activity
US8429656B1 (en) * 2006-11-02 2013-04-23 Nvidia Corporation Thread count throttling for efficient resource utilization
US8117478B2 (en) 2006-12-29 2012-02-14 Intel Corporation Optimizing power usage by processor cores based on architectural events
US7793125B2 (en) * 2007-01-10 2010-09-07 International Business Machines Corporation Method and apparatus for power throttling a processor in an information handling system
US8022685B2 (en) * 2007-02-06 2011-09-20 International Business Machines Corporation Temperature dependent voltage source compensation
US7779235B2 (en) * 2007-02-06 2010-08-17 International Business Machines Corporation Using performance data for instruction thread direction
US7971035B2 (en) 2007-02-06 2011-06-28 International Business Machines Corporation Using temperature data for instruction thread direction
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
US8615767B2 (en) * 2007-02-06 2013-12-24 International Business Machines Corporation Using IR drop data for instruction thread direction
US7865750B2 (en) * 2007-02-06 2011-01-04 International Business Machines Corporation Fan speed control from adaptive voltage supply
US7900069B2 (en) * 2007-03-29 2011-03-01 Intel Corporation Dynamic power reduction
US8161482B1 (en) * 2007-04-13 2012-04-17 Marvell International Ltd. Power optimization for multi-core devices
US7734873B2 (en) * 2007-05-29 2010-06-08 Advanced Micro Devices, Inc. Caching of microcode emulation memory
KR100801630B1 (ko) * 2007-06-15 2008-02-05 디비코 주식회사 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법
US7865751B2 (en) 2007-06-18 2011-01-04 Intel Corporation Microarchitecture controller for thin-film thermoelectric cooling
US7797512B1 (en) 2007-07-23 2010-09-14 Oracle America, Inc. Virtual core management
JP4834625B2 (ja) * 2007-07-31 2011-12-14 株式会社東芝 電源管理装置及び電源管理方法
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
US8005880B2 (en) * 2007-08-24 2011-08-23 International Business Machines Corporation Half width counting leading zero circuit
US8365184B2 (en) 2007-08-31 2013-01-29 Apple Inc. Multi-core resource utilization planning
US8555283B2 (en) * 2007-10-12 2013-10-08 Oracle America, Inc. Temperature-aware and energy-aware scheduling in a computer system
US8032772B2 (en) * 2007-11-15 2011-10-04 Intel Corporation Method, apparatus, and system for optimizing frequency and performance in a multi-die microprocessor
US8302098B2 (en) * 2007-12-06 2012-10-30 Oracle America, Inc. Hardware utilization-aware thread management in multithreaded computer systems
US7996346B2 (en) 2007-12-19 2011-08-09 International Business Machines Corporation Method for autonomic workload distribution on a multicore processor
US7962770B2 (en) * 2007-12-19 2011-06-14 International Business Machines Corporation Dynamic processor reconfiguration for low power without reducing performance based on workload execution characteristics
KR101400286B1 (ko) 2008-01-22 2014-05-26 삼성전자주식회사 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치
CN101493761B (zh) 2008-01-25 2013-05-29 国际商业机器公司 处理器流水线处理指令的方法及相应的处理器
KR100951671B1 (ko) * 2008-02-14 2010-04-07 사단법인 한국전자정보통신산업진흥회 멀티미디어 ic칩의 전력제어 장치 및 방법
US8028180B2 (en) * 2008-02-20 2011-09-27 International Business Machines Corporation Method and system for power conservation in a hierarchical branch predictor
US8615647B2 (en) 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
KR100950874B1 (ko) * 2008-03-06 2010-04-06 주식회사 텔레칩스 동적 전압 제어 시스템 및 그 제어 방법
US20090235108A1 (en) * 2008-03-11 2009-09-17 Gold Spencer M Automatic processor overclocking
US8010822B2 (en) 2008-03-28 2011-08-30 Microsoft Corporation Power-aware thread scheduling and dynamic use of processors
US8448002B2 (en) * 2008-04-10 2013-05-21 Nvidia Corporation Clock-gated series-coupled data processing modules
US20110213998A1 (en) * 2008-06-11 2011-09-01 John George Mathieson System and Method for Power Optimization
US20110213950A1 (en) * 2008-06-11 2011-09-01 John George Mathieson System and Method for Power Optimization
US20110213947A1 (en) * 2008-06-11 2011-09-01 John George Mathieson System and Method for Power Optimization
US7921280B2 (en) * 2008-06-27 2011-04-05 Intel Corporation Selectively powered retirement unit using a partitioned allocation array and a partitioned writeback array
US8892916B2 (en) * 2008-08-06 2014-11-18 International Business Machines Corporation Dynamic core pool management
CN101661406A (zh) * 2008-08-28 2010-03-03 国际商业机器公司 处理单元调度装置和方法
GB2476606B (en) 2008-09-08 2012-08-08 Virginia Tech Intell Prop Systems, devices, and methods for managing energy usage
US9189268B2 (en) * 2008-10-10 2015-11-17 Netapp, Inc. Limiting simultaneous data transfers and efficient throttle management
JP5300005B2 (ja) * 2008-11-28 2013-09-25 インターナショナル・ビジネス・マシーンズ・コーポレーション スレッド実行制御方法、およびシステム
US9323306B2 (en) * 2008-12-03 2016-04-26 Telefonaktiebolaget Lm Ericsson (Publ) Energy based time scheduler for parallel computing system
US8214672B2 (en) * 2009-01-07 2012-07-03 Micron Technology, Inc. Method and systems for power consumption management of a pattern-recognition processor
US20100192012A1 (en) * 2009-01-26 2010-07-29 Sun Microsystems, Inc. Testing multi-core processors in a system
FR2941799B1 (fr) * 2009-01-30 2011-03-04 St Nxp Wireless France Procede et systeme de gestion du fonctionnement d'un dispositif de traitement de donnees multicoeurs
US8316368B2 (en) * 2009-02-05 2012-11-20 Honeywell International Inc. Safe partition scheduling on multi-core processors
US8707061B2 (en) * 2009-03-27 2014-04-22 Qualcomm Incorporated System and method of providing scalable computing between a portable computing device and a portable computing device docking station
US20100262966A1 (en) * 2009-04-14 2010-10-14 International Business Machines Corporation Multiprocessor computing device
US9569270B2 (en) * 2009-04-21 2017-02-14 Empire Technology Development Llc Mapping thread phases onto heterogeneous cores based on execution characteristics and cache line eviction counts
US20110066830A1 (en) * 2009-09-11 2011-03-17 Andrew Wolfe Cache prefill on thread migration
US9189282B2 (en) * 2009-04-21 2015-11-17 Empire Technology Development Llc Thread-to-core mapping based on thread deadline, thread demand, and hardware characteristics data collected by a performance counter
US8881157B2 (en) * 2009-09-11 2014-11-04 Empire Technology Development Llc Allocating threads to cores based on threads falling behind thread completion target deadline
KR101572879B1 (ko) * 2009-04-29 2015-12-01 삼성전자주식회사 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법
US20110022870A1 (en) * 2009-07-21 2011-01-27 Microsoft Corporation Component power monitoring and workload optimization
US8856794B2 (en) * 2009-10-13 2014-10-07 Empire Technology Development Llc Multicore runtime management using process affinity graphs
US8635606B2 (en) * 2009-10-13 2014-01-21 Empire Technology Development Llc Dynamic optimization using a resource cost registry
US8892931B2 (en) 2009-10-20 2014-11-18 Empire Technology Development Llc Power channel monitor for a multicore processor
US9098274B2 (en) 2009-12-03 2015-08-04 Intel Corporation Methods and apparatuses to improve turbo performance for events handling
US8397238B2 (en) * 2009-12-08 2013-03-12 Qualcomm Incorporated Thread allocation and clock cycle adjustment in an interleaved multi-threaded processor
US9501705B2 (en) 2009-12-15 2016-11-22 Micron Technology, Inc. Methods and apparatuses for reducing power consumption in a pattern recognition processor
US8775830B2 (en) * 2009-12-16 2014-07-08 Qualcomm Incorporated System and method for dynamically controlling a plurality of cores in a multicore central processing unit based on temperature
US8689037B2 (en) * 2009-12-16 2014-04-01 Qualcomm Incorporated System and method for asynchronously and independently controlling core clocks in a multicore central processing unit
US8650426B2 (en) 2009-12-16 2014-02-11 Qualcomm Incorporated System and method for controlling central processing unit power in a virtualized system
US9104411B2 (en) 2009-12-16 2015-08-11 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US9563250B2 (en) * 2009-12-16 2017-02-07 Qualcomm Incorporated System and method for controlling central processing unit power based on inferred workload parallelism
US8909962B2 (en) 2009-12-16 2014-12-09 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US20110145559A1 (en) * 2009-12-16 2011-06-16 Thomson Steven S System and method for controlling central processing unit power with guaranteed steady state deadlines
US9128705B2 (en) 2009-12-16 2015-09-08 Qualcomm Incorporated System and method for controlling central processing unit power with reduced frequency oscillations
US9176572B2 (en) 2009-12-16 2015-11-03 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US8549330B2 (en) * 2009-12-18 2013-10-01 International Business Machines Corporation Dynamic energy management
KR101155202B1 (ko) * 2009-12-24 2012-06-13 포항공과대학교 산학협력단 멀티 코어 프로세서의 전력 관리 방법, 멀티 코어 프로세서의 전력 관리 방법이 기록된 기록매체 및 이를 실행하는 멀티 코어 프로세서 시스템
US8356194B2 (en) 2010-01-28 2013-01-15 Cavium, Inc. Method and apparatus for estimating overshoot power after estimating power of executing events
US8549339B2 (en) * 2010-02-26 2013-10-01 Empire Technology Development Llc Processor core communication in multi-core processor
US8418187B2 (en) * 2010-03-01 2013-04-09 Arm Limited Virtualization software migrating workload between processing circuitries while making architectural states available transparent to operating system
KR101653204B1 (ko) * 2010-03-16 2016-09-01 삼성전자주식회사 멀티 코어 시스템에서 데이터 병렬 처리를 위한 동적 태스크 관리 시스템 및 방법
EP2581830A4 (en) * 2010-06-10 2017-01-11 Fujitsu Limited Multi-core processor system, method of power control, and power control program
GB2481232A (en) * 2010-06-16 2011-12-21 Advanced Risc Mach Ltd Cache for a multiprocessor system which can treat a local access operation as a shared access operation
US20110320766A1 (en) * 2010-06-29 2011-12-29 Youfeng Wu Apparatus, method, and system for improving power, performance efficiency by coupling a first core type with a second core type
US8689021B1 (en) * 2010-09-10 2014-04-01 Marvell International Ltd. System and method for selecting a power management configuration in a multi-core environment according to various operating conditions such as voltage, frequency, power mode, and utilization factor varied on a per-core basis
US8495395B2 (en) * 2010-09-14 2013-07-23 Advanced Micro Devices Mechanism for controlling power consumption in a processing node
US8943334B2 (en) * 2010-09-23 2015-01-27 Intel Corporation Providing per core voltage and frequency control
US8677361B2 (en) 2010-09-30 2014-03-18 International Business Machines Corporation Scheduling threads based on an actual power consumption and a predicted new power consumption
US8656408B2 (en) 2010-09-30 2014-02-18 International Business Machines Corporations Scheduling threads in a processor based on instruction type power consumption
EP2442228A1 (en) 2010-10-13 2012-04-18 Thomas Lippert A computer cluster arrangement for processing a computaton task and method for operation thereof
US9317082B2 (en) 2010-10-13 2016-04-19 Advanced Micro Devices, Inc. Controlling operation of temperature sensors
JP5364070B2 (ja) * 2010-10-20 2013-12-11 株式会社日立製作所 仮想サーバ管理装置
KR101738641B1 (ko) 2010-12-17 2017-05-23 삼성전자주식회사 멀티 코어 시스템의 프로그램 컴파일 장치 및 방법
US8706789B2 (en) * 2010-12-22 2014-04-22 Intel Corporation Performing reciprocal instructions with high accuracy
US8972707B2 (en) * 2010-12-22 2015-03-03 Via Technologies, Inc. Multi-core processor with core selectively disabled by kill instruction of system software and resettable only via external pin
JP5644866B2 (ja) * 2011-01-13 2014-12-24 富士通株式会社 スケジューリング方法及びスケジューリングシステム
JP5568491B2 (ja) 2011-01-31 2014-08-06 ルネサスエレクトロニクス株式会社 マルチプロセッサ装置
US9513966B2 (en) * 2011-02-17 2016-12-06 Siemens Aktiengesellschaft Parallel processing in human-machine interface applications
US8683243B2 (en) * 2011-03-11 2014-03-25 Intel Corporation Dynamic core selection for heterogeneous multi-core systems
US8695008B2 (en) * 2011-04-05 2014-04-08 Qualcomm Incorporated Method and system for dynamically controlling power to multiple cores in a multicore processor of a portable computing device
US8910177B2 (en) * 2011-04-14 2014-12-09 Advanced Micro Devices, Inc. Dynamic mapping of logical cores
US8782645B2 (en) * 2011-05-11 2014-07-15 Advanced Micro Devices, Inc. Automatic load balancing for heterogeneous cores
US8683468B2 (en) 2011-05-16 2014-03-25 Advanced Micro Devices, Inc. Automatic kernel migration for heterogeneous cores
EP2681656B1 (de) * 2011-05-17 2017-01-18 Siemens Aktiengesellschaft Multicore host-system mit einer echtzeit-erweiterung und verfahren zum betreiben eines solchen host-systems
US9088951B2 (en) 2011-05-25 2015-07-21 Qualcomm Incorporated Dynamic feature-aware power management
US8661279B2 (en) * 2011-07-19 2014-02-25 Hewlett-Packard Development Company, L.P. Power capping using C-states
JP5786641B2 (ja) * 2011-10-25 2015-09-30 富士通株式会社 携帯端末装置の制御方法、制御プログラム及び携帯端末装置
US9347836B2 (en) 2011-11-15 2016-05-24 Ati Technologies Ulc Dynamic voltage reference for sampling delta based temperature sensor
US8862909B2 (en) 2011-12-02 2014-10-14 Advanced Micro Devices, Inc. System and method for determining a power estimate for an I/O controller based on monitored activity levels and adjusting power limit of processing units by comparing the power estimate with an assigned power limit for the I/O controller
US8924758B2 (en) 2011-12-13 2014-12-30 Advanced Micro Devices, Inc. Method for SOC performance and power optimization
US9304570B2 (en) * 2011-12-15 2016-04-05 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including power and performance workload-based balancing between multiple processing elements
US9075610B2 (en) * 2011-12-15 2015-07-07 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including thread consolidation
US9569278B2 (en) 2011-12-22 2017-02-14 Intel Corporation Asymmetric performance multicore architecture with same instruction set architecture
US9436512B2 (en) * 2011-12-22 2016-09-06 Board Of Supervisors Of Louisana State University And Agricultural And Mechanical College Energy efficient job scheduling in heterogeneous chip multiprocessors based on dynamic program behavior using prim model
US9727388B2 (en) 2011-12-29 2017-08-08 Intel Corporation Migrating threads between asymmetric cores in a multiple core processor
US9710306B2 (en) * 2012-04-09 2017-07-18 Nvidia Corporation Methods and apparatus for auto-throttling encapsulated compute tasks
US20130283280A1 (en) * 2012-04-20 2013-10-24 Qualcomm Incorporated Method to reduce multi-threaded processor power consumption
US9003218B2 (en) 2012-05-21 2015-04-07 International Business Machines Corporation Power shifting in multicore platforms by varying SMT levels
US9569279B2 (en) 2012-07-31 2017-02-14 Nvidia Corporation Heterogeneous multiprocessor design for power-efficient and area-efficient computing
JP2014048972A (ja) * 2012-08-31 2014-03-17 Fujitsu Ltd 処理装置、情報処理装置、及び消費電力管理方法
WO2014105010A1 (en) * 2012-12-26 2014-07-03 Intel Corporation Thread migration support for architectually different cores
US9195285B2 (en) * 2012-12-27 2015-11-24 Intel Corporation Techniques for platform duty cycling
US9417873B2 (en) * 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US9361116B2 (en) 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10162687B2 (en) * 2012-12-28 2018-12-25 Intel Corporation Selective migration of workloads between heterogeneous compute elements based on evaluation of migration performance benefit and available energy and thermal budgets
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
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
KR102082859B1 (ko) 2013-01-07 2020-02-28 삼성전자주식회사 복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법
US9575542B2 (en) * 2013-01-31 2017-02-21 Hewlett Packard Enterprise Development Lp Computer power management
US9727345B2 (en) 2013-03-15 2017-08-08 Intel Corporation Method for booting a heterogeneous system and presenting a symmetric core view
US10423216B2 (en) * 2013-03-26 2019-09-24 Via Technologies, Inc. Asymmetric multi-core processor with native switching mechanism
US9383806B2 (en) 2013-04-17 2016-07-05 Apple Inc. Multi-core processor instruction throttling
US9588570B2 (en) * 2013-04-30 2017-03-07 Samsung Electronics Co., Ltd. Apparatus and method for adjusting bandwidth
CN105210038B (zh) 2013-05-15 2018-10-30 英派尔科技开发有限公司 核亲和性位掩码变换
US9195291B2 (en) 2013-06-21 2015-11-24 Apple Inc. Digital power estimator to control processor power consumption
US9304573B2 (en) 2013-06-21 2016-04-05 Apple Inc. Dynamic voltage and frequency management based on active processors
JP6171658B2 (ja) * 2013-07-19 2017-08-02 富士通株式会社 並列処理最適化プログラム、並列処理最適化方法および情報処理装置
CN104346226A (zh) * 2013-08-09 2015-02-11 联想(北京)有限公司 处理器频率控制方法及电子设备
US9671844B2 (en) 2013-09-26 2017-06-06 Cavium, Inc. Method and apparatus for managing global chip power on a multicore system on chip
US10503513B2 (en) * 2013-10-23 2019-12-10 Nvidia Corporation Dispatching a stored instruction in response to determining that a received instruction is of a same instruction type
US9606605B2 (en) 2014-03-07 2017-03-28 Apple Inc. Dynamic voltage margin recovery
US9575867B2 (en) 2014-10-21 2017-02-21 International Business Machines Corporation Processor stressmarks generation
US9588863B2 (en) 2014-10-21 2017-03-07 International Business Machines Corporation Generation and application of stressmarks in a computer system
US20160147536A1 (en) * 2014-11-24 2016-05-26 International Business Machines Corporation Transitioning the Processor Core from Thread to Lane Mode and Enabling Data Transfer Between the Two Modes
US9696787B2 (en) * 2014-12-10 2017-07-04 Qualcomm Innovation Center, Inc. Dynamic control of processors to reduce thermal and power costs
KR102352756B1 (ko) 2015-04-29 2022-01-17 삼성전자주식회사 애플리케이션 프로세서, 시스템 온 칩, 및 이를 포함하는 컴퓨팅 장치
US10235219B2 (en) * 2015-07-27 2019-03-19 Sony Interactive Entertainment America Llc Backward compatibility by algorithm matching, disabling features, or throttling performance
US9740266B2 (en) * 2015-09-04 2017-08-22 Mediatek Inc. Apparatus and method for controlling multi-core of electronic device
US9891926B2 (en) * 2015-09-30 2018-02-13 International Business Machines Corporation Heterogeneous core microarchitecture
JP6631374B2 (ja) * 2016-04-13 2020-01-15 富士通株式会社 情報処理装置、動作状況収集プログラム及び動作状況収集方法
US10296460B2 (en) * 2016-06-29 2019-05-21 Oracle International Corporation Prefetch bandwidth throttling by dynamically adjusting miss buffer prefetch-dropping thresholds
CN106155815A (zh) * 2016-07-21 2016-11-23 张升泽 电流在多个内核中的分配方法及系统
CN106292976A (zh) * 2016-07-21 2017-01-04 张升泽 电子芯片内部电压分配方法及系统
WO2018014298A1 (zh) * 2016-07-21 2018-01-25 张升泽 电子芯片内部电压分配方法及系统
WO2018018371A1 (zh) * 2016-07-25 2018-02-01 张升泽 多核芯片电压计算方法及系统
CN106201726A (zh) * 2016-07-26 2016-12-07 张升泽 多内核芯片线程分配方法及系统
WO2018018424A1 (zh) * 2016-07-26 2018-02-01 张升泽 基于芯片的温度控制方法及系统
CN106250235A (zh) * 2016-07-26 2016-12-21 张升泽 基于多内核芯片的多任务调度方法及系统
WO2018018451A1 (zh) * 2016-07-27 2018-02-01 李媛媛 电子芯片中的功率分配方法及系统
WO2018018449A1 (zh) * 2016-07-27 2018-02-01 李媛媛 基于多核芯片的电压降低方法及系统
WO2018018448A1 (zh) * 2016-07-27 2018-02-01 李媛媛 芯片中温度降低方法及系统
CN106227604A (zh) * 2016-07-27 2016-12-14 李媛媛 芯片中温度降低方法及系统
CN106292995A (zh) * 2016-07-27 2017-01-04 李媛媛 电流限制在多核芯片中的应用方法及系统
WO2018018450A1 (zh) * 2016-07-27 2018-02-01 李媛媛 电流限制在多核芯片中的应用方法及系统
CN106292996A (zh) * 2016-07-27 2017-01-04 李媛媛 基于多核芯片的电压降低方法及系统
US10372494B2 (en) * 2016-11-04 2019-08-06 Microsoft Technology Licensing, Llc Thread importance based processor core partitioning
US11295204B2 (en) * 2017-01-06 2022-04-05 International Business Machines Corporation Area-efficient, reconfigurable, energy-efficient, speed-efficient neural network substrate
KR102643797B1 (ko) * 2017-01-10 2024-03-05 삼성전자주식회사 동적 발열 관리 방법
US10491524B2 (en) 2017-11-07 2019-11-26 Advanced Micro Devices, Inc. Load balancing scheme
CN108107782B (zh) * 2017-12-18 2021-04-16 宁波三星医疗电气股份有限公司 一种用于电力能源采集设备的自控并发数据采集方法
DE112018007177T5 (de) * 2018-02-28 2020-12-10 Intel Corporation Steuerung einer verarbeitungsleistungsstufe abhängig vom energieverbrauch
CN110347508A (zh) * 2019-07-02 2019-10-18 Oppo广东移动通信有限公司 应用程序的线程分配方法、装置、设备及可读存储介质
CN110347486B (zh) * 2019-07-02 2023-09-15 Oppo广东移动通信有限公司 应用程序的线程分配方法、装置、设备及可读存储介质
US10948957B1 (en) 2019-09-26 2021-03-16 Apple Inc. Adaptive on-chip digital power estimator
US11321123B2 (en) * 2019-11-21 2022-05-03 International Business Machines Corporation Determining an optimum number of threads to make available per core in a multi-core processor complex to executive tasks
CN112181124B (zh) * 2020-09-11 2023-09-01 华为技术有限公司 功耗管理的方法和相关设备
CN115904647A (zh) * 2021-09-30 2023-04-04 荣耀终端有限公司 一种任务调度方法、电子设备、芯片系统及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010003207A1 (en) 1998-12-23 2001-06-07 Intel Corporation Method and apparatus of measuring power consumption in a computer system to meet the power delivery specifications of a power outlet

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01155459A (ja) * 1987-12-14 1989-06-19 Hitachi Ltd プロセツサおよび並列計算機
US5392437A (en) * 1992-11-06 1995-02-21 Intel Corporation Method and apparatus for independently stopping and restarting functional units
JP3696901B2 (ja) * 1994-07-19 2005-09-21 キヤノン株式会社 負荷分散方法
US5719800A (en) 1995-06-30 1998-02-17 Intel Corporation Performance throttling to reduce IC power consumption
JPH09138716A (ja) * 1995-11-14 1997-05-27 Toshiba Corp 電子計算機
US6411156B1 (en) 1997-06-20 2002-06-25 Intel Corporation Employing transistor body bias in controlling chip parameters
JPH11338719A (ja) * 1998-05-28 1999-12-10 Fujitsu Ltd 計算機システム
FR2784457B1 (fr) * 1998-10-13 2001-01-05 Sextant Avionique Instruments combines de secours pour aeronef
JP2000222376A (ja) * 1999-01-29 2000-08-11 Toshiba Corp 計算機システムとその運用方法
JP2000322259A (ja) * 1999-05-11 2000-11-24 Hitachi Ltd データ処理装置
US20020023123A1 (en) * 1999-07-26 2002-02-21 Justin P. Madison Geographic data locator
US6564328B1 (en) 1999-12-23 2003-05-13 Intel Corporation Microprocessor with digital power throttle
JP2002007367A (ja) * 2000-06-19 2002-01-11 Nec Corp モナーク・プロセッサの仮想管理による切り替え方法
JP2002108958A (ja) * 2000-09-26 2002-04-12 Toshiba Corp 回路設計システム、回路設計方法および回路設計プログラムを格納したコンピュータ読取り可能な記録媒体
JP2002132741A (ja) * 2000-10-20 2002-05-10 Hitachi Ltd プロセッサ追加方法、計算機及び記録媒体
US7174194B2 (en) * 2000-10-24 2007-02-06 Texas Instruments Incorporated Temperature field controlled scheduling for processing systems
EP1330699B1 (en) * 2000-10-31 2010-12-22 Millennial Net, Inc Networked processing system with optimized power efficiency
US6901522B2 (en) * 2001-06-07 2005-05-31 Intel Corporation System and method for reducing power consumption in multiprocessor system
US7487505B2 (en) * 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
JP2003131900A (ja) * 2001-10-24 2003-05-09 Hitachi Ltd サーバシステム運用管理方式
US6804632B2 (en) * 2001-12-06 2004-10-12 Intel Corporation Distribution of processing activity across processing hardware based on power consumption considerations
US6639428B2 (en) 2001-12-20 2003-10-28 Advanced Technology Materials, Inc. Method and system for dynamically clocking digital systems based on power usage
US7080379B2 (en) * 2002-06-20 2006-07-18 International Business Machines Corporation Multiprocessor load balancing system for prioritizing threads and assigning threads into one of a plurality of run queues based on a priority band and a current load of the run queue
US6934865B2 (en) * 2002-07-09 2005-08-23 University Of Massachusetts Controlling a processor resource based on a compile-time prediction of number of instructions-per-cycle that will be executed across plural cycles by the processor
US7360220B2 (en) * 2002-10-31 2008-04-15 Intel Corporation Methods and apparatus for multi-threading using differently coded software segments to perform an algorithm
US6711447B1 (en) * 2003-01-22 2004-03-23 Intel Corporation Modulating CPU frequency and voltage in a multi-core CPU architecture
US7134031B2 (en) * 2003-08-04 2006-11-07 Arm Limited Performance control within a multi-processor system
US20050155032A1 (en) * 2004-01-12 2005-07-14 Schantz John L. Dynamic load balancing
US20070094444A1 (en) * 2004-06-10 2007-04-26 Sehat Sutardja System with high power and low power processors and thread transfer
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010003207A1 (en) 1998-12-23 2001-06-07 Intel Corporation Method and apparatus of measuring power consumption in a computer system to meet the power delivery specifications of a power outlet

Also Published As

Publication number Publication date
US20060095807A1 (en) 2006-05-04
JP6049668B2 (ja) 2016-12-21
JP5465215B2 (ja) 2014-04-09
JP2016076268A (ja) 2016-05-12
TW200632742A (en) 2006-09-16
JP2008513912A (ja) 2008-05-01
CN100565426C (zh) 2009-12-02
WO2006037119A2 (en) 2006-04-06
WO2006037119A3 (en) 2007-01-25
US7437581B2 (en) 2008-10-14
JP2015028810A (ja) 2015-02-12
JP2013218721A (ja) 2013-10-24
JP2010092483A (ja) 2010-04-22
JP6289444B2 (ja) 2018-03-07
KR20070049226A (ko) 2007-05-10
TWI315847B (en) 2009-10-11
JP2011210275A (ja) 2011-10-20
JP5709938B2 (ja) 2015-04-30
CN101076770A (zh) 2007-11-21
JP4898687B2 (ja) 2012-03-21

Similar Documents

Publication Publication Date Title
KR100880060B1 (ko) 가용 병렬 기능의 양에 따라 명령어 당 에너지를변화시키는 방법 및 장치
US8010822B2 (en) Power-aware thread scheduling and dynamic use of processors
Ghiasi et al. Scheduling for heterogeneous processors in server systems
Lukefahr et al. Composite cores: Pushing heterogeneity into a core
Petrucci et al. Energy-efficient thread assignment optimization for heterogeneous multicore systems
US20150121048A1 (en) Heterogeneity within a processor core
Gupta et al. Dynamic workload-aware DVFS for multicore systems using machine learning
Chiang et al. Kernel mechanisms with dynamic task-aware scheduling to reduce resource contention in NUMA multi-core systems
Sundararajan et al. The smart cache: An energy-efficient cache architecture through dynamic adaptation
Lukefahr et al. Exploring fine-grained heterogeneity with composite cores
Lu et al. A dynamic, compiler guided DVFS mechanism to achieve energy-efficiency in multi-core processors
Jha et al. Chrysso: An integrated power manager for constrained many-core processors
Gupta et al. Deep neural network learning for power limited heterogeneous system with workload classification
Taheri et al. Temperature-aware dynamic voltage and frequency scaling enabled MPSoC modeling using stochastic activity networks
Sun et al. QoS-aware dynamic resource allocation with improved utilization and energy efficiency on GPU
Shifer et al. Low-latency adaptive mode transitions and hierarchical power management in asymmetric clustered cores
KR101449046B1 (ko) 멀티 프로세서 및 이를 이용한 전원 절감 방법
Islam et al. Learning based power management for periodic real-time tasks
Wolff It is Too Hot in Here! a Performance, Energy and Heat Aware Scheduler for Asymmetric Multiprocessing Processors in Embedded Systems
Kang et al. Scheduling for better energy efficiency on many-core chips
Thucanakkenpalayam Sundararajan et al. Energy efficient cache architectures for single, multi and many core processors
FALAHATI et al. ITAP: Idle-Time-Aware Power Management for GPU Execution Units
Mummidi et al. A Neural Network-Based Approach to Dynamic Core Morphing for AMPs
Kloosterman Data Resource Management in Throughput Processors
Del Sozzo Workload-aware power optimization strategy For heterogeneous systems

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130104

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140103

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20141230

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160104

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170102

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180103

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee