KR102132571B1 - 하드웨어 제어형 분할된 스누프 디렉토리들을 사용한 코히어런트 인터커넥트 전력 감소 - Google Patents
하드웨어 제어형 분할된 스누프 디렉토리들을 사용한 코히어런트 인터커넥트 전력 감소 Download PDFInfo
- Publication number
- KR102132571B1 KR102132571B1 KR1020197006539A KR20197006539A KR102132571B1 KR 102132571 B1 KR102132571 B1 KR 102132571B1 KR 1020197006539 A KR1020197006539 A KR 1020197006539A KR 20197006539 A KR20197006539 A KR 20197006539A KR 102132571 B1 KR102132571 B1 KR 102132571B1
- Authority
- KR
- South Korea
- Prior art keywords
- processor
- snoop
- divided
- power
- power state
- 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/3206—Monitoring of events, devices or parameters that trigger a change in power modality
-
- 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
- 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
- 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/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- 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
- 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/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- 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)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Power Sources (AREA)
Abstract
양태들은 임의의 수의 프로세서들, 임의의 수의 전력 도메인들, 및 임의의 수의 프로세서 캐시들을 갖는 컴퓨팅 디바이스 상에 다중의 분할된 스누프 디렉토리들을 구현하기 위한 장치에 의해 구현된 컴퓨팅 디바이스들, 장치, 및 방법들을 포함한다. 예를 들어, 다양한 양태들은 제 1 전력 도메인에 대한 제 1 분할된 스누프 디렉토리 및 제 2 전력 도메인에 대한 제 2 분할된 스누프 디렉토리를 인에이블하는 것으로서, 제 1 전력 도메인은 제 1 복수의 프로세서 캐시들을 포함하고, 제 2 전력 도메인은 적어도 하나의 프로세서 캐시를 포함하는, 상기 제 1 전력 도메인에 대한 제 1 분할된 스누프 디렉토리 및 제 2 전력 도메인에 대한 제 2 분할된 스누프 디렉토리를 인에이블하는 것, 제 1 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 것, 및 제 1 복수의 프로세서 캐시들이 저전력 상태에 있음을 결정하는 것에 응답하여 제 1 분할된 스누프 디렉토리를 디스에이블하는 것을 포함할 수도 있다. 유사한 동작들이 N 수의 전력 도메인들 및 M 수의 프로세서 캐시들에 대해 수행될 수도 있다.
Description
스누프 디렉토리들은 코히어런트 멀티 중앙 프로세서 유닛 (CPU) 클러스터 시스템들의 성능을 증가시키는 것을 돕는다. 스누프 디렉토리들은 가용 CPU 스누프 대역폭과 독립적인 스누프 미스 (snoop miss) 대역폭을 증가시키고, 스누핑된 CPU 에 대한 성능 열화를 감소시키고, 메모리에 대한 구조적 레이턴시를 감소시키며, 스누프 미스들에 대한 전력 소모를 감소시킬 수 있다. 하지만, 전술한 이점들을 달성하기 위해, 기존의 스누프 디렉토리 아키텍처들은 다량의 메모리를 사용하는 것, 높은 동적 에너지 소모를 갖는 것, 및/또는 열악한 전력 스케일가능성을 갖는 것의 경합하는 단점들 사이에서 절충해야 한다. 이들 단점들은, 부분적으로, 스누프 디렉토리를 채우고 메모리 위치의 CPU 사용을 표시하는 태그들의 결과이다. 이들 태그들은, 특별히, 더 낮은 기술 노드들에서 현저한 전력을 소모하는 고속 정적 랜덤 액세스 메모리 (SRAM) 매크로들을 요구한다.
다양한 개시된 양태들은 컴퓨팅 디바이스 상에 다중의 분할된 스누프 디렉토리들을 구현하기 위한 장치들 및 방법들을 포함할 수도 있다. 다양한 실시형태들은 제 1 전력 도메인에 대한 제 1 분할된 스누프 디렉토리 및 제 2 전력 도메인에 대한 제 2 분할된 스누프 디렉토리를 인에이블하는 것을 포함할 수도 있고, 여기서, 제 1 전력 도메인은 복수의 프로세서 캐시들을 포함할 수도 있고, 제 2 전력 도메인은 적어도 하나의 프로세서 캐시를 포함할 수도 있다. 일부 실시형태들은 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 것, 및 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있음을 결정하는 것에 응답하여 제 1 분할된 스누프 디렉토리를 디스에이블하는 것을 더 포함할 수도 있다.
일부 실시형태들은 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 조건을 검출하는 것, 및 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 조건을 검출하는 것에 응답하여 제 1 분할된 스누프 디렉토리를 저전력 상태로 변경하기 위한 요청을 전송하는 것을 더 포함할 수도 있다.
일부 실시형태들은 제 1 분할된 스누프 디렉토리를 저전력 상태로 변경하기 위한 요청을 수신하는 것을 더 포함할 수도 있고, 여기서, 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 것은 제 1 분할된 스누프 디렉토리를 저전력 상태로 변경하기 위한 요청을 수신하는 것에 응답하여 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 것을 포함할 수도 있다.
일부 실시형태들은 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 조건을 수신하는 것을 더 포함할 수도 있고, 여기서, 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 것은 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 조건을 검출하는 것에 응답하여 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 것을 포함할 수도 있다.
일부 실시형태들에 있어서, 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 조건을 수신하는 것은 제 1 전력 도메인으로부터 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시의 전력 상태를 표시하는 신호를 수신하는 것을 포함할 수도 있다.
일부 실시형태들은 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시가 고전력 상태에 있음을 결정하는 것에 응답하여 제 1 분할된 스누프 디렉토리를 인에이블된 채로 남겨두는 것을 더 포함할 수도 있다.
일부 실시형태들은 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시를 고전력 상태로 변경하기 위한 조건을 검출하는 것, 및 적어도 하나의 프로세서 캐시를 고전력 상태로 변경하기 위한 조건을 검출하는 것 및 복수의 프로세서 캐시들이 저전력 상태에 있음을 결정하는 것에 응답하여 제 1 분할된 스누프 디렉토리를 인에이블하는 것을 더 포함할 수도 있다.
일부 실시형태들에 있어서, 저전력 상태는 "OFF" 상태 및 "RET" (보류) 상태 중 하나를 포함할 수도 있고, 고전력 상태는 "ON" 상태를 포함할 수도 있다.
일부 실시형태들은 N 전력 도메인들에 대한 N 분할된 스누프 디렉토리들 및 M 전력 도메인들에 대한 M 분할된 스누프 디렉토리들을 인에이블하는 것을 더 포함할 수도 있고, 여기서, N 및 M 은 1 보다 큰 정수들일 수도 있고, N 전력 도메인들은 N 복수의 프로세서 캐시들을 포함할 수도 있고, M 전력 도메인은 적어도 하나의 프로세서 캐시를 포함할 수도 있다. 일부 실시형태들은 N 복수의 프로세서 캐시들의 임의의 프로세서 캐시들이 모두 저전력 상태에 있는지 여부를 결정하는 것, 및 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는 N 분할된 스누프 디렉토리들 중 임의의 분할된 스누프 디렉토리를 디스에이블하는 것을 더 포함할 수도 있다.
다양한 실시형태들은 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스를 포함할 수도 있다. 컴퓨팅 디바이스는 복수의 프로세서 캐시들을 포함하는 제 1 전력 도메인, 적어도 하나의 프로세서 캐시를 포함하는 제 2 전력 도메인, 제 1 전력 도메인에 대한 제 1 분할된 스누프 디렉토리 및 제 2 전력 도메인에 대한 제 2 분할된 스누프 디렉토리를 갖는 코히어런트 인터커넥트, 및 제 1 전력 도메인에 통신가능하게 접속되고 코히어런트 인터커넥트에 통신가능하게 접속된 제 1 프로세싱 디바이스를 포함할 수도 있다. 제 1 프로세싱 디바이스는 상기 요약된 실시형태 방법들의 동작들을 수행하도록 구성될 수도 있다.
다양한 실시형태들은 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스를 포함할 수도 있고, 컴퓨팅 디바이스는 상기 요약된 실시형태 방법들의 기능들을 수행하는 수단을 갖는다.
다양한 실시형태들은, 컴퓨팅 디바이스의 프로세서로 하여금 상기 요약된 실시형태 방법들의 동작들을 수행하게 하도록 구성된 프로세서 실행가능 명령들이 저장된 비일시적인 프로세서 판독가능 저장 매체를 포함할 수도 있다.
본 명세서에 통합되고 본 명세서의 부분을 구성하는 첨부 도면들은 다양한 양태들의 예시적인 양태들을 예시하고, 상기 주어진 일반적인 설명 및 하기에서 주어지는 상세한 설명과 함께, 청구항들의 특징들을 설명하도록 제공한다.
도 1 은 일 양태를 구현하기에 적합한 컴퓨팅 디바이스를 예시한 컴포넌트 블록 다이어그램이다.
도 2 는 일 양태를 구현하기에 적합한 예시적인 멀티코어 프로세서를 예시한 컴포넌트 블록 다이어그램이다.
도 3 은 일 양태를 구현하기에 적합한 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 시스템의 일 예를 예시한 블록 다이어그램이다.
도 4 는 일 양태를 구현하기에 적합한 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 시스템의 일 예를 예시한 블록 다이어그램이다.
도 5 는 일 양태를 구현하기에 적합한 멀티코어 프로세서 상태 시그널링을 갖는 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 시스템의 일 예를 예시한 블록 다이어그램이다.
도 6 은 일 양태를 구현하기에 적합한 전력 도메인에 대한 예시적인 전력 상태표를 예시한 표이다.
도 7 은 일 양태에 따른, 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리들을 구현하기 위한 방법을 예시한 프로세스 플로우 다이어그램이다.
도 8 은 일 양태에 따른, 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 파워-업 및 인에이블먼트 (enablement) 를 구현하기 위한 방법을 예시한 프로세스 플로우 다이어그램이다.
도 9 는 일 양태에 따른, 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 파워-업을 구현하기 위한 방법을 예시한 프로세스 플로우 다이어그램이다.
도 10 은 일 양태에 따른, 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 인에이블먼트를 구현하기 위한 방법을 예시한 프로세스 플로우 다이어그램이다.
도 11 은 일 양태에 따른, 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 디스에이블링을 구현하기 위한 방법을 예시한 프로세스 플로우 다이어그램이다.
도 12 는 일 양태에 따른, 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 디스에이블링을 구현하기 위한 방법을 예시한 프로세스 플로우 다이어그램이다.
도 13 은 일 양태에 따른, 멀티코어 프로세서 상태 시그널링을 갖는 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 파워-업 및 인에이블먼트를 구현하기 위한 방법을 예시한 프로세스 플로우 다이어그램이다.
도 14 는 일 양태에 따른, 멀티코어 프로세서 상태 시그널링을 갖는 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 디스에이블링을 구현하기 위한 방법을 예시한 프로세스 플로우 다이어그램이다.
도 15 는 일 양태에 따른, 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리들을 구현하기 위한 방법을 예시한 프로세스 플로우 다이어그램이다.
도 16 은 다양한 양태들과의 사용에 적합한 예시적인 모바일 컴퓨팅 디바이스를 예시한 컴포넌트 블록 다이어그램이다.
도 17 은 다양한 양태들과의 사용에 적합한 예시적인 모바일 컴퓨팅 디바이스를 예시한 컴포넌트 블록 다이어그램이다.
도 18 은 다양한 양태들과의 사용에 적합한 예시적인 서버를 예시한 컴포넌트 블록 다이어그램이다.
도 1 은 일 양태를 구현하기에 적합한 컴퓨팅 디바이스를 예시한 컴포넌트 블록 다이어그램이다.
도 2 는 일 양태를 구현하기에 적합한 예시적인 멀티코어 프로세서를 예시한 컴포넌트 블록 다이어그램이다.
도 3 은 일 양태를 구현하기에 적합한 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 시스템의 일 예를 예시한 블록 다이어그램이다.
도 4 는 일 양태를 구현하기에 적합한 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 시스템의 일 예를 예시한 블록 다이어그램이다.
도 5 는 일 양태를 구현하기에 적합한 멀티코어 프로세서 상태 시그널링을 갖는 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 시스템의 일 예를 예시한 블록 다이어그램이다.
도 6 은 일 양태를 구현하기에 적합한 전력 도메인에 대한 예시적인 전력 상태표를 예시한 표이다.
도 7 은 일 양태에 따른, 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리들을 구현하기 위한 방법을 예시한 프로세스 플로우 다이어그램이다.
도 8 은 일 양태에 따른, 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 파워-업 및 인에이블먼트 (enablement) 를 구현하기 위한 방법을 예시한 프로세스 플로우 다이어그램이다.
도 9 는 일 양태에 따른, 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 파워-업을 구현하기 위한 방법을 예시한 프로세스 플로우 다이어그램이다.
도 10 은 일 양태에 따른, 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 인에이블먼트를 구현하기 위한 방법을 예시한 프로세스 플로우 다이어그램이다.
도 11 은 일 양태에 따른, 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 디스에이블링을 구현하기 위한 방법을 예시한 프로세스 플로우 다이어그램이다.
도 12 는 일 양태에 따른, 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 디스에이블링을 구현하기 위한 방법을 예시한 프로세스 플로우 다이어그램이다.
도 13 은 일 양태에 따른, 멀티코어 프로세서 상태 시그널링을 갖는 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 파워-업 및 인에이블먼트를 구현하기 위한 방법을 예시한 프로세스 플로우 다이어그램이다.
도 14 는 일 양태에 따른, 멀티코어 프로세서 상태 시그널링을 갖는 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 디스에이블링을 구현하기 위한 방법을 예시한 프로세스 플로우 다이어그램이다.
도 15 는 일 양태에 따른, 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리들을 구현하기 위한 방법을 예시한 프로세스 플로우 다이어그램이다.
도 16 은 다양한 양태들과의 사용에 적합한 예시적인 모바일 컴퓨팅 디바이스를 예시한 컴포넌트 블록 다이어그램이다.
도 17 은 다양한 양태들과의 사용에 적합한 예시적인 모바일 컴퓨팅 디바이스를 예시한 컴포넌트 블록 다이어그램이다.
도 18 은 다양한 양태들과의 사용에 적합한 예시적인 서버를 예시한 컴포넌트 블록 다이어그램이다.
다양한 양태들이 첨부 도면들을 참조하여 상세하게 설명될 것이다. 가능한 어느 곳에서든, 동일한 참조부호들이 동일하거나 유사한 부분들을 지칭하기 위해 도면들 전반에 걸쳐 사용될 것이다. 특정 예들 및 구현들에 대해 행해진 참조들은 예시적인 목적들이고, 청구항들의 범위를 제한하도록 의도되지 않는다.
다양한 양태들은, 중앙 프로세싱 유닛들 (CPU) 과 같은 다중의 프로세서들을 갖는 전력 도메인들에 대한 분할된 스누프 디렉토리 아키텍처들을 사용하여 스누프 디렉토리들의 전력 제어를 구현하기 위한 방법들, 및 그러한 방법들을 구현하는 시스템들 및 디바이스들을 포함할 수도 있다. 다중의 프로세서들은 멀티코어 프로세서들일 수도 있다. 다양한 양태들의 장치 및 방법들은 전력 도메인 전력 상태들을 모니터링하는 것 및 분할된 스누프 디렉토리 아키텍처들을 갖는 다양한 스누프 디렉토리들에 대한 분할된 스누프 디렉토리 전력 상태들을 제어하는 것을 위한 분할된 스누프 디렉토리 전력 제어 하드웨어를 포함할 수도 있다.
용어들 "컴퓨팅 디바이스" 및 "모바일 컴퓨팅 디바이스" 는 셀룰러 전화기들, 스마트 폰들, 개인용 또는 모바일 멀티미디어 플레이어들, 개인용 데이터 보조기들 (PDA들), 랩탑 컴퓨터들, 태블릿 컴퓨터들, 컨버터블 랩탑들/태블릿들 (투인원 (2-in-1) 컴퓨터들), 스마트 북들, 울트라 북들, 넷북들, 팜탑 컴퓨터들, 무선 전자 메일 수신기들, 멀티미디어 인터넷 가능식 셀룰러 전화기들, 모바일 게이밍 콘솔들, 무선 게이밍 제어기들, 및 메모리 및 프로그래밍가능 프로세서를 포함하는 유사한 개인용 전자 디바이스들 중 임의의 하나 또는 그 모두를 지칭하도록 본 명세서에서 상호 대체가능하게 사용된다. 용어 "컴퓨팅 디바이스" 는 추가로, 개인용 컴퓨터들, 데스크탑 컴퓨터들, 올인원 컴퓨터들, 워크스테이션들, 슈퍼 컴퓨터들, 메인프레임 컴퓨터들, 임베디드 컴퓨터들, 서버들, 홈 씨어터 컴퓨터들, 및 게임 콘솔들을 포함한 정지식 컴퓨팅 디바이스들을 지칭할 수도 있다.
현실적인 모바일 디바이스/스마트폰 사용 케이스들은 고성능 멀티코어 CPU들이 평범한 하루에서의 시간의 10% 미만이 활성일 수도 있음을 나타낸다. 고성능 멀티코어 CPU들은 또한 가장 큰 캐시들을 가질 수도 있으며, 이는 공통 태그 또는 통계 태그 접근법과 같은 가장 대중적인 스누프 디렉토리 아키텍처들 중 일부를 실제 사용 케이스들에서 매우 전력 비효율적이게 한다. 이들 스누프 디렉토리 아키텍처들은, 가변 성능 레벨의 멀티코어 프로세서들의 조합들을 포함하여 다중의 멀티코어 프로세서들을 서비스할 수도 있다. 언제라도, 스누프 디렉토리에 의해 서비스된 멀티코어 프로세서들 중 하나 이상은 비활성일 수도 있는 한편, 동일한 스누프 디렉토리에 의해 서비스된 멀티코어 프로세서들 중 적어도 하나는 활성일 수도 있다. 서비스된 멀티코어 프로세서들 중 임의의 멀티코어 프로세서가 활성인 동안, 서비스하는 스누프 디렉토리는, 스누프 디렉토리가 활성 멀티코어 프로세서를 서비스할 수 없을 수도 있기 때문에, 파워-다운된 멀티코어 프로세서를 위한 에너지를 보존하기 위해 파워-다운되지 않을 수도 있다. 따라서, 다중의 멀티코어 프로세서들을 서비스하는 스누프 디렉토리 아키텍처들은 전력-스케일 (power scale) 하기 어려울 수도 있다. 중복 태그 (duplicate tag) 접근법과 같이 개별 멀티코어 프로세서들을 서비스하는 스누프 디렉토리 아키텍처들은, 각각의 스누프 디렉토리가 서비스된 멀티코어 프로세서로 파워-다운될 수도 있기 때문에, 더 용이하게 전력-스케일가능할 수도 있다. 하지만, 멀티코어 프로세서들과 스누프 디렉토리들 간의 일대일 관계들은 매우 메모리 및 전력 집중적일 수도 있다.
분할된 스누프 디렉토리 아키텍처는, 본 명세서에서 분할된 스누프 디렉토리들로서 지칭되는 다중의 스누프 디렉토리들을 결합할 수도 있다. 각각의 분할된 스누프 디렉토리는 하나 이상의 - 하지만 전부는 아닌 - 멀티코어 프로세서들을 서비스하기 위해 할당될 수도 있다. 멀티코어 프로세서들은, 전력 소모의 공통 레벨들 및 시간을 포함한 전력 소모의 공통 특성들에 기초하여 전력 도메인들로 분할될 수도 있다. 일 예에 있어서, 표준 멀티코어 CPU 보다 더 자주 파워-다운되는 고성능 멀티코어 CPU 는, 고성능 멀티코어 CPU에만 또는 다중의 고성능 멀티코어 CPU들에 할당된 제 1 분할된 스누프 디렉토리에 의해 서비스될 수도 있다. 동일한 예에 있어서, 다중의 표준 멀티코어 CPU들은 제 2 분할된 스누프 디렉토리에 의해 서비스될 수도 있다. 다중의 멀티코어 프로세서들을 갖는 제 1 전력 도메인을 서비스하는 분할된 스누프 디렉토리들은 공통 태그 또는 통계 태그 접근법들을 사용할 수도 있는 한편, 오직 하나의 멀티코어 프로세서를 갖는 제 2 전력 도메인을 서비스하는 분할된 스누프 디렉토리들은 중복 태그, 공통 태그, 또는 통계 태그 접근법들을 사용할 수도 있다. 일 예에 있어서, 컴퓨팅 디바이스의 각각의 멀티코어 프로세서 또는 멀티코어 프로세서들의 그룹은 공통 태그 접근법을 사용하여 그 자신의 할당된 분할된 스누프 디렉토리에 의해 서비스된 그 자신의 전력 도메인일 수도 있다.
분할된 스누프 디렉토리들은 멀티코어 프로세서 전력 상태들에 기초하여 전력을 스케일하기 위한 능력을 인에이블할 수도 있다. 일부 양태들에 있어서, 하나의 분할된 스누프 디렉토리는 표준 성능 멀티코어 CPU들과 같은 하나 이상의 전력 효율적인 멀티코어 프로세서들을 갖는 전력 효율적인 전력 도메인을 위해 사용될 수도 있고, 하나의 분할된 스누프 디렉토리는 고성능 멀티코어 CPU들과 같은 하나 이상의 성능 멀티코어 프로세서들을 갖는 성능 전력 도메인을 위해 사용될 수도 있다. 포괄적 L2 캐시에 대해, 단일의 분할된 스누프 디렉토리가 사용될 수도 있다. 배타적 L2 캐시에 대해, 중복 태그 및 공통 태그 옵션들 양자가 이용가능할 수도 있다. 일부 양태들에 있어서, 공통 태그 접근법은, 특별히, 멀티코어 프로세서들의 포괄적 L2 캐시들에 대해, 분할된 스누프 디렉토리들의 간단한 사이징을 제공하고; 그리고 중복 태그 접근법과 비교하여 감소된 수의 SRAM 매크로들을 제공하기 위해, 분할된 스누프 디렉토리들을 위해 사용될 수도 있다.
분할된 스누프 디렉토리 전력 상태는 하드웨어에 의한 전력 도메인 전력 상태와 제휴되어, 전력 도메인 전력 상태를 소프트웨어에 투명하게 할 수도 있다. 전력 도메인 전력 상태는 전력 도메인의 멀티코어 프로세서들의 모두의 전력 상태를 포함할 수도 있다. 전력 도메인이 저전력 상태에 있을 경우, 전력 도메인의 멀티코어 프로세서들의 모두가 또한 저전력 상태에 있을 수도 있다.
다양한 멀티코어 프로세서 아키텍처들은 전력 상태들을 상이하게 관리한다. 예를 들어, 제 1 멀티코어 프로세서 아키텍처는 그 전력 상태의 어떠한 외부 표시도 제공하지 않을 수도 있고, 제 2 멀티코어 프로세서 아키텍처는 그 전력 상태를 표시하는 신호를 제공할 수도 있다. 제 1 멀티코어 프로세서 아키텍처에 대해, 하드웨어 구현된 전력 도메인 저전력 모니터는, 제 1 멀티코어 프로세서 아키텍처의 상이한 타입들이, 제 1 멀티코어 프로세서 아키텍처의 일 타입의 지정된 제 1 멀티코어 프로세서가 저전력 상태에 있을 수도 있는지 여부를 검출하도록 구성될 수도 있다. 전력 도메인 저전력 모니터는 제 1 멀티코어 프로세서의 전력 상태를 결정하기 위해 지정된 제 1 멀티코어 프로세서의 전력 인출, 온도, 멀티코어 프로세서가 그 전력 상태를 표시하고 있지 않을 경우의 멀티코어 프로세서 전력 제어 유닛, 및/또는 입력/출력 활동을 모니터링할 수도 있다. 전력 도메인이 저전력 상태에 있음을 결정하는 것에 응답하여, 전력 도메인 저전력 모니터는 전력 도메인의 할당된 분할된 스누프 디렉토리를 파워-다운하도록 분할된 스누프 디렉토리 전력 제어기를 시그널링할 수도 있다. 유사하게, 전력 도메인 저전력 모니터는 제 1 멀티코어 프로세서가 활성 상태로 천이할 때 (즉, 전력 도메인에서 변경이 있음) 를 검출하고, 응답으로, 전력 도메인의 할당된 분할된 스누프 디렉토리를 활성화하도록 분할된 스누프 디렉토리 전력 제어기를 시그널링할 수도 있다.
다른 예로서, 제 2 멀티코어 프로세서 아키텍처에 있어서, 분할된 스누프 디렉토리 전력 제어기는, 제 2 멀티코어 프로세서 아키텍처의 상이한 타입들이, 제 2 멀티코어 프로세서가 저전력 상태에 있는지 여부를 표시하는 신호들을 지정된 제 2 멀티코어 프로세서로부터 수신하도록 구성될 수도 있다. 저전력 상태에 있는지 여부를 표시하는, 제 2 멀티코어 프로세서로부터의 신호들에 기초하여, 분할된 스누프 디렉토리 전력 제어기는 전력 도메인이 저전력 상태에 있는지 여부를 결정하고, 전력 도메인이 저전력 상태에 있음을 결정하는 것에 응답하여 제 2 멀티코어 프로세서의 할당된 분할된 스누프 디렉토리를 파워-다운할 수도 있다. 유사하게, 분할된 스누프 디렉토리 전력 제어기는 지정된 제 2 멀티코어 프로세서로부터의 신호들을 수신하고, 이들 신호들로부터, 활성 상태에 있는지 여부를 결정하고 응답으로 전력 도메인의 할당된 분할된 스누프 디렉토리를 활성화할 수도 있다.
도 1 은 다양한 양태들과의 사용에 적합한 컴퓨팅 디바이스 (10) 를 포함한 시스템을 예시한다. 컴퓨팅 디바이스 (10) 는, 프로세서 (14), 메모리 (16), 통신 인터페이스 (18) 및 저장 메모리 인터페이스 (20) 를 갖는 시스템-온-칩 (SoC) (12) 을 포함할 수도 있다. 컴퓨팅 디바이스 (10) 는 유선 또는 무선 모뎀과 같은 통신 컴포넌트 (22), 저장 메모리 (24), 및 무선 통신 링크를 확립하기 위한 안테나 (26) 를 더 포함할 수도 있다. 프로세서 (14) 는 임의의 다양한 프로세싱 디바이스들, 예를 들어, 다수의 프로세서 코어들을 포함할 수도 있다.
용어 "시스템-온-칩" (SoC) 은, 통상적이지만 배타적이지 않게, 프로세싱 디바이스, 메모리 및 통신 인터페이스를 포함하는 상호접속된 전자 회로들의 세트를 지칭하도록 본 명세서에서 사용된다. 프로세싱 디바이스는 범용 프로세서, 중앙 프로세싱 유닛 (CPU), 디지털 신호 프로세서 (DSP), 그래픽스 프로세싱 유닛 (GPU), 가속화 프로세싱 유닛 (APU), 보조 프로세서, 싱글 코어 프로세서, 및 멀티코어 프로세서와 같은 다양한 상이한 타입들의 프로세서들 (14) 및 프로세서 코어들을 포함할 수도 있다. 프로세싱 디바이스는 추가로, 필드 프로그래밍가능 게이트 어레이 (FPGA), 어플리케이션 특정 집적 회로 (ASIC), 다른 프로그래밍가능 로직 디바이스, 이산 게이트 로직, 트랜지스터 로직, 성능 모니터링 하드웨어, 와치도그 하드웨어, 및 시간 참조들과 같이 다른 하드웨어 및 하드웨어 조합들을 구현할 수도 있다. 집적 회로들은, 집적 회로의 컴포넌트들이 실리콘과 같은 반도체 재료의 단일 피스 상에 상주하도록 구성될 수도 있다.
SoC (12) 는 하나 이상의 프로세서들 (14) 을 포함할 수도 있다. 컴퓨팅 디바이스 (10) 는 1 초과의 SoC (12) 를 포함하고, 이에 의해, 프로세서들 (14) 및 프로세서 코어들의 수를 증가시킬 수도 있다. 컴퓨팅 디바이스 (10) 는 또한, SoC (12) 와 연관되지 않은 프로세서들 (14) 을 포함할 수도 있다. 개별 프로세서들 (14) 은 도 2 를 참조하여 하기에서 설명되는 바와 같은 멀티코어 프로세서들일 수도 있다. 프로세서들 (14) 은 각각, 컴퓨팅 디바이스 (10) 의 다른 프로세서들 (14) 과 동일하거나 상이할 수도 있는 특정 목적들을 위해 구성될 수도 있다. 동일하거나 상이한 구성들의 프로세서들 (14) 및 프로세서 코어들 중 하나 이상은 함께 그룹화될 수도 있다. 프로세서들 (14) 또는 프로세서 코어들의 그룹은 멀티-프로세서 클러스터로서 지칭될 수도 있다.
SoC (12) 의 메모리 (16) 는, 프로세서 (14) 에 의한 액세스를 위한 데이터 및 프로세서 실행가능 코드를 저장하기 위해 구성된 휘발성 또는 비휘발성 메모리일 수도 있다. 컴퓨팅 디바이스 (10) 및/또는 SoC (12) 는 다양한 목적들을 위해 구성된 하나 이상의 메모리들 (16) 을 포함할 수도 있다. 하나 이상의 메모리들 (16) 은 랜덤 액세스 메모리 (RAM) 또는 메인 메모리, 또는 캐시 메모리와 같은 휘발성 메모리들을 포함할 수도 있다. 이들 메모리들 (16) 은 데이터 센서 또는 서브시스템으로부터 수신된 제한된 양의 데이터, 비휘발성 메모리로부터 요청되고 다양한 팩터들에 기초해 장래의 액세스를 예상하여 비휘발성 메모리로부터 메모리들 (16) 에 로딩된 데이터 및/또는 프로세서 실행가능 코드 명령들, 및/또는 비휘발성 메모리에 저장되지 않고도 장래의 신속한 액세스를 위해 임시로 저장되고 그리고 프로세서 (14) 에 의해 생성된 중간 프로세싱 데이터 및/또는 프로세서 실행가능 코드 명령들을 임시로 보유하도록 구성될 수도 있다.
메모리 (16) 는, 프로세서들 (14) 중 하나 이상에 의한 액세스를 위해 다른 메모리 (16) 또는 저장 메모리 (24) 와 같은 다른 메모리 디바이스로부터 메모리 (16) 에 로딩되는 데이터 및 프로세서 실행가능 코드를 적어도 임시로 저장하도록 구성될 수도 있다. 메모리 (16) 에 로딩된 데이터 또는 프로세서 실행가능 코드는 프로세서 (14) 에 의한 기능의 실행에 응답하여 로딩될 수도 있다. 기능의 실행에 응답하여 데이터 또는 프로세서 실행가능 코드를 메모리 (16) 에 로딩하는 것은, 요청된 데이터 또는 프로세서 실행가능 코드가 메모리 (16) 에 위치되지 않기 때문에, 성공적이지 않은 또는 미스된 메모리 (16) 에 대한 메모리 액세스 요청으로부터 기인할 수도 있다. 미스에 응답하여, 다른 메모리 (16) 또는 저장 메모리 (24) 에 대한 메모리 액세스 요청은, 다른 메모리 (16) 또는 저장 메모리 (24) 로부터의 요청된 데이터 또는 프로세서 실행가능 코드를 메모리 디바이스 (16) 에 로딩하기 위해 행해질 수도 있다. 기능의 실행에 응답하여 데이터 또는 프로세서 실행가능 코드를 메모리 (16) 에 로딩하는 것은 다른 메모리 (16) 또는 저장 메모리 (24) 에 대한 메모리 액세스 요청으로부터 기인할 수도 있고, 데이터 또는 프로세서 실행가능 코드는 더 나중의 액세스를 위해 메모리 (16) 에 로딩될 수도 있다.
저장 메모리 인터페이스 (20) 및 저장 메모리 (24) 는, 컴퓨팅 디바이스 (10) 로 하여금 데이터 및 프로세서 실행가능 코드를 비휘발성 저장 매체 상에 저장하게 하도록 함께 작동할 수도 있다. 저장 메모리 (24) 는, 저장 메모리 (24) 가 프로세서들 (14) 중 하나 이상에 의한 액세스를 위해 데이터 또는 프로세서 실행가능 코드를 저장할 수도 있는 메모리 (16) 의 일 양태와 매우 유사하게 구성될 수도 있다. 비휘발성인 저장 메모리 (24) 는, 컴퓨팅 디바이스 (10) 의 전력이 셧오프된 이후 정보를 유지할 수도 있다. 전력이 다시 턴온되고 컴퓨팅 디바이스 (10) 가 재부팅할 경우, 저장 메모리 (24) 상에 저장된 정보는 컴퓨팅 디바이스 (10) 에서 이용가능할 수도 있다. 저장 메모리 인터페이스 (20) 는 저장 메모리 (24) 로의 액세스를 제어하고, 프로세서 (14) 로 하여금 저장 메모리 (24) 로부터 데이터를 판독하게 하고 저장 메모리 (24) 에 데이터를 기입하게 할 수도 있다.
컴퓨팅 디바이스 (10) 의 컴포넌트들의 일부 또는 모두는 필요한 기능들을 여전히 제공하면서 상이하게 배열되고/되거나 결합될 수도 있다. 더욱이, 컴퓨팅 디바이스 (10) 는 컴포넌트들의 각각의 하나로 제한되지 않을 수도 있고, 각각의 컴포넌트의 다중의 인스턴스들이 컴퓨팅 디바이스 (10) 의 다양한 구성들에 포함될 수도 있다.
도 2 는 일 양태를 구현하기에 적합한 멀티코어 프로세서를 예시한다. 멀티코어 프로세서 (14) 는, 예를 들어, 중앙 프로세싱 유닛, 그래픽스 프로세싱 유닛, 및/또는 디지털 프로세싱 유닛을 포함하여 다중의 프로세서 타입들을 포함할 수도 있다. 멀티코어 프로세서 (14) 는 또한, 기능들의 특수화된 세트를 구현하도록 구성된 범용 하드웨어 및/또는 커스텀 프로세싱 하드웨어를 포함할 수도 있는 커스텀 하드웨어 가속화기를 포함할 수도 있다.
멀티코어 프로세서는 복수의 동종의 또는 이종의 프로세서 코어들 (200, 201, 202, 203) 을 가질 수도 있다. 동종의 멀티코어 프로세서는 복수의 동종의 프로세서 코어들을 포함할 수도 있다. 프로세서 코어들 (200, 201, 202, 203) 은, 멀티코어 프로세서 (14) 의 프로세서 코어들 (200, 201, 202, 203) 이 동일한 목적을 위해 구성되고 동일한 또는 유사한 성능 특성들을 가질 수도 있다는 점에 있어서, 동종일 수도 있다. 예를 들어, 멀티코어 프로세서 (14) 는 범용 프로세서일 수도 있고, 프로세서 코어들 (200, 201, 202, 203) 은 동종의 범용 프로세서 코어들일 수도 있다. 멀티코어 프로세서 (14) 는 그래픽스 프로세싱 유닛 또는 디지털 신호 프로세서일 수도 있고, 프로세서 코어들 (200, 201, 202, 203) 은 각각 동종의 그래픽스 프로세서 코어들 또는 디지털 신호 프로세서 코어들일 수도 있다. 멀티코어 프로세서 (14) 는 동종의 또는 이종의 프로세서 코어들 (200, 201, 202, 203) 을 갖는 커스텀 하드웨어 가속기일 수도 있다. 참조의 용이를 위해, 용어들 "하드웨어 가속기", "커스텀 하드웨어 가속기", "멀티코어 프로세서", "프로세서", 및 "프로세서 코어" 는 본 명세서에서 상호대체가능하게 사용될 수도 있다.
이종의 멀티코어 프로세서는 복수의 이종의 프로세서 코어들을 포함할 수도 있다. 프로세서 코어들 (200, 201, 202, 203) 은, 멀티코어 프로세서 (14) 의 프로세서 코어들 (200, 201, 202, 203) 이 상이한 목적들을 위해 구성되고/되거나 상이한 성능 특성들을 가질 수도 있다는 점에 있어서, 이종일 수도 있다. 그러한 이종의 프로세서 코어들의 이종성은 상이한 명령 세트 아키텍처, 파이프라인들, 동작 주파수들 등을 포함할 수도 있다. 그러한 이종의 프로세서 코어들의 예는, 더 느린 저전력 프로세서 코어들이 더 강력한 및 전력 열망의 프로세서 코어들과 커플링될 수도 있는 "big.LITTLE" 아키텍처들로서 공지된 것을 포함할 수도 있다. 유사한 양태들에 있어서, SoC (예를 들어, 도 1 의 SoC (12)) 는 임의의 수의 동종의 또는 이종의 멀티코어 프로세서들 (14) 을 포함할 수도 있다. 다양한 양태들에 있어서, 이종의 멀티코어 프로세서가 적어도 하나의 이종의 프로세서 코어를 포함하는 프로세서 코어들 (200, 201, 202, 203) 의 임의의 조합을 포함할 수도 있기 때문에, 프로세서 코어들 (200, 201, 202, 203) 의 모두가 이종의 프로세서 코어들일 필요는 없다.
멀티코어 프로세서 (14) 의 프로세서 코어들 (200, 201, 202, 203) 의 각각은, 지정된 프로세서 코어 (200, 201, 202, 203) 에 의한 판독 및/또는 기입 액세스를 위해 전용될 수도 있는 사설 캐시 (210, 212, 214, 216) 를 지정받을 수도 있다. 사설 캐시 (210, 212, 214, 216) 는 데이터 및/또는 명령들을 저장하고, 저장된 데이터 및/또는 명령들을, 프로세서 코어들 (200, 201, 202, 203) 에 의한 실행에서의 사용을 위해 사설 캐시 (210, 212, 214, 216) 가 전용되는 프로세서 코어들 (200, 201, 202, 203) 에서 이용가능하게 할 수도 있다. 사설 캐시 (210, 212, 214, 216) 는 도 1 의 메모리 (16) 을 참조하여 본 명세서에서 설명된 바와 같은 휘발성 메모리를 포함할 수도 있다.
멀티코어 프로세서 (14) 는, 프로세서 코어들 (200, 201, 202, 203) 에 의한 판독 및/또는 기입 액세스를 위해 구성될 수도 있는 공유 캐시 (230) 를 더 포함할 수도 있다. 사설 캐시 (210, 212, 214, 216) 는 데이터 및/또는 명령들을 저장하고, 저장된 데이터 및/또는 명령들을, 프로세서 코어들 (200, 201, 202, 203) 에 의한 실행에서의 사용을 위해 프로세서 코어들 (200, 201, 202, 203) 에서 이용가능하게 할 수도 있다. 공유 캐시 (230) 는 또한, 멀티코어 프로세서 (14) 에 입력되고/되거나 멀티코어 프로세서 (14) 로부터 출력되는 데이터 및/또는 명령들을 위한 버퍼로서 기능할 수도 있다. 공유 캐시 (230) 는 도 1 의 메모리 (16) 을 참조하여 본 명세서에서 설명된 바와 같은 휘발성 메모리를 포함할 수도 있다.
도 2 에 예시된 예에 있어서, 멀티코어 프로세서 (14) 는 4개의 프로세서 코어들 (200, 201, 202, 203) (즉, 프로세서 코어 0, 프로세서 코어 1, 프로세서 코어 2, 및 프로세서 코어 3) 을 포함한다. 그 예에 있어서, 각각의 프로세서 코어 (200, 201, 202, 203) 는 개별 사설 캐시 (210, 212, 214, 216) (즉, 프로세서 코어 0 및 사설 캐시 0, 프로세서 코어 1 및 사설 캐시 1, 프로세서 코어 2 및 사설 캐시 2, 그리고 프로세서 코어 3 및 사설 캐시 3) 을 지정받는다. 설명의 용이를 위해, 본 명세서에서의 예들은 도 2 에 예시된 4개의 프로세서 코어들 (200, 201, 202, 203) 및 4개의 사설 캐시들 (210, 212, 214, 216) 을 참조할 수도 있다. 하지만, 도 2 에 예시되고 본 명세서에서 설명된 4개의 프로세서 코어들 (200, 201, 202, 203) 및 4개의 사설 캐시들 (210, 212, 214, 216) 은 단지 일 예로서 제공될 뿐이고, 결코 다양한 양태들을 4개의 지정된 사설 캐시들을 갖는 4 코어 프로세서 시스템으로 제한하도록 의도되지 않는다. 컴퓨팅 디바이스 (10), SoC (12), 또는 멀티코어 프로세서 (14) 는, 개별적으로 또는 결합하여, 본 명세서에서 예시되고 설명된 4개보다 많거나 적은 프로세서 코어들 (200, 201, 202, 203) 및 사설 캐시들 (210, 212, 214, 216) 을 포함할 수도 있다.
도 3 내지 도 5 는 멀티코어 프로세서 상태 시그널링을 갖는 그리고 갖지 않는 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 시스템들의 비제한적인 예들을 예시한다. 본 명세서에서, 특히, 도 3 내지 도 5 의 예들을 참조하여 및 도 3 내지 도 5 와 관련하여, 예시되고 설명된 예들은 비제한적이다. 분할된 스누프 디렉토리 시스템들은 임의의 수의 프로세서들, 프로세서 코어들, 사설 캐시들, 공유 캐시들, 전력 도메인들, 분할된 스누프 디렉토리들, 프로세서 캐시 전력 제어기들, 및 분할된 스누프 디렉토리 전력 제어기들을 포함할 수도 있다. 따라서, 도 3 내지 도 5 에 예시된 프로세서들, 프로세서 코어들, 캐시들, 전력 도메인들, 분할된 스누프 디렉토리들, 공유 캐시 제어기들, 및 분할된 스누프 디렉토리 전력 제어기들의 수는 단지 예시를 위한 것이다. 참조의 용이 및 명확화를 위해, 용어 멀티코어 프로세서는 멀티코어 프로세서들, 싱글 코어 프로세서들, 및/또는 프로세서 코어들을 지칭하기 위해 본 명세서에서 사용된다. 추가로, 다양한 양태 방법들의 설명들에서의 1개 또는 2개의 전력 도메인들, 분할된 스누프 디렉토리들, 공유 캐시들 등에 대한 참조는, 그러한 방법들이 임의의 수 (N) 의 전력 도메인들, 분할된 스누프 디렉토리들, 공유 캐시들 등으로 확장될 수도 있기 때문에, 오직 예시 목적들을 위한 것이다.
도 3 은 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 시스템의 예시적인 양태를 예시한다. 분할된 스누프 디렉토리 시스템을 구현하도록 구성된 컴퓨팅 디바이스 (예를 들어, 도 1 에서의 컴퓨팅 디바이스 (10)) 는 적어도 2개의 하지만 임의의 정수 "N"개까지의 멀티코어 프로세서들, 예를 들어, 프로세서 1 (14a) 및 프로세서 N (14b) 을 포함할 수도 있다. 각각의 멀티코어 프로세서 (14a, 14b) 는 임의의 수의 프로세서 코어들 (예컨대, 도 2 에서의 프로세서 코어들 (200, 201, 202, 203)) 을 포함할 수도 있으며, 예를 들어, 멀티코어 프로세서 (14a) 는 프로세서 코어 1 (300a) 및 프로세서 코어 M (300b) 을 포함하여 임의의 정수 "M"개까지의 프로세서 코어들을 포함할 수도 있다. 유사하게, 멀티코어 프로세서 (14b) 는 프로세서 코어 1 (300c) 및 프로세서 코어 P (300d) 를 포함하여 임의의 정수 "P"개까지의 프로세서 코어들을 포함할 수도 있다. 본 명세서에서 논의된 바와 같이, 멀티코어 프로세서들 (14a, 14b) 의 각각은 서로에 관하여 및/또는 그들의 개별 프로세서 코어들 (300a, 300b, 300c, 300d) 중에서 동종 및/또는 이종일 수도 있다.
각각의 프로세서 코어 (300a, 300b, 300c, 300d) 는, 연관된 프로세서 코어 (300a, 300b, 300c, 300d) 에 의한 사용을 위해 지정된 사설 캐시 (예를 들어, 도 2 에서의 사설 캐시 (210, 212, 214, 216)) 와 연관될 수도 있다. 예를 들어, 사설 캐시 (302a) 는 프로세서 코어 (300a) 와 연관되고 프로세서 코어 (300a) 에 의한 사용을 위해 지정될 수도 있다. 유사하게, 사설 캐시 (302b) 는 프로세서 코어 (300b) 와 연관되고 프로세서 코어 (300b) 에 지정될 수도 있고, 사설 캐시 (302c) 는 프로세서 코어 (300c) 와 연관되고 프로세서 코어 (300c) 에 지정될 수도 있고, 사설 캐시 (302d) 는 프로세서 코어 (300d) 와 연관되고 프로세서 코어 (300d) 에 지정될 수도 있다.
각각의 멀티코어 프로세서 (14a, 14b) 는 또한, 프로세서 코어들 (300a, 300b, 300c, 300d) 을 포함하는 멀티코어 프로세서 (14a, 14b) 에 의한 판독 및/또는 기입 액세스를 위해 구성된 공유 캐시 (예를 들어, 도 2 에서의 공유 캐시 (230)) 를 포함할 수도 있다. 도 3 에 예시된 예에 있어서, 멀티코어 프로세서 (14a) 는 공유 캐시 (304a) 를 포함할 수도 있고, 멀티코어 프로세서 (14b) 는 공유 캐시 (304b) 를 포함할 수도 있다. 다양한 양태들에 있어서, 공유 캐시 (304a, 304b) 는 그 개별 멀티코어 프로세서 (14a, 14b) 내에서 오직 기입가능일 수도 있다. 다양한 양태들에 있어서, 공유 캐시 (304a, 304b) 는 스누핑을 사용하여 다른 멀티코어 프로세서 (14a, 14b) 에 의해 판독가능일 수도 있다.
코히어런트 인터커넥트 (308) 는 멀티코어 프로세서들 (14a, 14b), 임의의 수의 입력/출력 (I/O) 에이전트들 (306a, 306b), 및 임의의 수의 메인 메모리 또는 랜덤 액세스 메모리 컴포넌트들 (312) (예를 들어, 도 1 에서의 메모리 (16)) 에 통신가능하게 접속될 수도 있다. 코히어런트 인터커넥트 (308) 는 다양한 접속된 컴포넌트들 사이의 데이터의 송신을 인에이블 및 제어하도록 구성될 수도 있다. I/O 에이전트들 (306a, 306b) 은 코히어런트 인터커넥트 (308) 에 대한 입력 데이터를, 데이터를 위한 목적지로서 멀티코어 프로세서들 (14a, 14b) 및/또는 랜덤 액세스 메모리 컴포넌트들 (312) 과 통신할 수도 있다. I/O 에이전트들 (306a, 306b) 은 또한, 멀티코어 프로세서들 (14a, 14b) 및/또는 랜덤 액세스 메모리 컴포넌트들 (312) 로부터 코히어런트 인터커넥트 (308) 를 통해 데이터를 수신할 수도 있다. 랜덤 액세스 메모리 컴포넌트들 (312) 은 멀티코어 프로세서들 (14a, 14b) 및/또는 I/O 에이전트들 (306a, 306b) 에 대한 데이터 및/또는 명령들을 저장 및/또는 제공하도록 구성될 수도 있다. 랜덤 액세스 메모리 컴포넌트들 (312) 은 멀티코어 프로세서들 (14a, 14b), I/O 에이전트들 (306a, 306b), 및/또는 저장 디바이스 (예를 들어, 도 1 에서의 저장 메모리 (24)) 사이의 데이터 및/또는 명령들에 대한 버퍼로서 구성될 수도 있다.
코히어런트 인터커넥트 (308) 는 또한, 분할된 스누프 디렉토리들 (310a, 310b) 을 나타내는 데이터를 저장하고 이용가능하게 하도록 구성된 랜덤 액세스 메모리 컴포넌트들 (예를 들어, 도 1 에서의 메모리 (16), 및 정적 랜덤 액세스 메모리 (SRAM)) 을 포함할 수도 있다. 본 명세서에서 더 설명된 바와 같이, 분할된 스누프 디렉토리들 (310a, 310b) 은 특정 전력 도메인과 상관될 수도 있다. 각각의 분할된 스누프 디렉토리들 (310a, 310b) 은, 연관된 전력 도메인의 개별 멀티코어 프로세서들 (14a, 14b) 의 사설 캐시들 (302a, 302b, 302c, 302d) 및/또는 공유 캐시들 (304a, 304b) 의 메모리 위치들과 대응하는 다수의 태그들을 포함할 수도 있다. 각각의 태그는, 특정 데이터가 사설 캐시들 (302a, 302b, 302c, 302d) 및/또는 공유 캐시들 (304a, 304b) 의 대응하는 메모리 위치에 위치되는지 여부를 식별하는 정보와 연관될 수도 있다. 사설 캐시들 (302a, 302b, 302c, 302d) 및/또는 공유 캐시들 (304a, 304b) 은 참조의 용이 및 설명의 명확화를 위해 프로세서 캐시(들)로서 본 명세서에서 지칭될 수도 있다. 용어 프로세서 캐시(들)의 사용은 본 명세서에서 설명된 양태들을, 사설 캐시들 (302a, 302b, 302c, 302d) 및/또는 공유 캐시들 (304a, 304b) 의 모두를 반드시 포함하도록 제한하지 않는다.
분할된 스누프 디렉토리 (310a, 310b) 는, 프로세서 캐시 (302a, 302b, 302c, 302d, 304a, 304b) 를 직접 쿼리해야 하는 일없이, 프로세스의 실행을 위해 추구된 데이터가 멀티코어 프로세서 (14a, 14b) 에 대해 국부적으로 그 프로세서 캐시 (302a, 302b, 302c, 302d, 304a, 304b) 상에 저장되는지 여부를 결정하기 위해 멀티코어 프로세서들 (14a, 14b) 및/또는 I/O 에이전트들 (306a, 306b) 에 의해 쿼리될 수도 있다. 데이터가 프로세서 캐시 (302a, 302b, 302c, 302d, 304a, 304b) 상에 저장되지 않을 경우, 분할된 스누프 디렉토리 (310a, 310b) 또는 프로세서 캐시들 (302a, 302b, 302c, 302d, 304a, 304b) 중 어느 하나에 대한 쿼리는 "미스 (miss)" 로서 알려진다. 분할된 스누프 디렉토리 (310a, 310b) 의 구현없이, 발행하는 멀티코어 프로세서 (14a, 14b) 에 의한 다른 멀티코어 프로세서들 (14a, 14b) 의 각각에 대한 스누프 트랜잭션은 쿼리의 데이터를 취출하도록 요구된다. "미스" 가 발생하는 것에 응답하여, 랜덤 액세스 메모리 컴포넌트들 (312) 에 대한 외부 트랜잭션은 쿼리의 데이터를 취출하도록 요구된다. 분할된 스누프 디렉토리 (310a, 310b) 의 구현으로, 다른 멀티코어 프로세서들 (14a, 14b) 의 각각에 대한 스누프 트랜잭션은 요구되지 않을 수도 있다. 오히려, 스누프 트랜잭션은 분할된 스누프 디렉토리들 (310a, 310b) 로 지향될 수도 있다. "미스" 가 분할된 스누프 디렉토리들 (310a, 310b) 에서 발생하는 것에 응답하여, 랜덤 액세스 메모리 컴포넌트들 (312) 에 대한 외부 트랜잭션은 쿼리의 데이터를 취출하도록 구현될 수도 있다. "히트 (hit)" 로서 또한 알려진, 쿼리를 위한 데이터와 연관된 프로세서 캐시 (302a, 302b, 302c, 302d, 304a, 304b) 에서의 위치에 대한 분할된 스누프 디렉토리 (310a, 310b) 에서의 태그를 찾는 것에 응답하여, "히트하는" 분할된 스누프 디렉토리 (310a, 310b) 와 연관된 모든 멀티코어 프로세서들 (14a, 14b) 에 대한 스누프 트랜잭션이 구현될 수도 있다. 랜덤 액세스 메모리 컴포넌트들 (312) 에 대한 외부 트랜잭션이 (액세스 타입, 및 스누핑된 프로세서 캐시 거동에 의존하여) 또한 구현될 수도 있다.
따라서, 분할된 스누프 디렉토리들 (310a, 310b) 이 없는 아키텍처들은 쿼리의 데이터를 취출하기 위해 멀티코어 프로세서들 (14a, 14b), I/O 에이전트들 (306a, 306b), 코히어런트 인터커넥트 (308), 및 랜덤 액세스 메모리 컴포넌트들 (312) 사이의 추가의 트랜잭션들을 요구할 수도 있다. 분할된 스누프 디렉토리 (310a, 310b) 의 구현은 분할된 스누프 디렉토리 (310a, 310b) 로 지향된 쿼리가 "미스" 에 대해 랜덤 액세스 메모리 컴포넌트들 (312) 로 재지향되게 할 수도 있다. 이는, 그렇지 않으면 프로세서 캐시 (302a, 302b, 302c, 302d, 304a, 304b) 에서의 데이터를 체크하기 위해 필요한 코히어런트 인터커넥트 (308) 와 멀티코어 프로세서들 (14a, 14b) 사이의 추가의 트랜잭션들을 제거할 수도 있다. 쿼리는, 쿼리된 데이터가 코히어런트 인터커넥트 (308) 와 멀티코어 프로세서들 (14a, 14b) 사이의 트랜잭션들을 구현하는 일없이 멀티코어 프로세서 (14a, 14b) 에 국부적으로 프로세서 캐시 (302a, 302b, 302c, 302d, 304a, 304b) 상에 저장됨 또는 저장되지 않음을 분할된 스누프 디렉토리 (310a, 310b) 의 태그가 표시하는지 여부를 체크하기 위해 사용될 수도 있다. "미스" 의 표시 시, 데이터가 랜덤 액세스 메모리 컴포넌트들 (312) 로부터 취출될 수도 있다.
도 4 은 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 시스템의 예시적인 양태를 예시한다. 도 4 에 예시된 예는, 멀티코어 프로세서들 (14a, 14b), 프로세서 코어들 (300a, 300b, 300c, 300d), 사설 캐시들 (302a, 302b, 302c, 302d), 공유 캐시들 (304a, 304b), 코히어런트 인터커넥트 (308), 및 분할된 스누프 디렉토리들 (310a, 310b) 을 포함하여 도 3 에 예시된 예의 다수의 양태들을 포함한다. 도 4 에 예시된 예는, 멀티코어 프로세서 (14c), 프로세서 코어들 (300e, 300f), 사설 캐시들 (302e, 302f), 및 공유 캐시 (304c) 를 포함하여 상기 설명된 것들과 유사한 컴포넌트들을 더 포함한다. 멀티코어 프로세서 (14c) 는 프로세서 코어 1 (300e) 및 프로세서 코어 R (300f) 를 포함하여 임의의 정수 "R"개까지의 프로세서 코어들을 포함할 수도 있다. 명료화를 위해, I/O 에이전트들 (306a, 306b), 및 랜덤 액세스 메모리 컴포넌트들 (312) 은 도 4 에 예시된 예로부터 생략된다. 또한, 용어 프로세서 캐시(들)는 도 4 에서의 예의 추가의 사설 캐시들 (302e, 302f) 및 공유 캐시 (304c) 를 포함할 수도 있다.
도 4 에 예시된 예는 또한, 2개의 전력 도메인들 (400a, 400b), 3개의 프로세서 캐시 전력 제어기들 (402a, 402b, 402c), 및 2개의 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 을 포함한다. 전력 도메인들 (400a, 400b) 은 적어도 하나의 멀티코어 프로세서 (14a, 14b, 14c) 의 그룹들일 수도 있고, 임의의 수 (N) 의 전력 도메인들을 포함할 수도 있다. 각각의 전력 도메인 (400a, 400b) 은 다중의 프로세서 코어들 (300a, 300b, 300c, 300d, 300e, 300f) 및 적어도 하나의 공유 캐시 (304a, 304b, 304c) 를 포함할 수도 있다. 전력 도메인들 (400a, 400b) 은 또한 임의의 수의 사설 캐시들 (302a, 302b, 302c, 302d, 302e, 302f) 을 포함할 수도 있다. 전력 도메인들 (400a, 400b) 의 각각은 분할된 스누프 디렉토리 (310a, 310b) 중 하나와 연관될 수도 있다. 도 4 에 예시된 예에 있어서, 전력 도메인 (400a) 은 분할된 스누프 디렉토리 (310a) 와 연관될 수도 있고, 전력 도메인 (400b) 은 분할된 스누프 디렉토리 (310b) 와 연관될 수도 있다. 즉, 분할된 스누프 디렉토리 (310a) 는 메모리 위치들에 대응하는 태그들을 프로세서 캐시들 (302a, 302b, 302e, 302f, 304a, 304c) 에 저장할 수도 있고, 분할된 스누프 디렉토리 (310b) 는 메모리 위치들에 대응하는 태그들을 프로세서 캐시 (302c, 302d, 304b) 에 저장할 수도 있다.
프로세서 캐시 전력 제어기들 (402a, 402b, 402c) 은, 전력 도메인들의 컴포넌트들이 저전력 상태와 표준 상태 사이에 있거나 그 사이에서 천이하고 있는지 여부를 결정하기 위하여 전력 도메인들 (400a, 400b) 의 컴포넌트들의 조건들을 검출하도록 구성될 수도 있다. 프로세서 캐시 전력 제어기들 (402a, 402b, 402c) 은 지정된 멀티코어 프로세서 (14a, 14b, 14c) 의 전력 인출, 온도, 멀티코어 프로세서가 그 전력 상태를 표시하고 있지 않을 경우의 멀티코어 프로세서 전력 제어 유닛, 인터럽트, 및/또는 입력/출력 활동을 모니터링할 수도 있다. 프로세서 캐시 전력 제어기들 (402a, 402b, 402c) 은 동일한 분할된 스누프 디렉토리 (310a, 310b) 및 전력 도메인 (400a, 400b) 과 연관되는 연관된 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 에 시그널링하도록 구성될 수도 있다. 프로세서 캐시 전력 제어기들 (402a, 402b, 402c) 및 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 은 일대일 관계들 또는 다수의 프로세서 캐시 전력 제어기들 (402a, 402b, 402c) 대 하나의 분할된 스누프 디렉토리 전력 제어기 (404a, 404b) 로 연관될 수도 있다. 다양한 양태들에 있어서, 프로세서 캐시 전력 제어기들 (402a, 402b, 402c) 의 수는 연관된 전력 도메인 (400a, 400b) 의 사설 캐시들 (302a, 302b, 302c, 302d, 302e, 302f) 또는 공유 캐시들 (304a, 304b, 304c) 의 수와 동일할 수도 있다.
분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 은, 분할된 스누프 디렉토리 전력 제어기 (404a, 404b) 가 연관되는 전력 도메인 (400a, 400b) 의 컴포넌트들의 전력 상태를 추적하도록 구성될 수도 있다. 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 은, 프로세서 캐시 전력 제어기들 (402a, 402b, 402c) 로부터 수신된 신호들에 기초하여 전력 도메인 (400a, 400b) 의 컴포넌트들의 전력 상태를 업데이트할 수도 있다. 본 명세서에서 더 설명되는 바와 같이, 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 은 전력 도메인 (400a, 400b) 의 컴포넌트들의 전력 상태에 기초하여 연관된 분할된 스누프 디렉토리 (310a, 310b) 의 전력 상태를 제어할 수도 있다. 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 은 연관된 분할된 스누프 디렉토리 (310a, 310b) 를 파워-업 및 인에이블하거나, 파워-다운 및 디스에이블하거나, 또는 보류로 둘 수도 있다. 다양한 양태들에 있어서, 각각의 분할된 스누프 디렉토리 전력 제어기 (404a, 404b) 는 하나의 분할된 스누프 디렉토리 (310a, 310b) 와 연관될 수도 있다.
도 5 는 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 시스템의 예시적인 양태를 예시한다. 도 5 에 예시된 예는, 멀티코어 프로세서들 (14a, 14b, 14c), 프로세서 코어들 (300a, 300b, 300c, 300d, 300e, 300f), 사설 캐시들 (302a, 302b, 302c, 302d, 302e, 302f) 과 공유 캐시들 (304a, 304b, 304c) 을 포함하는 프로세서 캐시들, 코히어런트 인터커넥트 (308), 분할된 스누프 디렉토리들 (310a, 310b), 전력 도메인들 (400a, 400b), 프로세서 캐시 전력 제어기들 (402a, 402b, 402c), 및 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 을 포함하여 도 3 및 도 4 에 예시된 예의 다수의 양태들을 포함한다. 명료화를 위해, I/O 에이전트들 (306a, 306b) 및 랜덤 액세스 메모리 컴포넌트들 (312) 은 도 5 에 예시된 예로부터 생략된다.
도 5 에 예시된 예에 있어서, 멀티코어 프로세서들 (14a, 14b, 14c), 프로세서 캐시 전력 제어기들 (402a, 402b, 402c), 및 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 은 도 4 에 예시된 예와는 상이한 방식으로 구성될 수도 있다. 다양한 양태들에 있어서, 각각의 멀티코어 프로세서들 (14a, 14b, 14c) 은 프로세서의 전력 상태 및 프로세서의 컴포넌트들의 전력 상태를 코히어런트 인터커넥트 (308) 에 그리고 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 에 시그널링하도록 구성될 수도 있다. 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 은 전력 도메인들 (400a, 400b) 의 컴포넌트들의 전력 상태들을 추적하기 위해 멀티코어 프로세서들 (14a, 14b, 14c) 로부터 수신된 전력 상태 신호들을 사용할 수도 있다. 따라서, 프로세서 캐시 전력 제어기들 (402a, 402b, 402c) 은, 전력 도메인들의 컴포넌트들이 저전력 상태와 표준 상태 사이에 있거나 그 사이에서 천이하고 있는지 여부를 결정하기 위하여 전력 도메인들 (400a, 400b) 의 컴포넌트들의 조건들을 검출하도록 구성될 필요가 없을 수도 있다.
다양한 양태들에 있어서, 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 은, 프로세서 캐시 전력 제어기들 (402a, 402b, 402c) 로부터의 신호들을 사용하는 대신 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 이 멀티코어 프로세서들 (14a, 14b, 14c) 로부터 수신된 신호들에 기초하여 전력 도메인들 (400a, 400b) 의 컴포넌트들의 전력 상태를 추적하고 분할된 스누프 디렉토리들 (310a, 310b) 의 전력 상태들을 제어할 수도 있는 것을 제외하면, 도 4 를 참조하여 설명된 바와 같이 구성될 수도 있다.
도 6 은 전력 도메인 (예를 들어, 도 4 및 도 5 에서의 전력 도메인 (400a, 400b)) 에 대한 예시적인 전력 상태표 (600) 를 예시한다. 전력 상태표 (600) 는, 전력 도메인의 컴포넌트들의 전력 상태들에 따라 연관된 분할된 스누프 디렉토리 (예를 들어, 도 3 내지 도 5 에서의 분할된 스누프 디렉토리 (310a, 310b)) 의 전력 상태를 제어하기 위한 분할된 스누프 디렉토리 전력 제어기들 (예를 들어, 도 4 및 도 5 에서의 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b)) 에 대한 다양한 규칙들을 포함할 수도 있다. 도 6 에 예시된 예는, 2개의 멀티코어 프로세서들 (예를 들어, 도 3 내지 도 5 에서의 멀티코어 프로세서들 (14a, 14b, 14c)) 의 프로세서 캐시들 (예를 들어, 도 3 내지 도 5 에서의 사설 캐시들 (302a, 302b, 302c, 302d, 302e, 302f) 및 공유 캐시 (304a, 304b, 304c)) 의 전력 상태들을 위한 2개의 컬럼들을 포함한다. 명료화 및 단순화를 위해, 도 6 에 예시된 예는 단일의 전력 도메인의 2개의 멀티코어 프로세서들의 2개의 프로세서 캐시들 (예를 들어, 공유 캐시들) 의 전력 상태들을 위한 2개의 컬럼들을 도시한다. 하지만, 이 예는 비제한적이며, 다양한 양태들과의 사용을 위한 전력 상태표는 임의의 수의 프로세서 캐시들, 멀티코어 프로세서들, 또는 전력 도메인들을 추적하기 위해 사용된 임의의 수의 컬럼들을 포함할 수도 있다.
다양한 양태들에 있어서, 적어도 하나의 프로세서 캐시가 "ON" 전력 상태와 같은 고전력 상태에 있는 한, "ON" 프로세서 캐시를 갖는 전력 도메인과 연관된 대응하는 분할된 스누프 디렉토리가 또한 "ON" 전력 상태로 설정될 수도 있다. 다양한 양태들에 있어서, "OFF" 전력 상태와 같은 저전력 상태로 설정될 분할된 스누프 디렉토리에 대해, 연관된 전력 도메인의 프로세서 캐시들의 모두가 "OFF" 전력 상태에 있을 수도 있다. 분할된 스누프 디렉토리가 전력 도메인의 다중의 프로세서 캐시들에 의해 공유되기 때문에, 분할된 스누프 디렉토리는 전력 도메인의 임의의 부분을 서비스할 수 있도록 전력공급될 수도 있다. 따라서, 분할된 스누프 디렉토리를 파워-오프할 수 있기 위해, 전력 도메인의 프로세서 캐시들의 모두가 파워-오프될 필요가 있을 수가 있어서, 분할된 스누프 디렉토리가 전력 도메인의 임의의 부분을 서비스할 필요는 없다.
다양한 양태들에 있어서, "OFF" 상태를 포함하는 저전력 상태들의 다양한 조합들에 있는 전력 도메인의 프로세서 캐시들과 "RET" (보류) 상태에 있는 프로세서 캐시들의 적어도 하나의 임의의 조합에 있어서, 전력 도메인에 대한 분할된 스누프 디렉토리는 "RET" 상태로 설정될 수도 있다. 데이터의 보류가 (비록 "ON" 상태보다는 낮은 전력이지만) 전력을 요구하기 때문에, 분할된 스누프 디렉토리는, 전력 도메인의 다른 프로세서 캐시들이 파워-오프되는 동안 "RET" 상태에 있어서의 적어도 하나의 프로세서 캐시와 대응하도록 "RET" 상태에 놓일 수도 있다. "ON" 상태와 "OFF" 상태 프로세서 캐시들의 조합과 유사하게, "ON" 상태에 있는 적어도 하나의 프로세서 캐시와 "RET" 및/또는 "OFF" 상태들에 있는 임의의 다른 프로세서 캐시들의 임의의 조합에 대해, 분할된 스누프 디렉토리는 "ON" 상태로 설정될 수도 있다. 전력 상태들의 이들 조합들의 각각에 있어서, 전력 도메인의 적어도 하나의 프로세서 캐시의 더 높은 전력 상태는 분할된 스누프 디렉토리의 전력 상태를 지시할 수도 있으며; "ON" 은 최고의 전력 상태이고, 그 다음은 "RET" 이고, 그리고 "OFF" 는 최저의 전력 상태이다. 분할된 스누프 디렉토리 전력 제어기들은, 연관되는 전력 도메인들의 컴포넌트들의 전력 상태들을 추적하고, 도 6 에 예시된 예에서의 규칙들과 같은 규칙들을 적용하여, 분할된 스누프 디렉토리들의 전력 상태들을 제어하도록 구성될 수도 있다.
다양한 양태들은, 도 7 내지 도 15 에 예시된 그리고 하기에서 설명되는 바와 같은 다중의 분할된 스누프 디렉토리들 및 다중의 전력 도메인들에 대한 하나 이상의 프로세서들에 의해 구현될 수도 있는 방법들 (700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500) 을 포함한다. 방법들 (700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500) 은 다중의 전력 도메인들 (예를 들어, 도 4 및 도 5 에서의 전력 도메인 (400a, 400b)) 및 그 대응하는 분할된 스누프 디렉토리들 (예를 들어, 도 4 및 도 5 에서의 분할된 스누프 디렉토리 (310a, 310b)) 에 대해 개별적으로 및/또는 병렬로 구현될 수도 있다. 다중의 전력 도메인들은 각각, 멀티코어 프로세서 (예를 들어, 도 4 및 도 5 에서의 멀티코어 프로세서 (14a, 14b, 14c)), 프로세서 코어 (예를 들어, 도 4 및 도 5 에서의 프로세서 코어 (300a, 300b, 300c, 300d, 300e, 300f)), 및 사설 캐시 (예를 들어, 도 4 및 도 5 에서의 사설 캐시 (302a, 302b, 302c, 302d, 302e, 302f)) 및/또는 공유 캐시 (예를 들어, 도 4 및 도 5 에서의 공유 캐시 (304a, 304b, 304c)) 를 포함한 적어도 하나의 프로세서 캐시를 포함하여 컴포넌트들의 임의의 조합을 포함할 수도 있다. 예를 들어, 제 1 전력 도메인은 다중의 프로세서 캐시들을 포함할 수도 있고, 제 2 전력 도메인은 적어도 하나의 프로세서 캐시를 포함할 수도 있다. 본 명세서에서 설명된 바와 같이, 각각의 전력 도메인은 대응하는 분할된 스누프 디렉토리와 연관될 수도 있다. 예를 들어, 제 1 전력 도메인은 제 1 분할된 스누프 디렉토리와 연관될 수도 있고, 제 2 전력 도메인은 제 2 분할된 스누프 디렉토리와 연관될 수도 있다. 명료화 및 참조의 용이를 위해, 방법들 (700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500) 은 제 1 전력 도메인 및 제 1 분할된 스누프 디렉토리를 참조하여 본 명세서에서 설명된다. 하지만, 방법들 (700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500) 은 제 2 전력 도메인 및 제 2 분할된 스누프 디렉토리, 및/또는 임의의 수 (N) 의 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대해 유사하게 구현될 수도 있으며, 여기서, N 은 1 보다 큰 정수이다. 추가로, 양태 방법들 (700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500) 은 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대해 개별적으로 또는 병렬로 구현될 수도 있다.
도 7 은 일 양태에 따른, 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리들을 구현하기 위한 방법 (700) 을 예시한다. 방법 (700) 은, 컴퓨팅 디바이스에서, 프로세서 (예를 들어, 도 1 및 도 2 에서의 프로세서 (14)) 에서 실행하는 소프트웨어로, 범용 하드웨어로, 전용 하드웨어 (예를 들어, 도 4 및 도 5 에서의 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 및/또는 프로세서 캐시 전력 제어기들 (402a, 402b, 402c)) 로, 또는 다른 개별 컴포넌트들을 포함하는 분할된 스누프 디렉토리 시스템 내의 소프트웨어를 실행하는 프로세서와 같이 소프트웨어 구성된 프로세서와 전용 하드웨어의 조합으로 구현될 수도 있다. 다양한 양태들에서 인에이블된 대안적인 구성들을 포괄하기 위하여, 방법 (700) 을 구현하는 하드웨어는 "프로세싱 디바이스" 로서 본 명세서에서 지칭된다.
블록 702 에서, 프로세싱 디바이스는 제 1 전력 도메인 (예를 들어, 도 4 및 도 5 에서의 전력 도메인 (400a, 400b)) 에서의 전력 상태 변경을 모니터링 및 검출할 수도 있다. 다양한 양태들에 있어서, 제 1 전력 도메인에서의 전력 상태 변경을 모니터링 및 검출하는 것은 전력 상태 변경을 직접 모니터링 및 검출하는 것, 또는 전력 상태를 변경하기 위한 조건을 모니터링 및 검출하는 것을 포함할 수도 있다. 다양한 양태들에 있어서, 전력 상태 변경 또는 전력 상태를 변경하기 위한 조건은 멀티코어 프로세서 (예를 들어, 도 4 및 도 5 에서의 멀티코어 프로세서 (14a, 14b, 14c)), 프로세서 코어 (예를 들어, 도 4 및 도 5 에서의 프로세서 코어 (300a, 300b, 300c, 300d, 300e, 300f)), 및 사설 캐시 (예를 들어, 도 4 및 도 5 에서의 사설 캐시 (302a, 302b, 302c, 302d, 302e, 302f)) 또는 공유 캐시 (예를 들어, 도 4 및 도 5 에서의 공유 캐시 (304a, 304b, 304c)) 를 포함하는 프로세서 캐시를 포함하여 제 1 전력 도메인의 컴포넌트들 중 임의의 컴포넌트에 대해 검출될 수도 있다. 검출된 전력 상태 변경은 "ON" 상태와 같은 고전력 상태 및 "OFF" 또는 "RET" 상태들과 같은 더 낮은 전력 상태들 중 임의의 상태로부터 전력 상태들의 동일한 세트의 다른 전력 상태로의 변경을 포함할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들의 전력 상태를 모니터링할 수도 있다. 참조의 용이를 위해, 방법 (700) 은 하나의 ("제 1") 전력 도메인의 전력 상태를 모니터링 및 검출하는 프로세서에 관하여 설명된다. 하지만, 유사한 동작들이 임의의 수 (N) 의 전력 도메인들에 대해 수행될 수도 있기 때문에, 제 1 전력 도메인에 대한 참조는 임의적이고 비제한적이다.
블록 704 에서, 프로세싱 디바이스는 제 1 전력 도메인의 전력 상태를 결정할 수도 있다. 제 1 전력 도메인의 전력 상태는 제 1 전력 도메인의 컴포넌트들의 임의의 조합의 전력 상태에 링크될 수도 있다. 예를 들어, 제 1 전력 도메인의 전력 상태는 제 1 전력 도메인의 프로세서 캐시들의 전력 상태에 링크될 수도 있다. 본 명세서에서 논의된 바와 같이, 제 1 전력 도메인에 대한 전력 상태는, 제 1 전력 도메인의 전력 상태가 링크되는 컴포넌트들 중 임의의 컴포넌트의 최고의 전력 상태일 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들의 전력 상태를 결정할 수도 있다.
결정 블록 706 에서, 프로세싱 디바이스는, 전력 상태 변경이 제 1 전력 도메인에 대한 파워-업 상태 변경인지 여부를 결정할 수도 있다. 파워-업 상태 변경은 "OFF" 또는 "RET" 전력 상태를 포함한 저전력 상태로부터 "ON" 전력 상태를 포함한 고전력 상태로의 변경을 포함할 수도 있다. 프로세싱 디바이스는 제 1 전력 도메인의 상태와 제 1 전력 도메인에서의 전력 상태 변경을 비교하여, 제 1 전력 도메인에 대한 상태 변경이 존재하는지 여부 및 상태 변경이 얼마인지를 결정할 수도 있다. 예를 들어, 제 1 전력 도메인보다 더 높은 전력 상태로의 제 1 전력 도메인에서의 전력 상태 변경은 더 높은 전력 상태로의 제 1 전력 도메인에 대한 상태 변경을 야기할 수도 있다. 다른 예에 있어서, 제 1 전력 도메인보다 더 낮은 전력 상태로의 제 1 전력 도메인에서의 전력 상태 변경은, 제 1 전력 도메인의 어떠한 다른 컴포넌트도 전력 상태 변경의 전력 상태보다 더 높은 전력 상태에 있지 않는 한, 더 낮은 전력 상태로의 제 1 전력 도메인에 대한 상태 변경을 야기할 수도 있다. 다른 예에 있어서, 제 1 전력 도메인에 대한 전력 상태와 동일한 전력 상태로의 제 1 전력 도메인에서의 전력 상태 변경은 제 1 전력 도메인에 대한 전력 상태 변경 없음을 야기할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들에 대한 결정 블록 706 에서의 동작들을 수행할 수도 있다.
전력 상태 변경이 제 1 전력 도메인에 대한 파워-업 상태 변경임을 결정하는 것 (즉, 결정 블록 706 = "예") 에 응답하여, 프로세싱 디바이스는, 블록 710 에서, 제 1 전력 도메인에 대응하는 제 1 분할된 스누프 디렉토리 (예를 들어, 도 3 내지 도 5 에서의 분할된 스누프 디렉토리 (310a, 310b)) 를 인에이블할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들에 대한 블록 710 에서의 동작들을 수행할 수도 있다.
전력 상태 변경이 제 1 전력 도메인에 대한 파워-업 상태 변경이 아님을 결정하는 것 (즉, 결정 블록 706 = "아니오") 에 응답하여, 프로세싱 디바이스는, 결정 블록 708 에서, 전력 상태 변경이 제 1 전력 도메인에 대한 파워-다운 또는 보류 상태 변경인지 여부를 결정할 수도 있다. "OFF" 및 "RET" 전력 상태들은 저전력 상태로서 지칭될 수도 있고, 파워-다운 또는 보류 상태 변경을 포함한 전력 상태 변경은 저전력 상태로의 변경일 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들에 대한 블록 708 에서의 동작들을 수행할 수도 있다.
전력 상태 변경이 제 1 전력 도메인에 대한 파워-다운 또는 보류 상태 변경임을 결정하는 것 (즉, 결정 블록 708 = "예") 에 응답하여, 프로세싱 디바이스는, 블록 712 에서, 제 1 전력 도메인에 대응하는 제 1 분할된 스누프 디렉토리를 디스에이블할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들에 대한 블록 712 에서의 동작들을 수행할 수도 있다.
블록 714 에서, 프로세싱 디바이스는, 결정 블록 708 에서 전력 상태 변경이 제 1 전력 도메인에 대한 파워-다운 또는 보류 상태 변경인지 여부에 의존하여, 제 1 분할된 스누프 디렉토리를 보류 상태로 두거나 또는 제 1 분할된 스누프 디렉토리를 파워-다운할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들에 대한 블록 714 에서의 동작들을 수행할 수도 있다.
전력 상태 변경이 제 1 전력 도메인에 대한 파워-다운 또는 보류 상태 변경이 아님을 결정하는 것 (즉, 결정 블록 708 = "아니오") 에 응답하여, 프로세싱 디바이스는, 블록 702 에서, 제 1 전력 도메인 (또는 N 전력 도메인들) 에서의 추가적인 전력 상태 변경을 모니터링 및 검출하는 것을 계속할 수도 있다.
도 8 은 일 양태에 따른, 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 파워-업 및 인에이블먼트를 구현하기 위한 방법 (800) 을 예시한다. 방법 (800) 은 임의의 수 (N) 의 전력 도메인들에 대해 구현될 수도 있으며, 여기서, N 은 1 보다 큰 정수이다. 방법 (800) 은, 컴퓨팅 디바이스에서, 프로세서 (예를 들어, 도 1 및 도 2 에서의 프로세서 (14)) 에서 실행하는 소프트웨어로, 범용 하드웨어로, 전용 하드웨어 (예를 들어, 도 4 및 도 5 에서의 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 및/또는 프로세서 캐시 전력 제어기들 (402a, 402b, 402c)) 로, 또는 다른 개별 컴포넌트들을 포함하는 분할된 스누프 디렉토리 시스템 내의 소프트웨어를 실행하는 프로세서와 같이 프로세서와 전용 하드웨어의 조합으로 구현될 수도 있다. 다양한 양태들에서 인에이블된 대안적인 구성들을 포괄하기 위하여, 방법 (800) 을 구현하는 하드웨어는 "프로세싱 디바이스" 로서 본 명세서에서 지칭된다. 다양한 양태들에 있어서, 방법 (800) 은 도 7 을 참조하여 설명된 방법 (700) 의 부분으로서, 그 확장으로, 그와 함께, 또는 그와는 별도로 구현될 수도 있다.
블록 802 에서, 프로세싱 디바이스는 제 1 전력 도메인 (예를 들어, 도 4 및 도 5 에서의 전력 도메인 (400a, 400b)) 에서의 웨이크-업 조건을 검출할 수도 있다. 웨이크-업 조건은 제 1 전력 도메인을 고전력 (즉 "ON") 상태로 변경하기 위한 조건일 수도 있다. 웨이크-업 조건을 검출하는 것은 멀티코어 프로세서 (예를 들어, 도 4 및 도 5 에서의 멀티코어 프로세서 (14a, 14b, 14c)), 프로세서 코어 (예를 들어, 도 4 및 도 5 에서의 프로세서 코어 (300a, 300b, 300c, 300d, 300e, 300f)), 및 사설 캐시 (예를 들어, 도 4 및 도 5 에서의 사설 캐시 (302a, 302b, 302c, 302d, 302e, 302f)) 또는 공유 캐시 (예를 들어, 도 4 및 도 5 에서의 공유 캐시 (304a, 304b, 304c)) 를 포함하는 프로세서 캐시 중 임의의 것을 포함하여 제 1 전력 도메인의 컴포넌트의 전력 인출, 온도, 멀티코어 프로세서가 그 전력 상태를 표시하고 있지 않을 경우의 멀티코어 프로세서 전력 제어 유닛 활동 및/또는 상태, 인터럽트, 및/또는 입력/출력 활동을 모니터링하는 것에 기초할 수도 있다. 전력 인출, 온도, 및/또는 입력/출력 활동의 모니터링된 레벨에서의 증가, 멀티코어 프로세서 전력 제어 유닛의 활동 및/또는 상태를 검출하는 것, 및/또는 인터럽트를 검출하는 것은, 웨이크-업 이벤트가 제 1 전력 도메인에서 발생하였음을 프로세싱 디바이스에게 표시할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들에 대한 블록 802 에서의 동작들을 수행할 수도 있다.
블록 804 에서, 프로세싱 디바이스는 제 1 전력 도메인에 대한 제 1 분할된 스누프 디렉토리 (예를 들어, 도 3 내지 도 5 에서의 분할된 스누프 디렉토리 (310a, 310b)) 를 위한 파워-업 요청을 전송할 수도 있다. 제 1 전력 도메인에 대한 제 1 분할된 스누프 디렉토리를 위한 파워-업 요청은 제 1 전력 도메인에 대한 파워-업 상태 변경의 결정 이후, 예컨대, 방법 (700) 의 결정 블록 706 에서 또는 그러한 결정에 무관하게 전송될 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들에 대한 블록 804 에서의 동작들을 수행할 수도 있다.
블록 806 에서, 프로세싱 디바이스는 웨이크-업 조건을 검출하는 것에 응답하여 멀티코어 프로세서 캐시를 파워-업할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들에 대한 블록 806 에서의 동작들을 수행할 수도 있다.
블록 808 에서, 프로세싱 디바이스는, 제 1 전력 도메인과 연관된 제 1 분할된 스누프 디렉토리가 인에이블되는지 여부를 결정할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 808 에서의 동작들을 수행할 수도 있다.
결정 블록 810 에서, 프로세싱 디바이스는 제 1 전력 도메인과 연관된 제 1 분할된 스누프 디렉토리를 위한 태그 초기화를 트리거하고, 제 1 분할된 스누프 디렉토리의 인에이블링을 트리거할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 810 에서의 동작들을 수행할 수도 있다.
제 1 전력 도메인과 연관된 제 1 분할된 스누프 디렉토리가 인에이블되지 않음을 결정하는 것 (즉, 결정 블록 810 = "아니오") 에 응답하여, 프로세싱 디바이스는, 블록 812 에서, 제 1 분할된 스누프 디렉토리를 위한 인에이블 요청을 전송할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 812 에서의 동작들을 수행할 수도 있다.
블록 814 에서, 프로세싱 디바이스는 제 1 분할된 스누프 디렉토리의 인에이블먼트의 확인응답을 수신할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 분할된 스누프 디렉토리들에 대한 블록 810 에서의 인에이블먼트의 확인응답을 수신할 수도 있다.
블록 816 에서, 프로세싱 디바이스는 제 1 분할된 스누프 디렉토리의 스누핑을 인에이블할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 816 에서의 동작들을 수행할 수도 있다.
블록 818 에서, 프로세싱 디바이스는 멀티코어 프로세서 캐시를 인에이블할 수도 있다.
제 1 전력 도메인과 연관된 제 1 분할된 스누프 디렉토리가 인에이블됨을 결정하는 것 (즉, 결정 블록 810 = "예") 에 응답하여, 프로세싱 디바이스는, 블록 816 에서, 제 1 분할된 스누프 디렉토리의 스누핑을 인에이블할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 810 에서의 동작들을 수행할 수도 있다.
도 9 는 일 양태에 따른, 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 파워-업을 구현하기 위한 방법 (900) 을 예시한다. 방법 (900) 은 임의의 수 (N) 의 전력 도메인들에 대해 구현될 수도 있으며, 여기서, N 은 1 보다 큰 정수이다. 방법 (900) 은, 컴퓨팅 디바이스에서, 프로세서 (예를 들어, 도 1 및 도 2 에서의 프로세서 (14)) 에서 실행하는 소프트웨어로, 범용 하드웨어로, 전용 하드웨어 (예를 들어, 도 4 및 도 5 에서의 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 및/또는 프로세서 캐시 전력 제어기들 (402a, 402b, 402c)) 로, 또는 다른 개별 컴포넌트들을 포함하는 분할된 스누프 디렉토리 시스템 내의 소프트웨어를 실행하는 프로세서와 같이 프로세서와 전용 하드웨어의 조합으로 구현될 수도 있다. 다양한 양태들에서 인에이블된 대안적인 구성들을 포괄하기 위하여, 방법 (900) 을 구현하는 하드웨어는 "프로세싱 디바이스" 로서 본 명세서에서 지칭된다. 다양한 양태들에 있어서, 방법 (900) 은 도 7 에서의 방법 (700) 및/또는 도 8 을 참조하여 설명된 방법 (800) 의 부분으로서, 그 확장으로, 그와 함께, 또는 그와는 별도로 구현될 수도 있다.
블록 902 에서, 프로세싱 디바이스는 제 1 전력 도메인 (예를 들어, 도 4 및 도 5 에서의 전력 도메인 (400a, 400b)) 과 연관된 제 1 분할된 스누프 디렉토리 (예를 들어, 도 3 내지 도 5 에서의 분할된 스누프 디렉토리 (310a, 310b)) 를 위한 파워-업 요청을 수신할 수도 있다. 파워-업 요청은 방법 (800) 의 블록 804 에서 전송된 파워-업 요청일 수도 있다. 일부 양태들에 있어서, 프로세서는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 902 에서의 동작들을 수행할 수도 있다.
결정 블록 904 에서, 프로세싱 디바이스는, 제 1 전력 도메인과 연관된 제 1 분할된 스누프 디렉토리가 이미 파워-업되었는지 여부를 결정할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 904 에서의 동작들을 수행할 수도 있다.
제 1 분할된 스누프 디렉토리가 이미 파워-업되지 않았음을 결정하는 것 (즉, 결정 블록 904 = "아니오") 에 응답하여, 프로세싱 디바이스는, 블록 906 에서, 제 1 분할된 스누프 디렉토리를 파워-업할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 906 에서의 동작들을 수행할 수도 있다.
제 1 분할된 스누프 디렉토리가 이미 파워-업되었음을 결정하는 것 (즉, 결정 블록 904 = "예") 에 응답하여, 프로세싱 디바이스는, 블록 902 에서, 제 2 전력 도메인과 연관된 제 2 분할된 스누프 디렉토리를 위한 파워-업 요청을 수신할 수도 있다.
도 10 은 일 양태에 따른, 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리를 인에이블하기 위한 방법 (1000) 을 예시한다. 방법 (1000) 은 임의의 수 (N) 의 전력 도메인들에 대해 구현될 수도 있으며, 여기서, N 은 1 보다 큰 정수이다. 방법 (1000) 은, 컴퓨팅 디바이스에서, 프로세서 (예를 들어, 도 1 및 도 2 에서의 프로세서 (14)) 에서 실행하는 소프트웨어로, 범용 하드웨어로, 전용 하드웨어 (예를 들어, 도 4 및 도 5 에서의 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 및/또는 프로세서 캐시 전력 제어기들 (402a, 402b, 402c)) 로, 또는 다른 개별 컴포넌트들을 포함하는 분할된 스누프 디렉토리 시스템 내의 소프트웨어를 실행하는 프로세서와 같이 프로세서와 전용 하드웨어의 조합으로 구현될 수도 있다. 다양한 양태들에서 인에이블된 대안적인 구성들을 포괄하기 위하여, 방법 (1000) 을 구현하는 하드웨어는 "프로세싱 디바이스" 로서 본 명세서에서 지칭된다. 다양한 양태들에 있어서, 방법 (1000) 은 도 7 을 참조하여 설명된 방법 (700) 및/또는 도 8 을 참조하여 설명된 방법 (800) 의 부분으로서, 그 확장으로, 그와 함께, 또는 그와는 별도로 구현될 수도 있다.
블록 1002 에서, 프로세싱 디바이스는 제 1 전력 도메인 (예를 들어, 도 4 및 도 5 에서의 전력 도메인 (400a, 400b)) 과 연관된 제 1 분할된 스누프 디렉토리 (예를 들어, 도 3 내지 도 5 에서의 분할된 스누프 디렉토리 (310a, 310b)) 를 위한 인에이블 요청을 수신할 수도 있다. 인에이블 요청은 방법 (800) 의 블록 812 에서 전송된 인에이블 요청일 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 1002 에서의 동작들을 수행할 수도 있다.
블록 1004 에서, 프로세싱 디바이스는 제 1 분할된 스누프 디렉토리를 인에이블할 수도 있다. 블록 1006 에서, 프로세싱 디바이스는 전력 도메인 분할된 스누프 디렉토리의 인에이블먼트의 확인응답을 전송할 수도 있다. 확인응답은 방법 (800) 의 블록 814 에서 수신된 확인응답일 수도 있다.
도 11 은 일 양태에 따른, 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 디스에이블링을 구현하기 위한 방법 (1100) 을 예시한다. 방법 (1100) 은 임의의 수 (N) 의 전력 도메인들에 대해 구현될 수도 있으며, 여기서, N 은 1 보다 큰 정수이다. 방법 (1100) 은, 컴퓨팅 디바이스에서, 프로세서 (예를 들어, 도 1 및 도 2 에서의 프로세서 (14)) 에서 실행하는 소프트웨어로, 범용 하드웨어로, 전용 하드웨어 (예를 들어, 도 4 및 도 5 에서의 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 및/또는 프로세서 캐시 전력 제어기들 (402a, 402b, 402c)) 로, 또는 다른 개별 컴포넌트들을 포함하는 분할된 스누프 디렉토리 시스템 내의 소프트웨어를 실행하는 프로세서와 같이 프로세서와 전용 하드웨어의 조합으로 구현될 수도 있다. 다양한 양태들에서 인에이블된 대안적인 구성들을 포괄하기 위하여, 방법 (1100) 을 구현하는 하드웨어는 "프로세싱 디바이스" 로서 본 명세서에서 지칭된다. 다양한 양태들에 있어서, 방법 (1100) 은 도 7 에서의 방법 (700) 의 부분으로서, 그 확장으로, 그와 함께, 또는 그와는 별도로 구현될 수도 있다.
블록 1102 에서, 프로세싱 디바이스는, 파워-다운 및 보류 (즉, RET) 상태들을 포함한 저전력 상태로의 제 1 전력 도메인 (예를 들어, 도 4 및 도 5 에서의 전력 도메인 (400a, 400b)) 에서의 변경을 위한 조건을 검출할 수도 있다. 파워-다운 (즉, "OFF") 또는 보류 (즉, "RET") 조건을 검출하는 것은 멀티코어 프로세서 (예를 들어, 도 4 및 도 5 에서의 멀티코어 프로세서 (14a, 14b, 14c)), 프로세서 코어 (예를 들어, 도 4 및 도 5 에서의 프로세서 코어 (300a, 300b, 300c, 300d, 300e, 300f)), 및 사설 캐시 (예를 들어, 도 4 및 도 5 에서의 사설 캐시 (302a, 302b, 302c, 302d, 302e, 302f)) 또는 공유 캐시 (예를 들어, 도 4 및 도 5 에서의 공유 캐시 (304a, 304b, 304c)) 를 포함하는 프로세서 캐시 중 임의의 것을 포함하여 제 1 전력 도메인의 컴포넌트의 전력 인출, 온도, 멀티코어 프로세서가 그 전력 상태를 표시하고 있지 않을 경우의 멀티코어 프로세서 전력 제어 유닛 활동 및/또는 상태, 및/또는 입력/출력 활동을 모니터링하는 것에 기초할 수도 있다. 전력 인출, 온도, 멀티코어 프로세서 전력 제어 유닛의 활동 및/또는 상태, 및/또는 입력/출력 활동의 모니터링된 레벨에서의 감소 또는 중지는, 파워-다운 또는 보류 이벤트가 제 1 전력 도메인에서 발생하였음을 프로세싱 디바이스에게 표시할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들에 대한 블록 1102 에서의 동작들을 수행할 수도 있다.
옵션적인 블록 1104 에서, 파워-다운 이벤트에 대해, 프로세싱 디바이스는 파워-다운 이벤트에 의해 영향받은 제 1 전력 도메인의 프로세서 캐시들을 플러싱할 수도 있다. 프로세서 캐시 플러시는 파워-다운 이벤트 시의 프로세서 캐시에 저장된 데이터를 다른 메모리 (예를 들어, 도 1 에서의 메모리 (16) 및 저장 디바이스 (24) 및 도 3 에서의 랜덤 액세스 메모리 컴포넌트들 (312)) 로 송신할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 1104 에서의 동작들을 수행할 수도 있다.
블록 1106 에서, 프로세싱 디바이스는 저전력 상태로의 변경과 연관된 프로세서 캐시들에 대한 제 1 전력 도메인과 연관된 제 1 분할된 스누프 디렉토리의 스누핑을 디스에이블할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 1106 에서의 동작들을 수행할 수도 있다.
블록 1108 에서, 프로세싱 디바이스는 저전력 상태로의 변경과 연관된 제 1 전력 도메인의 프로세서 캐시들을 저전력 상태로 변경할 수도 있다. 다양한 실시형태들에 있어서, 프로세서 캐시를 저전력 상태로 변경하는 것은 프로세서 캐시를 파워-다운된 (즉, "OFF") 상태로 또는 보류 (즉, "RET") 상태로 변경하는 것을 포함할 수도 있다.
블록 1110 에서, 프로세싱 디바이스는 제 1 전력 도메인과 연관된 제 1 분할된 스누프 디렉토리에 대한 디스에이블 통지를 전송할 수도 있다. 디스에이블 통지는, 블록 1102 에서 저전력 상태로의 제 1 전력 도메인을 변경하기 위한 조건을 검출하는 것에 응답하여, 제 1 분할된 스누프 디렉토리를 "OFF" 또는 "RET" 상태와 같은 저전력 상태로 변경하기 위한 요청일 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 1108 에서의 동작들을 수행할 수도 있다.
도 12 는 일 양태에 따른, 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 디스에이블링을 구현하기 위한 방법 (1200) 을 예시한다. 방법 (1200) 은 임의의 수 (N) 의 전력 도메인들에 대해 구현될 수도 있으며, 여기서, N 은 1 보다 큰 정수이다. 방법 (1200) 은, 컴퓨팅 디바이스에서, 프로세서 (예를 들어, 도 1 및 도 2 에서의 프로세서 (14)) 에서 실행하는 소프트웨어로, 범용 하드웨어로, 전용 하드웨어 (예를 들어, 도 4 및 도 5 에서의 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 및/또는 프로세서 캐시 전력 제어기들 (402a, 402b, 402c)) 로, 또는 다른 개별 컴포넌트들을 포함하는 분할된 스누프 디렉토리 시스템 내의 소프트웨어를 실행하는 프로세서와 같이 프로세서와 전용 하드웨어의 조합으로 구현될 수도 있다. 다양한 양태들에서 인에이블된 대안적인 구성들을 포괄하기 위하여, 방법 (1200) 을 구현하는 하드웨어는 "프로세싱 디바이스" 로서 본 명세서에서 지칭된다. 다양한 양태들에 있어서, 방법 (1200) 은 도 7 을 참조하여 설명된 방법 (700) 및/또는 도 11 을 참조하여 설명된 방법 (1100) 의 부분으로서, 그 확장으로, 그와 함께, 또는 그와는 별도로 구현될 수도 있다.
블록 1202 에서, 프로세싱 디바이스는 제 1 전력 도메인 (예를 들어, 도 4 및 도 5 에서의 전력 도메인 (400a, 400b)) 과 연관된 제 1 분할된 스누프 디렉토리 (예를 들어, 도 3 내지 도 5 에서의 분할된 스누프 디렉토리 (310a, 310b)) 를 위한 디스에이블 통지를 수신할 수도 있다. 디스에이블 통지는 방법 (1100) 의 블록 1110 에서 전송된 디스에이블 통지일 수도 있다. 디스에이블 통지는, 블록 1102 에서 저전력 상태로의 제 1 전력 도메인을 변경하기 위한 조건을 검출하는 것에 응답하여, 제 1 분할된 스누프 디렉토리를 "OFF" 또는 "RET" 상태와 같은 저전력 상태로 변경하기 위한 요청일 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 1202 에서의 동작들을 수행할 수도 있다.
블록 결정 블록 1204 에서, 프로세싱 디바이스는, 디스에이블 통지가, 마지막 전력공급된 프로세서 캐시를 보류로 파워-다운하는 것 또는 마지막 전력공급된 프로세서 캐시를 보류로 두는 것 중 어느 하나에 의해, 제 1 전력 도메인의 마지막 전력공급된 프로세서 캐시 (예를 들어, 도 4 및 도 5 에서의 사설 캐시 (302a, 302b, 302c, 302d, 302e, 302f) 또는 공유 캐시 (304a, 304b, 304c)) 를 저전력 상태로 변경함으로써 트리거되는지 여부를 결정할 수도 있다. 즉, 프로세서는, 방법 (1100) 의 블록 1108 에서 프로세서 캐시를 저전력 상태로 변경하는 것이 제 1 전력 도메인의 프로세서 캐시들 모두가 "OFF" 또는 "RET" 전력 상태에 있게 하고 어떤 것도 "ON" 전력 상태에 있지 않게 하는지 여부를 결정할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들에 대한 결정 블록 1204 에서의 동작들을 수행할 수도 있다.
디스에이블 통지가 마지막 전력공급된 프로세서 캐시를 저전력 상태로 변경함으로써 트리거됨을 결정하는 것 (즉, 결정 블록 1204 = "예") 에 응답하여, 프로세싱 디바이스는, 블록 1206 에서, 제 1 전력 도메인과 연관된 제 1 분할된 스누프 디렉토리를 디스에이블할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 1206 에서의 동작들을 수행할 수도 있다.
블록 1208 에서, 프로세싱 디바이스는 제 1 전력 도메인과 연관된 제 1 분할된 스누프 디렉토리를 파워-다운하거나 보류로 둘 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 1208 에서의 동작들을 수행할 수도 있다.
디스에이블 통지가 마지막이 아닌 전력공급된 프로세서 캐시를 저전력 상태로 변경함으로써 트리거됨을 결정하는 것 (즉, 결정 블록 1204 = "아니오") 에 응답하여, 프로세싱 디바이스는, 블록 1210 에서, 제 1 분할된 스누프 디렉토리를 인에이블된 채로 남겨둘 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 1210 에서의 동작들을 수행할 수도 있다.
본 명세서에서 설명된 방법들 (700, 800, 900, 1000, 1100, 1200) 에 있어서, 신호들, 요청들, 및 확인응답들의 송신 (즉, 전송 및 수신) 은, 전력 도메인 (예를 들어, 도 4 및 도 5 에서의 전력 도메인 (400a, 400b)) 과 연관된 분할된 스누프 디렉토리 전력 제어기들 (예를 들어, 도 4 및 도 5 에서의 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b)) 과 프로세서 캐시 전력 제어기들 (예를 들어, 도 4 및 도 5 에서의 프로세서 캐시 전력 제어기들 (402a, 402b, 402c)) 사이에서 발생할 수도 있다.
도 13 은 일 양태에 따른, 멀티코어 프로세서 상태 시그널링을 갖는 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 파워-업 및 인에이블먼트를 구현하기 위한 방법 (1300) 을 예시한다. 방법 (1300) 은 임의의 수 (N) 의 전력 도메인들에 대해 구현될 수도 있으며, 여기서, N 은 1 보다 큰 정수이다. 방법 (1300) 은, 컴퓨팅 디바이스에서, 프로세서 (예를 들어, 도 1 및 도 2 에서의 프로세서 (14)) 에서 실행하는 소프트웨어로, 범용 하드웨어로, 전용 하드웨어 (예를 들어, 도 4 및 도 5 에서의 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 및/또는 프로세서 캐시 전력 제어기들 (402a, 402b, 402c)) 로, 또는 다른 개별 컴포넌트들을 포함하는 분할된 스누프 디렉토리 시스템 내의 소프트웨어를 실행하는 프로세서와 같이 프로세서와 전용 하드웨어의 조합으로 구현될 수도 있다. 다양한 양태들에서 인에이블된 대안적인 구성들을 포괄하기 위하여, 방법 (1300) 을 구현하는 하드웨어는 "프로세싱 디바이스" 로서 본 명세서에서 지칭된다. 다양한 양태들에 있어서, 방법 (1300) 은 도 7 을 참조하여 설명된 방법 (700) 의 부분으로서, 그 확장으로, 그와 함께, 또는 그와는 별도로 구현될 수도 있다.
블록 1302 에서, 프로세싱 디바이스는 제 1 전력 도메인 (예를 들어, 도 4 및 도 5 에서의 전력 도메인 (400a, 400b)) 에서의 웨이크-업 조건을 수신할 수도 있다. 웨이크-업 조건은 제 1 전력 도메인을 고전력, "ON", 상태로 변경하기 위한 조건일 수도 있다. 웨이크-업 조건을 수신하는 것은 멀티코어 프로세서 (예를 들어, 도 4 및 도 5 에서의 멀티코어 프로세서 (14a, 14b, 14c)), 프로세서 코어 (예를 들어, 도 4 및 도 5 에서의 프로세서 코어 (300a, 300b, 300c, 300d, 300e, 300f)), 및 사설 캐시 (예를 들어, 도 4 및 도 5 에서의 사설 캐시 (302a, 302b, 302c, 302d, 302e, 302f)) 또는 공유 캐시 (예를 들어, 도 4 및 도 5 에서의 공유 캐시 (304a, 304b, 304c)) 를 포함하는 프로세서 캐시 중 임의의 것을 포함하여 제 1 전력 도메인의 컴포넌트의 전력 인출, 온도, 인터럽트, 및/또는 입력/출력 활동을 모니터링하는 것에 기초할 수도 있다. 전력 인출, 온도, 및/또는 입력/출력 활동의 모니터링된 레벨에서의 증가는, 웨이크-업 이벤트가 제 1 전력 도메인에서 발생하였음을 프로세싱 디바이스에게 표시할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들에 대한 블록 1302 에서의 동작들을 수행할 수도 있다.
결정 블록 1304 에서, 프로세싱 디바이스는 제 1 전력 도메인에 대한 제 1 분할된 스누프 디렉토리 (예를 들어, 도 3 내지 도 5 에서의 분할된 스누프 디렉토리 (310a, 310b)) 가 이미 파워-업되었는지 여부를 결정할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 결정 블록 1304 에서의 동작들을 수행할 수도 있다.
제 1 전력 도메인과 연관된 제 1 분할된 스누프 디렉토리가 이미 파워-업되지 않았음을 결정하는 것 (즉, 결정 블록 1304 = "아니오") 에 응답하여, 프로세싱 디바이스는, 블록 1314 에서, 제 1 분할된 스누프 디렉토리를 파워-업할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 1314 에서의 동작들을 수행할 수도 있다.
제 1 전력 도메인과 연관된 제 1 분할된 스누프 디렉토리가 이미 파워-업되었음을 결정하는 것 (즉, 결정 블록 1304 = "예") 에 응답하여, 프로세싱 디바이스는, 결정 블록 1306 에서, 제 1 분할된 스누프 디렉토리가 인에이블되는지 여부를 결정할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 결정 블록 1306 에서의 동작들을 수행할 수도 있다.
제 1 분할된 스누프 디렉토리가 인에이블되지 않음을 결정하는 것 (즉, 결정 블록 1306 = "아니오") 에 응답하여 또는 블록 1314 에서 제 1 분할된 스누프 디렉토리를 파워-업한 이후, 프로세싱 디바이스는, 블록 1308 에서, 제 1 전력 도메인과 연관된 제 1 분할된 스누프 디렉토리를 위한 태그 초기화를 트리거하고, 제 1 전력 도메인과 연관된 제 1 분할된 스누프 디렉토리를 인에이블하는 것을 트리거할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 1308 에서의 동작들을 수행할 수도 있다.
블록 1310 에서, 프로세싱 디바이스는 제 1 전력 도메인과 연관된 제 1 분할된 스누프 디렉토리를 인에이블할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 1310 에서의 동작들을 수행할 수도 있다.
제 1 전력 도메인과 연관된 제 1 분할된 스누프 디렉토리가 인에이블됨을 결정하는 것 (즉, 결정 블록 1306 = "예") 에 응답하여 또는 블록 1310 에서 제 1 분할된 스누프 디렉토리를 인에이블한 이후, 프로세싱 디바이스는, 블록 1312 에서, 제 1 분할된 스누프 디렉토리의 인에이블먼트의 확인응답을 전송할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 1312 에서의 동작들을 수행할 수도 있다.
도 14 는 일 양태에 따른, 멀티코어 프로세서 상태 시그널링을 갖는 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리 디스에이블링을 구현하기 위한 방법 (1400) 을 예시한다. 방법 (1400) 은 임의의 수 (N) 의 전력 도메인들에 대해 구현될 수도 있으며, 여기서, N 은 1 보다 큰 정수이다. 방법 (1400) 은, 컴퓨팅 디바이스에서, 프로세서 (예를 들어, 도 1 및 도 2 에서의 프로세서 (14)) 에서 실행하는 소프트웨어로, 범용 하드웨어로, 전용 하드웨어 (예를 들어, 도 4 및 도 5 에서의 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 및/또는 프로세서 캐시 전력 제어기들 (402a, 402b, 402c)) 로, 또는 다른 개별 컴포넌트들을 포함하는 분할된 스누프 디렉토리 시스템 내의 소프트웨어를 실행하는 프로세서와 같이 프로세서와 전용 하드웨어의 조합으로 구현될 수도 있다. 다양한 양태들에서 인에이블된 대안적인 구성들을 포괄하기 위하여, 방법 (1400) 을 구현하는 하드웨어는 "프로세싱 디바이스" 로서 본 명세서에서 지칭된다. 다양한 양태들에 있어서, 방법 (1400) 은 도 7 을 참조하여 설명된 방법 (700) 의 부분으로서, 그 확장으로, 그와 함께, 또는 그와는 별도로 구현될 수도 있다.
블록 1402 에서, 프로세싱 디바이스는, 파워-다운 및 보류 상태들을 포함한 저전력 상태로 제 1 전력 도메인 (예를 들어, 도 4 및 도 5 에서의 전력 도메인 (400a, 400b)) 을 변경하기 위한 조건을 수신할 수도 있다. 파워-다운, "OFF", 또는 보류 (즉, "RET") 조건을 수신하는 것은 멀티코어 프로세서 (예를 들어, 도 4 및 도 5 에서의 멀티코어 프로세서 (14a, 14b, 14c)), 프로세서 코어 (예를 들어, 도 4 및 도 5 에서의 프로세서 코어 (300a, 300b, 300c, 300d, 300e, 300f)), 및 사설 캐시 (예를 들어, 도 4 및 도 5 에서의 사설 캐시 (302a, 302b, 302c, 302d, 302e, 302f)) 또는 공유 캐시 (예를 들어, 도 4 및 도 5 에서의 공유 캐시 (304a, 304b, 304c)) 를 포함하는 프로세서 캐시 중 임의의 것을 포함하여 제 1 전력 도메인의 컴포넌트의 전력 상태, 전력 인출, 온도, 및/또는 입력/출력 활동의 신호를 모니터링 또는 수신하는 것에 기초할 수도 있다. 전력 인출, 온도, 및/또는 입력/출력 활동의 모니터링된 레벨에서의 감소 또는 중지는, 파워-다운 또는 보류 이벤트가 제 1 전력 도메인에서 발생하였음을 프로세싱 디바이스에게 표시할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들에 대한 블록 1402 에서의 동작들을 수행할 수도 있다.
결정 블록 1404 에서, 프로세싱 디바이스는, 저전력 상태로 변경하기 위한 조건이 제 1 전력 도메인의 마지막 전력공급된 프로세서 캐시에 대한 것인지 여부를 결정할 수도 있다. 즉, 프로세서는, 프로세서 캐시를 파워-다운하는 것 또는 보류로 두는 것 중 어느 하나에 의해 저전력 상태로 변경하는 것이 제 1 전력 도메인의 프로세서 캐시들 모두가 "OFF" 또는 "RET" 전력 상태에 있게 하고 어떤 것도 "ON" 전력 상태에 있지 않게 할 것인지 여부를 결정할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들에 대한 블록 1404 에서의 동작들을 수행할 수도 있다.
저전력 상태로 변경하기 위한 조건이 마지막 전력공급된 프로세서 캐시에 대한 것이 아님을 결정하는 것 (즉, 결정 블록 1404 = "아니오") 에 응답하여, 프로세싱 디바이스는, 블록 1410 에서, 제 1 분할된 스누프 디렉토리를 인에이블된 채로 남겨둘 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 1410 에서의 동작들을 수행할 수도 있다.
저전력 상태로 변경하기 위한 조건이 마지막 전력공급된 프로세서 캐시에 대한 것임을 결정하는 것 (즉, 결정 블록 1404 = "예") 에 응답하여, 프로세싱 디바이스는, 블록 1406 에서, 제 1 전력 도메인과 연관된 제 1 분할된 스누프 디렉토리를 디스에이블할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 1406 에서의 동작들을 수행할 수도 있다.
블록 1408 에서, 프로세싱 디바이스는 제 1 전력 도메인과 연관된 제 1 분할된 스누프 디렉토리를 파워-다운하거나 보류로 둘 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 1408 에서의 동작들을 수행할 수도 있다.
본 명세서에서 설명된 방법들 (700, 1300, 1400) 에 있어서, 신호들, 요청들, 및 확인응답들의 송신 (즉, 전송 및 수신) 은, 분할된 스누프 디렉토리 전력 제어기들 (예를 들어, 도 4 및 도 5 에서의 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b)) 과 전력 도메인 (예를 들어, 도 4 및 도 5 에서의 전력 도메인 (400a, 400b)) 사이에서 발생할 수도 있다.
도 15 는 일 양태에 따른, 다중의 전력 도메인들에 대한 분할된 스누프 디렉토리들을 구현하기 위한 방법 (1500) 을 예시한다. 방법 (1500) 은 임의의 수 (N) 의 전력 도메인들에 대해 구현될 수도 있으며, 여기서, N 은 1 보다 큰 정수이다. 방법 (1500) 은, 컴퓨팅 디바이스에서, 프로세서 (예를 들어, 도 1 및 도 2 에서의 프로세서 (14)) 에서 실행하는 소프트웨어로, 범용 하드웨어로, 전용 하드웨어 (예를 들어, 도 4 및 도 5 에서의 분할된 스누프 디렉토리 전력 제어기들 (404a, 404b) 및/또는 프로세서 캐시 전력 제어기들 (402a, 402b, 402c)) 로, 또는 다른 개별 컴포넌트들을 포함하는 분할된 스누프 디렉토리 시스템 내의 소프트웨어를 실행하는 프로세서와 같이 프로세서와 전용 하드웨어의 조합으로 구현될 수도 있다. 다양한 양태들에서 인에이블된 대안적인 구성들을 포괄하기 위하여, 방법 (1500) 을 구현하는 하드웨어는 "프로세싱 디바이스" 로서 본 명세서에서 지칭된다.
블록 1502 에서, 프로세싱 디바이스는, 하나의 전력 도메인 (예를 들어, 도 4 및 도 5 에서의 전력 도메인 (400a, 400b)) 에 각각 대응하는 다중의 분할된 스누프 디렉토리들 (예를 들어, 도 3 내지 도 5 에서의 분할된 스누프 디렉토리 (310a, 310b)) 을 초기화할 수도 있다. 다양한 양태들에 있어서, 프로세싱 디바이스는 제 1 전력 도메인에 대한 제 1 분할된 스누프 디렉토리 및 제 2 전력 도메인에 대한 제 2 분할된 스누프 디렉토리를 초기화할 수도 있다. 제 1 전력 도메인은 제 1 복수의 프로세서 캐시들 (예를 들어, 도 4 및 도 5 에서의 사설 캐시 (302a, 302b, 302c, 302d, 302e, 302f) 및/또는 공유 캐시 (304a, 304b, 304c)) 을 포함할 수도 있고, 제 2 전력 도메인은 적어도 하나의 프로세서 캐시를 포함할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N (즉, 제 1, 제 2, 제 3, 제 4 등) 전력 도메인들 및 N (즉, 제 1, 제 2, 제 3, 제 4 등) 분할된 스누프 디렉토리들에 대한 블록 1502 에서의 동작들을 수행할 수도 있다.
블록 1504 에서, 프로세싱 디바이스는 도 7 내지 도 14 를 참조하여 설명된 방법들 (700, 800, 900, 1000, 1100, 1200, 1300, 1400) 중 하나 이상을, 각각의 전력 도메인 및 대응하는 분할된 스누프 디렉토리에 대해 병렬로 및/또는 개별적으로 구현할 수도 있다. 이는, 제 1 전력 도메인 및 대응하는 제 1 분할된 스누프 디렉토리 그리고 제 2 전력 도메인 및 대응하는 제 2 분할된 스누프 디렉토리를 포함할 수도 있다. 일부 양태들에 있어서, 프로세싱 디바이스는 N 전력 도메인들 및 N 분할된 스누프 디렉토리들에 대한 블록 1504 에서의 동작들을 수행할 수도 있다.
(도 1 내지 도 15 를 참조하여 상기 설명된 양태들을 포함한, 하지만 이에 제한되지 않는) 다양한 양태들은 모바일 컴퓨팅 디바이스들을 포함한 매우 다양한 컴퓨팅 시스템들에서 구현될 수도 있으며, 다양한 양태들과의 사용에 적합한 그 예는 도 16 에 예시된다. 모바일 컴퓨팅 디바이스 (1600) 는 터치스크린 제어기 (1604) 및 내부 메모리 (1606) 에 커플링된 프로세서 (1602) 를 포함할 수도 있다. 프로세서 (1602) 는 일반 또는 특정 프로세싱 태스크들을 위해 지정된 하나 이상의 멀티코어 집적 회로들일 수도 있다. 내부 메모리 (1606) 는 휘발성 또는 비휘발성 메모리일 수도 있으며, 또한 보안 및/또는 암호화된 메모리, 또는 미보안 및/또는 미-암호화된 메모리, 또는 이들의 임의의 조합일 수도 있다. 레버리징될 수 있는 메모리 타입들의 예들은 DDR, LPDDR, GDDR, WIDEIO, RAM, SRAM, DRAM, P-RAM, R-RAM, M-RAM, STT-RAM 및 임베디드 DRAM 을 포함하지만 이에 제한되지 않는다. 터치스크린 제어기 (1604) 및 프로세서 (1602) 는 또한, 저항 감지 터치스크린, 용량 감지 터치스크린, 적외선 감지 터치스크린 등과 같은 터치스크린 패널 (1612) 에 커플링될 수도 있다. 부가적으로, 컴퓨팅 디바이스 (1600) 의 디스플레이는 터치 스크린 능력을 가질 필요는 없다.
모바일 컴퓨팅 디바이스 (1600) 는, 서로에 및/또는 프로세서 (1602) 에 커플링된, 통신물들을 전송 및 수신하기 위한 하나 이상의 무선 신호 트랜시버들 (1608) (예를 들어, 피넛, 블루투스, 지그비, Wi-Fi, RF 라디오 등) 및 안테나들 (1610) 을 가질 수도 있다. 트랜시버들 (1608) 및 안테나들 (1610) 은 상기 언급된 회로부와 함께 사용되어 다양한 무선 송신 프로토콜 스택들 및 인터페이스들을 구현할 수도 있다. 모바일 컴퓨팅 디바이스 (1600) 는, 셀룰러 네트워크를 통해 통신을 가능케 하고 프로세서에 커플링된 셀룰러 네트워크 무선 모뎀 칩 (1616) 을 포함할 수도 있다.
모바일 컴퓨팅 디바이스 (1600) 는, 프로세서 (1602) 에 커플링된 주변기기 디바이스 접속 인터페이스 (1618) 를 포함할 수도 있다. 주변기기 디바이스 접속 인터페이스 (1618) 는 일 타입의 커넥션을 수용하도록 단수로 구성될 수도 있거나, 또는 범용 직렬 버스 (USB), 파이어와이어, 썬더볼트, 또는 PCIe 와 같이 공통의 또는 독점적인 다양한 타입들의 물리 및 통신 커넥션들을 수용하도록 구성될 수도 있다. 주변기기 디바이스 접속 인터페이스 (1618) 는 또한, 유사하게 구성된 주변기기 디바이스 접속 포트 (도시 안됨) 에 커플링될 수도 있다.
모바일 컴퓨팅 디바이스 (1600) 는 또한, 오디오 출력들을 제공하기 위한 스피커들 (1614) 을 포함할 수도 있다. 모바일 컴퓨팅 디바이스 (1600) 는 또한, 본 명세서에서 설명된 컴포넌트들의 모두 또는 그 일부를 포함하기 위한 플라스틱, 금속, 또는 재료들의 조합으로 구성된 하우징 (1620) 을 포함할 수도 있다. 모바일 컴퓨팅 디바이스 (1600) 는 처분가능 또는 재충전가능 배터리와 같이 프로세서 (1602) 에 커플링된 전력 소스 (1622) 를 포함할 수도 있다. 재충전가능 배터리는 또한, 모바일 컴퓨팅 디바이스 (1600) 외부의 소스로부터 충전 전류를 수신하기 위해 주변기기 디바이스 접속 포트에 커플링될 수도 있다. 모바일 컴퓨팅 디바이스 (1600) 는 또한, 사용자 입력들을 수신하기 위한 물리적 버튼 (1624) 을 포함할 수도 있다. 모바일 컴퓨팅 디바이스 (1600) 는 또한, 모바일 컴퓨팅 디바이스 (1600) 를 턴온 및 턴오프하기 위한 파워 버튼 (1626) 을 포함할 수도 있다.
(도 1 내지 도 15 를 참조하여 상기 설명된 양태들을 포함한, 하지만 이에 제한되지 않는) 다양한 양태들은 랩탑 컴퓨터 (1700) 를 포함한 매우 다양한 컴퓨팅 시스템들에서 구현될 수도 있으며, 그 예는 도 17 에 예시된다. 다수의 랩탑 컴퓨터들은, 컴퓨터의 포인팅 디바이스로서 기능하고 따라서 터치 스크린 디스플레이가 장비되고 상기 설명된 컴퓨팅 디바이스들 상에 구현된 것들과 유사한 드래그, 스크롤, 및 플릭 제스처들을 수용할 수도 있는 터치패드 터치 표면 (1717) 을 포함한다. 랩탑 컴퓨터 (1700) 는 통상적으로, 휘발성 메모리 (1712) 및 플래시 메모리의 디스크 드라이브 (1713) 와 같은 대용량 비휘발성 메모리에 커플링된 프로세서 (1711) 를 포함할 것이다. 부가적으로, 컴퓨터 (1700) 는 프로세서 (1711) 에 커플링된 셀룰러 전화 트랜시버 (1716) 및/또는 무선 데이터 링크에 접속될 수도 있는 전자기 방사를 전송 및 수신하기 위한 하나 이상의 안테나 (1708) 를 가질 수도 있다. 컴퓨터 (1700) 는 또한, 프로세서 (1711) 에 커플링된 플로피 디스크 드라이브 (1714) 및 컴팩트 디스크 (CD) 드라이브 (1715) 를 포함할 수도 있다. 노트북 구성에 있어서, 컴퓨터 하우징은, 모두가 프로세서 (1711) 에 커플링된 터치 패드 (1717), 키보드 (1718), 및 디스플레이 (1719) 를 포함한다. 컴퓨팅 디바이스의 다른 구성들은 널리 공지된 바와 같이 (예를 들어, USB 입력을 통해) 프로세서에 커플링된 컴퓨터 마우스 또는 트랙볼을 포함할 수도 있으며, 이는 또한 다양한 양태들과 함께 사용될 수도 있다.
(도 1 내지 도 15 를 참조하여 상기 설명된 양태들을 포함한, 하지만 이에 제한되지 않는) 다양한 양태들은 또한, 임의의 다양한 상업적으로 입수가능한 서버들과 같은 고정된 컴퓨팅 시스템들에서 구현될 수도 있다. 예시적인 서버 (1800) 가 도 18 에 예시된다. 그러한 서버 (1800) 는 통상적으로, 휘발성 메모리 (1802) 및 디스크 드라이브 (1804) 와 같은 대용량 비휘발성 메모리에 커플링된 하나 이상의 멀티코어 프로세서 어셈블리들 (1801) 을 포함한다. 도 18 에 예시된 바와 같이, 멀티코어 프로세서 어셈블리들 (1801) 은 어셈블리의 랙들에 이들을 삽입함으로써 서버 (1800) 에 부가될 수도 있다. 서버 (1800) 는 또한, 프로세서 (1801) 에 커플링된 플로피 디스크 드라이브, 컴팩트 디스크 (CD) 또는 디지털 다기능 디스크 (DVD) 디스크 드라이브 (1806) 를 포함할 수도 있다. 서버 (1800) 는 또한, 다른 브로드캐스트 시스템 컴퓨터들 및 서버들에 커플링된 로컬 영역 네트워크, 인터넷, 공중 스위칭 전화 네트워크, 및/또는 셀룰러 데이터 네트워크 (예를 들어, CDMA, TDMA, GSM, PCS, 3G, 4G, LTE, 또는 임의의 다른 타입의 셀룰러 데이터 네트워크) 와 같은 네트워크 (1805) 와 네트워크 인터페이스 접속들을 확립하기 위해 멀티코어 프로세서 어셈블리들 (1801) 에 커플링된 네트워크 액세스 포트들 (1803) 을 포함할 수도 있다.
다양한 양태들의 동작들을 실행하기 위한 프로그래밍가능 프로세서 상에서의 실행을 위한 컴퓨터 프로그램 코드 또는 "프로그램 코드" 는 C, C++, C#, 스몰토크, 자바, 자바스크립트, 비주얼 베이직, 구조화된 쿼리 언어 (예를 들어, 트랜잭트-SQL), 펄과 같은 하이 레벨 프로그래밍 언어로, 또는 다양한 다른 프로그래밍 언어들로 기입될 수도 있다. 본 출원에서 사용된 바와 같은 컴퓨터 판독가능 저장 매체 상에 저장된 프로그램 코드 또는 프로그램들은, 그 포맷이 프로세서에 의해 이해가능한 기계어 코드 (예컨대, 오브젝트 코드) 를 참조할 수도 있다.
전술한 방법 설명들 및 프로세스 플로우 다이어그램들은 단지 예시적인 예들로서 제공될 뿐이고, 다양한 양태들의 동작들이 제시된 순서로 수행되어야만 함을 요구 또는 의미하도록 의도되지 않는다. 당업자에 의해 인식될 바와 같이, 전술한 양태들에 있어서의 동작들의 순서는 임의의 순서로 수행될 수도 있다. "그 이후", "그 후", "다음" 등과 같은 단어들은 동작들의 순서를 제한하도록 의도되지 않으며; 이들 단어들은 방법들의 설명을 통해 독자를 안내하도록 단순히 사용된다. 추가로, 예를 들어, 관사들 ("a," "an" 또는 "the") 을 사용하여 단수로의 청구항 엘리먼트들에 대한 임의의 참조는 그 엘리먼트를 단수로 제한하는 것으로서 해석되지는 않는다.
다양한 양태들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘 동작들은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들 양자의 조합으로서 구현될 수도 있다. 하드웨어와 소프트웨어의 이러한 상호 대체 가능성을 분명히 예시하기 위하여, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 동작들이 일반적으로 그들의 기능의 관점에서 상기 기술되었다. 그러한 기능이 하드웨어로서 구현될지 또는 소프트웨어로서 구현될지는 전체 시스템에 부과된 설계 제약들 및 특정 어플리케이션에 의존한다. 당업자는 설명된 기능을 각각의 특정 어플리케이션에 대하여 다양한 방식으로 구현할 수도 있지만, 그러한 구현의 결정들이 청구항들의 범위로부터의 일탈을 야기하는 것으로서 해석되지는 않아야 한다.
본 명세서에 개시된 양태들과 관련하여 설명된 다양한 예시적인 로직들, 논리 블록들, 모듈들, 및 회로들을 구현하는데 사용되는 하드웨어는 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (ASIC), 필드 프로그래밍가능 게이트 어레이 (FPGA) 또는 다른 프로그래밍가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본 명세서에서 설명된 기능들을 수행하도록 설계되는 이들의 임의의 조합으로 구현 또는 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안적으로, 그 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로 제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 조합, 예를 들어, DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 기타 다른 구성물로서 구현될 수도 있다. 대안적으로, 일부 동작들 또는 방법들은, 소정의 기능에 특정한 회로부에 의해 수행될 수도 있다.
하나 이상의 양태들에 있어서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 소프트웨어에서 구현된다면, 그 기능들은 하나 이상의 명령들 또는 코드로서 비일시적인 컴퓨터 판독가능 매체 또는 비일시적인 프로세서 판독가능 매체 상에 저장될 수도 있다. 본 명세서에 개시된 방법 또는 알고리즘의 동작들은, 비일시적인 컴퓨터 판독가능 또는 프로세서 판독가능 저장 매체 상에 상주할 수도 있는 프로세서 실행가능 소프트웨어 모듈에서 구현될 수도 있다. 비일시적인 컴퓨터 판독가능 또는 프로세서 판독가능 저장 매체들은 컴퓨터 또는 프로세서에 의해 액세스될 수도 있는 임의의 저장 매체일 수도 있다. 제한이 아닌 예로서, 그러한 비일시적인 컴퓨터 판독가능 또는 프로세서 판독가능 매체들은 RAM, ROM, EEPROM, 플래시 메모리, CD-ROM 또는 다른 광학 디스크 저장부, 자기 디스크 저장부 또는 다른 자기 저장 디바이스들, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 이용될 수도 있고 컴퓨터에 의해 액세스될 수도 있는 임의의 다른 매체를 포함할 수도 있다. 본 명세서에서 사용된 바와 같은 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루레이 디스크를 포함하며, 여기서, 디스크 (disk) 는 통상적으로 데이터를 자기적으로 재생하지만 디스크 (disc) 는 레이저를 이용하여 데이터를 광학적으로 재생한다. 상기의 조합들이 또한, 비일시적인 컴퓨터 판독가능 및 프로세서 판독가능 매체들의 범위 내에 포함된다. 부가적으로, 방법 또는 알고리즘의 동작들은, 코드들 및/또는 명령들 중 하나 또는 그 임의의 조합 또는 그 세트로서 비일시적인 프로세서 판독가능 매체 및/또는 컴퓨터 판독가능 매체 상에 상주할 수도 있으며, 이들은 컴퓨터 프로그램 제품에 통합될 수도 있다.
개시된 양태들의 전술한 설명은 당업자로 하여금 청구항들을 실시 또는 이용하게 할 수 있도록 제공된다. 이들 양태들에 대한 다양한 수정들은 당업자에게 용이하게 자명할 것이며, 본 명세서에서 정의된 일반적 원리들은 청구항들의 범위로부터 일탈함없이 다른 양태들 및 구현들에 적용될 수도 있다. 따라서, 본 개시는 본 명세서에서 설명된 양태들 및 구현들로 제한되도록 의도되지 않으며, 본 명세서에 개시된 원리들 및 신규한 특징들 및 다음의 청구항들과 부합하는 최광의 범위를 부여받아야 한다.
Claims (30)
- 컴퓨팅 디바이스 상에 다중의 분할된 스누프 디렉토리들을 구현하는 방법으로서,
적어도 제 1 멀티코어 프로세서를 갖는 제 1 전력 도메인에 대한 제 1 태그 접근법 스누프 디렉토리 아키텍처로 구성된 제 1 분할된 스누프 디렉토리 및 적어도 제 2 멀티코어 프로세서를 갖는 제 2 전력 도메인에 대한 제 2 태그 접근법 스누프 디렉토리 아키텍처로 구성된 제 2 분할된 스누프 디렉토리를 인에이블하는 단계로서, 상기 제 1 전력 도메인은 복수의 프로세서 캐시들을 포함하고, 상기 제 2 전력 도메인은 적어도 하나의 프로세서 캐시를 포함하고, 제 1 태그 접근법은 제 2 태그 접근법과는 상이한, 상기 제 1 분할된 스누프 디렉토리 및 제 2 분할된 스누프 디렉토리를 인에이블하는 단계;
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 단계; 및
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있음을 결정하는 것에 응답하여 상기 제 1 분할된 스누프 디렉토리를 디스에이블하는 단계를 포함하는, 다중의 분할된 스누프 디렉토리들을 구현하는 방법. - 제 1 항에 있어서,
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 조건을 검출하는 단계; 및
상기 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 상기 조건을 검출하는 것에 응답하여 상기 제 1 분할된 스누프 디렉토리를 저전력 상태로 변경하기 위한 요청을 전송하는 단계를 더 포함하는, 다중의 분할된 스누프 디렉토리들을 구현하는 방법. - 제 2 항에 있어서,
상기 제 1 분할된 스누프 디렉토리를 저전력 상태로 변경하기 위한 상기 요청을 수신하는 단계를 더 포함하고,
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 단계는 상기 제 1 분할된 스누프 디렉토리를 저전력 상태로 변경하기 위한 상기 요청을 수신하는 것에 응답하여 상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 단계를 포함하는, 다중의 분할된 스누프 디렉토리들을 구현하는 방법. - 제 1 항에 있어서,
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 조건을 수신하는 단계를 더 포함하고,
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 단계는 상기 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 상기 조건을 검출하는 것에 응답하여 상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 단계를 포함하는, 다중의 분할된 스누프 디렉토리들을 구현하는 방법. - 제 4 항에 있어서,
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 조건을 수신하는 단계는 상기 제 1 전력 도메인으로부터 상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들 중 상기 적어도 하나의 프로세서 캐시의 전력 상태를 표시하는 신호를 수신하는 단계를 포함하는, 다중의 분할된 스누프 디렉토리들을 구현하는 방법. - 제 1 항에 있어서,
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시가 고전력 상태에 있음을 결정하는 것에 응답하여 상기 제 1 분할된 스누프 디렉토리를 인에이블된 채로 남겨두는 단계를 더 포함하는, 다중의 분할된 스누프 디렉토리들을 구현하는 방법. - 제 1 항에 있어서,
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시를 고전력 상태로 변경하기 위한 조건을 검출하는 단계; 및
상기 적어도 하나의 프로세서 캐시를 고전력 상태로 변경하기 위한 상기 조건을 검출하는 것 및 상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들이 저전력 상태에 있음을 결정하는 것에 응답하여 상기 제 1 분할된 스누프 디렉토리를 인에이블하는 단계를 더 포함하는, 다중의 분할된 스누프 디렉토리들을 구현하는 방법. - 제 7 항에 있어서,
저전력 상태는 "OFF" 상태 및 "RET" (보류) 상태 중 하나를 포함하고; 그리고
고전력 상태는 "ON" 상태를 포함하는, 다중의 분할된 스누프 디렉토리들을 구현하는 방법. - 제 1 항에 있어서,
N 전력 도메인들에 대한 N 분할된 스누프 디렉토리들 및 M 전력 도메인들에 대한 M 분할된 스누프 디렉토리들을 인에이블하는 단계로서, 상기 N 및 M 은 1 보다 큰 정수들이고, 상기 N 전력 도메인들은 N 복수의 프로세서 캐시들을 포함하고 상기 M 전력 도메인들은 적어도 하나의 프로세서 캐시를 포함하는, 상기 N 전력 도메인들에 대한 N 분할된 스누프 디렉토리들 및 M 전력 도메인들에 대한 M 분할된 스누프 디렉토리들을 인에이블하는 단계;
상기 N 전력 도메인들에서의 복수의 프로세서 캐시들의 임의의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 단계; 및
상기 N 전력 도메인들에서의 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는 상기 N 분할된 스누프 디렉토리들 중 임의의 분할된 스누프 디렉토리를 디스에이블하는 단계를 더 포함하는, 다중의 분할된 스누프 디렉토리들을 구현하는 방법. - 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스로서,
복수의 프로세서 캐시들을 포함하는 제 1 전력 도메인;
적어도 하나의 프로세서 캐시를 포함하는 제 2 전력 도메인;
적어도 제 1 멀티코어 프로세서를 갖는 상기 제 1 전력 도메인에 대한 제 1 태그 접근법 스누프 디렉토리 아키텍처로 구성된 제 1 분할된 스누프 디렉토리 및 적어도 제 2 멀티코어 프로세서를 갖는 상기 제 2 전력 도메인에 대한 제 2 태그 접근법 스누프 디렉토리 아키텍처로 구성된 제 2 분할된 스누프 디렉토리를 갖는 코히어런트 인터커넥트로서, 제 1 태그 접근법은 제 2 태그 접근법과는 상이한, 상기 코히어런트 인터커넥트;
상기 제 1 전력 도메인에 통신가능하게 접속되고 상기 코히어런트 인터커넥트에 통신가능하게 접속된 제 1 프로세싱 디바이스; 및
상기 제 2 전력 도메인에 통신가능하게 접속되고 상기 코히어런트 인터커넥트에 통신가능하게 접속된 제 2 프로세싱 디바이스를 포함하고,
상기 제 1 프로세싱 디바이스는,
상기 제 1 분할된 스누프 디렉토리를 인에이블하는 것;
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 것; 및
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있음을 결정하는 것에 응답하여 상기 제 1 분할된 스누프 디렉토리를 디스에이블하는 것
을 포함하는 동작들을 수행하도록 구성되는, 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스. - 제 10 항에 있어서,
상기 제 1 전력 도메인에 통신가능하게 접속되고 상기 제 1 프로세싱 디바이스에 통신가능하게 접속된 제 3 프로세싱 디바이스를 더 포함하고,
상기 제 3 프로세싱 디바이스는,
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 조건을 검출하는 것; 및
상기 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 상기 조건을 검출하는 것에 응답하여 상기 제 1 분할된 스누프 디렉토리를 저전력 상태로 변경하기 위한 요청을 상기 제 1 프로세싱 디바이스로 전송하는 것
을 포함하는 동작들을 수행하도록 구성되는, 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스. - 제 11 항에 있어서,
상기 제 1 프로세싱 디바이스는, 상기 제 1 분할된 스누프 디렉토리를 저전력 상태로 변경하기 위한 상기 요청을 수신하는 것을 더 포함하는 동작들을 수행하도록 구성되고,
상기 제 1 프로세싱 디바이스는, 상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 것이 상기 제 1 분할된 스누프 디렉토리를 저전력 상태로 변경하기 위한 상기 요청을 수신하는 것에 응답하여 상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 것을 포함하도록 하는 동작들을 수행하도록 구성되는, 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스. - 제 10 항에 있어서,
상기 제 1 프로세싱 디바이스는, 상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 조건을 수신하는 것을 더 포함하는 동작들을 수행하도록 구성되고,
상기 제 1 프로세싱 디바이스는, 상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 것이 상기 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 상기 조건을 검출하는 것에 응답하여 상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 것을 포함하도록 하는 동작들을 수행하도록 구성되는, 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스. - 제 13 항에 있어서,
상기 제 1 프로세싱 디바이스는, 상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 조건을 수신하는 것이 상기 제 1 전력 도메인으로부터 상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들 중 상기 적어도 하나의 프로세서 캐시의 전력 상태를 표시하는 신호를 수신하는 것을 포함하도록 하는 동작들을 수행하도록 구성되는, 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스. - 제 10 항에 있어서,
상기 제 1 프로세싱 디바이스는, 상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시가 고전력 상태에 있음을 결정하는 것에 응답하여 상기 제 1 분할된 스누프 디렉토리를 인에이블된 채로 남겨두는 것을 더 포함하는 동작들을 수행하도록 구성되는, 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스. - 제 10 항에 있어서,
상기 제 1 전력 도메인에 통신가능하게 접속되고 상기 제 1 프로세싱 디바이스에 통신가능하게 접속된 제 3 프로세싱 디바이스를 더 포함하고,
상기 제 3 프로세싱 디바이스는, 상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시를 고전력 상태로 변경하기 위한 조건을 검출하는 것을 포함하는 동작들을 수행하도록 구성되고; 그리고
상기 제 1 프로세싱 디바이스는, 상기 제 3 프로세싱 디바이스가 상기 적어도 하나의 프로세서 캐시를 고전력 상태로 변경하기 위한 상기 조건을 검출하는 것 및 상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들이 저전력 상태에 있음을 결정하는 것에 응답하여 상기 제 1 분할된 스누프 디렉토리를 인에이블하는 것을 더 포함하는 동작들을 수행하도록 구성되는, 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스. - 제 16 항에 있어서,
저전력 상태는 "OFF" 상태 및 "RET" (보류) 상태 중 하나를 포함하고; 그리고
고전력 상태는 "ON" 상태를 포함하는, 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스. - 제 16 항에 있어서,
상기 제 1 프로세싱 디바이스 및 상기 제 3 프로세싱 디바이스는 동일한 프로세싱 디바이스인, 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스. - 제 10 항에 있어서,
복수의 프로세서 캐시들을 포함하는 N 전력 도메인들; 및
적어도 하나의 프로세서 캐시를 포함하는 M 전력 도메인들을 더 포함하고,
상기 제 1 프로세싱 디바이스는,
상기 N 전력 도메인들에 대한 N 분할된 스누프 디렉토리들 및 상기 M 전력 도메인들에 대한 M 분할된 스누프 디렉토리들을 인에이블하는 것으로서, 상기 N 및 M 은 1 보다 큰 정수들인, 상기 N 전력 도메인들에 대한 N 분할된 스누프 디렉토리들 및 상기 M 전력 도메인들에 대한 M 분할된 스누프 디렉토리들을 인에이블하는 것;
상기 N 전력 도메인들에서의 복수의 프로세서 캐시들의 임의의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 것; 및
상기 N 전력 도메인들에서의 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는 상기 N 분할된 스누프 디렉토리들 중 임의의 분할된 스누프 디렉토리를 디스에이블하는 것
을 더 포함하는 동작들을 수행하도록 구성되는, 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스. - 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스로서,
적어도 제 1 멀티코어 프로세서를 갖는 제 1 전력 도메인에 대한 제 1 태그 접근법 스누프 디렉토리 아키텍처로 구성된 제 1 분할된 스누프 디렉토리 및 적어도 제 2 멀티코어 프로세서를 갖는 제 2 전력 도메인에 대한 제 2 태그 접근법 스누프 디렉토리 아키텍처로 구성된 제 2 분할된 스누프 디렉토리를 인에이블하는 수단으로서, 상기 제 1 전력 도메인은 복수의 프로세서 캐시들을 포함하고, 상기 제 2 전력 도메인은 적어도 하나의 프로세서 캐시를 포함하고, 제 1 태그 접근법은 제 2 태그 접근법과는 상이한, 상기 제 1 분할된 스누프 디렉토리 및 제 2 분할된 스누프 디렉토리를 인에이블하는 수단;
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 수단; 및
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있음을 결정하는 것에 응답하여 상기 제 1 분할된 스누프 디렉토리를 디스에이블하는 수단을 포함하는, 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스. - 제 20 항에 있어서,
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 조건을 검출하는 수단; 및
상기 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 상기 조건을 검출하는 것에 응답하여 상기 제 1 분할된 스누프 디렉토리를 저전력 상태로 변경하기 위한 요청을 전송하는 수단을 더 포함하는, 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스. - 제 21 항에 있어서,
상기 제 1 분할된 스누프 디렉토리를 저전력 상태로 변경하기 위한 상기 요청을 수신하는 수단을 더 포함하고,
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 수단은 상기 제 1 분할된 스누프 디렉토리를 저전력 상태로 변경하기 위한 상기 요청을 수신하는 것에 응답하여 상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 수단을 포함하는, 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스. - 제 20 항에 있어서,
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 조건을 수신하는 수단을 더 포함하고,
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 수단은 상기 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 상기 조건을 검출하는 것에 응답하여 상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 수단을 포함하는, 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스. - 제 23 항에 있어서,
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 조건을 수신하는 수단은 상기 제 1 전력 도메인으로부터 상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들 중 상기 적어도 하나의 프로세서 캐시의 전력 상태를 표시하는 신호를 수신하는 수단을 포함하는, 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스. - 제 20 항에 있어서,
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시가 고전력 상태에 있음을 결정하는 것에 응답하여 상기 제 1 분할된 스누프 디렉토리를 인에이블된 채로 남겨두는 수단을 더 포함하는, 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스. - 제 25 항에 있어서,
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시를 고전력 상태로 변경하기 위한 조건을 검출하는 수단; 및
상기 적어도 하나의 프로세서 캐시를 고전력 상태로 변경하기 위한 상기 조건을 검출하는 것 및 상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들이 저전력 상태에 있음을 결정하는 것에 응답하여 상기 제 1 분할된 스누프 디렉토리를 인에이블하는 수단을 더 포함하는, 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스. - 제 26 항에 있어서,
저전력 상태는 "OFF" 상태 및 "RET" (보류) 상태 중 하나를 포함하고; 그리고
고전력 상태는 "ON" 상태를 포함하는, 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스. - 제 20 항에 있어서,
N 전력 도메인들에 대한 N 분할된 스누프 디렉토리들 및 M 전력 도메인들에 대한 M 분할된 스누프 디렉토리들을 인에이블하는 수단으로서, 상기 N 및 M 은 1 보다 큰 정수들이고, 상기 N 전력 도메인들은 N 복수의 프로세서 캐시들을 포함하고 상기 M 전력 도메인들은 적어도 하나의 프로세서 캐시를 포함하는, 상기 N 전력 도메인들에 대한 N 분할된 스누프 디렉토리들 및 M 전력 도메인들에 대한 M 분할된 스누프 디렉토리들을 인에이블하는 수단;
상기 N 전력 도메인들에서의 복수의 프로세서 캐시들의 임의의 프로세서 캐시들의 모든 프로세서 캐시들이 모두 저전력 상태에 있는지 여부를 결정하는 수단; 및
상기 N 전력 도메인들에서의 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는 상기 N 분할된 스누프 디렉토리들 중 임의의 분할된 스누프 디렉토리를 디스에이블하는 수단을 더 포함하는, 다중의 분할된 스누프 디렉토리들을 구현하도록 구성된 컴퓨팅 디바이스. - 저장된 프로세서 실행가능 명령들을 갖는 비일시적인 프로세서 판독가능 저장 매체로서,
상기 저장된 프로세서 실행가능 명령들은 컴퓨팅 디바이스의 프로세서로 하여금
적어도 제 1 멀티코어 프로세서를 갖는 제 1 전력 도메인에 대한 제 1 태그 접근법 스누프 디렉토리 아키텍처로 구성된 제 1 분할된 스누프 디렉토리 및 적어도 제 2 멀티코어 프로세서를 갖는 제 2 전력 도메인에 대한 제 2 태그 접근법 스누프 디렉토리 아키텍처로 구성된 제 2 분할된 스누프 디렉토리를 인에이블하는 것으로서, 상기 제 1 전력 도메인은 복수의 프로세서 캐시들을 포함하고, 상기 제 2 전력 도메인은 적어도 하나의 프로세서 캐시를 포함하고, 제 1 태그 접근법은 제 2 태그 접근법과는 상이한, 상기 제 1 분할된 스누프 디렉토리 및 제 2 분할된 스누프 디렉토리를 인에이블하는 것;
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 것; 및
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있음을 결정하는 것에 응답하여 상기 제 1 분할된 스누프 디렉토리를 디스에이블하는 것
을 포함하는 동작들을 수행하게 하도록 구성되는, 비일시적인 프로세서 판독가능 저장 매체. - 제 29 항에 있어서,
상기 저장된 프로세서 실행가능 명령들은 상기 프로세서로 하여금
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들 중 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 조건을 검출하는 것;
상기 적어도 하나의 프로세서 캐시를 저전력 상태로 변경하기 위한 상기 조건을 검출하는 것에 응답하여 상기 제 1 분할된 스누프 디렉토리를 저전력 상태로 변경하기 위한 요청을 전송하는 것; 및
상기 제 1 분할된 스누프 디렉토리를 저전력 상태로 변경하기 위한 상기 요청을 수신하는 것
을 더 포함하는 동작들을 수행하게 하도록 구성되고,
상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 것은 상기 제 1 분할된 스누프 디렉토리를 저전력 상태로 변경하기 위한 상기 요청을 수신하는 것에 응답하여 상기 제 1 전력 도메인에서의 상기 복수의 프로세서 캐시들의 모든 프로세서 캐시들이 저전력 상태에 있는지 여부를 결정하는 것을 포함하는, 비일시적인 프로세서 판독가능 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/259,697 | 2016-09-08 | ||
US15/259,697 US10606339B2 (en) | 2016-09-08 | 2016-09-08 | Coherent interconnect power reduction using hardware controlled split snoop directories |
PCT/US2017/050450 WO2018049010A1 (en) | 2016-09-08 | 2017-09-07 | Coherent interconnect power reduction using hardware controlled split snoop directories |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190046840A KR20190046840A (ko) | 2019-05-07 |
KR102132571B1 true KR102132571B1 (ko) | 2020-07-09 |
Family
ID=59901602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197006539A KR102132571B1 (ko) | 2016-09-08 | 2017-09-07 | 하드웨어 제어형 분할된 스누프 디렉토리들을 사용한 코히어런트 인터커넥트 전력 감소 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10606339B2 (ko) |
EP (1) | EP3510487B1 (ko) |
JP (1) | JP6748298B2 (ko) |
KR (1) | KR102132571B1 (ko) |
CN (1) | CN109690502A (ko) |
BR (1) | BR112019004001A8 (ko) |
WO (1) | WO2018049010A1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6772007B2 (ja) * | 2016-09-12 | 2020-10-21 | キヤノン株式会社 | 情報処理装置及びその制御方法、コンピュータプログラム |
KR102659679B1 (ko) | 2019-04-22 | 2024-04-19 | 주식회사 엘지에너지솔루션 | 배터리의 미분 전압 커브를 결정하기 위한 장치 및 방법과, 상기 장치를 포함하는 배터리 팩 |
US11354239B2 (en) * | 2020-09-18 | 2022-06-07 | Microsoft Technology Licensing, Llc | Maintaining domain coherence states including domain state no-owned (DSN) in processor-based devices |
CN117931529B (zh) * | 2024-03-21 | 2024-08-27 | 上海励驰半导体有限公司 | 启动管理方法和设备、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140189411A1 (en) | 2013-01-03 | 2014-07-03 | Apple Inc. | Power control for cache structures |
US20140281275A1 (en) | 2013-03-13 | 2014-09-18 | Applied Micro Circuits Corporation | Broadcast messaging and acknowledgment messaging for power management in a multiprocessor system |
US20160188471A1 (en) | 2014-12-31 | 2016-06-30 | Arteris, Inc. | Configurable snoop filters for cache coherent systems |
US20160314024A1 (en) | 2015-04-24 | 2016-10-27 | Mediatek Inc. | Clearance mode in a multicore processor system |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2403561A (en) * | 2003-07-02 | 2005-01-05 | Advanced Risc Mach Ltd | Power control within a coherent multi-processor system |
US7089361B2 (en) | 2003-08-07 | 2006-08-08 | International Business Machines Corporation | Dynamic allocation of shared cache directory for optimizing performance |
US7752474B2 (en) | 2006-09-22 | 2010-07-06 | Apple Inc. | L1 cache flush when processor is entering low power mode |
CN101689106B (zh) * | 2007-06-12 | 2013-10-09 | 松下电器产业株式会社 | 多处理器控制装置、多处理器控制方法以及多处理器控制电路 |
US8527709B2 (en) * | 2007-07-20 | 2013-09-03 | Intel Corporation | Technique for preserving cached information during a low power mode |
US20110103391A1 (en) * | 2009-10-30 | 2011-05-05 | Smooth-Stone, Inc. C/O Barry Evans | System and method for high-performance, low-power data center interconnect fabric |
US8392665B2 (en) * | 2010-09-25 | 2013-03-05 | Intel Corporation | Allocation and write policy for a glueless area-efficient directory cache for hotly contested cache lines |
US8918591B2 (en) * | 2010-10-29 | 2014-12-23 | Freescale Semiconductor, Inc. | Data processing system having selective invalidation of snoop requests and method therefor |
US20130318308A1 (en) | 2012-05-24 | 2013-11-28 | Sonics, Inc. | Scalable cache coherence for a network on a chip |
US9170955B2 (en) * | 2012-11-27 | 2015-10-27 | Intel Corporation | Providing extended cache replacement state information |
US9304923B2 (en) | 2013-03-12 | 2016-04-05 | Arm Limited | Data coherency management |
US9361236B2 (en) | 2013-06-18 | 2016-06-07 | Arm Limited | Handling write requests for a data array |
US9342134B2 (en) * | 2013-09-27 | 2016-05-17 | Intel Corporation | Power consumption reduction in a computing device |
US9665153B2 (en) | 2014-03-21 | 2017-05-30 | Intel Corporation | Selecting a low power state based on cache flush latency determination |
EP3129886B1 (en) * | 2014-12-14 | 2019-10-02 | VIA Alliance Semiconductor Co., Ltd. | Dynamic cache replacement way selection based on address tag bits |
-
2016
- 2016-09-08 US US15/259,697 patent/US10606339B2/en active Active
-
2017
- 2017-09-07 JP JP2019512811A patent/JP6748298B2/ja active Active
- 2017-09-07 WO PCT/US2017/050450 patent/WO2018049010A1/en unknown
- 2017-09-07 BR BR112019004001A patent/BR112019004001A8/pt unknown
- 2017-09-07 CN CN201780054611.6A patent/CN109690502A/zh active Pending
- 2017-09-07 EP EP17768921.3A patent/EP3510487B1/en active Active
- 2017-09-07 KR KR1020197006539A patent/KR102132571B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140189411A1 (en) | 2013-01-03 | 2014-07-03 | Apple Inc. | Power control for cache structures |
US20140281275A1 (en) | 2013-03-13 | 2014-09-18 | Applied Micro Circuits Corporation | Broadcast messaging and acknowledgment messaging for power management in a multiprocessor system |
US20160188471A1 (en) | 2014-12-31 | 2016-06-30 | Arteris, Inc. | Configurable snoop filters for cache coherent systems |
US20160314024A1 (en) | 2015-04-24 | 2016-10-27 | Mediatek Inc. | Clearance mode in a multicore processor system |
Also Published As
Publication number | Publication date |
---|---|
JP2019534501A (ja) | 2019-11-28 |
EP3510487A1 (en) | 2019-07-17 |
CN109690502A (zh) | 2019-04-26 |
US10606339B2 (en) | 2020-03-31 |
US20180067542A1 (en) | 2018-03-08 |
EP3510487B1 (en) | 2023-02-22 |
KR20190046840A (ko) | 2019-05-07 |
JP6748298B2 (ja) | 2020-08-26 |
BR112019004001A2 (pt) | 2019-05-28 |
WO2018049010A1 (en) | 2018-03-15 |
BR112019004001A8 (pt) | 2023-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10503656B2 (en) | Performance by retaining high locality data in higher level cache memory | |
KR102132571B1 (ko) | 하드웨어 제어형 분할된 스누프 디렉토리들을 사용한 코히어런트 인터커넥트 전력 감소 | |
US10339058B2 (en) | Automatic cache coherency for page table data | |
KR102062507B1 (ko) | 동적 입력/출력 코히어런시 | |
US20190266098A1 (en) | Progressive Flush of Cache Memory | |
US20190087344A1 (en) | Reducing Clean Evictions In An Exclusive Cache Memory Hierarchy | |
US9612971B2 (en) | Supplemental write cache command for bandwidth compression | |
US9858196B2 (en) | Power aware padding | |
CN109716305B (zh) | 实现异步高速缓存维护操作的方法、计算设备以及介质 | |
KR20230084493A (ko) | 판독 선택적 커맨드들 및 기록 선택적 커맨드들 | |
EP3497563A1 (en) | Fine-grained power optimization for heterogeneous parallel constructs | |
KR102008131B1 (ko) | 하이브리드 입력/출력 코히어런트 기록 | |
JP2018511111A (ja) | ビクティムキャッシュモードを向上させるためのプロセススケジューリング | |
US11604505B2 (en) | Processor security mode based memory operation management | |
US11493986B2 (en) | Method and system for improving rock bottom sleep current of processor memories | |
US11907138B2 (en) | Multimedia compressed frame aware cache replacement policy | |
US20240061795A1 (en) | Mechanism To Reduce Exit Latency For Deeper Power Saving Modes L2 In PCIe |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E701 | Decision to grant or registration of patent right |