KR102355989B1 - 다중 노드 시스템 저전력 관리 - Google Patents
다중 노드 시스템 저전력 관리 Download PDFInfo
- Publication number
- KR102355989B1 KR102355989B1 KR1020207021188A KR20207021188A KR102355989B1 KR 102355989 B1 KR102355989 B1 KR 102355989B1 KR 1020207021188 A KR1020207021188 A KR 1020207021188A KR 20207021188 A KR20207021188 A KR 20207021188A KR 102355989 B1 KR102355989 B1 KR 102355989B1
- Authority
- KR
- South Korea
- Prior art keywords
- node
- nodes
- response
- interrupt
- clients
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3296—Power saving characterised by the action undertaken by lowering the supply or operating voltage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3275—Power saving in memory, e.g. RAM, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
- G06F13/26—Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Sources (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
다중 노드 컴퓨팅 시스템에 대한 효율적인 전력 관리를 수행하기 위한 시스템들, 장치들 및 방법들이 개시된다. 다수의 노드를 포함하는 컴퓨팅 시스템은 불균일 메모리 액세스(NUMA, non-uniform memory access) 아키텍처를 이용한다. 제1 노드는 제2 노드로부터 브로드캐스트 프로브를 수신한다. 제1 노드는 전력이 차단된 제3 노드에 대한 미스 응답을 스푸핑하며, 이는 제3 노드가 기상하여 브로드캐스트에 응답하는 것을 방지한다. 전력 차단 이전, 제3 노드는 그것의 프로브 필터 및 캐시들을 플러싱했고 수신된 더티 캐시 라인들로 그것의 시스템 메모리를 업데이트했다. 컴퓨팅 시스템은 중재되는 인터럽트들에 대해 컴퓨팅 시스템에서의 다수의 코어의 인터럽트 우선순위들을 저장하기 위한 마스터 노드를 포함한다. 코어들은 컴퓨팅 시스템에서의 각 코어에 대한 고정 인터럽트 식별자들의 표시들을 저장한다. 중재되는 및 고정 인터럽트들은 브로드캐스트 메시지들이 아니라, 코어들에 의해 포인트-투-포인트 유니캐스트 메시지들로 핸들링된다.
Description
최신 집적 회로들(IC's)의 전력 소비는 반도체 칩들의 각 세대에 따라 설계 문제가 증가되고 있다. 전력 소비가 증가함에 따라, 과잉 열을 제거하고 IC 고장을 방지하기 위해 더 큰 팬 및 방열판들과 같이 더 비싼 냉각 시스템들을 이용해야 한다. 그러나, 냉각 시스템들은 시스템 비용을 증가시킨다. IC 전력 손실 제약은 휴대용 컴퓨터들 및 이동 통신 디바이스들, 뿐만 아니라 고성능 마이크로 프로세서들을 이용하는 데스크탑 컴퓨터들 및 서버들에서도 문제가 된다. 이러한 마이크로 프로세서들에는 다수의 프로세서 코어, 또는 코어들, 및 코어 내의 다수의 파이프 라인이 포함된다.
다양한 서버와 같은 다양한 컴퓨팅 디바이스는 시스템 기능을 제공하기 위해 다수의 유형의 IC들을 통합하는 여러 다른 종류로 이뤄진 통합을 이용한다. 다수의 기능이 처리 노드에 배치되고 다수의 기능에는 오디오/비디오(A/V) 데이터 처리, 의약 및 비즈니스 분야를 위한 기타 높은 데이터 병렬 응용, 범용 명령어 잡헙 아키텍처(ISA, instruction set architecture)의 처리 명령들, 디지털, 아날로그, 혼합-신호 및 라디오-주파수(RF) 기능들 등이 포함된다. 다양한 유형의 IC를 통합하기 위해 시스템 패키징에 처리 노드를 배치하기 위한 다양한 선택이 존재한다. 처리 노드는 다수의 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은 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법의 다른 실시 예의 흐름도이다.
본 발명은 다양한 변형 예 및 대안적인 형태를 허용하지만, 구체적인 실시 예들이 도면들에 예로서 도시되며 본 명세서에서 상세히 설명된다. 그러나, 도면들 및 상세한 설명은 본 발명을 개시된 특정 형태로 제한하려는 것이 아니고, 반대로, 본 발명은 첨부된 청구범위에 의해 정의되는 바에 따라 본 발명의 범위 내에 속하는 모든 변형 예, 등가물 및 대안 예를 커버하는 것으로 이해되어야 한다.
도 1은 처리 노드의 일 실시 예의 블록도이다.
도 2는 다중 노드 컴퓨팅 시스템의 일 실시 예의 블록도이다.
도 3은 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법의 일 실시 예의 흐름도이다.
도 4는 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법의 다른 실시 예의 흐름도이다.
도 5는 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법의 다른 실시 예의 흐름도이다.
도 6은 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법의 다른 실시 예의 흐름도이다.
본 발명은 다양한 변형 예 및 대안적인 형태를 허용하지만, 구체적인 실시 예들이 도면들에 예로서 도시되며 본 명세서에서 상세히 설명된다. 그러나, 도면들 및 상세한 설명은 본 발명을 개시된 특정 형태로 제한하려는 것이 아니고, 반대로, 본 발명은 첨부된 청구범위에 의해 정의되는 바에 따라 본 발명의 범위 내에 속하는 모든 변형 예, 등가물 및 대안 예를 커버하는 것으로 이해되어야 한다.
이하의 구체적인 내용에서, 여기서 제시되는 방법들 및 메커니즘들에 대한 완전한 이해를 제공하기 위해 많은 구체적인 세부 사항이 제시된다. 그러나, 해당 기술분야의 통상의 기술자는 다양한 실시 예가 이러한 구체적인 세부 사항 없이도 실시될 수 있다는 것을 인식해야 한다. 경우에 따라서는, 주지된 구조들, 구성요소들, 신호들, 컴퓨터 프로그램 명령들 및 기술들이 본 명세서에 설명되는 접근법들을 모호하게 하는 것을 방지하기 위해 구체적으로 제시되지 않았다. 도시의 단순성 및 명료성을 위해, 도면들에 도시된 요소들은 반드시 일정한 비율로 그려진 것은 아니라는 것을 이해할 것이다. 예를 들어, 요소들 중 일부의 치수들은 그 외 다른 요소들에 비해 과장될 수 있다.
다중 노드 컴퓨팅 시스템에 대한 효율적인 전력 관리를 수행하기 위한 다양한 시스템, 장치, 방법 및 컴퓨터 판독 가능한 매체가 개시된다. 다양한 실시 예에서, 처리 노드는 어플리케이션들을 처리하기 위한 하나 이상의 클라이언트를 포함한다. 노드 내의 클라이언트들의 예들은 범용 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 가속 처리 유닛(APU), 입력/출력(I/O) 디바이스 등을 포함한다. 처리 노드는 또한 적어도 전력 제어기, 및 다른 노드들과 메시지들을 전달하기 위한 다수의 링크 인터페이스를 포함한다. 여기서 사용될 때, 처리 노드는 노드라고도 한다.
일부 실시 예에서, 컴퓨팅 시스템은 각각 그 자체의 하나 이상의 클라이언트 및 전력 제어기를 갖는 노드의 다수의 카피를 포함하는 다중 노드 시스템이다. 다양한 실시 예에서, 컴퓨팅 시스템은 소정의 노드에서의 소정의 프로세서가 다른 노드의 원격 메모리에 액세스하는 것보다 작은 레이턴시로 그것의 로컬 메모리에 액세스하는 공유 메모리 아키텍처를 이용한다. 다시 말해, 컴퓨팅 시스템은 불균일 메모리 액세스(NUMA, non-uniform memory access) 아키텍처를 이용하고 컴퓨팅 시스템에서의 노드들 각각은 NUMA 노드이다.
다수의 노드의 제1 노드의 전력 제어기는 그것의 하나 이상의 클라이언트의 각 클라이언트가 유휴 상태에 있을 때를 결정한다. 또한, 전력 제어기는 제1 노드의 동적 랜덤 액세스 메모리(DRAM)와 같은 제1 노드의 시스템 메모리에 액세스하려는 원격 메모리 요청들이 없을 때를 결정한다. 전력 제어기가 이러한 조건들이 충족된다고 결정할 때, 일 실시 예에서, 전력 제어기는 제1 노드의 전력 차단 상태를 명시하는 표시를 그것의 링크들 중 하나 이상 상에 하나 이상의 노드에 전송한다. 그 후, 제1 노드는 그것의 캐시를 플러싱하여, 프로브 필터의 각 엔트리를 무효화하는 단계, 및 프로브 필터에서의 엔트리들을 무효화한 결과로서 수신되는 더티 캐시 라인들로 제1 노드에 연결된 시스템 메모리를 업데이트하는 단계와 같이 전력 차단을 위해 다수의 단계를 수행한다. 그 후, 단계들은 링크 인터페이스들에 대한 드라이버들을 디스에이블하는 단계, 하나 이상의 클라이언트들 및 하나 이상의 클라이언트와 메모리 제어기 사이에서 트래픽를 전달하는 통신 패브릭에 대한 클록들을 디스에이블하는 단계 및 동적 랜덤 액세스 메모리(DRAM)가 사용될 때 자기-리프레시를 수행하도록 시스템 메모리를 설정하는 단계를 포함한다.
일 실시 예에서, 제1 노드가 전력이 차단된 상태로 유지되는 시간량을 증가시키기 위해, 상술한 바와 같이 캐시들을 플러싱하고 프로브 필터를 무효화하는 단계가 수행된다. 다른 실시 예들에서, 전력이 차단된 제1 노드에 직접 연결된 제2 노드는 제3 노드로부터 브로드캐스트 프로브를 수신하고, 제2 노드는 제2 노드가 제1 노드가 전력이 차단된다고 결정할 때 전력이 차단된 제1 노드에 대한 미스 응답(miss response)을 생성한다. 제2 노드는 제1 노드를 기상시켜 제1 노드를 전력 차단 상태에서 활성 상태로 전이시킬 브로드캐스트 프로브를 제1 노드로 전송하지 않는다. 제2 노드는 전력이 차단된 제1 노드를 대신하여 미스 응답을 제3 노드로 전송한다.
일부 실시 예에서, 컴퓨팅 시스템은 컴퓨팅 시스템에서의 다수의 프로세서 코어의 인터럽트 우선순위들을 저장하기 위한 마스터 노드를 포함하며 여기서 인터럽트 우선순위들은 중재되는 인터럽트들에 대응한다. 그에 따라, 중재되는 인터럽트들은 브로드캐스트 메시지들이 아니라, 프로세서 코어들에 의해 포인트-투-포인트 유니캐스트 메시지들로 핸들링된다. 유사하게, 컴퓨팅 시스템에서의 다수의 프로세서 코어는 다수의 프로세서 코어의 각 프로세서 코어에 대한 고정 인터럽트 식별자들(ID들)의 저장을 지원함으로써, 브로드캐스크 메시지들이 아니라, 포인트-투-포인트 유니캐스트 메시지들로 고정 인터럽트들을 핸들링한다. 그에 따라, 전력이 차단된 노드들은 인터럽트들을 핸들링하기 위한 브로드캐스트 프로브들에 의해 재개되지 않는다. 이러한 그리고 다른 실시 예들에이 가능하고 고려된다.
도 1을 참조하면, 처리 노드(100)의 일 실시 예의 개괄적인 블록도가 도시되어 있다. 도시된 바와 같이, 처리 노드(100)는 클라이언트(110), 프로브 필터(113), 메모리 제어기(130), 전력 제어기(170) 및 링크 인터페이스들(180) 각각 사이에 통신 패브릭(120)을 포함한다. 일부 실시 예에서, 처리 노드(100)의 구성요소들은 시스템 온 칩(SOC)과 같은, 집적 회로(IC) 상의 개별 다이들이다. 다른 실시 예에서, 구성요소들은 시스템인 패키지(SiP, system-in-package) 또는 다중 칩 모듈(MCM, multi-chip module)에서의 개별 다이들이다.
다양한 실시 예에서, 통신 패브릭(120)은 클라이언트들(110)과 메모리 제어기(130) 사이에서 트래픽을 주고받으며 각각의 통신 프로토콜들을 지원하기 위한 인터페이스들을 포함한다. 일부 실시 예에서, 통신 패브릭(120)은 적어도 요청들 및 응답들을 저장하기 위한 큐들, 내부 네트워크에 걸쳐 요청들을 전송하기 전에 수신된 요청들 사이에서 중재하기 위한 선택 로직, 패킷들을 구축 및 디코딩하기 위한 로직 및 패킷에 대한 경로들을 선택하기 위한 로직을 포함한다.
도시된 실시 예에서, 클라이언트들(110)은 중앙 처리 유닛(CPU)(112), 그래픽 처리 유닛(GPU)(114) 및 허브(116)를 포함한다. 허브(116)는 멀티미디어 엔진(118)과 통신하는데 사용된다. CPU(112), GPU(114) 및 멀티미디어 엔진(118)은 어플리케이션들을 처리할 수 있는 컴퓨팅 자원들의 예들이다. 도시되지는 않았지만, 다른 실시 예들에서, 다른 유형들의 컴퓨팅 자원들이 클라이언트들(110)에 포함된다. 일 실시 예에서, GPU(114)는 상당 수의 병렬 실행 레인을 갖는 고 병렬 데이터 마이크로 아키텍처를 포함한다. 일 실시 예에서, 마이크로 아키텍처는 병렬 실행 레인들에 대해 단일 명령 다중 데이터(SIMD, single-instruction-multiple-data) 파이프라인을 사용한다. 멀티미디어 엔진(118)은 멀티미디어 어플리케이션들에 대한 오디오 데이터 및 시각 데이터를 처리하기 위한 프로세서들을 포함한다.
일부 실시 예에서, CPU(112)에서의 하나 이상의 프로세서 코어 각각은 소정의 선택된 명령어 집합 아키텍처(ISA, instruction set architecture)에 따라 명령들을 실행하기 위한 회로를 포함한다. 다양한 실시 예에서, CPU(112)에서의 프로세서 코어들 각각은 소정의 ISA의 명령들을 처리하는데 사용되는 슈퍼스칼라, 멀티-스레드 마이크로 아키텍처를 포함한다. 여기서 사용될 때, 프로세서 코어들은 코어들이라고 한다. 일 실시 예에서, CPU(112)는 각각 2개의 소프트웨어 스레드를 처리하기 위한 2개의 하드웨어 스레드를 포함하는 8개의 코어를 포함한다. 따라서, 그러한 실시 예에서, CPU(112)는 동시에 16개의 스레드를 처리할 수 있다. 다른 실시 예들에서, CPU(112)에 의해 동시 멀티-스레딩을 위한 임의의 수의 스레드가 지원된다.
링크 인터페이스들(180)은 링크들 상에 메시지들을 전달함으로써 처리 노드(100)와 다른 처리 노드들 간의 통신을 지원한다. 다양한 실시 예에서, 노드들 사이의 링크들을 통해 전송되는 메시지들은 하나 이상의 노드에 대한 작동 상태의 표시, 전력 차단 요청, 인터럽트들 및 다른 정보를 포함한다. 다양한 실시 예에서, 각 링크는 두 노드 사이의 포인트-투-포인트 통신 채널이다. 물리적 레벨에서, 링크는 하나 이상의 레인을 포함한다. 일부 실시 예에서, 링크 인터페이스들(180), 대응하는 링크들 및 다른 노드들은 PCIe(Peripheral Component Interconnect Express), InfiniBand, RapidIO, HyperTransport 등과 같은 통신 프로토콜 연결들을 포함한다. 일부 실시 예에서, 링크 인터페이스들(180)은 인터커넥트 링크들을 통해 다른 노드들과 통신하는데 사용되는 제어 로직 및 버퍼들 또는 큐들을 포함한다.
단일 메모리 제어기(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)이다.
일 실시 예에서, 전력 제어기(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이 아닌 양의 정수)를 지원한다.
다양한 실시 예에서, 처리 노드(100)는 다중 노드 시스템에서 다수의 노드 중 하나의 노드이다. 일 실시 예에서, 시스템은 다수의 서버 중 하나의 서버이다. 서버들에 배치(batch)로서 전송된 작업들이 각 서버에 부여되지 않은 경우들이 있다. 소정의 서버는 감지할 수 있을 정도의 시간량 동안 유휴 상태가 될 수 있다. 전력 소비를 감소시키기 위해, 서버 내 다수의 노드의 전원이 차단될 수 있다. 다양한 실시 예에서, 전력 제어기(170)는 클라이언트(110)들 중 하나 이상의 클라이언트가 유휴 상태가 되는 때를 검출한다. 클라이언트들(110) 각각이 유휴 상태가 된다면, 일 실시 예에서, 전력 제어기(170)는 전력 차단 상태를 명시하는 표시를 링크 인터페이스들(180)을 통해 그것의 링크들 중 하나 이상 링크 상에 하나 이상의 노드에 중계한다. 일부 실시 예에서, 전력 제어기(170)는 그것의 캐시 메모리 서브 시스템에서의 각 캐시를 플러싱하기 위한 메시지를 CPU(112) 및 GPU(114) 각각으로 전송한다.
또한, 전력 제어기(170)는 프로브 필터(113)의 각 엔트리를 무효화할 뿐만 아니라 프로브 필터(113)에서의 엔트리들을 무효화한 결과로서 수신되는 더티 캐시 라인들로 시스템 메모리를 업데이트하기 위한 메시지를 전송한다. 그 후, 전력 제어기(170)는 링크 인터페이스들에 대한 드라이버들을 디스에이블하고 클라이언트들(110) 및 통신 패브릭(120), 메모리 제어기(130)에 대한 클록들을 디스에이블하며 동적 랜덤 액세스 메모리(DRAM)가 사용될 때 자기-리프레시를 수행하도록 시스템 메모리를 설정하기 위한 메시지들을 전송한다.
많은 디렉토리 기반 캐시 코히렌시 프로토콜들은 컴퓨팅 시스템 내 다양한 캐시 간 통신에 메모리 제어기와 같은 코히렌시 포인트로부터 전달되는 메시지들 또는 프로브들의 사용을 포함한다. 일 실시 예에서, 통신 패브릭(120)은 프로브 필터(113)를 유지한다. 다양한 실시 예에서, 프로브 필터(113)는 다수의 엔트리를 갖는 디렉토리로서 구현된다. 프로브 필터(113)의 엔트리들은 데이터의 캐싱된 카피들의 존재를 나타내는 정보를 포함한다. 일부 실시 예에서, 각 엔트리는 유효 비트, 캐시 라인의 태그, 캐시 라인의 캐시 코히렌시 상태를 명시하는 표시, 노드 소유권 식별자(ID), 로컬 시스템 메모리에 데이터의 캐싱된 카피를 저장하는 원격 클라이언트들을 갖는 원격 노드들의 하나 이상의 노드 ID, 클린/더티 상태 등을 저장한다. 일부 실시 예에서, 캐시 코히렌시 상태들은 수정, 소유, 배타, 공유 및 무효이다.
프로브 필터(113)에서의 엔트리들은 컴퓨팅 시스템에서의 다른 처리 노드의 캐시들에 저장된 카피들을 갖는 처리 노드(100)에서의 각 캐시 라인을 추적한다. 시스템 메모리에 저장된 라인이 처리 노드(100)에 로컬로 캐싱되거나 또는 다른 처리 노드에 원격으로 캐싱된다면, 라인에 대한 엔트리가 프로브 필터(113)에 할당된다. 프로브 필터(113) 엔트리에 할당된 엔트리의 부존재는 특정 라인이 캐싱되지 않음을 나타낸다. 프로브 필터(113)는 무조건적으로 프로브들을 브로드캐스트하는 것이 아니라, 특정 코히렌시 동작들을 야기하기 위해 프로브들이 전달되어야 하는 특정 서브 시스템들(데이터의 캐싱된 카피들을 포함할 수 있는)을 결정하는데 사용된다.
다양한 실시 예에서, CPU(112)에 의해 처리되는 다수의 스레드 각각은 인터럽트들을 어써트하고 인터럽트 서비스 루틴의 어드레스를 수신할 수 있다. 다양한 실시 예에서, 처리 노드(100)는 멀티 프로세서 컴퓨팅 시스템에서 인터럽트들을 라우팅하기 위한 인터럽트 리다이렉션 프로토콜을 지원하는 다중 노드 컴퓨팅 시스템 중 하나의 노드이다. 이러한 프로토콜은 컴퓨팅 시스템의 다수의 노드에서의 프로세서들 사이에 인터럽트들을 전송한다. 인터럽트는 인터럽트 모드 또는 인터럽트 유형에 기초하여, 인터럽트를 검출하는 프로세서로부터 인터럽트 식별자(ID)에 기초하여 특정 노드에서의 특정 프로세서로 전송된다. 일례에서, ID는 특정 노드에서의 특정 프로세서를 식별하기 위해 사용된다. 여기서 사용될 때, 이러한 유형들의 인터럽트들은 "고정 인터럽트들(fixed interrupts)"이라고 한다. 고정 인터럽트를 핸들링하기 위해 선택되는 프로세서는 ID에 기초하여 고정된다. 유사하게, 인터럽트는 상이한 인터럽트 모드 또는 상이한 인터럽트 유형에 기초하여, 인터럽트를 검출하는 프로세서로부터 중재(arbitration)에 기초하여 특정 노드에서의 특정 프로세서로 전송된다. 일례에서, 프로세서에서의 각 하드웨어 스레드 또는 각 코어에는 인터럽트 우선순위가 부여되고, 우선순위가 최저 프로세서(들)가 어써트된 인터럽트를 핸들링하기 위한 중재 로직에 의해 선택된다. 여기서 사용될 때, 이러한 유형들의 인터럽트들은 "중재되는 인터럽트들(arbitrated interrupts)"이라고 한다. 일부 실시 예에서, 상이한 프로세서 간에 인터럽트를 전송하는데 사용되는 프로토콜은 APIC(Advanced Programmable Interrupt Controller) 프로토콜이고, 코어 또는 코어 내에서 하드웨어 스레드를 식별하는데 사용되는 식별자는 APIC ID이다.
일 실시 예에서, 인터럽트 제어기(111)는 링크 인터페이스들(180)을 통해 원격 CPU들 상의 코어들에 의해 어써트된 다중 인터럽트들에 더하여 CPU(112) 상에서 실행되는 다수의 스레드에 의해 어써트된 다수의 인터럽트를 수신한다. 인터럽트 제어기(111)는 또한 APIC 프로토콜과 같이 선택된 인터럽트 라우팅 프로토콜에 기초하여 인터럽트들을 링크 인터페이스(180)를 통해 CPU(112)에서의 다른 코어들 및 원격 CPU들에서의 다른 코어들로 라우팅한다. 일부 예에서, 인터럽트 제어기(111)는 인터럽트들을 서비스하기 위해 인터럽트들을 다른 코어들로 전송한다. 다른 코어들은 소정의 인터럽트 서비스 루틴을 처리하여 로컬 또는 원격으로 인터럽트를 서비스하여, 인터럽트 핸들러라고도 한다. 일부 실시 예에서, 인터럽트 제어기(111)는 CPU(112)의 외부에 위치되고 GPU(114), 허브(116), I/O 주변 디바이스들 및 통신 패브릭(120)을 통해 원격 컴퓨팅 디바이스들과 같은 다수의 다른 소스로부터 인터럽트들을 수신한다.
다양한 실시 예에서, 처리 노드(100)는 컴퓨팅 시스템에서 인터럽트의 중재를 위해 다수의 프로세서 코어의 인터럽트 우선순위들을 저장하기 위한 다중 노드 시스템에서의 마스터 노드이다. 이전 예에서, CPU(112)는 각각 2개의 스레드를 동시에 처리할 수 있는 8개의 코어를 갖는다. 그에 따라, 일 실시 예에서, CPU(112)는 우선순위 중재되는 인터럽트들에 대해 16개의 하드웨어 스레드마다 1개씩, 그리고 코어마다 2개의 인터럽트씩, 16개의 인터럽트 우선순위를 갖는다. 다른 실시 예들에서, 중재되는 인터럽트들에 대한 인터럽트 우선순위들의 세분화는 코어 레벨에 있고, 소정의 코어에 대한 다수의 하드웨어 스레드 각각은 중재되는 인터럽트들에 대해 동일한 인터럽트 우선순위를 갖는다. 또 다른 실시 예들에서, 각 스레드는 동일한 인터럽트 우선순위로 설정된다. 스레드들에 대한 인터럽트 우선순위 할당들의 다른 조합들이 가능하고 고려된다.
컴퓨팅 시스템이 각각 CPU(112)와 유사한 CPU를 갖는 4개의 노드를 갖고, 각 코어가 중재되는 인터럽트들에 대해 2개의 인터럽트 우선순위를 갖는 경우, 일부 실시 예에서, 컴퓨팅 시스템은 64개의 인터럽트 우선순위를 갖는다. 그러나, 중재되는 인터럽트들에 대해, 일 실시 예에서, 인터럽트 우선순위가 최저 하드웨어 스레드(또는 코어)가 중재되는 인터럽트들를 서비스하도록 부여된다. 일부 실시 예에서, 인터럽트 제어기(111)는 4개의 노드 각각에 대한 중재되는 인터럽트들에 대해 인터럽트 우선순위를 하나씩, 4개의 인터럽트 우선순위를 저장한다. 소정의 노드에 대한 하나의 인터럽트 우선순위는 소정의 노드에서의 코어들에 부여된 16개의 인터럽트 우선순위 중 최저 인터럽트 우선순위이다.
마스터 노드 이외의 제1 노드에서의 코어가 중재되는 인터럽트를 어써트할 때, 제1 노드는 메시지를 링크 인터페이스들(180) 및 통신 패브릭(120)을 통해 포인트-투-포인트로 마스터 노드의 인터럽트 제어기(111)로 전송한다. 그러한 경우 제1 노드로 하나 이상의 인터럽트 우선순위를 전송할 것을 서로 다른 노드에 통지하기 위해 제1 노드에 의해 브로드캐스트 메시지가 사용되지 않는다. 제1 노드로부터의 포인트-투-포인트 통신에 응답하여, 마스터 노드의 인터럽트 제어기(111)는 4개의 저장된 인터럽트 우선순위 중 최저 인터럽트 우선순위를 결정한다. 일 실시 예에서, 마스터 노드의 인터럽트 제어기(111)는 또한 4개의 저장된 인터럽트 우선순위 중 식별된 최저 인터럽트 우선순위를 갖는 코어를 포함하는 제2 노드를 식별한다. 다양한 실시 예에서, 마스터 노드의 인터럽트 제어기(111)는 중재되는 인터럽트를 포인트-투-포인트 메시지로 제2 노드에서의 식별된 코어로 전송한다. 그에 따라, 중재되는 인터럽트들은 브로드캐스트 메시지들이 아니라, 포인트-투-포인트 유니캐스트 메시지들로 핸들링된다. 다양한 실시 예에서, 중재되는 인터럽트가 상기한 예에서 제1 노드와 같은 원격 노드에 의해 어써트되는 것이 아니라, 마스터 노드, 입/출력(I/O) 디바이스 또는 그 외에서의 로컬 코어가 중재 인터럽트를 어써트할 때 유사한 포인트-투-포인트 통신이 사용된다.
다양한 실시 예에서, 운영 체제와 같은 소프트웨어는 전력이 차단되는 처리 노드(100) 내의 코어들의 중재되는 인터럽트들에 대한 인터럽트 우선순위들을 재부여한다. 일 실시 예에서, 소프트웨어는 인터럽트 우선순위들을 최대값 또는 적어도 활성 노드들의 인터럽트 우선순위들보다 큰 값들로 재부여한다. 따라서, 전력이 차단된 노드들은 마스터 노드에 의해 컴퓨팅 시스템에서 어써트된 중재되는 인터럽트를 기상시키고 서비스하도록 선택되지 않는다.
CPU(112) 내의 코어가 중재되는 인터럽트들를 어써트할 때, 메시지는 인터럽트 제어기(111)로 전송된다. 이에 응답하여, 인터럽트 제어기(111)는 4개의 저장된 인터럽트 우선순위들 중 최저 인터럽트 우선순위를 응답으로 전송한다. 나머지 단계들은 상기와 동일하여 이를테면 응답으로 식별된 노드에서의 식별된 코어로 중재되는 인터럽트를 유니캐스트 통신으로 전송한다. 다시, 브로드캐스트 메시지들은 전송되지 않는다. 그에 따라, 전력이 차단된 노드들은 중재되는 인터럽트들을 핸들링하기 위한 브로드캐스트 프로브들에 의해 재개되지 않는다. 브로드캐스트 메시지들이 아닌 유니캐스트 메시지들의 사용은 중재되는 인터럽트들 외에 고정 인터럽트에 대해서도 수행된다.
도 2를 참조하면, 다중 노드 컴퓨팅 시스템(200)의 일 실시 예의 개괄적인 블록도가 도시되어 있다. 도시된 실시 예에서, 패키지(210)는 링크(240)에 의해 서로 직접 연결된 노드들(220A 및 220B)을 포함한다. 일부 실시 예에서, 패키지(210 및 230) 각각은 서버에서 멀티-소켓 마더 보드의 소켓에 배치된 멀티 칩 모듈(MCM)이다. 도시된 바와 같이, 노드(220A)는 클라이언트들(222A-222C), 전력 제어기(224) 및 인터럽트 제어기(IC, interrupt controller)(228)를 포함한다. 클라이언트들(222A-222C)의 예들은 CPU, GPU, 멀티미디어 엔진, I/O 주변 디바이스 등이다. 도시된 바와 같이, 적어도 클라이언트(222A)는 프로브 필터(PF, probe filter)(223)를 포함한다.
일부 실시 예에서, 인터럽트 제어기(228)는 독립형 제어기로서 사용되기 보다는, 클라이언트들(222A-222C) 중 하나 내에 위치된다. 다양한 실시 예에서, 전력 제어기(224)는 전력 제어기(170)(도 1의)의 기능을 갖는다. 링크 인터페이스들, 통신 패브릭, 메모리 인터페이스, 위상 고정 루프들(PLL들) 또는 다른 클록 생성 회로는 설명의 편의를 위해 도시되어 있지 않다.
일 실시 예에서, 링크들(240-246)은 PCIe, InfiniBand, RapidIO, HyperTransport 등과 같은 통신 프로토콜 연결들을 이용한다. 일부 실시 예에서, 컴퓨팅 시스템(200)은 링크들(240-246) 외에 노드들(220A-220D) 사이의 다른 링크들을 포함한다. 일 실시 예에서, 이러한 다른 링크들은 서비스 요청들로의 데이터 전달을 위해 사용되는 반면, 링크들(240-246)은 시스템-전반 전력 차단을 협상하기 위한 메시지들과 같은 메시징을 위해 사용된다.
다양한 실시 예에서, 컴퓨팅 시스템(200)은 노드들(220A-220D) 각각이 요청자인 계층적 토폴로지를 사용한다. 계층의 저- 또는 제1-레벨에서, 각 노드는 서로 다른 노드에 직접 연결된다. 예를 들어, 노드(220A)는 링크(240)를 통해 패키지(210)에서의 노드(220B)에 직접 연결된다. 유사하게, 노드(220C)는 링크(242)를 통해 패키지(230)에서의 노드(220D)에 직접 연결된다. 계층의 보다 상위- 또는 제2-레벨에서, 각 노드는 다른 계층에서의 단일 노드에 연결된다. 예를 들어, 패키지(210)에서의 노드(220A)가 링크(244)를 통해 패키지(230)에서의 노드(220C)에 직접 연결된다. 그러나, 노드(220A)는 패키지(230)에서의 노드(220D)에 직접 연결되지 않는다. 유사하게, 패키지(210)에서의 노드(220B)는 링크(246)를 통해 패키지(230)에서의 노드(220D)에 직접 연결된다. 그러나, 노드(220B)는 패키지(230)에서의 노드(220C)에 직접 연결되지 않는다. 다른 실시 예들에서, 루트 노드와 리프 노드 사이의 각 중간 노드들이 단일 업스트림 노드에 직접 연결되고 단일 다운스트림 노드에 직접 연결되는 트리 또는 링 토폴로지가 사용된다. 다른 실시 예들에서 다양한 다른 토폴로지가 가능하고 고려된다.
일례에서, 노드(220B)의 전력이 차단되는 경우, 노드(220B)가 전력이 차단된 상태로 유지되는 시간량을 증가시키기 위해, 캐시들을 플러싱하고 프로브 필터(223)를 무효화하는 단계가 수행된다. 또한, 노드(220A)와 같이, 전력이 차단된 노드(220B)에 직접 연결된 다른 노드는 특정 브로드캐스트 프로브들에 대해 전력이 차단된 노드(220B)를 대신하여 응답을 스푸핑한다. 일례에서, 노드(220A)는 노드(220C)로부터 캐시 라인의 가장 최근의 유효한 카피를 검색하는 브로드캐스트 프로브를 수신한다. 노드(220B)는 전력 차단 이전에 그것의 하나 이상의 캐시 메모리 서브 시스템을 플러싱하였으므로, 노드(220B)는 요청된 캐시 라인의 카피를 가질 수 없다.
노드(220A)는 노드(220A)가 노드(220B)가 전력 차단되었다고 결정할 때 전력이 차단된 노드(220B)에 대한 미스 응답을 생성한다. 일부 실시 예에서, 노드(220D) 또한 노드(220D)가 노드(220B)가 전력 차단되었다고 결정할 때 전력이 차단된 노드(220B)를 대신하여 미스 응답을 생성한다. 노드(220A 및 220D) 중 어느 것도 전력이 차단된 노드(220B)로 노드(220B)를 기상시키고 노드(220B)가 전력 차단 상태에서 활성 상태로 전이하여 간단히 그것의 빈 캐시들에 기인하여 미스 응답을 보고하게 할 브로드캐스트 프로브를 전송하지 않는다. 노드(220A) 및 노드(220D) 중 하나 이상은 전력이 차단된 노드(220B)를 대신하여 미스 응답을 노드(220C)로 전송한다. 전력 제어기(224) 및 링크 인터페이스들(도시되지 않음)에 대한 로직 중 하나 이상이 캐시 라인에 대한 브로드캐스트 프로브의 상태를 검출하고 노드(220B)의 전력이 차단된다. 그에 따라, 로직은 전력이 차단된 노드(220B)를 대신하여 미스 응답을 스푸핑한다.
다양한 실시 예에서, 컴퓨팅 시스템(200)은 노드들(220A-220D) 중 소정의 노드에서의 소정의 프로세서가 다른 노드의 원격 메모리에 액세스하는 것보다 작은 레이턴시로 그것의 로컬 메모리에 액세스하는 공유 메모리 아키텍처를 이용한다. 다시 말해, 컴퓨팅 시스템(200)은 불균일 메모리 액세스(NUMA, non-uniform memory access) 아키텍처를 이용하고 노드들 각각은 NUMA 노드이다. 일 실시 예에서, 노드(220A)에서의 통신 패브릭(도시되지 않음)은 메모리 요청들이 서비스될 때 프로브 필터(PF)(223)를 유지한다. 다양한 실시 예에서, 프로브 필터(223)는 기능을 갖고 프로브 필터(113)(도 1의)와 동일한 유형의 정보를 저장한다.
일 실시 예에서, 프로브 필터(223)에서의 엔트리는 노드들(220B-220D) 중 하나 이상이 데이터의 블록의 공유된 카피들을 포함함을 나타내는 정보를 포함한다. 해당 블록에 대한 배타적 액세스를 위한 명령에 응답하여, 무효화 프로브들이 노드들(220B-220D) 중 하나 이상으로 전달된다. 일반적으로 말하면, 노드들(220A-220D) 중 요청을 발행하는 노드를 "요청" 노드라고 한다. 노드들(220A-220D) 중 요청의 메모리 어드레스가 해당 노드에 결합되는 시스템 메모리에 매핑되면 노드를 "홈" 노드라고 한다. 노드들(220A-220D) 중 노드 내의 캐시가 현재 가장 최근의 메모리 블록의 카피를 저장하는 경우 해당 노드를 "소유자(Owner)" 노드라고 한다. 프로브들은 캐시들이 블록의 카피를 갖는지 결정하고 선택적으로 캐시가 블록을 어느 상태로 두어야 하는지 나타내는데 사용된다. 프로브를 수신하는 각 노드는 그것의 프로브 필터를 확인하고 프로브에 응답한다. 모든 프로브 응답이 수신되면, 명령은 완료로 진행한다.
노드(220A)의 전력 제어기(224)가 클라이언트들(222A-222C) 각각이 유휴 상태에 있고 노드(220A)의 시스템 메모리에 액세스하려고 시도하는 원격 메모리 요청이 없는 것으로 결정할 때, 일 실시 예에서, 시스템 전반 전력 제어기(224)는 노드(220A)의 전력 차단 상태를 명시하는 표시를 노드들(2202B-220D) 중 하나 이상으로 전송한다. 그 후, 시스템 전반 전력 제어기(224)는 클라이언트들(222A-222C)로 그것들의 캐시를 플러싱하고 프로브 필터(223)와 같은 프로브 필터의 각 엔트리를 무효화하기 위한 메시지를 전송한다. 노드(220A)는 프로브 필터(223)에서의 엔트리들을 무효화한 결과로서 수신된 더티 캐시 라인들로 그것의 시스템 메모리를 업데이트한다.
일부 실시 예에서, 상기한 단계들이 수행된 후 전력 제어기(224)는 노드(220A)의 전력을 차단하는 것으로 진행한다. 다른 실시 예들에서, 상기한 단계들이 수행된 후 전력 제어기(224)는 소정의 레이턴시가 만료된 경우 전력을 차단하는 것으로 진행한다. 소정의 레이턴시가 아직 만료되지 않고 작업들이 수신되는 경우, 일 실시 예에서, 전력 제어기(224)는 노드(220A)를 유휴 상태에서 활성 상태로 전이하고, 그것의 링크들(240 및 244) 각각 상에 활성 상태의 표시를 전송하며, 수신된 작업들을 처리하기 위한 표시를 클라이언트들(222A-222C)에 전송한다. 또 다른 실시 예들에서, 전력 제어기(224)는 레이턴시와 함께 추가 정보를 사용하여 노드(220A)의 전력 차단으로 진행할지 또는 수신된 작업들을 처리할 것인지를 결정한다. 추가 정보의 예들은 서비스 품질(QoS) 또는 작업들에 대한 다른 우선순위 레벨, 프로세스 또는 소프트웨어 스레드 식별자(ID), 클라이언트들(222A-222C) 중 하나를 식별하는 하드웨어 ID 등이다. 전력 제어기(224)가 노드(220A)의 전력이 차단되고 있다고 결정한다면, 일 실시 예에서, 전력 제어기(224)는 링크 인터페이스들에 대한 드라이버들을 디스에이블하고 클라이언트들(222A-222C)에 대한 클록들을 디스에이블하며 DRAM이 사용될 때 자기-리프레시를 수행하도록 시스템 메모리를 설정한다.
기상 조건은 전력 제어기(224)가 노드(220A)의 전력을 차단한 직후를 포함하여 언제라도 발생할 수 있다. 기상 조건들에는 로컬 캐시 프로브에 대한 활성 노드로부터 원격 요청을 수신하는 것, 시스템 메모리에서의 로컬 데이터에 대한 활성 노드로부터 원격 메모리 요청을 수신하는 것, 운영 체제로부터 부여된 작업들을 수신하는 것 등이 포함된다. 상기한 단계들은 전력 차단 이전에 캐시들을 플러싱하는 단계, 전력 차단 이전에 프로브 필터들을 무효화하는 단계, 노드들(220A-220D) 각각에 고정된 인터럽트 ID들을 저장하는 단계, 노드들(220A-220D)의 마스터 노드에 노드들에 대한 최저 인터럽트 우선순위를 저장하는 단계, 및 특정 캐시 라인을 찾는 브로드캐스트 프로브에 대해 전력이 차단된 노드를 대신하여 미스 응답을 스푸핑하는 단계를 포함한다. 또한, 운영 체제와 같은 소프트웨어는 업데이트 없이 초기 고정 인터럽트 ID들을 유지 관리하는 것 외에 작업들을 처리하기 위해 전력이 차단된 노드들을 기상시키지 않고, 작업들을 스케줄링하고 데이터를 활성 노드들로 이동시킴으로써 노드가 전력이 차단된 상태로 유지되는 시간량을 연장하는 것에 도움이 된다.
다양한 실시 예에서, 노드(220A)는 컴퓨팅 시스템(200)에서의 마스터 노드이고 인터럽트 제어기(228)는 중재되는 인터럽트들에 대한 컴퓨팅 시스템(200)에서의 다수의 프로세서 코어의 인터럽트 우선순위들을 저장한다. 일 실시 예에서, 브로드캐스트 메시지들이 아닌 유니캐스트 메시지로 중재되는 인터럽트들를 핸들링하는데 사용되는 단계들이 노드(100)를 처리하기 위한 전술된 단계들이다. 예를 들어, 중재되는 인터럽트들은 최저 인터럽트 우선순위에 기초하여 중재 로직에 의해 선택되는 프로세서 코어에 의해 서비스된다. 일부 실시 예에서, 인터럽트 제어기(228)는 또한 컴퓨팅 시스템(200)에서의 프로세서 코어들 각각에 대한 고정 인터럽트 식별자들(ID)을 저장한다. 일 실시 예에서, 고정 인터럽트 식별자들(ID)은 APIC(Advanced Programmable Interrupt Controller) ID들이다. 중재되는 인터럽트들과는 대조적으로, 컴퓨팅 시스템(200)에서의 소정의 프로세서 코어가 고정 인터럽트를 어써트할 때, 소정의 프로세서 코어는 어써트된 고정 인터럽트와 일치하는 고정 인터럽트 ID를 갖는 특정 프로세서 코어로 고정 인터럽트를 전송해야 한다.
일 실시 예에서, 고정 인터럽트 ID들은 운영 체제와 같은 소프트웨어에 의해 순차적인 방식으로 부여된다. 따라서, 노드(220A)에서의 인터럽트 제어기(228) 및 노드(220B-220D)에서의 각 인터럽트 제어기는 각각의 개별 고정 인터럽트 ID를 저장하는 것이 아니라, 고정 인터럽트 ID들의 범위들을 저장한다. CPU가 각각 2개의 소프트웨어 스레드를 처리하기 위한 2개의 하드웨어 스레드를 포함하는 8개의 코어를 포함하는 이전 예를 사용하면, CPU는 16개의 고정 인터럽트 ID를 갖는다. 도시된 실시 예에서, 컴퓨팅 시스템(200)은 각각 유사한 CPU를 갖는 4개의 노드를 갖고, 그에 따라 64개의 고정 인터럽트 ID가 있다. 노드들(220A-220D) 각각은 64-엔트리 테이블을 사용하여 개별 고정 인터럽트 ID들을 저장하는 것이 아니라, 일 실시 예에서, 노드들(220A-220D) 각각은 각 노드마다 2개의 고정 인터럽트 ID, 또는 총 8개의 고정 인터럽트 ID를 저장한다.
일 실시 예에서, 노드들(220A-220D) 각각은 컴퓨팅 시스템(200)에서의 각 노드에 대해 순차적인 고정 인터럽트 ID들의 범위의 시작 고정 인터럽트 ID 및 종료 고정 인터럽트 ID를 저장한다. 예를 들어, 운영 체제가 고정 인터럽트 ID들 0 내지 15를 노드(220A)에 순차적으로 부여한다면, 노드들(220A-220D) 각각은 열 여섯 개의 고정 인터럽트 ID 각각이 아니라, 노드(220A)에 대해 값들 0 및 15를 저장한다. 컴퓨팅 시스템(200)에서의 노드(220C)에서의 소정의 코어가 고정 인터럽트 ID 9를 갖는 고정 인터럽트를 어써트할 때, 컴퓨팅 시스템(200)에 대한 고정 인터럽트 ID들의 비교적 작은 저장 장치 룩업은 노드(220A)가 ID 9를 갖는 고정 인터럽트를 서비스하기 위해 부여된 프로세서 코어를 가지고 있음을 나타낸다 그 후, 노드(220C)는 노드(220A)로 고정 인터럽트 ID 9가 부여된 프로세서 코어로 고정 인터럽트를 서비스하기 위한 유니캐스트 메시지를 전송한다. 노드들(220A-220D) 중 ID 9를 갖는 고정 인터럽트를 서비스하기 위해 부여된 프로세서 코어를 갖는 노드를 찾기 위해 어떠한 브로드캐스트 프로브도 전송되지 않는다.
비교적 드물지만, 운영 체제가 고정 인터럽트 ID를 재부여하는 것이 가능하다. 일부 실시 예에서, 노드들(220A-220D) 중 하나 이상은 부여된 고정 인터럽트 ID들의 초기 소프트웨어 카피를 스누핑한다. 일 실시 예에서, 메모리 어드레스 범위와 같은 위치가 알려져 있고, 판독 동작에 이어 임의의 변경이 발생했는지 여부를 결정하기 위한 확인이 수행된다. 다른 실시 예에서, 초기 값들을 확인하고 결과들을 보고하기 위한 소프트웨어 프로세스가 호출된다. 초기 고정 인터럽트 ID들의 업데이트가 발생했다면, 일 실시 예에서, 노드들(220A-220D) 각각은 그것의 고정 인터럽트 ID들의 카피를 무효화한다. 다음으로, 브로드캐스트 메시지들이 고정 인터럽트들을 서비스하는데 사용된다. 다른 실시 예에서, 노드들(220A-220D) 각각은 그것의 고정 인터럽트 ID들의 카피를 업데이트한다. 다음으로, 유니캐스트 메시지들이 고정 인터럽트들을 서비스하는데 사용된다.
이제 도 3을 참조하면, 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법(300)의 일 실시 예가 도시되어 있다. 논의를 위해, 이 실시 예에서의 단계들(도 4 내지 도 6에서의 단계들 뿐만 아니라)은 순차적인 순서로 도시된다. 그러나, 설명되는 방법들의 다양한 실시 예에서, 설명되는 요소들 중 하나 이상의 요소가 동시에, 도시된 것과 상이한 순서로 또는 완전히 생략됨이 주의된다. 그 외 다른 추가 요소들이 또한 목적하는 대로 수행된다. 여기에 설명된 임의의 다양한 시스템 또는 장치가 방법(300)을 구현하도록 구성된다.
다중 노드 시스템에서 고정 인터럽트 식별자들(ID)이 초기화된다(블록 302). 고정 인터럽트 ID들은 고정 인터럽트를 서비스하기 위해 일치하는 고정 인터럽트 ID가 어느 프로세서 코어 또는 어느 프로세서 코어 내의 하드웨어 스레드에 부여되는지를 명시한다. 다양한 실시 예에서, 운영 체제는 고정 인터럽트 ID들을 초기화하고, 일 실시 예에서, 고정 인터럽트 ID들은 순차적 방식으로 초기화된다. 고정 인터럽트 ID들은 컴퓨팅 시스템에서의 노드들로 브로드캐스팅된다(블록 304). 예를 들어, 운영 체제는 컴퓨팅 시스템에 대한 고정 인터럽트 ID들의 표시들을 노드들 각각에 전송한다. 대안적으로, 하나 이상의 노드는 컴퓨팅 시스템에 대한 고정 인터럽트 ID들을 획득하기 위해 특정 메모리 위치들을 스누핑한다. 또 다른 예들에서, 하나 이상의 노드는 컴퓨팅 시스템에 대한 고정 인터럽트 ID들을 결정하기 위해 운영 체제에 대한 시스템 호출을 수행한다. 각 노드는 수신된 고정 인터럽트 ID들에 기초하여 각 노드에 대한 고정 인터럽트 ID들의 카피를 업데이트한다(블록 306). 그에 따라, 고정 인터럽트들을 핸들링하는데 브로드캐스트 메시지들이 필요하지 않다.
다수의 노드가 작업들을 처리한다(블록 308). 노드 내 하나 이상의 클라이언트는 컴퓨터 프로그램들, 또는 소프트웨어 어플리케이션들을 실행한다. 일부 실시 예에서, 다수의 노드는 다중 소켓 서버 내에 있고 배치 작업들이 운영 체제에 의해 수신되며, 이는 작업들을 다수의 노드 중 하나 이상에 할당한다. 다양한 실시 예에서, 다중 노드 컴퓨팅 시스템은 불균일 메모리 액세스(NUMA) 아키텍처를 이용하고 노드들 각각은 NUMA 노드이다.
제1 노드가 고정 인터럽트를 어써트하고(조건 블록 310의 "예" 분기), 저장된 고정 인터럽트 ID들이 계속해서 사용되고 있다면(조건 블록 312의 "예" 분기), 고정 인터럽트를 서비스할 제2 노드가 저장된 고정 인터럽트 ID들에 기초하여 식별된다(블록 314). 고정 인터럽트는 유니캐스트 메시지로 제2 노드로 전송된다(블록 324). 브로드캐스트 메시지들은 고정 인터럽트들을 서비스하는데 사용되지 않는다. 그에 따라, 제2 노드가 활성 상태이 있는 경우, 고정 인터럽트를 서비스하기 위해 전력이 차단된 노드들이 기상되지 않았다.
노드가 고정 인터럽트를 어써트하\지 않는다면(조건 블록 310의 "아니오" 분기), 초기화된 고정 인터럽트 ID들의 소프트웨어 카피가 스누핑된다(블록 316). 전술한 바와 같이, 컴퓨팅 시스템에서의 노드들 중 하나 이상은 부여된 고정 인터럽트 ID들의 초기 소프트웨어 카피를 스누핑한다. 일 실시 예에서, 메모리 어드레스 범위와 같은 위치가 알려져 있고, 판독 동작에 이어 임의의 변경이 발생했는지 여부를 결정하기 위한 확인이 수행된다. 다른 실시 예에서, 초기 값들을 확인하고 결과들을 보고하기 위한 소프트웨어 프로세스가 호출된다. 임의의 업데이트들이 발생한 것으로 결정된다면(조건 블록 318의 "예" 분기), 다중 노드에서의 고정 인터럽트 ID들의 저장 장치는 업데이트되거나 무효화된다(블록 320). 무효화 또는 업데이트 결정은 업데이트들의 빈도 및 고정 인터럽트 ID들의 카피들을 저장하는데 사용되는 방식에 기초한 설계 선택이다. 전술한 바와 같이, 각각의 개별 고정 인터럽트 ID가 아닌 고정 인터럽트 ID들의 범위들이 저장된다. 저장 범위들은 사용되는 저장량을 감소시킨다.
업데이트가 발생하지 않은 것으로 결정된다면(조건 블록 318의 "아니오" 분기), 방법(300)의 제어 흐름은 다시 다수의 노드에 의해 작업들이 처리되는 블록 308로 되돌아간다. 제1 노드가 고정 인터럽트를 어써트하나(조건 블록 310의 "예" 분기), 저장된 고정 인터럽트 ID들이 더 이상 사용되고 있지 않다면(조건 블록 312의 "아니오" 분기), 고정 인터럽트를 서비스할 제2 노드는 시스템에서의 다른 노드들에 대한 브로드캐스트 메시지들에 기초하여 식별된다(블록 322). 그 후, 고정 인터럽트가 유니캐스트 메시지로 제2 노드로 전송된다(블록 324).
이제 도 4를 참조하면, 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법(400)의 다른 실시 예가 도시되어 있다. 방법(300)과 유사하게, 방법(400)을 위한 다중 노드 컴퓨팅 시스템은 불균일 메모리 액세스(NUMA) 아키텍처를 이용하고 노드들 각각은 NUMA 노드이다. 다중 노드 시스템에서 중재되는 인터럽트들에 대한 인터럽트 우선순위들이 초기화된다(블록 402). 일 실시 예에서, 최저값의 인터럽트 우선순위는 중재되는 인터럽트를 서비스하기 위해 어느 프로세서 코어 또는 어느 프로세서 코어 내의 하드웨어 스레드가 부여되는지를 명시한다.
인터럽트 우선순위들은 컴퓨팅 시스템에서의 다수의 노드의 마스터 노드로 브로드캐스팅된다(블록 404). 예를 들어, 운영 체제는 컴퓨팅 시스템에 대한 인터럽트 우선순위들의 표시들을 마스터 모드로 전송한다. 대안적으로, 마스터 노드는 중재되는 인터럽트들에 대한 인터럽트 우선순위들을 획득하기 위해 특정 메모리 위치들을 스누핑한다. 또 다른 예들에서, 마스터 노드는 컴퓨팅 시스템에 대한 인터럽트 우선순위들을 결정하기 위해 운영 체제에 대한 시스템 호출을 수행한다.
다수의 노드가 작업들을 처리한다(블록 406). 노드 내 하나 이상의 클라이언트는 컴퓨터 프로그램들, 또는 소프트웨어 어플리케이션들을 실행한다. 일부 실시 예에서, 다수의 노드는 다중 소켓 서버 내에 있고 배치 작업들이 운영 체제에 의해 수신되며, 이는 작업들을 다수의 노드 중 하나 이상에 할당한다. 다양한 실시 예에서, 운영 체제가 코어들의 인터럽트 우선순위들을 업데이트할 수 있게 하는 백그라운드 프로세스가 실행된다. 코어들에 대한 인터럽트 우선순위들이 업데이트된다면(조건 블록 408의 "예" 분기), 코어들에 대한 업데이트된 인터럽트 우선순위들이 마스터 노드로 전송된다(블록 410). 일부 실시 예에서, 마스터 노드는 각 노드에 대해 단지 최저 인터럽트 우선순위만을 저장한다. 최저 인터럽트 우선순위가 업데이트되지 않는다면, 일 실시 예에서, 업데이트는 마스터 노드로 전송되지 않는다.
노드가 중재되는 인터럽트를 어써트하지 않는다면(조건 블록 412의 "아니오" 분기), 방법(400)의 제어 흐름은 다시 다수의 노드가 작업을 처리하는 블록 406으로 되돌아간다. 제1 노드가 중재되는 인터럽트들를 어써트한다면(조건 블록 412의 "예" 분기), 코어에 대한 최저 우선순위를 갖는 노드를 식별하기 위한 요청이 마스터 노드로 전송된다(블록 414). 요청은 다수의 브로드캐스트 메시지가 아닌, 단일 유니캐스트 메시지이다. 마스터 노드로부터의 응답에 기초하여, 중재되는 인터럽트들를 서비스하기 위해 제2 노드가 식별된다(블록 416).
다수의 코어가 동일한 인터럽트 우선순위를 가질 때, 일 실시 예에서, 마스터 노드는 다수의 노드에서 활성 노드를 선택한다. 다수의 활성 노드가 있다면, 마스터 노드는 라운드-로빈 기법, 요청 노드에서 홉 수가 가장 적은 노드를 선택하는 거리 기법 또는 다른 선택 기법을 사용한다. 중재되는 인터럽트는 유니캐스트 메시지로 제2 노드로 전송된다(블록 418). 브로드캐스트 메시지들은 중재되는 인터럽트를 서비스하는데 사용되지 않는다. 그에 따라, 마스터 노드 및 제2 노드 각각이 활성 상태에 있다면, 고정 인터럽트를 서비스하기 위해 전력이 차단된 노드들이 기상되지 않았다.
이제 도 5를 참조하면, 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법(500)의 다른 실시 예가 도시되어 있다. 방법들(300 및 400)과 유사하게, 방법(500)을 위한 다중 노드 컴퓨팅 시스템은 불균일 메모리 액세스(NUMA) 아키텍처를 이용하고 노드들 각각은 NUMA 노드이다. 다수의 노드가 작업들을 처리한다(블록 502). 메모리 요청들이 서비스될 때 다수의 노드 각각은 프로브 필터를 유지한다(블록 504).
소정의 노드가 그것의 하나 이상의 클라이언트 각각이 유휴 상태라고 결정하면(조건 블록 506의 "예" 분기), 소정의 노드는 프로브 필터에서의 각 엔트리를 무효화한다(블록 508). 일부 실시 예에서, 소정의 노드는 또한 프로브 필터에서의 엔트리들을 무효화하기 전에 그것의 시스템 메모리에 액세스를 시도하는 원격 메모리 요청이 없다고 결정한다. 소정의 노드는 무효화된 엔트리들 및 원격 노드들에 전송된 대응하는 메시지들 또는 프로브들에 기인하여 수신되는 원격 노드들에 저장된 더티 캐시 라인들로 그것의 시스템 메모리를 업데이트한다(블록 510). 그 후, 소정의 노드는 전력을 차단한다(블록 512). 다양한 실시 예에서 소정의 노드의 전력 차단은 링크 인터페이스들에 대한 드라이버들을 디스에이블하는 것, 클라이언트들 및 통신 패브릭에 대한 클록들을 디스에이블하는 것 그리고 DRAM이 사용될 때 시스템 메모리를 자기-리프레시를 수행하도록 설정하는 것 중 하나 이상을 포함한다.
이제 도 6을 참조하면, 다중 노드 컴퓨팅 시스템에 대한 전력 관리를 수행하기 위한 방법(600)의 다른 실시 예가 도시되어 있다. 방법들(300-500)과 유사하게, 방법(600)을 위한 다중 노드 컴퓨팅 시스템은 불균일 메모리 액세스(NUMA) 아키텍처를 이용하고 노드들 각각은 NUMA 노드이다. 다수의 노드가 작업들을 처리한다(블록 602). 제1 노드가 캐시 라인에 대한 브로드캐스트 프로브를 생성한다면(조건 블록 604의 "예" 분기), 브로드캐스트 프로브는 시스템에서의 다른 노드들로 전송된다(블록 606). 컴퓨팅 시스템에서의 제2 노드는 브로드캐스트 프로브를 수신한다(블록 608).
제2 노드가 임의의 이웃 노드의 전력이 차단된다고 결정하지 않는다면(조건 블록 610의 "아니오" 분기), 제2 노드는 제2 노드에 대해 생성된 응답을 제2 노드로부터 제1 노드로 전송한다(블록 612). 제2 노드는 또한 선택된 노드 토폴로지에서 사용되는 노드의 연결성에 기초하여 브로드캐스트 프로브를 하나 이상의 다른 이웃 노드로 중계한다.
제2 노드가 이웃 제3 노드의 전력이 차단된다고 결정한다면(조건 블록 610의 "예" 분기), 제2 노드는 브로드캐스트 프로브를 제3 노드로 전송하는 것을 보류한다(블록 614). 제2 노드는 제3 노드에 대한 미스 응답을 생성한다(블록 616). 제2 노드는 제2 노드로부터 제1 노드로 미스 응답을 전송한다(블록 618). 그에 따라, 제2 노드는 특정 캐시 라인을 찾는 브로드캐스트 프로브에 대해 전력이 차단된 노드를 대신하여 미스 응답을 스푸핑한다. 미스 응답으로 응답하기 위해 제3 노드는 기상되지 재개되지 않는다. 그 후, 방법(600)의 제어 흐름은 블록 612로 이동한다.
다양한 실시 예에서, 소프트웨어 어플리케이션의 프로그램 명령들은 이전에 설명된 방법들 및/또는 메커니즘들을 구현하기 위해 사용된다. 프로그램 명령들은 C와 같은 상위 레벨 프로그래밍 언어로 하드웨어의 동작을 설명한다. 대안적으로, Verilog와 같은 하드웨어 설계 언어(HDL)가 사용된다. 프로그램 명령들은 비일시적 컴퓨터 판독 가능한 저장 매체에 저장된다. 많은 유형의 저장 매체가 이용 가능하다. 저장 매체는 프로그램 실행을 위해 컴퓨팅 시스템에 프로그램 명령들 및 수반 데이터를 제공하기 위해 사용 동안 컴퓨팅 시스템에 의해 액세스 가능하다. 컴퓨팅 시스템은 적어도 하나 이상의 메모리 및 프로그램 명령들을 실행하도록 구성된 하나 이상의 프로세서를 포함한다.
전술한 실시 예들은 단지 구현의 비제한적인 예들일 뿐이라는 것이 강조되어야 한다. 상기한 개시 내용이 완전히 이해되면, 해당 기술분야의 통상의 기술자들에게는 다양한 변형 및 수정이 명백해질 것이다. 다음의 청구범위는 그러한 모든 변경 및 변형을 포함하는 것으로 해석되어야 한다.
Claims (20)
- 컴퓨팅 시스템으로서,
복수의 노드로서, 각각:
어플리케이션들을 처리하도록 구성된 하나 이상의 클라이언트;
상기 복수의 노드의 다른 노드들에 결합되는 복수의 링크; 및
전력 제어기를 포함하는, 상기 복수의 노드를 포함하며;
상기 복수의 노드의 제1 노드로부터 브로드캐스트 프로브를 수신하는 것에 응답하여, 상기 복수의 노드의 제2 노드가:
상기 제2 노드에 직접 연결된 상기 복수의 노드의 제3 노드의 전력이 차단된다고 결정하는 것에 응답하여 상기 제3 노드에 대한 미스 응답(miss response)을 생성하도록; 그리고
상기 미스 응답을 상기 제1 노드로 전송하도록 구성되는, 컴퓨팅 시스템. - 청구항 1에 있어서, 브로드캐스트 프로브를 생성하는 것에 응답하여, 상기 복수의 노드의 상기 제1 노드가:
상기 제1 노드에 직접 연결된 상기 복수의 노드의 제4 노드의 전력이 차단된다고 결정하는 것에 응답하여 상기 제4 노드에 대한 미스 응답을 생성하도록 구성되는, 컴퓨팅 시스템. - 청구항 1에 있어서, 상기 제1 노드는:
메모리 요청들이 서비스될 때 프로브 필터를 유지하도록; 그리고
상기 하나 이상의 클라이언트의 각 클라이언트가 유휴 상태에 있다고 결정하는 것에 응답하여:
상기 프로브 필터에서의 각 엔트리를 무효화하도록; 그리고
상기 프로브 필터에서의 엔트리들을 무효화한 결과로서 수신되는 더티 캐시 라인들로 상기 제1 노드에 연결된 시스템 메모리를 업데이트하도록; 그리고
상기 복수의 링크 및 상기 제1 노드의 상기 하나 이상의 클라이언트의 전력을 차단하도록 구성되는, 컴퓨팅 시스템. - 청구항 1에 있어서, 상기 하나 이상의 클라이언트 중 적어도 하나의 클라이언트는 복수의 코어를 포함하고, 상기 복수의 노드의 마스터 노드는 중재되는 인터럽트들에 대한 상기 복수의 노드에서의 상기 복수의 코어의 인터럽트 우선순위들을 저장하도록 구성되는, 컴퓨팅 시스템.
- 청구항 4에 있어서, 중재되는 인터럽트를 검출하는 것에 응답하여, 상기 제1 노드는:
최저 우선순위를 갖는 소정의 코어 및 상기 소정의 코어를 포함하는 소정의 노드를 식별하기 위한 요청을 상기 마스터 노드로 전송하도록; 그리고
상기 마스터 노드로부터 상기 소정의 코어 및 상기 소정의 노드를 식별하는 응답에 기초하여 상기 소정의 코어로 상기 중재되는 인터럽트를 핸들링하기 위한 요청을 상기 소정의 노드로 전송하도록 구성되는, 컴퓨팅 시스템. - 청구항 4에 있어서, 중재되는 인터럽트들에 대한 코어들의 우선순위들을 결정하는 것이 상기 제1 노드에서 업데이트되는 것 응답하여, 상기 제1 노드는 상기 마스터 노드 상에 저장된 중재되는 인터럽트들에 대한 코어들의 우선순위들을 업데이트하기 위해 상기 마스터 노드에 업데이트된 상기 우선순위들을 전송하도록 구성되는, 컴퓨팅 시스템.
- 청구항 1에 있어서, 상기 하나 이상의 클라이언트 중 적어도 하나의 클라이언트는 복수의 코어를 포함하고, 적어도 상기 제1 노드는 상기 복수의 코더의 각 코어에 대한 고정 인터럽트 식별자(ID)의 표시를 저장하도록 구성되는, 컴퓨팅 시스템.
- 청구항 7에 있어서, 고정 인터럽트를 검출하는 것에 응답하여, 상기 제1 노드는:
검출된 상기 고정 인터럽트의 고정 인터럽트 ID와 일치하는 고정 인터럽트 ID를 갖는 소정의 코어를 포함하는 소정의 노드를 식별하도록; 그리고
상기 소정의 코어로 상기 고정 인터럽트를 핸들링하기 위한 요청을 상기 소정의 노드로 전송하도록 구성되는, 컴퓨팅 시스템. - 방법으로서,
복수의 노드에 의해 어플리케이션들을 처리하는 단계로서, 각 노드는:
상기 어플리케이션들을 처리하도록 구성된 하나 이상의 클라이언트;
복수의 노드의 다른 노드들에 결합되는 복수의 링크; 및
전력 제어기를 포함하는, 상기 복수의 노드에 의해 어플리케이션들을 처리하는 단계를 포함하고;
상기 복수의 노드의 제1 노드로부터 브로드캐스트 프로브를 수신하는 것에 응답하여, 상기 복수의 노드의 제2 노드가:
상기 복수의 노드의 제2 노드에 의해, 상기 제2 노드에 직접 연결된 상기 복수의 노드의 제3 노드의 전력이 차단된다고 결정하는 것에 응답하여 상기 제3 노드에 대한 미스 응답을 생성하는 단계; 및
상기 제2 노드에 의해, 상기 미스 응답을 상기 제1 노드로 전송하는 단계로 구성되는, 방법. - 청구항 9에 있어서, 브로드캐스트 프로브를 생성하는 것에 응답하여:
상기 제1 노드에 의해, 상기 제1 노드에 직접 연결된 상기 복수의 노드의 제4 노드의 전력이 차단된다고 결정하는 것에 응답하여 상기 제4 노드에 대한 미스 응답을 생성하는, 방법. - 청구항 9에 있어서,
상기 제1 노드에 의해, 메모리 요청들이 서비스될 때 프로브 필터를 유지하는 단계; 및
상기 제1 노드에서의 상기 하나 이상의 클라이언트의 각 클라이언트가 유휴 상태에 있다고 결정하는 것에 응답하여:
상기 프로브 필터에서의 각 엔트리를 무효화하는 단계; 및
상기 프로브 필터에서의 엔트리들을 무효화한 결과로서 수신되는 더티 캐시 라인들로 상기 제1 노드에 연결된 시스템 메모리를 업데이트하는 단계; 및
상기 복수의 링크 및 상기 제1 노드의 상기 하나 이상의 클라이언트의 전력을 차단하는 단계를 더 포함하는, 방법. - 청구항 9에 있어서, 상기 하나 이상의 클라이언트 중 적어도 하나의 클라이언트는 복수의 코어를 포함하고, 상기 방법은 상기 복수의 노드의 마스터 노드에 의해, 중재되는 인터럽트들에 대한 상기 복수의 노드에서의 상기 복수의 코어의 인터럽트 우선순위들을 저장하는 단계를 더 포함하는, 방법.
- 청구항 12에 있어서, 중재되는 인터럽트를 검출하는 것에 응답하여:
상기 제1 노드에 의해, 최저 우선순위를 갖는 소정의 코어 및 상기 소정의 코어를 포함하는 소정의 노드를 식별하기 위한 요청을 상기 마스터 노드로 전송하는 단계; 및
상기 제1 노드에 의해, 상기 마스터 노드로부터 상기 소정의 코어 및 상기 소정의 노드를 식별하는 응답에 기초하여 상기 소정의 코어로 상기 중재되는 인터럽트를 핸들링하기 위한 요청을 상기 소정의 노드로 전송하는 단계를 더 포함하는, 방법. - 청구항 13에 있어서, 중재되는 인터럽트들에 대한 코어들의 우선순위들을 결정하는 것이 상기 제1 노드에서 업데이트되는 것 응답하여, 상기 제1 노드에 의해, 상기 마스터 노드 상에 저장된 중재되는 인터럽트들에 대한 코어들의 우선순위들을 업데이트하기 위해 상기 마스터 노드에 업데이트된 상기 우선순위들을 전송하는 단계를 더 포함하는, 방법.
- 청구항 9에 있어서, 상기 하나 이상의 클라이언트 중 적어도 하나의 클라이언트는 복수의 코어를 포함하고, 적어도 상기 제1 노드에 의해, 상기 복수의 코더의 각 코어에 대한 고정 인터럽트 식별자(ID)의 표시를 저장하는 단계를 더 포함하는, 방법.
- 청구항 15에 있어서, 고정 인터럽트를 검출하는 것에 응답하여:
검출된 상기 고정 인터럽트의 고정 인터럽트 ID와 일치하는 고정 인터럽트 ID를 갖는 소정의 코어를 포함하는 소정의 노드를 식별하는 단계; 및
상기 소정의 코어로 상기 고정 인터럽트를 핸들링하기 위한 요청을 상기 소정의 노드로 전송하는 단계를 더 포함하는, 방법. - 처리 노드로서,
어플리케이션들을 처리하도록 구성된 하나 이상의 클라이언트;
복수의 노드의 다른 노드들에 결합되는 복수의 링크; 및
제어 로직을 포함하며;
상기 복수의 노드의 제1 노드로부터 브로드캐스트 프로브를 수신하는 것에 응답하여, 상기 제어 로직은:
상기 처리 노드에 직접 연결된 상기 복수의 노드의 제2 노드의 전력이 차단된다고 결정하는 것에 응답하여 상기 제2 노드에 대한 미스 응답을 생성하도록; 그리고
상기 미스 응답을 상기 제1 노드로 전송하도록 구성되는, 처리 노드. - 청구항 17에 있어서, 브로드캐스트 프로브를 생성하는 것에 응답하여, 상기 제어 로직은:
상기 처리 노드에 직접 연결된 상기 복수의 노드의 제3 노드의 전력이 차단된다고 결정하는 것에 응답하여 상기 제3 노드에 대한 미스 응답을 생성하도록 구성되는, 처리 노드. - 청구항 17에 있어서, 상기 제어 로직은:
메모리 요청들이 서비스될 때 프로브 필터를 유지하도록; 그리고
상기 하나 이상의 클라이언트의 각 클라이언트가 유휴 상태에 있다고 결정하는 것에 응답하여:
상기 프로브 필터에서의 각 엔트리를 무효화하도록; 그리고
상기 프로브 필터에서의 엔트리들을 무효화한 결과로서 수신되는 더티 캐시 라인들로 상기 처리 노드에 연결된 시스템 메모리를 업데이트하도록; 그리고
상기 복수의 링크 및 상기 하나 이상의 클라이언트의 전력을 차단하도록 구성되는, 처리 노드. - 청구항 17에 있어서, 상기 하나 이상의 클라이언트 중 적어도 하나의 클라이언트는 복수의 코어를 포함하고, 상기 처리 노드는 중재되는 인터럽트들에 대한 상기 복수의 노드에서의 복수의 코어의 인터럽트 우선순위들을 저장하도록 구성되는 상기 복수의 노드의 마스터 노드인, 처리 노드.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/850,261 US10671148B2 (en) | 2017-12-21 | 2017-12-21 | Multi-node system low power management |
US15/850,261 | 2017-12-21 | ||
PCT/US2018/051789 WO2019125562A1 (en) | 2017-12-21 | 2018-09-19 | Multi-node system low power management |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200100152A KR20200100152A (ko) | 2020-08-25 |
KR102355989B1 true KR102355989B1 (ko) | 2022-02-08 |
Family
ID=63794701
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207021188A KR102355989B1 (ko) | 2017-12-21 | 2018-09-19 | 다중 노드 시스템 저전력 관리 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10671148B2 (ko) |
EP (1) | EP3729233A1 (ko) |
JP (1) | JP6984022B2 (ko) |
KR (1) | KR102355989B1 (ko) |
CN (1) | CN111684426A (ko) |
WO (1) | WO2019125562A1 (ko) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10725946B1 (en) * | 2019-02-08 | 2020-07-28 | Dell Products L.P. | System and method of rerouting an inter-processor communication link based on a link utilization value |
US11341069B2 (en) * | 2020-10-12 | 2022-05-24 | Advanced Micro Devices, Inc. | Distributed interrupt priority and resolution of race conditions |
JP2023547172A (ja) | 2020-11-20 | 2023-11-09 | エルジー エレクトロニクス インコーポレイティド | 無線lanシステムにおける送信mld内のapに対する部分情報を要求する方法及び装置 |
CN112612726B (zh) * | 2020-12-08 | 2022-09-27 | 海光信息技术股份有限公司 | 基于缓存一致性的数据存储方法、装置、处理芯片及服务器 |
US11620248B2 (en) * | 2021-03-31 | 2023-04-04 | Advanced Micro Devices, Inc. | Optical bridge interconnect unit for adjacent processors |
US11487340B1 (en) * | 2021-06-24 | 2022-11-01 | Advanced Micro Devices, Inc. | Probe filter retention based low power state |
US11703932B2 (en) * | 2021-06-24 | 2023-07-18 | Advanced Micro Devices, Inc. | Demand based probe filter initialization after low power state |
CN114490194B (zh) * | 2022-04-19 | 2022-07-01 | 海光信息技术股份有限公司 | 掉电处理方法、功能节点、处理系统、设备和存储介质 |
US12050535B2 (en) * | 2022-10-31 | 2024-07-30 | Google Llc | Dynamic migration of point-of-coherency and point-of-serialization in NUMA coherent interconnects |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140122833A1 (en) | 2009-09-24 | 2014-05-01 | Mark Bradley Davis | Server on a chip and node cards comprising one or more of same |
Family Cites Families (36)
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 |
US6295573B1 (en) * | 1999-02-16 | 2001-09-25 | Advanced Micro Devices, Inc. | Point-to-point interrupt messaging within a multiprocessing computer system |
US6657634B1 (en) | 1999-02-25 | 2003-12-02 | Ati International Srl | Dynamic graphics and/or video memory power reducing circuit and method |
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 |
US7039740B2 (en) | 2002-07-19 | 2006-05-02 | Newisys, Inc. | Interrupt handling in systems having multiple multi-processor clusters |
US7428644B2 (en) | 2003-06-20 | 2008-09-23 | Micron Technology, Inc. | System and method for selective memory module power management |
US7635987B1 (en) * | 2004-12-13 | 2009-12-22 | Massachusetts Institute Of Technology | Configuring circuitry in a parallel processing environment |
US7800621B2 (en) | 2005-05-16 | 2010-09-21 | Ati Technologies Inc. | Apparatus and methods for control of a memory controller |
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 |
JP5169731B2 (ja) | 2008-10-24 | 2013-03-27 | 富士通セミコンダクター株式会社 | マルチプロセッサシステムlsi |
US8181046B2 (en) | 2008-10-29 | 2012-05-15 | Sandisk Il Ltd. | Transparent self-hibernation of non-volatile memory system |
US8195887B2 (en) * | 2009-01-21 | 2012-06-05 | Globalfoundries Inc. | Processor power management and method |
US8359436B2 (en) | 2009-12-18 | 2013-01-22 | Intel Corporation | Core snoop handling during performance state and power state transitions in a distributed caching agent |
US8402232B2 (en) | 2009-12-23 | 2013-03-19 | Oracle America, Inc. | Memory utilization tracking |
JP2011150653A (ja) * | 2010-01-25 | 2011-08-04 | Renesas Electronics Corp | マルチプロセッサシステム |
US8656198B2 (en) | 2010-04-26 | 2014-02-18 | Advanced Micro Devices | Method and apparatus for memory power management |
US8438416B2 (en) | 2010-10-21 | 2013-05-07 | Advanced Micro Devices, Inc. | Function based dynamic power control |
US20120254526A1 (en) | 2011-03-28 | 2012-10-04 | Advanced Micro Devices, Inc. | Routing, security and storage of sensitive data in random access memory (ram) |
US8924758B2 (en) | 2011-12-13 | 2014-12-30 | Advanced Micro Devices, Inc. | Method for SOC performance and power optimization |
WO2013165357A1 (en) | 2012-04-30 | 2013-11-07 | Intel Corporation | Master slave qpi protocol for coordinated idle power management in glueless and clustered systems |
US20140095801A1 (en) | 2012-09-28 | 2014-04-03 | Devadatta V. Bodas | System and method for retaining coherent cache contents during deep power-down operations |
US9213643B2 (en) | 2013-03-13 | 2015-12-15 | Applied Micro Circuits Corporation | Broadcast messaging and acknowledgment messaging for power management in a multiprocessor system |
US9983652B2 (en) | 2015-12-04 | 2018-05-29 | Advanced Micro Devices, Inc. | Balancing computation and communication power in power constrained clusters |
US11054887B2 (en) | 2017-12-28 | 2021-07-06 | Advanced Micro Devices, Inc. | System-wide low power management |
-
2017
- 2017-12-21 US US15/850,261 patent/US10671148B2/en active Active
-
2018
- 2018-09-19 KR KR1020207021188A patent/KR102355989B1/ko active IP Right Grant
- 2018-09-19 JP JP2020534391A patent/JP6984022B2/ja active Active
- 2018-09-19 WO PCT/US2018/051789 patent/WO2019125562A1/en unknown
- 2018-09-19 CN CN201880088614.6A patent/CN111684426A/zh active Pending
- 2018-09-19 EP EP18783269.6A patent/EP3729233A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140122833A1 (en) | 2009-09-24 | 2014-05-01 | Mark Bradley Davis | Server on a chip and node cards comprising one or more of same |
Also Published As
Publication number | Publication date |
---|---|
JP2021507412A (ja) | 2021-02-22 |
EP3729233A1 (en) | 2020-10-28 |
JP6984022B2 (ja) | 2021-12-17 |
US10671148B2 (en) | 2020-06-02 |
KR20200100152A (ko) | 2020-08-25 |
CN111684426A (zh) | 2020-09-18 |
WO2019125562A1 (en) | 2019-06-27 |
US20190196574A1 (en) | 2019-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102355989B1 (ko) | 다중 노드 시스템 저전력 관리 | |
US10409347B2 (en) | Domain-differentiated power state coordination system | |
CN107257960B (zh) | 管理计算机存储器的装置、方法、系统及存储介质 | |
US7613886B2 (en) | Methods and apparatus for synchronizing data access to a local memory in a multi-processor system | |
US7761696B1 (en) | Quiescing and de-quiescing point-to-point links | |
US10572183B2 (en) | Power efficient retraining of memory accesses | |
US20220091657A1 (en) | Mechanism for performing distributed power management of a multi-gpu system | |
CN111684391B (zh) | 全系统低功率管理 | |
CN115443453A (zh) | 用于减少传输延迟的链路关联 | |
EP2808758B1 (en) | Reduced Power Mode of a Cache Unit | |
US20240160267A1 (en) | Telemetry Push Aggregation | |
KR101672357B1 (ko) | 응답 타이밍 최적화에 기초하는 멀티프로세서 시스템에서의 주파수 조정 수행 | |
US20230214350A1 (en) | Die-to-die Dynamic Clock and Power Gating | |
US9285865B2 (en) | Dynamic link scaling based on bandwidth utilization | |
KR102719995B1 (ko) | 시스템-전반 저전력 관리 | |
US20070240013A1 (en) | Methods And Apparatus For Managing Defective Processors Through Clock Programming | |
CN117882028A (zh) | 基于限制硬件强制的功率控制的功率管理 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right |