KR20200100183A - 시스템-전반 저전력 관리 - Google Patents

시스템-전반 저전력 관리 Download PDF

Info

Publication number
KR20200100183A
KR20200100183A KR1020207021981A KR20207021981A KR20200100183A KR 20200100183 A KR20200100183 A KR 20200100183A KR 1020207021981 A KR1020207021981 A KR 1020207021981A KR 20207021981 A KR20207021981 A KR 20207021981A KR 20200100183 A KR20200100183 A KR 20200100183A
Authority
KR
South Korea
Prior art keywords
node
nodes
client
power
link
Prior art date
Application number
KR1020207021981A
Other languages
English (en)
Inventor
벤자민 첸
그레고리 디. 돈리
브라이언 피. 브루사드
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20200100183A publication Critical patent/KR20200100183A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • 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
    • G06F1/3209Monitoring remote activity, e.g. over telephone lines or network connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Abstract

다중 노드 컴퓨팅 시스템에 대한 효율적인 전력 관리를 수행하기 위한 시스템들, 장치들 및 방법들이 개시된다. 컴퓨팅 시스템은 다수의 노드를 포함한다. 전력 차단 협상이 분산될 때, 시스템-전반 전력 차단에 대한 협상은 노드 계층의 보다 상위 레벨에서 발생하는 전력 차단에 대한 협상 이전에 노드 계층의 보다 하위 레벨 내에서 발생한다. 전력 차단 협상이 중앙 집중되면, 소정의 노드는 그것의 클라이언트들의 상태를 그것의 다운스트림 링크에 상서 수신된 표시들과 조합하고 조합을 기반으로 업스트림 링크 상에 표시를 전송한다. 루트 노드만이 전력 차단 요청들을 전송한다.

Description

