KR101672357B1 - 응답 타이밍 최적화에 기초하는 멀티프로세서 시스템에서의 주파수 조정 수행 - Google Patents

응답 타이밍 최적화에 기초하는 멀티프로세서 시스템에서의 주파수 조정 수행 Download PDF

Info

Publication number
KR101672357B1
KR101672357B1 KR1020157010307A KR20157010307A KR101672357B1 KR 101672357 B1 KR101672357 B1 KR 101672357B1 KR 1020157010307 A KR1020157010307 A KR 1020157010307A KR 20157010307 A KR20157010307 A KR 20157010307A KR 101672357 B1 KR101672357 B1 KR 101672357B1
Authority
KR
South Korea
Prior art keywords
processor
frequency
response
request
counter
Prior art date
Application number
KR1020157010307A
Other languages
English (en)
Other versions
KR20150059176A (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 KR20150059176A publication Critical patent/KR20150059176A/ko
Application granted granted Critical
Publication of KR101672357B1 publication Critical patent/KR101672357B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17325Synchronisation; Hardware support therefor
    • 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/3824Operand accessing
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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
    • 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)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Power Sources (AREA)
  • Computing Systems (AREA)

Abstract

일 실시예에서, 프로세서는, 명령어들을 실행하는 코어, 및 코어로부터 메모리 액세스 요청을 수신하여 메모리 액세스 요청을 로컬 메모리에 라우트하고, 메모리 액세스 요청에 대응하는 스누프 요청을 원격 프로세서에 라우트하는 로직을 포함한다. 이러한 로직은, 원격 프로세서로부터의 스누프 요청에 대한 응답의 수신과 로컬 메모리로부터의 메모리 액세스 요청에 대한 응답의 수신 사이의 차분에 관한 레이턴시 정보를 유지하도록 구성된다. 다른 실시예들이 설명되고 청구된다.

Description

