KR20170019454A - 프로세서 온도의 균형적 제어 - Google Patents

프로세서 온도의 균형적 제어 Download PDF

Info

Publication number
KR20170019454A
KR20170019454A KR1020177001480A KR20177001480A KR20170019454A KR 20170019454 A KR20170019454 A KR 20170019454A KR 1020177001480 A KR1020177001480 A KR 1020177001480A KR 20177001480 A KR20177001480 A KR 20177001480A KR 20170019454 A KR20170019454 A KR 20170019454A
Authority
KR
South Korea
Prior art keywords
temperature
domain
processor
value
logic
Prior art date
Application number
KR1020177001480A
Other languages
English (en)
Other versions
KR101872231B1 (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 KR20170019454A publication Critical patent/KR20170019454A/ko
Application granted granted Critical
Publication of KR101872231B1 publication Critical patent/KR101872231B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01KMEASURING TEMPERATURE; MEASURING QUANTITY OF HEAT; THERMALLY-SENSITIVE ELEMENTS NOT OTHERWISE PROVIDED FOR
    • G01K1/00Details of thermometers not specially adapted for particular types of thermometer
    • G01K1/02Means for indicating or recording specially adapted for thermometers
    • G01K1/026Means for indicating or recording specially adapted for thermometers arrangements for monitoring a plurality of temperatures, e.g. by multiplexing
    • 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
    • G01MEASURING; TESTING
    • G01KMEASURING TEMPERATURE; MEASURING QUANTITY OF HEAT; THERMALLY-SENSITIVE ELEMENTS NOT OTHERWISE PROVIDED FOR
    • G01K13/00Thermometers specially adapted for specific purposes
    • 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/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • 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/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • 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
    • Y02B60/121
    • Y02B60/1217
    • Y02B60/1275
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

일 실시예에서, 프로세서는 복수의 코어 및 복수의 온도 센서를 포함하며, 각각의 코어는 적어도 하나의 온도 센서에 근접한다. 프로세서는 또한 각각의 온도 센서로부터의 대응하는 온도값을 포함하는 온도 데이터를 수신하는 온도 로직을 포함하는 전력 제어 유닛(PCU)을 포함한다. 온도 데이터의 최고 온도값이 임계값을 초과한다고 하는 표시에 응답하여, 온도 로직은 복수의 코어들 중 적어도 2개의 명령어 실행 특성에 기초한 결정된 정책에 따라 복수의 도메인 주파수를 조정하는 것이다. 각각의 도메인 주파수는 복수의 코어들 중 적어도 하나를 포함하는 대응하는 도메인과 연관되며, 각각의 도메인 주파수는 독립적으로 조정 가능하다. 다른 실시예들이 설명되고 청구된다.

Description

프로세서 온도의 균형적 제어{BALANCED CONTROL OF PROCESSOR TEMPERATURE}
실시예들은 프로세서 온도의 균형적 제어에 관한 것이다.
반도체 처리 및 로직 설계의 진보들은 집적 회로 디바이스들에 존재할 수 있는 로직의 양의 증가를 가능하게 해주었다. 그 결과, 컴퓨터 시스템 구성들은 시스템 내의 단일 또는 다중 집적 회로들로부터, 개별 집적 회로들 상의 다중 하드웨어 스레드들, 다중 코어들, 다중 디바이스들, 및/또는 완전한 시스템들로 발전했다. 추가로, 집적 회로들의 밀도가 증가함에 따라, (내장형 시스템으로부터 서버에 이르기까지의) 컴퓨팅 시스템들에 대한 전력 요건들도 급등했다. 또한, 소프트웨어 비효율성들(software inefficiencies) 및 그것의 하드웨어 요건들, 또한, 컴퓨팅 디바이스 에너지 소비의 증가를 야기했다. 사실, 일부 연구에 따르면, 컴퓨팅 디바이스들은 미국과 같은 국가의 전체 전력 공급의 상당히 큰 비율을 소비한다. 그 결과, 집적 회로들과 관련된 에너지 효율 및 보존이 절대적으로 필요하다. 서버들, 데스크탑 컴퓨터들, 노트북들, UltrabookTM, 태블릿들, 모바일 전화들, 프로세서들, 내장형 시스템들 등이 (전형적인 컴퓨터, 자동차들 및 텔레비젼들에 포함되는 것으로부터 바이오테크놀러지에 이르기까지) 점점 더 많이 보급되어 감에 따라, 이러한 요구들은 증가할 것이다.
도 1은 본 발명의 일 실시예에 따른 시스템의 일부의 블록도이다.
도 2는 본 발명의 일 실시예에 따른 프로세서의 블록도이다.
도 3은 본 발명의 또 다른 실시예에 따른 멀티-도메인의 블록도이다.
도 4는 다수의 코어를 포함하는 프로세서의 일 실시예이다.
도 5는 본 발명의 일 실시예에 따른 프로세서 코어의 마이크로 아키텍처의 블록도이다.
도 6은 또 다른 실시예에 따른 프로세서 코어의 마이크로 아키텍처의 블록도이다.
도 7은 또 다른 실시예에 따른 프로세서 코어의 마이크로 아키텍처의 블록도이다.
도 8은 또 다른 실시예에 따른 프로세서 코어의 마이크로 아키텍처의 블록도이다.
도 9는 본 발명의 또 다른 실시예에 따른 프로세서의 블록도이다.
도 10은 본 발명의 일 실시예에 따른 대표적인 SoC의 블록도이다.
도 11은 본 발명의 일 실시예에 따른 또 다른 예의 SoC의 블록도이다.
도 12는 실시예들이 사용될 수 있는 예시적인 시스템의 블록도이다.
도 13은 실시예들이 사용될 수 있는 또 다른 예시적인 시스템의 블록도이다.
도 14는 대표적인 컴퓨터 시스템의 블록도이다.
도 15는 본 발명의 일 실시예에 따른 시스템의 블록도이다.
도 16은 본 발명의 실시예에 따른 시스템의 블록도이다.
도 17은 본 발명의 일 실시예에 따른 프로세서의 블록도이다.
도 18은 본 발명의 일 실시예에 따른 방법의 흐름도이다.
도 19는 본 발명의 일 실시예에 따른 시스템의 블록도이다.
이하의 실시예들은 컴퓨팅 플랫폼 또는 프로세서에서와 같이, 특정 집적 회로들에서의 에너지 보존 및 에너지 효율을 참조하여 설명되지만, 다른 실시예들이 다른 유형의 집적 회로들 및 로직 디바이스들에 적용될 수 있다. 본 명세서에 기술된 실시예들의 유사한 기술 및 교시가 보다 나은 에너지 효율과 에너지 보존의 이점을 누릴 수 있는 다른 유형의 회로 또는 반도체 디바이스에 적용될 수 있다. 예를 들어, 개시된 실시예들은 임의의 특정 유형의 컴퓨터 시스템들에 제한되지 않는다. 즉, 개시된 실시예들은 서버 컴퓨터(예를 들어, 타워, 랙, 블레이드, 마이크로 서버 등), 통신 시스템, 저장 시스템, 임의의 구성의 데스크탑 컴퓨터, 랩톱, 노트북, 및 태블릿 컴퓨터(2:1 태블릿, 패블릿 등을 포함함)를 포함하는, 상이한 수많은 상이한 시스템 유형들에 사용될 수 있으며, 핸드헬드 디바이스, 시스템 온 칩(SoC) 및 내장형 애플리케이션과 같은 다른 디바이스에도 사용될 수 있다. 핸드헬드 디바이스의 어떤 예들은 스마트폰과 같은 셀룰러 폰, 인터넷 프로토콜 디바이스, 디지털 카메라, PDA(personal digital assistant), 및 핸드헬드 PC를 포함한다. 내장형 애플리케이션들은 전형적으로 마이크로컨트롤러, DSP(Digital Signal Processor), 네트워크 컴퓨터들(NetPC), 셋탑 박스들, 네트워크 허브들, WAN(Wide Area Network) 스위치들, 착용 가능한 디바이스들, 또는 아래에 교시되는 기능들 및 동작들을 수행할 수 있는 임의의 기타 시스템을 포함할 수 있다. 더욱이, 이동 전화, 스마트폰 및 패블릿과 같은 표준 음성 기능을 갖는 이동 단말기 및/또는 많은 착용 가능, 태블릿, 노트북, 데스크탑, 마이크로 서버, 서버 등과 같은, 표준 무선 음성 기능 통신 능력이 없는 비이동 단말기에서 실시들이 구현될 수 있다. 또한, 본 명세서에 기술된 장치들, 방법들 및 시스템들은 물리적 컴퓨팅 디바이스들로 제한되지 않고, 에너지 보존 및 효율을 위한 소프트웨어 최적화에도 관한 것일 수 있다. 이하의 설명에서 쉽게 명백해지는 바와 같이, (하드웨어, 펌웨어, 소프트웨어 또는 그들의 조합을 참조하여) 본 명세서에 기술된 방법들, 장치들 및 시스템들의 실시예들은 US 경제의 큰 부분을 포괄하는 제품들에서의 전력 보존 및 에너지 효율을 위한 것과 같이, '녹색 기술(green technology)'의 미래에 필수적인 것이다.
멀티 코어 프로세서와 같은 프로세서는 작동 중에 열을 발생시킨다. 프로세서가 효과적으로 작동하기 위해, 생성된 열을 관리할 수 있다. 프로세서 열의 관리는 프로세서의 오작동이나 효율의 저하를 초래할 수 있는 과열을 줄일 수 있다.
일부 실시예에서, 프로세서에 의해 생성된 열은 스로틀링(throttling), 예를 들어, 프로세서의 처리량의 감소에 의해, 예를 들어, 인터커넥트, 하나 이상의 프로세싱 엔티티, 예를 들어, 하나 이상의 코어, GPU(graphics processing unit) 등을 포함할 수 있는 프로세서 내의 클록 도메인(본 명세서에서는 "도메인")의 클록 주파수의 감소에 의해 관리될 수 있다. 프로세서 열 관리에 대한 하나의 접근법은 고온에서 동작하고 있는 프로세서 내의 코어(또는 GPU)와 같은 "핫 스폿(hot spot)"을 식별하고, 핫 스폿의 도메인의 클록 주파수를 줄이는 것이다. 클록 주파수(본 명세서에서는 "주파수"라고도 함)의 감소는 예를 들어, 코어의 명령 실행 속도를 감소시키고, 핫 스폿에 의해 생성된 열의 감소 및 프로세서의 더 낮은 작동 온도를 초래한다.
본 발명의 실시예들에 따르면, 스로틀링은 복수의 도메인의 주파수가 프로세서 내의 고온의 검출에 응답하여 조정되는 밸런싱(본 명세서에서는 "밸런스된"이라고도 함) 정책에 따라 달성될 수 있다. 2이상의 프로세싱 엔티티의 스로틀링은 프로세서의 열 감소에 대한 보다 포괄적인 해결책을 제공하여, 핫 스폿이라고 식별된 특정 프로세싱 유닛의 스로틀링이 덜 엄격한데, 예를 들어, 다른 클록 주파수가 추가로 조정되어 프로세서에 의해 생성된 전체 열을 감소시키는 동시에 핫 스폿의 클럭 주파수(본 명세서에서는 도메인 주파수라고도 함)가 감소될 유일한 클록 주파수인 경우보다 더 작은 정도로 핫 스폿의 클럭 주파수가 감소될 수 있다.
밸런싱 정책은 클럭 주파수의 가중치 조정을 지정할 수 있으며, 이것은 동일한 열 발생 감소를 달성하기 위해 단일 클록 주파수만의 감소와 연관된 부작용에 비해, 프로세서에 의한 열 발생을 줄이면서 유해한 부작용(예를 들어, 프로세서의 전체 처리량 감소)을 줄일 수 있다.
밸런싱 정책은 각각의 실행 유닛의 실행 특성들에 적어도 부분적으로 기초하여 결정될 수 있다. 예를 들어, 하나 이상의 코어는 명령을 신속하게(높은 처리율로) 실행할 수 있고, 하나 이상의 코어의 출력은 처리량이 하나 이상의 코어의 처리율보다 작을 수 있는 그래픽 처리 유닛에 입력될 수 있다. 밸런싱 정책은 핫 스폿의 검출에 응답하여, 코어가 GPU보다 더 큰 범위로 스로틀링되어야 한다고 지시할 수 있는데, 예를 들어, 코어의 클록 주파수를 GPU의 클록 주파수의 감소보다 더 크게 감소시켜서, 다른 코어로부터 GPU로의 입력이 "백업"되지(예를 들어, GPU에 입력할 큐(queue)를 형성하지) 않도록 지시할 수 있다.
또 다른 예에서, GPU가 GPU에 공급하는 임의의 코어보다 빠른 처리율을 갖는다면, 상이한 밸런싱 정책이 적용될 수 있다. 이러한 경우, GPU의 "기아(starvation)"를 피하기 위해, 밸런싱 정책은 GPU를 공급하는 하나 이상의 코어의 클록 주파수를 줄이는 것보다 GPU의 클럭 주파수를 더 작은 인자만큼 낮추도록 지시할 수 있다. 일부 실시예에서, 인터커넥트 주파수는 GPU에 공급하는 코어의 주파수와 대략 동일하게 설정될 수 있다. 다른 실시예들에서, 밸런싱 정책은 인터커넥트 주파수가 또 다른 도메인 주파수에 대해 지정된 기능적 관계를 가져야 한다고 지시할 수 있다. 또 다른 실시예는 전술한 예들의 임의의 조합을 포함할 수 있다. 실시예들은 본 명세서에 설명된 것에 제한되지 않는다는 점에 유의해야 한다.
이제 도 1을 참조하면, 본 발명의 일 실시예에 따른 시스템의 일부의 블록도가 도시된다. 도 1에 도시된 바와 같이, 시스템(100)은 멀티코어 프로세서로서 도시된 프로세서(110)를 포함하여, 다양한 컴포넌트들을 포함할 수 있다. 프로세서(110)는 제1 전압 변환을 수행하여 1차 조정 전압(primary regulated voltage)을 프로세서(110)에 제공할 수 있는 외부 전압 레귤레이터(160)를 통해 전원(150)에 결합될 수 있다.
도시된 바와 같이, 프로세서(110)는 다수의 코어(120a 내지 120n)를 포함하는 단일 다이 프로세서(single die processor)일 수 있다. 또한, 각각의 코어는 1차 조정 전압을 수신하고 IVR과 연관된 프로세서의 하나 이상의 에이전트에 제공될 동작 전압을 생성하는 집적 전압 레귤레이터(IVR)(125a 내지 125n) 와 연관될 수 있다. 따라서, 각각의 개별 코어의 전압 및 이로 인한 전력 및 성능의 미세 제어를 가능하게 하는 IVR 구현이 제공될 수 있다. 이와 같이, 각각의 코어는 독립적인 전압 및 주파수에서 동작할 수 있어, 큰 유연성을 가능하게 하고, 전력 소비와 성능의 균형을 맞추는 폭넓은 기회들을 제공한다. 일부 실시예에서, 다수의 IVR의 사용은 개별 전력 평면들로의 컴포넌트들의 그룹핑을 가능하게 하며, 따라서 IVR에 의해 전력이 조절되고 그룹 내의 그러한 컴포넌트들에만 공급된다. 전력 관리 동안에, 하나의 IVR의 주어진 전력 플레인은 프로세서가 소정의 저 전력 상태에 놓일 때 전원 차단 또는 전원 꺼짐이 될 수 있는 한편, 또 다른 IVR의 또 다른 전력 플레인은 활성으로 또는 완전 전력 공급된 채로 유지될 수 있다.
여전히 도 1을 참조하면, 입력/출력 인터페이스(132), 다른 인터페이스(134) 및 통합 메모리 컨트롤러(136)를 포함하는 추가적인 컴포넌트들이 프로세서 내에 존재할 수 있다. 도시된 바와 같이, 이들 컴포넌트 각각은 또 다른 통합 전압 레귤레이터(125x)에 의해 전력을 공급받을 수 있다. 일 실시예에서, 인터페이스(132)는 Intel® QPI(Quick Path Interconnect) 프로토콜에 따를 수 있는데, 이는 물리 계층, 링크 계층, 및 프로토콜 계층을 포함하는 다중 계층들을 포함하는 캐시 코히어런트 프로토콜에서의 PtP(Point-to-Point) 링크를 제공한다. 다음으로, 인터페이스(134)는 예를 들어, PCI ExpressTM 사양 기반 규격 버전 2.0(2007년 1월 17일 공개됨)과 같은 주변기기 컴포넌트 인터커넥트 익스프레스(PCIe™) 사양에 따른 것일 수 있다.
프로세서(110)에 관하여 전력 관리 동작들을 수행하기 위한 하드웨어, 소프트웨어 및/또는 펌웨어를 포함할 수 있는 PCU(Power Control Unit)(138)가 또한 도시된다. 도시된 바와 같이, PCU(138)는 디지털 인터페이스를 통해 외부 전압 레귤레이터(160)에 제어 정보를 제공하여 전압 레귤레이터가 적절한 조정 전압을 생성하게 한다. PCU(138)는 또한 생성된 동작 전압을 제어하기 위해(또는 대응하는 IVR이 저전력 모드에서 디스에이블되도록) 또 다른 디지털 인터페이스를 통해 IVR들(125)에 제어 정보를 제공한다. 다양한 실시예들에서, PCU(138)는 하드웨어 기반 전력 관리를 수행하기 위해 다양한 전력 관리 로직 유닛을 포함할 수 있다. 그러한 전력 관리는 (예를 들어, 다양한 프로세서 하드웨어에 의해, 그리고 작업부하 및/또는 전력, 열 또는 다른 프로세서 제약들에 의해 트리거될 수 있는) 전체적으로 프로세서 제어될 수 있고 및/또는 전력 관리는 외부 소스들(예를 들어, 플랫폼 또는 관리 전력 관리 소스 또는 시스템 소프트웨어)에 응답하여 수행될 수 있다.
도시를 용이하게 하기 위해 보여지진 않았지만, 언코어 로직(uncore logic), 및 내부 메모리, 예를 들어, 1 레벨 이상의 캐시 메모리 계층구조 등과 같은 다른 컴포넌트들과 같은 추가의 컴포넌트들이 프로세서(110) 내에 존재할 수 있음을 이해하자. 또한, 도 1의 구현에서는 통합 전압 레귤레이터와 함께 도시되지만, 실시예들이 이에 제한되는 것은 아니다.
본 명세서에 설명되는 전력 관리 기술들은 ACPI(Advanced Configuration and Platform Interface) 표준(예를 들어, 2006년 10월 10일에 공개된 Rev.3.0b)과 같은 운영 체제(OS) 기반 메커니즘에 독립적이고 상보적일 수 있다. ACPI에 따르면, 프로세서는 다양한 성능 상태들 또는 레벨들, 소위 P-상태들, 즉 P0 내지 PN에서 동작할 수 있다. 일반적으로, P1 성능 상태는 OS에 의해 요청될 수 있는 최고 보장된 성능 상태에 대응할 수 있다. 이러한 P1 상태에 더하여, OS는 더 높은 성능 상태, 즉 P0 상태를 더 요청할 수 있다. 따라서, 이러한 P0 상태는 기회주의적(opportunistic) 또는 터보 모드 상태일 수 있는데, 여기에서는 전력 및/또는 열 예산이 사용 가능할 때, 프로세서 하드웨어가 프로세서 또는 그것의 적어도 일부를 보장된 주파수보다 높은 주파수에서 동작하도록 구성할 수 있다. 많은 구현들에서, 프로세서는 제조 동안 특정 프로세서에 융합 또는 다른 방식으로 기입된 바와 같은, 그 특정 프로세서의 최대 피크 주파수까지, P1 보장된 최대 주파수를 초과하는 다수의 소위 빈 주파수들(bin frequencies)을 포함할 수 있다. 또한, ACPI에 따르면, 프로세서는 다양한 전력 상태들 또는 레벨들에서 동작할 수 있다. 전력 상태에 관하여, ACPI는 일반적으로 C 상태들, 즉 C0, C1 내지 Cn 상태들이라 하는 상이한 전력 소비 상태들을 특정한다. 코어가 액티브일 때는, C0 상태에서 실행되며, 코어가 아이들 상태일 때는, 코어 논-제로 C-상태(예를 들어, C1-C6 상태)라고도 하는 코어 저 전력 상태에 놓일 수 있으며, 각각의 C 상태는 (C6이 C1보다 더 깊은 저 전력 상태에 있는 등이 되도록) 저 전력 소비 레벨에 있다.
많은 상이한 유형의 전력 관리 기술들이 상이한 실시예들에서 개별적으로 또는 조합되어 사용될 수 있다는 점을 이해해야 한다. 대표적인 예로서, 전력 컨트롤러는 하나 이상의 코어 또는 다른 프로세서 로직의 동작 전압 및/또는 동작 주파수가 동적으로 제어되어 소정 상황에서의 전력 소비를 줄이는 DVFS(dynamic voltage frequency scaling)에 의해 프로세서가 전력 관리하도록 제어할 수 있다. 일례에서, 최저의 전력 소비 레벨에서 최적의 성능을 제공하기 위해 캘리포니아주, 산타 클라라에 있는 인텔사에서 제공하는 향상된 인텔 SpeedStep™ 기술을 사용하여 DVFS를 수행할 수 있다. 또 다른 예에서, 인텔 TurboBoost™ 기술을 사용하여 DVFS를 수행하여 하나 이상의 코어 또는 다른 연산 엔진이 조건(예를 들어, 작업부하 및 가용성)에 기초하여 보장된 동작 주파수보다 높게 동작하게 할 수 있다.
소정 예들에서 사용될 수 있는 또 다른 전력 관리 기술은 상이한 연산 엔진 간의 작업부하를 동적으로 스와핑하는 것이다. 예를 들어, 프로세서는 상이한 전력 소비 레벨에서 동작하는 비대칭 코어 또는 다른 프로세싱 엔진을 포함할 수 있어, 전력이 제한된 상황에서, 하나 이상의 작업부하가 저전력 코어 또는 다른 연산 엔진에서 실행되도록 동적으로 스위칭될 수 있다. 또 다른 예시적인 전력 관리 기술은 HDC(hardware duty cycling)이며, 코어 및/또는 다른 연산 엔진을 듀티 사이클에 따라 주기적으로 인에이블 및 디스에이블하여, 하나 이상의 코어가 듀티 사이클의 비활성 주기 동안 비활성화되고 듀티 사이클의 활성 주기 동안 활성화되게 할 수 있다. 이들 특정 예들로 설명되었지만, 많은 다른 전력 관리 기술들이 특정 실시예들에서 사용될 수 있다는 점을 이해해야 한다.
실시예들은 다양한 시장들에 대해 서버 프로세서들, 데스크탑 프로세서들, 모바일 프로세서들 등을 포함하는 프로세서들에 구현될 수 있다. 이제 도 2를 참조하면, 본 발명의 일 실시예에 따른 프로세서의 블록도가 도시된다. 도 2에 도시된 바와 같이, 프로세서(200)는 복수의 코어들(210a 내지 210n)을 포함하는 멀티코어 프로세서일 수 있다. 일 실시예에서, 각각의 그러한 코어는, 독립적인 전력 도메인의 것일 수 있으며, 작업부하에 기초하여 활성 상태들 및/또는 최대 성능 상태들에 진입하고 이로부터 벗어나도록 구성될 수 있다. 다양한 코어들은 다양한 컴포넌트들을 포함하는 시스템 에이전트 또는 언코어(220)에 인터커넥트(215)를 통해 결합될 수 있다. 도시된 바와 같이, 언코어(220)는 최종 레벨 캐시일 수 있는 공유 캐시(230)를 포함할 수 있다. 또한, 언코어는 예를 들어, 메모리 버스를 통해 시스템 메모리(도 2에는 도시되어 있지 않음)와 통신하기 위한 통합 메모리 컨트롤러(240)를 포함할 수 있다. 또한, 언코어(220)는 본 명세서에 기술되는 전력 관리 기술을 수행하는 로직을 포함할 수 있는 다양한 인터페이스(250) 및 전력 제어 유닛(255)을 포함한다.
또한, 인터페이스들(250a 내지 250n)에 의해, 주변 디바이스들, 대용량 저장소 등과 같은 다양한 오프-칩 컴포넌트들에의 접속이 이루어질 수 있다. 도 2의 실시예에서 이러한 특정 구현으로 도시되지만, 본 발명의 범위는 이와 관련하여 한정되지 않는다.
이제 도 3을 참조하면, 본 발명의 또 다른 실시예에 따른 멀티-도메인 프로세서의 블록도가 도시된다. 도 3의 실시예에 도시된 바와 같이, 프로세서(300)는 다수의 도메인을 포함한다. 구체적으로, 코어 도메인(310)은 복수의 코어(3100-310n)를 포함할 수 있고, 그래픽 도메인(320)은 하나 이상의 그래픽 엔진을 포함할 수 있고, 시스템 에이전트 도메인(350)이 더 존재할 수 있다. 일부 실시예에서, 시스템 에이전트 도메인(350)은 코어 도메인보다 독립적인 주파수에서 실행될 수 있으며, 전력 제어 이벤트 및 전력 관리를 처리하기 위해 항상 전원이 켜져 있는 채로 있을 수 있기에, 도메인들(310 및 320)이 고전력 및 저전력 상태에 동적으로 진입하고 벗어나도록 제어될 수 있다. 도메인들(310 및 320) 각각은 상이한 전압 및/또는 전력에서 동작할 수 있다. 단지 3개의 도메인으로 도시되어 있기는 하지만, 본 발명의 범위는 이와 관련하여 제한되지는 않고, 다른 실시예들에서는 부가 도메인들이 존재할 수 있다는 점을 이해해야 한다는 점에 유의한다. 예를 들어, 각각 적어도 하나의 코어를 포함하는 다수의 코어 도메인들이 존재할 수 있다.
일반적으로, 각각의 코어(310)는 다양한 실행 유닛 및 추가적인 처리 요소에 더하여 저레벨의 캐시를 더 포함할 수 있다. 다음으로, 다양한 코어들은 서로 결합될 수 있고, LLC(Last Level Cache)(3400-340n)의 복수의 유닛으로 형성되는 공유 캐시 메모리에 결합될 수 있다. 다양한 실시예들에서, LLC(340)는 코어들 및 그래픽 엔진뿐만 아니라 다양한 미디어 처리 회로 중에서 공유될 수 있다. 알 수 있는 바와 같이, 링 인터커넥트(330)가 따라서 코어들을 함께 결합하며, 또한 코어들, 그래픽 도메인(320) 및 시스템 에이전트 회로(350) 간의 상호접속을 제공한다. 일 실시예에서, 인터커넥트(330)는 코어 도메인의 일부일 수 있다. 그러나, 다른 실시예들에서, 링 인터커넥트는 자기 자신의 도메인의 것일 수 있다.
추가로 도시된 바와 같이, 시스템 에이전트 도메인(350)은 연관된 디스플레이의 제어 및 그에 대한 인터페이스를 제공할 수 있는 디스플레이 컨트롤러(352)를 포함할 수 있다. 추가로 도시된 바와 같이, 시스템 에이전트 도메인(350)은 본 명세서에 기술된 전력 관리 기술을 수행하기 위한 로직을 포함할 수 있는 전력 제어 유닛(355)을 포함 할 수 있다.
도 3에 추가로 도시된 바와 같이, 프로세서(300)는 DRAM(dynamic random access memory)과 같은 시스템 메모리에 대한 인터페이스를 제공할 수 있는 IMC(Integrated Memory Controller)(370)를 더 포함할 수 있다. 다수의 인터페이스들(3800 내지 380n)은 프로세서와 다른 회로 간의 상호 접속을 가능하도록 제공될 수 있다. 예를 들어, 일 실시예에서, 적어도 하나의 다이렉트 미디어 인터페이스(DMI; direct media interface) 인터페이스 뿐만 아니라 하나 이상의 PCIeTM 인터페이스가 제공될 수 있다. 또한, 추가적인 프로세서 또는 다른 회로와 같은 다른 에이전트들 간의 통신을 제공하기 위해, Intel® QPI(Quick Path Interconnect) 프로토콜에 따른 하나 이상의 인터페이스가 제공될 수도 있다. 도 3의 실시예에서는 이 하이레벨로 도시되었지만, 본 발명의 범위는 이에 제한되지 않는 점을 이해해야 한다.
도 4를 참조하면, 다수의 코어를 포함하는 프로세서의 일 실시예가 본 발명의 실시예에 따라 도시된다. 프로세서(400)는 마이크로프로세서, 내장형 프로세서(embedded processor), DSP(digital signal processor), 네트워크 프로세서, 핸드헬드 프로세서, 애플리케이션 프로세서, 보조 프로세서, SoC(system on a chip), 또는 코드를 실행하기 위한 그 외의 디바이스와 같은 임의의 프로세서 또는 처리 디바이스를 포함한다. 일 실시예에서, 프로세서(400)는 비대칭 코어들 또는 대칭 코어들(예시된 실시예)을 포함할 수 있는 적어도 2개의 코어 -코어들(401 및 402)- 를 포함한다. 그러나, 프로세서(400)는 대칭이거나 비대칭일 수 있는 임의의 개수의 처리 요소를 포함할 수 있다.
일 실시예에서, 처리 요소는 소프트웨어 스레드를 지원하기 위한 하드웨어 또는 로직을 지칭한다. 하드웨어 처리 요소의 예는 실행 상태 또는 아키텍처 상태(architectural state) 등의 프로세서의 상태를 보유할 수 있는 스레드 유닛, 스레드 슬롯, 프로세스 유닛, 컨텍스트, 논리 프로세서(logical processor), 하드웨어 스레드, 코어 및/또는 임의의 다른 요소를 포함한다. 다시 말하면, 일 실시예에서, 처리 요소는 소프트웨어 스레드, 운영 체제, 애플리케이션, 또는 그 외의 코드와 같은 코드와 독립적으로 연관될 수 있는 임의의 하드웨어를 지칭한다. 물리적 프로세서는 전형적으로 코어들 또는 하드웨어 스레드들과 같은 임의 수의 그 외의 처리 요소들을 잠재적으로 포함하는 집적 회로를 지칭한다.
코어는 독립적 아키텍처 상태를 유지할 수 있는 집적 회로상에 자리 잡은 로직을 종종 지칭하는데, 여기서 각각의 독립적으로 유지되는 아키텍처 상태는 적어도 몇몇 전용 실행 자원들과 연관된다. 코어들과는 대조적으로, 하드웨어 스레드는 전형적으로 독립적 아키텍처 상태를 유지할 수 있는 집적 회로상에 자리 잡은 임의의 로직을 지칭하는데, 여기서 독립적으로 유지되는 아키텍처 상태들은 실행 자원들에 대한 액세스를 공유한다. 알 수 있는 바와 같이, 소정 자원들이 공유되고 그 외의 자원들이 아키텍처 상태에 전용되는 경우, 하드웨어 스레드와 코어의 명명법에 따른 의미 범위가 겹치게 된다. 그렇지만 종종, 코어 및 하드웨어 스레드는 운영 체제에 의해 개별적 논리적 프로세서들로서 보여지며, 이 경우에 운영 체제는 각각의 논리적 프로세서 상에서의 연산들을 개별적으로 스케줄링할 수 있다.
물리적 프로세서(400)는, 도 4에 도시된 바와 같이, 2개의 코어, 코어들(401 및 402)을 포함한다. 여기서, 코어들(401 및 402)은 대칭 코어들, 즉, 동일한 구성들, 기능 유닛들 및/또는 로직을 갖는 코어들로 간주된다. 또 다른 실시예에서, 코어(401)는 비순차적(out-of-order) 프로세서 코어를 포함하는 한편, 코어(402)는 순차적(in-order) 프로세서 코어를 포함한다. 그러나, 코어들(401 및 402)은 원시 코어, 소프트웨어 관리되는 코어, 원시 명령 세트 아키텍쳐(ISA)를 실행하도록 적응된 코어, 번역된 ISA를 실행하도록 적응된 코어, 공동 설계된(co-designed) 코어, 또는 다른 알려진 코어와 같은 임의 유형의 코어로부터 개별적으로 선택될 수 있다. 또한, 상기 설명에 추가하여, 코어(401)에 예시된 기능 유닛들은 코어(402)의 유닛들이 유사한 방식으로 동작하므로, 이하에 더 상세하게 설명된다.
묘사된 바와 같이, 코어(401)는 2개의 하드웨어 스레드(401a 및 401b)를 포함하는데, 이들은 하드웨어 스레드 슬롯들(401a 및 401b)이라고 또한 지칭될 수 있다. 그러므로, 운영체제와 같은 소프트웨어 엔티티들은, 일 실시예에서, 프로세서(400)를 4개의 별개의 프로세서, 즉 병행적으로 4 개의 소프트웨어 스레드를 실행할 수 있는 4 개의 논리적 프로세서 또는 처리 요소로서 잠재적으로 볼 수 있다. 앞서 언급한 바와 같이, 제1 스레드는 아키텍처 상태 레지스터들(401a)과 연관되어 있고, 제2 스레드는 아키텍처 상태 레지스터들(401b)과 연관되어 있으며, 제3 스레드는 아키텍처 상태 레지스터들(402a)과 연관되어 있을 수 있고, 제4 스레드는 아키텍처 상태 레지스터들(402b)과 연관되어 있을 수 있다. 여기서, 아키텍처 상태 레지스터들(401a, 401b, 402a, 및 402b) 각각은, 앞서 기술한 바와 같이, 처리 요소들, 스레드 슬롯들, 또는 스레드 유닛들이라고 지칭할 수 있다. 예시된 바와 같이, 아키텍처 상태 레지스터들(401a)은 아키텍처 상태 레지스터들(401b)에 복제되고, 따라서 개별적 아키텍처 상태들/문맥들은 논리적 프로세서(401a) 및 논리적 프로세서(401b)에 대해 저장될 수 있다. 코어(401)에서, 할당기 및 리네이머 블록(allocator and renamer block)(430)에서의 리네이밍 로직 및 명령어 포인터들과 같은 그 외의 더 작은 자원들이 또한 스레드들(401a 및 401b)에 대해 복제될 수 있다. 재순서/리타이어먼트 유닛(reorder/retirement unit)(435)의 재순서 버퍼들, ILTB(420), 로드/저장 버퍼들, 및 큐들과 같은 일부 자원들은 파티셔닝을 통해 공유될 수 있다. 범용 내부 레지스터들, 페이지-테이블 베이스 레지스터(들), 로우-레벨 데이터-캐쉬 및 데이터-TLB(415), 실행 유닛(들)(440), 및 비순차 유닛(435)의 부분들과 같은 다른 자원들은 잠재적으로 완전히 공유된다.
프로세서(400)는 종종, 완전히 공유되거나, 파티셔닝을 통해 공유되거나, 처리 요소에 의해/처리 요소에 전용될 수 있는 다른 자원들을 포함한다. 도 4에서, 프로세서의 예시적 논리적 유닛들/자원들을 구비한 순전히 예시적인 프로세서의 실시예가 예시되어 있다. 프로세서는 이들 기능적 유닛들 중 임의의 것을 포함하거나 생략할 수 있을 뿐만 아니라 묘사되지 않은 임의의 그 외의 알려진 기능 유닛들, 로직, 또는 펌웨어를 포함할 수 있다는 것에 유의한다. 예시된 바와 같이, 코어(401)는 단순화된 대표적인 OOO(out-of-order) 프로세서 코어를 포함한다. 그러나 순차적 프로세서가 상이한 실시예들에서 이용될 수 있다. OOO 코어는 실행될/취해질 브랜치들을 예측하는 브랜치 타깃 버퍼(branch target buffer)(420) 및 명령어들에 대한 주소 번역 엔트리들(address translation entries)을 저장하는 I-TLB(420)를 포함한다.
코어(401)는 페치된 요소들을 디코딩하기 위해 페치 유닛(420)에 결합된 디코드 모듈(425)을 더 포함한다. 페치 로직은, 일 실시예에서, 제각기 스레드 슬롯들(401a, 401b)과 연관되는 개별 시퀀서들을 포함한다. 보통, 코어(401)는 프로세서(400)상에서 실행 가능한 명령어들을 정의하고/지정하는 제1 ISA와 연관된다. 종종 제1 ISA의 일부인 머신 코드 명령어들은, 수행될 명령어 또는 동작을 참조하고/지정하는 명령어의 일부분(opcode라고 지칭됨)을 포함한다. 디코드 로직(425)은 그들의 opcode로부터의 이들 명령어를 인식하고 제1 ISA에 의해 정의된 바와 같이 처리하기 위해 파이프라인으로 디코딩된 명령어들을 통과시키는 회로를 포함한다. 예를 들어, 일 실시예에서, 디코더들(425)은 트랜잭션 명령어와 같은 특정 명령어들을 인식하도록 설계 또는 구성되는 로직을 포함한다. 디코더(425)에 의한 인식의 결과, 아키텍쳐 또는 코어(401)는, 적절한 명령어와 연관된 태스크를 수행하기 위해 특정한, 미리 정의된 동작을 취한다. 본 명세서에서 설명되는 태스크들, 블록들, 동작들, 및 방법들 중 임의의 것은 단일 또는 다수의 명령어에 응답하여 실행될 수 있고; 이들 중 몇몇은 신(new) 또는 구(old) 명령어들일 수 있다는 점에 주목하는 것이 중요하다.
한 예에서, 할당기 또는 리네이머 블록(430)은 명령어 처리 결과를 저장하는 레지스터 파일 등의 자원을 예약하는 할당기를 포함한다. 그러나, 스레드들(401a 및 401b)은 잠재적으로 비순차적 실행을 할 수 있고, 이 경우 할당기 및 리네이머 블록(430)은 또한 명령어 결과들을 추적하기 위한 리오더 버퍼들과 같은 그 외의 자원들을 보유한다. 유닛(430)은 또한 프로그램/명령어 참조 레지스터들을 프로세서(400) 내부의 다른 레지스터들로 이름 변경하는 레지스터 리네이머를 포함할 수 있다. 리오더/리타이어먼트 유닛(435)은 비순차적 실행을 지원하고 또한 비순차적으로 실행되는 명령어들의 이후의 순차적 리타이어먼트를 지원하기 위해 상기에 언급된 리오더 버퍼들, 로드 버퍼들, 및 저장 버퍼들과 같은 컴포넌트들을 포함한다.
일 실시예에서, 스케줄러 및 실행 유닛(들) 블록(440)은 실행 유닛들 상의 명령어들/동작을 스케줄링하는 스케줄러 유닛을 포함한다. 예를 들어, 부동 소수점 명령어는 이용가능한 부동 소수점 실행 유닛을 갖는 실행 유닛의 포트상에서 스케줄링된다. 실행 유닛들과 연관되는 레지스터 파일들은 또한 정보 명령어 처리 결과들을 저장하기 위해 포함된다. 예시적 실행 유닛들은 부동 소수점 실행 유닛, 정수 실행 유닛, 점프 실행 유닛, 로드 실행 유닛, 저장 실행 유닛, 및 그 외의 알려진 실행 유닛들을 포함한다.
하위 레벨 데이터 캐시 및 데이터 변환 버퍼(D-TLB)(450)는 실행 유닛(들)(440)에 결합된다. 데이터 캐시는 메모리 일관성 상태들에 잠재적으로 유지되는, 데이터 피연산자들과 같은 최근에 사용된/연산 처리된 요소들을 저장하기 위해 된다. D-TLB는 최근의 가상/선형 대 물리적 주소 변환들을 저장하는 것이다. 특정 예로서, 프로세서는 물리적 메모리를 복수의 가상 페이지로 분할하기 위한 페이지 테이블 구조를 포함할 수 있다.
여기서, 코어들(401 및 402)은 최근 페치된 요소들을 캐싱하는 상위 레벨 또는 퍼더-아웃(further-out) 캐시(410)에 대한 액세스를 공유한다. 상위 레벨 또는 퍼더-아웃은 실행 유닛(들)으로부터 증가하거나 또는 더 멀리 떨어진 캐시 레벨을 지칭한다는 점에 유의한다. 일 실시예에서, 상위 레벨 캐시(410)는 제2 또는 제3 레벨 데이터 캐시와 같은 최종 레벨 데이터 캐시 -프로세서(400)상의 메모리 계층 구조에서의 최종 캐시- 이다. 그러나, 상위 레벨 캐시(410)는 명령어 캐시와 연관될 수 있거나 명령어 캐시를 포함할 수 있는 바와 같이, 그렇게 제한되지 않는다. 트레이스 캐시(trace cache) -일종의 명령어 캐시- 는 최근에 디코딩된 트레이스들을 저장하기 위해 디코더(425)후에 대신에 결합될 수 있다.
도시된 구성에서, 프로세서(400)는 또한 본 발명의 일 실시예에 따라 전력 관리를 수행할 수 있는 버스 인터페이스 모듈(405) 및 전력 컨트롤러(460)를 포함한다. 이 시나리오에서, 버스 인터페이스(405)는 시스템 메모리 및 다른 컴포넌트들와 같은 프로세서(400) 외부의 디바이스들과 통신한다.
메모리 컨트롤러(470)는 하나 이상의 메모리와 같은 다른 디바이스들과 인터페이스할 수 있다. 예에서, 버스 인터페이스(405)는 메모리와 인터페이싱하기 위한 메모리 컨트롤러 및 그래픽 프로세서와 인터페이싱하기 위한 그래픽 컨트롤러를 갖춘 링 인터커넥트를 포함한다. SoC 환경에서, 네트워크 인터페이스, 보조 프로세서들, 메모리, 그래픽 프로세서, 및 임의의 다른 알려진 컴퓨터 디바이스들/인터페이스와 같은 더욱 많은 디바이스들이 높은 기능성과 저 전력 소비를 가진 소형 폼 팩터를 제공하기 위해 단일 다이 또는 집적 회로상에 집적될 수 있다.
이제 도 5를 참조하면, 본 발명의 일 실시예에 따른 프로세서 코어의 마이크로 구조의 블록도가 도시된다. 도 5에 도시된 바와 같이, 프로세서 코어(500)는 다단계 파이프라인형 비순차적 프로세서일 수 있다. 코어 (500)는 통합된 전압 레귤레이터 또는 외부 전압 레귤레이터로부터 수신될 수 있는 수신된 동작 전압에 기초하여 다양한 전압에서 동작 할 수 있다.
도 5에 도시된 바와 같이, 코어(500)는 실행될 명령어들을 페치하고 프로세서 파이프라인에서 차후에 사용될 것에 대비하는데 사용될 수 있는, 프론트 엔드 유닛들(510)을 포함한다. 예를 들어, 프론트 엔드 유닛들(510)은 페치 유닛(501), 명령 캐시(503), 및 명령 디코더(505)를 포함할 수 있다. 일부 구현들에서, 프론트 엔드 유닛들(510)은 마이크로-오퍼레이션 스토리지뿐만 아니라 마이크로코드 스토리지와 함께, 추적 캐시를 더 포함할 수 있다. 페치 유닛(501)은 예를 들어, 메모리 또는 명령 캐시(503)로부터 마이크로-명령어들을 페치하고, 프리미티브들, 즉, 프로세서에 의한 실행을 위한 마이크로-오퍼레이션들로 이들을 디코딩하기 위해 명령 디코더(505)에 이들을 공급할 수 있다.
마이크로-명령어들을 수신하고 실행에 대비하는데 사용될 수 있는 OOO(out-of-order) 엔진(515)이 프론트 엔드 유닛들(510) 및 실행 유닛들(520) 간에 결합된다. 특히, OOO 엔진(515)은 마이크로-명령어 흐름을 리오더(re-order)하고 실행에 필요한 각종 자원들을 할당할 뿐만 아니라, 레지스터 파일(530) 및 확장 레지스터 파일(535) 등의 각종 레지스터 파일들 내의 스토리지 로케이션들에 대한 논리 레지스터들의 리네이밍을 제공하기 위해 각종 버퍼들을 포함할 수 있다. 레지스터 파일(530)은 정수 및 부동 소수점 연산들을 위한 개별 레지스터 파일들을 포함할 수 있다. 확장 레지스터 파일(535)은 벡터-크기 단위들, 예를 들어, 레지스터당 256 또는 512비트들의 스토리지를 제공할 수 있다.
각종 자원들은, 다른 특별 하드웨어 중에, 예를 들어, 각종 정수, 부동 소수점, 및 단일 명령어 다중 데이터(SIMD) 로직 유닛들을 포함하는, 실행 유닛들(520)에 존재할 수 있다. 예를 들어, 이러한 실행 유닛들은, 다른 실행 유닛들 중에, 하나 이상의 산술 로직 유닛들(ALU)(522)과 하나 이상의 벡터 실행 유닛들(524)을 포함할 수 있다.
실행 유닛들로부터의 결과들은 리타이어먼트 로직(retirement logic), 즉, 리오더(reorder) 버퍼(ROB)(540)에 제공될 수 있다. 보다 구체적으로, ROB(540)는 실행되는 명령어들과 연관된 정보를 수신하기 위한 각종 배열들 및 로직을 포함할 수 있다. 이 정보는 그 후 명령어들이 유효하게 리타이어되어 프로세서의 구조적 상태에 전념하는 데이터를 야기할 수 있는지를, 또는 명령들의 적합한 리타이먼트를 방지하는 하나 이상의 예외들이 발생했는지를 결정하기 위해 ROB(540)에 의해 검사된다. 물론, ROB(540)는 리타이어먼트와 연관된 다른 동작들을 처리할 수 있다.
도 5에 도시된 바와 같이, ROB(540)는 일 실시예에서, 저 레벨 캐시(예를 들어, L1 캐시)일 수 있는 캐시(550)에 결합되지만, 본 발명의 범위는 이와 관련하여 제한되지 않는다. 또한, 실행 유닛들(520)은 캐시(550)에 직접 결합될 수 있다. 캐시(550)로부터, 데이터 통신은 상위 레벨 캐시들, 시스템 메모리 등과 함께 발생할 수 있다. 도 5의 실시예에서 고레벨로 도시되지만, 본 발명의 범위는 이와 관련하여 제한되지 않음을 이해한다. 예를 들어, 도 5의 구현은 Intel® x86 명령어 세트 아키텍처(ISA) 등의 비순차적 머신과 관련되지만, 본 발명의 범위는 이와 관련하여 제한되지 않는다. 즉, 다른 실시예들은 순차적 프로세서, ARM 기반 프로세서와 같은 RISC(reduced instruction set computing) 프로세서, 또는 에뮬레이션 엔진 및 결합된 로직 회로를 통해 상이한 ISA의 명령어들 및 동작들을 에뮬레이팅할 수 있는 또 다른 유형의 ISA의 프로세서로 구현될 수 있다.
이제 도 6을 참조하면, 다른 실시예에 따른 프로세서 코어의 마이크로 아키텍처의 블록도가 도시된다. 도 6의 실시예에서, 코어(600)는 전력 소모를 줄이기 위해 설계된 상대적으로 제한된 파이프라인 깊이를 갖는 Intel® AtomTM 기반 프로세서와 같은 다른 마이크로 아키텍처의 저전력 코어일 수 있다. 도시된 바와 같이, 코어(600)는 명령 디코더(615)에 명령어들을 제공하도록 결합된 명령 캐시(610)를 포함한다. 브랜치 예측기(605)는 명령 캐시(610)에 결합될 수 있다. 명령 캐시(610)는 상이한 레벨의 캐시 메모리, 예를 들어 L2 캐시(도 6에는 도시의 용이함을 위해 도시되지 않음)에 추가로 결합될 수 있다는 점에 유의해야 한다. 다음으로, 명령 디코더(615)는 저장 및 주어진 실행 파이프라인으로의 전달을 위해 발행 큐(620)에 디코딩된 명령어를 제공한다. 마이크로코드 ROM (618)은 명령 디코더 (615)에 결합된다.
부동 소수점 파이프라인(630)은 128, 256 또는 512 비트와 같은 주어진 비트의 복수의 아키텍처 레지스터를 포함할 수 있는 부동 소수점 레지스터 파일(632)을 포함한다. 파이프라인(630)은 파이프라인의 복수의 실행 유닛들 중 하나에서 실행을 위한 명령어들을 스케줄링하기 위한 부동 소수점 스케줄러(634)를 포함한다. 도시된 실시예에서, 이러한 실행 유닛들은 ALU(635), 셔플 유닛(636) 및 부동 소수점 가산기(638)를 포함한다. 다음으로, 이들 실행 유닛에서 생성된 결과는 레지스터 파일(632)의 버퍼 및/또는 레지스터에 다시 제공될 수 있다. 물론, 이러한 소수의 예시적인 실행 유닛으로 도시되어 있지만, 다른 실시예에서는 추가 또는 다른 부동 소수점 실행 유닛들이 존재할 수 있음을 이해한다.
정수 파이프 라인(640)이 또한 제공될 수 있다. 도시된 실시예에서, 파이프 라인(640)은 128 또는 256비트와 같은 주어진 비트의 복수의 아키텍처 레지스터를 포함할 수 있는 정수 레지스터 파일(642)을 포함한다. 파이프 라인(640)은 파이프 라인의 다수의 실행 유닛 중 하나에서 실행하기 위한 명령어들을 스케줄링하기 위한 정수 스케줄러(644)를 포함한다. 도시된 실시예에서, 이러한 실행 유닛은 ALU(645), 시프터 유닛(646), 및 점프 실행 유닛(648)을 포함한다. 다음으로, 이들 실행 유닛에서 생성된 결과는 레지스터 파일(642)의 버퍼 및/또는 레지스터에 제공될 수 있다. 물론, 이들 몇 개의 예시적인 실행 유닛들이 도시되어 있지만, 또 다른 실시예에서 추가 또는 상이한 정수 실행 유닛들이 존재할 수 있음을 이해해야 한다.
메모리 실행 스케줄러(650)는 TLB(654)에 또한 결합되는 어드레스 생성 유닛(652)에서 실행하기 위한 메모리 동작을 스케줄링할 수 있다. 도시된 바와 같이, 이들 구조는 L2 캐시 메모리를 포함하는, 캐시 메모리 계층 구조의 추가 레벨에 다음으로 결합되는 L0 및/또는 L1 데이터 캐시일 수 있는 데이터 캐시(660)에 결합될 수 있다.
비순차적 실행에 대한 지원을 제공하기 위해, 리타이어먼트에 대해 비순차적으로 실행되는 명령어들을 순서대로 리오더하도록 구성되는, 리오더 버퍼(680)에 추가하여 할당기/리네이머(670)가 제공될 수 있다. 도 6의 예시에서 이러한 특정 파이프 라인 아키텍처가 도시되었지만, 많은 변경과 대안이 가능하다는 것을 이해해야 한다.
도 5 및 도 6의 마이크로 아키텍쳐에 따른 것과 같이 비대칭 코어를 갖는 프로세서에서, 전력 관리상의 이유로 코어들 간에 작업부하가 동적으로 스와핑될 수 있는데, 이들 코어는 상이한 파이프라인 설계 및 깊이를 갖는다고 해도, 동일하거나 관련된 ISA일 수 있다. 이러한 동적 코어 스와핑은 사용자 애플리케이션(및 커널(kernel)도 가능함)에 투명하게 수행될 수 있다.
도 7을 참조하면, 또 다른 실시예에 따른 프로세서 코어의 마이크로 아키텍처의 블록도가 도시되어 있다. 도 7에 도시된 바와 같이, 코어(700)는 매우 낮은 전력 소비 레벨에서 실행되는 다단계 순차 파이프 라인을 포함할 수 있다. 하나의 그러한 예로서, 프로세서(700)는 캘리포니아주, 서니 베일의 ARM Holdings, LTD.에서 입수 가능한 ARM Cortex A53 디자인에 따른 마이크로 아키텍처를 가질 수 있다. 하나의 구현에서, 32 비트 및 64 비트 코드를 실행하도록 구성되는 8-스테이지 파이프 라인이 제공될 수 있다. 코어(700)는 명령어들을 페치하고 명령어들을, 예를 들어 ARMv8 ISA와 같은 주어진 ISA의 매크로 명령어들을 디코딩할 수 있는 디코드 유닛(715)에 제공하도록 구성되는 페치 유닛(710)을 포함한다. 또한, 큐(730)는 디코딩된 명령어를 저장하기 위해 디코드 유닛(715)에 결합될 수 있다. 디코딩된 명령어들은 발행 로직(725)에 제공되고, 여기서 디코딩된 명령어들은 다수의 실행 유닛 중 주어진 하나에 발행될 수 있다.
도 7을 더 참조하면, 발행 로직(725)은 다수의 실행 유닛 중 하나에 명령어들을 발행할 수 있다. 도시된 실시예에서, 이들 실행 유닛은 정수 유닛(735), 승산 유닛(740), 부동 소수점/벡터 유닛(750), 듀얼 발행 유닛(760) 및 로드/저장 유닛(770)을 포함한다. 이러한 상이한 실행 유닛들의 결과는 라이트백 유닛(780)에 제공될 수 있다. 설명을 용이하게 하기 위해 단일 라이트백 유닛이 도시되어 있지만, 일부 구현에서는 개별 라이트백 유닛들이 각각의 실행 유닛과 연관될 수 있다는 것을 이해해야 한다. 또한, 도 7에 도시된 각각의 유닛 및 로직은, 높은 레벨에서 표현되지만, 특정 구현은 더 많은 또는 상이한 구조를 포함할 수 있다는 것을 이해해야 한다. 도 7에서와 같이 파이프라인을 갖는 하나 이상의 코어를 사용하여 설계된 프로세서는 모바일 디바이스에서 서버 시스템에 이르기까지 수많은 상이한 최종 제품으로 구현될 수 있다.
도 8을 참조하면, 또 다른 실시예에 따른 프로세서 코어의 마이크로 아키텍처의 블록도가 도시되어 있다. 도 8에 도시된 바와 같이, 코어(800)는 (도 7의 코어(700)보다 높은 전력 소모 레벨에서 발생할 수 있는) 매우 높은 성능 레벨에서 실행하는 다단계 다발행 비순차적 파이프라인을 포함할 수 있다. 이러한 일례로서, 프로세서(800)는 ARM Cortex A57 설계에 따라 마이크로 아키텍처를 가질 수 있다. 구현에서, 32 비트 및 64 비트 코드 모두를 실행하도록 구성되는 15(또는 그 이상)단의 파이프라인이 제공될 수 있다. 또한 파이프라인은 3개(또는 그 이상)의 와이드(wide) 및 3개(또는 그 이상)의 발행 동작을 제공할 수 있다. 코어(800)는 명령어들을 페치하고 이들을 예를 들어, ARMv8 명령어 세트 아키텍처의 매크로 명령어들을 디코딩하고, 명령어들 내의 레지스터 참조들을 리네이밍하고, 명령어들(결국) 선택된 실행 유닛에 디스패치할 수 있는, 디코더/리네이머/디스패처(815)에 제공하도록 구성되는 페치 유닛 유닛(810)을 포함한다. 디코딩된 명령어들은 큐(825)에 저장될 수 있다. 도 8에서 도시의 용이함을 위해 단일 큐 구조가 도시되어 있지만, 다수의 상이한 유형의 실행 유닛 각각에 대해 개별 큐가 제공될 수 있다는 점을 이해해야 한다.
또한, 도 8에는 발행 로직(830)이 도시되어 있으며, 이 발행 로직으로부터 큐(825)에 저장된 디코딩된 명령어들은 선택된 실행 유닛에 발행될 수 있다. 또한, 발행 로직(830)은 발행 로직(830)이 결합되는 다수의 상이한 유형의 실행 유닛 각각에 대한 개별적인 발행 로직을 갖는 특정 실시예에서 구현될 수 있다.
디코딩된 명령어들은 다수의 실행 유닛 중 주어진 하나에 발행될 수 있다. 도시된 실시예에서, 이들 실행 유닛은 하나 이상의 정수 유닛(835), 승산 유닛(840), 부동 소수점/벡터 유닛(850), 브랜치 유닛(860) 및 로드/저장 유닛(870)을 포함한다. 실시예에서, 부동 소수점/벡터 유닛(850)은 SIMD 또는 128 또는 256 비트의 벡터 데이터를 처리하도록 구성될 수 있다. 또한, 부동 소수점/벡터 실행 유닛(850)은 IEEE-754 배정도 부동 소수점 연산을 수행할 수 있다. 이들 상이한 실행 유닛의 결과는 라이트백 유닛(880)에 제공될 수 있다. 일부 구현 예에서는, 별도의 라이트백 유닛이 각각의 실행 유닛과 연관될 수 있다는 점에 유의해야 한다. 또한, 도 8에 도시된 각각의 유닛 및 로직은, 높은 레벨에서 표현되지만, 특정 구현은 더 많은 또는 상이한 구조를 포함할 수 있다는 것을 이해해야 한다.
도 7 및 도 8의 마이크로 아키텍처에 따른 것과 같이 비대칭 코어를 갖는 프로세서에서, 전력 관리상의 이유로 코어들 간에 작업부하가 동적으로 스와핑될 수 있는데, 이들 코어는 상이한 파이프라인 설계 및 깊이를 갖는다고 해도, 동일하거나 관련된 ISA일 수 있다. 이러한 동적 코어 스와핑은 사용자 애플리케이션(및 커널(kernel)도 가능함)에 투명하게 수행될 수 있다.
도 5 내지 도 8 중 어느 하나 이상에서와 같이 파이프 라인들을 갖는 하나 이상의 코어를 사용하여 설계된 프로세서는 모바일 디바이스에서 서버 시스템에 이르기까지 수많은 상이한 최종 제품으로 구현될 수 있다. 이제 도 9를 참조하면, 본 발명의 또 다른 실시예에 따른 프로세서의 블록도가 도시된다. 도 9의 실시예에서, 프로세서(900)는 독립적인 동작 전압 및 동작 주파수에서 동작하도록 각자 제어될 수 있는 다수의 도메인을 포함하는 SoC일 수 있다. 특정 예시적인 예로서, 프로세서(900)는 i3, i5, i7와 같은 Intel® Architecture CoreTM 기반 프로세서 또는 인텔사로부터 입수 가능한 또 다른 프로세서일 수 있다. 그러나, 캘리포니아주 서니베일의 Advanced Micro Devices, Inc.(AMD)로부터 입수 가능한 바와 같은 다른 저전력 프로세서들, ARM Holdings, Ltd. 또는 그의 피허가자로부터의 ARM 기반 설계 또는 캘리포니아주 서니베일의 MIPS Technologies, Inc. 또는 그들의 피허가자들 또는 사용자들로부터의 MIPS 기반 설계, 예로서 Apple A7 프로세서, Qualcomm Snapdragon 프로세서 또는 Texas Instruments OMAP 프로세서가 다른 실시예들에서 대신 존재할 수 있다. 그러한 SoC는 스마트폰, 태블릿 컴퓨터, Ultrabook™ 컴퓨터 또는 다른 휴대용 컴퓨팅 디바이스와 같은 저전력 시스템에서 사용될 수 있다.
도 9에 도시된 하이 레벨 도면에서, 프로세서(900)는 복수의 코어 유닛(9100-910n)을 포함한다. 각각의 코어 유닛은 하나 이상의 프로세서 코어, 하나 이상의 캐시 메모리 및 다른 회로를 포함할 수 있다. 각각의 코어 유닛(910)은 하나 이상의 명령어 세트(예를 들어, (더 새로운 버전들과 함께 추가된 일부 확장들을 갖는) x86 명령어 세트; MIPS 명령어 세트; (NEON과 같은 선택적인 추가 확장들을 갖는) ARM 명령어 세트) 또는 다른 명령어 세트 또는 이들의 조합들을 지원할 수 있다. 코어 유닛들 중 일부는 (예를 들어, 상이한 설계의) 이종 자원들일 수 있다는 점에 유의한다. 게다가, 각각의 그러한 코어는 일 실시예에서 공유 레벨(L2) 캐시 메모리일 수 있는 캐시 메모리(도시 생략)에 결합될 수 있다. 비휘발성 스토리지(930)는 다양한 프로그램 및 다른 데이터를 저장하는데 사용될 수 있다. 예를 들어, 이러한 스토리지를 이용하여, 마이크로코드, BIOS와 같은 부트 정보, 다른 시스템 소프트웨어 등의 적어도 부분들을 저장할 수 있다.
각각의 코어 유닛(910)은 프로세서의 추가 회로에 대한 상호접속을 가능하게 하기 위한 버스 인터페이스 유닛과 같은 인터페이스도 포함할 수 있다. 일 실시예에서, 각각의 코어 유닛(910)은 다음으로 메모리 컨트롤러(935)에 결합되는 주요 캐시 코히런트 온-다이 인터커넥트로서 작용할 수 있는 코히런트 패브릭에 결합된다. 다음으로, 메모리 컨트롤러(935)는 DRAM과 같은 메모리와의 통신을 제어한다(도 9에서는 도시의 용이함을 위해 도시되지 않음).
코어 유닛들에 더하여, 그래픽 처리를 수행하는 것은 물론, 아마도 그래픽 프로세서 상에서 범용 동작들(소위, GPGPU 동작)을 실행하기 위한 하나 이상의 그래픽 처리 유닛(GPU)을 포함할 수 있는 적어도 하나의 그래픽 유닛(920)을 포함하는 추가 처리 엔진들이 프로세서 내에 존재한다. 또한, 적어도 하나의 이미지 신호 프로세서(925)가 존재할 수 있다. 신호 프로세서(925)는 SoC의 내부에 있거나 칩과 떨어진 하나 이상의 캡처 디바이스로부터 수신되는 착신 이미지 데이터를 처리하도록 구성될 수 있다.
다른 가속도계들도 존재할 수 있다. 도 9의 예에서, 비디오 코더(950)는 비디오 정보에 대한 인코딩 및 디코딩을 포함하는 코딩 동작들을 수행하여, 예로서 고화질 비디오 콘텐츠에 대한 하드웨어 가속 지원을 제공할 수 있다. 시스템의 내부 및 외부 디스플레이들에 대한 지원의 제공을 포함하는 디스플레이 동작들을 가속화하기 위해 디스플레이 컨트롤러(955)가 더 제공될 수 있다. 게다가, 보안 부트 동작, 다양한 암호화 동작 등과 같은 보안 동작들을 수행하기 위한 보안 프로세서(945)가 존재할 수 있다.
유닛들 각각은 본 명세서에 설명된 다양한 전력 관리 기술들을 수행하기 위한 제어 로직을 포함할 수 있는 전력 매니저(940)를 통해 제어되는 전력 소모를 가질 수 있다.
일부 실시예들에서, SoC(900)는 다양한 주변 디바이스들이 결합될 수 있는 코히런트 패브릭에 결합되는 논-코히런트 패브릭을 더 포함할 수 있다. 하나 이상의 인터페이스들(960a-960d)은 하나 이상의 오프-칩 디바이스들과의 통신을 가능하게 한다. 그러한 통신은 다른 유형의 통신 프로토콜 가운데서 PCIe™, GPIO, USB, I2C, UART, MIPI, SDIO, DDR, SPI, HDMI와 같은 다양한 통신 프로토콜에 따를 수 있다. 도 9의 실시예에서는 이러한 높은 수준으로 도시되어 있지만, 본 발명의 범위는 이와 관련하여 제한되지는 않는다는 것을 이해해야 한다.
이제 도 10을 참조하면, 대표적인 SoC의 블록도가 도시되어 있다. 도시된 실시예에서, SoC(1000)는 태블릿 컴퓨터 또는 다른 휴대용 컴퓨팅 디바이스와 같은 다른 저전력 디바이스 또는 스마트폰에 통합하기 위해 최적화되도록 저전력 동작을 위해 구성되는 멀티-코어 SoC일 수 있다. 일 예로서, SoC(1000)는 보다 높은 전력 및/또는 저전력 코어, 예를 들어, 비순차적 코어 및 순차적 코어의 조합과 같은 비대칭 또는 상이한 유형의 코어를 사용하여 구현될 수 있다. 상이한 실시예들에서, 이들 코어는 Intel® Architecture™ 코어 설계 또는 ARM 아키텍처 설계에 기초한 것일 수 있다. 또 다른 실시예에서, 인텔 및 ARM 코어의 혼합은 주어진 SoC에서 구현될 수 있다.
도 10에 도시된 바와 같이, SoC(1000)는 복수의 제1 코어(10120-10123)를 갖는 제1 코어 도메인(1010)을 포함한다. 일례에서, 이들 코어는 순차적 코어와 같은 저전력 코어일 수 있다. 일 실시예에서, 이들 제1 코어는 ARM Cortex A53 코어들로서 구현될 수 있다. 다음으로, 이들 코어는 코어 도메인(1010)의 캐시 메모리(1015)에 결합된다. 또한, SoC(1000)는 제2 코어 도메인(1020)을 포함한다. 도 10의 예에서, 제2 코어 도메인(1020)은 복수의 제2 코어(10220-10223)를 갖는다. 일례에서, 이들 코어는 제1 코어(1012)보다 전력 소모가 큰 코어일 수 있다. 일 실시예에서, 제2 코어들은 비순차적 코어들일 수 있으며, 이것들은 ARM Cortex A57 코어들로서 구현될 수 있다. 다음으로, 이들 코어는 코어 도메인(1020)의 캐시 메모리(1025)에 결합된다. 도 10에 도시된 예는 각각의 도메인에 4개의 코어를 포함하고 있지만, 다른 예에서는 주어진 도메인에 코어가 더 많거나 더 적게 제공될 수 있다는 점을 이해해야 한다.
도 10을 더 참조하면, 예를 들어, 코어 도메인들(1010 및 1020)의 하나 이상의 코어에 의해 제공되는, 그래픽 작업부하를 독립적으로 실행하도록 구성되는 하나 이상의 그래픽 처리 유닛(GPU)을 포함할 수 있는 그래픽 도메인(1030)도 제공된다. 일례로서, GPU 도메인(1030)은 그래픽을 제공하는 것에 추가하여 다양한 화면 크기를 위한 디스플레이 지원을 제공하고 랜터링 동작을 디스플레이하는데 사용될 수 있다.
도시된 바와 같이, 다양한 도메인들은, 일 실시예에서, 집적된 메모리 컨트롤러(1050)에 다음으로 결합되는 캐시 코히어런트 인터커넥트 패브릭일 수 있는 코히어런트 인터커넥트(1040)에 결합된다. 코히어런트 인터커넥트(1040)는 일부 예에서, L3 캐시와 같은 공유 캐시 메모리를 포함할 수 있다. 일 실시예에서, 메모리 컨트롤러(1050)는 DRAM의 다수의 채널(도 10에서는 설명의 용이함을 위해 도시되지 않음)과 같은 오프-칩 메모리와의 다수의 통신 채널을 제공하는 다이렉트 메모리 컨트롤러일 수 있다.
다른 예에서, 코어 도메인의 수는 다양할 수 있다. 예를 들어, 모바일 컴퓨팅 디바이스에 통합하기에 적합한 저전력 SoC의 경우, 도 10에 도시된 바와 같은 제한된 수의 코어 도메인이 존재할 수 있다. 또한, 이러한 저전력 SoC에서, 고전력 코어를 포함하는 코어 도메인(1020)은 그러한 코어의 수가 적을 수 있다. 예를 들어, 일 실시예에서, 2개의 코어(1022)는 감소된 전력 소비 레벨에서 동작할 수 있도록 제공될 수 있다. 또한, 상이한 코어 도메인을 인터럽트 컨트롤러에 결합하여 상이한 도메인들 간에 작업부하를 동적으로 스와핑할 수 있다.
또 다른 실시예들에서, 더 많은 수의 코어 도메인뿐만 아니라 추가적인 선택적 IP 로직은, SoC가 데스크톱, 서버, 고성능 컴퓨팅 시스템, 기지국 등과 같은 다른 컴퓨팅 디바이스에 통합하기 위해 보다 높은 성능(및 전력)으로 스케일링될 수 있다는 점에서, 존재할 수 있다. 하나의 그러한 예로서, 각각이 주어진 수의 비순차적 코어를 갖는 4개의 코어 도메인이 제공될 수 있다. 또한, 선택적 GPU 지원(이것은 예로서 GPGPU의 형태를 취할 수 있음) 이외에, 특정 기능(예를 들어, 웹 서빙, 네트워크 프로세싱, 스위칭 등)에 대해 최적화된 하드웨어 지원을 제공하는 하나 이상의 가속기가 또한 제공될 수 있다. 또한, 이러한 가속기를 오프-칩 컴포넌트에 결합하기 위한 입력/출력 인터페이스가 존재할 수 있다.
이제 도 11을 참조하면, 또 다른 예시적인 SoC의 블록도가 도시되어 있다. 도 11의 실시예에서, SoC(1100)는 멀티미디어 애플리케이션, 통신 및 다른 기능들에 대해 높은 성능을 가능하게 하는 다양한 회로를 포함할 수 있다. 이와 같이, SoC(1100)는 스마트폰, 태블릿 컴퓨터, 스마트 TV 등과 같은 다양한 휴대용 및 기타 디바이스에 통합하기에 적합하다. 도시된 예에서, SoC(1100)는 중앙 프로세서 유닛(CPU) 도메인(1110)을 포함한다. 일 실시예에서, 복수의 개별 프로세서 코어는 CPU 도메인(1110)에 존재할 수 있다. 일례로서, CPU 도메인(1110)은 4개의 멀티스레드 코어를 갖는 쿼드 코어 프로세서일 수 있다. 이러한 프로세서는 동종 또는 이종 프로세서, 예를 들어, 저전력 및 고전력 프로세서 코어의 혼합일 수 있다.
다음으로, 하나 이상의 GPU에서 고급 그래픽 처리를 수행하여 그래픽을 처리하고 API를 계산하는 GPU 도메인(1120)이 제공된다. DSP 유닛(1130)은 멀티미디어 명령어들의 실행 동안 발생할 수 있는 진보된 계산에 부가하여, 음악 재생, 오디오/비디오 등과 같은 저전력 멀티미디어 애플리케이션을 처리하기 위한 하나 이상의 저전력 DSP를 제공할 수 있다. 다음으로, 통신 유닛(1140)은 셀룰러 통신(3G/4G LTE를 포함함), Bluetooth™, IEEE 802.11 등과 같은 무선 근거리 기술과 같은 다양한 무선 프로토콜을 통해 커넥티비티(connectivity)를 제공하기 위한 다양한 컴포넌트를 포함할 수 있다.
또한, 멀티미디어 프로세서(1150)는 사용자 제스처의 처리를 포함하여, 고해상도 비디오 및 오디오 콘텐츠의 캡처 및 재생을 수행하는데 사용될 수 있다. 센서 유닛(1160)은 주어진 플랫폼에 존재하는 다양한 오프-칩 센서들과 인터페이스하기 위한 복수의 센서들 및/또는 센서 컨트롤러를 포함할 수 있다. 이미지 신호 프로세서(1170)는 하나 이상의 개별 ISP를 구비하여 스틸 카메라 및 비디오 카메라를 포함하는 플랫폼의 하나 이상의 카메라로부터 캡쳐된 콘텐츠에 관한 이미지 프로세싱을 수행할 수 있다.
디스플레이 프로세서(1180)는 그러한 디스플레이상에서의 재생을 위해 콘텐츠를 무선으로 통신하는 능력을 포함하여, 주어진 픽셀 밀도의 고선명 디스플레이에의 접속에 대한 지원을 제공할 수 있다. 또한, 로케이션 유닛(1190)은 GPS 수신기로서 사용하여 획득된 매우 정확한 위치 정보를 애플리케이션에 제공하기 위해 다수의 GPS 배치에 대한 지원을 갖는 GPS 수신기를 포함할 수 있다. 도 11의 예에서는 이러한 특정 세트의 컴포넌트가 도시되었지만, 다양한 변경 및 대안이 가능하다는 것을 이해해야 한다.
이제 도 12를 참조하면, 실시예들이 사용될 수 있는 예시적인 시스템의 블록도가 도시되어 있다. 도시된 바와 같이, 시스템(1200)은 스마트폰 또는 다른 무선 통신기일 수 있다. 기저 대역 프로세서(1205)는 시스템에 의해 송신되거나 수신되는 통신 신호에 대해 다양한 신호 처리를 수행하도록 구성된다. 다음으로, 기저 대역 프로세서(1205)는 많은 잘 알려진 소셜 미디어 및 멀티미디어 애플리케이션과 같은 사용자 애플리케이션 이외에, OS 및 다른 시스템 소프트웨어를 실행하는 시스템의 메인 CPU일 수 있는 애플리케이션 프로세서(1210)에 결합된다. 애플리케이션 프로세서(1210)는 또한 디바이스에 대한 다양한 다른 컴퓨팅 동작을 수행하도록 구성될 수 있다.
다음으로, 애플리케이션 프로세서(1210)는 사용자 인터페이스/디스플레이(1220), 예를 들어, 터치 스크린 디스플레이에 결합될 수 있다. 또한, 애플리케이션 프로세서(1210)는 비휘발성 메모리, 즉 플래시 메모리(1230) 및 시스템 메모리, 즉 동적 랜덤 액세스 메모리(DRAM)(1235)를 포함하는 메모리 시스템에 결합될 수 있다. 추가로 도시된 바와 같이, 애플리케이션 프로세서(1210)는 또한 비디오 및/또는 스틸 이미지를 기록할 수 있는 하나 이상의 이미지 캡처 디바이스와 같은 캡처 디바이스(1240)에 결합된다.
여전히 도 12를 참조하면, 가입자 식별 모듈 및 가능한 보안 스토리지 및 암호 프로세서를 포함하는 범용 집적 회로 카드(UICC)(1240)는 또한 애플리케이션 프로세서(1210)에 결합된다. 시스템(1200)은 애플리케이션 프로세서(1210)에 결합될 수 있는 보안 프로세서(1250)를 더 포함할 수 있다. 복수의 센서(1225)는 애플리케이션 프로세서(1210)에 결합되어 가속도계 및 다른 환경 정보와 같은 다양한 감지된 정보의 입력을 가능하게 할 수 있다. 오디오 출력 디바이스(1295)는 예를 들어, 음성 통신, 오디오 데이터의 재생 또는 스트리밍 등의 형태로 사운드를 출력하기 위한 인터페이스를 제공할 수 있다.
추가로 도시된 바와 같이, NFC 안테나(1265)를 통해 NFC 근방 필드에서 통신하는 근거리 통신(NFC) 비접촉 인터페이스(1260)가 제공된다. 도 12에는 별도의 안테나가 도시되어 있지만, 일부 구현에서, 하나의 안테나 또는 상이한 세트의 안테나가 제공되어 다양한 무선 기능을 가능하게 할 수 있다는 점을 이해해야 한다.
전력 관리 집적 회로(PMIC)(1215)는 애플리케이션 프로세서(1210)에 결합되어 플랫폼 레벨 전력 관리를 수행한다. 이를 위해, PMIC(1215)는 원하는 대로 소정의 저전력 상태로 들어가기 위해 애플리케이션 프로세서(1210)에 전력 관리 요구를 발행할 수 있다. 또한, 플랫폼 제약에 기초하여, PMIC(1215)는 또한 시스템(1200)의 다른 컴포넌트들의 전력 레벨을 제어할 수 있다.
통신이 송신 및 수신될 수 있게 하기 위해, 다양한 회로가 기저 대역 프로세서(1205)와 안테나(1290) 사이에 결합될 수 있다. 구체적으로, 무선 주파수(RF) 송수신기(1270) 및 무선 근거리 네트워크(WLAN) 송수신기(1275)가 존재할 수 있다. 일반적으로, RF 송수신기(1270)는 CDMA(code division multiple access), GSM(global system for mobile communication), LTE(long term evolution), 또는 다른 프로토콜에 따른 것과 같은 3G 또는 4G 무선 통신 프로토콜과 같은 주어진 무선 통신 프로토콜에 따라 무선 데이터 및 호출을 수신하고 송신하는데 사용될 수 있다. 또한, GPS 센서(1280)가 존재할 수 있다. 무선 신호들, 예를 들어, AM/FM 및 다른 신호들의 수신 또는 송신과 같은 다른 무선 통신이 또한 제공될 수 있다. 또한, WLAN 송수신기(1275)를 통해, 예를 들어, BluetoothTM 표준 또는 IEEE 802.11a/b/g/n과 같은 IEEE 802.11 표준에 따른 로컬 무선 통신이 또한 실현될 수 있다.
이제 도 13을 참조하면, 실시예들이 사용될 수 있는 다른 예시적인 시스템의 블록도가 도시되어 있다. 도 13의 예에서, 시스템(1300)은 태블릿 컴퓨터, 2:1 태블릿, 패블 또는 다른 컨버터블 또는 독립형 태블릿 시스템과 같은 모바일 저전력 시스템일 수 있다. 도시된 바와 같이, SoC(1310)가 존재하고 디바이스에 대한 애플리케이션 프로세서로서 동작하도록 구성될 수 있다.
다양한 디바이스들이 SoC(1310)에 결합될 수 있다. 도시된 예에서, 메모리 서브시스템은 SoC(1310)에 결합되는 플래시 메모리(1340) 및 DRAM(1345)을 포함한다. 또한, 터치 패널(1320)은 SoC(1310)에 결합되어, 터치 패널(1320)의 디스플레이 상에 가상 키보드의 제공을 포함하는, 터치를 통한 디스플레이 능력 및 사용자 입력을 제공한다. 유선 네트워크 커넥티비티를 제공하기 위해, SoC(1310)는 이더넷 인터페이스(1330)에 결합된다. 주변기기 허브(1325)는 SoC(1310)에 결합되어, 다양한 포트들 또는 다른 커넥터들 중 임의의 것에 의해 시스템(1300)에 결합될 수 있는 것과 같이, 다양한 주변 디바이스들과 인터페이싱할 수 있게 한다.
SoC(1310) 내의 내부 전력 관리 회로 및 기능성에 추가하여, PMIC(1380)는 SoC(1310)에 결합되어, 예를 들어 시스템이 배터리(1390)에 의해 전력을 공급받는지 또는 AC 어댑터(1395)를 통해 AC 전력을 공급받는지에 기초하여, 플랫폼 기반 전력 관리를 제공한다. 이 전원 기반 전력 관리에 추가하여, PMIC(1380)는 환경 및 사용 조건에 기초하여 플랫폼 전력 관리 활동을 추가적으로 수행할 수 있다. 또한, PMIC(1380)는 제어 및 상태 정보를 SoC(1310)에 통신하여 SoC(1310) 내에서 다양한 전력 관리 활동을 행할 수 있다.
여전히 도 13을 참조하면, 무선 능력을 제공하기 위해, WLAN 유닛(1350)은 SoC(1310)에 그리고 다음으로 안테나(1355)에 결합된다. 다양한 구현들에서, WLAN 유닛(1350)은 IEEE 802.11 프로토콜, BluetoothTM 프로토콜 또는 임의의 다른 무선 프로토콜을 포함하는 하나 이상의 무선 프로토콜들에 따라 통신을 제공할 수 있다.
추가로 도시된 바와 같이, 복수의 센서들(1360)은 SoC(1310)에 결합될 수 있다. 이들 센서들은 다양한 가속도계, 사용자 제스처 센서를 포함하는 환경 및 기타 센서들을 포함할 수 있다. 최종적으로, 오디오 코덱(1365)은 SoC(1310)에 결합되어 오디오 출력 디바이스(1370)에 인터페이스를 제공한다. 물론, 도 13에는 이 특별한 구현이 도시되어 있지만, 많은 변경 및 대안이 가능하다는 점을 이해해야 한다.
이제 도 14를 참조하면, 노트북, UltrabookTM 또는 다른 소형 폼 팩터 시스템과 같은 대표적인 컴퓨터 시스템의 블록도가 도시되어 있다. 프로세서(1410)는, 일 실시예에서, 마이크로프로세서, 멀티코어 프로세서, 멀티스레드 프로세서, 초 저전압 프로세서, 내장형 프로세서, 또는 기타 공지된 프로세싱 요소를 포함한다. 예시된 구현에서, 프로세서(1410)는 시스템(1400)의 많은 다양한 컴포넌트들과의 통신을 위한 메인 프로세싱 유닛 및 중앙 허브로서 역할한다. 일 예로서, 프로세서(1400)는 SoC로서 구현된다.
프로세서(1410)는, 일 실시예에서, 시스템 메모리(1415)와 통신한다. 예시적인 예로서, 시스템 메모리(1415)는 주어진 양의 시스템 메모리를 제공하기 위해 다수의 메모리 디바이스 또는 모듈을 통해 구현된다.
데이터, 애플리케이션, 하나 이상의 운영 체제 등의 정보의 영구 저장을 제공하기 위해, 대용량 스토리지(1420)도 역시 프로세서(1410)에 결합될 수 있다. 다양한 실시예들에서, 더 얇고 더 가벼운 시스템 설계를 가능하게 것은 물론 시스템 반응성을 향상시키기 위해, 대용량 스토리지는 SSD를 통해 구현될 수 있거나, 또는 대용량 스토리지는 주로, 전력 차단 이벤트 동안에 콘텍스트 상태와 기타 그런 정보의 비휘발성 저장을 가능케 하여 시스템 활동의 재개시 시에 빠른 기동이 이루어질 수 있도록 하는 SSD 캐시로서 작용하는 더 작은 용량의 SSD 스토리지를 갖는 하드 디스크 드라이브(HDD)를 사용하여 구현될 수 있다. 도 14에 역시 도시된 바와 같이, 플래시 디바이스(1422)는, 예를 들어, 직렬 주변기기 인터페이스(SPI; serial peripheral interface)를 통해 프로세서(1410)에 결합될 수 있다. 이 플래시 디바이스는, BIOS 뿐만 아니라 시스템의 다른 펌웨어를 포함하는 시스템 소프트웨어의 비휘발성 스토리지를 제공할 수 있다.
다양한 입력/출력(I/O) 디바이스들이 시스템(1400) 내에 존재할 수 있다. 구체적으로, 도 14의 일 실시예에서는, 터치 스크린(1425)에 추가적으로 제공되는 고선명 LCD 또는 LED 패널일 수 있는 디스플레이(1424)가 나타나 있다. 일 실시예에서, 디스플레이(1424)는 고성능 그래픽 인터커넥트로서 구현될 수 있는 디스플레이 인터커넥트를 통해 프로세서(1410)에 결합될 수 있다. 터치스크린(1425)은 일 실시예에서, I2C 인터커넥트일 수 있는 또 다른 인터커넥트를 통해 프로세서(1410)에 결합될 수 있다. 도 14에 추가로 도시된 바와 같이, 터치스크린(1425)에 추가하여, 터치를 통한 사용자 입력은 터치 패드(1430)를 통해서도 발생할 수 있으며, 이 터치 패드는 섀시 내에 구성될 수 있고, 터치스크린(1425)과 동일한 I2C 인터커넥트에 결합될 수도 있다.
지각 컴퓨팅 및 다른 목적들을 위해, 다양한 센서들이 시스템 내에 존재할 수 있으며, 상이한 방식으로 프로세서(1410)에 결합될 수 있다. 소정의 관성 및 환경 센서들이 센서 허브(1440)를 통해, 예들 들어, I2C 인터커넥트를 통해 프로세서(1410)에 결합될 수 있다. 도 14에 도시된 실시예에서, 이들 센서들은, 가속도계(1441), 주변광 센서(ALS; ambient light sensor)(1442), 컴파스(1443) 및 자이로스코프(1444)를 포함할 수 있다. 기타의 환경 센서들은, 일부 실시예에서는, 시스템 관리 버스(SMBus) 버스를 통해 프로세서(1410)에 결합되는 하나 이상의 열 센서(1446)를 포함할 수 있다.
도 14에 역시 도시된 바와 같이, 다양한 주변 디바이스들이 LPC(low pin count) 인터커넥트를 통해 프로세서(1410)에 결합될 수 있다. 도시된 실시예에서, 다양한 컴포넌트는 내장형 컨트롤러(1435)를 통해 결합될 수 있다. 이러한 컴포넌트들은 키보드(1436)(예를 들어, PS2 인터페이스를 통해 결합됨), 팬(1437), 및 열 센서(1439)를 포함할 수 있다. 일부 실시예에서, 터치 패드(1430)는 PS2 인터페이스를 통해 EC(1435)에도 결합될 수 있다. 또한, 2003년 10월 2일자 TCG(Trusted Computing Group) TPM(trusted platform module) 사양 버전 1.2에 따른 TPM(1438) 등의 보안 프로세서도 역시 이 LPC 인터커넥트를 통해 프로세서(1410)에 결합될 수 있다.
시스템(1400)은, 무선을 포함한, 다양한 방식으로 외부 디바이스와 통신할 수 있다. 도 14에 도시된 실시예에서는, 각각이 특별한 무선 통신 프로토콜을 위해 구성된 무선 장치에 대응할 수 있는 다양한 무선 모듈이 존재한다. 니어 필드와 같은 근거리에서의 무선 통신을 위한 하나의 방식은, 일 실시예에서, SMBus를 통해 프로세서(1410)와 통신할 수 있는 NFC 유닛(1445)를 통해서 일 수 있다. 이 NFC 유닛(1445)을 통해, 서로 매우 근접한 디바이스들이 통신할 수 있다는 점에 유의한다.
도 14에 추가로 도시된 바와 같이, 추가의 무선 유닛들은 WLAN 유닛(1450) 및 블루투스 유닛(1452)을 포함한 다른 단거리 무선 엔진을 포함할 수 있다. WLAN 유닛(1450)을 이용하여, 주어진 IEEE 802.11 표준에 따른 Wi-FiTM 통신이 실현될 수 있는 반면, 블루투스 유닛(1452)을 이용하여, 블루투스 프로토콜을 통한 단거리 통신이 발생될 수 있다. 이들 유닛들은, 예를 들어 USB 링크 또는 UART(universal asynchronous receiver transmitter) 링크를 통해 프로세서(1410)와 통신할 수 있다. 또는 이들 유닛들은 PCIeTM 프로토콜 또는 직렬 데이터 입력/출력(SDIO) 표준과 같은 또 다른 프로토콜에 따라 인터커넥트를 통해 프로세서(1410)에 결합될 수 있다.
또한, 예를 들어, 셀룰러 또는 기타의 무선 광역 프로토콜에 따른 무선 광역 통신은 SIM(subscriber identity module; 1457)에 차례로 결합될 수 있는 WWAN 유닛(1456)을 통해 발생할 수 있다. 또한, 위치 정보의 수신과 이용을 가능케 하기 위해, GPS 모듈(1455)도 역시 존재할 수 있다. 도 14에 도시된 실시예에서, WWAN 유닛(1456) 및 카메라 모듈(1454) 등의 통합된 캡처 디바이스는 USB 2.0 또는 3.0 링크 또는 UART 또는 I2C 프로토콜 등의 주어진 USB 프로토콜을 통해 통신할 수 있다는 점에 유의한다.
통합된 카메라 모듈(1454)이 뚜껑 내에 통합될 수 있다. 오디오 입력 및 출력을 제공하기 위해, HDA 링크를 통해 프로세서(1410)에 결합될 수 있는 DSP(digital signal processor; 1460)를 통해 오디오 프로세서가 구현될 수 있다. 유사하게, DSP(1460)는, 섀시 내에 구현될 수 있는 출력 스피커(1463)에 차례로 결합될 수 있는 통합된 CODEC 및 증폭기(1462)와 통신할 수 있다. 유사하게, 증폭기 및 CODEC(1462)은, 일 실시예에서 시스템 내의 다양한 동작들의 음성 활성화 제어를 가능케 하기 위해 고품질 오디오 입력들을 제공하는 (디지털 마이크 어레이와 같은) 듀얼 어레이 마이크를 통해 구현될 수 있는 마이크(1465)로부터 오디오 입력들을 수신하도록 결합될 수 있다. 오디오 출력은 증폭기/CODEC(1462)으로부터 헤드폰 잭(1464)으로 제공될 수 있다는 점에 유의한다. 도 14의 실시예에서 이러한 특별한 컴포넌트들과 관련하여 도시되지만, 본 발명의 범위는 이와 관련하여 한정되지 않는다는 것을 이해한다.
실시예들은 많은 상이한 시스템 유형들에서 구현될 수 있다. 이제 도 15를 참조하면, 본 발명의 실시예에 따른 시스템의 블록도가 도시되어 있다. 도 15에 도시된 바와 같이, 멀티프로세서 시스템(1500)은 포인트 투 포인트 인터커넥트 시스템이고, 포인트 투 포인트 인터커넥트(1550)를 통해 결합된 제1 프로세서(1570) 및 제2 프로세서(1580)를 포함한다. 도 15에 도시된 바와 같이, 프로세서(1570 및 1580) 각각은 제1 및 제2 프로세서 코어(즉, 프로세서 코어(1574a 및 1574b) 및 프로세서 코어(1584a 및 1584b))를 포함하는 멀티코어 프로세서일 수 있으나, 더 많은 코어들이 프로세서에 잠재적으로 존재할 수 있다. 프로세서들 각각은 본 명세서에서 설명된 바와 같이 프로세서 기반 전력 관리를 수행하기 위해 PCU 또는 다른 전력 관리 로직을 포함할 수 있다.
여전히 도 15를 참조하면, 제1 프로세서(1570)는 메모리 컨트롤러 허브(MCH; 1572) 및 포인트-투-포인트(P-P) 인터페이스(1576 및 1578)를 더 포함한다. 유사하게, 제2 프로세서(1580)는 MCH(1582) 및 P-P 인터페이스(1586 및 1588)를 포함한다. 도 15에 도시된 바와 같이, MCH(1572, 1582)는 프로세서들을 각각의 메모리들, 즉, 메모리(1532) 및 메모리(1534)에 결합하는데, 이 메모리들은 각각의 프로세서들에 로컬하게 부착된 시스템 메모리(예를 들어, DRAM)의 일부일 수 있다. 제1 프로세서(1570)와 제2 프로세서(1580)는 P-P 인터커넥트(1562, 1564)를 통해 각각 칩세트(1590)에 결합될 수 있다. 도 15에 도시된 바와 같이, 칩셋(1590)은 P-P 인터페이스(1594 및 1598)를 포함한다.
게다가, 칩셋(1590)은 인터페이스(1592)를 포함하여 P-P 인터커넥트(1539)에 의해 고성능 그래픽 엔진(1538)과 칩셋(1590)을 결합한다. 다음으로, 칩셋(1590)은 인터페이스(1596)를 통해 제1 버스(1516)에 결합될 수 있다. 도 15에 도시된 바와 같이, 다양한 I/O 디바이스들(1514)이, 제1 버스(1516)를 제2 버스(1520)에 결합하는 버스 브리지(1518)와 함께, 제1 버스(1516)에 결합될 수 있다. 일 실시예에서, 예컨대 키보드/마우스(1522), 통신 디바이스들(1526), 및 코드(1530)를 포함할 수 있는 디스크 드라이브 또는 다른 대용량 저장 디바이스와 같은 데이터 저장 유닛(1528)을 포함하는 다양한 디바이스들이 제2 버스(1520)에 결합될 수 있다. 또한, 오디오 I/O(1524)가 제2 버스(1520)에 결합될 수 있다. 실시예들은 스마트 셀룰러 전화, 태블릿 컴퓨터, 넷북, Ultrabook™ 등과 같은 모바일 디바이스들을 포함한 다른 유형들의 시스템들 내에 통합될 수 있다.
도 16은 본 발명의 실시예들에 따른 시스템(1600)의 블록도이다. 시스템(1600)은 프로세서(1602), 전원(1640) 및 동적 랜덤 액세스 메모리(1614)를 포함한다.
프로세서(1602)는 복수의 코어(16040 내지 1604N), 그래픽 프로세싱 유닛(GPU)(1610), 인터커넥트(1606), 캐시 메모리(1608) 및 전력 제어 유닛(PCU)(1620)을 포함한다. PCU(1620)는 프로그램 가능한 밸런싱 정책(1632)에 따라 그리고 복수의 온도 센서(16600 내지 1660N 및 1662)로부터 수신된 온도 데이터에 기초하여 복수의 클럭 주파수의 2개 이상의 클록 주파수를 조정하는 온도 로직(1630)을 포함하며, 여기서 복수의 클럭 주파수의 각각의 클럭 주파수는 대응하는 PLL(16500-1650N, 1652, 및 1654)에 의해 생성된다. 일부 실시예에서, 코어 내에 온도 변화가 있을 수 있으므로, 단일 코어의 온도를 감지하는 2개 이상의 온도 센서가 있다. 각각의 온도 센서는 예를 들어 연속적으로 데이터를 생성할 수 있으며, 온도 로직(1630)은 주기적으로 온도 데이터를 수신하고 수신된 온도 데이터에 기초하여 클록 주파수가 조정되어야 하는지의 여부를 결정할 수 있다. 다른 실시예들(도시 생략)에서, 복수의 코어는 동일한 도메인 내에 있을 수 있고(예를 들어, 동일한 PLL에 의해 결정된 동일한 클럭 주파수에 따라 동작할 수 있다), 특별한 주파수의 조정은 동일한 도메인 내에서 복수의 코어의 처리량에 영향을 미칠 수 있다.
도 17은 본 발명의 실시예에 따른 프로세서(1700)의 블록도이다. 프로세서(1700)는 하나 이상의 실행 유닛, 예를 들어, 코어 및/또는 그래픽 프로세싱 유닛(17010-1701M) 및 전력 제어 유닛(PCU)(1704)을 포함한다. 프로세서(1700)는 도시되지 않은 다른 컴포넌트들, 예를 들어 캐시 메모리, 언코어(uncore) 등을 포함할 수 있다. 열 센서(17020-1702M)는 실행 유닛들의 온도를 측정한다. 일 실시예에서, 각각의 열 센서는 대응하는 실행 유닛의 온도를 측정하기 위해 대응하는 실행 유닛에 인접하여(예를 들어, 대응하는 실행 유닛과 물리적으로 접촉하여) 배치된다. 다른 실시예들에서, 2개 이상의 열 센서가 단일 실행 유닛의 상이한 부분의 온도를 측정하는데 이용될 수 있다.
열 센서들(17020 내지 1702M)로부터의 온도 데이터는 PCU(1704)로 전송될 수 있고 온도 로직(1706)에 의해 수신될 수 있다. 열 센서들(17020 내지 1702M)로부터 수신된 온도 데이터의 최대 온도 Tunit max를 결정하는 온도 평가 로직(1708)이 온도 로직(1706)에 포함된다. Tunit max는 복수의 실행 유닛들(17010 내지 1701M)의 가장 높은 온도를 갖는 실행 유닛과 연관된다.
Tunit max는 n번째 시간 간격 Δt(예를 들어, 총 경과 시간=n*Δt)에 대한 온도 에러 신호 Err(n)를 결정하는 저역 통과 필터(1710)로 전송될 수 있다. 저역 통과 필터(1710)는 에러 신호 Err(n)의 계산에 사용되는 구성 가능한 오프셋, Tcc offset(1712)을 저장할 수 있다. 일 실시예에서, 저역 통과 필터(1710)는 Err(n+1)을
Figure pct00001
와 같이 계산하며,
여기서, Tjmax는 실행 유닛의 최대 동작 가능 온도이고, τ는 프로그램 가능한 시간 상수(1714)이다. Err[0]는 전형적으로 0의 값을 갖는다. Tjmax는 동작 전에 결정될 수 있으며 프로세서, 예를 들어 퓨즈 어레이에 저장될 수 있는 최대 트랜지스터 접합 온도값을 나타낸다.
N번째 시간 간격 동안의 온도 에러 신호 Err[N]는 Err[n]의 연속적인 값에 기초하여 제어 신호의 값을 결정하는 제어 로직(1716)에 출력될 수 있다. 일 실시예에서, 제어 로직은 제어 신호를 결정하기 위해 비례-적분-미분 컨트롤러(PID) 컨트롤러를 포함한다.
일 실시예에서, N번째 시간 간격에 대한 제어 신호는 다음과 같이 계산된다:
Figure pct00002
여기서,
Figure pct00003
는 Err[n], n=1 내지 N의 모든 값들의 합계이다. Kp, Ki 및 Kd는 예를 들어, 실험실 테스트를 통해 결정된 상수이다.
제어 신호 Control(N)는 각 도메인에 대한 조정된 도메인 주파수를 결정하는 밸런싱 로직(1722)으로 송신되고, 각각의 조정된 도메인 주파수는 대응하는 도메인 주파수를 생성하는 대응하는 PLL로 전송될 수 있다. 밸런싱 로직은 Control(N)의 값에 기초하여 그리고 프로그램 가능한 정책(1724)에 기초하여 각각의 조정된 도메인 주파수 f1, f2, ... fM를 결정한다. 예를 들어, 일 실시예에서, 조정된 도메인 주파수 fx는 다음과 같이 각 도메인에 대해 결정될 수 있다:
Figure pct00004
여기서, Policymin는 모든 도메인에 대한 최소 클록 주파수 승수(정책에 의해 결정됨)이고, PolicydomainX는 예를 들어, 정책에 의해 결정되는 각 도메인 X에 대한 미리 설정된 파라미터이다. 밸런싱 로직(1722)은 각각의 대응하는 PLL에 조정된 도메인 주파수 명령을 송신할 수 있는 도메인 주파수 조정 로직(1726)에 조정된 도메인 주파수값 f1, f2, ... fM을 송신한다.
핫 스폿의 검출에 응답하여, 전형적으로 도메인 주파수의 적어도 일부의 조정된 주파수 fx는 그들의 이전 값에서 삭감된다. 예를 들어, 하나의 정책에서, 제1 복수의 코어는 데이터를 GPU에 공급할 수 있고, 제1 복수의 코어 각각은 대략 동일한 명령어 실행 속도를 가질 수 있고 제1 도메인 주파수를 갖는 제1 도메인의 일부이다. GPU는 제1 복수의 코어의 각각의 코어보다 느린 실행 속도를 가질 수 있고, GPU는 제2 도메인 주파수를 갖는 제2 도메인 내에 있다. 적용되는 정책은 제2 도메인 주파수의 감소보다 더 큰 정도의 제1 도메인 주파수의 감소를 지정할 수 있으며, 이는 프로세서에 의해 발생된 열을 감소시켜 핫 스폿의 온도를 포함하는 감지된 온도를 감소시키면서 처리량에 최소한의 영향을 미칠 수 있다.
다른 정책들은 3개 이상의 도메인들 각각에 대해 별개의 주파수 승수(Policydomain X))를 지정할 수 있는데, 예를 들어, 각각의 코어는 자신의 도메인에서 자신의 동작 주파수를 가질 수 있다. 밸런싱 정책을 결정하는 기준은 처리율, 각 도메인의 열 특성, 프로세싱 유닛들 간의 상승 효과, 프로세싱 유닛(코어 및/또는 GPU) 간의 상호 의존성 등을 포함할 수 있다. 일부 실시예에서, 밸런싱 정책은 도메인 주파수 간의 관계를 지정할 수 있다. 예를 들어, 하나의 밸런싱 정책은 인터커넥트 도메인의 인터커넥트 주파수가 적어도 캐시 메모리를 포함하는 도메인의 도메인 주파수만큼 커야 한다고 지정할 수 있다. 다른 실시예에서, 밸런싱 정책은 인터커넥트 도메인의 인터커넥트 주파수가 하나 이상의 코어를 포함하는 도메인 같은 또 다른 도메인 주파수의 고정된 비율에 있도록 지정할 수 있다. 다른 실시예들은 주파수 비율의 휴리스틱 결정을 지정할 수 있다. 밸런싱 정책은 상기 제공된 예들 중 임의의 것에 한정되지 않고, 이들의 임의의 조합 또는 다른 밸런싱 정책 사양을 포함할 수 있다.
따라서, 시간에 따른 각 실행 유닛의 모니터링된 온도를 사용하여, 하나 이상의 핫 스폿, 예를 들어 상승된 온도를 갖는 실행 유닛의 검출에 응답하여 각각의 도메인 주파수의 조정된 값이 결정될 수 있다. 일 실시예에서, 프로세서 내의 국부적인 상승된 온도, 예를 들어 결정된 값을 초과하는 측정된 온도의 검출에 응답하여 2개 이상의 도메인 주파수 f1, f2, ... fM가 변경된다. 몇몇 도메인 주파수의 조정은 프로세서(1700)에 의해 생성된 열을 감소시키면서 단일 핫 스폿의 심한 스로틀링을 피할 수 있다. 몇몇 도메인의 주파수 감소는 핫 스폿만 스로틀링하는 것에 비해 전반적인 처리 성능을 향상시킬 수 있다.
도 18은 본 발명의 일 실시예에 따른 방법(1800)의 흐름도이다. 블록(1802)에서, 프로세서의 전력 제어 유닛(PCU) 내의 온도 로직은 복수의 온도 센서로부터 온도 데이터를 수신한다. 온도 센서는 복수의 실행 유닛(예를 들어, 코어, GPU 등) 각각의 온도를 모니터링할 수 있다. 일부 실시예에서, 코어 당 하나의 온도 센서가 있을 수 있다. 다른 실시예들에서, 하나 이상의 코어가 여러 온도 센서에 의해 모니터링될 수 있다. 계속해서 블록(1804)에서, 최대 온도 Tunit max가 수신된 온도 데이터로부터 결정된다. 블록(1806)으로 진행하여, 저역 통과 필터가 최대 온도 Tunit max에 적용된다. 저역 통과 필터는 조정 가능한 시정수를 가질 수 있고, 저역 통과 필터는 온도 스파이크에 대한 응답을 평탄하게 할 수 있다. 저역 통과 필터는 현재 시간 간격 n에 대한 온도 에러 함수값 Err(n)을 결정한다.
블록(1808)으로 진행하여, PCU의 온도 로직 내의 제어 로직은 온도 에러 함수값에 기초하여 제어 함수값을 결정한다. 계속해서 블록 1810에서, PCU 내의 밸런싱 로직은 제어 함수 값을 수신하고, 프로그램 가능한 밸런싱 정책에 따라, 제어 함수값에 기초하여 도메인 주파수 변경을 결정할 수 있다. 프로그래밍된 밸런싱 정책은 예를 들어, 실행 유닛 각각의 처리량 특성, 실행 유닛들 간의 상호 의존성, 하나 이상의 실행 유닛의 열 특성, 및 다른 인자들에 기초하여 결정될 수 있다. 블록(1812)으로 진행하여, PCU 내의 도메인 주파수 조정 로직은 제어 함수값 및 밸런싱 정책에 기초하여 결정된 도메인 주파수 변경에 따라 복수의 클록 주파수를 조정하기 위해 (예를 들어, PLL로) 조정 명령을 송신할 수 있다. 방법(1800)은 온도가 연속적으로 모니터링될 수 있고 온도 정보가 예를 들어 주기적으로 PCU 온도 로직에 의해 온도 센서로부터 수신될 수 있기 때문에 반복될 수 있다.
본 명세서에 설명되는 바와 같은, 프로세서에 생성되는 열을 줄이기 위한 프로그램 가능한 정책에 따른 다수의 도메인 주파수의 조정은, ACPI(Advanced Configuration and Platform Interface) 표준(예를 들어, 2006년 10월 10일에 공개된 Rev.3.0b)과 같은 OS(Operating System)-기반 메커니즘에 독립적이고 상보적일 수 있다는 점에 유의한다. ACPI에 따르면, 프로세서는 다양한 성능 상태들 또는 레벨들, 소위 P 상태들, 즉 P0 내지 PN에서 동작할 수 있다. 일반적으로, P1 성능 상태는 OS에 의해 요청될 수 있는 최고 보장된 성능 상태에 대응할 수 있다. 이러한 P1 상태에 더하여, OS는 더 높은 성능 상태, 즉 P0 상태를 더 요청할 수 있다. 따라서, 이러한 P0 상태는 기회주의적(opportunistic) 또는 터보 모드 상태일 수 있는데, 여기에서는 전력 및/또는 열 예산이 사용가능할 때, 프로세서 하드웨어가 프로세서 또는 그것의 적어도 일부를 보장된 주파수보다 높은 주파수에서 동작하도록 구성할 수 있다. 많은 구현들에서, 프로세서는 제조 동안 특정 프로세서에 융합 또는 다른 방식으로 기입된 바와 같은, 그 특정 프로세서의 최대 피크 주파수까지, P1 보장된 최대 주파수를 초과하는 다수의 소위 빈 주파수들(bin frequencies)을 포함할 수 있다. 또한, ACPI에 따르면, 프로세서는 다양한 전력 상태들 또는 레벨들에서 동작할 수 있다. 전력 상태에 관하여, ACPI는 일반적으로 C 상태들, 즉 C0, C1 내지 Cn 상태들이라 하는 상이한 전력 소비 상태들을 특정한다. 코어가 활성일 때, 그것은 C0 상태에서 실행되며, 코어가 유휴 상태일 때, 그것은 코어 논-제로 C-상태(예를 들어, C1-C6 상태)라고도 지칭되는 코어 저전력 상태에 놓일 수 있으며, 각각의 C 상태는(C6가 C1보다 더 깊은 저전력 상태에 있는 것 등으로 되도록) 저전력 소비 레벨에 있다.
실시예들은 셀룰러 전화와 같은 모바일 디바이스들을 포함하는 다른 유형들의 시스템들 내에 통합될 수 있다. 이제 도 19를 참조하면, 본 발명의 또 다른 실시예에 따른 시스템의 블록도가 도시된다. 도 19에 도시된 바와 같이, 시스템(1900)은 모바일 디바이스일 수 있으며 다양한 컴포넌트들을 포함할 수 있다. 도 19의 하이 레벨로 도시된 바와 같이, 디바이스의 중앙 처리 유닛일 수 있는 애플리케이션 프로세서(1910)는 스토리지(1915)를 포함하는 다양한 컴포넌트들과 통신한다. 스토리지(1915)는, 다양한 실시예에서, 프로그램 및 데이터 스토리지 부분 양측 모두를 포함할 수 있다.
애플리케이션 프로세서(1910)는, 다양한 실시예에서, 디스플레이, 및 처리될 때 그 자체가 디스플레이에 나타날 수 있는 터치 키패드와 같은 하나 이상의 입력 디바이스를 포함할 수 있는, 입력/출력 시스템(1920)에 더 결합될 수 있다. 시스템(1900)은 또한 하나 이상의 센서들(1970)로부터 데이터를 수신할 수 있는 통합된 센서 허브(ISH)(1960)를 포함할 수 있다. 애플리케이션 프로세서(1910)는 하나 이상의 코어를 포함할 수 있으며, 선택적으로 그래픽 처리 유닛을 포함할 수 있다. 애플리케이션 프로세서(1910)는 본 발명의 실시예들에 따라, 애플리케이션 프로세서(1910) 내의 핫 스폿의 표시에 응답하여, 프로그램 가능한 밸런싱 정책에 따라 프로세서(1910)의 복수의 도메인 주파수를 조정하는 온도 로직(1914)을 포함하는 전력 제어 유닛(PCU)(1912)를 포함한다.
애플리케이션 프로세서(1910)는 또한 출력용 음성 및 데이터 통신들과 같은 신호들을 조절할 수 있는 것은 물론, 착신 전화 및 다른 신호들을 조절하는 기저대역 프로세서(1930)에 결합할 수 있다. 나타내어진 바와 같이, 기저대역 프로세서(1930)는 수신 및 송신 능력들 둘 다를 가능하게 할 수 있는 송수신기(1940)에 결합한다. 다음으로, 송수신기(1940)는 안테나(1950), 예를 들어, 무선 광역 네트워크(예를 들어, 3G 또는 4G 네트워크) 및/또는 BLUETOOTH™ 또는 전기 전자 기술자 협회(Institute of Electrical and Electronics Engineers) 802.11 표준에 따른 소위 WI-FI™ 네트워크와 같은 무선 로컬 영역 네트워크 등의 하나 이상의 통신 프로토콜들을 통해 음성 및 데이터 신호들을 송신 및 수신할 수 있는 임의의 유형의 안테나와 통신할 수 있다. 나타내어진 바와 같이, 시스템(1900)은 모바일 환경에서 작동을 가능하게 하기 위해 이차 전지를 갖는 재충전가능 전원(1925)을 더 포함할 수 있다. 도 19의 실시예에서 이러한 특정한 구현이 도시되었지만, 본 발명의 범위는 이에 관련하여 제한되지 않는다.
하기 예들은 추가 실시예들과 관련된다.
제1 예에서, 프로세서는 복수의 코어, 복수의 온도 센서 -각각의 코어는 적어도 하나의 온도 센서에 근접함- , 및 전력 제어 유닛(PCU)을 포함한다. PCU는 온도 센서들 각각으로부터 대응하는 온도값을 포함하는 온도 데이터를 수신하는 온도 로직을 포함한다. 온도 데이터의 최고 온도값이 임계값을 초과한다고 하는 표시에 응답하여, PCU는 복수의 코어 중 적어도 2개의 명령어 실행 특성의 비교에 기초하는 결정된 정책에 따라 복수의 도메인 주파수를 조정하고, 여기서 각각의 도메인 주파수는 복수의 코어 중 적어도 하나를 포함하는 대응하는 도메인과 연관되고 각각의 도메인 주파수는 독립적으로 조정 가능하다.
제2 예는 제1 예의 특징들을 포함한다. 부가적으로, 온도 로직은 온도 센서들로부터 수신되는 온도값의 최고 온도값을 식별하기 위한 온도 평가 로직을 포함한다.
제3 예는 제2 예의 특징들을 포함한다. 온도 로직은 최고 온도값과 온도 오프셋값의 비교에 기초하여 온도 에러 신호를 결정하는 저역 통과 필터를 더 포함한다.
제4 예는 제3 예의 특징들을 포함하고, 부가적으로, 온도 로직은 온도 에러 신호에 적어도 부분적으로 기초하여 제어값을 결정하기 위한 제어 로직을 포함한다. 도메인 주파수의 조정은 제어값에 적어도 부분적으로 기초한다.
제5 예는 제4 예의 특징들을 포함한다. 부가적으로, 제어 로직은 온도 에러 신호에 기초하는 PID(proportional integral derivative) 계산에 따라 제어값을 계산하기 위한 PID 로직을 포함한다.
제6 예는 제4 예의 특징들을 포함한다. 온도 로직은 결정된 정책의 대응하는 가중치 인자(weight factor)를 제어값에 곱함으로써 복수의 조정된 도메인 주파수들 각각을 결정하는 밸런싱 로직을 더 포함한다.
제7 예는 제1 예 내지 제6 예 중 어느 하나의 특징들을 포함한다. 부가적으로, 결정된 정책은 복수의 가중치 인자를 포함하고, 각각의 도메인은 대응하는 가중치 인자를 갖는다. 각각의 도메인의 가중치 인자는 도메인에서 적어도 하나의 코어의 대응하는 명령어 처리율에 적어도 부분적으로 기초한다.
제8 예에서, 프로세서는 복수의 실행 유닛 및 각각이 프로세서 내의 대응하는 위치의 대응하는 온도값을 제공하는 복수의 온도 센서를 포함한다. 프로세서는 또한 온도 센서들 각각으로부터 대응하는 온도값을 수신하는 온도 로직을 포함하는 전력 제어 유닛(PCU)을 포함한다. 온도 센서들 중 하나로부터 수신되는 특정 온도값이 임계값을 초과한다고 하는 표시에 응답하여, PCU는 복수의 실행 유닛 중 적어도 2개의 명령어 실행 특성에 적어도 부분적으로 기초하는 결정된 정책에 따라 적어도 2개의 도메인 주파수를 조정하고, 여기서 각각의 도메인 주파수는 실행 유닛들 중 적어도 하나와 연관된다.
제8 예의 요소들을 포함하는 제9 예에서, 적어도 2개의 도메인 주파수의 조정은 표시에 응답하여 적어도 2개의 도메인 주파수 중 적어도 하나의 감소를 포함한다.
제8 예의 요소들을 포함하는 제10 예에서, 결정된 정책은 프로그램 가능하다.
제8 예의 요소들을 포함하는 제11 예에서, 온도 로직은 특정 온도값과 임계값 간의 차이에 적어도 부분적으로 기초하는 온도 에러 함수에 따라 적어도 2개의 도메인 주파수를 조정하기 위한 도메인 주파수 조정 로직을 포함한다.
제11 예의 요소들을 포함하는 제12 예에서, 특정 온도값은 복수의 온도 센서로부터 수신되는 온도값들 중 가장 큰 것이다.
제11 예의 요소들을 포함하는 제13 예에서, 온도 로직은 온도 에러 함수의 값을 결정하기 위한 저역 통과 필터를 포함한다. 임계값은 복수의 실행 유닛의 최대 동작 온도와 연관된다.
제11 예의 요소들을 포함하는 제14 예에서, 온도 에러 함수값은 선택 가능한 시간 상수에 더 기초한다.
제8 예 내지 제14 예 중 어느 하나의 요소들을 포함하는 제15 예에서, 결정된 정책은 복수의 가중치 인자를 포함하고, 각각의 도메인 주파수는 각각의 가중치 인자와 연관된다. 적어도 2개의 도메인 주파수 각각은 특정 온도값이 임계값을 초과한다는 표시에 응답하여 각각의 가중치 인자에 따라 적어도 부분적으로 조정된다.
제16 예는 머신에 의해 실행될 때, 머신으로 하여금, 복수의 온도를 모니터링하고 -각각의 온도는 복수의 도메인을 포함하는 프로세서 내의 대응하는 명령어 실행 유닛과 연관되고, 각각의 도메인은 대응하는 도메인 주파수를 가지고 각각의 도메인은 적어도 하나의 명령어 실행 유닛을 포함함- , 복수의 모니터링된 온도들에 기초하여 그리고 명령어 실행 유닛들의 명령어 처리량 특성에 적어도 부분적으로 기초하는 밸런싱 정책에 따라 복수의 도메인 주파수를 조정하게 하는 실행가능 명령어들을 저장하는 컴퓨터 판독가능 매체이다.
제16 예의 요소들을 포함하는 제17 예에서, 밸런싱 정책은 프로그램 가능하다.
제16 예의 요소들을 포함하는 제18 예는 복수의 온도들의 최고 온도를 결정하고, 최고 온도 및 프로그램 가능한 시간 상수에 기초하여 온도 에러값을 결정하고, 온도 에러값에 기초하여 제어값을 결정하기 위해 최고 온도에 저역 통과 필터를 적용하며, 제어값에 기초하여 조정된 주파수를 결정하는 명령어들을 더 포함한다.
제18 예의 요소들을 포함하는 제19 예에서, 온도 에러값은 온도 오프셋에 추가로 기초하여 결정된다.
제16 예 내지 제19 예 중 어느 하나의 요소들을 포함하는 제20 예에서, 밸런싱 정책은 복수의 가중치 인자를 포함하고, 각각의 가중치 인자는 대응하는 도메인과 연관된다. 부가적으로, 컴퓨터 판독가능 매체는 대응하는 도메인의 대응하는 가중치 인자를 제어값에 곱하여 조정된 각 도메인의 주파수를 결정하는 명령어들을 포함한다.
제21 예에서, 방법은 복수의 온도를 모니터링하는 단계를 포함하고, 여기서 각각의 온도는 복수의 도메인을 포함하는 프로세서 내의 대응하는 명령어 실행 유닛과 연관되고, 각각의 도메인은 대응하는 도메인 주파수를 가지고 각각의 도메인은 적어도 하나의 명령어 실행 유닛을 포함한다. 방법은 복수의 모니터링된 온도들에 기초하여 그리고 명령어 실행 유닛들의 명령어 처리량 특성에 적어도 부분적으로 기초하는 밸런싱 정책에 따라 복수의 도메인 주파수를 조정하는 단계를 더 포함한다.
제21 예의 요소들을 포함하는 제22 예에서, 밸런싱 정책은 프로그램 가능하다.
제22 예의 요소들을 포함하는 제23 예에서, 방법은 복수의 온도들의 최고 온도를 결정하는 단계, 최고 온도에 저역 통과 필터를 적용하여, 최고 온도 및 프로그램 가능한 시간 상수에 기초하여 온도 에러값을 결정하는 단계, 및 온도 에러값에 기초하여 제어값을 결정하고 제어값에 기초하여 조정된 주파수를 결정하는 단계를 포함한다.
제23 예의 요소들을 포함하는 제24 예에서, 온도 에러값은 온도 오프셋에 추가로 기초하여 결정된다.
제21 예의 요소들을 포함하는 제25 예에서, 밸런싱 정책은 복수의 가중치 인자를 포함하고, 각각의 가중치 인자는 대응하는 도메인과 연관되고, 방법은 대응하는 도메인의 대응하는 가중치 인자를 제어값에 곱하여 조정된 각 도메인의 주파수를 결정하는 단계를 포함한다.
제26 예는 제21 예 내지 제25 예 중 어느 하나의 방법을 수행하는 장치를 포함한다.
제27 예는 제21 예 내지 제25 예 중 어느 하나의 방법을 수행하는 수단을 포함하는 장치를 포함한다.
전술한 실시예들은 컴퓨팅 플랫폼 또는 프로세서에서와 같이, 특정 집적 회로들에서의 에너지 보존 및 에너지 효율을 참조하여 설명되지만, 다른 실시예들이 다른 유형의 집적 회로들 및 로직 디바이스들에 적용될 수 있다. 본 명세서에 기술된 실시예들의 유사한 기술 및 교시는 더 나은 에너지 효율 및 에너지 보존으로부터 이익을 얻을 수 있는 다른 유형의 회로 또는 반도체 디바이스에도 적용될 수 있다. 예를 들어, 개시된 실시예들은, 임의의 특정한 유형의 컴퓨터 시스템들에 제한되는 것이 아니고, 핸드헬드 디바이스들, SoC(Systems on Chip)들 및 내장된 애플리케이션들과 같은 다른 디바이스들에서도 사용될 수 있다. 핸드헬드 디바이스의 어떤 예들은 셀룰러 폰, 인터넷 프로토콜 디바이스, 디지털 카메라, PDA(personal digital assistant), 및 핸드헬드 PC를 포함한다. 내장형 애플리케이션들은 전형적으로 마이크로컨트롤러, DSP(Digital Signal Processor), 네트워크 컴퓨터들(NetPC), 셋탑 박스들, 네트워크 허브들, WAN(Wide Area Network) 스위치들, 또는 아래에 교시되는 기능들 및 동작들을 수행할 수 있는 임의의 기타 시스템을 포함한다. 더욱이, 본 명세서에 기술된 장치들, 방법들 및 시스템들은 물리적 컴퓨팅 디바이스들로 제한되지 않고, 에너지 절감 및 효율을 위한 소프트웨어 최적화에도 관한 것일 수 있다. (하드웨어, 펌웨어, 소프트웨어 또는 그들의 조합을 참조하여) 본 명세서에 설명되는 방법들, 장치들 및 시스템들의 실시예들은 US 경제의 큰 부분을 포괄하는 제품들에서의 전력 보존 및 에너지 효율을 위한 것과 같이, '녹색 기술(green technology)'의 미래에 필수적인 것이다.
실시예들은 복수의 상이한 유형의 시스템에 이용될 수 있다. 예를 들어, 일 실시예에서, 통신 디바이스는 본 명세서에서 기술된 다양한 방법들 및 기술들을 실행하도록 배치될 수 있다. 물론, 본 발명의 범위는 통신 디바이스에 제한되지 않으며, 대신에 다른 실시예들은 명령어들을 처리하는 다른 유형의 장치들, 또는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여 디바이스로 하여금 본 명세서에서 기술되는 방법들 및 기술들 중 하나 이상을 수행하도록 야기하는 명령어들을 포함하는 하나 이상의 머신 판독가능 매체를 지향할 수 있다.
실시예들은 코드로 구현될 수 있으며 또한 명령어들을 실행하도록 시스템을 프로그래밍하는데 사용될 수 있는 명령어들이 그 상에 저장되는 비일시적 스토리지 매체상에 저장될 수 있다. 저장 매체는, 플로피 디스크, 광 디스크, 고체 상태 드라이브(SSD), 콤팩트 디스크 판독 전용 메모리(CD-ROM), 재기록가능한 콤팩트 디스크(CD-RW), 및 광자기 디스크를 포함한 임의 유형의 디스크, ROM(read-only memory), DRAM(dynamic random access memory), SRAM(static random access memory) 등의 RAM(random access memory), EPROM(erasable programmable read-only memory), 플래시 메모리, EEPROM(electrically erasable programmable read-only memory) 등의 반도체 디바이스, 자기 또는 광 카드, 또는 전자적 명령어를 저장하기에 적합한 기타 임의의 유형의 매체를 포함할 수 있지만, 이것으로 제한되지 않는다.
본 발명이 제한된 수의 실시양태에 대해 설명되었지만, 본 기술분야의 통상의 기술자는 이로부터 수많은 변경 및 변형을 인식할 수 있을 것이다. 첨부된 청구범위는 모든 이러한 변경 및 변형을 본 발명의 진정한 사상 및 범위에 속하는 것으로 포함하고자 한다.