시스템-전반 저전력 관리
최신 집적 회로들의 전력 소비는 반도체 칩들의 각 세대에 따라 설계 문제가 증가되고 있다. 전력 소비가 증가함에 따라, 과잉 열을 제거하고 IC 고장을 방지하기 위해 더 큰 팬 및 방열판들과 같이 더 비싼 냉각 시스템들을 이용해야 한다. 그러나, 냉각 시스템들은 시스템 비용을 증가시킨다. IC 전력 손실 제약은 휴대용 컴퓨터들 및 이동 통신 디바이스들, 뿐만 아니라 고성능 마이크로 프로세서들을 이용하는 데스크탑 컴퓨터들 및 서버들에서도 문제가 된다. 이러한 마이크로 프로세서들에는 다수의 프로세서 코어, 또는 코어들, 및 코어 내의 다수의 파이프 라인이 포함된다.
다양한 서버와 같은 다양한 컴퓨팅 디바이스는 시스템 기능을 제공하기 위해 다수의 유형의 IC들을 통합하는 여러 다른 종류로 이뤄진 통합을 이용한다. 다수의 기능에는 오디오/비디오(A/V) 데이터 처리, 의약 및 비즈니스 분야를 위한 기타 높은 데이터 병렬 응용, 범용 명령어 잡헙 아키텍처(ISA, instruction set architecture)의 처리 명령들, 디지털, 아날로그, 혼합-신호 및 라디오-주파수(RF) 기능들 등이 포함된다. 다양한 유형의 IC를 통합하기 위해 시스템 패키징을 위한 다양한 선택이 존재한다. 일부 컴퓨팅 디바이스에서, 시스템 온 칩(SOC, system-on-a-chip)이 사용되는 반면, 다른 컴퓨팅 디바이스들에서는, 더 작고 높은 성능의 칩들이 멀티 칩 모듈들(MCM들, multi-chip modules)의 큰 칩들로 패키징된다. 일부 컴퓨팅 디바이스는 다이-스태킹 기술뿐만 아니라 실리콘 인터포저들, 실리콘 관통 비아들(TSV들, through silicon vias) 및 기타 메커니즘들을 이용하여 시스템 인 패키지(SiP, system-in-package)에 두 개 이상의 다이를 수직으로 스태킹하고 전기적으로 연결하는 3-차원 집적 회로들(3D IC들)을 포함한다.
시스템 패키징의 선택에 관계없이, 각각 선택된 패키지의 사본을 갖는 다수의 소켓을 갖는 컴퓨팅 시스템의 전력 차단은 복잡하다. 각 패키지는 전력 제어기를 포함하고 그에 따라, 시스템은 다수의 전력 제어기를 갖는다. 각 전력 제어기가 시스템에서의 서로 다른 전력 제어기에 연결된다면, 시스템의 전력을 차단할 때 통신이 쉬워진다. 그러나, 성능 증가를 위해 소켓 수를 증가시키는 것과 같이, 시스템을 스케일링하는 것은 어려워진다. 또한, 다수의 연결을 라우팅하면 소켓들 간 신호량이 증가하고 인터페이스들에 대한 영역이 증가한다.
상기를 고려하여, 다중 노드 컴퓨팅 시스템에 대한 효율적인 전력 관리를 수행하기 위한 효율적인 방법들 및 시스템들이 요구된다.
여기서 설명되는 방법들 및 메커니즘들의 이점들은 첨부 도면들과 함께 이하의 구체적인 내용을 참조함으로써 더 잘 이해될 수 있으며, 첨부 도면들에서:
도 1은 처리 노드의 일 실시 예의 블록도이다.
도 2는 다중 노드 컴퓨팅 시스템의 일 실시 예의 블록도이다.
도 3은 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법의 일 실시 예의 흐름도이다.
도 4는 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법의 다른 실시 예의 흐름도이다.
도 5는 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법의 다른 실시 예의 흐름도이다.
도 6은 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법의 다른 실시 예의 흐름도이다.
도 7은 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법의 다른 실시 예의 흐름도이다.
도 8은 다중 노드 컴퓨팅 시스템의 다른 실시 예의 블록도이다.
도 9는 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법의 다른 실시 예의 흐름도이다.
도 10은 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법의 다른 실시 예의 흐름도이다.
도 11은 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법의 다른 실시 예의 흐름도이다.
도 12는 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법의 다른 실시 예의 흐름도이다.
본 발명은 다양한 변형 예 및 대안적인 형태를 허용하지만, 구체적인 실시 예들이 도면들에 예로서 도시되며 본 명세서에서 상세히 설명된다. 그러나, 도면들 및 상세한 설명은 본 발명을 개시된 특정 형태로 제한하려는 것이 아니고, 반대로, 본 발명은 첨부된 청구범위에 의해 정의되는 바에 따라 본 발명의 범위 내에 속하는 모든 변형 예, 등가물 및 대안 예를 커버하는 것으로 이해되어야 한다.
이하의 구체적인 내용에서, 여기서 제시되는 방법들 및 메커니즘들에 대한 완전한 이해를 제공하기 위해 많은 구체적인 세부 사항이 제시된다. 그러나, 해당 기술분야의 통상의 기술자는 다양한 실시 예가 이러한 구체적인 세부 사항 없이도 실시될 수 있다는 것을 인식해야 한다. 경우에 따라서는, 주지된 구조들, 구성요소들, 신호들, 컴퓨터 프로그램 명령들 및 기술들이 본 명세서에 설명되는 접근법들을 모호하게 하는 것을 방지하기 위해 구체적으로 제시되지 않았다. 도시의 단순성 및 명료성을 위해, 도면들에 도시된 요소들은 반드시 일정한 비율로 그려진 것은 아니라는 것을 이해할 것이다. 예를 들어, 요소들 중 일부의 치수들은 그 외 다른 요소들에 비해 과장될 수 있다.
다중 노드 컴퓨팅 시스템에 대한 효율적인 전력 관리를 수행하기 위한 다양한 시스템, 장치, 방법 및 컴퓨터 판독 가능한 매체가 개시된다. 다양한 실시 예에서, 처리 노드는 어플리케이션들을 처리하기 위한 하나 이상의 클라이언트를 포함한다. 노드 내의 클라이언트들의 예들은 범용 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 가속 처리 유닛(APU), 입력/출력(I/O) 디바이스 등을 포함한다. 처리 노드는 또한 적어도 전력 제어기, 및 다른 노드들과 메시지들을 전달하기 위한 다수의 링크 인터페이스를 포함한다. 여기서 사용될 때, 처리 노드는 노드라고도 한다.
다양한 실시 예에서, 컴퓨팅 시스템은 둘 이상의 노드가 다른 노드들에 완전 연결되지 않는 다중 노드 시스템이다. 각 노드는 하나 이상의 클라이언트, 다수의 링크 인터페이스 및 전력 제어기를 포함한다. 각 노드는 노드들이 완전 연결되지 않음에도 불구하고 제1 노드가 다중 노드 시스템에서의 각 클라이언트가 유휴 상태에 있다고 결정할 때 그것의 링크들 및 그것의 클라이언트들의 전력을 차단할 수 있다. 일 실시 예에서, 다중 노드 컴퓨팅 시스템은 각 노드가 요청자인 계층적 토폴로지를 사용한다. 시스템-전반 전력 차단에 대한 협상이 분산된다. 각 노드는 계층의 저- 또는 제1-레벨의 하나 이상의 링크를 갖는다. 제1 레벨의 링크들을 그룹 내 노드들의 서브 세트를 서로 함께 직접 연결하는데 사용된다. 또한, 하나 이상의 노드는 계층의 보다 상위 또는 제2-레벨의 하나 이상의 링크를 갖는다. 제2 레벨의 링크들을 제1 그룹 내 제1 노드를 제2 그룹 내 제2 노드와 직접 연결하는데 사용된다. 시스템-전반 전력 차단이 분산될 때, 다수의 노드 중 임의의 노드가 시스템-전반 전력 차단을 개시하는 제1 노드일 수 있다. 전력 관리를 위해 분산 접근법을 사용하면, 시스템-전반 전력 차단에 대한 협상은 전력 차단에 대한 협상이 계층의 보다 보다 상위 레벨에서 계속되기 이전에 계층의 보다 하위 레벨 내에서 발생한다.
다른 실시 예들에서, 다중 노드 컴퓨팅 시스템은 하나 이상의 리프 노드, 단일 루트 노드 및 루트 노드와 하나 이상의 리프 노드 사이의 하나 이상의 중간 노드를 갖는 트리 계층을 포함한다. 각 중간 노드는 업스트림 노드에 직접 연결되고 다운스트림 노드에 직접 연결된다. 업스트림 방향은 루트 방향이라고도 하고, 다운스트림 방향은 리프 방향이라고도 한다. 시스템-전반 전력 차단에 대한 협상이 중앙 집중되고 그것은 루트 노드에 의해 수행된다. 전력 투입에 대한 협상은 분산된 상태로 유지되고 그것은 시스템에서의 임의의 노드들에 의해 개시된다. 다양한 실시 예에서, 분산 접근법 및 중앙 집중 접근법 각각은 시스템-전반 전력 차단을 수행하기 이전에 링크들의 전력을 차단하는 것을 방지하여, 후속 전력 투입 패널티를 제거하는 전력 관리에 대한 협상을 수행한다.
도 1을 참조하면, 처리 노드(100)의 일 실시 예의 개괄적인 블록도가 도시되어 있다. 도시된 바와 같이, 처리 노드(100)는 클라이언트(110), 메모리 제어기(130), 전력 제어기(170) 및 링크 인터페이스들(180) 각각 사이에 통신 패브릭(120)을 포함한다. 일부 실시 예에서, 처리 노드(100)의 구성요소들은 시스템 온 칩(SOC)과 같은, 집적 회로(IC) 상의 개별 다이들이다. 다른 실시 예에서, 구성요소들은 시스템인 패키지(SiP, system-in-package) 또는 다중 칩 모듈(MCM, multi-chip module)에서의 개별 다이들이다.
도시된 실시 예에서, 클라이언트들(110)은 중앙 처리 유닛(CPU)(112), 그래픽 처리 유닛(GPU)(114) 및 허브(116)를 포함한다. 허브(116)는 멀티미디어 엔진(118)과 통신하는데 사용된다. CPU(112), GPU(114) 및 멀티미디어 엔진(118)은 어플리케이션들을 처리할 수 있는 컴퓨팅 자원들의 예들이다. 도시되지는 않았지만, 다른 실시 예들에서, 다른 유형들의 컴퓨팅 자원들이 클라이언트들(110)에 포함된다. CPU(112)에서의 하나 이상의 프로세서 코어 각각은 소정의 선택된 명령어 집합 아키텍처(ISA, instruction set architecture)에 따라 명령들을 실행하기 위한 회로를 포함한다. 다양한 실시 예에서, CPU(112)에서의 프로세서 코어들 각각은 소정의 ISA의 명령들을 처리하는데 사용되는 슈퍼스칼라, 멀티-스레드 마이크로 아키텍처를 포함한다. 일 실시 예에서, GPU(114)는 상당 수의 병렬 실행 레인을 갖는 고 병렬 데이터 마이크로 아키텍처를 포함한다. 일 실시 예에서, 마이크로 아키텍처는 병렬 실행 레인들에 대해 단일 명령 다중 데이터(SIMD, single-instruction-multiple-data) 파이프라인을 사용한다. 멀티미디어 엔진(118)은 멀티미디어 어플리케이션들에 대한 오디오 데이터 및 시각 데이터를 처리하기 위한 프로세서들을 포함한다.
다양한 실시 예에서, 통신 패브릭(120)은 컴퓨팅 자원들(110)과 메모리 제어기(130) 사이에서 트래픽을 주고받으며 각각의 통신 프로토콜들을 지원하기 위한 인터페이스들을 포함한다. 일부 실시 예에서, 통신 패브릭(120)은 적어도 요청들 및 응답들을 저장하기 위한 큐들, 내부 네트워크에 걸쳐 요청들을 전송하기 전에 수신된 요청들 사이에서 중재하기 위한 선택 로직, 패킷들을 구축 및 디코딩하기 위한 로직 및 패킷에 대한 경로들을 선택하기 위한 로직을 포함한다.
단일 메모리 제어기(130)가 도시되어 있지만, 다른 실시 예들에서는, 다른 수의 메모리 제어기가 처리 노드(100)에 사용된다. 다양한 실시 예에서, 메모리 제어기(130)는 통신 패브릭(120)을 통해 클라이언트들(110)로부터 메모리 요청들을 수신하고, 메모리 요청들을 스케줄링하며, 스케줄링된 메모리 요청들을 시스템 메모리 및 메인 메모리 중 하나 이상으로 전송한다. 메모리 제어기(130)는 또한 시스템 메모리 및 메인 메모리로부터 응답들을 수신하고 클라이언트들(110)에서 요청의 대응하는 소스로 응답들을 전송한다. 다양한 실시 예에서, 시스템 메모리는 I/O 제어기 및 버스(160) 및 메모리 버스(150)를 통해 메인 메모리로부터의 데이터로 채워진다. 요청된 블록을 갖는 대응하는 캐시 필 라인은 원래의 메모리 요청을 완료하기 위해 메인 메모리로부터 클라이언트들(110)에서의 캐시 메모리 서브 시스템들 중 대응하는 것으로 전달된다. 캐시 필 라인은 하나 이상의 레벨의 캐시에 배치된다.
일부 실시 예에서, 처리 노드(100)의 어드레스 공간은 적어도 CPU(112), GPU(114) 및 허브(116) 및 하나 이상의 다른 구성요소 이를테면 입력/출력(I/O) 주변 디바이스(도시되지 않음) 및 다른 유형의 컴퓨팅 자원들 중에 배분된다. 어느 어드레스들이 어느 구성요소에 매핑되는지, 그리고 그로 인해 특정 어드레스에 대한 메모리 요청이 CPU(112), GPU(114) 및 허브(116) 중 어디로 라우팅되어야 하는지를 결정하기 위해 메모리 맵들이 유지된다. 일 실시 예에서, 시스템 메모리는 다양한 동적 랜덤 액세스 메모리(DRAM) 중 하나이고 대응하는 프로토콜은 메모리 제어기(130)에 의해 지원된다. 프로토콜은 클록 사이클당 데이터 전달 수, 신호 전압 레벨, 신호 타이밍, 신호 및 클록 위상 및 클록 주파수와 같은 정보 전송에 사용되는 값들을 결정한다. 일부 실시 예에서, 메인 메모리는 데이터의 다양한 유형의 비휘발성 랜덤 액세스 보조 저장 장치 중 하나이다. 메인 메모리의 예들은 하드 디스크 드라이브(HDD) 및 고체 상태 디스크(SSD)이다.
링크 인터페이스들(180)은 링크들 상에 메시지들을 전달함으로써 처리 노드(100)와 다른 처리 노드들 간의 통신을 지원한다. 다양한 실시 예에서, 노드들 사이의 링크들을 통해 전송되는 메시지들은 하나 이상의 노드에 대한 작동 상태의 표시, 전력 차단 요청, 요청들에 대한 응답들, 인터럽트들 및 다른 정보를 포함한다. 다양한 실시 예에서, 각 링크는 두 노드 사이의 포인트-투-포인트 통신 채널이다. 물리적 레벨에서, 링크는 하나 이상의 레인을 포함한다. 일부 실시 예에서, 링크 인터페이스들(180), 대응하는 링크들 및 다른 노드들은 PCIe(Peripheral Component Interconnect Express), InfiniBand, RapidIO, HyperTransport 등과 같은 통신 프로토콜 연결들을 포함한다. 일부 실시 예에서, 링크 인터페이스들(180)은 인터커넥트 링크들을 통해 다른 노드들과 통신하는데 사용되는 제어 로직 및 버퍼들 또는 큐들을 포함한다.
일 실시 예에서, 전력 제어기(170)는 클라이언트들(110)로부터 데이터를 수집한다. 일부 실시 예에서, 전력 제어기(170)는 또한 메모리 제어기(110)로부터 데이터를 수집한다. 일부 실시 예에서, 수집된 데이터는 미리 결정된 샘플링된 신호들을 포함한다. 샘플링된 신호들의 전환은 전환된 정전 용량의 양을 나타낸다. 샘플링할 선택된 신호들의 예들은 클록 게이터 인에이블 신호들, 버스 드라이버 인 에이블 신호들, 내용 주소화 메모리들(CAM, content-addressable memories)에서의 불일치, CAM 워드-라인(WL) 드라이버들 등을 포함한다. 일 실시 예에서, 전력 제어기(170)는 소정의 샘플 간격들 동안 노드(100)에서 전력 소비를 특성화하기 위한 데이터를 수집한다.
일부 실시 예에서, 노드(100)에서의 온-다이 전류 센서들 및 온도 센서들은 또한 전력 제어기(170)에 정보를 전송한다. 전력 제어기(170)는 노드(100)에 대한 전력 소비 추정에 센서 정보, 발행된 명령들 또는 발행된 스레드들의 수 및 가중 샘플링된 신호들의 합산을 중 하나 이상을 사용한다. 전력 제어기(170)는 노드(100)가 임계 한계 초과(미만)으로 작동하는 경우 전력 소비를 감소(또는 증가)시킨다. 일부 실시 예에서, 전력 제어기(170)는 클라이언트들(110)에서의 컴퓨팅 자원들 각각에 대한 각각의 전력-성능 상태(P-상태)를 선택한다. P-상태는 적어도 작동 전압 및 작동 클록 주파수를 포함한다. 다양한 실시 예에서, 전력 제어기(170) 및 노드(100)는 N개의 P-상태(N은 0이 아닌 양의 정수)를 지원한다.
다양한 실시 예에서, 전력 제어기(170)는 클라이언트(110)들 중 하나 이상의 클라이언트가 유휴 상태가 되는 때를 검출한다. 클라이언트들(110) 각각이 유휴 상태가 된다면, 전력 제어기(170)는 이러한 정보를 링크 인터페이스들(180)을 통해 하나 이상의 노드에 중계한다. 일부 실시 예에서, 전력 제어기(170)가 하나의 링크 상에 정보를 전송하는지 또는 다수의 링크 상에 정보를 전송하는지는 시스템-전반 전력 차단 협상이 분산되는지 또는 중앙 집중되는지에 기초한다.
예를 들어, 다양한 실시 예에서, 노드(100)는 다중 노드 시스템에서 다수의 노드 중 하나의 노드이다. 일 실시 예에서, 시스템은 다수의 서버 중 하나의 서버이다. 서버들에 배치(batch)로서 전송된 작업들이 각 서버에 부여되지 않은 경우들이 있다. 소정의 서버는 감지할 수 있을 정도의 시간량 동안 유휴 상태가 될 수 있다. 전력 소비를 감소시키기 위해, 서버 내 다수의 노드의 전원이 차단될 수 있다. 그러나, 하나 이상의 노드가 서로 직접 연결되어 있지 않기 때문에, 전원 차단을 위한 노드 내 전력 제어기들 간 통신이 간단하지 않다. 시스템-전반 전력 차단 협상을 위한 분산 접근법 및 중앙 집중 접근법 각각은 다음 설명에서 제공된다.
도 2를 참조하면, 다중 노드 컴퓨팅 시스템(200)의 일 실시 예의 개괄적인 블록도가 도시되어 있다. 도시된 실시 예에서, 패키지(210)는 링크(240)에 의해 서로 직접 연결된 노드들(220A 및 220B)을 포함한다. 일부 실시 예에서, 패키지(210 및 230) 각각은 서버에서 멀티-소켓 마더 보드의 소켓에 배치된 멀티 칩 모듈(MCM)이다. 도시된 바와 같이, 노드(220A)는 클라이언트들(222A-222C) 및 전력 제어기(224)를 포함한다. 링크 인터페이스들, 통신 패브릭, 메모리 인터페이스, 위상 고정 루프들(PLL들) 또는 다른 클록 생성 회로는 설명의 편의를 위해 도시되어 있지 않다. 클라이언트들(222A-222C)의 예들은 CPU, GPU, 멀티미디어 엔진, I/O 주변 디바이스 등이다. 다양한 실시 예에서, 전력 제어기(224)는 전력 제어기(170)(도 1의)의 기능을 갖는다.
일 실시 예에서, 링크들(240-246)은 PCIe, InfiniBand, RapidIO, HyperTransport 등과 같은 통신 프로토콜 연결들을 이용한다. 일부 실시 예에서, 컴퓨팅 시스템(200)은 링크들(240-246) 외에 노드들(220A-220D) 사이의 다른 링크들을 포함한다. 일 실시 예에서, 이러한 다른 링크들은 서비스 요청들로의 데이터 전달을 위해 사용되는 반면, 링크들(240-246)은 시스템-전반 전력 차단을 협상하기 위한 메시지들과 같은 메시징을 위해 사용된다.
다양한 실시 예에서, 컴퓨팅 시스템(200)은 노드들(220A-220D) 각각이 요청자인 계층적 토폴로지를 사용한다. 제1 레벨의 링크들을 그룹 또는 클러스터 내 노드들(220A-220D)의 서브 세트를 서로 함께 직접 연결하는데 사용된다. 예를 들어, 노드(220A)는 제1-레벨 링크(240)를 통해 패키지(210)에서의 노드(220B)에 직접 연결된다. 유사하게, 노드(220C)는 제1-레벨 링크(242)를 통해 패키지(230)에서의 노드(220D)에 직접 연결된다. 제2 레벨의 링크들을 제1 클러스터 내 제1 노드를 제2 클러스터 내 제2 노드와 직접 연결하는데 사용된다. 예를 들어, 패키지(210)에서의 노드(220A)가 제2-레벨 링크(244)를 통해 패키지(230)에서의 노드(220C)에 직접 연결된다. 그러나, 노드(220A)는 패키지(230)에서의 노드(220D)에 직접 연결되지 않는다. 유사하게, 패키지(210)에서의 노드(220B)는 제2-레벨 링크(246)를 통해 패키지(230)에서의 노드(220D)에 직접 연결된다. 그러나, 노드(220B)는 패키지(230)에서의 노드(220C)에 직접 연결되지 않는다. 제2-레벨 링크들(224 및 246)은 제1-레벨 링크들(240 및 242)보다 계층에서 상위 레벨이다.
전력 관리를 위해 분산 접근법을 사용하면, 컴퓨팅 시스템(200)에서의 시스템-전반 전력 차단에 대한 협상은 전력 차단에 대한 협상이 계층의 보다 보다 상위 레벨에서 계속되기 이전에 계층의 보다 하위 레벨 내에서 발생한다. 도시된 실시 예에서, 노드들(220A-220D) 각각은 두 개의 링크를 갖는다. 예를 들어, 노드(220A)는 링크들(240 및 244)을 갖는다. 그러나, 다른 실시 예들에서, 패키지들에서의 다른 수의 노드 및 다른 수의 링크가 사용된다.
일 실시 예에서, 노드(220A)의 전력 제어기(224)는 노드들(220A-220D)의 제1 서브 세트에서의 각 클라이언트가 유휴 상태에 있음을 명시하는 표시를 제2-레벨 링크(244) 상에 노드(220C)로 전송할 수 있다. 노드(220C)는 노드(220A)에 연결된 임의의 다른 노드들에 연결되지 않는다. 노드들의 제1 서브 세트는 노드(220A) 및 노드(220B)를 포함한다. 노드(220A)의 전력 제어기(224)는 전력 제어기(224)가 클라이언트들(222A-222C) 각각이 유휴 상태에 있다고 결정할 때 이러한 표시를 노드(220C)로 전송하고 다수의 노드의 제1 서브 세트보다 작은 제2 서브 세트에서의 각 클라이언트가 유휴 상태에 있다는 표시가 제1-레벨 링크(240) 상에서 노드(220B)로부터 수신된다. 이러한 예에서, 제2 서브 세트는 노드(220B)에서의 각 클라이언트를 포함한다.
노드(220A)가 소정의 서브 세트 노드들에서의 각 클라이언트다 유휴 상태에 있다는 표시를 그것의 링크들(240 및 244) 각각 상에서 수신하고 전력 제어기(224)가 클라이언트들(222A-222C) 각각이 유휴 상태에 있다고 결정할 때, 노드(220A)의 전력 제어기(224)는 노드(220B) 및 노드(220C)와 같은 서로 직접 연결된 이웃 노드의 전력을 차단하기 위한 요청을 전송할 수 있다. 다른 노드들(220B-220D)에서의 전력 제어기들은 전력 차단 요청들을 유사한 방식으로 전송할 수 있다.
이제 도 3을 참조하면, 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법(300)의 일 실시 예가 도시되어 있다. 논의를 위해, 이 실시 예(도 4 내지 7 및 도 9 내지 12 뿐만 아니라)에서의 단계들은 순차적인 순서로 도시되어 있다. 그러나, 설명되는 방법들의 다양한 실시 예에서, 설명되는 요소들 중 하나 이상의 요소가 동시에, 도시된 것과 상이한 순서로 또는 완전히 생략됨이 주의된다. 그 외 다른 추가 요소들이 또한 목적하는 대로 수행된다. 여기에 설명된 임의의 다양한 시스템 또는 장치가 방법(300)을 구현하도록 구성된다.
두 개 이상의 노드 각각이 제1-레벨 링크들을 사용하여 서로 완전 연결된 두 개 이상의 노드를 서브 세트로 배치된다(블록 302). 두 개 이상의 서브 세트는 제2-레벨 링크들을 이용하여 노드들 간 비-완전 연결되는 방식으로 연결된다(블록 304). 그러한 계층의 일례가 컴퓨팅 시스템(200)(도 2의)에 제공된다. 소정의 서브 세트 내 각 노드는 제2-레벨 링크를 통해 서로 다른 서브 세트에 연결되나, 소정의 서브 세트 내 각 노드는 다른 서브 세트에서의 서로 다른 노드에는 연결되지 않는다. 컴퓨팅 시스템(200)을 참조하여, 다른 서브 세트가 추가된다면, 패키지(210)에서의 노드들(220A 및 220B) 각각은 다른 서브 세트에서의 노드에 대한 추가 제2-레벨 링크를 갖는다. 동일한 연결이 패키지(230)에서의 노드들(220C 및 220D)에 대해서도 사용된다. 그에 따라, 다중 노드 시스템은 시스템에서의 각 노드가 시스템에서의 서로 다른 노드에 완전 연결되지 않기 때문에 크기가 효율적으로 스케일링된다. 시스템-전반 전력 차단이 분산된다. 다수의 노드 중 임의의 노드는 시스템-전반 전력 차단을 개시할 수 있다. 시스템-전반 전력 차단에 대한 협상은 전력 차단에 대한 협상이 제2-레벨 링크들 상의 계층의 보다 상위 레벨에서 계속되기 이전에 제1-레벨 링크들 상의 노드 계층의 보다 하위 레벨 내에서 발생한다.
다수의 노드가 작업들을 처리한다(블록 306). 노드 내 하나 이상의 클라이언트는 컴퓨터 프로그램들, 또는 소프트웨어 어플리케이션들을 실행한다. 일부 실시 예에서, 다수의 노드는 다중 소켓 서버 내에 있고 배치 작업들(batch jobs)이 운영 체제에 의해 수신되며, 이는 작업들을 다수의 노드 중 하나 이상에 할당한다. 노드들에서의 전력 제어기들은 제2-레벨 링크들 상에서 적어도 계층적 통신에 기초하여 각 노드가 유휴 클라이언트들을 갖는지 여부를 결정한다(블록 308). 그에 따라, 크기가 효율적으로 스케일링될 수 있는 시스템에서 시스템-전반 전력 차단은 완전 연결된 노드들에 의존하지 않고 발생한다. 또한, 전력 관리에 대한 협상은 시스템-전반 전력 차단을 수행하기 이전에 링크들의 전력을 차단하는 것을 방지하여, 후속 전력 투입 패널티를 제거한다.
다중 노드 시스템에서의 하나 이상의 클라이언트가 비-유휴 상태에 있다고 결정된다면(조건 블록 310의 "아니오" 분기), 방법(300)의 제어 흐름은 다시 다수의 노드로 작업들이 처리되는 한편 하나 이상의 클라이언트가 비-유휴 상태에 있는 블록 306으로 되돌아간다. 컴퓨팅 시스템에서의 하나를 제외한 모든 노드가 단지 유휴 클라이언트들을 갖는다 하더라도, 전력 차단 요청들은 생성되지 않는다. 각 노드에서의 각 클라이언트가 유휴 상태에 있다고 결정된다면(조건 블록 310의 "예" 분기), 각 링크 및 각 노드의 각 클라이언트의 전력이 차단된다(블록 312). 다수의 노드가 서로 연결되지 않음에도 불구하고 시스템-전반 전력 차단이 발생한다. 다양한 실시 예에서 소정의 노드의 전력 차단은 링크 인터페이스들에 대한 드라이버들을 디스에이블하는 것, 클라이언트들에 대한 클록들을 디스에이블하는 것 그리고 DRAM이 사용될 때 시스템 메모리를 자기-리프레시를 수행하도록 설정하는 것 중 하나 이상을 포함한다.
이제 도 4를 참조하면, 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법(400)의 다른 실시 예가 도시되어 있다. 방법(300) 및 방법들(500-700)과 유사하게, 방법(400)에 대한 다중 노드 컴퓨팅 시스템도 각 노드가 요청자이고, 시스템-전반 전력 차단에 대한 협상이 분산되는 계층적 토폴로지를 사용한다. 예를 들어, 시스템-전반 전력 차단에 대한 협상은 전력 차단에 대한 협상이 제2-레벨 링크들 상의 계층의 보다 상위 레벨에서 계속되기 이전에 제1-레벨 링크들 상의 노드 계층의 보다 하위 레벨 내에서 발생한다. 시스템-전반 전력 차단에 대한 협상이 분산되면서 다수의 노드가 작업들을 처리한다(블록 402).
소정의 노드 상에서의 하나 이상의 비-유휴 클라이언트가 하나 이상의 작업을 처리한다(블록 404). 소정의 노드에서의 각 클라이언트가 유휴 상태가 된다면(조건 블록 406의 "예" 분기), 소정의 노드에서의 각 노드가 유휴 상태에 있음을 명시하는 표시가 각 제1-레벨 링크 상에 전송된다(블록 408). 이웃 노드에서의 각 클라이언트가 유휴 상태에 있음을 명시하는 응답이 각 제1-레벨 링크 상에서 수신된다면(조건 블록 410의 "예" 분기), 다수의 노드의 서브 세트에서의 각 클라이언트가 유휴 상태에 있음을 명시하는 표시가 각 제2-레벨 링크 상에 전송된다(블록 412). 따라서, 이 경우 계층적 통신은 응답들을 제공하는 노드들에서 클라이언트들이 유휴 상태 인 것으로 밝혀질 때에만 계속된다. 블록들 408-412의 단계들은 시스템-전반 전력 차단 협상의 계층의 다음 상위 레벨로의 전파를 게이팅한다.
이제 도 5를 참조하면, 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법(500)의 다른 실시 예가 도시되어 있다. 시스템-전반 전력 차단에 대한 협상이 분산되면서 다수의 노드가 작업들을 처리한다(블록 502). 제2 노드에서의 각 클라이언트가 유휴 상태임을 명시하는 표시가 제1 노드의 제1-레벨 링크 상에서 수신된다(블록 504). 제1 노드에서의 하나 이상이 클라이언트가 비-유휴 상태에 있다면(조건 블록 506의 "아니오" 분기), 제1 노드는 제1 노드에서의 하나 이상의 클라이언트가 비-유휴 상태임을 명시하는 표시로 제1-레벨 링크 상에서 제2 노드에 응답한다(블록 508). 제1 노드에서 각 클라이언트가 유휴 상태에 있다면(조건 블록 506의 "예" 분기), 제1 노드는 제1 노드에서의 각 클라이언트가 유휴 상태임을 명시하는 표시로 제1-레벨 링크 상에서 제2 노드에 응답한다(블록 510).
소정의 표시는 제2 노드에서의 각 클라이언트가 유휴 상태임을 명시하도록 제1 노드에서 업데이트된다(블록 512). 제1 노드 또는 제1-레벨 링크 상에 제1 노드에 연결된 임의의 노드에서 하나 이상의 클라이언트가 비-유휴 상태에 있다면(조건 블록 514의 "아니오" 분기), 방법(500)의 제어 흐름이 계층적 통신이 완료되는 블록(516)으로 이동한다.
제1 노드 및 제1-레벨 링크 상에 제1 노드에 연결된 임의의 노드에서 각 클라이언트가 유휴 상태에 있다면(조건 블록 514의 "예" 분기), 다수의 노드의 서브 세트에서의 각 클라이언트가 유휴 상태에 있음을 명시하는 표시가 각 제2-레벨 링크 상에 전송된다(블록 518). 예를 들어, 제1 노드 및 제1-레벨 링크들로 제1 노드에 완전 연결된 각 노드는 다수의 노드의 서브 세트이다. 간단히 도 2를 참조하면, 패키지(210)가 다수의 노드의 서브 세트이다. 일부 실시 예에서, 방법(500)은 노드(220B)가 노드(220A) 상에서의 클라이언트들(222A-222C)의 각 클라이언트가 유휴 상태임을 명시하는 표시를 제1-레벨 링크(240) 상에서 수신하고, 노드(220B)가 노드(220A)에 응답할 때 사용된다. 또한, 일부 실시 예에서, 노드(220B)는 노드(220B)가 노드(220B) 및 노드(220A) 각각이 어떠한 비-유휴 클라이언트도 갖지 않는다고 결정할 때 노드(220D)에 표시를 전송한다. 나아가, 일 실시 예에서, 방법(500)은 노드(220A)가 노드(220B) 상에서의 각 클라이언트가 유휴 상태임을 명시하는 표시를 제1-레벨 링크(240) 상에서 수신하고, 노드(220A)가 노드(220B)에 응답하여 노드(220C)에 표시를 조건부로 전송할 때 사용된다.
이제 도 6을 참조하면, 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법(600)의 다른 실시 예가 도시되어 있다. 시스템-전반 전력 차단에 대한 협상이 분산되면서 다수의 노드가 작업들을 처리한다(블록 602). 다수의 노드의 서브 세트에서의 각 클라이언트가 유휴 상태임을 명시하는 표시가 제1 노드의 제2-레벨 링크 상에서 수신된다(블록 604). 예를 들어, 서브 세트는 제2-레벨 링크들로 서로 완전 연결된 노드들의 그룹이다. 노드들(220A 및 220B)을 갖는 패키지(210)(도 2의)는 서브 세트의 일례이고 노드(220C)가 제2-레벨 링크(244) 상에서 표시를 수신한다.
제1 노드에서의 하나 이상이 클라이언트가 비-유휴 상태에 있다면(조건 블록 606의 "아니오" 분기), 제1 노드는 다수의 노드에서의 하나 이상의 클라이언트가 비-유휴 상태임을 명시하는 표시로 제2-레벨 링크 상에 응답한다(블록 608). 제1 노드에서의 각 클라이언트가 유휴 상태에 있다면(조건 블록 606의 "예" 분기), 다수의 노드의 서브 세트에서의 하나 이상의 클라이언트가 비-유휴 상태임을 명시하는 표시가 제1 노드에 의해 수신되었는지 여부가 제1 노드의 각 제1-레벨 링크에 대해 결정된다(블록 610). 제1 노드의 임의의 제1-레벨 링크가 그러한 표시를 수신했다면(조건 블록 612의 "예" 분기), 방법(600)의 제어 흐름은 제1 노드가 다수의 노드에서의 하나 이상의 클라이언트가 비-유휴 상태임을 명시하는 표시로 제2-레벨 링크 상에 응답하는 블록 608로 이동한다. 제1 노드의 어떠한 제1-레벨 링크도 그러한 표시를 수신하지 않았다면(조건 블록 612의 "아니오" 분기), 제1 노드는 다수의 노드의 서브 세트에서의 각 클라이언트가 유휴 상태에 있음을 명시하는 표시로 제2-레벨 링크 상에 응답한다(블록 614).
간단히 도 2를 참조하면, 패키지(230)는 다수의 노드의 서브 세트이다. 일부 실시 예에서, 방법(600)은 노드(220C)가 패키지(210)와 같은 서브 세트에서의 각 클라이언트가 유휴 상태에 있음을 명시하는 표시를 제2-레벨 링크(244) 상에서 수신할 때 사용된다. 노드(220C)는 노드(220C)의 클라이언트들이 유휴 상태인지 여부 그리고 제1-레벨 링크(242)상에서 노드(220D)로부터 수신된 표시에 기초하여 제2-레벨 링크(244) 상에서 노드(220A)에 응답한다.
이제 도 7을 참조하면, 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법(700)의 다른 실시 예가 도시되어 있다. 시스템-전반 전력 차단에 대한 협상이 분산된다. 적어도 각 로컬 클라이언트가 유휴 상태로 되고 응답들을 대기하고 있다는 결정에 기초한 표시들을 유휴 상태의 소정의 노드가 각 링크(제1-레벨 및 제2-레벨) 상에 전송한 후 다수의 노드로 작업들이 처리된다. 다양한 실시 예에서, 소정의 노드는 제2 레벨 링크들 상에 노드들에게 통지하기 이전에 제1 레벨 링크들 상에 노드들에게 초기에 통지한다. 다수의 노드에서의 하나 이상의 클라이언트가 비-유휴 상태에 있음을 명시하는 표시가 수신되었는지 여부가 각 링크에 대해 결정된다(블록 704).
소정의 노드의 임의의 링크(제1-레벨 또는 제2-레벨)가 그러한 표시를 수신했다면(조건 블록 706의 "예" 분기), 다수의 노드는 기상 조건들이 발생하는지 여부를 모니터링하면서 계속해서 작업들을 처리하고 링크에 이웃 노드들로부터 업데이트들을 응답한다(블록 708). 기상 조건들의 예들은 운영 체제로부터 할당된 작업들을 수신하는 것, 하나 이상의 비-유휴 클라이언트들이 있는 다른 노드로부터 로컬 캐시 프로브에 대한 원격 요청 또는 시스템 메모리에서의의 로컬 데이터에 대한 원격 메모리 요청을 수신하는 것 등의 하나 이상이다. 소정의 노드의 어떠한 링크(제1-레벨 또는 제2-레벨)도 응답들로 그러한 표시를 수신하지 않았다면(조건 블록 706의 "아니오" 분기), 소정의 노드의 각 링크 상에 전력 차단 요청이 전송된다(블록 710).
각 링크 상에서 전력 차단에 대한 응답이 수신되지 않는다면(조건 블록 712의 "아니오" 분기), 전력 차단에 대한 응답을 수신한 임의의 링크들의 전력이 차단된다(블록 714). 그 후, 방법(700)의 제어 흐름은 다수의 노드가 작업들을 처리하는 블록 708로 이동한다. 각 링크 상에서 전력 차단에 대한 응답들이 수신된다면(조건 블록 712의 "예" 분기), 각 링크 및 소정의 노드의 각 클라이언트의 전력이 차단된다(블록 714). 다른 노드들이 또한 이러한 단계들을 수행한다. 다수의 노드가 서로 연결되지 않음에도 불구하고 시스템-전반 전력 차단이 발생한다. 다양한 실시 예에서 소정의 노드의 전력 차단은 링크 인터페이스들에 대한 드라이버들을 디스에이블하는 것, 클라이언트들에 대한 클록들을 디스에이블하는 것, DRAM이 사용될 때 시스템 메모리를 자기-리프레시를 수행하도록 설정하는 것, 전력 제어기 이외의 노드에서 각 구성요소에 대한 클록들을 디스에이블하는 것, 메모리 제어기, 통신 패브릭, 메모리 및 입력/출력(I/O) 드라이버들, 네트워크 인터페이스들에 대한 클록들을 디스에이블하는 것에 더하여 전력 차단을 위한 다른 단계들을 수행하는 것 그리고 유지 전압을 선택하는 것 중 하나 이상을 포함한다.
다양한 실시 예에서, 소정의 노드가 소정의 링크 상에서 전력 차단 요청을 수신할 때, 소정의 노드는 그것의 각 클라이언트들이 유휴 상태에 있는지 여부를 결정한다. 만일 그렇다면, 소정의 노드는 소정의 링크 상에 전원 차단을 나타내는 응답으로 응답한다. 그 후, 소정의 노드는 소정의 링크의 전력을 차단한다. 또한, 소정의 노드는 소정의 노드의 서로 다른 링크(만약에 있다면) 상에 전력 차단 요청을 전송한다. 소정의 노드가 이러한 다른 링크들의 특정 링크 상에서 전력 차단 응답을 수신한다면, 소정의 노드는 이러한 특정 링크의 전력을 차단한다. 소정의 노드의 각 링크가 전력 차단 요청 및 전력 차단 응답 둘 다를 전달하였다면, 소정의 노드는 각 링크의 전력을 차단한다. 소정의 노드에서 각 링크의 전력이 차단될 때, 소정의 노드는 각 클라이언트의 전력 차단을 계속한다. 일부 실시 예에서, 소정의 노드가 그것의 클라이언트들 중 적어도 하나가 비-유휴 상태에 있다고 결정할 때, 소정의 노드는 소정의 노드의 전력이 차단되지 않을 것이라는 표시로 소정의 링크 상에 전력 차단 요청에 응답한다. 추가적으로, 일 실시 예에서, 소정의 노드는 다른 링크들 상에 어떠한 전력 차단 요청도 전송하지 않는다.
도 8을 참조하면, 다중 노드 컴퓨팅 시스템(800)의 다른 실시 예의 개괄적인 블록도가 도시되어 있다. 도시된 실시 예에서, 노드(810A)는 컴퓨팅 시스템(800)의 루트 노드(마스터 노드) 인 반면, 노드(810G) 및 노드(810H) 각각은 리프 노드들이다. 노드들(810B-810F) 각각은 루트 노드(810A)와 리프 노드들(810G-810H) 사이의 중간 노드들이다. 그에 따라, 링 데이터 통신 토폴로지가 사용된다. 그러나, 시스템-전반의 계층적 통신 전력 관리를 지원하기 위해, 링 토폴로지 내에 트리 계층적 토폴로지가 사용된다. 시스템-전반 전력 차단에 대한 협상이 중앙 집중되고 그것은 컴퓨팅 시스템(800)에서의 루트 노드(810A)에 의해 수행된다. 전력 투입에 대한 협상은 분산된 상태로 유지되고 그것은 시스템에서의 임의의 노드들에 의해 개시된다. 도시되지는 않았지만, 노드(810A-810H)들 각각은 하나 이상의 클라이언트, 전력 제어기, 링크 인터페이스들, 통신 패브릭, 메모리 인터페이스, 위상 고정 루프(PLL) 또는 다른 클록 생성 회로 등을 포함한다. 클라이언트들의 예들은 CPU, GPU, 멀티미디어 엔진, I/O 주변 디바이스 등이다. 다양한 실시 예에서, 전력 제어기들은 전력 제어기(170)(도 1의)의 기능을 갖는다.
일 실시 예에서, 링크들(820-834)은 PCIe, InfiniBand, RapidIO, HyperTransport 등과 같은 통신 프로토콜 연결들을 이용한다. 일부 실시 예에서, 컴퓨팅 시스템(800)은 링크들(820-834) 외에 노드들(810A-810H) 사이의 다른 링크들을 포함한다. 이러한 다른 링크들(미도시)은 데이터 통신을 위해 사용되는 반면, 링크들(820-834)는 전력 관리 메시징을 위해 사용된다. 그에 따라, 일 실시 예에서, 이러한 다른 링크들은 서비스 요청들로의 데이터 전송을 위해 사용되는 반면, 링크들(820-834)은 시스템-전반 전력 차단을 협상하기 위한 메시지들과 같은 메시징을 위해 사용된다. 도시된 바와 같이, 중간 노드들(810B-810F) 각각은 단일 업스트림 노드에 직접 연결되고 단일 다운스트림 노드에 직접 연결된다. 업스트림 방향은 루트 방향이라고도 하고, 다운스트림 방향은 리프 방향이라고도 한다. 업스트림 방향 및 다운스트림 방향 각각은 요청들을 서비스하는데 사용되는 데이터 통신이 아니라, 전력 관리 메시징을 나타낸다. 추가적으로 리프 노드들 각각은 업스트림 단부 및 다운스트림 단부가 아닌, 각 단부 상에서 동일한 레벨을 갖는 링크(828)를 사용한다. 일 실시 예에서, 동일한 레벨은 전력 관리 제어 로직에 의해 다운스트림 레벨로 취급된다.
이제 도 9를 참조하면, 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법(900)의 일 실시 예가 도시되어 있다. 다양한 실시 예에서, 다중 노드 컴퓨팅 시스템은 전력 관리를 위해 다수의 노드를 단일 루트 노드(마스터 노드), 하나 이상의 리프 노드 및 루트 노드와 하나 이상의 리프 노드 사이의 하나 이상의 중간 노드를 포함하는 트리 계층적 토폴로지로 연결한다(블록 902). 일부 실시 예에서, 다중 노드 컴퓨팅 시스템은 요청들을 서비스하는데 사용되는 데이터 통신을 위해 링 토폴로지를 사용하고, 트리 토폴로지는 전력 관리 메시징을 위해 사용된다. 일 실시 예에서, 각 중간 노드는 업스트림 방향으로 노드에 직접 연결되고 다운스트림 방향으로 노드에 직접 연결된다. 다시 말해, 시스템-전반 전력 차단에 대한 협상은 중앙 집중되는 반면, 시스템-전반 전력 투입은 분산된 상태로 유지된다. 그러나, 성능 증가를 위해 소켓 수를 증가시키는 것과 같이, 시스템을 스케일링하면 노드들이 완전 연결되지 않아 효율성이 높아진다. 또한, 노드들이 완전 연결되지 않을 때 연결들을 라우팅하면 소켓들 간에 더 적은 양의 신호가 사용되며 인터페이스들에 대한 영역이 감소된다. 그에 따라, 크기가 효율적으로 스케일링될 수 있는 시스템에서 시스템-전반 전력 차단은 완전 연결된 노드들에 의존하지 않고 발생한다. 또한, 전력 차단에 대한 협상은 시스템-전반 전력 차단을 수행하기 이전에 링크들의 전력을 차단하는 것을 방지하여, 후속 전력 투입 패널티를 제거한다.
다수의 노드가 작업들을 처리한다(블록 904). 노드 내 하나 이상의 클라이언트는 컴퓨터 프로그램들, 또는 소프트웨어 어플리케이션들을 실행한다. 일부 실시 예에서, 다수의 노드는 다중 소켓 서버 내에 있고 배치 작업들이 운영 체제에 의해 수신되며, 이는 작업들을 다수의 노드 중 하나 이상에 할당한다. 루트 노드의 링크들 상에서 적어도 계층적 통신에 기초하여 각 노드가 유휴 클라이언트들을 갖는지 여부가 결정된다(블록 906).
다중 노드 시스템에서의 하나 이상의 클라이언트가 비-유휴 상태에 있다고 결정된다면(조건 블록 908의 "아니오" 분기), 방법(900)의 제어 흐름은 다시 하나 이상의 클라이언트가 비-유휴 상태에 있는 동안 다수의 노드로 작업들이 처리되는 블록 904로 되돌아간다. 컴퓨팅 시스템에서의 하나를 제외한 모든 노드가 단지 유휴 클라이언트들을 갖는다 하더라도, 전력 차단 요청들은 생성되지 않는다. 각 노드에서의 각 클라이언트가 유휴 상태에 있다고 결정된다면(조건 블록 908의 "예" 분기), 각 링크 및 각 노드의 각 클라이언트의 전력이 차단된다(블록 910). 다수의 노드가 서로 연결되지 않음에도 불구하고 시스템-전반 전력 차단이 발생한다. 다양한 실시 예에서 소정의 노드의 전력 차단은 링크 인터페이스들에 대한 드라이버들을 디스에이블하는 것, 클라이언트들에 대한 클록들을 디스에이블하는 것 그리고 DRAM이 사용될 때 시스템 메모리를 자기-리프레시를 수행하도록 설정하는 것 중 하나 이상을 포함한다.
이제 도 10을 참조하면, 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법(1000)의 다른 실시 예가 도시되어 있다. 방법(900) 및 방법들(1100-1200)과 유사하게, 방법(1000)에 대한 다중 노드 컴퓨팅 시스템은 단일 루트 노드(마스터 노드), 하나 이상의 리프 노드 및 루트 노드와 하나 이상의 리프 노드 사이의 하나 이상의 중간 노드를 포함하는 트리 계층적 토폴로지를 사용한다. 각 중간 노드는 업스트림 방향으로 노드에 직접 연결되고 다운스트림 방향으로 노드에 직접 연결된다. 다시 말해, 시스템-전반 전력 차단에 대한 협상은 중앙 집중되는 반면, 시스템-전반 전력 투입은 분산된 상태로 유지된다.
다수의 노드가 작업들을 처리한다(블록 1002). 노드 내 하나 이상의 클라이언트는 컴퓨터 프로그램들, 또는 소프트웨어 어플리케이션들을 실행한다. 일부 실시 예에서, 다수의 노드는 다중 소켓 서버 내에 있고 배치 작업들이 운영 체제에 의해 수신되며, 이는 작업들을 다수의 노드 중 하나 이상에 할당한다. 루트가 아닌 소정의 노드 상에서의 하나 이상의 비-유휴 클라이언트가 하나 이상의 작업을 처리한다(블록 1004). 소정의 노드에서의 각 클라이언트가 유휴 상태가 된다면(조건 블록 1006의 "예" 분기), 소정의 노드에서의 각 노드가 유휴 상태에 있음을 명시하는 표시가 다운스크림 링크 상에 전송된다(블록 1008). 다수의 노드의 서브 세트에서의 각 클라이언트가 유휴 상태에 있음을 명시하는 응답이 소정의 노드의 다운스트림 링크 상에서 수신된다면(조건 블록 1010의 "예" 분기), 다수의 노드의 서브 세트에서의 각 클라이언트가 유휴 상태에 있음을 명시하는 표시가 업스트림 링크 상에 전송된다(블록 1012). 따라서, 이 경우 계층적 통신은 응답들을 제공하는 노드들에서 클라이언트들이 유휴 상태 인 것으로 밝혀질 때에만 계속된다. 블록들 1008-1012의 단계들은 시스템-전반 전력 차단 협상의 계층의 다음 상위 레벨로의 전파를 게이팅한다.
이제 도 11을 참조하면, 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법(1100)의 다른 실시 예가 도시되어 있다. 다수의 노드가 작업들을 처리한다(블록 1102). 다수의 노드의 서브 세트에서의 각 클라이언트가 유휴 상태임을 명시하는 표시가 리프가 아니고 루트가 아닌 소정의 노드의 다운스트림 링크 상에서 수신된다(블록 1104). 예를 들어, 서브 세트는 소정의 노드로부터 다운스트림에 각 노드를 포함한다. 소정의 노드의 하나 이상이 클라이언트가 비-유휴 상태에 있다면(조건 블록 1106의 "아니오" 분기), 일 실시 예에서, 소정의 노드에서의 하나 이상의 클라이언트가 비-유휴 상태임을 명시하는 표시로 다운스트림 링크 상에 응답한다(블록 1108). 소정의 노드에서 각 클라이언트가 유휴 상태에 있다면(조건 블록 1106의 "예" 분기), 일 실시 예에서, 소정의 노드는 소정의 노드에서의 각 클라이언트가 유휴 상태임을 명시하는 표시로 다운스트림 링크 상에서 응답한다(블록 1110).
소정의 표시는 다수의 노드의 서브 세트에서의 각 클라이언트가 유휴 상태임을 명시하도록 소정의 노드에서 업데이트된다(블록 1112). 서브 세트는 소정의 노드로부터 리프 노드로 다운스트림에 각 노드를 포함한다. 소정의 노드 또는 소정의 노드로부터 다운 스트림에 있는 임의의 노드에서 하나 이상의 클라이언트가 비-유휴 상태에 있다면(조건 블록 1114의 "아니오" 분기), 방법(1100)의 제어 흐름이 계층적 통신이 완료되는 블록(1116)으로 이동한다. 소정의 노드 및 소정의 노드로부터 다운스트림에 있는 임의의 노드에서 각 클라이언트가 유휴 상태에 있다면(조건 블록 1114의 "예" 분기), 다수의 노드의 서브 세트에서의 각 클라이언트가 유휴 상태에 있음을 명시하는 표시가 업스트림 링크 상에 전송된다(블록 1118). 서브 세트는 소정의 노드 및 소정의 노드로부터 다운스트림에 있는 각 노드를 포함한다.
이제 도 12를 참조하면, 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법(1200)의 다른 실시 예가 도시되어 있다. 다수의 노드는 작업들을 처리하는 한편 루트 노드의 각 클라이언트는 유휴 상태에 있다(블록 1202). 다수의 노드에서의 하나 이상의 클라이언트가 비-유휴 상태에 있음을 명시하는 표시가 수신되었는지 여부가 각 다운스트림 링크에 대해 결정된다(블록 1204). 루트 노드의 임의의 다운스트림 링크가 그러한 표시를 수신했다면(조건 블록 1206의 "예" 분기), 다수의 노드는 기상 조건들이 발생하는지 여부를 모니터링하면서 계속해서 작업들을 처리하고 링크에 이웃 노드들로부터 업데이트들을 응답한다(블록 1208).
루트 노드의 어떠한 다운스트림 링크도 응답들로 그러한 표시를 수신하지 않았다면(조건 블록 1206의 "아니오" 분기), 소정의 노드의 각 다운스트림 링크 상에 전력 차단 요청이 전송된다(블록 1210). 루트 노드의 각 다운스트림 링크 상에서 전력 차단에 대한 응답이 수신되지 않는다면(조건 블록 1212의 "아니오" 분기), 전력 차단에 대한 응답을 수신한 임의의 다운스트림 링크들의 전력이 차단된다(블록 1214). 그 후, 방법(1200)의 제어 흐름은 다수의 노드가 작업들을 처리하는 블록 1208로 이동한다. 루트 노드의 각 다운스트림 링크 상에서 전력 차단에 대한 응답들이 수신된다면(조건 블록 1212의 "예" 분기), 각 링크 및 루트 노드의 각 클라이언트의 전력이 차단된다(블록 1214). 다른 노드들이 또한 이러한 단계들을 수행한다. 다수의 노드가 서로 연결되지 않음에도 불구하고 시스템-전반 전력 차단이 발생한다. 다양한 실시 예에서 소정의 노드의 전력 차단은 링크 인터페이스들에 대한 드라이버들을 디스에이블하는 것, 클라이언트들에 대한 클록들을 디스에이블하는 것 그리고 DRAM이 사용될 때 시스템 메모리를 자기-리프레시를 수행하도록 설정하는 것 중 하나 이상을 포함한다.
분산 접근법에서의 노드들과 유사하게, 다양한 실시 예에서, 중앙 집중 접근법에서의 소정의 노드가 업스트림 링크 상에서 전력 차단 요청을 수신할 때, 소정의 노드는 그것의 각 클라이언트들이 유휴 상태에 있는지 결정한다. 만일 그렇다면, 소정의 노드는 업스트림 링크 상에 전원 차단을 나타내는 응답으로 응답한다. 그 후, 소정의 노드는 업스트림 링크의 전력을 차단한다. 또한, 소정의 노드는 소정의 노드의 다운스트림 링크 상에 전력 차단 요청을 전송한다. 소정의 노드가 다운스트림 링크 상에서 전력 차단 응답을 수신한다면, 소정의 노드는 다운스트림 링크의 전력을 차단한다. 소정의 노드의 업스트림 링크 및 다운스트림 링크 각각이 전력 차단 요청 및 전력 차단 응답 둘 다를 전달하였다면, 소정의 노드는 각 링크의 전력을 차단한다. 소정의 노드에서 각 링크의 전력이 차단될 때, 소정의 노드는 각 클라이언트의 전력 차단을 계속한다. 일부 실시 예에서, 소정의 노드가 그것의 클라이언트들 중 적어도 하나가 비-유휴 상태에 있다고 결정할 때, 소정의 노드는 소정의 노드의 전력이 차단되지 않을 것이라는 표시로 업스트림 링크 상에 전력 차단 요청에 응답한다. 추가적으로, 일 실시 예에서, 소정의 노드는 다운스트림 링크 상에 어떠한 전력 차단 요청도 전송하지 않는다.
다양한 실시 예에서, 소프트웨어 어플리케이션의 프로그램 명령들은 이전에 설명된 방법들 및/또는 메커니즘들을 구현하기 위해 사용된다. 프로그램 명령들은 C와 같은 상위 레벨 프로그래밍 언어로 하드웨어의 동작을 설명한다. 대안적으로, Verilog와 같은 하드웨어 설계 언어(HDL)가 사용된다. 프로그램 명령들은 비일시적 컴퓨터 판독 가능한 저장 매체에 저장된다. 많은 유형의 저장 매체가 이용 가능하다. 저장 매체는 프로그램 실행을 위해 컴퓨팅 시스템에 프로그램 명령들 및 수반 데이터를 제공하기 위해 사용 동안 컴퓨팅 시스템에 의해 액세스 가능하다. 컴퓨팅 시스템은 적어도 하나 이상의 메모리 및 프로그램 명령들을 실행하는 하나 이상의 프로세서를 포함한다.
전술한 실시 예들은 단지 구현의 비제한적인 예들일 뿐이라는 것이 강조되어야 한다. 상기한 개시 내용이 완전히 이해되면, 해당 기술분야의 통상의 기술자들에게는 다양한 변형 및 수정이 명백해질 것이다. 다음의 청구범위는 그러한 모든 변경 및 변형을 포함하는 것으로 해석되어야 한다.