응답 타이밍 최적화에 기초하는 멀티프로세서 시스템에서의 주파수 조정 수행{PERFORMING FREQUENCY COORDINATION IN A MULTIPROCESSOR SYSTEM BASED ON RESPONSE TIMING OPTIMIZATION}
반도체 처리 및 로직 설계의 진보는 집적 회로 디바이스에 존재할 수 있는 로직의 양의 증가를 가능하게 해왔다. 그 결과, 컴퓨터 시스템 구성은 시스템 내의 단일 또는 다수의 집적 회로로부터, 개별 집적 회로 상의 다수의 하드웨어 스레드, 다수의 코어, 다수의 디바이스, 및/또는 완전한 시스템으로 발전했다. 추가로, 집적 회로의 밀도가 증가함에 따라, (내장형 시스템으로부터 서버에 이르기까지의) 컴퓨팅 시스템에 대한 전력 요건도 급등했다. 또한, 소프트웨어 비효율성(software inefficiencies) 및 그것의 하드웨어 요건은, 또한 컴퓨팅 디바이스 에너지 소비의 증가를 야기했다. 사실, 일부 연구에 따르면, 컴퓨팅 디바이스는 미국과 같은 국가에 대한 전체 전기 공급의 상당히 큰 비율을 소비한다. 그 결과, 집적 회로와 관련된 에너지 효율 및 보존이 절대적으로 필요하다. 서버, 데스크탑 컴퓨터, 노트북, UltrabooksTM, 태블릿, 이동 전화, 프로세서, 내장형 시스템 등이 (전형적인 컴퓨터, 자동차 및 텔레비젼에 포함되는 것으로부터 바이오테크놀러지에 이르기까지) 점점 더 많이 보급되어 감에 따라, 이러한 요구는 증가할 것이다.
멀티프로세서 시스템에서, 원격 프로세서에 대한 액세스의 레이턴시(latency)는 원격 프로세서의 주파수, 보다 구체적으로는, 종종 언코어(uncore)라 하는 프로세서의 논-코어(non-core) 부분의 주파수에 의해 결정된다. 표준 전력 관리 특징은 코어가 비활성일 때 언코어 주파수를 감소시킨다. 이는 한 프로세서의 코어가 다른 프로세서를 액세스하려 하고 원격 프로세서가 아이들/비활성 코어(및 이에 따라 낮은 언코어 주파수)를 가질 때, 이러한 낮은 원격 주파수는 응답 시간에서의 증가를 초래할 것이라는 시나리오를 생성한다. 원격 프로세서가 이러한 언코어 주파수에 대해 고정된 주파수를 유지할 수 있는 동안, 이는 전력 소비를 증가시킬 수 있고, 특히 낮은 대역폭 작업부하에서 레이턴시가 높다는 문제점을 여전히 해결하지 못할 수 있다.
도 1은 본 발명의 일 실시예에 따른 시스템의 일부의 블럭도이다.
도 2는 본 발명의 일 실시예에 따른 방법의 흐름도이다.
도 3a는 본 발명의 일 실시예에 따라 주파수 조정을 요청하는 방법의 흐름도이다.
도 3b는 본 발명의 일 실시예에 따라 언코어 주파수 업데이트를 수행하는 방법의 흐름도이다.
도 4a는 본 발명의 일 실시예에 따른 예시적인 2 프로세서 시스템의 블럭도이다.
도 4b는 본 발명의 일 실시예에 따라 메모리 액세스 요청의 핸들링에 관한 통신의 흐름을 도시하는 블럭도이다.
도 5는 본 발명의 일 실시예에 따른 프로세서의 블럭도이다.
도 6은 본 발명의 일 실시예에 따른 프로세서의 블럭도이다.
도 7은 본 발명의 일 실시예에 따른 시스템의 블럭도이다.
다양한 실시예에서, 제1 프로세서에서 수신되는 응답에 대한 응답 레이턴시가 원격 프로세서에 의해 제약되는 조건을 검출 메커니즘이 검출할 수 있다. 이러한 검출에 응답하여 통신이 생성되어 원격 프로세서에 보내질 수 있다. 차례로, 성능 손실을 완화하도록 언코어 주파수를 증가시키는 작업이 원격 프로세서에서 발생할 수 있다. 이러한 프로세서는 주어진 퍼스널 컴퓨터, 서버 컴퓨터, 모바일 디바이스 또는 다른 컴퓨팅 디바이스와 같은 멀티프로세서 시스템의 개별 프로세서 소켓일 수 있다.
일 실시예에서, 센서는 성능(또는 응답 레이턴시)이 원격 프로세서의 주파수에 민감한 트랜잭션을 카운트할 수 있다. 즉, 프로세서는, 메모리 액세스 트랜잭션에 응답하여, 원격 프로세서로부터의 스누프 응답 및 로컬 메모리에 대한 액세스로부터의 데이터를 수신하도록 구성되는 홈 에이전트를 포함한다. 홈 에이전트는 트랜잭션을 계속하기 이전에 충돌이 없는지 체크하기 위해 수신될 응답 양자 모두를 자주 기다려야 할 것이다. 원격 프로세서로부터의 스누프 응답의 레이턴시만이 원격 프로세서 주파수에 의해 결정된다.
원격 프로세서의 주파수를 가속하는 것으로부터 가능한 성능 이익을 정량화하는데 도움이 되는 카운터의 세트가 제공될 수 있다. 일 실시예에서, 제1 카운터는 로컬 메모리 응답 이후 원격 스누프 응답이 수신된 트랜잭션의 수를 카운트하도록 구성된다. 그리고, 제2 카운터는 홈 에이전트(또는 다른 코히어런시 컨트롤러)가 원격 스누프 응답을 기다린 사이클의 총 수를 카운트하도록 구성된다.
차례로, 이들 카운터는, PCU(Power Control Unit)와 같은 프로세서의 전력 컨트롤러에 의해 판독되어, 이러한 레이턴시 정보에 기초하여 프로세서간 주파수 조정 요청을 트리거하기에 충분한 성능 이익이 있는지를 결정하기 위해 프로그램된 임계치에 대하여 비교될 수 있다. 본 명세서에 설명되는 바와 같이, 이러한 주파수 조정은, 본 명세서에서 시스템 에이전트 또는 소위 언코어 회로라고도 하는 논-코어 회로의 주파수가 다수의 프로세서 소켓에 걸쳐 공통 주파수로 설정되는 상황을 포함하는, 상이한 형태를 취할 수 있다는 점에 주의하자. 다른 상황에서, 이러한 주파수 조정은, 프로세서간 통신의 레이턴시를 개선하기 위해, 언코어 주파수에 대한 업데이트를 찾는 하나의 프로세서 소켓으로부터 다른 소켓(또는 소켓들)으로의 요청의 형태를 취할 수 있다. 또한, 본 명세서에 설명되는 구현은 언코어 도메인을 포함하는 상이한 도메인에 대해 독립적인 주파수에서 동작할 수 있는 프로세서 소켓에 관한 것이지만, 실시예는 단일 주파수에서 동작하는 프로세서들에 동등하게 적용된다는 점을 이해하자. 또한, 본 명세서에는 언코어 주파수에 관한 주파수 조정을 수행하는 것으로 설명되지만, 일부 실시예들에서 이러한 주파수 조정은, 프로세서 소켓의 링 상호접속과 같은 상호접속 주파수가 언코어 회로와는 상이한 주파수에서 동작하는 구현에서의 상호접속 주파수와 같이, 프로세서 소켓의 추가적인 또는 상이한 컴포넌트에 대한 것일 수 있다.
본 발명의 범위가 이러한 관점에 제한되는 것은 아니지만, 본 명세서에 설명되는 바와 같은 언코어 주파수 조정 제어는 펌웨어, 하드웨어, 소프트웨어 및 이들의 조합을 통해 구현될 수 있고, 이에 따라 바람직하지 못한 레이턴시의 검출을 가능하게 하여, 적어도 하나의 다른 프로세서 소켓으로의 요청의 통신은 증가된 언코어 주파수가 레이턴시를 감소시키는 것을 가능하게 한다.
일 실시예에서, 주파수 조정 요청은 프로세서간 링크를 통해 터널링되는(tunneled) PCU-to-PCU 메시지일 수 있다. 하나의 프로세서가 다른 프로세서로부터 이러한 표시를 수신하면, 이는 해당 프로세서의 현재 전력 제약 내에서 가능하면 자신의 언코어 주파수를 상승시키려 시도한다. 이는, 원격 언코어 주파수에서 더 큰 약간의 증가(upticks)를 트리거하는 더 높은 카운트로, 언코어 주파수를 점증적으로(한 번에 한 단계) 또는 카운터 정보에 기초하는 더 큰 단계로 상승시킬 수 있다.
여러 실시예에서, 원격 주파수를 증가시켜, 원격 스누프 응답이 로컬 메모리 액세스와 실질적으로 동시에 홈 에이전드에 도달되도록 타이밍되는 것만이 유익하다는 점에 주목하자. 이 시점 이후, 로컬 메모리는 레이턴시 결정자가 되고, 원격 프로세서 주파수를 더 증가시키는 것으로부터는 레이턴시 이익이 없다.
이제 도 1을 참조하면, 본 발명의 일 실시예에 따른 시스템의 일부의 블럭도가 도시된다. 도 1에 도시된 바와 같이, 시스템(100)은 멀티코어 프로세서로서 도시된 프로세서(110)를 포함하여, 다양한 컴포넌트들을 포함할 수 있다. 프로세서(110)는 제1 전압 변환을 수행하여 1차 조정 전압(primary regulated voltage)을 프로세서(110)에 제공할 수 있는 외부 전압 레귤레이터(160)를 통해 전원(150)에 연결될 수 있다.
도시된 바와 같이, 프로세서(110)는 다수의 코어(120a-120n)를 포함하는 싱글 다이 프로세서 소켓(single die processor socket)일 수 있다. 또한, 각각의 코어는 개별 전압 레귤레이터(125a 내지 125n)와 관련되어 있을 수 있다. 따라서, 각각의 개별 코어의 전압 및 이로 인한 전력 및 성능의 미세 제어를 가능하게 하는 FIVR(Fully Integrated Voltage Regulator) 구현이 제공될 수 있다. 그러한 것으로서, 각각의 코어는 독립적인 전압 및 주파수에서 동작할 수 있어, 큰 유연성을 가능하게 하고, 전력 소비와 성능의 균형을 맞추는 폭넓은 기회를 제공한다.
도 1을 계속 참조하면, 프로세서 내에 입출력 인터페이스(132), 다른 인터페이스(134), 및 통합 메모리 컨트롤러(136)를 포함하는 추가적인 컴포넌트들이 존재할 수 있다. 도시된 바와 같이, 이들 컴포넌트 각각은 다른 통합 전압 레귤레이터(125x)에 의해 전력을 공급받을 수 있다. 일 실시예에서, 인터페이스(132)는 Intel사의 QPI(Quick Path Interconnect) 프로토콜에 따를 수 있는데, 이는 물리 계층, 링크 계층, 및 프로토콜 계층과 같은 다수의 계층을 포함하는 캐시 코히어런트 프로토콜에서의 PtP(point-to-point) 링크를 위해 제공된다. 하나 이상의 QPI 인터페이스를 통해 본 명세서에 설명될 것처럼, 언코어 주파수 조정 메시지들이 멀티프로세서 시스템의 프로세서 소켓들 사이에서 통신될 수 있다. 차례로, 인터페이스(134)는 , 예를 들어, PCI ExpressTM Specification Base Specification version 2.0(2007년 1월 17일 공개됨)인 PCIeTM(Peripheral Component Interconnect Express) 사양에 따를 수 있다.
프로세서(110)에 관한 전력 관리 동작들을 수행하는 하드웨어, 소프트웨어 및/또는 펌웨어를 포함할 수 있는 PCU(Power Control Unit)(138)이 또한 도시된다. 다양한 실시예에서, PCU(138)은 본 발명의 실시예에 따라서 언코어 주파수 제어를 수행하는 로직을 포함할 수 있다. 또한, PCU(138)는 전용 인터페이스를 통해 외부 전압 레귤레이터(160)에 연결될 수 있다. 이러한 방식으로, PCU(138)는 요청받은 조정된 전압을 프로세서에 제공할 것을 전압 레귤레이터에 명령할 수 있다.
도시의 편이상 도시되진 않았지만, 추가적인 언코어 로직, 및 예를 들어, 1 레벨 이상의 캐시 메모리 계층구조인 내부 메모리, 홈 에이전트와 같은 코히어런시 컨트롤러 등과 같은 다른 컴포넌트들과 같은 추가의 컴포넌트들이 프로세서(110) 내에 존재할 수 있음을 이해하자. 또한, 도 1의 구현에서는 통합 전압 레귤레이터와 함께 도시되지만, 실시예들이 이에 제한되는 것은 아니다.
이하의 실시예들은 컴퓨팅 플랫폼 또는 프로세서에서와 같이, 특정 집적 회로에서의 에너지 보존 및 에너지 효율을 참조하여 설명되지만, 다른 실시예들은 다른 타입의 집적 회로 및 로직 디바이스에 적용될 수 있다. 본 명세서에 설명되는 실시예들의 유사한 기술들 및 교시들은, 더 나은 에너지 효율 및 에너지 보존으로부터 또한 이익을 얻을 수 있는 다른 타입의 회로 또는 반도체 장치에 적용될 수 있다. 예를 들어, 개시되는 실시예들은 임의의 특정한 타입의 컴퓨터 시스템에 제한되는 것이 아니고, 핸드헬드 디바이스, SoC(Systems on Chip) 및 내장된 애플리케이션과 같은 다른 디바이스들에서도 이용될 수 있다. 핸드헬드 디바이스의 일부 예는 셀룰러 폰, 인터넷 프로토콜 디바이스, 디지털 카메라, PDA(Personal Digital Assistant) 및 핸드헬드 PC를 포함한다. 내장형 애플리케이션들은 전형적으로 마이크로컨트롤러, DSP(Digital Signal Processor), 네트워크 컴퓨터(NetPC), 셋탑 박스, 네트워크 허브, WAN(Wide Area Network) 스위치, 또는 아래에 교시되는 기능 및 동작을 수행할 수 있는 임의의 다른 시스템을 포함한다. 더욱이, 본 명세서에 설명되는 장치, 방법 및 시스템은 물리적 컴퓨팅 디바이스에 제한되는 것이 아니라, 에너지 보존 및 효율을 위한 소프트웨어 최적화에도 관련될 수 있다. 이하의 설명에서 순조롭게 명백해지는 바와 같이, (하드웨어, 펌웨어, 소프트웨어 또는 그들의 조합을 참조하여) 본 명세서에 설명되는 방법, 장치 및 시스템의 실시예들은 US 경제의 큰 부분을 포괄하는 제품들에서의 전력 보존 및 에너지 효율을 위한 것과 같이, '녹색 기술(green technology)'의 미래에 필수적인 것이다.
본 명세서에 설명되는 원격 프로세서 레이턴시 검출 및 언코어 주파수 제어는, ACPI(Advanced Configuration and Platform Interface) 표준(예를 들어, 2006년 10월 10일에 공개된 Rev.3.0b)과 같은 OS(Operating Systema)-기반 메커니즘에 독립적이고 상보적일 수 있다. ACPI에 따르면, 프로세서는 다양한 성능 상태 또는 레벨, 즉 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보다 더 깊은 저전력 상태에 있는 등이 되도록) 저전력 소비 레벨에 있다. 프로세서 소켓의 더 많은 코어가 더 깊은 저전력 상태에 진입할수록, 프로세서의 액티비티 레벨은 감소하고, 이에 따라, PCU를 통해 구현되는 것과 같은 프로세서의 특정 전력 관리 특징들에 따라서 언코어 주파수도 너무 감소할 수 있다는 점에 주의하자.
일 실시예에서는, 전용 통신 프로토콜이 프로세서간 주파수 조정을 위해 제공된다. 낮은 원격 프로세서 주파수 제어 특징이 프로세서에 트리거될 때, 이러한 프로토콜에 따른 하나 이상의 메시지가 (멀티프로세서 시스템의 상이한 프로세서 소켓을 연결하는 QPI 링크 또는 기타 PtP(Point-to-Point) 상호접속과 같은) 프로세서간 상호접속을 통해 보내진다. 따라서, 이 메시지는 프로세서간 주파수 조정(및, 선택적으로, 프로세서가 요청하는 주파수)을 나타내는 조건을 프로세서가 검출하였다는 시그널링을 제공한다. 상이한 실시예들에서는, 이러한 통신 프로토콜이, 피어-투-피어(peer-to-peer) 방식(각각의 프로세서가, 동일한 반응을 갖고, 주파수 조정을 찾을 때 다른 모든 프로세서에 요청을 보냄), 또는 마스터-슬레이브(master-slave) 방식(프로세서가, 마스터로서 설계되고, 다른 프로세서로부터 정보를 수집하여, 결정을 행하고, 다른 모든 프로세서에 요청을 보냄)으로 구현될 수 있다. 어느 경우든, 시스템 반응은 동일하다.
이렇게 요청된 업데이트된 주파수는 데드락(deadlock)이 없는 바닥 주파수(floor frequency)에 있을 수 있다는 점에 주의하자. 예를 들어, 바닥 주파수를 다른 모든 프로세서의 언코어 주파수의 최대값으로 설정하는 것은 어느 프로세서도 자신의 언코어 주파수를 감소시킬 수 없는 데드락 시나리오에 이르게 될 것이고, 따라서 전력 절감에 악영향을 줄 것이다. 이에 대응하는 데드락이 없는 예는 다른 모든 프로세서의 언코어 주파수의 최대값보다 (1 또는 2 빈 주파수(일 실시예에서, 빈 주파수는 100 메가헤르츠(MHz)임)와 같은) 미리결정된 양만큼 적은 바닥 주파수를 선택하는 것이다. 이러한 방식으로 프로세서들은 작업부하 반응이 바뀜에 따라 주파수를 감소시킬 수 있게 된다.
이제 도 2를 참조하면, 본 발명의 일 실시예에 따른 방법의 흐름도가 도시된다. 도 2에 도시된 바와 같이, 방법(200)은 프로세서의 홈 에이전트 또는 다른 회로의 로직에 의해 수행될 수 있다. 도 2에 도시된 이러한 동작들은, 로컬 메모리를 소유하고 로컬 프로세서 소켓의 코어들과 같은 에이전트로부터의 다양한 메모리 요청에 대한 응답을 제공하는 홈 에이전트에 관한 것이라는 점에 주의하자. 일반적으로, 방법(200)은, 원격 프로세서 소켓으로부터 수신되는 이러한 응답들에 관해 과도한 레이턴시가 발생하는지를 판정하기 위해, 다양한 트랜잭션에 대한 응답의 수신에 관한 정보를 분석하는데 사용될 수 있다. 도시된 바와 같이, 방법(200)은 홈 에이전트에서 판독 요청을 수신하는 것으로 시작한다(블럭 205). 이러한 판독 요청은 프로세서의 코어로부터 올 수 있고, 이는 특정 메모리 어드레스에 위치되는 데이터의 주어진 일부를 판독하려 한다. 논의의 목적상 이러한 메모리 어드레스가 프로세서에 로컬인 시스템 메모리의 일부에 위치된다고 가정하자. 이러한 판독 요청을 수행하는 과정에서, 이러한 요청된 데이터의 임의의 사본이 존재하는지 및 그렇다면 이들이 변형된 상태인지를 판정하는 하나 이상의 스누프 요청이 원격 프로세서 소켓들에 보내진다.
여전히 도 2를 참조하면, 메모리 액세스가 메모리에 보내질 수 있고 스누프 요청이 원격 프로세서 소켓에 보내질 수 있는 블럭 210으로 제어가 진행된다. 예를 들어, 2 프로셋서 소켓 시스템을 가정하자. 따라서, 메모리 컨트롤러를 통해 판독 요청을 로컬 메모리에 보내는 것에 추가하여, (존재한다면) 해당 프로세서에서 요청된 데이터의 상태를 요청하는 스누프 요청이 홈 에이전트로부터 원격 소켓에 보내질 수 있다. 그리고, 이러한 2가지 요청 모두가 홈 에이전트에 수신되었는지가 판정될 수 있다(마름모 215).
그리고, 메모리 응답 이후 원격 프로세서 응답이 수신되었는지를 판정하는 마름모 220으로 제어가 진행한다. 여기서, 메모리 응답은 요청된 데이터를 포함하는 판독 완료일 수 있다. 결국, 다른 프로세서 소켓으로부터의 응답은, 다른 프로세서 소켓의 캐시 메모리에 요청된 데이터가 존재하였는지를 나타내는 스누프 응답이고, 존재한다면, 그 상태를 나타낸다.
메모리 응답 이후 원격 프로세서 소켓 응답이 수신된 것으로 판정되면, 원격 프로세서 응답을 수신함에 있어서의 지연에 기초하여 2개 카운터가 증분될 수 있는 블럭 225로 제어가 진행한다. 구체적으로, 홈 에이전트의 레이턴시 검출 로직의 일부일 수 있는 이들 카운터는, 원격 프로세서 소켓으로부터의 응답이 로컬 메모리로부터의 응답에 비해 지연되는 트랜잭션들의 카운트를 유지하는 제1 카운터를 포함한다. 제2 카운터는 이들 지연된 응답의 사이클들의 수의 카운트를 유지할 수 있다. 따라서, 각 응답에 대해, 제1 카운터에 대해서는 단일 증분이 발생될 수 있는 반면, 제2 카운터에 대해서는 가변량의 증분(즉 로컬 메모리로부터의 메모리 응답의 수신과 원격 프로세서 소켓으로부터의 대응 스누프 응답의 수신 사이의 사이클들에서의 차분에 대응함)이 발생될 수 있다. 어느 경우든, 요청된 판독 데이터가 요청자에게 제공될 수 있는 블럭 230으로 제어가 진행한다. 도 2의 실시예에서는 이러한 하이 레벨로 도시되었지만, 본 발명의 범위가 이러한 점에서 제한되는 것은 아니라는 것을 이해하자.
카운트 값들에 기초하여, 홈 에이전트의 이러한 로직 또는 (PCU의 것과 같은) 다른 프로세서 로직은, 하나 이상의 원격 프로세서 소켓으로부터 응답을 수신하기 위한 레이턴시가 바람직하지 못한 하이 레벨에 있는지를 판정할 수 있고, 그렇다면 적절한 보정 액션을 취할 수 있다. 일 실시예에서, PCU의 언코어 주파수 제어 로직은, 이들 카운터를 소정 간격으로 판독할 수 있고, 이들 카운터의 값에 기초하여, 하나 이상의 원격 프로세서 소켓에서 업데이트된 언코어 주파수에 대한 요청이 보장되는지를 판정할 수 있다. 그렇다면, 해당 요청이 생성되어 적절한 프로세서 소켓(들)에 보내질 수 있다.
이제 도 3a를 참조하면, 본 발명의 일 실시예에 따라 주파수 조정을 요청하는 방법의 흐름도가 도시된다. 도 3a에서, 방법(240)은, 일부 구현에서, 독립적 로직일 수 있거나 또는 PCU에 포함될 수 있는, PCU 로직 또는 전용 언코어 주파수 제어 로직과 같은, 프로세서의 다양한 로직 내에 구현될 수 있다는 점에 주의하자. 도시된 바와 같이, 방법(240)은 원격 프로세서 응답 레이턴시가 임계값보다 큰지를 판정(마름모 245)함으로써 시작된다. 위에 설명된 바와 같이, 카운터의 세트에 저장된 값은 원격 프로세서 레이턴시가 이러한 레이턴시 임계값을 초과하는지를 판정하기 위해 판독될 수 있다. 본 실시예에서는 이러한 카운터-기반 레이턴시 판정으로 설명되지만, 다른 실시예들에서는 바람직하지 못한 원격 프로세서 레이턴시를 검출하는 상이한 검출 메커니즘들이 가능하다.
여전히 도 3a를 참조하면, 다음으로 블럭 250에서 주파수 업데이트 요청이 생성될 수 있다. 이러한 요청은 다양한 실시예들에서 상이한 형태를 취할 수 있다. 예를 들어, 언코어 주파수를 업데이트하는 요청이, 예를 들어, 업데이트된 언코어 주파수에 대한 프로그램된 값으로 생성될 수 있다. 아니면 계산이 행해질 수 있다. 또 다른 실시예들에서는, 주파수를 업데이트하는 간단한 요청이 생성될 수 있어, 결국 수신 프로세서가 적절한 언코어 주파수에 관한 계산을 수행할 수 있게 한다.
여전히 도 3a를 참조하면, 다음으로, 주파수 업데이트 요청이 프로세서에 연결된 하나 이상의 프로세서에 통신될 수 있는 블럭 255로 제어가 진행한다. 위에 논의된 바와 같이, 이러한 통신은 QPI와 같이 프로세서들을 연결하는 PtP 상호접속 또는 기타 상호접속을 통하는 것일 수 있다. 일 실시예에서는, 이러한 요청된 동작을 위한 인코딩 뿐만 아니라 요청된 업데이트된 주파수 값의 식별을 포함하는 주파수 제어 메시지를 포함하는 상이한 타입의 메시지들이 보내질 수 있다. 도 3a의 실시예에서는 이러한 하이 레벨로 도시되지만, 본 발명의 범위가 이러한 점에서 제한되는 것은 아니라는 것을 이해하자.
이제, 도 3b를 참조하면, 본 발명의 일 실시에에 따라 언코어 주파수 업데이트를 수행하는 방법의 흐름도가 도시된다. 이러한 방법은, 일부 실시예들에서, 도 3a의 위 논의에서와 같이, 프로세서의 언코어 주파수 제어 로직에 의해 수행될 수 있다. 그러나, 증가된 언코어 주파수에 대해 들어오는 요청들을 취급하는 이러한 언코어 주파수 제어 로직은, 원격 프로세서 내에서 증가된 주파수에 대해 원격 프로세서에 대한 요청을 착수하는 PCU의 로직과 상이할 수 있다는 점을 이해하자. 도시된 바와 같이, 방법(260)은 원격 프로세서로부터 언코어 주파수 요청을 수신함(블럭 265)으로써 시작된다. 위에 설명된 바와 같이, 이러한 요청은, PtP 상호접속을 통해 수신될 수 있고, 언코어 주파수 제어 로직 내에서 요청이 수신되도록 관련될 수 있는 정보를 포함할 수 있다. 이러한 요청은, 요청된 업데이트된 주파수를 포함할 수 있거나, 또는 단순히 언코어 주파수를 업데이트하는 요청일 수 있다는 점에 주의하자. 다음으로, 프로세서의 다양한 제약들 내에서, 프로세서가 자신의 언코어 주파수를 요청된 언코어 주파수로 업데이트할 수 있는지가 판정될 수 있는 마름모(270)로 제어가 진행한다. 이러한 판정은, 예를 들어, 이에 따라, 전력 및/또는 열 제약들과 같은 프로세서에 관한 다양한 제약들에 관한 정보를 제공하는 PCU로부터의 입력에 의해 언코어 주파수 제어 로직 내에서 행해질 수 있거나, 또는 증가된 언코어 주파수가 허용되는지를 PCU가 나타낼 수 있다. 이러한 방식으로, 언코어 주파수 제어 로직은, (요청이 요청된 주파수 값을 포함할 때) 요청된 언코어 주파수가 영향을 받을 수 있는지를 판정할 수 있다. 그렇다면, 언코어 주파수가 요청된 언코어 주파수로 업데이트될 수 있는 블럭 275로 제어가 진행한다. 따라서, 이러한 업데이트된 언코어 주파수는, 프로세서 상에서 실행되고 있는 작업부하의 현재 레벨에 대해 PCU에 의해 판정되는 언코어 주파수보다 큰 값에 있다. 여기서, 이러한 업데이트된 언코어 주파수는 이러한 로컬 프로세서의 현재 액티비티를 취급하는데 필요한 주파수보다 큰(잠재적으로 훨씬 큰) 값에 있을 수 있다는 점에 주의하자. 다른 방식으로 언급하자면, 이러한 증가된 언코어 주파수는, 로컬 프로세서 작업부하를 취급할 필요는 없음에도 불구하고, 전반적으로 더 큰 시스템 성능을 가능하게 한다.
반면에, 프로세서가 요청된 언코어 주파수에 대해 업데이트를 수행할 수 없으면, 프로세서 제약들에 따라서 가용 언코어 주파수가 결정될 수 있는 블럭 280으로 제어가 대신 진행한다. 언코어 주파수 제어 로직이 이러한 판정을 수행할 수 있거나 또는 일부 실시예들에서는 PCU 자체가 이러한 판정을 행할 수 있다. 마지막으로, 판정된 가용 언코어 주파수로 언코어 주파수가 업데이트될 수 있는 블럭 290으로 제어가 진행한다. 도 3b의 실시예에서는 이러한 하이 레벨로 도시되지만, 본 발명의 범위가 이러한 점에서 제한되는 것은 아니라는 점을 이해하자.
이제 도 4a를 참조하면, 본 발명의 일 실시예에 따른 예시적인 2 프로세서 시스템의 블럭도가 도시된다. 도 4a에 도시된 바와 같이, 시스템(300)은 제1 프로세서 소켓(310a) 및 제2 프로세서 소켓(310b)을 포함하는 멀티프로세서 시스템이다. 각각의 소켓은 동일하게 구성될 수 있고, 따라서, 동일한 컴포넌트들이 소켓(310b)에 존재하더라도, 프로세서 소켓(310a)의 컴포넌트들만이 논의된다. 물론 다른 실시예들에서는, 상이한 수의 코어들을 갖고, 다른 상이점들 중에서, 캐시 메모리가 상이하게 사이징되는 다른 처리 엔진들을 갖는 바와 같이, 상이한 타입의 프로세서들이 존재할 수 있다는 점에서, 프로세서 소켓들이 이종 소켓들일 수 있다.
도시된 바와 같이, 프로세서 소켓(310a)은, 일 실시예에서 링 상호접속일 수 있는 상호접속(320a)를 통해 소켓의 다른 컴포넌트들에 연결하는 복수의 코어(315a0-315an)를 포함한다. 각각의 코어는 공통 아키텍처의 것일 수 있거나 또는 다수의 마이크로-아키텍처의 코어가 존재할 수 있다. 각각의 이러한 코어는 로컬 캐시 메모리를 포함할 수 있다. 또한, 상호접속(320a)을 통해, 코어들은, 일 실시예에서 LLC(Last Level Cache)와 같은 공유 캐시 메모리인 캐시 메모리(340a)에 연결된다.
또한, 상호접속(320a)을 통해, 코어들은, 코히어런시 컨트롤러로서 역할을 하고 본 발명의 일 실시예에 따른 레이턴시 검출 로직(도시의 편의상 도 4a에는 도시되지 않음)을 포함하는 홈 에이전트(325a)에 연결된다. 이러한 레이턴시 검출 로직은 홈 에이전트에 의해 발행되는 스누프 요청들과 같은 요청들에 대한 하나 이상의 원격 프로세서 소켓으로부터의 응답들에 대해서 레이턴시의 양을 판정하도록 구성된다. 보다 구체적으로, 이러한 레이턴시는 동일한 트랜잭션에 대해 로컬 메모리로부터 수신되는 대응 응답의 수신보다 더 긴 지속기간일 수 있다. 홈 에이전트의 레이턴시 검출 로직을 사용하여, 하나 이상의 프로세서 소켓으로부터 수신되는 응답들에 관하여 과도한 레이턴시가 발생하는지가 판정될 수 있고, 그렇다면, 그러한 프로세서 소켓(들)에 대해 레이턴시를 감소시키려고 시도하라는 요청을 생성할 수 있는 표시가 프로세서의 적절한 엔티티에 대해 행해질 수 있다. 차례로, 홈 에이전트(325a)는 시스템 메모리의 로컬 부분에 차례로 연결되는 메모리 컨트롤러(330a)에 연결된다. 보다 구체적으로, 메모리 상호접속(365a)을 통해, 메모리 컨트롤러(330a)는, DRAM(Dynamic Random Access Memory)(370a)에 연결되어, 이에 대한 액세스를 제어한다.
본 명세서에서 실시예들의 논의의 목적상, 프로세서 소켓(310a)은, 일 실시예에서, QPI 상호접속(380)을 통해 제1 프로세서 소켓(310a)과 제2 프로세서 소켓(310b) 사이의 상호접속을 제공하는 QPI 인터페이스일 수 있는 인터페이스(360a)를 포함한다. 더욱 도시되는 바와 같이, PCU(350a)(본 명세서에 설명되는 바와 같은 언코어 주파수 제어 로직을 포함할 수 있음)가 인터페이스(360)에 연결되어, 코어들 사이의 주파수 제어 메시지들의 통신을 가능하게 한다.
2개보다도 많은 프로세서들을 갖는 시스템으로 실시예들이 확장될 수 있다는 점에 주의하자. 모든 프로세서가 상호 접속되지는 않는 시스템에서(예를 들어, 프로세서들이 링, 원환체(torus) 또는 기타 전체적으로 접속되지 않는(not-fully-connected) 토폴로지로서 배치되는 경우), 중간 프로세서들은 주파수 조정 요청에 대한 로컬 리피터(repeater)로서 역할을 하여, 각각의 프로세서는 시스템에서 다른 모든 프로세서로부터의 주파수 조정 요청들을 수신할 수 있다. 본 발명의 일 실시예를 사용하면, 저-대역폭 레이턴시-감지형 서버 작업부하들을 실행할 때 멀티프로세서 플랫폼들에서 향상된 전력/성능이 실현될 수 있다.
도 4b는 본 발명의 일 실시예에 따른 메모리 액세스 요청의 취급에 관한 통신들의 흐름을 도시하는 블럭도이다. 도 4b에 도시된 바와 같이, 제1 홈 에이전트(325a)(또는 기타 코히어런시 컨트롤러)는 주어진 어드레스에 대한 판독 요청(1)을 수신한다. 이러한 요청은 코히어런시 프로토콜의 더 큰 판독 트랜잭션 흐름의 일부일 수 있다. 요청에 응답하기 위해, 스누프 요청(2)이 원격 프로세서(310b)에 보내지고, 메모리 액세스가 로컬 메모리(365a)에 보내진다(3). 스누프 요청은, 구현에 따라서, 홈 에이전트(325a)에 의해 또는 캐시 자체에 의해 보내질 수 있다. 이에 응답하여, 원격 프로세서(310b)는 스누프 응답(4)을 보내고, 로컬 메모리(370a)는 판독을 위한 데이터(5)를 보낸다. 홈 에이전트(325a)는, 이러한 2개 응답 모두를 기다리고, 요청자에게 판독 완료를 보내는 것을 포함하는 흐름의 나머지를 계속하기 이전에 임의의 충돌을 해결한다. 최적의 동작을 위해 이러한 2개의 응답 모두는 홈 에이전트(325a)에서 실질적으로 동시에 수신될 수 있다.
일 실시예에서, 홈 에이전트(325a)는, 원격 프로세서로부터의 응답을 기다리는데 판독 완료가 멎게 된(달리 말하면, (5) 이후 발생되는 (4)) 횟수 및 사이클들의 수를 카운트하는 카운터들을 포함한다. 이들 카운터는 로컬 PCU에 의해 판독되고, 로컬 PCU는 이들 카운터를 임계값들과 비교하여, 원격 프로세서(310b)의 언코어 주파수에서의 증가를 요청할지를 판정한다. 그렇다면, 이러한 요청이 생성되어 상호접속(380)을 통한 터널링에 의해 하나의 PCU로부터 다른 PCU로 통신된다. 카운터 카운트들이 주어진 지속기간 동안 관련된 임계값들보다 작을 때, PCU는 원격 프로세서 소켓으로부터 증가된 언코어 주파수를 요청하는 것을 중지할 수 있어, 원격 프로세서 소켓이 자기 자신의 액티비티 레벨에 기초하는 주파수로 복귀하게 한다는 점에 주의하자.
즉, PCU의 주파수 제어 로직은, 이러한 레이턴시가 존재한다는 점을 판정하고, 적절한 액션, 즉 주파수 조정 요청의 통신을 취하기 위해, 홈 에이전트로부터 높은 레이턴시의 표시를 수신할 수 있거나, 또는 홈 에이전트의 레이턴시 검출 로직 내의 카운터 값들 또는 다른 정보를 주기적으로 판독할 수 있다.
실시예들은 다양한 시장들에 대해 서버 프로세서, 데스크탑 프로세서, 모바일 프로세서 등을 포함하는 프로세서들에 구현될 수 있다. 이제 도 5를 참조하면, 본 발명의 일 실시예에 따른 프로세서의 블럭도가 도시된다. 도 5에 도시된 바와 같이, 프로세서(400)는 복수의 코어(410a-410n)를 포함하는 멀티코어 프로세서일 수 있다. 일 실시예에서, 각각의 그러한 코어는, 독립적인 전력 도메인의 것일 수 있으며, 작업부하에 기초하여 활성 상태들 및/또는 최대 성능 상태들에 진입하고 이로부터 벗어나도록 구성될 수 있다. 다양한 코어들은 다양한 컴포넌트들을 포함하는 시스템 에이전트 또는 언코어(420)에 상호접속(415)을 통해 연결될 수 있다. 도시된 바와 같이, 언코어(420)는 최종 레벨 캐시일 수 있는 공유 캐시(430)를 포함할 수 있다. 도시된 실시예에서, 언코어는 레이턴시 검출 로직(446)을 포함하는 홈 에이전트(445)를 더 포함한다. 이러한 로직은, 제1 카운터(447) 및 제2 카운터(448)를 포함하여, 레이턴시 검출을 수행하는데 사용되는 카운터들의 세트를 포함할 수 있다. 또한, 언코어는 통합 메모리 컨트롤러(440), 다양한 인터페이스들(450) 및 전력 제어 유닛(455)을 포함할 수 있다.
다양한 실시예들에서, 전력 제어 유닛(455)은 본 발명의 일 실시예에 따른 언코어 주파수 제어 로직(459)을 포함할 수 있다. 위에 설명된 바와 같이, 이러한 로직은, (예를 들어, 레이턴시 검출 로직(446)의 카운터들로부터 수신되는 카운트 값들에 기초하여) 원격 프로세서의 언코어 주파수에 대한 업데이트가 요청되는지를 판정하고, 만약 그렇다면 하나 이상의 원격 프로세서에 통신될 업데이트된 언코어 주파수에 대한 요청을 생성하는 역할을 한다. 또한, 이러한 로직은, 조정된 언코어 주파수가 생성되고 다른 프로세서 소켓들에 통신될 수 있도록, 원격 프로세서 소켓들로부터 수신된 메시지들에 응답하여 계산들을 수행할 수 있다. 더욱이, 이러한 로직은, 언코어 주파수 업데이트에 대해 들어오는 요청을 수신하고, 요청된 언코어 주파수 업데이트가 허용되는지를 판정하여, 그렇다면 본 명세서에 설명된 바와 같이, 변화에 영향을 준다.
도 5를 더 참조하면, 프로세서(400)는, 예를 들어, 메모리 버스를 통해 시스템 메모리(460)와 통신할 수 있다. 또한, 인터페이스들(450)에 의해, 주변 디바이스들, 대용량 스토리지 등과 같은 다양한 오프-칩 컴포넌트들에 대한 접속이 이루어질 수 있다. 도 5의 실시예에서 이러한 특정 구현이 도시되지만, 본 발명의 범위가 이러한 점에서 제한되는 것은 아니다.
이제 도 6을 참조하면, 본 발명의 다른 실시예에 따른 멀티-도메인 프로세서의 블럭도가 도시된다. 도 6의 실시예에 도시된 바와 같이, 프로세서(500)는 다수의 도메인들을 포함한다. 구체적으로, 코어 도메인(510)은 복수의 코어들(5100-510n)을 포함할 수 있고, 그래픽 도메인(520)은 하나 이상의 그래픽 엔진을 포함할 수 있으며, 시스템 에이전트 도메인(550)이 더 존재할 수 있다. 일부 실시예들에서, 시스템 에이전트 도메인(550)은 코어 도메인보다 독립적인 주파수에서 실행될 수 있으며 전력 제어 이벤트들 및 전력 관리를 취급하도록 항상 파워 온 상태를 유지할 수 있어, 도메인들(510 및 520)이 다이나믹하게 고전력 및 저전력 상태에 진입하고 그로부터 벗어나도록 제어될 수 있다. 도메인들(510 및 520) 각각은 상이한 전압 및/또는 전력에서 동작할 수 있다. 주의할 점은, 단지 3개의 도메인들로 도시되지만, 본 발명의 범위가 이러한 점에서 제한되는 것은 아니고, 다른 실시예들에서는 추가적인 도메인들이 존재할 수 있다는 점을 이해하자. 예를 들어, 각각 적어도 하나의 코어를 포함하는 다수 코어 도메인들이 존재할 수 있다.
일반적으로, 각각의 코어(510)는 다양한 실행 유닛들 외에도 로우 레벨 캐시들 및 추가적인 처리 엘리먼트들을 더 포함할 수 있다. 차례로, 다양한 코어들은 서로 연결될 수 있고, LLC(Last Level Cache)(5400-540n)의 복수의 유닛으로 형성되는 공유 캐시 메모리에 연결될 수 있다. 다양한 실시예들에서, LLC(540)는 코어들 및 그래픽 엔진 뿐만 아니라 다양한 미디어 처리 회로 사이에서 공유될 수 있다. 도시된 바와 같이, 링 상호접속(530)는 코어들을 함께 연결하며, 코어들, 그래픽 도메인(520) 및 시스템 에이전트 회로(550) 사이의 상호접속을 제공한다. 일 실시예에서, 상호접속(530)은 코어 도메인의 일부일 수 있다. 그러나, 다른 실시예들에서, 링 상호접속부는 자기 자신의 도메인의 것일 수 있다.
더욱 도시된 바와 같이, 시스템 에이전트 도메인(550)은 관련된 디스플레이의 제어 및 그에 대한 인터페이스를 제공할 수 있는 디스플레이 컨트롤러(552)를 포함할 수 있다. 더욱 도시된 바와 같이, 시스템 에이전트 도메인(550)은, 멀티프로세서 시스템의 다수 소켓들에서 언코어 주파수의 제어 및/또는 조정을 가능하게 하는 본 발명의 일 실시예에 따른 언코어 주파수 제어 로직(559)을 포함할 수 있는 전력 제어 유닛(555)을 포함할 수 있다. 다양한 실시예들에서, 이러한 로직은 도 3a 및 3b에서 위에 설명된 알고리즘들을 실행할 수 있다.
도 6에 더욱 도시된 바와 같이, 프로세서(500)는, DRAM(dynamic random access memory)과 같은 시스템 메모리에 대한 인터페이스를 제공할 수 있는 IMC(Integrated Memory Controller)(570)를 더 포함할 수 있다. 차례로, 이러한 로컬 메모리는, 홈 에이전트(545)에 의해 수신되는 원격 프로세서 소켓 응답들이 임계값 값보다 큰 레이턴시를 갖는지를 결정하는 레이턴시 검출 로직(546)을 포함하는 홈 에이전트(545)에 의해 소유될 수 있다. 다수의 인터페이스(5800-580n)는 프로세서와 다른 회로 사이의 상호접속을 가능하게 하기 위해 존재할 수 있다. 예를 들어, 일 실시예에서, 적어도 하나의 DMI(Direct Media Interface) 인터페이스 뿐만 아니라 하나 이상의 PCI ExpressTM(PCIeTM)(Peripheral Component Interconnect Express) 인터페이스들이 제공될 수 있다. 더욱이, 추가적인 프로세서들 또는 다른 회로와 같은 기타 에이전트들 사이의 통신을 제공하도록, Intel사의 QPI(Quick Path Interconnect) 프로토콜에 따른 하나 이상의 인터페이스가 또한 제공될 수 있다. 도 6의 실시예에서 이러한 하이 레벨로 도시되지만, 본 발명의 범위가 이러한 점에서 제한되는 것은 아니라는 점을 이해하자.
실시예들은 여러 상이한 시스템 타입들로 구현될 수 있다. 이제 도 7을 참조하면, 본 발명의 일 실시예에 따른 시스템의 블록도가 도시된다. 도 7에 도시된 바와 같이, 멀티프로세서 시스템(600)은 포인트-투-포인트 상호접속 시스템이며, 포인트-투-포인트 상호접속(650)을 통해 연결되는 제1 프로세서(670) 및 제2 프로세서(680)를 포함한다. 도 7에 도시된 바와 같이, 프로세서들(670 및 680) 각각은, 프로세서들에 잠재적으로 더 많은 코어들이 존재할 수 있더라도, 제1 및 제2 프로세서 코어들(즉, 프로세서 코어들(674a 및 674b) 및 프로세서 코어들(684a 및 684b))을 포함하는 멀티코어 프로세서들일 수 있다. 각각의 프로세서들은, 본 명세서에 설명된 바와 같이, 원격 프로세서 레이턴시 검출 및 언코어 주파수 제어와 조정을 수행하기 위해, PCU, 홈 에이전트 및 기타 로직을 포함할 수 있다.
여전히 도 7을 참조하면, 제1 프로세서(670)는 MCH(Memory Controller Hub)(672) 및 P-P(Point-to-Point) 인터페이스들(676 및 678)을 더 포함한다. 유사하게, 제2 프로세서(680)는 MCH(682) 및 P-P 인터페이스들(686 및 688)을 포함한다. 도 7에 도시된 바와 같이, MCH들(672와 682)는 프로세서들을 각 메모리들, 즉 메모리(632) 및 메모리(634)에 연결하고, 이는 각 프로세서들에 로컬하게 첨부되는 시스템 메모리의 일부(예를 들어, DRAM)일 수 있다. 제1 프로세서(670) 및 제2 프로세서(680)는 P-P 상호접속부들(662 및 664)을 통해 칩셋(690)에 각각 연결될 수 있다. 도 7에 도시된 바와 같이, 칩셋(690)은 P-P 인터페이스들(694 및 698)을 포함한다.
또한, 칩셋(690)은 P-P 상호접속(639)에 의해 칩셋(690)을 고성능 그래픽 엔진(638)과 연결하는 인터페이스(692)를 포함한다. 차례로, 칩셋(690)은 인터페이스(696)를 통해 제1 버스(616)에 연결될 수 있다. 도 7에 도시된 바와 같이, 다양한 입/출력(I/O) 디바이스(614)는, 제1 버스(616)를 제2 버스(620)에 연결하는 버스 브릿지(618)와 함께 제1 버스(616)에 연결될 수 있다. 예를 들어, 키보드/마우스(622), 통신 디바이스(626), 및 일 실시예에서 코드(630)를 포함할 수 있는 디스크 드라이브 또는 기타 대용량 스토리지 디바이스와 같은 데이터 스토리지 유닛(628)을 포함하는 다양한 디바이스들이 제2 버스(620)에 연결될 수 있다. 또한, 오디오 I/O(624)가 제2 버스(620)에 연결될 수 있다. 스마트 셀룰러 폰, 태블릿 컴퓨터, 넷북, UltrabookTM 등과 같은 모바일 디바이스들을 포함하는 다른 타입의 시스템에 실시예들이 통합될 수 있다.
실시예들은 여러 상이한 타입의 시스템들에서 사용될 수 있다. 예를 들어, 일 실시예에서는 본 명세서에 설명되는 다양한 방법들 및 기술들을 수행하기 위해 통신 디바이스가 배치될 수 있다. 물론, 본 발명의 범위가 통신 디바이스에 제한되는 것은 아니며, 대신에 다른 실시예들은 명령어들을 처리하는 다른 타입의 장치들, 또는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 디바이스로 하여금 본명세서에 설명되는 하나 이상의 방법 및 기술을 수행하게 하는 명령어들을 포함하는 하나 이상의 머신 판독가능한 매체에 관련될 수 있다.
실시예들은 코드로 구현될 수 있으며, 명령어들을 수행하도록 시스템을 프로그램하는데 사용될 수 있는 명령어들을 저장하고 있는 비-일시적 스토리지 매체에 저장될 수 있다. 이러한 스토리지 매체는, 플로피 디스크들, 광학 디스크들, SSD들(Solid State Drives), CD-ROM들(Compact Disk Read-Only Memories), CD-RW들(Compact Disk ReWritables), 및 광자기 디스크들(magneto-optical disks)를 포함하는 임의 타입의 디스크, ROM들(Read-Only Memories), DRAM들(Dynamic Random Access Memories) 및 SRAM들(Static Random Access Memories)과 같은 RAM들(Random Access Memories), EPROM들(Erasable Programmable Read-Only Memories), 플래시 메모리들, EEPROM들(Electrically Erasable Programmable Read-Only Memories)과 같은 반도체 디바이스들, 자기 또는 광 카드들, 또는 전자 명령어들을 저장하는데 적합한 임의의 다른 타입의 매체를 포함할 수 있지만, 이에 제한되는 것은 아니다.
본 발명이 제한된 수의 실시예들에 관하여 설명되었지만, 기술분야에 숙련된 자들은 그로부터의 다수의 변형들 및 변경들을 이해할 것이다. 첨부된 청구항들은 본 발명의 진정한 사상 및 범위에 속하는 이러한 변형들 및 변경들 모두를 포함하려는 것이다.

