KR20230073224A - 다중-gpu 시스템의 분산형 전력 관리를 수행하기 위한 메커니즘 - Google Patents

다중-gpu 시스템의 분산형 전력 관리를 수행하기 위한 메커니즘 Download PDF

Info

Publication number
KR20230073224A
KR20230073224A KR1020237010857A KR20237010857A KR20230073224A KR 20230073224 A KR20230073224 A KR 20230073224A KR 1020237010857 A KR1020237010857 A KR 1020237010857A KR 20237010857 A KR20237010857 A KR 20237010857A KR 20230073224 A KR20230073224 A KR 20230073224A
Authority
KR
South Korea
Prior art keywords
idle
node
link interface
time period
power down
Prior art date
Application number
KR1020237010857A
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 KR20230073224A publication Critical patent/KR20230073224A/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/3228Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
    • 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/325Power saving in peripheral device
    • G06F1/3253Power saving in bus
    • 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/325Power saving in peripheral device
    • G06F1/3278Power saving in modem or I/O interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Power Sources (AREA)
  • Debugging And Monitoring (AREA)

Abstract

다중 노드 컴퓨팅 시스템의 효율적인 전력 관리를 위한 시스템, 장치 및 방법이 개시된다. 컴퓨팅 시스템에는 처리할 태스크를 수신하는 여러 노드가 포함된다. 노드에는 프로세서, 로컬 메모리, 전력 컨트롤러 및 링크를 통해 다른 노드와 메시지를 전송하기 위한 다중 링크 인터페이스가 포함된다. 전력 관리를 위한 분산형 접근 방식을 사용하여, 중앙 집중식 시스템 전체 전력 차단을 수행하지 않고 컴퓨팅 시스템의 컴포넌트 전력을 차단하기 위한 협상이 발생한다. 각 노드는 컴퓨팅 시스템의 다른 컴포넌트가 여전히 활성 상태인지 전력 공급 상태인지 여부에 관계없이 링크, 프로세서 및 기타 컴포넌트의 전력을 차단할 수 있다. 링크 인터페이스는 링크 유휴 조건이 링크 인터페이스가 적어도 타겟 유휴 임계 시간 기간 동안 유휴 상태로 유지되도록 하는지 여부에 대한 예측에 기반하여 지연이 있든 없든 링크의 전력 차단을 시작한다.

Description