Claims (20)

  1. 컴퓨팅 시스템으로서,
    복수의 노드로서, 각각:
    어플리케이션들을 처리하도록 구성된 하나 이상의 클라이언트;
    상기 복수의 노드의 하나 이상의 다른 노드에 결합되는 복수의 링크로서, 상기 복수의 노드 중 둘 이상은 완전 연결되지 않는, 상기 복수의 링크; 및
    전력 제어기를 포함하는, 상기 복수의 노드를 포함하되; 그리고
    상기 복수의 노드의 각 노드는 상기 복수의 노드의 제1 노드가 상기 복수의 노드에서의 각 클라이언트가 유휴 상태에 있다고 결정하는 것에 응답하여, 상기 복수의 링크 및 상기 하나 이상의 클라이언트의 전력을 차단하도록 구성되는, 컴퓨팅 시스템.
  2. 청구항 1에 있어서, 상기 복수의 노드의 제2 노드의 상기 전력 제어기는 상기 복수의 노드의 제1 서브 세트에서의 각 클라이언트가 유휴 상태에 있음을 명시하는 표시를 상기 복수의 노드의 제3 노드로 전송하도록 구성되되, 상기 제3 노드는 상기 제2 노드에 연결된 임의의 다른 노드들에 연결되지 않은, 컴퓨팅 시스템.
  3. 청구항 2에 있어서, 상기 제2 노드의 상기 전력 제어기는 상기 표시를:
    상기 제2 노드에서의 상기 하나 이상의 클라이언트의 각 클라이언트가 유휴 상태에 있다고 결정하는 것; 그리고
    상기 복수의 노드의 상기 제1 서브 세트보다 작은 제2 서브 세트에서의 각 클라이언트가 유휴 상태에 있음을 명시하는 표시를 제4 노드로부터 수신하는 것에 응답하여, 전송하도록 구성된, 컴퓨팅 시스템.
  4. 청구항 2에 있어서, 상기 제1 노드의 각 링크 상에서 상기 복수의 노드의 소정의 서브 세트에서의 각 클라이언트가 유휴 상태에 있다는 표시를 수신하는 것에 응답하여, 상기 제1 노드의 상기 전력 제어기는 각 직접 연결된 이웃 노드에 전력 차단 요청을 전송하도록 구성되는, 컴퓨팅 시스템.
  5. 청구항 2에 있어서,
    상기 제2 노드 및 상기 제4 노드는 상기 복수의 노드의 노드들의 동일한 서브 세트에 있되, 상기 서브 세트에서의 각 노드는 소정의 제1-레벨 링크로 서로 완전 연결되고;
    상기 제2 노드 및 상기 제3 노드는 노드들의 별개의 서브 세트들에 있고 제2-레벨 링크로 연결되되, 별개의 서브 세트들에 있는 노드들은 서로 완전 연결되지 않는, 컴퓨팅 시스템.
  6. 청구항 5에 있어서, 상기 제2 노드의 상기 전력 제어기는 상기 제2 노드의 각 링크 상에 전력 차단 요청 및 전력 차단 응답을 전달하는 것에 응답하여 각 링크 및 상기 제2 노드의 각 클라이언트의 전력을 차단하도록 구성되는, 컴퓨팅 시스템.
  7. 청구항 5에 있어서, 상기 제2 노드에서의 각 클라이언트가 유휴 상태에 있다고 결정하는 것에 응답하여, 상기 제2 노드의 상기 전력 제어기가:
    상기 제2 노드에서의 각 클라이언트가 유휴 상태에 있음을 명시하는 표시를 제1-레벨 링크 상에 상기 제4 노드로 전송하도록; 그리고
    상기 복수의 노드에서의 적어도 하나의 클라이언트가 비-유휴 상태에 있음을 명시하는 표시를 제2-레벨 링크 상에 상기 제3 노드로 전송하도록 구성되는, 컴퓨팅 시스템.
  8. 청구항 7에 있어서, 상기 제2 노드 상의 각 클라이언트가 유휴 상태에 있음을 명시하는 표시를 상기 제1-레벨 링크 상에서 수신하는 것에 응답하여, 상기 제2 노드의 상기 전력 제어기가 상기 다수의 노드의 상기 제1 서브 세트에서의 각 클라이언트가 유휴 상태에 있음을 명시하는 표시를 상기 제2-레벨 링크 상에 전송하도록 구성되는, 컴퓨팅 시스템.
  9. 청구항 2에 있어서,
    상기 복수의 노드는 트리 계층으로 연결되되, 메시지들이 리프 노드로부터 루트 노드로의 업스트림 방향의 링크들 상에서 이동하고 메시지들이 상기 루트 노드로부터 상기 리프 노드로의 다운스트림 방향의 링크들 상에서 이동하고;
    상기 제1 노드가 상기 트리 계층의 루트 노드인, 컴퓨팅 시스템.
  10. 청구항 9에 있어서, 상기 제2 노드의 상기 전력 제어기는:
    상기 제2 노드에서의 각 클라이언트가 유휴 상태에 있다고 결정하는 것; 그리고
    상기 복수의 노드의 전력 차단을 명시하는 표시를 상기 업스트림 링크 상에서 수신하는 것에 응답하여, 상기 복수의 노드의 전력 차단 요청을 상기 다운스트림 링크 상에 전송하도록 구성되는, 컴퓨팅 시스템.
  11. 청구항 1에 있어서, 상기 제2 노드의 상기 전력 제어기는:
    상기 소정의 노드의 상기 전력 제어기가 업스트림 링크 상에 논리적 연결 해제 링크 상태를 전송하는 것;
    앞에서의 상기 전력 제어기가 다운스트림 링크 상에 임의의 표시를 전송하는 것; 그리고
    상기 소정의 노드가 상기 복수의 노드의 트리 계층의 중간 레벨에 있는 것에 응답하여, 상기 복수의 노드에서의 적어도 하나의 클라이언트가 비-유휴 상태에 있음을 명시하는 표시를 상기 업스트림 링크 상에 전송하도록 구성되는, 컴퓨팅 시스템.
  12. 청구항 1에 있어서, 상기 소정의 노드의 상기 전력 제어기는:
    상기 제2 노드에서의 적어도 하나의 클라이언트가 비-유휴 상태로 되었다고 결정하는 것; 그리고
    상기 복수의 노드에서의 적어도 하나의 클라이언트가 비-유휴 상태에 있음을 명시하는 표시를 상기 다운스트림 링크 상에서 수신하는 것에 응답하여, 상기 복수의 노드에서의 적어도 하나의 클라이언트가 비-유휴 상태에 있음을 명시하는 표시를 업스트림 링크 상에 전송하도록 구성되는, 컴퓨팅 시스템.
  13. 방법으로서,
    복수의 노드에 의해 어플리케이션들을 처리하는 단계로서, 각 노드는:
    상기 어플리케이션들을 처리하도록 구성된 하나 이상의 클라이언트;
    상기 복수의 노드의 하나 이상의 다른 노드에 결합되는 복수의 링크로서, 상기 복수의 노드 중 둘 이상은 완전 연결되지 않는, 상기 복수의 링크; 및
    전력 제어기를 포함하는, 상기 복수의 노드에 의해 어플리케이션들을 처리하는 단계; 및
    상기 복수의 노드의 각 노드에 의해, 상기 복수의 노드의 제1 노드가 상기 복수의 노드에서의 각 클라이언트가 유휴 상태에 있다고 결정하는 것에 응답하여, 상기 복수의 링크 및 상기 하나 이상의 클라이언트의 전력을 차단하는 단계를 포함하는, 방법.
  14. 청구항 13에 있어서, 상기 복수의 노드의 제2 노드의 상기 전력 제어기에 의해, 상기 복수의 노드의 제1 서브 세트에서의 각 클라이언트가 유휴 상태에 있음을 명시하는 표시를 상기 복수의 노드의 제3 노드로 전송하는 단계를 더 포함하되, 상기 제3 노드는 상기 제2 노드에 연결된 임의의 다른 노드들에 연결되지 않은, 방법.
  15. 청구항 14에 있어서, 상기 제2 노드의 상기 전력 제어기에 의해, 상기 표시를:
    상기 제2 노드에서의 상기 하나 이상의 클라이언트의 각 클라이언트가 유휴 상태에 있다고 결정하는 것; 그리고
    상기 복수의 노드의 상기 제1 서브 세트보다 작은 제2 서브 세트에서의 각 클라이언트가 유휴 상태에 있음을 명시하는 표시를 제4 노드로부터 수신하는 것에 응답하여, 전송하는 단계를 더 포함하는, 방법.
  16. 청구항 14에 있어서, 상기 제1 노드의 각 링크 상에서 상기 복수의 노드의 소정의 서브 세트에서의 각 클라이언트가 유휴 상태에 있다는 표시를 수신하는 것에 응답하여, 상기 제1 노드의 상기 전력 제어기에 의해, 각 직접 연결된 이웃 노드에 전력 차단 요청을 전송하는 단계를 더 포함하는, 방법.
  17. 처리 노드로서,
    어플리케이션들을 처리하도록 구성된 하나 이상의 클라이언트;
    복수의 노드의 하나 이상의 다른 노드에 결합되는 복수의 링크로서, 상기 복수의 노드 중 둘 이상은 완전 연결되지 않는, 상기 복수의 링크; 및
    전력 제어기를 포함하되;
    상기 전력 제어기는 상기 복수의 노드의 외부 제1 노드가 상기 복수의 노드에서의 각 클라이언트가 유휴 상태에 있다고 결정하는 것에 응답하여, 상기 복수의 링크 및 상기 하나 이상의 클라이언트의 전력을 차단하도록 구성되는, 처리 노드.
  18. 청구항 17에 있어서, 상기 전력 제어기는 상기 복수의 노드의 제1 서브 세트에서의 각 클라이언트가 유휴 상태에 있음을 명시하는 표시를 상기 복수의 노드의 제3 노드로 전송하도록 구성되되, 상기 제3 노드는 상기 처리 노드에 연결된 임의의 다른 노드들에 연결되지 않은, 처리 노드.
  19. 청구항 18에 있어서, 상기 전력 제어기는 상기 표시를:
    상기 하나 이상의 클라이언트의 각 클라이언트가 유휴 상태에 있다고 결정하는 것; 그리고
    상기 복수의 노드의 상기 제1 서브 세트보다 작은 제2 서브 세트에서의 각 클라이언트가 유휴 상태에 있음을 명시하는 표시를 외부 제4 노드로부터 수신하는 것에 응답하여, 전송하도록 구성되는, 처리 노드.
  20. 청구항 18에 있어서, 상기 전력 제어기는 각 링크 상에 전력 차단 요청 및 전력 차단 응답을 전달하는 것에 응답하여 각 링크 및 각 클라이언트의 전력을 차단하도록 구성되는, 처리 노드.