Claims (22)

  1. 프로세서로서,
    명령어들을 실행하는 적어도 하나의 코어; 및
    상기 적어도 하나의 코어에 연결되는 언코어(uncore) 로직
    을 포함하고,
    상기 언코어 로직은, 상기 적어도 하나의 코어로부터 메모리 액세스 요청들을 수신하여 상기 메모리 액세스 요청들을 상기 프로세서에 연결되는 로컬 메모리에 라우팅하고, 상기 메모리 액세스 요청들에 대응하는 스누프 요청들을 상기 프로세서에 연결되는 적어도 하나의 원격 프로세서에 라우팅하는 제1 수단을 포함하고, 상기 제1 수단은, 상기 적어도 하나의 원격 프로세서로부터의 상기 스누프 요청들에 대한 응답들의 수신 및 상기 로컬 메모리로부터의 상기 메모리 액세스 요청들에 대한 응답들의 수신 사이의 차분에 관한 레이턴시 정보를 유지하는 프로세서.
  2. 제1항에 있어서,
    상기 제1 수단은, 대응 메모리 액세스 요청에 관한 상기 로컬 메모리로부터의 응답 이후 스누프 요청에 관한 원격 프로세서로부터의 응답이 수신된 인스턴스들의 수의 카운트를 유지하는 제1 카운터 수단을 포함하는 프로세서.
  3. 제2항에 있어서,
    상기 제1 수단은 인스턴스 당 상기 제1 카운터 수단을 증분하는 프로세서.
  4. 제2항에 있어서,
    상기 제1 수단은 상기 인스턴스들의 수에 대한 사이클들의 수의 카운트를 유지하는 제2 카운터 수단을 포함하는 프로세서.
  5. 제4항에 있어서,
    상기 제1 수단은 상기 로컬 메모리로부터의 응답 이후 상기 원격 프로세서로부터의 응답이 수신된 지연의 사이클들의 수만큼 각각의 인스턴스에 대해 상기 제2 카운터 수단을 업데이트하는 프로세서.
  6. 제4항에 있어서,
    상기 레이턴시 정보를 수신하고, 상기 레이턴시 정보에 응답하여, 상기 적어도 하나의 원격 프로세서에 상기 프로세서와 상기 적어도 하나의 원격 프로세서 사이의 주파수 조정(frequency coordination)을 요청하는 통신 요청을 생성하는 전력 제어 수단을 더 포함하는 프로세서.
  7. 제6항에 있어서,
    상기 전력 제어 수단은, 상기 제1 카운터 수단 및 상기 제2 카운터 수단을 판독하고, 적어도 상기 제1 및 제2 카운터 수단들에 기초하여 상기 요청을 생성하는 프로세서.
  8. 제1항에 있어서,
    상기 프로세서 및 상기 적어도 하나의 원격 프로세서는 멀티프로세서 플랫폼의 것인 프로세서.
  9. 제1항에 있어서,
    상기 적어도 하나의 원격 프로세서로부터 주파수 조정 요청을 수신하고, 상기 주파수 조정 요청에 응답하여 상기 언코어 로직에 대한 주파수를 업데이트하는 언코어 주파수 제어 수단을 더 포함하는 프로세서.
  10. 제9항에 있어서,
    상기 언코어 주파수 제어 수단은, 상기 프로세서에 연결되는 프로세서로부터 복수의 주파수 조정 요청들 각각을 수신하고, 상기 복수의 주파수 조정 요청의 최대 요청된 주파수보다 적어도 하나의 빈 주파수(bin frequency) 만큼 적은 주파수에 대응하는 상기 언코어 로직에 대한 업데이트된 주파수를 선택하는 프로세서.
  11. 방법으로서,
    프로세서에 연결되는 제1 메모리에 메모리 액세스 요청을 보내는 것에 응답하여 상기 프로세서의 제1 로직에서 제1 응답을 수신하고, 상기 프로세서에 연결되는 원격 프로세서에 스누프 요청을 보내는 것에 응답하여 상기 제1 로직에서 제2 응답을 수신하는 단계;
    상기 제1 응답의 수신과 상기 제2 응답의 수신 사이의 지연에 기초하여 제1 카운터 및 제2 카운터를 업데이트하는 단계; 및
    상기 메모리 액세스 요청에 응답하여 취득되는 데이터를 요청자에게 제공하는 단계
    를 포함하는 방법.
  12. 제11항에 있어서,
    상기 제1 카운터를 상기 지연의 인스턴스 당 증분하는 단계를 더 포함하고, 상기 제1 카운터는, 메모리 액세스 요청에 대한 상기 제1 메모리로부터의 대응 응답 이후 스누프 요청에 대한 상기 원격 프로세서로부터의 응답이 수신된 인스턴스들의 수의 카운트를 유지하는 방법.
  13. 제12항에 있어서,
    각각의 인스턴스에 대해 상기 제2 카운터를 상기 지연의 사이클들의 수만큼 증분하는 단계를 더 포함하고, 상기 제2 카운터는 상기 인스턴스들의 수에 대한 사이클들의 수의 카운트를 유지하는 방법.
  14. 제11항에 있어서,
    상기 제1 카운터의 값 및 상기 제2 카운터의 값에 응답하여, 상기 원격 프로세서에 주파수 조정을 요청하는 통신 요청을 생성하는 단계를 더 포함하는 방법.
  15. 제11항에 있어서,
    상기 원격 프로세서로부터 상기 프로세서에서 주파수 업데이트 요청을 수신하는 단계; 및
    상기 주파수 업데이트 요청에 응답하여 상기 프로세서의 언코어 로직의 주파수를 업데이트하는 단계- 상기 업데이트된 주파수는 상기 프로세서에 의해 실행중인 작업부하에 기초하여 상기 프로세서의 전력 제어기에 의해 결정되는 주파수보다 큰 값임 -를 더 포함하는 방법.
  16. 시스템으로서,
    명령어들을 실행하는 적어도 하나의 코어, 상기 적어도 하나의 코어에 연결되는 언코어 로직, 상기 적어도 하나의 코어에 연결되어 상기 적어도 하나의 코어의 전력 소비 레벨을 제어하는 PCU(Power Control Unit)- 상기 PCU는, 제2 프로세서로부터 주파수 조정 요청을 수신하고, 상기 주파수 조정 요청에 응답하여 상기 언코어 로직에 대한 주파수를 업데이트하는 언코어 주파수 제어 수단을 포함함 -, 및 상호접속을 통해 상기 제2 프로세서로부터 상기 주파수 조정 요청을 수신하는 통신 인터페이스를 포함하는 제1 프로세서;
    상기 상호접속을 통해 상기 제1 프로세서에 연결되고, 제2 언코어 로직, 제2 코어, 및 상기 제1 프로세서로부터 수신되는 스누프 요청에 대한 응답의 수신과 제2 프로세서에 연결되는 제2 로컬 메모리로부터 수신되는 메모리 액세스 요청에 대한 대응 응답의 수신 사이의 레이턴시를 판정하는 레이턴시 검출 수단을 포함하는 제2 프로세서- 상기 제2 프로세서는 상기 레이턴시에 적어도 일부 기초하여 상기 주파수 조정 요청을 생성함 -; 및
    상기 제1 프로세서, 및 상기 제2 프로세서에 연결된 제2 로컬 메모리에, 연결되는 제1 로컬 메모리를 포함하는 시스템.
  17. 제16항에 있어서,
    상기 제2 프로세서는, 상기 제2 코어로부터 상기 메모리 액세스 요청을 수신하여 상기 메모리 액세스 요청을 상기 제2 로컬 메모리에 라우트하고, 상기 스누프 요청을 상기 제1 프로세서에 라우트하는 상기 레이턴시 검출 수단을 포함하는 홈 에이전트(home agent)를 더 포함하는 시스템.
  18. 제16항에 있어서,
    상기 레이턴시 검출 수단은,
    대응 메모리 액세스 요청에 관한 상기 제2 로컬 메모리로부터의 응답 이후 스누프 요청에 관한 상기 제1 프로세서로부터의 응답이 수신된 인스턴스들의 수의 카운트를 유지하는 제1 카운터; 및
    상기 인스턴스들의 수에 대해 사이클들의 수의 카운트를 유지하는 제2 카운터를 포함하는 시스템.
  19. 제18항에 있어서,
    상기 레이턴시 검출 수단은, 인스턴스 당 상기 제1 카운터를 업데이트하고, 상기 제2 로컬 메모리로부터의 응답 이후 상기 제1 프로세서로부터의 응답이 수신된 지연의 사이클들의 수만큼 각각의 인스턴스에 대해 상기 제2 카운터를 업데이트하는 시스템.
  20. 제16항에 있어서,
    상기 제2 프로세서는, 상기 레이턴시에 관한 정보를 수신하고, 상기 레이턴시 정보에 응답하여 상기 주파수 조정 요청을 생성하는 제2 언코어 주파수 제어 수단을 더 포함하는 시스템.
  21. 제16항에 있어서,
    상기 제1 프로세서는, 상기 제1 프로세서에 연결되는 프로세서로부터 복수의 주파수 조정 요청들 각각을 수신하고, 상기 복수의 주파수 조정 요청의 최대 요청된 주파수보다 적어도 하나의 빈 주파수(bin frequency) 만큼 적은 주파수에 대응하는 업데이트된 주파수를 선택하여, 상기 선택된 업데이트된 주파수를 상기 프로세서들 각각에 통신하는 시스템.
  22. 제16항에 있어서,
    상기 업데이트된 언코어 로직 주파수에 응답하여, 상기 제2 프로세서의 홈 에이전트는, 상기 제1 프로세서로부터 제2 스누프 요청에 대한 제2 응답, 및 상기 제2 로컬 메모리로부터 제2 메모리 액세스 요청에 대한 대응 제2 응답을 실질적으로 동시에 수신하는 시스템.