다중-GPU 시스템의 분산형 전력 관리를 수행하기 위한 메커니즘
최신 집적 회로(IC)의 전력 소비는 반도체 칩의 각 세대마다 증가하는 설계 문제가 되었다. 전력 소비가 증가함에 따라, 과도한 열을 제거하고 IC 고장을 방지하기 위해 더 큰 팬(fan) 및 히트 싱크와 같은 더 비싼 냉각 시스템을 사용해야 한다. 그러나 냉각 시스템은 시스템 비용을 증가시킨다. IC 전력 손실 제약은 휴대용 컴퓨터 및 이동 통신 장치의 문제일 뿐만 아니라 고성능 마이크로프로세서를 사용하는 데스크탑 컴퓨터 및 서버에서도 문제가 된다. 이러한 마이크로프로세서에는 다중 프로세서 코어 또는 코어들, 및 코어 내의 다중 파이프라인이 포함된다.
다양한 서버와 같은 다양한 컴퓨팅 장치는 시스템 기능을 제공하기 위해 여러 유형의 IC를 통합하는 이기종 통합을 활용한다. 다중 기능에는 오디오/비디오(A/V) 데이터 처리, 의료 및 비즈니스 분야를 위한 기타 높은 데이터 병렬 애플리케이션, 범용 명령어 세트 아키텍처(instruction set architecture; ISA), 디지털, 아날로그, 혼합 신호 및 무선 주파수(radio-frequency; RF) 기능 등이 포함된다. 여러 유형의 IC를 통합하기 위한 시스템 패키징에는 다양한 선택이 존재한다. 일부 컴퓨팅 장치에서는, 시스템 온 칩(system-on-a-chip; SOC)이 사용되는 반면, 다른 컴퓨팅 장치에서는 더 작고 더 높은 수율의 칩이 다중 칩 모듈(multi-chip module; MCM)에 큰 칩으로 패키징된다.
일부 컴퓨팅 장치에는 다이-적층 기술뿐만 아니라 실리콘 인터포저, 실리콘 관통 비아(through silicon via; TSV) 및 기타 메커니즘을 활용하여 시스템 인 패키지(system-in-package; SiP)에 둘 이상의 다이를 수직으로 적층하고 전기적으로 연결하는 3차원 집적 회로(3D IC)가 포함된다. 시스템 패키징에 대한 선택과 관계없이, 시스템이 성능 향상을 위해 확장됨에 따라, 소켓 수가 증가하고, 각각 선택된 패키지의 복사본이 있는 다수의 소켓을 갖는 컴퓨팅 시스템의 전력을 차단하는 것이 더 복잡해진다.
상기의 관점에서, 다중 노드 컴퓨팅 시스템을 위한 효율적인 전력 관리를 수행하는 효율적인 방법 및 시스템이 요구된다.
본 명세서에 설명된 방법 및 메커니즘의 장점은 첨부 도면을 조합하여 이하의 설명을 참조함으로써 더 잘 이해될 수 있다.
도 1은 타임라인의 일 실시예의 블록도이다.
도 2는 처리 노드의 일 실시예의 블록도이다.
도 3은 다중-노드 컴퓨팅 시스템의 일 실시예의 블록도이다.
도 4는 다중-노드 컴퓨팅 시스템의 일 실시예의 블록도이다.
도 5는 다중-노드 컴퓨팅 시스템을 위한 전력 관리를 수행하는 방법의 일 실시예의 흐름도이다.
도 6은 다중-노드 컴퓨팅 시스템을 위한 전력 관리를 수행하는 방법의 다른 실시예의 흐름도이다.
도 7은 다중-노드 컴퓨팅 시스템을 위한 전력 관리를 수행하는 방법의 또 다른 실시예의 흐름도이다.
도 8은 다중-노드 컴퓨팅 시스템을 위한 전력 관리를 수행하는 방법의 또 다른 실시예의 흐름도이다.
도 9는 다중-노드 컴퓨팅 시스템의 일 실시예의 블록도이다.
도 10은 다중-노드 컴퓨팅 시스템의 일 실시예의 블록도이다.
본 발명은 다양한 변형 및 대안적 형태가 가능하지만, 특정 실시예가 도면의 예로서 도시되고 본원에서 상세히 설명된다. 그러나, 도면 및 그에 대한 상세한 설명은 개시된 특정 형태로 본 발명을 제한하려는 것이 아니라, 반대로 본 발명은 첨부된 청구범위에 의해 정의된 바와 같이 본 발명의 범위 내에 속하는 모든 수정, 등가물 및 대체물을 포함하는 것으로 이해되어야 한다.
아래의 설명에서, 본 명세서에 제시된 방법 및 메커니즘에 대한 완전한 이해를 제공하기 위해 다양한 구체적인 세부 사항이 제시된다. 그러나 당업자는 다양한 실시예들이 이들 특정 세부 사항 없이 실시될 수 있음을 인식해야 한다. 일부 실례에서, 잘 알려진 구조, 구성 요소, 신호, 컴퓨터 프로그램 명령 및 기술은 본 명세서에 설명된 방법을 모호하게 하는 것을 피하기 위해 상세히 설명하지 않는다. 첨부 도면의 단순성과 명확성을 위해, 도면에 도시된 요소는 반드시 축척대로 그려진 것은 아니라는 것을 이해할 것이다. 예를 들어, 일부 요소의 크기는 다른 요소에 비해 과장될 수 있다.
다중 노드 컴퓨팅 시스템을 위한 효율적인 전력 관리를 수행하는 다양한 시스템, 장치, 방법 및 컴퓨터 판독가능 매체가 개시된다. 다양한 실시예들에서, 컴퓨팅 시스템은 다중 노드 파티션의 노드에 태스크를 할당하는 호스트 프로세서를 포함한다. 노드는 프로세서 및 로컬 메모리를 포함한다. 처리 노드는 또한 적어도 전력 컨트롤러 및 다른 노드와 메시지를 전송하기 위한 다수의 링크 인터페이스를 포함한다. 본원에 사용된 바와 같이, 처리 노드는 노드로도 지칭된다. 일 실시예에서, 호스트 포로세서는 CPU이고 노드 프로세서는 GPU이다. 일부 실시예들에서, 노드는 태스크를 처리하기 위해 GPU를 이용하는 불균일 메모리 액세스(Non-Uniform Memory Access; NUMA) 노드이다.
전력 관리를 위한 분산형 접근 방식을 사용하여, 컴퓨팅 시스템의 시스템 전체 전력 차단을 수행하지 않고 컴퓨팅 시스템의 컴포넌트의 전력을 차단하기 위한 협상이 발생한다. 전력 차단에 대한 협상은 컴포넌트 레벨에서 발생한다. 각 노드는 링크 인터페이스 및 프로세서의 전력을 차단할 수 있는 반면 컴퓨팅 시스템의 다른 컴포넌트는 여전히 활성 상태이거나 전력 공급 상태이다. 노드 간 링크에서 모니터링 데이터 전송을 모니터링하여 해당 링크의 전력 차단을 시작할 시기를 결정한다. 전력차단 의도는 시작 노드에서 링크의 다른 노드로 전달된다. 링크의 전력 차단이 두 노드 간에 합의되면, 링크 인터페이스는 링크의 전원 관리 상태를 저성능 전력 관리 상태로 변경한다. 예를 들어, 두 노드의 프로세서가 활성 상태로 유지되고 있음에도 불구하고 링크는 전력이 차단될 수 있다.
두 개의 노드 사이의 통신 계층은 동작 상태(예를 들어, 활성, 유휴) 및/또는 전력 관리 상태 변경이 전달되도록 하는 링크의 전력 차단 동안 활성 상태를 유지한다. 본원에 사용된 바와 같은, "전력 관리 상태"는 노드에 의해 지원되는 여러 "P-상태" 중 하나 또는 여러 "C-상태" 중 하나이다. 따라서 전력 관리 상태 변경은 노드에 의해 지원되는 여러 C 상태 및 P 상태 중 하나로의 전환과 관련된다. 노드의 전력 컨트롤러는 P-상태를 사용하여 프로세서가 워크로드를 처리하는 동안 하나 이상의 프로세서 및 기타 컴포넌트의 동작 파라미터를 업데이트한다. 동작 파라미터의 예에는 동작 클록 주파수 및 동작 전력 공급 전압이 있다. 전력 컨트롤러는 프로세서가 워크로드를 처리하지 않는 동안 C-상태를 사용하여 동작 매개변수를 업데이트하고/하거나 컴포넌트의 전력을 차단한다. 노드의 프로세서가 유휴 상태가 되고 전력 컨트롤러가 노드를 특정 C-상태로 전환하면, 노드의 전력 컨트롤러가 프로세서 및 기타 컴포넌트 중 하나 이상의 전력을 차단한다. 예를 들어, 노드의 전력 컨트롤러는 DRAM에 의해 구현된 시스템 메모리가 자체 리프레시 모드에 진입했음을 나타낸다. 노드의 전력 관리 상태가 C-상태 중 하나일 때 전력 컨트롤러가 노드의 다른 컴포넌트의 전력을 차단하는 것이 가능하고 고려된다.
도 1을 참조하면, 타임라인(50)의 일 실시예의 일반 블록도가 도시된다. 타임라인(50)은 노드(10A-10B) 중 하나의 링크 인터페이스가 노드(10A-10B) 사이의 링크(12)가 유휴 상태임을 검출하는 시점(t1)에서 시작하는 지속 기간을 예시한다. 다양한 실시예들에서, 노드(10A-10B)는 하나 이상의 프로세서, 로컬 메모리, 전력 컨트롤러 및 노드(10A-10B) 사이의 링크(12)와 통신할 수 있는 링크 인터페이스를 포함한다. 링크(12)는 노드(10A-10B) 사이에서 데이터를 전달한다. 도 1에는 두 개의 노드와 하나의 링크가 도시되어 있지만, 컴퓨팅 시스템에서 사용된 다른 개수의 노드와 링크가 가능하며 고려된다. 케이스 1-3으로 표시된 세 가지 케이스가 도 1에 도시되어 있지만, 링크(12)에 대해 임의 개수의 케이스가 발생한다. 예를 들어, 링크(12)에 대한 링크 유휴 중단(interruption)은 언제든지 발생할 수 있다. 타임라인(50)은 일부 경우에, 노드(10A-10B) 간의 링크의 전력 차단을 위한 이들 사이의 협상이 지속시간 "D2" 내지 "D7"와 같은 다수의 지속시간의 조합을 포함하는 것을 예시한다.
일부 경우에, 링크(12)는 타겟 유휴 임계 시간 기간인 "D1"로 라벨링된 적어도 제1 지속시간 동안 유휴 상태를 유지한다. 일 실시예에서, "D1"은 프로그래밍 가능한 구성 레지스터에 저장된 값이다. 지속시간 "D1"은 링크(12)에서 통신하는 데 사용되는 노드(10A-10B)의 링크 인터페이스의 전력을 차단하는 것으로부터 충분한 절전을 제공하도록 결정된 링크(12)의 최소 유휴 레지던스(residence)이다. 상단 및 하단 케이스(케이스 1 및 케이스 3)는 링크(12)의 링크 유휴 중단이 발생하기 전에 경과하는 타겟 유휴 임계 시간 기간("D1")을 예시한다. 다른 경우에, 링크(12)는 중단이 발생하기 전에 적어도 타겟 유휴 임계 시간 기간("D1") 동안 유휴 상태를 유지하지 않는다. 중간 케이스(케이스 2)는 이 시나리오를 예시한다. 노드(10A)의 링크 인터페이스에 의해 검출되는 링크 유휴 중단의 예로는 링크 인터페이스의 입력 큐(queue)에 저장하기 위해 노드(10A)의 프로세서로부터 도착하는 메시지, 노드(10B)로부터 도착하여 태스크로 향하는 메시지, 및 이전 전력 차단 요청의 거부를 명시하는 표시를 갖는 노드(10B)로부터 도착한 메시지가 있다. 마찬가지로, 노드(10B)의 링크 인터페이스는 이러한 중단 예를 검출할 수도 있다.
도 1에서 알 수 있는 바와 같이, 노드(10A-10B)는 타겟 유휴 임계 시간 기간 ("D1")이 경과하기 전에 링크(12)의 전력 차단을 위한 협상을 시작할 수 있다. 상단 및 중간 케이스(케이스 1 및 케이스 2)는 이 시나리오를 예시한다. 따라서 타겟 유휴 임계 시간 기간("D1") 경과를 검출하는 것은 노드(10A-10B) 사이의 링크의 전력 차단 협상의 시작을 알리는 데 사용되지 않는다는 점에 유의한다. 하기의 논의는 노드(10A)의 링크 인터페이스의 회로부에 의해 수행되는 단계를 설명하지만, 노드(10B)의 링크 인터페이스의 회로부도 유사한 단계를 수행할 수 있다. 즉, 노드(10A 및 10B)의 각각의 링크 인터페이스는 링크 인터페이스의 전력 차단을 시작할 수 있다. 도 1에 도시된 상단 케이스는 노드(10A)의 링크 인터페이스가 시점 t1(또는 시간 t1)에서 유휴 조건을 검출하는 것을 예시한다. 링크 인터페이스의 유휴 조건의 한 예는 노드(10B)로 전송할 메시지 및/또는 페이로드 데이터를 저장하는 링크 인터페이스의 입력 큐가 비어 있는 것이다. 추가로, 노드(10A)의 링크 인터페이스는 노드(10B)로부터 수신되는 데이터가 없음을 검출한다. 상단 케이스의 경우, 시간 t1에서, 노드(10A)의 링크 인터페이스는 전력 차단을 위해 노드(10B)와 협상을 시작한다. 협상에서는 "D2" 및 "D3"로 라벨링된 지속시간과 같은 두 지속시간을 사용한다.
지속시간 "D2" 및 "D3" 각각은 노드(10A-10B)의 링크 인터페이스의 하드웨어에 의해 수행되는 단계 완료에 따른 지속시간이다. "D2"로 라벨링된 제2 지속시간은 노드(10A-10B) 사이에서 발생하는 필수 전력 차단 메시징을 포함한다. 전력 차단 메시지의 예로는 전력 차단 요청, 수신된 전력 차단 요청을 수락하거나 거부하는 전력 차단 응답, 전력 차단 요청의 철회, 노드(10A-10B)의 하나 이상의 프로세서의 동작 상태 및/또는 전력 관리 상태의 표시 등이 있다. 단일 메시지에는 나열된 예 중 두 개 이상이 포함될 가능성이 있다. 예를 들어, 전력 차단 요청을 수락하는 전력 차단 응답은 또한 하나 이상의 프로세서의 동작 상태 및 전력 관리 상태 중 하나 이상의 표시를 포함한다. 단일 메시지에 삽입된 다른 조합이 가능하고 고려된다. 전력 차단 메시징 협상 결과 링크 전력 차단으로 진행되면, "D3"로 라벨링된 제3 지속시간에는 전력 차단 동작이 포함된다. 전력 차단 동작은 적어도 링크 인터페이스를 포함하는 노드(10A-10B)의 하나 이상의 컴포넌트의 전력을 차단하는 것을 포함한다. 전력 차단 메시징은 링크 인터페이스가 전력 차단될 준비가 되었다고 결정되었을 때 노드(10A-10B)의 링크 인터페이스의 전력을 차단하는 방향으로 진행된다.
지속시간 "D3"의 전력 차단 동작이 시작되면, 이러한 전력 차단 동작은 중단 없이 완료될 때까지 계속되고 링크 인터페이스의 전력이 차단된다는 점에 유의한다. 반면에, 지속시간 "D2" 동안 발생하는 전력 차단 메시징은 링크의 전력을 차단하는 방향으로 진행되지 않을 가능성이 있다. 예를 들어, 링크 인터페이스의 전력을 차단하는 것을 방지하는 중단이 발생한다. 도 1에는 지속시간 "D2" 동안 중단이 발생하는 케이스는 없지만, 그러한 케이스가 가능하고 고려된다. 이러한 경우에, 노드(10A)의 링크 인터페이스는 적어도 타겟 유휴 임계 시간 기간("D1") 동안 유휴 상태를 유지하지 않았다. 마찬가지로, 노드(10A)의 링크 인터페이스가 지속시간 "D2" 동안 전력 차단 메시징 단계 및 지속시간 "D3" 동안 전력 차단 동작 단계를 완료하고, 노드(10A-10B)의 링크 인터페이스가 전력 차단되더라도, 링크 인터페이스가 적어도 타겟 유휴 임계 시간 기간("D1") 동안 유휴 상태로 유지되는 것을 방지하는 중단이 발생할 수 있다. 도 1에 도시된 중간 케이스는 이 시나리오를 예시한다.
도 1에 도시된 상단 케이스(케이스 1) 는 노드(10A)의 링크 인터페이스가 적어도 타겟 유휴 임계 시간 기간("D1") 동안 유휴 상태로 유지되는 것을 예시한다. 예를 들어, 지속시간 "D2" 및 "D3" 이후에 "D4"로 라벨링된 지속시간이 발생하고, 시간 t2에서 지속시간 "D1"이 경과한 후에 중단이 발생한다. 이러한 경우가 일반적일 경우, 유휴 조건이 시간 t1에서 검출되자 마자 노드(10A)의 링크 인터페이스의 전력 차단 협상을 시작하는 것이 유리하다. 그러나 도 1에 도시된 중간 케이스(케이스 2) 는 노드(10A)의 링크 인터페이스가 적어도 타겟 유휴 임계 시간 기간("D1") 동안 유휴 상태로 유지되지 않을 때의 일 예를 예시한다. 예를 들어, 지속시간 "D2" 및 "D3" 이후에 "D5"로 라벨링된 지속시간이 발생하지만, 시간 t2에서 지속시간 "D1"이 경과하기 전에 중단이 발생한다. 이러한 경우가 종종 발생하는 경우, 유휴 조건이 시간 t1에서 검출될 때 노드(10A)의 링크 인터페이스의 전력 차단 협상을 시작하기 위해 대기하는 것이 유리하다.
노드(10A)의 링크 인터페이스가 적어도 타겟 유휴 임계 시간 기간("D1") 동안 링크 인터페이스가 유휴 상태로 유지되도록 하는 유휴 조건의 검출을 예측할 때, 링크 인터페이스의 전력 차단 협상 지연 없이 링크 인터페이스가 시작된다. 예를 들어, 링크 인터페이스는 도 1에 예시된 상단 및 중간 케이스(케이스 1 및 케이스 2)에 도시된 단계를 수행하려고 시도한다. 그러나 노드(10A)의 링크 인터페이스가 적어도 타겟 유휴 임계 시간 기간("D1") 동안 링크 인터페이스가 유휴 상태로 유지되지 않도록 하는 유휴 조건의 검출을 예측할 때, 링크 인터페이스는 "D7"로 라벨링된 대기 임계 시간 기간 동안 전력 차단의 협상을 지연한다. 예를 들어, 링크 인터페이스는 도 1에 예시된 하단 케이스(케이스 3)에 도시된 단계를 수행하도록 시도한다. 다양한 실시예들에서, 대기 임계 시간 기간("D7")은 타겟 유휴 임계 시간 기간("D1")보다 크다. 일 예에서, 대기 임계 시간 기간("D7")은 타겟 유휴 임계 시간 기간("D1")의 두 배이다. 다른 실시예들에서, 타겟 유휴 임계 시간 기간 ("D1")에 대한 대기 임계 시간 기간("D7")의 비율은 1보다 큰 임의의 양수 값이고, 비율은 설계 요구에 기초하여 선택된다.
도 2를 참조하면, 처리 노드(100)의 일 실시예의 일반 블록도가 도시된다. 도시된 바와 같이, 처리 노드(100)는 각각의 클라이언트(110), 하나 이상의 캐시 레벨(116), 메모리 컨트롤러(MC)(130), 전력 컨트롤러(140) 및 링크 인터페이스(150 및 170) 사이의 통신 패브릭(120)을 포함한다. 일부 실시예들에서, 처리 노드(100)의 컴포넌트는 시스템 온 칩(system-on-a-chip; SOC)과 같은 집적 회로(IC) 상의 개별 다이이다. 다른 실시예들에서, 컴포넌트는 시스템 인 패키지(system-in-package; SiP) 또는 다중 칩 모듈(multi-chip module; MCM)의 개별 다이이다.
클라이언트(110)가 두 개의 프로세서를 포함하는 것으로 도시되어 있지만, 다른 실시예들에서, 클라이언트(110)는 임의 개수의 프로세서 및 처리 엔진을 포함한다. 예시된 실시예에서, 클라이언트(110)는 프로세서(112) 및 병렬 데이터 프로세서(114)를 포함한다. 일부 설계에서, 클라이언트(110)는 중앙 처리 장치(CPU), 멀티미디어 엔진과 통신하기 위한 허브 및 소프트웨어 애플리케이션의 명령어들을 처리할 수 있는 회로부를 갖는 다른 유형의 컴퓨팅 리소스들 중 하나 이상인 프로세서(112)를 포함한다. 일 실시예에서, 병렬 데이터 프로세서(114)는 그래픽 처리 유닛(Graphic Processing Unit; GPU), 디지털 신호 프로세서(Digital Signal Processor; DSP), 필드 프로그래머블 게이트 어레이(Field Programmable Gate Array; FPGA) 또는 여러 데이터 항목에 대해 동일한 명령어를 동시에 처리할 수 있는 다른 유형의 프로세서 중 하나이다.
병렬 데이터 프로세서(114)는 상당한 수의 병렬 실행 레인을 갖는 높은 병렬 데이터 마이크로아키텍처를 갖는다. 높은 병렬 데이터 마이크로아키텍처는 연산 집약적인 태스크를 위한 높은 명령어 처리량을 제공한다. 일 실시예에서, 마이크로아키텍처는 병렬 실행 레인에 단일-명령어-다중-데이터(single-instruction-multiple-data; SIMD) 파이프라인을 사용한다. 컴파일러는 프로그램 코드에서 병렬화된 태스크를 추출하여 시스템 하드웨어에서 병렬로 실행한다. 병렬화된 태스크는 적어도 과학, 의료 및 비즈니스(재무) 애플리케이션에서 비롯되며 일부는 신경망 훈련을 활용한다. 태스크에는 실행할 명령어의 서브루틴이 포함된다. 다양한 실시예들에서, 병렬 데이터 프로세서(114)의 다중 실행 레인은 다중 작업 항목을 포함하는 웨이브프론트를 동시에 실행한다. 작업 항목은 다른 데이터로 실행하는 동일한 명령어이다. 작업 항목은 스레드(thread)라고도 한다.
일부 설계에서, 처리 노드(100)는 범용 CPU를 포함하지 않지만, 외부 CPU로부터 할당된 태스크를 수신한다. 예를 들어, 처리 노드(100)의 링크 인터페이스(150 및 170) 중 하나는 외부 CPU와의 명령 및 데이터 전송을 위한 통신 프로토콜 연결을 지원한다. 통신 프로토콜의 예로는 PCIe(Peripheral Component Interconnect Express), Advanced Micro Devices, Inc.의 Infinity Fabric, Advanced Micro Devices, Inc.의 Infinity Architecture, InfiniBand, RapidIO, HyperTransport 등이 있다. 통신 프로토콜의 다른 예도 가능하고 고려된다.
다양한 실시예들에서, 통신 패브릭(120)은 메모리 컨트롤러(130)를 통해 클라이언트(110), 캐시(116), 링크 인터페이스(150, 170) 및 메모리(132) 사이에서 명령, 메시지 및 페이로드 데이터와 같은 데이터를 전송한다. 두 개의 링크 인터페이스(150 및 170)가 도시되어 있지만, 다른 설계에서는 다른 개수의 링크 인터페이스가 사용된다. 일부 실시예들에서, 통신 패브릭(120)은 적어도 요청 및 응답을 저장하기 위한 큐(queues), 및 내부 네트워크를 통해 요청을 전송하기 전에 수신된 요청 사이에서 중재할 수 있는 하드웨어 회로들에 의해 구현되는 선택 로직을 포함한다. 통신 패브릭(120)은 또한 패킷을 구축 및 디코딩하고 패킷에 대한 경로를 선택할 수 있는 회로부를 포함한다.
일 실시예에서, 전력 컨트롤러(140)는 처리 노드(100)의 컴포넌트로부터 데이터를 수집한다. 일부 실시예들에서, 수집된 데이터는 미리 결정된 샘플링 신호를 포함한다. 샘플링된 신호의 스위칭은 스위칭된 커패시턴스의 양을 나타낸다. 샘플링할 선택된 신호의 예들에는 클록 게이터 인에이블 신호, 버스 드라이버 인에이블 신호, CAM(Content-Addressable Memory)의 불일치, CAM WL(Word-Line) 드라이버 등이 포함된다. 일 실시예에서, 전력 컨트롤러(140)는 주어진 샘플 간격 동안 노드(100)에서의 전력 소비를 특성화하기 위해 데이터를 수집한다.
일부 실시예들에서, 처리 노드(100)의 온-다이(on-die) 전류 센서 및 온도 센서는 또한 전력 컨트롤러(140)에 정보를 전송한다. 전력 컨트롤러(140)는 센서 정보, 발행된 명령어 또는 발행된 스레드의 카운트, 및 가중 샘플링된 신호의 합 중 하나 이상을 사용하여 처리 노드(100)에 대한 전력 소비를 추정한다. 전력 컨트롤러(140)는 노드(100)가 임계 한계 이상(미만)에서 동작하는 경우 전력 소비를 감소(또는 증가)시킨다. 일부 실시예들에서, 전력 컨트롤러(140)는 처리 노드(100)의 컴포넌트 각각에 대한 각각의 전력 관리 상태를 선택한다. 따라서 전력 컨트롤러(140) 및 처리 노드(100) 전체에 수반되는 회로부는 노드(100)의 컴포넌트를 전력 게이팅하거나 컴포넌트의 전력 관리 상태를 감소시킬 수 있다. 전력 컨트롤러(140)는 또한 전환 클록 신호로부터의 연결 및 전력 공급 기준으로부터의 연결을 제거하기 위해 제어 신호를 노드(100)의 컴포넌트로 보낼 수 있다. 전력 컨트롤러(140)는 또한 전환 클록 신호로의 연결 및 전력 공급 기준으로의 연결을 재설정하기 위해 제어 신호를 노드(100)의 컴포넌트로 보낼 수 있다.
단일 메모리 컨트롤러(130)가 도시되어 있지만, 다른 실시예들에서는, 처리 노드(100)에서 다른 개수의 메모리 컨트롤러가 사용된다. 다양한 실시예들에서, 메모리 컨트롤러(130)는 통신 패브릭(120)을 통해 클라이언트(110) 또는 캐시(116)의 캐시 컨트롤러로부터 메모리 요청을 수신한다. 메모리 컨트롤러(130)는 중재 로직을 사용하여 메모리 요청을 스케줄링하고, 스케줄링된 메모리 요청을 메모리(132)로 전송한다. 일 실시예에서, 메모리(132)는 처리 노드(100)를 위한 시스템 메모리이고, 메모리(132)는 메모리 컨트롤러(130)에 의해 지원되는 대응하는 통신 프로토콜을 갖는 다양한 동적 랜덤 액세스 메모리(dynamic random access memory; DRAM) 중 하나이다. 통신 프로토콜은 클록 주기당 데이터 전송 횟수, 신호 전압 레벨, 신호 타이밍, 신호 및 클록 위상, 클록 주파수와 같은 정보 전송에 사용되는 값을 결정한다. 일부 실시예들에서, 처리 노드(100)는 또한 계층적 메모리 서브시스템의 시스템 메모리(132)보다 낮은 레벨인 메인 메모리에 연결된다. 메인 메모리는 다양한 유형의 비휘발성 랜덤 액세스 보조 데이터 저장소 중 하나이다. 메인 메모리의 예들에는 하드 디스크 드라이브(hard disk drive; HDD)와 솔리드 스테이트 디스크(solid-state disk; SSD)가 있다.
메모리 컨트롤러(130)는 또한 시스템 메모리(132) 및 메인 메모리로부터 응답을 수신하고 처리 노드(100)에서 대응하는 요청 소스로 응답을 전송한다. 원래의 메모리 요청을 완료하기 위해, 요청된 데이터 블록을 갖는 대응하는 캐시 충진 라인(cache fill line)은 시스템 메모리(132) 및 메인 메모리 중 하나로부터 대응하는 하나 이상의 캐시(116) 및 병렬 데이터 프로세서(112)의 내부 캐시 메모리로 전달된다. 즉, 캐시 충진 라인은 하나 이상의 캐시 레벨에 배치된다. 일부 설계에서, 병렬 데이터 프로세서(112)는 레벨 1(L1) 명령어 캐시 및 L1 데이터 캐시를 포함한다. 캐시(116)는 계층적 캐시 메모리 서브시스템에서 사용되는 레벨 2(L2) 캐시 및 레벨 3(L3) 캐시 중 하나 이상을 제공한다. 병렬 데이터 프로세서(112) 내부 또는 외부 배치 여부에 관계없이 다른 개수의 레벨 및 캐시의 다른 배치가 가능하고 고려된다.
일부 실시예들에서, 처리 노드(100)의 주소 공간은 병렬 데이터 프로세서(112), 하나 이상의 다른 컴퓨팅 리소스(미도시), 인터페이스(180)를 통해 처리 노드(100)에 연결된 하나 이상의 다른 외부 처리 노드, 임의의 외부 CPU, 입/출력(I/O) 주변 장치(미도시)와 같은 하나 이상의 기타 컴포넌트 및 기타 유형의 컴퓨팅 리소스 사이에서 분할된다. 메모리 맵은 어떤 주소가 어떤 컴포넌트에 매핑되는지, 따라서 특정 주소에 대한 메모리 요청이 어떤 컴포넌트로 라우팅되어야 하는지를 결정하기 위해 유지된다.
외부 CPU와의 통신을 지원하는 것 외에, 링크 인터페이스(150 및 170)는 또한 링크(154 및 174)에서 메시지 및 데이터를 전송함으로써 처리 노드(100)와 다른 외부 처리 노드 간의 통신을 지원한다. 전술한 바와 같이, 다른 설계에서, 처리 노드(100)는 두 개의 링크 인터페이스(150 및 170)가 아닌 다른 개수의 링크 인터페이스를 사용한다. 유사하게, 다른 설계에서, 처리 노드(100)는 두 개의 링크(154 및 174)가 아닌 다른 개수의 링크를 사용한다. 물리적 유닛(152)은 링크(154)로 및 로부터 명령 및 데이터를 처리하고, 클록 주기당 데이터 전송 횟수, 신호 전압 레벨, 신호 타이밍, 신호 및 클록 위상, 클록 주파수와 같은 정보 전송에 사용되는 값을 결정한다. 통신 패브릭(120)에서의 연결과 유사하게, 링크(154 및 174)는 공유 버스 구성, 크로스바 구성 및 브리지를 갖는 계층적 버스를 포함하는 점대점, 패킷 기반, 버스 기반에서 사용될 수 있다.
단일 라인이 링크(154)를 나타내도록 도시되어 있지만, 링크(154)는 신호로서 데이터를 전송할 수 있는 다중 라인 또는 물리적 와이어 또는 레인을 포함한다. 이러한 다중 라인의 예는 하나 이상의 클록 라인, 하나 이상의 제어 라인, 하나 이상의 고속 데이터 라인 및 하나 이상의 저속 데이터 라인이다. 물리적 유닛(152)의 회로부 및 외부 링크 인터페이스에 수반되는 물리적 유닛은 하나 이상의 저속 라인의 데이터 전송 속도보다 큰 하나 이상의 고속 라인의 데이터 전송 속도를 지원한다. 하나 이상의 고속 데이터 라인은 링크(154)의 물리적 계층으로 지칭된다. 하나 이상의 제어 라인 및 하나 이상의 저속 라인은 링크(154)의 물리적 계층으로 지칭된다. 링크(174)는 링크(154)와 유사한 라인을 갖는다.
다양한 실시예들에서, 링크 인터페이스(150, 170)는 전력 차단 유닛(160) 및 링크 인터페이스(150)용으로 도시된 물리적 유닛(152)과 같은 유사한 컴포넌트를 사용한다. 통신 패브릭(120)과 인터페이싱하기 위한 별도의 유닛은 예시의 용이함을 위해 도시되지 않았다. 일 실시예에서, 링크 인터페이스(150)가 비작동 상태에 있을 때, 물리적 유닛(152)은 링크(154)의 하나 이상의 고속 클록 라인 및 하나 이상의 고속 데이터 라인 상에서 신호 및 이에 상응하는 데이터를 전송할 수 없다. 예를 들어, 물리적 계층은 "전력이 차단"된다. 그러나, 물리적 유닛(152)은 링크(154)의 적어도 하나의 저속 클록 라인 및 하나 이상의 저속 데이터 라인에서 신호 및 이에 상응하는 데이터를 전송할 수 있다. 일부 설계에서, 물리적 유닛(152)은 또한 링크(154)의 하나 이상의 제어 라인 상에서 신호를 전송할 수 있다. 예를 들어, 통신 계층은 활성 상태를 유지하지만, 링크(154)의 고속 라인이 작동 중일 때보다 작동 중일 때 더 적은 전력을 소비한다. 여전히 활성인 통신 계층은 링크 인터페이스(150)가 물리적 유닛(152)을 더 높은 전력 관리 상태로 전환시키거나, 전력 차단된 물리적 유닛(152)을 "전력 공급(power up)"할 수 있게 한다.
본원에 사용된 바와 같이, "전력 차단(power down)"은 컴퓨팅 시스템이 여전히 전력 공급을 받는 동안 컴포넌트가 최소한의 전력을 소비하도록 컴포넌트에 대한 단계를 수행하는 것을 의미한다. 일부 설계에서, 전력 차단에는 해당 컴포넌트에 대해 최저 성능 P-상태와 같은 최저 성능 전력 관리 상태를 선택하는 것이 포함된다. 다른 설계에서, 컴포넌트의 전력을 차단하는 것은 컴포넌트의 순차 요소 및 저장 요소에 대한 클록 신호를 디스에이블시키고 컴포넌트의 여러 서브 컴포넌트에 대한 전력 공급 장치에 대한 연결을 디스에이블시키는 C-상태를 선택하는 것을 포함한다. 또 다른 설계에서, 컴포넌트를 절전 모드로 전환하는 것은 컴포넌트의 전력 차단과 같다. 전력 차단 유닛(160)의 하드웨어 회로는 링크(154)의 물리적 계층 및 링크 인터페이스(150)의 대응하는 회로부의 전력 차단 시기 및 기간을 결정한다. 사용된 바와 같이, 프로세서 또는 노드와 같은 컴포넌트 또는 서브 컴포넌트는 컴포넌트가 태스크 실행과 같은 작업을 수행할 때 "활성"이라고 한다. 컴포넌트가 수행할 작업이 없고 비활성 상태인 경우 해당 컴포넌트를 "유휴" 상태라고 한다.
전력 차단 유닛(160)은 링크(154)를 통해 전송된 데이터를 모니터링하고, 유휴 조건을 검출하고, 검출된 유휴 조건에 기초하여 물리적 유닛(152)의 컴포넌트의 전력 차단을 위한 단계를 수행할 수 있는 회로부를 사용한다. 다양한 실시예들에서, 전력 차단 유닛(160)은 클라이언트(110)의 하나 이상의 처리 유닛이 활성 또는 유휴 상태인 동안 고속 데이터 라인에 대응하는 물리적 유닛(152)의 컴포넌트의 전력을 차단한다. 물리적 유닛(152)의 동작 상태에 기초하여, 전력 컨트롤러(140)는 하나 이상의 외부 처리 노드가 여전히 활성인 동안 노드(100)의 전력을 차단할 수 있다. 이러한 단계에 대한 추가 설명은 다음 논의에서 제공된다.
도 3을 참조하면, 다중 노드 컴퓨팅 시스템(200)의 일 실시예의 일반 블록도가 도시된다. 예시된 실시예에서, 처리 노드(또는 노드)(210A-210D) 및 적어도 링크(220, 222 및 228)를 포함하는 파티션의 일부가 도시된다. 링크(220, 222 및 228)는 링크(154 및 174)(도 1의)에 대해 앞서 설명된 바와 같이 다중 라인 또는 레인을 포함한다. 일 실시예에서, 파티션(240)은 서버의 다중 소켓 마더보드의 소켓에 배치된 다중 칩 모듈(Multi-Chip Module; MCM)이다. 본원에 사용된 바와 같이, "파티션"은 컴퓨팅 시스템(200)이 하드웨어의 가상화를 활용할 때 "하이브(hive)"라고도 한다. 일부 설계에서, 노드(210A-210D)는 태스크를 처리하기 위해 GPU를 이용하는 불균일 메모리 액세스(Non-Uniform Memory Access; NUMA) 노드이다.
하나 이상의 노드(210A-210D)의 하나 이상의 클라이언트(270)는 할당된 태스크를 수신한다. 다양한 실시예들에서, 파티션(240)의 처리 노드(210A-210D) 각각은 (도 1의) 처리 노드(100)에 대해 앞서 설명된 기능을 갖는다. 예를 들어, 노드(210A)의 클라이언트(270)는 클라이언트(110)(도 1)와 동등하고 링크 인터페이스(280, 282 및 284) 각각은 (도 1의) 링크 인터페이스(150, 170)와 동등하다. 일 실시예에서, 링크(220, 222 및 228)용 링크 인터페이스는 Advanced Micro Devices, Inc.의 GPU 간 상호 연결을 위한 xGMI 상호 연결과 같은 동일한 통신 프로토콜을 지원한다.그러나 기타 유형의 통신 프로토콜이 가능하고 고려된다. 통신 프로토콜은 클록 주기당 데이터 전송 횟수, 신호 전압 레벨, 신호 타이밍, 신호 및 클록 위상, 클록 주파수와 같은 링크 상에서의 정보 전송에 사용되는 값을 결정한다.
링크 인터페이스(LI)(280)는 링크(222) 상의 노드(210C)와 메시지(명령) 및 페이로드 데이터를 전송할 수 있고, 링크 인터페이스(282)는 링크(228) 상의 노드(210D)와 메시지 및 페이로드 데이터를 전송할 수 있으며, 링크 인터페이스(284)는 링크(220) 상의 노드(210B)와의 메시지 및 페이로드 데이터를 전송할 수 있다. 다양한 설계에서, 링크 인터페이스(280 및 282)는 물리적 유닛(250) 및 전력 차단 유닛(260)과 같은 링크 인터페이스(284)에 대해 도시된 바와 같은 유사한 컴포넌트를 포함한다. 노드(210A)의 통신 패브릭과 인터페이싱하기 위한 별도의 유닛은 예시의 용이함을 위해 도시되지 않았다. 다양한 실시예들에서, 물리적 유닛(250)은 물리적 유닛(152)(도 1의)과 동등한 기능을 갖는다. 마찬가지로, (도 1의) 전력 차단 유닛(160) 및 전력 차단 유닛(260)은 다음 논의에서 제공되는 전력 차단 유닛(260)의 추가 설명과 동등한 기능을 갖는다.
전력 차단 유닛(260)은 모니터(262), 카운터(264), 예측기(266) 및 프로그래밍 가능한 구성 및 상태 레지스터(CSR)(268)를 포함한다. 다양한 실시예들에서, 컴포넌트(262-268)는 하드웨어 회로로 구현된다. 일 실시예에서, 제어 유닛의 기능은 모니터(262)에서 제공된다. 다른 실시예에서, 제어 유닛의 기능은 개별 유닛에서 제공된다. 다양한 실시예들에서, 노드 사이의 링크(220, 222 및 228)를 통해 전송된 메시지는 하나 이상의 노드의 동작 상태 표시, 전력 차단 요청, 전력 차단 요청에 대한 전력 차단 응답, 전력 차단 요청 철회, 중단, 활성 상태 또는 유휴 상태와 같은 클라이언트(270)의 하나 이상의 프로세서의 동작 상태의 표시, 클라이언트(270)의 하나 이상의 프로세서의 전력 관리 상태의 표시, 및 기타 정보를 포함한다. 단일 메시지가 나열된 예들 중 둘 이상을 포함하는 것이 가능하다는 점에 유의한다. 일 예에서, 노드들 사이에서 전송되는 단일 메시지는 전력 차단 응답 및 클라이언트(270)의 하나 이상의 프로세서의 동작 상태 표시를 모두 포함한다. 단일 메시지에 결합된 나열된 예들의 다른 조합이 가능하고 고려된다. 일 실시예에서, 링크(220, 222 및 228)의 하나 이상의 링크는 두 노드 사이의 점대점 통신 채널이다. 물리적 레벨에서, 링크는 하나 이상의 레인을 포함한다.
전력 관리를 위한 분산형 접근 방식을 사용하여, 컴퓨팅 시스템(200)의 시스템 전체 전력 차단을 수행하기 전에 컴퓨팅 시스템(200)의 컴포넌트 전력을 차단하기 위한 협상이 발생한다. 전력 차단에 대한 협상은 컴포넌트 레벨에서 발생한다. 다음 논의는 링크 인터페이스(284)의 회로부에 의해 수행되는 단계를 설명하지만, 링크 인터페이스(280 및 282)의 회로부는 또한 유사한 단계를 수행할 수 있다. 노드(210A)의 링크 인터페이스(284)의 모니터(262)는 유휴 조건을 검출할 수 있다. 일 실시예에서, 유휴 조건의 한 예는 노드(210A)에서 210B로 전송할 메시지 및/또는 페이로드 데이터를 저장하는 입력 큐가 비어 있거나, 그렇지 않으면 노드(210B)로 전송할 메시지 또는 데이터를 저장하지 않는 것이다. 입력 큐는 전력 차단 유닛(260) 및 물리적 유닛(250) 중 어느 하나에 위치된다. 또한, 링크 인터페이스(284)는 노드(210B)로부터 수신되는 데이터를 검출하지 않는다.
모니터(262)가 링크 인터페이스(284)의 유휴 조건을 검출하고 예측기(266)가 검출된 유휴 조건이 링크 인터페이스(284)가 적어도 타겟 유휴 임계 시간 기간 동안 유휴 상태를 유지하게 한다는 예측을 제공할 때, 전력 차단 유닛(260)은 링크 인터페이스(284)의 전력 차단 협상을 지연없이 시작한다. 카운터(264)는 또한 타이머라고도 한다. 카운터(264) 중 하나는 유휴 조건의 검출에서 시작하는 지속시간을 측정하고, 전력 차단 유닛(260)의 회로부는 측정된 지속시간이 링크 인터페이스(284)의 전력을 차단하기 위한 중단 전에 타겟 유휴 시간 기간에 도달하는지 여부를 결정한다. 타겟 유휴 시간 기간은 (도 1의) 타임라인(50)의 지속시간 "D1"과 동일하다. 검출된 유휴 조건 및 예측기(266)로부터의 예측에 기초하여, 전력 차단 유닛(260)은 링크 인터페이스(284)의 컴포넌트 및 노드(210B)에서 대응하는 링크 인터페이스의 컴포넌트의 전력을 차단하라는 요청을 나타내는 링크 전력 차단 요청을 링크(220) 상의 노드(210B)로 전송한다.
모니터(262)가 유휴 조건을 검출하고 예측기(266)가 검출된 유휴 조건이 링크 인터페이스(284)가 적어도 타겟 유휴 임계 시간 기간 동안 유휴 상태를 유지하지 못한다는 예측을 제공할 때, 전력 차단 유닛(260)은 대기 임계 시간 기간 동안 전력 차단의 협상을 지연한다. 대기 임계 시간 기간은 (도 1의) 타임라인(50)의 지속시간 "D7"과 동일하다. 전력 차단 유닛(260)은 링크(220) 상에서 노드(210B)에 전력 차단 요청을 전송하기 전에 대기 임계 시간 기간이 경과할 때까지 대기함으로써 링크(220)의 전력 차단을 위한 단계에 대기 임계 시간 기간을 삽입한다. 카운터(264) 중 하나는 유휴 조건의 검출에서 시작하는 지속시간을 측정하고, 전력 차단 유닛(260)의 회로부는 사전에 중단이 발생하지 않으면 측정된 지속시간이 대기 임계 시간 기간에 도달하는 시기를 결정한다. 다양한 실시예들에서, 타겟 유휴 시간 기간 및 대기 임계 시간 기간 각각은 CSR(268)의 프로그래밍 가능한 구성 레지스터에 저장된다. 다양한 실시예들에서, 대기 임계 시간 기간은 타겟 유휴 임계 시간 기간보다 크다. 예를 들어, 타겟 유휴 임계 시간 기간에 대한 대기 임계 시간 기간의 비율은 1보다 큰 임의의 양수 값이고, 비율은 설계 요구에 기초하여 선택된다.
모니터(262)가 링크 인터페이스(284)의 유휴 조건을 검출하고 전력 차단 유닛(260)이 타겟 유휴 임계 시간 기간이 링크(220) 상에서 데이터 전송 없이 경과했다고 결정할 때, 예측기(266)는 링크 인터페이스(284)가 적어도 타겟 유휴 임계 시간 기간 동안 유휴 상태를 유지하도록 하는 링크(220)의 다음 검출 유휴 조건의 더 높은 신뢰도를 나타내도록 하는 전력 차단 예측 값을 업데이트한다. 전력 차단 예측 값은 CSR(268)의 레지스터에 저장된다. 일 실시예에서, 전력 차단 유닛(260)은 전력 차단 예측 값을 0으로 초기화하고, 모니터(262)가 링크 인터페이스(284)의 유휴 조건을 검출하고 전력 차단 유닛(260)이 나중에 링크 인터페이스(284)가 적어도 타겟 유휴 임계 시간 기간 동안 유휴 상태로 남아 있다고 결정할 때 전력 차단 예측 값을 1씩 증가시킨다. 그러나 모니터(262)가 링크 인터페이스(284)의 유휴 조건을 검출하지만, 전력 차단 유닛(260)이 링크 인터페이스(284)가 적어도 타겟 유휴 임계 시간 기간 동안 유휴 상태를 유지하지 않았다고 결정할 때, 전력 차단 유닛(260)은 전력 차단 예측 값을 2씩 감소시킨다. 일 실시예에서, 전력 차단 예측 값의 최소값은 1이다. CSR(268)은 성공 임계값을 저장한다. 일 실시예에서, 성공 임계값은 4이다. 전력 차단 유닛(260)이 전력 차단 예측 값을 업데이트한 후, 예측기(266)는 업데이트된 전력 차단 예측 값을 성공 임계값과 비교한다. 초기 전력 차단 예측 값, 증가량, 감소량 및 성공 임계값에 대해 예시에서 사용된 상기 값들 이외의 값들이 가능하며 고려된다는 점에 유의한다.
전력 차단 예측 값이 성공 임계값 이상일 때, 예측기(266)는 링크 인터페이스(284)의 현재 검출 유휴 조건이 링크 인터페이스(284)가 적어도 타겟 유휴 시간 기간 동안 유휴 상태를 유지하도록 하는 것이라는 예측을 제공한다. 예를 들어, 이진 논리 하이 값은 현재 유휴 조건에 대해 예측된 "예"를 나타낸다. 다른 설계에서, 이진 로직 로우 값은 예측된 "예"를 나타낸다. 반대로, 전력 차단 예측 값이 성공 임계값 미만일 때, 예측기(266)는 링크 인터페이스(284)의 현재 검출 유휴 조건이 링크 인터페이스(284)가 적어도 타겟 유휴 시간 기간 동안 유휴 상태를 유지하지 못하도록 하는 것이라는 예측을 제공한다. 예를 들어, 이진 논리 로우 값은 현재 유휴 조건에 대해 예측된 "아니오"를 나타낸다. 다른 설계에서, 이진 로직 하이 값은 예측된 "아니오"를 나타낸다.
또한, 전력 차단 예측 값, 전력 차단 예측 값의 증가 및 감소 값, 대기 임계 시간 기간(230), 타겟 유휴 임계 시간 기간 및 성공 임계값 중 하나 이상이 특정 조건의 검출 시에 리셋된다는 것이 고려된다. 이러한 특정 조건의 예들로는 특정 시간 기간이 경과한 경우, 새 워크로드를 검출 동안 등이 있다. 상기에 설명된 바와 같이, 전력 차단 유닛(260)은 적어도 전력 차단 예측 값, 전력 차단 예측 값의 증가 및 감소 값, 대기 임계 시간 기간(230), 타겟 유휴 임계 시간 기간 및 성공 임계값을 사용하여 링크(220) 상에서 전력 차단 요청을 노드(210B)로 전송할 시기를 결정한다. 링크의 전력 차단의 추가 단계가 다음의 논의에서 제공된다.
이제 도 4로 돌아가면, 다중 노드 컴퓨팅 시스템(300)의 일 실시예의 일반 블록도가 도시된다. 앞에서 설명한 회로부는 동일하게 번호가 매겨진다. 예시적인 실시예에서, 호스트 프로세서(302)는 스위치(304)를 통해 다중 노드 파티션(340)으로 명령, 메시지 및 페이로드 데이터를 전송한다. 다른 실시예들에서, 컴퓨팅 시스템(300)은 별도의 호스트 프로세서(302)를 갖지 않으며, 태스크를 서로에게 할당하고 전송하기 위해 노드(210A-210D) 내의 CPU 또는 다른 프로세서에 의존한다. 일 실시예에서, 파티션(340)은 서버의 다중 소켓 마더보드의 소켓에 배치된 다중 칩 모듈(MCM)이다. 파티션(340)은 링크(220-230)를 통해 서로 연결된 처리 노드(또는 노드들)(210A-210D)를 포함한다. 링크(220-230)는 (도 1의) 링크(154 및 174))에 대해 앞서 설명된 바와 같이 다중 라인 또는 레인을 포함한다. 앞서 설명된 바와 같이, 일 실시예에서, 링크 인터페이스 링크(220-230)는 Advanced Micro Devices, Inc.의 GPU 간 상호 연결을 위한 xGMI 상호 연결과 같은 동일한 통신 프로토콜을 지원한다.그러나 기타 유형의 통신 프로토콜이 가능하고 고려된다.
통신 패브릭, 메모리 인터페이스, 전력 컨트롤러, 중단 컨트롤러 및 위상 고정 루프(phased locked loop; PLL) 또는 기타 클록 생성 회로부는 쉽게 설명하기 위해 도시되지 않았다. 일부 설계에서, 호스트 프로세서(302)는 범용 중앙 처리 장치(CPU)이다. 스위치(304)는 PCIe(Peripheral Component Interconnect Express), Advanced Micro Devices, Inc.의 Infinity Fabric, 및 Advanced Micro Devices, Inc.의 Infinity Architecture와 같은 통신 프로토콜을 지원한다.그러나 기타 유형의 통신 프로토콜이 가능하고 고려된다.
예시된 실시예에서, 노드(210A-210D)가 완전히 연결된 것으로 도시되어 있지만, 다른 실시예에서는 하나 이상의 링크(220-230)가 파티션(240)에 포함되지 않는다. 일부 실시예들에서, 컴퓨팅 시스템(200)은 링크(220-230) 외에 노드(210A-210D) 사이의 다른 링크를 포함한다. 일 실시예에서, 이러한 다른 링크는 서비스 요청으로의 데이터 전송에 사용되는 반면, 링크(220-230)는 컴퓨팅 시스템(200) 컴포넌트의 전력 차단을 협상하기 위한 메시지와 같은 메시징에 사용된다. 호스트 프로세서(302)는 프로세스의 스레드와 같은 태스크를 노드(210A-210D)에 할당한다. 일 예에서, 호스트 프로세서(302)는 처리 노드(210A-210D) 각각에 250개의 태스크를 할당함으로써 하나 이상의 소프트웨어 애플리케이션의 1,000개의 태스크 처리를 분할한다. 호스트 프로세서(302)는 태스크 1-250을 노드(210A)에 할당하고, 태스크 251-500를 노드(210B)에 할당하고, 태스크 501-750을 노드(210C)에 할당하고, 태스크 751-1,000을 노드(210D)에 할당한다. 추가로, 노드(210A-210D) 각각은 다른 명령 및 태스크 외에 직접 메모리 액세스(direct memory access; DMA) 요청을 노드(210A-210D) 중 다른 하나로 전송할 수 있다. 하나 이상의 소프트웨어 애플리케이션은 그래픽 렌더링, 신경망 훈련, 과학 컴퓨팅, 비즈니스 애플리케이션 및 의료 애플리케이션 등과 같은 병렬 데이터 애플리케이션을 지향한다. 컴퓨팅 시스템(200)의 성능을 증가시키고 호스트 프로세서(202)를 지원하기 위해, 사용된다면, 일부 설계에서 컴퓨팅 시스템(300)은 가상화 소프트웨어를 사용한다.
가상화 소프트웨어는 가상 머신(virtual machine; VM) 운영 체제와 컴퓨팅 시스템(300)의 하드웨어 사이의 인터페이스 역할을 한다. 가상화 소프트웨어에는 그래픽 렌더링 응용 프로그램용 그래픽 드라이버와 같은 여러 가상 머신용 드라이버가 포함되어 있어, 여러 가상 머신이 단일 물리적 GPU에 동시에 직접 액세스하도록 할 수 있다. 이제, 단일 물리적 GPU는 다수의 워크로드 간에 공유되며 호스트 프로세서(302)에 의해 이전에 수행된 일부 작업은 이제 노드(210A-210D)의 GPU로 오프로드된다. 본원에 사용된 바와 같이, "하이브"는 "VM 하이브"라고도 한다. 현재 워크로드에 사용되고 호스트 프로세서(202)로부터 할당된 태스크를 수신하는 노드(210A-210D)의 노드는 가입된 노드로 간주된다. 반대로, 현재 워크로드에 사용되지 않고 호스트 프로세서(302)로부터 할당된 태스크를 수신하지 않는 노드(210A-210D)의 노드는 가입되지 않은 노드로 간주된다. 다양한 실시예들에서, 컴퓨팅 시스템(300)의 링크 인터페이스(284)와 같은 링크 인터페이스는 전력 관리를 위한 분산형 접근 방식을 지원한다. 컴퓨팅 시스템(300)의 전력 차단을 위한 협상은 컴퓨팅 시스템(200)에 대해 앞서 설명된 단계를 사용하여 컴포넌트 레벨에서 발생한다.
앞서 설명된 바와 같이, (도 2의) 컴퓨팅 시스템(200)에 관해, 링크 인터페이스(284)의 전력 차단 유닛(260)은 적어도 전력 차단 예측 값, 전력 차단 예측 값의 증가 및 감소 값, 대기 임계 시간 기간, 타겟 유휴 임계 시간 기간 및 성공 임계값을 사용하여 링크(220) 상에서 전력 차단 요청을 노드(210B)로 전송할 시기를 결정한다. 앞서 설명된 바와 같이, 링크 인터페이스(280 및 282)와 같은 컴퓨팅 시스템(300)의 다른 링크 인터페이스는 링크 인터페이스(284)의 물리적 유닛(250) 및 전력 차단 유닛(260)과 같은 컴포넌트를 사용한다. 일 예에서, 링크 인터페이스(284)와 유사한 컴포넌트(250-268)를 갖는 링크 인터페이스(280)는 전력 차단을 위한 요청을 보낼 자격이 있다. 노드(210A)의 링크 인터페이스(280)는 링크(222)를 통해 노드(210C)에 요청을 전송한다.
노드(210A)의 링크 인터페이스(280)가 전력 차단 요청이 승인된 노드(210C)의 링크 인터페이스로부터 전력 차단 응답을 수신하면, 노드(210A)의 링크 인터페이스(280) 및 노드(210C)의 해당 링크 인터페이스는 링크(222)의 전력을 차단하는 단계를 수행하도록 진행한다. 이 시점은 (도 1의) 타임라인(50)에서 지속시간 "D3"의 시작과 동일하다. 노드(210A 및 210C)의 프로세서 또는 다른 클라이언트가 여전히 활성인지 여부에 관계없이 링크(222)의 링크 인터페이스에 대해 전력 차단 동작이 수행된다. 일 실시예에서, 링크 인터페이스(280)는 전력 차단 응답과 함께 노드(210C)의 하나 이상의 클라이언트의 동작 상태 표시를 수신한다. 추가로, 링크 인터페이스(280)가 하나 이상의 클라이언트(270)의 동작 상태 표시와 함께 전력 차단 요청을 전송하는 것이 가능하다. 또한, 노드(210A)는 노드(210B), 노드(210D) 및 노드(210A)와 노드(210C)에 있는 클라이언트의 동작 상태 및/또는 전력 관리 상태의 표시를 포함하는 호스트 프로세서(302) 중 하나 이상에 통지를 전송하는 것이 고려된다. 따라서 노드(210A 및 210C) 중 하나 이상의 프로세서가 활성인 동안 링크(222)의 전력을 차단하는 것이 가능하다. 앞서 설명된 바와 같이, 링크(222)의 물리적 계층은 전력이 차단되는 반면 링크(222)의 통신 계층은 전력 공급된 상태로 유지된다. 유사한 분산형 접근 방식이 링크(220)에 대한 노드(210A 및 210B), 링크(224)에 대한 노드(210C 및 210D), 링크(226)에 대한 노드(210B 및 210D) 등에 의해 지원된다.
일부 설계에서, 노드(210A)의 전력 컨트롤러는 노드(210A)의 링크(220, 222, 228)의 임계 개수의 링크가 전력 차단되었는지 여부를 모니터링한다. 일 예에서, 링크의 임계 개수는 2이고 링크(220 및 222)는 전력이 차단되었다. 이 예에서, 링크(228)는 여전히 노드(210A)에 대해 전력이 공급되어 있다. 임계 개수의 링크가 노드(21A)에 대해 전력이 차단되었지만, 각 링크는 전력이 차단되지 않고, 노드(210A)의 프로세서가 실행할 태스크가 남아 있음을 나타내는 경우, 일 실시예에서, 노드(210A)의 전력 컨트롤러는 프로세서의 전력 관리 상태를 고성능 전력 관리 상태로 변경한다. 일부 예들에서, 고성능 전력 관리 상태로의 전환/변경은 제1 P-상태에서 고성능 제2 P-상태로의 전환이다. 다른 예들에서, 고성능 전력 관리 상태로의 전환/변경은 C 상태에서 P 상태로의 전환이다. 임계 개수의 링크가 전력을 소비하지 않는 동안, 노드(210A)의 프로세서는 고성능 전력 관리 상태에서 태스크를 실행할 수 있다.
링크(220, 222 및 228) 각각이 노드(210A)에 대해 전력이 차단되었고, 노드(210A)의 프로세서가 유휴 상태임을 나타낼 경우, 일 실시예에서, 노드(210A)의 전력 컨트롤러는 외부 노드의 프로세서가 활성인지에 상관없이 노드(210A)의 컴포넌트의 전력을 차단한다. 예를 들어, 노드(210A)의 전력 컨트롤러는 노드(210B, 210C 및 210D)의 프로세서가 활성인지 유휴 상태인지에 관계없이 노드(210A)의 전력을 차단한다. 노드(210A)의 전력 컨트롤러는 노드(210A)의 통신 패브릭의 전력 관리 상태를 더 낮은 성능의 전력 관리 상태로 변경한다. 일부 예들에서, 저성능 전력 관리 상태로의 전환/변경은 제1 P-상태에서 저성능 제2 P-상태로의 전환이다. 다른 예들에서, 저성능 전력 관리 상태로의 전환/변경은 P 상태에서 C 상태로의 전환이다. 일부 실시예들에서, 저성능 전력 관리 상태로의 전환/변경은 DRAM에 의해 구현된 메모리와 같은 시스템 메모리가 자체 리프레시 모드로 진입할 수 있음을 나타낸다. 노드(210B-210D)용 전력 컨트롤러는 노드(210A)용 전력 컨트롤러와 유사한 방식으로 동작한다. 일부 실시예들에서, 노드(210A)는 노드(210B-210D) 중 하나 이상과 호스트 프로세서(302)에 노드(210A)가 전력 차단될 것이라는 메시지를 통신 계층을 통해 전송한다.
링크(220-230)를 통한 데이터 전송은 노드(210A-210D)가 실행하는 워크로드 유형으로 인해 시간이 지남에 따라 변경된다. 일 예에서, 노드(210A-210D)는 신경망을 훈련시키는 태스크를 실행한다. 훈련에는 계산 단계와 통신 단계 사이의 주기적인 전환이 포함된다. 계산 단계 동안, 노드(210A-210D)의 프로세서는 (도 1의) 메모리(132)와 같은 로컬 시스템 메모리에 저장된 데이터를 사용하여 태스크를 처리한다. 계산 단계 동안, 노드(210A-210D)의 전력 컨트롤러 및 링크 인터페이스는 분산된 개별 기반으로 미사용 링크(220-230)의 전력을 차단한다. 앞서 설명된 바와 같이, 노드(210A)와 같은 노드(210A-210D)의 특정 노드에 대해 적어도 임계 개수의 링크의 전력이 차단되는 동안, 노드(210A)의 전력 컨트롤러는 노드(210A)의 하나 이상의 프로세서의 전력 관리 상태를 신경망 워크로드의 계산 단계를 실행하기 위한 고성능 전력 관리 상태로 변경한다. 일부 실시예들에서, 노드(210A)는 또한 노드(210A)의 프로세서의 새로운 고성능 전력 관리 상태 및/또는 새로운 동작 상태의 표시를 포함하는 노드(210B-210D)의 하나 이상의 활성 노드에 메시지를 전송한다. 계산 단계가 종료된 후, 노드(210A-210D)는 공유할 업데이트된 가중치 값을 갖는다. 링크(220-230)의 통신 계층을 이용하여, 전력 컨트롤러 및 노드(210A-210D)의 링크 인터페이스는 전력이 차단된 링크(220-230)의 링크에 전력을 공급한다. 링크에 다시 전력이 공급되면, 노드(210A-210D)는 통신 단계 중에 업데이트된 가중치를 서로에게 전송한다.
일부 설계에서, 호스트 프로세서(302)의 전력 컨트롤러는 임계 개수의 노드(210A-210D)가 전력이 차단되었는지 여부를 모니터링한다. 일 예에서, 링크의 임계 개수는 2이고 노드(210A 및 210B)는 전력이 차단된 반면 노드(210C 및 210D)는 전력이 공급된 상태로 유지된다. 링크(228)는 여전히 노드(210A)에 대해 전력이 공급되어 있다. 임계 개수의 노드가 전력이 차단되었지만, 각 노드는 전력이 차단되지 않고, 호스트 프로세서(302)가 실행할 태스크가 남아 있음을 나타내는 경우, 일 실시예에서, 호스트 프로세서(302)의 전력 컨트롤러는 프로세서(202)의 전력 관리 상태를 고성능 전력 관리 상태로 변경한다. 임계 개수의 노드가 컴퓨팅 시스템(300)의 전력을 소비하지 않기 때문에, 호스트 프로세서(302)는 고성능 전력 관리 상태에서 태스크를 실행할 수 있다. 노드(210A-210D)각각의 전력이 차단되고, 호스트 프로세서(302)가 유휴 상태임을 나타낼 경우, 일 실시예에서, 호스트 프로세서(302)의 전력 컨트롤러는 호스트 프로세서(302) 및 그에 대응하는 메모리의 전력을 차단한다.
이제 도 5를 참조하면, 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법(400)의 일 실시예가 도시된다. 설명을 위해, 이 실시예(뿐만 아니라 도 6-8)의 단계가 순차적으로 도시된다. 그러나 기술된 방법의 다양한 실시예들에서, 설명된 요소 중 하나 이상이 도시된 것과 다른 순서로 동시에 수행되거나, 완전히 생략된다는 점에 유의한다. 또한, 다른 추가 요소가 원하는 대로 수행된다. 본 명세서에 설명된 다양한 시스템 또는 장치들 중 어느 것은 방법(400)을 구현하도록 구성된다.
두 개 이상의 노드가 컴퓨팅 시스템의 파티션에 배치된다. 노드에는 하나 이상의 프로세서, 로컬 메모리, 전력 컨트롤러 및 링크를 통해 다른 노드와 메시지를 전송하기 위한 다중 링크 인터페이스가 포함된다. 일 실시예에서, 호스트 프로세서는 노드의 프로세서에 태스크를 할당한다. 다양한 설계에서, 호스트 프로세서는 범용 CPU이다. 다른 실시예들에서, 애플리케이션은 별도의 노드에서 실행되며, 노드의 CPU는 노드의 GPU와 같은 병렬 데이터 프로세서에 태스크를 할당한다. 추가로, 노드 각각은 다른 명령 및 태스크뿐만 아니라 직접 메모리 액세스(DMA) 요청을 노드 중 다른 하나로 전송할 수 있다. 노드의 전력이 차단되어 있지만, 노드가 현재 워크로드에 필요한 경우, 호스트 프로세서와 활성 상태인 다른 노드 중 하나 이상이 전력이 차단된 노드에 전력 공급 요청을 전송한다. 일 예에서, 호스트 프로세서는 전력이 차단된 노드의 링크의 통신 계층에서 전송되는 전력 공급 요청 표시를 전송한다. 다른 예에서, 다른 활성 노드는 전력이 차단된 노드의 GPU와 같은 프로세서의 메모리에 직접 메모리 액세스(DMA) 요청을 전송한다. 일부 워크로드의 경우, 각 노드는 워크로드에 대해 활성 상태이며 호스트 프로세서 및 다른 활성 노드 중 하나 이상으로부터 할당된 태스크를 수신한다. 다른 워크로드의 경우, 하나 이상의 노드가 사용되지 않으며 할당된 태스크를 수신하지 않는다. 이러한 노드와 해당 링크는 유휴 상태가 되며 측정된 유휴 시간에 기초하여 전력을 차단할 자격이 주어진다. 노드의 프로세서에 태스크가 할당되는 방식에 관계없이, 워크로드에 미사용 노드의 링크의 전력을 차단하는 단계는 워크로드에 사용되는 노드의 링크의 전력을 차단하는 단계와 유사하지만, 계산 단계 동안 또는 태스크 완료 시 링크가 유휴 상태가 된다. 이러한 단계는 아래에서 자세히 설명된다.
태스크가 할당된 노드의 프로세서는 태스크를 처리한다(블록(402)). 다양한 설계에서, 노드는 그래픽 처리 장치(GPU)를 사용하고, 노드는 태스크를 처리하기 위해 GPU를 사용하는 불균일 메모리 액세스(NUMA) 노드이다. 노드의 링크 인터페이스는 모니터를 사용하여 링크 인터페이스에서 데이터 전송을 모니터링한다(블록 404). 링크 인터페이스의 유휴 조건의 한 예는 다른 노드로 전송할 메시지 및/또는 페이로드 데이터를 저장하는 링크 인터페이스의 입력 큐가 비어 있거나, 그렇지 않으면 입력 큐가 다른 노드로 전송될 메시지 또는 데이터를 저장하지 않는 것이다. 추가로, 링크 인터페이스는 다른 노드로부터 수신되는 데이터가 없음을 검출한다. 링크 인터페이스의 회로부가 유휴 조건(조건 블록(406)의 "아니오" 분기)을 검출하지 않으면, 방법(400)의 제어 흐름은 노드가 태스크를 처리하는 블록(402)으로 돌아간다.
링크 인터페이스의 회로부가 유휴 조건을 검출하지만(조건 블록(406)의 "예" 분기), 링크 인터페이스의 회로부가 적어도 타겟 유휴 임계 시간 동안 링크 인터페이스가 유휴 상태를 유지하도록 하는 것이라는 유휴 상태를 예측하지 않는(조건 블록(408)의 분기 "아니오") 경우, 링크 인터페이스는 링크 인터페이스의 전력 차단을 시도하기 전에 대기 임계 시간 기간이 경과할 때까지 대기하기 시작한다(블록(410)). 다양한 실시예들에서, 대기 임계 시간 기간은 타겟 유휴 임계 시간 기간보다 크다. 다양한 실시예들에서, 타겟 유휴 임계 시간 기간에 대한 대기 임계 시간 기간의 비율은 1보다 큰 임의의 양수 값이고, 비율은 설계 요구에 기초하여 선택된다. 타겟 임계 시간 기간 및 대기 임계 시간 기간은 (도 1의) 타임라인(50)의 지속시간 "D1" 및 "D7"과 동일하다.
링크 인터페이스가 타겟 유휴 임계 시간 기간 동안 유휴 상태로 유지되는 것을 방지하는 중단을 링크 인터페이스가 검출한 경우(조건 블록(412)의 "예" 분기), 방법(400)의 제어 흐름은 노드의 프로세서가 할당된 태스크를 처리하는 블록(402)으로 돌아간다. 이러한 중단의 예는 링크 인터페이스의 입력 큐에 저장하기 위해 동일한 노드의 프로세서로부터 도착하는 메시지, 다른 노드로부터 도착하는 메시지 및 전력 차단 요청 거부를 명시하는 표시와 함께 도착하는 메시지이다. 링크 인터페이스가 타겟 유휴 임계 시간 기간 동안 유휴 상태로 유지되는 것을 방지하는 중단을 링크 인터페이스가 검출하지 않지만(조건 블록(412)의 "아니오" 분기), 대기 임계 시간 기간이 경과하지 않은 경우(조건 블록(414)의 "아니오" 분기), 링크 인터페이스는 계속 대기하고 방법(400)의 제어 흐름은 조건 블록(412)으로 돌아간다. 그러나 링크 인터페이스가 타겟 유휴 임계 시간 기간 동안 유휴 상태로 유지되는 것을 방지하는 중단을 링크 인터페이스가 검출하지 않고(조건 블록(412)의 "아니오" 분기), 대기 임계 시간 기간이 경과된 경우(조건 블록(414)의 "예" 분기), 링크 인터페이스는 대기 임계 시간 기간이 경과할 때까지 대기하지 않고 링크 인터페이스의 전력 차단을 요청하는 단계를 수행하기 시작한다(블록(416)). 다양한 실시예들에서, 링크 인터페이스는 전혀 대기하지 않고 링크 인터페이스의 전력 차단을 요청하는 단계를 수행하기 시작한다. (도 1의) 타임라인(50)을 간략히 참조하면, 링크 인터페이스는 케이스 3에서 지속시간 "D7"에서 지속시간 "D2"의 시작으로 전환한다.
링크 인터페이스가 유휴 조건을 검출하고(조건 블록(406)의 "예" 분기), 링크 인터페이스가 적어도 타겟 유휴 임계 시간 동안 링크 인터페이스가 유휴 상태를 유지하도록 하는 것이라는 유휴 상태를 예측하는 경우(조건 블록(408)의 "예" 분기), 링크 인터페이스는 추가 시간이 경과할 때까지 대기하지 않고 링크 인터페이스의 전력 차단을 요청하는 단계를 수행하기 시작한다(블록(416)). (도 1의) 타임라인(50)을 간략히 참조하면, 링크 인터페이스는 케이스 1 및 케이스 2에 대해 도시된 바와 같이 시간 t1에서 전력 차단 메시징을 시작한다. 일부 실시예들에서, 지속시간 "D2"에서 전력 차단 메시징 동안 수행되는 단계는 전력 차단 요청 표시, 전력 차단 응답(수락/승인, 거부) 표시, 전력 차단 응답의 승인(수락/승인, 거부), 전력 차단 요청의 철회, 노드의 클라이언트 중 하나 이상의 유휴/활성 상태의 표시를 갖는 메시지, 및 해당 링크 인터페이스의 유휴/활성 상태의 표시를 갖는 메시지와 같은 메시지를 전송하는 단계를 포함한다. 이러한 메시지를 전송하는 동안, 링크 인터페이스 및 다른 해당 링크 인터페이스가 전력을 차단할 준비가 되었다고 결정되면, 전력 차단 동작의 시작 표시를 포함하는 메시지가 전송된다. (도 1의) 타임라인(50)을 간략히 참조하면, 이 시점은 지속시간 "D2"에서 지속시간 "D3"으로의 전환과 동일하다. 링크 인터페이스가 타겟 유휴 임계 시간 기간 동안 유휴 상태로 남아있는지 여부는 아래 논의에서 더 설명되는 바와 같이 링크 인터페이스의 예측기를 업데이트하는 데 사용된다.
이제 도 6을 참조하면, 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법(500)의 일 실시예가 도시된다. 두 개 이상의 노드가 컴퓨팅 시스템의 파티션에 배치되며, 태스크가 노드에 할당된다. 노드의 링크 인터페이스는 유휴 조건을 검출한다(블록(502)). 링크 인터페이스가 타겟 유휴 임계 시간 기간이 경과한 것을 검출하지 않고(조건 블록(504)의 "아니오" 분기), 링크 인터페이스가 타겟 유휴 임계 시간 동안 유휴 상태로 유지되는 것을 방지하는 중단을 링크 인터페이스가 검출하지 않은 경우(조건 블록(506)의 "아니오" 분기), 링크 인터페이스는 대기를 계속하고 방법(500)의 제어 흐름은 조건 블록(504)으로 돌아간다. 타겟 유휴 임계 시간 기간은 (도 1의) 타임라인(50)의 지속시간 "D1"과 동일하다.
링크 인터페이스가 타겟 유휴 임계 시간 기간이 경과한 것을 검출하지 않고(조건 블록(504)의 "아니오" 분기), 링크 인터페이스가 타겟 유휴 임계 시간 동안 유휴 상태로 유지되는 것을 방지하는 중단을 링크 인터페이스가 검출하는 경우(조건 블록(506)의 "예" 분기), 링크 인터페이스는 링크 인터페이스가 타겟 유휴 임계 시간 기간 동안 유휴 상태를 유지하도록 한다는 낮은 신뢰도를 나타내도록 하는 전력 차단 예측 값을 업데이트한다(블록(508)). 일 예에서, 특정 링크 인터페이스는 (도 3의) 전력 차단 유닛(260)의 설명 중에 앞서 설명된 바와 같이 전력 차단 예측 값을 감소시킨다. 링크 인터페이스가 타겟 유휴 임계 시간 기간이 경과한 것을 검출하는 경우(조건 블록(504)의 "예" 분기), 링크 인터페이스는 링크 인터페이스가 타겟 유휴 임계 시간 기간 동안 유휴 상태로 유지하도록 한다는 더 높은 신뢰도를 나타내도록 하는 전력 차단 예측 값을 업데이트한다(블록(510)). 일 예에서, 특정 링크 인터페이스는 (도 3의) 전력 차단 유닛(260)의 설명 중에 앞서 설명된 바와 같이 전력 차단 예측 값을 증가시킨다.
특정 링크 인터페이스는 전력 차단 예측 값을 성공 임계값과 비교한다. 전력 차단 예측 값이 성공 임계값보다 작은 경우(조건 블록(512)의 "예" 분기), 특정 링크 인터페이스는 링크 인터페이스의 다음 검출 유휴 조건이 링크 인터페이스가 임계 시간 기간 동안 유휴 상태로 유지되지 않도록 함을 나타내도록 하는 예측을 업데이트한다(블록(514)). 그렇지 않으면, 전력 차단 예측 값이 성공 임계값 이상인 경우(조건 블록(512)의 "아니오" 분기), 특정 링크 인터페이스는 링크 인터페이스의 다음 검출 유휴 조건이 링크 인터페이스가 임계 시간 기간 동안 유휴 상태로 유지되도록 함을 나타내도록 하는 예측을 업데이트한다(블록(516)).
다양한 실시예들에서, 타겟 유휴 임계 시간 기간, 대기 임계 시간 기간, 전력 차단 예측 값 업데이트의 양 및 성공 임계값과 같은 파라미터들은 컴퓨팅 시스템이 다양한 워크로드를 처리하는 동안 컴퓨팅 시스템을 테스트하는 동안 결정된다. 일부 실시예들에서, 링크 인터페이스는 추가 조정 없이 이러한 파라미터들의 결정된 값을 사용한다. 다른 실시예들에서, 링크 인터페이스는 특정 워크로드 유형을 식별하는 식별자와 파라미터에 대한 값 세트 사이의 매핑을 회로부에 저장한다. 따라서, 링크 인터페이스는 처리할 현재 워크로드에 기초하여 파라미터들을 동적으로 조정할 수 있다. 할당된 태스크를 수신할 때, 노드는 워크로드 유형의 표시도 수신하고, 노드의 링크 인터페이스는 분산형 전력 관리에 사용되는 위의 파라미터들을 업데이트할 수 있다.
이제 도 7로 돌아가면, 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법(600)의 일 실시예가 도시된다. 두 개 이상의 노드가 컴퓨팅 시스템의 파티션에 배치되며, 태스크가 노드에 할당된다. 제1 노드의 유휴 제1 링크 인터페이스는 전력 차단을 시작할 시간이라고 결정한다(블록(602)). 예를 들어, 제1 링크 인터페이스의 회로부는 (도 5의) 이전 방법(400)의 블록(416)과 동등한 상태에 도달했다고 결정했다. 예를 들어, 제1 링크 인터페이스의 회로부는 유휴 조건이 검출되었다고 결정하고 유휴 조건이 제1 링크 인터페이스가 타겟 유휴 임계 시간 기간 동안 유휴 상태로 유지되도록 한다는 유휴 조건을 예측한다. 제1 링크 인터페이스는 제1 노드의 제1 링크 인터페이스 및 링크의 다른 쪽에 있는 제2 노드의 제2 링크 인터페이스의 전력을 차단하라는 요청을 해당 링크에 전송한다(블록(604)). 제1 링크 인터페이스는 제2 링크 인터페이스에 전력 차단 요청을 전송한다. 이 전력 차단 요청은 (도 1의) 타임라인(50)의 지속시간 "D2"의 전력 차단 메시징에 사용된 메시지와 동등한 메시지이다. 지속시간 "D2"(전력 차단 메시징의 지속시간) 동안 사용되는 다양한 유형의 전력 차단 메시지의 예는 (도 1의) 타임라인(50), (도 2의) 링크 인터페이스(284) 및 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 (도 4의) 방법(400)의 이전 설명에서 제공된다. 전력 차단 요청을 전송함으로써, 제1 링크 인터페이스는 타임라인(50)의 지속시간 "D2" 동안 발생하는 전력 차단 메시징을 시작했다. 방법(600)의 설명이 전력 차단 메시징을 시작하는 제1 링크 인터페이스를 갖지만, 제2 링크 인터페이스가 제1 링크 인터페이스와 제2 링크 인터페이스 사이에서 전력 차단 메시징을 시작하는 것이 가능하고 고려된다는 점에 유의한다. 즉, (도 1의) 노드(10A-10B)의 링크 인터페이스와 유사하게, 제1 링크 인터페이스 및 제2 링크 인터페이스 각각은 링크 인터페이스의 전력 차단을 시작하고 방법(600)에 대해 설명된 단계를 수행할 수 있다.
제1 링크 인터페이스가 제1 링크 인터페이스가 타겟 유휴 임계 시간 기간 동안 유휴 상태로 유지되는 것을 방지하는 중단을 검출하는 경우(조건 블록(606)의 "예" 분기), 제1 링크 인터페이스는 제1 노드와 제2 노드 사이의 링크 연결을 유지한다(블록(608)). 앞서 설명된 바와 같이, 이러한 중단의 예는 제1 링크 인터페이스의 입력 큐에 저장하기 위해 동일한 노드의 프로세서로부터 도착하는 메시지, 다른 노드로부터 도착하는 메시지 및 전력 차단 요청 거부를 명시하는 표시와 함께 도착하는 메시지이다. 일부 실시예들에서, 제1 링크 인터페이스는 또한 전력 차단 요청의 철회를 나타내는 메시지를 제2 링크 인터페이스로 전송한다.
제1 링크 인터페이스가 제1 링크 인터페이스가 타겟 유휴 임계 시간 기간 동안 유휴 상태로 유지되는 것을 방지하는 중단을 검출하지 않았지만(조건 블록(606)의 "아니오" 분기), 제1 링크 인터페이스가 제2 링크 인터페이스가 전력 차단될 준비가 되었음을 나타내는 전력 차단 응답을 수신하지 않은 경우(조건 블록(610)의 "아니오" 분기), 방법(600)의 제어 흐름은 제1 링크 인터페이스가 제2 링크 인터페이스로부터의 응답을 계속 대기하는 조건 블록(606)으로 돌아간다. 제1 링크 인터페이스가 대기하는 동안, 링크를 통해 보낼 메시지를 저장하는 데 사용되는 큐 및 링크로부터 수신된 메시지를 저장하는 데 사용되는 큐를 모니터링한다.
제1 링크 인터페이스가 대기하는 동안, 제2 링크 인터페이스는 제1 링크 인터페이스로부터 전력 차단 요청을 수신하고 활성 동작 상태인지 유휴 동작 상태인지 여부를 결정한다. 제2 링크 인터페이스가 활성 상태라고 결정하는 경우, 제2 링크 인터페이스는 제1 링크 인터페이스의 전력 차단 요청을 거부하는 전력 차단 응답과 같은 메시지를 전송한다. 일 실시예에서, 메시지에는 제2 링크 인터페이스의 활성 동작 상태 표시가 포함된다. 제2 링크 인터페이스가 유휴 상태라고 결정하는 경우, 제2 링크 인터페이스는 제1 링크 인터페이스의 전력 차단 요청을 수락/승인하는 전력 차단 응답과 같은 메시지를 전송한다. 일 실시예에서, 메시지에는 제2 링크 인터페이스의 유휴 동작 상태 표시가 포함된다. 일부 실시예들에서, 이 유형의 메시지를 보낸 후, 제2 링크 인터페이스는 전력 차단 동작을 수행하기 시작한다. 다른 실시예들에서, 제2 링크 인터페이스는 전력 차단을 계속하라는 제1 링크 인터페이스의 승인을 대기한다. 이 시점은 (도 1의) 타임라인(50)에서 지속시간 "D3"의 시작과 동일하다.
제1 링크 인터페이스가 제1 링크 인터페이스가 타겟 유휴 임계 시간 기간 동안 유휴 상태로 유지되는 것을 방지하는 중단을 검출하지 않았고(조건 블록(606)의 "아니오" 분기), 제1 링크 인터페이스가 제2 링크 인터페이스가 전력 차단될 준비가 되었음을 나타내는 전력 차단 응답을 수신한 경우(조건 블록(610)의 "예" 분기), 제1 링크 인터페이스 및 제2 링크 인터페이스는 전력을 차단한다(블록(612)). 이 전력 차단 응답은 (도 1의) 타임라인(50)의 지속시간 "D2"의 전력 차단 메시징에 사용된 메시지와 동등한 메시지이다. 추가로, 방법(600)의 블록(612)에 도달하는 것은 (도 1의) 타임라인(50)의 지속시간 "D2"에서 지속시간 "D3"으로의 전환과 동등하고 하나 이상의 전력 차단 동작이 시작된다. 앞서 언급된 바와 같이, 제1 링크 인터페이스의 전력을 차단하는 것은 드라이버를 디스에이블시키는 것, 하나 이상의 클록 신호를 디스에이블시키는 것, 제1 링크 인터페이스의 하나 이상의 컴포넌트에 대한 전원 공급 장치를 디스에이블시키는 것, 및 하나 이상의 컴포넌트를 절전 모드 또는 최저 성능 전력 관리 상태로 전환하는 것 중 하나 이상을 포함한다. 다양한 실시예들에서, 제1 링크 인터페이스는 통신 계층의 저속 데이터 라인에 대한 현재 동작 상태를 유지하면서 물리적 계층의 고속 데이터 라인에 대응하는 컴포넌트의 전력을 차단한다.
제2 링크 인터페이스가 전력 차단 수락/승인에 대한 전력 차단 응답을 보낼 경우, 제1 링크 인터페이스는 제1 노드와 제2 노드의 클라이언트가 활성 상태인지 유휴 상태인지에 관계없이 전력을 차단한다. 일 실시예에서, 제1 링크 인터페이스는 제2 노드의 하나 이상의 클라이언트의 동작 상태의 표시를 제2 노드로부터의 전력 차단 응답과 함께 수신한다. 일 예에서, 제2 노드의 적어도 하나의 클라이언트가 활성 상태인 경우, 전력 차단 응답의 표시는 제2 노드에 대한 활성 상태를 명시한다. 반대로, 제2 노드의 각 클라이언트가 유휴 상태인 경우, 전력 차단 응답의 표시는 제2 노드에 대한 유휴 상태를 명시한다. 추가로, 이전 전력 차단에서 전송된 제1 링크 인터페이스가 제1 노드의 하나 이상의 클라이언트의 동작 상태 표시를 요청하는 것이 가능하다. 일부 설계에서, 표시는 전력 차단 응답에 대해 설명된 표시와 유사하다. 또한, 제1 노드 및 제2 노드 중 하나 이상은 제1 노드 및 제2 노드 중 하나 이상에서 클라이언트의 동작 상태의 표시를 포함하는 하나 이상의 다른 노드에 통지(메시지로)를 전송하는 것이 고려된다. 이러한 표시는 다음 논의에서 설명된 바와 같이 노드의 전력을 차단할지 여부를 결정하는 데 사용된다.
이제 도 8을 참조하면, 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법(700)의 일 실시예가 도시된다. 다중 노드의 프로세서는 할당된 태스크를 처리한다(블록(702)). 다중 노드의 제1 노드가 제1 노드의 링크 인터페이스가 전력이 차단되었다고 결정하지 않는 경우(조건 블록(706)의 "아니오" 분기), 파티션의 활성 노드는 나머지 태스크를 계속 처리한다(블록(708)). 그 후, 방법(700)의 제어 흐름은 조건 블록(706)으로 돌아간다. 다중 노드 중 제1 노드가 제1 노드의 링크 인터페이스의 전력이 차단된 것으로 결정되지만(조건 블록(706)의 "예" 분기), 제1 노드의 프로세서가 활성 상태인 경우(조건 블록(710)의 "아니오" 분기), 제1 노드의 전력 컨트롤러는 프로세서의 전력 관리 상태를 고성능 전력 관리 상태로 변경한다(블록(712)). 그 후, 방법(700)의 제어 흐름은 파티션의 활성 노드가 나머지 태스크를 계속 처리하는 블록(708)으로 이동한다. 임계 개수의 링크가 노드에 대해 전력이 차단되었지만, 각 링크는 전력이 차단되지 않고, 프로세서가 실행할 태스크가 남아 있음을 나타내는 경우, 일 실시예에서, 제1 노드의 전력 컨트롤러는 프로세서의 전력 관리 상태를 고성능 전력 관리 상태로 변경한다는 점에 유의한다. 임계 개수의 링크가 전력을 소비하지 않기 때문에, 프로세서는 고성능 전력 관리 상태에서 태스크를 실행할 수 있다.
다중 노드 중 제1 노드가 제1 노드의 링크 인터페이스의 전력이 차단된 것으로 결정되고(조건 블록(706)의 "예" 분기), 제1 노드의 클라이언트가 유휴 상태인 경우(조건 블록(710)의 "예" 분기), 제1 노드는 제1 노드가 유휴 상태임을 명시하는 표시를 파티션의 하나 이상의 다른 노드의 프로세서로 전송한다(블록(714)). 일부 실시예들에서, 고속 물리 계층의 전력이 차단되었기 때문에, 제1 노드는 통신 계층에서 제1 노드의 클라이언트의 활성 상태에서 유휴 상태로의 전환 표시를 전송한다. 제1 노드의 전력 컨트롤러는 클라이언트 및 제1 노드의 다른 컴포넌트의 전력을 차단한다(블록(716)). 예를 들어, 로컬 메모리는 자체 리플레시 모드에 있고, 제1 노드의 프로세서에 대해 하나 이상의 클록 신호가 디스에이블되며, 프로세서의 하나 이상의 전원 공급 장치가 게이트된다. 일부 경우에, 제1 노드는 전력 관리를 위한 분산형 접근 방식을 지원하는 컴퓨팅 시스템에서 전력을 차단시킬 마지막으로 남은 노드이다. 다른 경우에, 제1 노드는 컴퓨팅 시스템에서 전력 차단하기 위해 남아 있는 마지막 노드는 아니지만, 하나 이상의 다른 활성 노드는 블록(714)에서 전송된 표시로 인해 제1 노드의 전력이 차단되었음을 인식한다. 태스크를 처리하기 위해 제1 노드가 다시 한 번 필요할 때, 제1 노드는 할당된 태스크가 준비되었음을 명시하는 표시를 수신하고, 제1 노드는 전력 공급 단계를 수행한다. 이러한 시점에서, 블록(702)의 단계는 태스크를 처리하는 하나 이상의 활성 노드 중 하나인 제1 노드로 다시 수행된다.
이제 도 9로 돌아가면, 다중 노드 컴퓨팅 시스템(900)의 일 실시예의 일반 블록도가 도시된다. 앞에서 설명된 회로부는 동일하게 부호가 지정된다. 예시적인 실시예에서, 호스트 프로세서(302)는 스위치(304)를 통해 다중 노드 파티션(340) 및 다중 노드 파티션(940)으로 명령, 메시지 및 데이터를 전송한다. 일 실시예에서, 파티션(340 및 940) 각각은 서버의 다중 소켓 마더보드의 소켓에 배치된 다중 칩 모듈(MCM)이다. 두 개의 파티션이 도시되어 있지만, 다른 실시예들에서, 컴퓨팅 시스템(900)은 다른 개수의 파티션을 포함한다.
다양한 실시예들에서, 파티션(240)의 처리 노드(210A-210D) 각각 그리고 파티션(640)의 처리 노드(910A-910D) 각각은 (도 2의) 처리 노드(100)에 대해 앞서 설명된 기능을 갖는다. 일 실시예에서, 링크(920-930, 932 및 934)는 링크(220-230)에 의해 지원되는 것과 동일한 통신 프로토콜을 지원한다. 일부 설계에서, 노드(210A-210D) 및 노드(910A-910D)는 태스크를 처리하기 위해 GPU를 이용하는 불균일 메모리 액세스(NUMA) 노드이다. 다양한 실시예들에서, 컴퓨팅 시스템(900)은 (도 2-4의) 컴퓨팅 시스템(100-300)에 대해 앞서 설명된 바와 같이 전력 관리를 위한 분산형 접근 방식을 사용한다. 몇몇 경우에, 링크(932 및 934) 중 하나 이상의 전력이 차단되는 반면 파티션(340 및 940)의 링크 및 노드 중 하나 이상은 전력이 공급된 상태로 유지된다. 일부 경우에, 파티션(340 및 940) 중 하나는 전력이 차단되는 반면 파티션(340 및 940) 중 다른 하나는 전력이 공급된 상태로 유지된다.
도 10을 참조하면, 다중 노드 컴퓨팅 시스템(1200)의 다른 실시예의 일반 블록도가 도시된다. 다양한 실시예들에서, 처리 노드(또는 노드들)(1210A-1210H) 각각은 (도 2의) 처리 노드(100), (도 3-4의) 노드(210A-210D) 및 (도 10의) 노드(910A-910D)에 대해 앞서 설명된 기능을 갖는다. 추가로, 링크(1220-1234) 각각은 (도 3의) 링크 인터페이스(280-284)와 같은 동반 링크 인터페이스를 갖는 (도 3의) 링크(220-230)와 동등한 기능을 갖는다. 일부 실시예들에서, 컴퓨팅 시스템(1200)은 링크(1220-1234) 외에 노드(1210A-1210H) 사이의 다른 링크를 포함한다. 이러한 다른 링크(미도시)는 데이터 통신에 사용되는 반면, 링크(1220-1234)는 전력 관리 메시징에 사용된다. 따라서, 일 실시예에서, 이러한 다른 링크는 서비스 요청으로의 데이터 전송에 사용되는 반면, 링크(1220-1234)는 중앙 집중식, 시스템 전체 전력 차단 및 분산형 컴포넌트-레벨 전력 차단을 협상하기 위한 메시지와 같은 메시징에 사용된다.
예시된 실시예에서, 노드(1210A)는 컴퓨팅 시스템(1200)의 루트(root) 노드(마스터 노드)인 반면, 노드(1210G) 및 노드(1210H) 각각은 리프(leaf) 노드이다. 노드(1210B-1210F) 각각은 루트 노드(1210A)와 리프 노드(1210G-1210H) 사이의 중간 노드이다. 따라서 링 데이터 통신 토폴로지가 사용된다. 다양한 실시예들에서, 컴퓨팅 시스템(900)은 (도 2-4의) 컴퓨팅 시스템(100-300)에 대해 앞서 설명된 바와 같이 전력 관리를 위한 분산형 접근 방식을 사용한다.
다양한 실시예들에서, 소프트웨어 애플리케이션의 프로그램 명령어들은 앞서 설명된 방법 및/또는 메커니즘을 구현하는 데 사용된다. 프로그램 명령어들은 C와 같은 고급 프로그래밍 언어로 하드웨어 동작을 설명한다. 대안으로, Verilog와 같은 하드웨어 설계 언어(hardware design language; HDL)가 사용된다. 프로그램 명령어들은 비일시적 컴퓨터 판독 가능 저장 매체에 저장된다. 다양한 유형의 저장 매체가 사용될 수 있다. 저장 매체는 프로그램 실행을 위해 컴퓨팅 시스템에 프로그램 명령어 및 동반 데이터를 제공하기 위해 사용하는 동안 컴퓨팅 시스템에 의해 액세스 가능하다. 컴퓨팅 시스템은 적어도 하나 이상의 메모리와 프로그램 명령어를 실행하는 하나 이상의 프로세서를 포함한다.
상술한 실시예들은 구현의 비제한적 예일 뿐이라는 것이 강조되어야 한다. 상기 개시 내용이 완전히 이해되면, 당업자는 복수의 변형 및 수정이 명백해질 것이다. 이하의 특허청구범위는 이러한 모든 변형 및 수정을 포함하도록 해석되는 것으로 의도된다.