KR1020207021981A 2017-12-28 2018-09-20 시스템-전반 저전력 관리 KR20200100183A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/856,546 US11054887B2 (en) 2017-12-28 2017-12-28 System-wide low power management
US15/856,546 2017-12-28
PCT/US2018/051916 WO2019133085A1 (en) 2017-12-28 2018-09-20 System-wide low power management

Publications (1)

Publication Number Publication Date
KR20200100183A true KR20200100183A (ko) 2020-08-25

Family

ID=63858060

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207021981A KR20200100183A (ko) 2017-12-28 2018-09-20 시스템-전반 저전력 관리

Country Status (5)

Country Link
US (2) US11054887B2 (ko)
EP (1) EP3732547A1 (ko)
JP (1) JP7264901B2 (ko)
KR (1) KR20200100183A (ko)
WO (1) WO2019133085A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10671148B2 (en) 2017-12-21 2020-06-02 Advanced Micro Devices, Inc. Multi-node system low power management
US11435813B2 (en) 2018-08-29 2022-09-06 Advanced Micro Devices, Inc. Neural network power management in a multi-GPU system

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4980836A (en) 1988-10-14 1990-12-25 Compaq Computer Corporation Apparatus for reducing computer system power consumption
US5396635A (en) 1990-06-01 1995-03-07 Vadem Corporation Power conservation apparatus having multiple power reduction levels dependent upon the activity of the computer system
US5617572A (en) 1995-01-31 1997-04-01 Dell Usa, L.P. System for reducing power consumption in computers
US5692202A (en) 1995-12-29 1997-11-25 Intel Corporation System, apparatus, and method for managing power in a computer system
US6334167B1 (en) 1998-08-31 2001-12-25 International Business Machines Corporation System and method for memory self-timed refresh for reduced power consumption
US6657634B1 (en) 1999-02-25 2003-12-02 Ati International Srl Dynamic graphics and/or video memory power reducing circuit and method
GB2357601B (en) * 1999-12-23 2004-03-31 Ibm Remote power control
US7103788B1 (en) * 2001-10-31 2006-09-05 Microsoft Corporation Selective suspension of bus devices
JP2003308246A (ja) 2002-04-17 2003-10-31 Fujitsu Ltd メモリコントローラのクロック制御装置及び方法
US7028200B2 (en) 2002-05-15 2006-04-11 Broadcom Corporation Method and apparatus for adaptive power management of memory subsystem
US7428644B2 (en) 2003-06-20 2008-09-23 Micron Technology, Inc. System and method for selective memory module power management
US7800621B2 (en) 2005-05-16 2010-09-21 Ati Technologies Inc. Apparatus and methods for control of a memory controller
TWI311705B (en) * 2005-05-23 2009-07-01 Via Tech Inc Peripheral component interconnect express and changing method of link power states thereof
DE102005037635B4 (de) 2005-08-09 2007-07-12 Infineon Technologies Ag Hardwaresteuerung für den Wechsel des Betriebsmodus eines Speichers
US7496777B2 (en) 2005-10-12 2009-02-24 Sun Microsystems, Inc. Power throttling in a memory system
EP1785982A1 (en) 2005-11-14 2007-05-16 Texas Instruments Incorporated Display power management
US7899990B2 (en) 2005-11-15 2011-03-01 Oracle America, Inc. Power conservation via DRAM access
US7613941B2 (en) 2005-12-29 2009-11-03 Intel Corporation Mechanism for self refresh during advanced configuration and power interface (ACPI) standard C0 power state
US7873850B2 (en) 2006-10-11 2011-01-18 Hewlett-Packard Development Company, L.P. System and method of controlling power consumption and associated heat generated by a computing device
US7743267B2 (en) 2006-11-08 2010-06-22 Xerox Corporation System and method for reducing power consumption in a device
US7868479B2 (en) 2007-06-27 2011-01-11 Qualcomm Incorporated Power gating for multimedia processing power management
US8181046B2 (en) 2008-10-29 2012-05-15 Sandisk Il Ltd. Transparent self-hibernation of non-volatile memory system
US8856563B2 (en) * 2009-10-02 2014-10-07 International Business Machines Corporation Remote power down control of a device
US8402232B2 (en) 2009-12-23 2013-03-19 Oracle America, Inc. Memory utilization tracking
US8656198B2 (en) 2010-04-26 2014-02-18 Advanced Micro Devices Method and apparatus for memory power management
KR101924836B1 (ko) * 2011-03-23 2018-12-04 삼성전자주식회사 고속 인터칩 통신 장치 및 방법
US20120254526A1 (en) 2011-03-28 2012-10-04 Advanced Micro Devices, Inc. Routing, security and storage of sensitive data in random access memory (ram)
US20130179621A1 (en) * 2012-01-06 2013-07-11 Glenn Willis Smith Extensible daisy-chain topology for compute devices
CN102662458B (zh) * 2012-04-18 2015-07-08 华为技术有限公司 一种pcie设备动态节能方法、装置及其通信系统
WO2013165357A1 (en) 2012-04-30 2013-11-07 Intel Corporation Master slave qpi protocol for coordinated idle power management in glueless and clustered systems
US9880601B2 (en) * 2014-12-24 2018-01-30 Intel Corporation Method and apparatus to control a link power state
WO2016106730A1 (zh) * 2014-12-31 2016-07-07 华为技术有限公司 主从网络休眠及唤醒的方法、装置及主从网络省电系统
US10775871B2 (en) * 2016-11-10 2020-09-15 Apple Inc. Methods and apparatus for providing individualized power control for peripheral sub-systems
US20180157311A1 (en) * 2016-12-07 2018-06-07 Microsoft Technology Licensing, Llc System-Wide Idle Resiliency Mechanism for Always-On Always-Connected Computers