KR1020157010307A 2012-12-17 2013-06-27 응답 타이밍 최적화에 기초하는 멀티프로세서 시스템에서의 주파수 조정 수행 KR101672357B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/716,801 US9292468B2 (en) 2012-12-17 2012-12-17 Performing frequency coordination in a multiprocessor system based on response timing optimization
US13/716,801 2012-12-17
PCT/US2013/048079 WO2014099016A1 (en) 2012-12-17 2013-06-27 Performing frequency coordination in a multiprocessor system based on response timing optimization

Publications (2)

Publication Number Publication Date
KR20150059176A KR20150059176A (ko) 2015-05-29
KR101672357B1 true KR101672357B1 (ko) 2016-11-03

Family

ID=50932390

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157010307A KR101672357B1 (ko) 2012-12-17 2013-06-27 응답 타이밍 최적화에 기초하는 멀티프로세서 시스템에서의 주파수 조정 수행

Country Status (4)

Country Link
US (1) US9292468B2 (ko)
KR (1) KR101672357B1 (ko)
CN (1) CN104956345B (ko)
WO (1) WO2014099016A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106020422A (zh) * 2016-05-24 2016-10-12 英业达科技有限公司 计算机系统的功耗控制方法及系统
CN110419030B (zh) * 2016-09-28 2024-04-19 英特尔公司 测量非均匀存储器访问(numa)系统内按节点的带宽
US11561895B2 (en) * 2019-09-05 2023-01-24 Advanced Micro Devices, Inc. Oldest operation wait time indication input into set-dueling
US11271860B1 (en) * 2019-11-15 2022-03-08 Xilinx, Inc. Compressed tag coherency messaging

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6928517B1 (en) 2000-08-30 2005-08-09 Unisys Corporation Method for avoiding delays during snoop requests