Claims (20)

  1. 컴퓨팅 시스템에 있어서,
    제1 파티션으로서,
    태스크를 처리하도록 구성된 복수의 노드; 및
    상기 복수의 노드 사이의 복수의 링크를 포함하는, 상기 제1 파티션을 포함하며;
    상기 복수의 노드 중 제1 노드는 상기 제1 노드와 제2 노드 사이의 상기 복수의 링크 중 제1 링크에서 데이터를 전송하도록 구성되는 상기 제1 노드의 제1 링크 인터페이스의 전력 차단을 시작하되,
    상기 제1 링크 인터페이스의 유휴 조건이 발생했고;
    상기 유휴 조건이 상기 제1 링크 인터페이스가 적어도 타겟 유휴 임계 시간 기간 동안 유휴 상태로 유지되도록 한다는 예측을 결정하는 것에 응답하여, 상기 전력 차단을 시작하도록 구성되는, 컴퓨팅 시스템.
  2. 제1항에 있어서, 상기 제1 노드는 상기 타겟 유휴 임계 시간 기간보단 긴 대기 임계 시간 기간 동안 상기 제1 링크 인터페이스의 전력 차단을 시작하는 것을 지연시키되,
    상기 제1 링크 인터페이스의 상기 유휴 조건이 발생했고;
    상기 유휴 조건이 상기 제1 링크 인터페이스가 적어도 상기 타겟 유휴 임계 시간 기간 동안 유휴 상태로 유지되지 않도록 한다는 예측을 결정하는 것에 응답하여, 상기 전력 차단을 시작하는 것을 지연시키도록 더 구성되는, 컴퓨팅 시스템.
  3. 제1항에 있어서, 상기 제1 노드는,
    상기 유휴 조건이 상기 제1 링크 인터페이스가 적어도 상기 타겟 유휴 임계 시간 기간 동안 유휴 상태로 유지되도록 한다는 고 신뢰도를 나타내도록 하는 전력 차단 예측 값을 업데이트하되,
    상기 제1 링크 인터페이스가 상기 타겟 유휴 임계 기간 동안 유휴 상태로 유지되는 것을 방지하는 중단이 상기 타겟 유휴 임계 시간 기간이 경과하기 전에 발생하지 않았다고 결정하는 것에 응답하여, 상기 전력 차단 예측 값을 업데이트하도록 더 구성되는, 컴퓨팅 시스템.
  4. 제3항에 있어서, 상기 제1 노드는,
    상기 유휴 조건이 상기 제1 링크 인터페이스가 적어도 상기 타겟 유휴 임계 시간 기간 동안 유휴 상태로 유지되도록 한다는 저 신뢰도를 나타내도록 하는 전력 차단 예측 값을 업데이트하되,
    상기 제1 링크 인터페이스가 상기 타겟 유휴 임계 기간 동안 유휴 상태로 유지되는 것을 방지하는 중단이 상기 타겟 유휴 임계 시간 기간이 경과하기 전에 발생했다고 결정하는 것에 응답하여, 상기 전력 차단 예측 값을 업데이트하도록 더 구성되는, 컴퓨팅 시스템.
  5. 제4항에 있어서, 상기 중단이 발생한 것으로 결정하기 위해, 상기 제1 노드는 메시지가 상기 제1 링크에서 전송을 위한 상기 제1 인터페이스에 도착했다고 결정하도록 더 구성되는, 컴퓨팅 시스템.
  6. 제4항에 있어서, 상기 제1 링크 인터페이스는,
    상기 전력 차단 예측 값이 임계값 미만이라고 결정하는 것에 응답하여, 상기 제1 링크 인터페이스의 다음 검출 유휴 조건이 상기 제1 링크 인터페이스가 상기 임계 시간 기간 동안 유휴 상태로 유지되지 않도록 함을 나타내도록 하는 예측을 업데이트하도록 더 구성되는, 컴퓨팅 시스템.
  7. 제4항에 있어서, 상기 제1 링크 인터페이스는,
    상기 전력 차단 예측 값이 임계값 이상이라고 결정하는 것에 응답하여, 상기 제1 링크 인터페이스의 다음 검출 유휴 조건이 상기 제1 링크 인터페이스가 상기 임계 시간 기간 동안 유휴 상태로 유지되도록 함을 나타내도록 하는 예측을 업데이트하도록 더 구성되는, 컴퓨팅 시스템.
  8. 제1항에 있어서,
    상기 컴퓨팅 시스템은 제2 파티션을 더 포함하며;
    상기 제1 파티션의 각 노드의 전력이 차단된다고 결정하는 것에 응답하여, 상기 제1 파티션은 상기 제1 파티션의 나머지 컴포넌트의 전력을 차단하는 반면 상기 제2 파티션은 하나 이상의 활성 노드를 갖도록 구성되는, 컴퓨팅 시스템.
  9. 방법으로서,
    제1 파티션에 의해, 복수의 태스크를 처리하는 단계로서, 상기 제1 파티션은,
    태스크를 처리하도록 구성된 복수의 노드; 및
    상기 복수의 노드 사이의 복수의 링크를 포함하는, 상기 처리하는 단계; 및
    상기 복수의 노드 중 제1 노드에 의해, 상기 제1 노드와 제2 노드 사이의 상기 복수의 링크 중 제1 링크에서 데이터를 전송하도록 구성된 상기 제1 노드의 제1 링크 인터페이스의 전력 차단을 시작하되,
    상기 제1 링크 인터페이스의 유휴 조건이 발생했고;
    상기 유휴 조건이 상기 제1 링크 인터페이스가 적어도 타겟 유휴 임계 시간 기간 동안 유휴 상태로 유지되도록 한다는 예측을 결정하는 것에 응답하여, 상기 전력 차단을 시작하는 단계를 포함하는, 방법.
  10. 제9항에 있어서, 상기 타겟 유휴 임계 시간 기간보다 더 긴 대기 임계 시간 기간 동안 상기 제1 링크 인터페이스의 전력 차단을 시작하는 것을 지연시키되,
    상기 제1 링크 인터페이스의 상기 유휴 조건이 발생했고;
    상기 유휴 조건이 상기 제1 링크 인터페이스가 적어도 상기 타겟 유휴 임계 시간 기간 동안 유휴 상태로 유지되지 않도록 한다는 예측을 결정하는 것에 응답하여, 상기 전력 차단을 시작하는 것을 지연시키는 단계를 더 포함하는, 방법.
  11. 제9항에 있어서,
    상기 유휴 조건이 상기 제1 링크 인터페이스가 적어도 상기 타겟 유휴 임계 시간 기간 동안 유휴 상태로 유지되도록 한다는 고 신뢰도를 나타내도록 하는 전력 차단 예측 값을 업데이트하되,
    상기 제1 링크 인터페이스가 상기 타겟 유휴 임계 기간 동안 유휴 상태로 유지되는 것을 방지하는 중단이 상기 타겟 유휴 임계 시간 기간이 경과하기 전에 발생하지 않았다고 결정하는 것에 응답하여, 상기 전력 차단 예측 값을 업데이트하는 단계를 더 포함하는, 방법.
  12. 제11항에 있어서,
    상기 유휴 조건이 상기 제1 링크 인터페이스가 적어도 상기 타겟 유휴 임계 시간 기간 동안 유휴 상태로 유지되도록 한다는 저 신뢰도를 나타내도록 하는 전력 차단 예측 값을 업데이트하되,
    상기 제1 링크 인터페이스가 상기 타겟 유휴 임계 기간 동안 유휴 상태로 유지되는 것을 방지하는 중단이 상기 타겟 유휴 임계 시간 기간이 경과하기 전에 발생했다고 결정하는 것에 응답하여, 상기 전력 차단 예측 값을 업데이트하는 단계를 더 포함하는, 방법.
  13. 제12항에 있어서, 상기 중단이 발생했다고 결정하기 위해, 상기 방법은 메시지가 상기 제1 링크에서 전송을 위한 상기 제1 인터페이스에 도달했다고 결정하는 단계를 더 포함하는, 방법.
  14. 제12항에 있어서,
    상기 전력 차단 예측 값이 임계값 미만이라고 결정하는 것에 응답하여, 상기 제1 링크 인터페이스의 다음 검출 유휴 조건이 상기 제1 링크 인터페이스가 상기 임계 시간 기간 동안 유휴 상태로 유지되지 않도록 함을 나타내도록 하는 예측을 업데이트하는 단계를 더 포함하는, 방법.
  15. 제14항에 있어서,
    상기 전력 차단 예측 값이 임계값 이상이라고 결정하는 것에 응답하여, 상기 제1 링크 인터페이스의 다음 검출 유휴 조건이 상기 제1 링크 인터페이스가 상기 임계 시간 기간 동안 유휴 상태로 유지되도록 함을 나타내도록 하는 예측을 업데이트하는 단계를 더 포함하는, 방법.
  16. 장치에 있어서,
    제1 노드와 제2 노드 사이의 링크에서 데이터 전송을 관리하도록 구성된 물리적 유닛; 및
    전력 차단 유닛을 포함하며;
    상기 전력 차단 유닛은,
    상기 장치의 유휴 조건이 발생했고;
    상기 유휴 조건이 상기 장치가 적어도 타겟 유휴 임계 시간 기간 동안 유휴 상태로 유지되도록 한다는 예측을 결정하는 것에 적어도 부분적으로 기초하여 상기 장치의 전력 차단을 시작하도록 구성되는, 장치.
  17. 제16항에 있어서, 상기 전력 차단 유닛은 상기 타겟 유휴 임계 시간 기간보다 긴 대기 임계 시간 기간 동안 상기 장치의 전력 차단을 시작하는 것을 지연시키되,
    상기 장치의 상기 유휴 조건이 발생했고;
    상기 유효 조건이 상기 장치가 적어도 상기 타겟 유휴 임계 시간 기간 동안 유휴 상태로 유지되지 않도록 한다는 예측을 결정하는 것에 응답하여, 상기 전력 차단을 시작하는 것을 지연시키도록 더 구성되는, 장치.
  18. 제16항에 있어서, 상기 전력 차단 유닛은,
    상기 유휴 조건이 상기 장치가 적어도 상기 타겟 유휴 임계 시간 기간 동안 유휴 상태로 유지되도록 한다는 고 신뢰도를 나타내도록 하는 전력 차단 예측 값을 업데이트하되,
    상기 장치가 상기 타겟 유휴 임계 기간 동안 유휴 상태로 유지되는 것을 방지하는 중단이 상기 타겟 유휴 임계 시간 기간이 경과하기 전에 발생하지 않았다고 결정하는 것에 응답하여, 상기 전력 차단 예측 값을 업데이트하도록 더 구성되는, 장치.
  19. 제18항에 있어서, 상기 전력 차단 유닛은,
    상기 유휴 조건이 상기 장치가 적어도 상기 타겟 유휴 임계 시간 기간 동안 유휴 상태로 유지되도록 한다는 저 신뢰도를 나타내도록 하는 전력 차단 예측 값을 업데이트하되,
    상기 장치가 상기 타겟 유휴 임계 기간 동안 유휴 상태로 유지되는 것을 방지하는 중단이 상기 타겟 유휴 임계 시간 기간이 경과하기 전에 발생했다고 결정하는 것에 응답하여, 상기 전력 차단 예측 값을 업데이트하도록 더 구성되는, 장치.
  20. 제19항에 있어서, 상기 전력 차단 유닛은,
    상기 전력 차단 예측 값이 임계값 미만이라고 결정하는 것에 응답하여, 상기 장치의 다음 검출 유휴 조건이 상기 장치가 상기 임계 시간 기간 동안 유휴 상태로 유지되지 않도록 함을 나타내도록 하는 예측을 업데이트하도록 더 구성되는, 장치.