Claims (25)

  1. 프로세서로서,
    복수의 코어;
    복수의 온도 센서 -상기 각각의 코어는 적어도 하나의 온도 센서에 근접함- ; 및
    상기 온도 센서들 각각으로부터 대응하는 온도값을 포함하는 온도 데이터를 수신하고, 상기 온도 데이터의 최고 온도값이 임계값을 초과한다고 하는 표시에 응답하여, 상기 복수의 코어 중 적어도 2개의 코어의 명령어 실행 특성들의 비교에 기초하는 결정된 정책에 따라 복수의 도메인 주파수를 조정하는 온도 로직을 포함하는 전력 제어 유닛(PCU) -각각의 도메인 주파수는 상기 복수의 코어 중 적어도 하나를 포함하는 대응하는 도메인과 연관되고 각각의 도메인 주파수는 독립적으로 조정 가능한 프로세서.
  2. 제1항에 있어서,
    상기 온도 로직은 상기 온도 센서들로부터 수신되는 상기 온도값들 중 최고 온도값을 식별하기 위한 온도 평가 로직을 포함하는 프로세서.
  3. 제2항에 있어서,
    상기 온도 로직은 상기 최고 온도값과 온도 오프셋값의 비교에 기초하여 온도 에러 신호를 결정하는 저역 통과 필터를 더 포함하는 프로세서.
  4. 제3항에 있어서,
    상기 온도 로직은 상기 온도 에러 신호에 적어도 부분적으로 기초하여 제어값을 결정하기 위한 제어 로직을 포함하고, 상기 도메인 주파수들의 조정은 상기 제어값에 적어도 부분적으로 기초하는 프로세서.
  5. 제4항에 있어서,
    상기 제어 로직은 상기 온도 에러 신호에 기초하는 PID(proportional integral derivative) 계산에 따라 상기 제어값을 계산하기 위한 PID 로직을 포함하는 프로세서.
  6. 제4항에 있어서,
    상기 온도 로직은 상기 결정된 정책의 대응하는 가중치 인자(weight factor)를 상기 제어값에 곱함으로써 복수의 조정된 도메인 주파수의 각각을 결정하는 밸런싱 로직을 더 포함하는 프로세서.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 결정된 정책은 복수의 가중치 인자를 포함하고, 각각의 도메인은 대응하는 가중치 인자를 가지며, 각각의 도메인의 상기 가중치 인자는 상기 도메인에서 적어도 하나의 코어의 대응하는 명령어 처리율에 적어도 부분적으로 기초하는 프로세서.
  8. 프로세서로서,
    복수의 실행 유닛;
    각각이 상기 프로세서 내의 대응하는 위치의 대응하는 온도값을 제공하는 복수의 온도 센서; 및
    상기 온도 센서들 각각으로부터 대응하는 온도값을 수신하고, 상기 온도 센서들 중 하나로부터 수신되는 특정 온도값이 임계값을 초과한다고 하는 표시에 응답하여, 상기 복수의 실행 유닛 중 적어도 2개의 실행 유닛의 명령어 실행 특성들에 적어도 부분적으로 기초하는 결정된 정책에 따라 적어도 2개의 도메인 주파수를 조정하는 온도 로직을 포함하는 전력 제어 유닛(PCU) -각각의 도메인 주파수는 상기 실행 유닛들 중 적어도 하나와 연관됨 -
    을 포함하는 프로세서.
  9. 제8항에 있어서,
    상기 적어도 2개의 도메인 주파수의 조정은 상기 표시에 응답하여 상기 적어도 2개의 도메인 주파수 중 적어도 하나의 감소를 포함하는 프로세서.
  10. 제8항에 있어서,
    상기 온도 로직은 상기 특정 온도값과 상기 임계값 간의 차이에 적어도 부분적으로 기초하는 온도 에러 함수에 따라 상기 적어도 2개의 도메인 주파수를 조정하기 위한 도메인 주파수 조정 로직을 포함하는 프로세서.
  11. 제10항에 있어서,
    상기 특정 온도값은 상기 복수의 온도 센서로부터 수신되는 온도값들 중 가장 큰 것인 프로세서.
  12. 제10항에 있어서,
    상기 온도 로직은 상기 온도 에러 함수의 값을 결정하기 위한 저역 통과 필터를 포함하고, 상기 임계값은 상기 복수의 실행 유닛의 최대 동작 온도와 연관되는 프로세서.
  13. 제10항에 있어서,
    상기 온도 에러 함수의 값은 선택 가능한 시간 상수에 더 기초하는 프로세서.
  14. 제8항 내지 제13항 중 어느 한 항에 있어서,
    상기 결정된 정책은 복수의 가중치 인자를 포함하고, 각각의 도메인 주파수는 각각의 가중치 인자와 연관되고, 상기 적어도 2개의 도메인 주파수 각각은 상기 특정 온도값이 상기 임계값을 초과한다고 하는 표시에 응답하여 상기 각각의 가중치 인자에 따라 적어도 부분적으로 조정되는 프로세서.
  15. 컴퓨터 판독가능 매체로서,
    머신에 의해 실행될 때, 상기 머신으로 하여금,
    복수의 온도를 모니터링하고 -각각의 온도는 복수의 도메인을 포함하는 프로세서 내의 대응하는 명령어 실행 유닛과 연관되고, 각각의 도메인은 대응하는 도메인 주파수를 가지고 각각의 도메인은 적어도 하나의 명령어 실행 유닛을 포함함- ;
    상기 복수의 모니터링된 온도들에 기초하여 그리고 상기 명령어 실행 유닛들의 명령어 처리량 특성들에 적어도 부분적으로 기초하는 밸런싱 정책에 따라 상기 복수의 도메인 주파수를 조정하게 하는 실행가능 명령어들을 저장하는 컴퓨터 판독가능 매체.
  16. 제15항에 있어서,
    상기 밸런싱 정책은 프로그램 가능한 컴퓨터 판독가능 매체.
  17. 제15항에 있어서,
    상기 복수의 온도 중 최고 온도를 결정하고;
    상기 최고 온도에 저역 통과 필터를 적용하여, 상기 최고 온도 및 프로그램 가능한 시간 상수에 기초하여 온도 에러값을 결정하고, 상기 온도 에러값에 기초하여 제어값을 결정하며;
    상기 제어값에 기초하여 조정된 주파수들을 결정하는 명령어들을 더 포함하는 컴퓨터 판독가능 매체.
  18. 제17항에 있어서,
    상기 온도 에러값은 온도 오프셋에 추가로 기초하여 결정되는 컴퓨터 판독가능 매체.
  19. 제16항 내지 제18항 중 어느 한 항에 있어서,
    상기 밸런싱 정책은 복수의 가중치 인자를 포함하고, 각각의 가중치 인자는 대응하는 도메인과 연관되고, 상기 컴퓨터 판독가능 매체는 대응하는 도메인의 대응하는 가중치 인자를 상기 제어값에 곱하여 각 도메인의 조정된 주파수를 결정하는 명령어들을 더 포함하는 컴퓨터 판독가능 매체.
  20. 방법으로서,
    복수의 온도를 모니터링하는 단계 -각각의 온도는 복수의 도메인을 포함하는 프로세서 내의 대응하는 명령어 실행 유닛과 연관되고, 각각의 도메인은 대응하는 도메인 주파수를 가지고 각각의 도메인은 적어도 하나의 명령어 실행 유닛을 포함함- ; 및
    상기 복수의 모니터링된 온도들에 기초하여 그리고 상기 명령어 실행 유닛들의 명령어 처리량 특성들에 적어도 부분적으로 기초하는 밸런싱 정책에 따라 상기 복수의 도메인 주파수를 조정하는 단계
    를 포함하는 방법.
  21. 제20항에 있어서,
    상기 밸런싱 정책은 프로그램 가능한 방법.
  22. 제20항에 있어서,
    상기 복수의 온도 중 최고 온도를 결정하는 단계;
    상기 최고 온도에 저역 통과 필터를 적용하여, 상기 최고 온도 및 프로그램 가능한 시간 상수에 기초하여 온도 에러값을 결정하는 단계;
    상기 온도 에러값에 기초하여 제어값을 결정하는 단계; 및
    상기 제어값에 기초하여 조정된 주파수를 결정하는 단계를 더 포함하는 방법.
  23. 제22항에 있어서,
    상기 온도 에러값은 온도 오프셋에 추가로 기초하여 결정되는 방법.
  24. 제20항에 있어서,
    상기 밸런싱 정책은 복수의 가중치 인자를 포함하고, 각각의 가중치 인자는 대응하는 도메인과 연관되고, 상기 방법은 대응하는 도메인의 대응하는 가중치 인자를 상기 제어값에 곱하여 각 도메인의 조정된 주파수를 결정하는 단계를 포함하는 방법.
  25. 제20항 내지 제24항 중 어느 한 항의 방법을 수행하기 위한 수단을 포함하는 장치.