Family Cites Families (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163153A (en) 1989-06-12 1992-11-10 Grid Systems Corporation Low-power, standby mode computer
US5522087A (en) 1994-03-22 1996-05-28 Verifone Inc. System for selectively operating in different modes depending upon receiving signal from a host computer within a time window upon power up
US5590341A (en) 1994-09-30 1996-12-31 Intel Corporation Method and apparatus for reducing power consumption in a computer system using ready delay
US5621250A (en) 1995-07-31 1997-04-15 Ford Motor Company Wake-up interface and method for awakening an automotive electronics module
US5931950A (en) 1997-06-17 1999-08-03 Pc-Tel, Inc. Wake-up-on-ring power conservation for host signal processing communication system
US6449291B1 (en) * 1998-11-24 2002-09-10 3Com Corporation Method and apparatus for time synchronization in a communication system
US6823516B1 (en) 1999-08-10 2004-11-23 Intel Corporation System and method for dynamically adjusting to CPU performance changes
US7539885B2 (en) 2000-01-13 2009-05-26 Broadcom Corporation Method and apparatus for adaptive CPU power management
US7010708B2 (en) 2002-05-15 2006-03-07 Broadcom Corporation Method and apparatus for adaptive CPU power management
JP2001318742A (ja) 2000-05-08 2001-11-16 Mitsubishi Electric Corp コンピュータシステムおよびコンピュータ読み取り可能な記録媒体
KR100361340B1 (ko) 2000-05-15 2002-12-05 엘지전자 주식회사 씨피유 클럭 제어 방법
US6792392B1 (en) 2000-06-30 2004-09-14 Intel Corporation Method and apparatus for configuring and collecting performance counter data
US6748546B1 (en) 2000-09-26 2004-06-08 Sun Microsystems, Inc. Method and apparatus for reducing power consumption
US6829713B2 (en) 2000-12-30 2004-12-07 Intel Corporation CPU power management based on utilization with lowest performance mode at the mid-utilization range
US7058824B2 (en) 2001-06-15 2006-06-06 Microsoft Corporation Method and system for using idle threads to adaptively throttle a computer
US20030061383A1 (en) 2001-09-25 2003-03-27 Zilka Anthony M. Predicting processor inactivity for a controlled transition of power states
US7111179B1 (en) 2001-10-11 2006-09-19 In-Hand Electronics, Inc. Method and apparatus for optimizing performance and battery life of electronic devices based on system and application parameters
US6996728B2 (en) 2002-04-26 2006-02-07 Hewlett-Packard Development Company, L.P. Managing power consumption based on utilization statistics
US20040019777A1 (en) 2002-06-14 2004-01-29 Wygant Laurance F. Sharing data using a configuration register
US7051227B2 (en) 2002-09-30 2006-05-23 Intel Corporation Method and apparatus for reducing clock frequency during low workload periods
US6898689B2 (en) 2002-11-15 2005-05-24 Silicon Labs Cp, Inc. Paging scheme for a microcontroller for extending available register space
US7043649B2 (en) 2002-11-20 2006-05-09 Portalplayer, Inc. System clock power management for chips with multiple processing modules
US6971033B2 (en) 2003-01-10 2005-11-29 Broadcom Corporation Method and apparatus for improving bus master performance
JP2006518064A (ja) 2003-01-23 2006-08-03 ユニバーシティー オブ ロチェスター マルチクロックドメインを有するマイクロプロセッサ
JP4061492B2 (ja) 2003-02-10 2008-03-19 ソニー株式会社 情報処理装置および消費電力制御方法
US7093147B2 (en) 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
US7272732B2 (en) 2003-06-30 2007-09-18 Hewlett-Packard Development Company, L.P. Controlling power consumption of at least one computer system
TW200502847A (en) 2003-07-08 2005-01-16 Benq Corp Control device and method for reducing number of interrupts in a processor
US7146514B2 (en) 2003-07-23 2006-12-05 Intel Corporation Determining target operating frequencies for a multiprocessor system
US7272730B1 (en) 2003-07-31 2007-09-18 Hewlett-Packard Development Company, L.P. Application-driven method and apparatus for limiting power consumption in a processor-controlled hardware platform
US7194643B2 (en) 2003-09-29 2007-03-20 Intel Corporation Apparatus and method for an energy efficient clustered micro-architecture
US7770034B2 (en) 2003-12-16 2010-08-03 Intel Corporation Performance monitoring based dynamic voltage and frequency scaling
US7194598B2 (en) 2004-01-26 2007-03-20 Nvidia Corporation System and method using embedded microprocessor as a node in an adaptable computing machine
US20070156992A1 (en) 2005-12-30 2007-07-05 Intel Corporation Method and system for optimizing latency of dynamic memory sizing
US7451333B2 (en) 2004-09-03 2008-11-11 Intel Corporation Coordinating idle state transitions in multi-core processors
US9001801B2 (en) 2004-09-07 2015-04-07 Broadcom Corporation Method and system for low power mode management for complex Bluetooth devices
US7941585B2 (en) 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
US7426648B2 (en) 2004-09-30 2008-09-16 Intel Corporation Global and pseudo power state management for multiple processing elements
US8332592B2 (en) * 2004-10-08 2012-12-11 International Business Machines Corporation Graphics processor with snoop filter
US7305524B2 (en) 2004-10-08 2007-12-04 International Business Machines Corporation Snoop filter directory mechanism in coherency shared memory system
US7308590B2 (en) 2004-10-15 2007-12-11 Intel Corporation Automatic dynamic processor operating voltage control
US7434073B2 (en) 2004-11-29 2008-10-07 Intel Corporation Frequency and voltage scaling architecture
US7502948B2 (en) 2004-12-30 2009-03-10 Intel Corporation Method, system, and apparatus for selecting a maximum operation point based on number of active cores and performance level of each of the active cores
US7404046B2 (en) 2005-02-10 2008-07-22 International Business Machines Corporation Cache memory, processing unit, data processing system and method for filtering snooped operations
US8041967B2 (en) 2005-02-15 2011-10-18 Hewlett-Packard Development Company, L.P. System and method for controlling power to resources based on historical utilization data
US7454632B2 (en) 2005-06-16 2008-11-18 Intel Corporation Reducing computing system power through idle synchronization
US7430673B2 (en) 2005-06-30 2008-09-30 Intel Corporation Power management system for computing platform
US8301868B2 (en) 2005-09-23 2012-10-30 Intel Corporation System to profile and optimize user software in a managed run-time environment
US20070079294A1 (en) 2005-09-30 2007-04-05 Robert Knight Profiling using a user-level control mechanism
US20070106827A1 (en) 2005-11-08 2007-05-10 Boatright Bryan D Centralized interrupt controller
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
US7555664B2 (en) 2006-01-31 2009-06-30 Cypress Semiconductor Corp. Independent control of core system blocks for power optimization
US20070245163A1 (en) 2006-03-03 2007-10-18 Yung-Hsiang Lu Power management in computer operating systems
US7437270B2 (en) 2006-03-30 2008-10-14 Intel Corporation Performance state management
US7752468B2 (en) 2006-06-06 2010-07-06 Intel Corporation Predict computing platform memory power utilization
US7581068B2 (en) 2006-06-29 2009-08-25 Intel Corporation Exclusive ownership snoop filter
US7529956B2 (en) 2006-07-17 2009-05-05 Microsoft Corporation Granular reduction in power consumption
US7930564B2 (en) 2006-07-31 2011-04-19 Intel Corporation System and method for controlling processor low power states
US7818596B2 (en) 2006-12-14 2010-10-19 Intel Corporation Method and apparatus of power management of processor
US7730340B2 (en) 2007-02-16 2010-06-01 Intel Corporation Method and apparatus for dynamic voltage and frequency scaling
WO2008117133A1 (en) 2007-03-26 2008-10-02 Freescale Semiconductor, Inc. Anticipation of power on of a mobile device
JP2008257578A (ja) 2007-04-06 2008-10-23 Toshiba Corp 情報処理装置、スケジューラおよび情報処理置のスケジュール制御方法
US7971074B2 (en) 2007-06-28 2011-06-28 Intel Corporation Method, system, and apparatus for a core activity detector to facilitate dynamic power management in a distributed system
US20090150696A1 (en) 2007-12-10 2009-06-11 Justin Song Transitioning a processor package to a low power state
US8024590B2 (en) 2007-12-10 2011-09-20 Intel Corporation Predicting future power level states for processor cores
US7966506B2 (en) 2007-12-12 2011-06-21 Intel Corporation Saving power in a computer system
US8442697B2 (en) 2007-12-18 2013-05-14 Packet Digital Method and apparatus for on-demand power management
KR101459140B1 (ko) 2007-12-26 2014-11-07 엘지전자 주식회사 전원관리 제어 장치 및 방법
US8156362B2 (en) 2008-03-11 2012-04-10 Globalfoundries Inc. Hardware monitoring and decision making for transitioning in and out of low-power state
US8732308B1 (en) * 2008-10-01 2014-05-20 Hewlett-Packard Development Company, L. P. Coordinated management in virtualized systems using management brokers and management channels
US8954977B2 (en) 2008-12-09 2015-02-10 Intel Corporation Software-based thread remapping for power savings
US8700943B2 (en) 2009-12-22 2014-04-15 Intel Corporation Controlling time stamp counter (TSC) offsets for mulitple cores and threads
US8943334B2 (en) * 2010-09-23 2015-01-27 Intel Corporation Providing per core voltage and frequency control
US8949637B2 (en) 2011-03-24 2015-02-03 Intel Corporation Obtaining power profile information with low overhead
US9026815B2 (en) 2011-10-27 2015-05-05 Intel Corporation Controlling operating frequency of a core domain via a non-core domain of a multi-domain processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6928517B1 (en) 2000-08-30 2005-08-09 Unisys Corporation Method for avoiding delays during snoop requests

Also Published As

Publication number Publication date
KR20150059176A (ko) 2015-05-29
CN104956345B (zh) 2017-11-07
CN104956345A (zh) 2015-09-30
US20140173248A1 (en) 2014-06-19
WO2014099016A1 (en) 2014-06-26
US9292468B2 (en) 2016-03-22

Similar Documents

Publication Publication Date Title
US9671854B2 (en) Controlling configurable peak performance limits of a processor
US10355966B2 (en) Managing variations among nodes in parallel system frameworks
US9405351B2 (en) Performing frequency coordination in a multiprocessor system
US9690353B2 (en) System and method for initiating a reduced power mode for one or more functional blocks of a processor based on various types of mode request
EP2894542B1 (en) Estimating scalability of a workload
KR102355989B1 (ko) 다중 노드 시스템 저전력 관리
US9665153B2 (en) Selecting a low power state based on cache flush latency determination
JP6333971B2 (ja) ジェネリックホストベースのコントローラレイテンシ方法及び装置
KR101672357B1 (ko) 응답 타이밍 최적화에 기초하는 멀티프로세서 시스템에서의 주파수 조정 수행
US9753531B2 (en) Method, apparatus, and system for energy efficiency and energy conservation including determining an optimal power state of the apparatus based on residency time of non-core domains in a power saving state
US9575543B2 (en) Providing an inter-arrival access timer in a processor
WO2014084842A1 (en) Enforcing a power consumption duty cycle in a processor
US10719107B2 (en) Method and apparatus to maintain node power budget for systems that share a power supply

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