KR1020237010857A 2020-09-24 2021-09-23 다중-gpu 시스템의 분산형 전력 관리를 수행하기 위한 메커니즘 KR20230073224A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/031,739 2020-09-24
US17/031,739 US20220091657A1 (en) 2020-09-24 2020-09-24 Mechanism for performing distributed power management of a multi-gpu system
PCT/US2021/051814 WO2022066951A2 (en) 2020-09-24 2021-09-23 Mechanism for performing distributed power management of a multi-gpu system

Publications (1)

Publication Number Publication Date
KR20230073224A true KR20230073224A (ko) 2023-05-25

Family

ID=78483474

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237010857A KR20230073224A (ko) 2020-09-24 2021-09-23 다중-gpu 시스템의 분산형 전력 관리를 수행하기 위한 메커니즘

Country Status (6)

Country Link
US (1) US20220091657A1 (ko)
EP (1) EP4217824A2 (ko)
JP (1) JP2023543723A (ko)
KR (1) KR20230073224A (ko)
CN (1) CN116490839A (ko)
WO (1) WO2022066951A2 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11960596B2 (en) * 2021-03-11 2024-04-16 Xilinx, Inc. Network interface device
US20230051225A1 (en) * 2021-08-10 2023-02-16 Visa International Service Association System, Method, and Computer Program Product for Segmenting Accounts
US20240073058A1 (en) * 2022-08-23 2024-02-29 Mellanox Technologies Ltd. Predicting inactivity patterns for a signal conductor

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7984314B2 (en) * 2007-05-14 2011-07-19 Intel Corporation Power management of low power link states
US8156362B2 (en) * 2008-03-11 2012-04-10 Globalfoundries Inc. Hardware monitoring and decision making for transitioning in and out of low-power state
US8112651B2 (en) * 2008-09-25 2012-02-07 Intel Corporation Conserving power in a computer system
US20130003559A1 (en) * 2011-06-30 2013-01-03 Broadcom Corporation Adaptive Power Savings for Aggregated Resources
US8689028B2 (en) * 2011-07-01 2014-04-01 Intel Corporation Method and apparatus to reduce idle link power in a platform
US8868955B2 (en) * 2011-07-01 2014-10-21 Intel Corporation Enhanced interconnect link width modulation for power savings
US20130332764A1 (en) * 2012-06-08 2013-12-12 Apple Inc. Intelligent inter-processor communication with power optimization
CN107077343B (zh) * 2014-10-27 2021-04-23 惠普发展公司有限责任合伙企业 忽略局域网唤醒引导中的输入
US9563261B2 (en) * 2014-11-25 2017-02-07 International Business Machines Corporation Management of power consumption in large computing clusters
US20160314024A1 (en) * 2015-04-24 2016-10-27 Mediatek Inc. Clearance mode in a multicore processor system
US10275008B2 (en) * 2016-09-22 2019-04-30 Intel Corporation Methods and apparatus to reduce computing device power consumption
US20180188797A1 (en) * 2016-12-29 2018-07-05 Intel Corporation Link power management scheme based on link's prior history