KR1020177001480A 2014-08-15 2015-06-26 프로세서 온도의 균형적 제어 KR101872231B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/461,039 2014-08-15
US14/461,039 US9791904B2 (en) 2014-08-15 2014-08-15 Balanced control of processor temperature
PCT/US2015/038125 WO2016025095A1 (en) 2014-08-15 2015-06-26 Balanced control of processor temperature

Publications (2)

Publication Number Publication Date
KR20170019454A true KR20170019454A (ko) 2017-02-21
KR101872231B1 KR101872231B1 (ko) 2018-06-29

Family

ID=55302143

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177001480A KR101872231B1 (ko) 2014-08-15 2015-06-26 프로세서 온도의 균형적 제어

Country Status (6)

Country Link
US (2) US9791904B2 (ko)
EP (1) EP3180671B1 (ko)
KR (1) KR101872231B1 (ko)
CN (1) CN106537285B (ko)
TW (1) TWI610161B (ko)
WO (1) WO2016025095A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020101203A1 (ko) * 2018-11-16 2020-05-22 주식회사 케이티앤지 에어로졸 생성장치의 히터의 전력을 제어하는 방법 및 그 에어로졸 생성장치
WO2024019280A1 (ko) * 2022-07-19 2024-01-25 삼성전자주식회사 Pid 제어기에 기초하여 전자 장치의 발열을 제어하는 방법 및 장치

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9811355B2 (en) * 2014-07-23 2017-11-07 Intel Corporation Method and apparatus for selecting an interconnect frequency in a computing system
US10037068B2 (en) * 2014-09-09 2018-07-31 Infineon Technologies Austria Ag Configurable digital interface for switching voltage regulators
US10698459B2 (en) * 2015-02-17 2020-06-30 Apple Inc. Electronic devices and method of controlling an electronic device
US9958921B2 (en) * 2015-03-09 2018-05-01 Advanced Micro Devices, Inc. Power management to change power limits based on device skin temperature
US10503222B2 (en) * 2015-09-21 2019-12-10 Qualcomm Incorporated Circuits and methods providing temperature mitigation for computing devices using estimated skin temperature
KR102599653B1 (ko) * 2015-11-20 2023-11-08 삼성전자주식회사 냉각 알고리즘을 수행하는 집적 회로와 이를 포함하는 모바일 장치
US9612880B1 (en) * 2015-11-30 2017-04-04 Amazon Technologies, Inc. Media device temperature management
RU170883U1 (ru) * 2017-03-22 2017-05-12 Акционерное общество "МЦСТ" Процессорный модуль (МОНОКУБ)
JP6712060B2 (ja) * 2017-04-18 2020-06-17 富士通クライアントコンピューティング株式会社 電子機器および管理プログラム
US10509449B2 (en) * 2017-07-07 2019-12-17 Hewlett Packard Enterprise Development Lp Processor power adjustment
CN108509018B (zh) * 2018-03-27 2021-02-19 联想(北京)有限公司 一种控制方法及电子设备、存储介质
US11237506B2 (en) 2018-05-11 2022-02-01 Hewlett-Packard Development Company, L.P. Status of a temperature sensor of a printing device
CN109086130B (zh) * 2018-06-06 2022-06-10 北京嘉楠捷思信息技术有限公司 计算设备的芯片调频方法、装置、算力板、计算设备及存储介质
US11113216B2 (en) * 2019-03-20 2021-09-07 Mediatek Inc. Dispatching interrupts in a multi-processor system based on power and performance factors
CN110764605B (zh) * 2019-10-30 2021-11-02 Oppo广东移动通信有限公司 多核处理器控制方法、装置、电子设备及存储介质
CN112764509B (zh) * 2021-02-03 2024-03-01 北京灵汐科技有限公司 计算核、计算核温度调整方法、设备、介质、芯片和***
TWI774320B (zh) * 2021-04-14 2022-08-11 新唐科技股份有限公司 晶片結構及晶片功能控制方法
KR20230000209A (ko) 2021-06-24 2023-01-02 삼성전자주식회사 Dvfs 동작을 수행하는 집적 회로 및 이의 동작 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120110352A1 (en) * 2010-10-29 2012-05-03 Alexander Branover Method and apparatus for thermal control of processing nodes
US20130080804A1 (en) * 2011-09-28 2013-03-28 Avinash N. Ananthakrishan Controlling Temperature Of Multiple Domains Of A Multi-Domain Processor
US20130117590A1 (en) * 2011-11-03 2013-05-09 International Business Machines Corporation Minimizing Aggregate Cooling and Leakage Power with Fast Convergence
KR20130061747A (ko) * 2010-09-23 2013-06-11 인텔 코오퍼레이션 코어 마다의 전압 및 주파수 제어 제공
US20130293269A1 (en) * 2012-04-26 2013-11-07 Huawei Technologies Co., Ltd. Method and apparatus for controlling chip performance

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW567408B (en) 2002-03-29 2003-12-21 Uniwill Comp Corp Apparatus and method for controlling power and clock speed of electronic system
US6908227B2 (en) * 2002-08-23 2005-06-21 Intel Corporation Apparatus for thermal management of multiple core microprocessors
JP2007148952A (ja) 2005-11-30 2007-06-14 Renesas Technology Corp 半導体集積回路
US7263457B2 (en) * 2006-01-03 2007-08-28 Advanced Micro Devices, Inc. System and method for operating components of an integrated circuit at independent frequencies and/or voltages
US7734942B2 (en) 2006-12-28 2010-06-08 Intel Corporation Enabling idle states for a component associated with an interconnect
US8769316B2 (en) 2011-09-06 2014-07-01 Intel Corporation Dynamically allocating a power budget over multiple domains of a processor
US20130228632A1 (en) 2012-03-02 2013-09-05 Apple Inc. Controlling a cooling system for a computer system
US9063727B2 (en) 2012-08-31 2015-06-23 Intel Corporation Performing cross-domain thermal control in a processor
US10082847B2 (en) * 2014-04-01 2018-09-25 Qualcomm Incorporated Method and system for optimizing performance of a PCD while mitigating thermal generation

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130061747A (ko) * 2010-09-23 2013-06-11 인텔 코오퍼레이션 코어 마다의 전압 및 주파수 제어 제공
US20120110352A1 (en) * 2010-10-29 2012-05-03 Alexander Branover Method and apparatus for thermal control of processing nodes
KR20140001902A (ko) * 2010-10-29 2014-01-07 어드밴스드 마이크로 디바이시즈, 인코포레이티드 처리 노드의 열 제어를 위한 방법 및 장치
US20130080804A1 (en) * 2011-09-28 2013-03-28 Avinash N. Ananthakrishan Controlling Temperature Of Multiple Domains Of A Multi-Domain Processor
US20130117590A1 (en) * 2011-11-03 2013-05-09 International Business Machines Corporation Minimizing Aggregate Cooling and Leakage Power with Fast Convergence
US20130293269A1 (en) * 2012-04-26 2013-11-07 Huawei Technologies Co., Ltd. Method and apparatus for controlling chip performance

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020101203A1 (ko) * 2018-11-16 2020-05-22 주식회사 케이티앤지 에어로졸 생성장치의 히터의 전력을 제어하는 방법 및 그 에어로졸 생성장치
KR20200057492A (ko) * 2018-11-16 2020-05-26 주식회사 케이티앤지 에어로졸 생성장치의 히터의 전력을 제어하는 방법 및 그 에어로졸 생성장치
US11992063B2 (en) 2018-11-16 2024-05-28 Kt&G Corporation Method for controlling electric power of heater of aerosol generator, and aerosol generator
WO2024019280A1 (ko) * 2022-07-19 2024-01-25 삼성전자주식회사 Pid 제어기에 기초하여 전자 장치의 발열을 제어하는 방법 및 장치