Also Published As

Publication number Publication date
EP3732547A1 (en) 2020-11-04
JP2021509240A (ja) 2021-03-18
CN111684391A (zh) 2020-09-18
US20190204899A1 (en) 2019-07-04
US11054887B2 (en) 2021-07-06
WO2019133085A1 (en) 2019-07-04
US20210333860A1 (en) 2021-10-28
JP7264901B2 (ja) 2023-04-25

Similar Documents

Publication Publication Date Title
KR102355989B1 (ko) 다중 노드 시스템 저전력 관리
TWI519941B (zh) 多核心微處理器之共享電源的分散式管理
US8782456B2 (en) Dynamic and idle power reduction sequence using recombinant clock and power gating
US20210333860A1 (en) System-wide low power management
US20220091657A1 (en) Mechanism for performing distributed power management of a multi-gpu system
US11966330B2 (en) Link affinitization to reduce transfer latency
US20230214350A1 (en) Die-to-die Dynamic Clock and Power Gating
US20070176625A1 (en) Methods And Apparatus For Managing Defective Processors Through Power Gating
CN111684391B (zh) 全系统低功率管理
Kim et al. Memory Network: Enabling Technology for Scalable Near-Data Computing
US20240103561A1 (en) Handshaking mechanism for clock network control
US20240085972A1 (en) Chiplet state aware and dynamic voltage regulator event handling
US20240113914A1 (en) Low power processing of remote manageability requests
US20230009970A1 (en) In-band communication interface power management fencing
US20230153121A1 (en) Accelerator usage prediction for improved accelerator readiness
CN117882028A (zh) 基于限制硬件强制的功率控制的功率管理

Legal Events

Date Code Title Description
E902 Notification of reason for refusal