Also Published As

Publication number Publication date
WO2022066951A3 (en) 2022-04-28
CN116490839A (zh) 2023-07-25
WO2022066951A2 (en) 2022-03-31
JP2023543723A (ja) 2023-10-18
EP4217824A2 (en) 2023-08-02
US20220091657A1 (en) 2022-03-24

Similar Documents

Publication Publication Date Title
US10671148B2 (en) Multi-node system low power management
KR20230073224A (ko) 다중-gpu 시스템의 분산형 전력 관리를 수행하기 위한 메커니즘
US10355966B2 (en) Managing variations among nodes in parallel system frameworks
TWI439853B (zh) 多核心微處理器之共享電源的分散式管理
EP2430541B1 (en) Power management in a multi-processor computer system
US20210333860A1 (en) System-wide low power management
JP2006506736A (ja) システム管理信号を分配する方法および装置
US10572183B2 (en) Power efficient retraining of memory accesses
US9285865B2 (en) Dynamic link scaling based on bandwidth utilization
US20220263770A1 (en) Application-to-application resource reservation schemes for precision networking
WO2004070619A2 (en) Methods and apparatus for distributing system management signals
US20230153121A1 (en) Accelerator usage prediction for improved accelerator readiness
US20230009970A1 (en) In-band communication interface power management fencing
US20240085972A1 (en) Chiplet state aware and dynamic voltage regulator event handling
US20240142515A1 (en) Peak power package tracking
US20240113914A1 (en) Low power processing of remote manageability requests
US20240103561A1 (en) Handshaking mechanism for clock network control