Also Published As

Publication number Publication date
TWI610161B (zh) 2018-01-01
US20160048181A1 (en) 2016-02-18
EP3180671B1 (en) 2021-04-07
EP3180671A1 (en) 2017-06-21
EP3180671A4 (en) 2018-04-04
US20180059748A1 (en) 2018-03-01
KR101872231B1 (ko) 2018-06-29
WO2016025095A1 (en) 2016-02-18
US9791904B2 (en) 2017-10-17
TW201626146A (zh) 2016-07-16
CN106537285B (zh) 2020-03-20
CN106537285A (zh) 2017-03-22

Similar Documents

Publication Publication Date Title
KR101872231B1 (ko) 프로세서 온도의 균형적 제어
US11841752B2 (en) Controlling average power limits of a processor
US11543868B2 (en) Apparatus and method to provide a thermal parameter report for a multi-chip package
US20180335831A1 (en) Apparatus and method for thermal management in a multi-chip package
US9710043B2 (en) Controlling a guaranteed frequency of a processor
US10324519B2 (en) Controlling forced idle state operation in a processor
US10429918B2 (en) Controlling turbo mode frequency operation in a processor
US20180314289A1 (en) Modifying an operating frequency in a processor
US9671853B2 (en) Processor operating by selecting smaller of requested frequency and an energy performance gain (EPG) frequency
EP3340039A1 (en) Processor prefetch throttling based on short streams
WO2018063751A1 (en) Compensation control for variable power rails
US9811355B2 (en) Method and apparatus for selecting an interconnect frequency in a computing system
US11016916B2 (en) Generation of processor interrupts using averaged data
EP3238006A1 (en) Adjustment of voltage regulator based on power state

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