KR101804677B1 - 트랜잭션적인 전력 관리를 수행하기 위한 하드웨어 장치들 및 방법들 - Google Patents

트랜잭션적인 전력 관리를 수행하기 위한 하드웨어 장치들 및 방법들 Download PDF

Info

Publication number
KR101804677B1
KR101804677B1 KR1020160065505A KR20160065505A KR101804677B1 KR 101804677 B1 KR101804677 B1 KR 101804677B1 KR 1020160065505 A KR1020160065505 A KR 1020160065505A KR 20160065505 A KR20160065505 A KR 20160065505A KR 101804677 B1 KR101804677 B1 KR 101804677B1
Authority
KR
South Korea
Prior art keywords
power
transaction
power transaction
conflict
thread
Prior art date
Application number
KR1020160065505A
Other languages
English (en)
Other versions
KR20170001577A (ko
Inventor
라지브 디. 무랄리드하르
하리나라야난 세샤드리
니베다 크리쉬나쿠마르
유브딥 싱흐
수케투 알. 파티왈라
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20170001577A publication Critical patent/KR20170001577A/ko
Application granted granted Critical
Publication of KR101804677B1 publication Critical patent/KR101804677B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

트랜잭션적인 전력 관리와 관련된 방법들 및 장치들이 기술된다. 일 실시예에서, 하드웨어 장치는 코어를 갖는 하드웨어 프로세서, 각각의 전력 도메인에 대한 전력 관리 명령에 응답하여 복수의 전력 상태들 중 하나로 천이하는 복수의 전력 도메인들, 및 전력 트랜잭션 유닛을 포함하고, 전력 트랜잭션 유닛은, 동시 실행을 위해 제1 전력 관리 명령을 제1 전력 트랜잭션으로서 할당하고 제2 전력 관리 명령을 제2 전력 트랜잭션으로서 할당하고, 제1 전력 트랜잭션과 제2 전력 트랜잭션 사이에 충돌이 없을 때 제1 전력 트랜잭션과 제2 전력 트랜잭션의 커미트를 수행하고, 제1 전력 트랜잭션과 제2 전력 트랜잭션 사이에 충돌이 있을 때 제1 전력 트랜잭션의 중단과 제2 전력 트랜잭션의 커미트를 수행한다.

Description

트랜잭션적인 전력 관리를 수행하기 위한 하드웨어 장치들 및 방법들{HARDWARE APPARATUSES AND METHODS TO PERFORM TRANSACTIONAL POWER MANAGEMENT}
본 개시는 일반적으로 전자 공학에 관련되고, 더 구체적으로, 본 개시의 실시예는 트랜잭션적인 전력 관리를 수행하기 위한 전력 트랜잭션 유닛을 가진 하드웨어 프로세서에 관련된다.
프로세서, 또는 프로세서들의 세트는 명령어 세트, 예를 들어, 명령어 세트 아키텍처(ISA)로부터의 명령어들을 실행한다. 명령어 세트는 프로그래밍과 관련된 컴퓨터 아키텍처의 일부이고, 일반적으로 원시 데이터 타입들, 명령어들, 레지스터 아키텍처, 어드레싱 모드들, 메모리 아키텍처, 인터럽트, 및 예외처리, 및 외부 입력 및 출력(Input and Output, I/O)을 포함한다.
본 개시는 첨부된 도면들의 도들에 제한적으로가 아니라 예시적으로 도시되고, 도면들에 있어서 유사한 참조번호들은 유사한 요소들을 지시한다.
도 1은 본 개시의 실시예들에 따른 하드웨어 장치를 도시한다.
도 2는 본 개시의 실시예들에 따른 집적 회로를 도시한다.
도 3은 본 개시의 실시예들에 따른 집적 회로를 도시한다.
도 4는 본 개시의 실시예들에 따른 전력 트랜잭션들이 없는 시스템에 대한 전력 관리 코드를 도시한다.
도 5는 본 개시의 실시예들에 따른 전력 트랜잭션들이 있는 시스템에 대한 전력 관리 코드를 도시한다.
도 6은 본 개시의 실시예들에 따른 원자적인 전력 트랜잭션들이 있는 그리고 원자적인 전력 트랜잭션들이 없는 타이밍 개략도를 도시한다.
도 7은 본 개시의 실시예들에 따른 흐름도를 도시한다.
도 8은 본 개시의 실시예들에 따른 흐름도를 도시한다.
도 9a는 본 개시의 실시예들에 따라 예시적인 순차적 파이프라인 및 예시적인 레지스터 리네이밍, 비순차적 발행/실행 파이프라인 둘 모두를 도시하는 블록도이다.
도 9b는 본 개시의 실시예들에 따라 프로세서에 포함될 순차적 아키텍처 코어의 예시적인 실시예 및 예시적인 레지스터 리네이밍, 비순차적 발행/실행 아키텍처 코어 둘 모두를 도시하는 블록도이다.
도 10a는 본 개시의 실시예들에 따른, 단일 프로세서 코어를, 온-다이(on-die) 상호접속 네트워크로의 그것의 접속 및 레벨 2(L2) 캐시의 그것의 로컬 서브세트와 함께 도시하는 블록도이다.
도 10b는 본 개시의 실시예들에 따른 도 10a의 프로세서 코어의 일부의 확대도이다.
도 11은 본 개시의 실시예들에 따른, 하나 초과의 코어를 가질 수 있고, 통합된 메모리 제어기를 가질 수 있고, 통합된 그래픽을 가질 수 있는 프로세서의 블록도이다.
도 12는 본 개시의 일 실시예에 따른 시스템의 블록도이다.
도 13은 본 개시의 실시예에 따른 더 구체적 예시적인 시스템의 블록도이다.
도 14는 본 개시의 실시예에 따른 제2 더 구체적 예시적인 시스템을 도시하는 블록도이다.
도 15는 본 개시의 실시예에 따른 시스템 온 칩(system on a chip, SoC)을 도시하는 블록도이다.
도 16은 본 개시의 실시예들에 따른 소스 명령어 세트 내의 바이너리 명령어들을 타겟 명령어 세트 내의 바이너리 명령어들로 변환하는 소프트웨어 명령어 변환기의 사용을 대조하는 블록도이다.
다음의 설명에서, 다수의 특정 상세 사항들이 설명된다. 그러나, 본 개시의 실시예들은 이러한 상세 사항들 없이도 실시될 수 있다는 것이 이해된다. 다른 경우들에서, 공지된 회로들, 구조들, 및 기술들은 이 설명의 이해를 모호하게 하지 않기 위해 상세히 나타내어지지 않는다.
본 명세서에서 "일 실시예", "실시예", 또는 "예시적인 실시예" 등을 참조하는 것은 기술되는 실시예가 특별한 특징, 구조, 또는 특성을 포함할 수 있음을 지시하지만, 모든 실시예가 반드시 그 특별한 특징, 구조, 또는 특성을 포함하는 것은 아닐 수 있다. 또한, 그러한 문구들이 반드시 동일 실시예를 참조하는 것은 아니다. 또한, 특별한 특징, 구조, 또는 특성이 실시예와 관련하여 설명될 때, 명백히 기술되든지 아니든지 간에, 다른 실시예들과 관련하여 그러한 특징, 구조, 또는 특성에 영향을 주는 것은 통상의 기술자의 지식 내에 있다는 점을 진술한다.
(예를 들어, 하드웨어) 프로세서, 또는 프로세서들의 세트는 명령어 세트, 예를 들어, 명령어 세트 아키텍처(ISA)로부터의 명령어들을 실행한다. 명령어 세트는 프로그래밍과 관련된 컴퓨터 아키텍처의 일부이고, 일반적으로 원시 데이터 타입들, 명령어들, 레지스터 아키텍처, 어드레싱 모드들, 메모리 아키텍처, 인터럽트, 및 예외처리, 및 외부 입력 및 출력(I/O)을 포함한다. 본 명세서에서 명령어라는 용어는 매크로-명령어, 예를 들어, 실행을 위해 프로세서에 제공되는 명령어, 또는 마이크로-명령어, 예를 들어, 매크로-명령어들을 디코딩하는 프로세서의 디코드 유닛(디코더)으로부터 유래하는 명령어를 지칭할 수 있다는 점을 유의해야 한다. 프로세서(예를 들어, 명령어들을 디코딩 및/또는 실행하기 위한 하나 이상의 코어들을 가짐)는 예를 들어, 산술, 논리, 또는 다른 기능들을 수행할 때 데이터에 작용할 수 있다.
하드웨어 프로세서(예를 들어, 컴퓨팅 시스템의 일부로서)는, 예를 들어, ACPI(Advanced Configuration and Power Interface) 규격에 따라, 그것의 컴포넌트들(예를 들어, 코어들 및/또는 디바이스들) 중 하나 이상의 전력을 전력 상태들 간에 천이할 수 있다. 일 실시예에서, 컴포넌트는 다중 작동 상태들, 휴지 상태, 또는 오프 상태 중 하나에서 전력을 공급받을 수 있다. 예를 들어, 제1 전력 상태는 최대 전력 및 주파수일 수 있고, 제2 전력 상태는 더 낮은 전력 및 주파수일 수 있다(예를 들어, 휴지가 아님). 전력 상태 천이는 예를 들어, 요청시에, 제1 상태로부터 제2 상태로 천이를 수행하기 위해 (예를 들어, 전력 상태 천이를 야기하도록 다중 명령어들이 실행되는 것으로부터) 다중 클록 사이클들이 소요될 수 있다. 전력은 배터리 또는 다른 전력원에 의해 제공될 수 있다. 전력 관리 유닛은 프로세서 및/또는 그것의 디바이스들(예를 들어, 디스플레이, 입/출력(I/O) 포트들, 기타 등등)을, 수행될 동작들이 없을 때(예를 들어, 프로세서의 코어에 의해 실행되어야 할 명령어들이 없음), 다양한 전력 상태들 예를 들어, 휴지 또는 오프 상태에 배치함으로써 전력을 절약할 수 있다. 특정 실시예들에서, 전력 관리 유닛은 전력 상태 결정 및/또는 천이를 행함으로써 전력 소비를 관리할 수 있다. 부가적으로 또는 대안적으로, 전력 관리는 운영 시스템(OS)에 의해, 예를 들어, 그의 전력 상태를 천이(예를 들어, 변경)시킬 디바이스와 OS 간에 통신하는 드라이버를 통해 구현될 수 있다.
본 개시의 특정 실시예들에서, 전력 관리는 소프트웨어(예를 들어, OS 및/또는 애플리케이션들)와 공존하는 프로세서(예를 들어, 저전력 마이크로 컨트롤러(들))를 활용할 수 있다. 본 개시의 특정 실시예들에서(예를 들어, 에너지 효율을 위해), OS는 그것의 도메인 내에 전력 제어를 분산시킬 수 있음으로써, 예를 들어, 각각의 디바이스 도메인이 그 자신의 상태를 제어하도록 놔 둘 수 있다. 그러나, 전력 관리 흐름의 관점에서, 이것은, 예를 들어, 전력 관리 유닛에 의해, 전력 관리(예를 들어, 천이) 명령들이 발행 및/또는 실행됨에 따라, 경합 및 경쟁 컨디션들로 유도할 수 있다. 이것은 예를 들어, 다른 전력 천이(예를 들어, 프로세스)가 발생하는 동안 하나의 전력 천이 요청을 스톨 또는 취소하기 위해, 로크(들)를 거는 것에 의해(예를 들어, 세마포어들 또는 다른 수단을 이용하여) 해결될 수 있다. 이것은, 예를 들어, 로크가 전체 전력 천이 동안 유지된다면(예를 들어, 디바이스 레벨 제어, 또는 디바이스들의 세트, 또는 플랫폼에 대해), 에너지 비효율성을 유발할 수 있다. 본 개시의 특정 실시예들은 예를 들어, 로크를 활용하지 않은 채, 스케일 가능한 전력 관리를 제공할 수 있다. 본 개시의 특정 실시예들은 예를 들어, OS에서 또는 전력 관리 유닛(예를 들어, 프로세서의 전력 관리 제어기(PMC) 또는 저장소 제어기 유닛(SCU)) 또는 양쪽의 조합에 의해, 거친 로크들 또는 동기화를 활용하지 않은 채 전력 관리를 제공할 수 있다. 본 개시의 특정 실시예들은, 한번에 단지 하나의 전력 천이(예를 들어, 요청)만이 하드웨어에 전송될 수 있는, OS에 의한 (예를 들어, 하이 레벨, 거친) 로크를 가하지 않은 채 전력 관리를 제공할 수 있다.
본 개시의 특정 실시예들은 트랜잭션적인 전력 관리를 수행하기 위한 전력 관리 장치들(예를 들어, 프로세서(들) 및/또는 시스템(들)-온-어-칩(SOC)) 및 방법들을 포함한다. 예를 들어, (예를 들어, 디바이스, 컴포넌트, 및/또는 전력 도메인의) 각각의 전력 상태 천이는 트랜잭션으로서 표현될 수 있다. 일 실시예에서, (예를 들어, 하나의 상태로부터 상이한 상태로) 전력 상태 천이는, 예를 들어, 전력 관리 유닛의 제어 입력(예를 들어, 각각의 전력 도메인에 대한 입력)에 전송된 전력 관리 명령의 수신에 의해 요청될 수 있다. 본 개시의 특정 실시예들은 전력 관리 명령들을 병렬화하기 위한 전력 관리 장치들 및 방법들을 포함한다. 본 개시의 특정 실시예들은 트랜잭션적인 전력 관리를 수행하기 위한 트랜잭션적인 메모리 (예를 들어, 관리) 장치들 및 방법들을 포함한다. 본 개시에 따른 전력 관리는 전력 관리 하드웨어, 소프트웨어, 펌웨어, 또는 그들의 임의의 조합들을 포함할 수 있다.
일 실시예에서, 트랜잭션은 원자성(atomicity), 일관성(consistency), 고립성(isolation), 및 지속성(durability)(ACID) 특성들 중 하나, 전부, 또는 임의의 조합에 따라 보장된다. 원자성(예를 들어, 원자적임)은 일반적으로 트랜잭션이 "전부 아니면 전무"인 것을 지칭할 수 있다. 예를 들어, 트랜잭션의 일 부분이 실패하면, 전체 트랜잭션이 실패하고, 연산되었던 데이터는 변화 없이 남겨진다. 원자적인 시스템은 예를 들어, 전력 어보트들, 에러들, 및 파손들을 포함한, 각각의 그리고 모든 상황에서 원자성을 보장할 수 있다. 트랜잭션의 외부에서, 커미트된 트랜잭션은 (예를 들어, 연산되는 데이터에 대한 그것의 영향에 의해) 나누어질 수 없는 것("원자적")으로 보이고 어보트된(aborted) (예를 들어, 커미트되지 않은) 트랜잭션은 발생하지 않았던 것으로 보인다. 일관성은 일반적으로 임의의 트랜잭션이 데이터를 하나의 유효한 상태로부터 다른 상태로 가져가는 것을 지칭할 수 있다. 예를 들어, 임의의 기입된 데이터는, 예를 들어, 제약들, 캐스캐이드들, 트리거들, 및 그들의 임의의 조합들을 포함한, 모든 정의된 규칙들에 따라 유효하게 된다. 이것은 예를 들어, 애플리케이션-레벨 코드의 책임일 수 있는 모든 방식들에서의 트랜잭션의 정확성을 보장할 수 있으나, 임의의 프로그래밍 에러들이 임의의 정의된 규칙들의 위반을 초래하지 않을 것을 보장할 수 있다. 고립성은 일반적으로, 그 트랜잭션들이 직렬로 예를 들어, 차례 차례로, 실행되었다면, 얻어졌을 동일 시스템 상태를 초래하는 트랜잭션들(예를 들어, 스레드들)의 동시 실행을 지칭할 수 있다. 동시성 제어는 고립성을 제공할 수 있다. 예를 들어, 동시성 제어 방법에 따라서는, 미완료 트랜잭션의 효과들이 다른 트랜잭션(들)에게 가시적이지 않을 수 있다. 지속성은 일반적으로, 일단 트랜잭션이 커미트되면, 예를 들어, 전력 손실, 파손들, 또는 에러들의 이벤트 때에도, 그대로 남아 있는 것을 지칭할 수 있다. 예를 들어, 전력 손실을 방지하기 위해, 트랜잭션(또는 그들의 효과들)은 불휘발성(예를 들어, 영구적) 메모리에 기록될 수 있다.
본 개시의 특정 실시예들은 전력 상태 천이(들)를 트랜잭션(들)으로서 나타내는 전력 관리 장치들 및 방법들을 포함한다. 이것은 디바이스들(예를 들어, 프로세서, 시스템 온 어 칩(SoC) 및/또는 플랫폼)의 전력 상태들의 의미적으로 정확한 (예를 들어, 다중-프로세서) 뷰를 허용할 수 있다. 부가적으로, 전력 상태 천이를 전력 트랜잭션으로서 나타내는 것은 전력 관리 천이를 모델링하고, 특정하고, 검증하기 위한 보다 정연한, 의미적으로 정확한 방법을 허용할 수 있다. 특정 실시예들에서, 전력 관리 천이들을 트랜잭션적인 메모리 시퀀스들로서 구현하는 것은 디바이스들, SOC들, 및/또는 플랫폼들의 전력 상태들의 의미적으로 정확한 다중-프로세서 뷰를 허용할 수 있다. 부가적으로, 전력 상태 천이들을 트랜잭션들로서 나타내는 것은 전력 (예를 들어, 관리) 천이들을 모델링하고, 특정하고, 검증하기 위한 보다 정연한, 의미적으로 정확한 방법을 가져올 수 있다. 특정 실시예들에서, 전력 천이를 트랜잭션들로서 나타내는 것은 하드웨어, 펌웨어, 및 소프트웨어에서 전력 시퀀스들을 특정하기 위한 강력한 방법일 수 있으며, 예를 들어, 디바이스들, SOC들 및/또는 플랫폼들의 전력 관리 검증에 도움을 주는 의미적으로 통일성 있는 표현들일 수 있다.
일 실시예에서, 전력 관리 장치들 및 방법들은 코드(예를 들어, 스레드 또는 스레드들)의 영역을 (예를 들어, 단일) 트랜잭션으로서 선언할 수 있다. (예를 들어, 트랜잭션이 성공할 때) 트랜잭션은 메모리로의 모든 결과들을 실행 및 자동으로 커미트할 수 있거나, 또는 (예를 들어, 트랜잭션이 실패하면) 모든 결과들을 어보트 및 취소할 수 있다. 트랜잭션은 예를 들어, 위에서 논의된 원자성, 일관성, 고립성, 및 지속성(ACID) 특성들에 따라 수행될 수 있다. 트랜잭션들은 예를 들어, 로크들 및 세마포어들과 같은 기술들을 대체하기 위해, 안전하게 병렬로 실행할 수 있다. 특정 실시예들은 또한 예를 들어, 로크들이 비관적일 수 있고, 스레드를 로크하는 것이 데이터를 기입할 것이어서, 다른 스레드들의 진행이 차단될 수 있다고 가정할 수 있기 때문에, 성능 이점을 포함할 수 있다. 본 명세서의 일 실시예에서는, 로크들 없이, 둘 다 공유 리소스(예를 들어, 동일 메모리 어드레스 또는 레지스터)에 액세스하는 두 개의 트랜잭션들이 병렬로 진행할 수 있고, 트랜잭션들 중 하나가 공유 리소스에 기입(예를 들어, 충돌하는 기입)을 행해야만 롤백(rollback)(예를 들어, 트랜잭션들 중 하나 또는 둘 모두의 어보트)이 발생할 수 있다.
전력 관리 장치들 및 방법들은 (예를 들어, 어느 디바이스 또는 도메인 및/또는 천이할 새로운 전력 레벨을 지시하는) 전력 상태 천이들에 대한 (예를 들어, 하드웨어, OS 또는 드라이버로부터의) 복수의 요청들을 수신할 수 있다. 일 실시예에서, 전력 상태 천이는 전력 관리 명령(예를 들어, 천이를 달성하기 위해 프로세서에서 실행하기 위한 명령어들의 스레드)에 의해 요청될 수 있다. 일 실시예에서, 전력 관리 명령은 요청자(예를 들어, OS)로부터 천이될 디바이스(예를 들어, 제어 입력)에 전송될 수 있다. 전력 상태 천이는 트랜잭션으로서 선언될 수 있으며, 예를 들어, 전력 트랜잭션으로서 할당된 전력 관리 명령(예를 들어, 스레드)으로서 선언될 수 있다. 이와 같이, 전력 상태 천이(예를 들어, 전력 상태 천이를 유발하는 동작들)는 (예를 들어, 단일) 전력 트랜잭션으로서 취급될 수 있음으로써, 전력 관리 장치들 및 방법들이, 전력 상태 천이를 제어하고/하거나 그것의 일부인 데이터 구조들(예를 들어, 메모리, 레지스터들, 데이터 입력들, 기타 등등에 유지된)을 조작할(예를 들어, 전력 상태들을 변경할) 때 로크들을 발행하지 않도록 한다. 일 실시예에서, 전력 상태 트랜잭션은 데이터 구조체들에 임의의 변경들을 시도하기 전에 상태 천이 연산(들)을 시작하고, 그들의 변화를 (예를 들어, 캐시 내의) 데이터 구조체들에 복사하고(예를 들어, 참조 버전), 연산들이 완료될 때, 충돌이 발생하지 않으면, 트랜잭션을 커미트한다. 트랜잭션 동안, 전력 트랜잭션 유닛(예를 들어, 시스템)은 그러한 연산들이 판독 및/또는 기입을 수행했던 모든 데이터 구조체들의 트랙(예를 들어, 로그)을 유지할 수 있다. 전력 트랜잭션이 커미트되기 전에, 전력 트랜잭션 유닛은 트랜잭션이 이용했던 데이터 구조체에 임의의 다른 트랜잭션(예를 들어, 그것의 연산들)이 어떤 변화도 만들지 않았음을 체크할 수 있다. 변화가 없었다면, 트랜잭션이 커미트될 수 있다. 변화가 있었다면, 트랜잭션이 어보트될 수 있음으로써, 예를 들어, 그것의 변화들이 모두 원상태로 되돌려진다. 일 실시예에서, 어보트된 트랜잭션(예를 들어, 그것의 연산(들))은 (예를 들어, 로크(들)를 이용하는) 상이한 전략 하에서 재시도될 수 있거나, 또는 취소될 수 있다. 그러므로, 다중 디바이스들에 대한 전력 상태 천이 시도들이 전력 상태 트랜잭션들로서 병렬적으로 발생할 수 있다. 일 실시예에서, 디바이스 및/또는 도메인은 전력 관리 레지스터를 포함하여 그 레지스터 내에 전력 관리 명령의 기입의 수신시에 전력 상태 천이를 유발하고, 예를 들어, 전력 관리 명령은 디바이스에 대한 새로운 전력 상태를 지시하는 비트 또는 비트들일 수 있다. 일 실시예에서, 소프트웨어(예를 들어, OS)는 예를 들어, 디바이스(및/또는 전력 도메인)가 활용되고 있지 않은 것을 검출한 후, 전력 상태 천이를 요청하며, 그것은 그 디바이스를 휴지시키거나 전원을 끄는 것을 지시할 수 있다. 디바이스는 프로세서 외부의, 예를 들어, 프로세서를 가진 다이 상에 있지 않은 컴포넌트(들)(예를 들어, 주변기기)를 포함할 수 있다. 다중 디바이스들은 공유 리소스들을 포함할 수 있으며, 예를 들어, 그러한 디바이스들은 동일 클록에 의해 제어되거나, 또는 동일 전력 도메인 내에 있다(예를 들어, 전원의 동일 전력 레일에 의해 전력을 공급받음). OS는 어느 전력 도메인(들)이 전력 관리 명령(예를 들어, 스레드)을 실행하도록 이용될 것인지를 지시 또는 검출할 수 있다. 예를 들어, (예를 들어, 전력 상태 천이를 요청하기 위한) 전력 관리 명령이 트랜잭션으로서 취급되는 하드웨어 또는 OS에게 지시하기 위해 전력 트랜잭션 힌트(예를 들어, 아래에서 도 5를 참조하여 원자적")가 코드 내에 포함될 수 있다.
일 예로서, 제1 디바이스(예를 들어, USB 허브)와 제2 디바이스(예를 들어, 네트워크 어댑터)는 각각 활성 전력 상태에 있을 수 있고, 휴지 또는 오프 전력 상태로 각각 천이하기 위해 전력 관리 명령들이 (예를 들어, 그들 각각의 드라이버들로부터) 전송될 수 있다. (예를 들어, USB 허브에 대한) 제1 전력 관리 명령과 (예를 들어, 네트워크 어댑터에 대한) 제2 전력 관리 명령이 예를 들어, OS에 의해 전송될 수 있고, 프로세서 또는 SoC의 전력 트랜잭션 유닛에 의해 수신될 수 있다. 전력 트랜잭션 유닛은, 각각의 전력 관리 명령에 대한 요청된 전력 상태 천이들이 예를 들어, 원자성, 일관성, 고립성, 및/또는 지속성(ACID) 특성들에 따라, 전력 트랜잭션들이 되는 것을 검출할 수 있다. 전력 트랜잭션 유닛(예를 들어, 하드웨어, 소프트웨어, 펌웨어, 또는 그들의 조합들에서)은 예를 들어, 전력 상태 천이들의 동시적(예를 들어, 병렬적) 실행을 허용할 수 있으나, 아직 그들을 커미트하지 않을 수 있다. 이것은 그러한 디바이스들이 공유 리소스에 의해 전력을 공급받을 때에도 심지어 발생할 수 있다. 예를 들어, 제1 전력 명령(예를 들어, 스레드)과 제2 전력 명령(예를 들어, 스레드)에 의해 발생하는 (예를 들어, 입력(들) 및/또는 출력(들)을 제어하기 위한) 임의의 판독들 및/또는 기입들이 추적될 수 있다. 일 실시예에서, 제1 전력 트랜잭션과 제2 전력 트랜잭션의 (예를 들어, 충돌하는) 변화들이 없었다면, 그들은 커미트될 수 있다(예를 들어, 디바이스들이 휴지 또는 오프 전력 상태로 전력을 공급받음). 충돌하는 변화들이 있다면, 예를 들어, 양쪽 디바이스들이 양쪽 모두에 영향을 주는 공통 전력 리소스(예를 들어 도메인)를 공유하는 경우에 그 하나의 디바이스가 휴지 상태로 될 것이고 다른 디바이스가 오프 상태로 될 것이라면, 예를 들어, 충돌 해결 정책에 따라, 그 트랜잭션들 중 한쪽 또는 양쪽 모두가 어보트될 수 있다. 충돌 해결 정책의 하나의 예는 리소스에 기입하기 위한 제1 트랜잭션이 커미트되고 제2 트랜잭션이 어보트되는 것이다. 충돌 해결 정책의 또 다른 예는 최고 전력 상태를 가진 트랜잭션이 커미트되고 더 낮은 전력 상태 트랜잭션이 어보트되는 것이다. 예를 들어, 어보트된 트랜잭션을 다른 트랜잭션이 커미트된 후에 재시도하는 것(예를 들어, 지연시키는 것) 등의 다른 충돌 해결 정책들이 포함될 수 있지만, 그것에 한정되지 않는다. 일 실시예에서, (예를 들어, 각각의 스레드에 대한) 각각의 전력 트랜잭션은 동시에 실행 중인 스레드들 간의 충돌이 검출될 때까지 진행할 수 있다. 본 명세서의 특정 실시예들은 복수의 전력 천이들을 (예를 들어, 커미트 없이) 동시에 수행하는 것에 대해 무 로크를 허용한다.
본 명세서의 도면들은 전원(예를 들어, 배터리 또는 비-배터리) 또는 전원 접속들을 도시하지 않는다는 것을 유의한다. 통상의 기술자는 이것이 도면들에서 특정 상세를 모호하게 하지 않게 하기 위한 것임을 이해할 것이다. 본 명세서의 양방향 화살표는 예를 들어, 양방향 통신을 필요로 하지 않을 수 있으며, 그것은 (예를 들어 그 컴포넌트 또는 디바이스에의 또는 그로부터의) 일방향 통신을 지시할 수 있다는 것을 유의한다. 통신 경로들 중 임의의 것 또는 모든 조합들은 본 명세서의 실시예들에서 활용될 수 있다.
도 1은 본 개시의 실시예에 따른 하드웨어 장치(100)를 도시한다. 일 실시예에서, 하드웨어 장치(100)는 SoC일 수 있다. 도시된 하드웨어 장치(100)는 하드웨어 프로세서(102)를 포함한다. 하드웨어 프로세서의 특정 컴포넌트들 예를 들어, 다중 레벨 캐시와 다중 코어들이 도시되지만, 예를 들어, 본 명세서에서 논의되는 다른 프로세서(들)가 본 개시의 사상으로부터 벗어나지 않고서 활용될 수 있다. 도시되는 코어 A(102A)는 제1 레벨 명령어 캐시(L1I)(104A), 제1 레벨 데이터 캐시(106A), 레벨 2 캐시(L2)(108A)를 포함한다. 설명되는 코어 B(102B)는 제1 레벨 명령어 캐시(L1I)(104B), 제1 레벨 데이터 캐시(L1D)(106B), 및 L2 캐시(L2)(108B)를 포함한다. 도시되는 코어 C(102C)는 제1 레벨 명령어 캐시(L1I)(104C), 제1 레벨 데이터 캐시(L1D)(106C), 및 레벨 2 캐시(L2)(108C)를 포함한다. 도시되는 코어 D(102D)는 제1 레벨 명령어 캐시(L1I)(104D), 제1 레벨 데이터 캐시(L1D)(106D), 및 레벨 2 캐시(L2)(108D)를 포함한다. 도시되는 하드웨어 코어 A와 B는 공유된 레벨 3 캐시(L3)(110)를 포함한다. 도시되는 하드웨어 코어 C와 D는 공유된 레벨 3 캐시(L3)(112)를 포함한다. 도시되는 프로세서(102)는 공유된 레벨 4 캐시(L4)(114)를 포함한다. 네 개의 코어들이 도시되지만, 단일 코어 또는 임의의 복수의 프로세서 코어들이 활용될 수 있다. 4 레벨 캐시가 도시되지만, 단일 레벨 또는 임의의 복수 레벨의 캐시가 활용될 수 있다.
일 실시예에서, 각각의 코어는 그 자체의 전력 도메인을 갖는다. 일 실시예에서, 다중 코어들(예를 들어, 코어 A와 코어 B)은 공유 전력 도메인을 갖는다. 일 실시예에서, 전체 캐시는 그 자체의 전력 도메인을 가질 수 있다. 예를 들어, L3 캐시(110)에 대한 전력 천이는 다른 캐시들 중 어떤 것 또는 전부에 대하여 전력 천이를 야기할 수 있다.
캐시 일관성 유닛이 예를 들어, 캐시의 일부로서, 캐시 일관성 프로토콜에 따라, 예를 들어 네 가지 상태의 변경(M), 독점적(E), 공유(S), 무효(I)(MESI) 프로토콜 또는 다섯 가지 상태의 변경(M), 독점적(E), 공유(S), 무효(I), 포워드(F)(MESIF) 프로토콜에 따라 활용될 수 있다.
임의의 또는 모든 조합들의 통신 경로들이 본 명세서의 실시예들에서 활용될 수 있다. 예를 들어, 프로세서(102), 예를 들어, 그것의 코어는 예를 들어, (링 네트워크(116)로서 도시된) 네트워크를 통해 다른 디바이스들과 통신할 수 있다.
(예를 들어, 전력) 트랜잭션 유닛(들)이 본 개시의 특정 실시예들에 따라 포함될 수 있다. 각각의 코어는 (예를 들어, 전력) 트랜잭션 유닛, 예를 들어, 그들의 각각의 코어들 내의 (전력) 트랜잭션 유닛들(120A, 120B, 120C, 및 120D)을 포함할 수 있다. 부가적으로 또는 대안적으로, 프로세서 또는 SoC는 분리된 (예를 들어, 전력) 트랜잭션 유닛을 포함할 수 있다. 도시되는 하드웨어 장치는 예를 들어, 본 명세서의 개시 내용을 수행하기 위한 로직을 저장하는 전력 트랜잭션 유닛(120)을 포함한다. 특정 다른 컴포넌트들이 도시되지만, 이들은 예들이고, 다른 컴포넌트들이 활용될 수 있고/있거나 도시된 컴포넌트들 중 어떤 것은 하드웨어 장치 내에 존재하지 않을 수 있다. 도시되는 컴포넌트들은 디스플레이 신호들을 디스플레이(126)에 전송할 수 있는 그래픽 유닛(124)(예를 들어, 이것은 그래픽 프로세서일 수 있음), 스토리지(128)(예를 들어, 다이 상에 또는 다이에서 떨어져 있을 수 있는 데이터 저장 디바이스), 유니버설 비동기 수신기 및 송신기(예를 들어, UART)(130), 저전력 서브시스템(LPSS)(132), 및 USB(Universal Serial Bus)(134)를 포함한다. 그래픽스 유닛(124)은 하드웨어 프로세서(102)의 일부일 수 있다.
예를 들어, 디바이스들에 대한 전력의 흐름을 관리하기 위해, 전력 관리 유닛(122)이 포함될 수 있다. 전력 관리 유닛 내에 전력 트랜잭션 유닛이 포함될 수 있다. 일 실시예에서, 각각의 디바이스(예를 들어, 그것의 컴포넌트)는 그 자체의 전력 도메인을 포함할 수 있다. 일 실시예에서, 다중 디바이스들 또는 디바이스(들)의 컴포넌트들이 단일 전력 도메인을 공유한다.
일 예로서, 제1 디바이스(예를 들어, USB(134))와 제2 디바이스(예를 들어, UART(130))는 각각 활성 전력 상태에 있을 수 있고, 각각을 오프(또는 휴지) 전력 상태로 천이하기 위해 전력 관리 명령들이 (예를 들어, 그들 각각의 드라이버들로부터) 전송될 수 있다. (예를 들어, USB(134)에 대한) 제1 전력 관리 명령과 (예를 들어, UART(130)에 대한) 제2 전력 관리 명령이 예를 들어, OS에 의해 전송될 수 있고, 전력 트랜잭션 유닛(예를 들어, 트랜잭션 유닛(120)에 의해 수신될 수 있다. 전력 트랜잭션 유닛은, 각각의 전력 관리 명령에 대한 요청된 전력 상태 천이들이 예를 들어, 원자성, 일관성, 고립성, 및/또는 지속성(ACID) 특성들에 따라, 전력 트랜잭션들이 되는 것을 (예를 들어, OS로부터의 지시로부터) 검출할 수 있다. 전력 트랜잭션 유닛(예를 들어, 하드웨어, 소프트웨어, 펌웨어, 또는 그들의 조합들에서)은 예를 들어, 전력 상태 천이들의 동시적(예를 들어, 병렬적) 실행을 허용할 수 있으나, 아직 그들을 커미트하지 않을 수 있다. 이것은 그러한 디바이스들이 공유 리소스(예를 들어, 동일 전력 도메인의 멤버들임)에 의해 전력을 공급받을 때에도 심지어 발생할 수 있다. 예를 들어, 제1 전력 명령(예를 들어, 스레드)과 제2 전력 명령(예를 들어, 스레드)에 의해 발생하는 (예를 들어, 입력(들) 및/또는 출력(들)을 제어하기 위한) 임의의 판독들 및/또는 기입들이 추적될 수 있다. 변경될 데이터의 복사(예를 들어, 참조 버전)가 행해질 수 있고, 캐시(예를 들어, 프로세서의 캐시 또는 트랜잭션 유닛(120)의 별개의 캐시)에 저장될 수 있다. 일 실시예에서, 제1 전력 트랜잭션과 제2 전력 트랜잭션의 충돌들(예를 들어, 충돌하는 변화들)이 없었다면, 그들은 커미트될 수 있다(예를 들어, USB(134)와 UART(130) 디바이스들이 오프(또는 휴지) 전력 상태로 전력을 공급받음). 충돌들(예를 들어, 충돌하는 변화들)이 있다면, 예를 들어, 양쪽 디바이스들이 양쪽 모두에 영향을 주는 공통 전력 리소스(예를 들어 도메인)를 공유하는 경우에 그 하나의 디바이스가 휴지 상태로 될 것이고 다른 디바이스가 오프 상태로 될 것이라면, 예를 들어, 충돌 해결 정책에 따라, 그 트랜잭션들 중 한쪽 또는 양쪽 모두가 어보트될 수 있다.
다른 실시예에서, 단일 디바이스는 전력 트랜잭션으로서 선언된 그의 전력 천이를 가질 수 있다. 예를 들어, 전력 상태 천이(예를 들어, 활성 상태로부터 오프 또는 휴지로)의 프로세스에서 디바이스(예를 들어, USB(134))는 (예를 들어, 주변기기가 USB(134)로 플러깅된) 인터럽트를 수신할 수 있다. 전력 트랜잭션 유닛은 이것을 검출할 수 있고 그 후 운행 중의 전력 상태 천이를 (예를 들어, 커미트하지 않고) 어보트할 수 있고, 예를 들어, 그 대신 활성 상태로 복귀할 수 있다.
도 2 및 도 3을 참조할 때, 도 2는 집적 회로(예를 들어, 그것의 프로세서 코어들)가 하드웨어 메모리 트랜잭션들(예를 들어, 트랜잭션적인 메모리)에 대한 지원을 포함하지 않는 실시예를 기술하는 데 사용되고, 도 3은 집적 회로(예를 들어, 그것의 프로세서 코어)가 하드웨어 메모리 트랜잭션들(예를 들어, 트랜잭션적인 메모리)에 대한 지원을 포함하는 실시예를 기술하는 데 사용된다.
도 2는 본 개시의 실시예들에 따른 집적 회로(200)를 도시한다. 프로세서 코어들 0-N은 각각 (예를 들어, 프라이빗) 명령어 캐시(IC)와(예를 들어, 프라이빗) 데이터 캐시(DC)를 포함하는 것으로 도시된다. 또한, 집적 회로는 (예를 들어, 데이터) 캐시들 내에 (예를 들어, 전역적인) 캐시 일관성을 유지하기 위해 캐시 일관성 제어기(236)를 포함할 수 있다. 특정 디바이스들과 컴포넌트들이 도 2에 도시되지만, 이들은 옵션적이다. 예를 들어, "노스 콤플렉스" 전력 도메인과 "사우스 콤플렉스" 전력 도메인이 도시되지만, 임의의 전력 도메인이 활용될 수 있다. 버스(216)는 통신에 사용될 수 있다.
논의하는 캐시 일관성 제어기(236)와 다른 변경들은 트랜잭션적인 전력 관리를 허용할 수 있다. 집적 회로(200)(예를 들어, SoC)는 전력 관리 유닛(PUNIT)(240)과 전력 관리 제어기(PMC)(242)를 포함하지만, 예를 들어, 그 각각 또는 양쪽은 별개의 프로세서 코어들일 수 있다. PMC(242)는 예를 들어, PUNIT(240)로부터의 전력 관리 명령에 응답하여 도메인(예를 들어, 사우스 콤플렉스)에 대한 전력을 제어할 수 있다.
하드웨어 전력 트랜잭션은 예를 들어, 하드웨어 메모리 트랜잭션들(예를 들어, 트랜잭션적인 메모리)을 지원하지 않는 시스템에서 다음과 같이 구현될 수 있다. 트랜잭션 필드(예를 들어, 비트)가 캐시 시스템 내의 각각의 캐시 엔트리(예를 들어, 캐시 라인)에 대해 포함될 수 있다. (예를 들어, PUNIT과 PMC 각각에 대한) 데이터 구조체가 트랜잭션 이력 및/또는 임의의 충돌의 추적을 유지하기 위해 포함될 수 있다. 데이터 구조체는 요소(예를 들어, 디바이스)가 세트(예를 들어, 공유 전력 도메인 또는 다른 공유 리소스)의 멤버인지 테스트(예를 들어, 결정)하기 위해 액세스될 수 있다. 도시되는 실시예에서, 데이터 구조체는 PUNIT(240)에 대한 블룸 필터(240A)와 PMC(242)에 대한 블룸 필터(242A)이다. 블룸 필터는 요소(예를 들어, 디바이스)가 세트(예를 들어, 공유 전력 도메인 또는 다른 공유 리소스)의 멤버인지 테스트하는 데 사용되는 (예를 들어, 공간 효율적인) 확률적 데이터 구조체일 수 있다. 일 실시예에서, 거짓 긍정 매칭이 가능할 수 있지만, 거짓 부정은 그렇지 않고, 예를 들어, 요소에 대한 그것의 쿼리가 "아마 세트 내의 요소" 또는 "명백히 세트 내에 있지 않은 요소"를 리턴한다. PUNIT와 PMC는 충돌 해결과 커미트들 순서화를 위한 지원을 제공하기 위해 데이터 구조체(예를 들어, 블룸 필터)를 이용할 수 있다. 데이터 구조체(예를 들어, 블룸 필터)는 (예를 들어, 메모리가 매핑된) 레지스터들(예를 들어, 레지스터들(244, 246))로서 액세스될 수 있다. PUNIT과 PMC의 전력 관리 레지스터들(도시되지 않음)은 전력 천이를 야기하기 위해 액세스될 수 있다. 데이터 구조체(예를 들어, 레지스터들(244, 246))는, 예를 들어, 트랜잭션 경계들을 정의하고, 충돌들(및 임의의 재시도들)을 핸들링하는 방법을 구성하고, 기타 등등을 하기 위하여 소프트웨어에 의해 사용되기 위해, 트랜잭션 애플리케이션 프로그래밍 인터테이스(API)를 통해 소프트웨어에 노출될 수 있다. 그러므로, 본 명세서의 특정 실시예들은 트랜잭션적인 전력 관리(예를 들어, 트랜잭션들로서 취급될 전력 명령어들의 시퀀스)의 스케일 가능한 하드웨어 및 소프트웨어 구현을 제공할 수 있다. 전력 상태 천이들을 트랜잭션들로서 표현하는 것은 전력 관리 천이들을 모델링하고, 특정하고, 검증하기 위한 보다 정연한, 의미적으로 정확한 방법을 가져올 수 있다.
도 3은 본 개시의 실시예들에 따른 집적 회로(300)(예를 들어, SoC)를 도시한다. 이 예에서, (예를 들어, 모든) 프로세서 코어들(예를 들어, 전력 관리 제어기들을 포함함)은 하드웨어 메모리 트랜잭션들(예를 들어, 트랜잭션적인 메모리)을 위한 지원을 포함하고, 그러므로, 트랜잭션적인 전력 관리를 허용할 수 있다. 집적 회로의 컴포넌트들은, 모든 컴포넌트들(예를 들어, 전력 관리 유닛(PUNIT)(340)과 전력 관리 제어기(PMC)(342)를 포함한, 모든 프로세서 코어들)에 걸쳐 (예를 들어, 메모리와 전력) 트랜잭션들의 (예를 들어, 전역적으로) 동기화된 뷰를 가질 수 있다. 예를 들어, 시스템(예를 들어, SoC)은 메모리 트랜잭션 유닛(예를 들어, 엔진) 및/또는 전력 트랜잭션 유닛(예를 들어, 엔진)을 포함할 수 있다. 데이터 구조체(예를 들어, 블룸 필터)가 활용되지 않을 수 있다. 컴파일러는 전력 상태 천이들을 허용하기 위한 트랜잭션을 위한 지원을 포함할 수 있다. 컴파일러 내의 메모리 트랜잭션들을 위한 지원은 트랜잭션적인 전력 관리를 허용하기 위해 활용될 수 있다. 디바이스 드라이버들은 전력 관리 트랜잭션들을 위한 그들의 코드에 주석을 달 수 있다. 이 프레임워크는 OS와 다른 컴포넌트들이, 예를 들어, 로킹, 동기화, 기타 등등의 포인트 해결 책들을 제공할 필요 없이, 다중 코어 SoC들에 걸쳐 보다 이식 가능하고 스케일링 가능하게 되도록 도울 수 있다. 버스(316)는 통신에 사용될 수 있다. 도 2 및 도 3에서, 노스 콤플렉스와 사우스 콤플렉스 각각에 대해 열거된 컴포넌트들과 디바이스들은 단지 예들이다.
일 실시예에서, (예를 들어, 다중 코어들을 가진) 시스템은 예를 들어, 모든 프로세서 코어들(및 메모리)에 걸쳐 코드의 그 시퀀스에 대한 ACID 의미론을 보장하는 하드웨어를 가짐으로써, 트랜잭션적으로서 마크된 코드의 시퀀스에 대해 하드웨어 트랜잭션적 메모리를 지원할 수 있다. 일반적으로 이것은 모든 코어들에 걸쳐 트랜잭션들의 전역적으로 동기화된 뷰로서 지칭될 수 있어서, 예를 들어, 하나의 코어가 트랜잭션적으로서 마크된 코드 흐름(예를 들어, 스레드)을 실행하고 있을 때, 그 코드가 (예를 들어, 메모리 내의) 어떤 데이터에 액세스하고 있다면, 예를 들어, 모든 코어들에 걸쳐, 그 코드(및 메모리)에 대해 트랜잭션적인 의미론이 유지되는 것을 보장하기 위해 내장 하드웨어가 지원된다. 그러한 시스템의 일 예에서, (예를 들어, 모든) 호스트 드라이버들이 프로세서(예를 들어, IA) 코어들(예를 들어, 연산들을 위해 메인 메모리를 전형적으로 액세스하고 이용함) 상에서 작동될 수 있고, (예를 들어, 트랜잭션적으로서 마크된 전력 관리 명령들(코드)에 대한) 트랜잭션적인 전력 관리를 행하기 위해 시도하는 호스트 드라이버들의 임의의 세트는, 예를 들어, 그러한 명령들이 코어(들) 및/또는 전력 관리 유닛(들)(예를 들어, 메모리 액세스를 가진 제어기)에 의해 실행될 때, 트랜잭션적인 의미론을 유지하도록 보장한다.
메모리 트랜잭션들을 지원하는 시스템의 특정 실시예들은 전력 트랜잭션들을 지원하는 데 사용될 수 있고, 여기서 전력 관리 명령들이 메모리(예를 들어, 레지스터)에 기입 및/또는 판독될 수 있다. 예를 들어, ISA의 전력 관리 명령어는 그것이 트랜잭션임을 지시하기 위한 그의 필드를 가질 수 있다.
본 개시의 특정 실시예들은 다음 중 하나 이상의 하드웨어 및/또는 소프트웨어(예를 들어, 런타임) 지원을 포함한다: 특정 전력 관리 명령들(예를 들어, 시퀀스들)을 트랜잭션들(예를 들어, 시퀀스들)로서 구현하는, 예를 들어, 모바일 디바이스 내의, 프로세서 코어들뿐만 아니라, PUNIT, PMC, 및 라디오 포트 제어기 유닛(RPCU)과 같은 (예를 들어, 마이크로) 제어기들. 소프트웨어 전력 트랜잭션들은 전력 관리 명령들을 트랜잭션들로서 캡슐화하기 위한 추상화를 제공할 수 있고, 예를 들어, 이것은 소프트웨어가 소프트웨어(예를 들어, OS 및/또는 드라이버) 코드에서 전력 관리 시퀀스들에 주석을 달게 허용하기 위한 컴파일러들에서의 전력 프라그마들에 의해 성취될 수 있다. 컴파일러 번역들은 소프트웨어에 의해 제공되는 전력 힌트들(예를 들어, 도 5의 "원자적")을 하드웨어 트랜잭션적인 메모리를 위한 기본적 아키텍처 지원에 특유한 트랜잭션적인 메모리 명령어 시퀀스들로 변환할 수 있다. 상기의 내용은 (예를 들어, 마이크로) 제어기 지원 하드웨어 트랜잭션적인 메모리뿐 아니라, 예를 들어, 전력 관리에 사용되는 별도의 코어 또는 프로세서를 갖는 것으로 확장될 수 있다. 프로세서들 내의 하드웨어(전력) 트랜잭션 지원은 디바이스들 및 플랫폼 및/또는 SoC의 전력 상태들의 균일한 뷰를 제공할 수 있다. 이 프레임워크는 예를 들어, 로킹, 동기화, 기타 등등의 포인트 해결책들을 제공할 필요 없이, OS와 다른 컴포넌트들이 다중 코어 디바이스들(예를 들어, SoC들)에 걸쳐 보다 이식 가능하고 스케일링 가능하게 되도록 해줄 수 있다. 예를 들어, 도 5에 도시된 예에서, 스레드들 T1과 T2는 원자적인 블록 주위의 스레드들을 캡슐화함으로써 공유 전력 리소스(601) 내의 공유 전력 상태 레지스터들에 대한 액세스를 실행할 수 있다. 트랜잭션이 완료까지 실행하고, 커미트될 때, 그것의 효과들은 다른 트랜잭션들에 대해 가시적일 수 있다. 그렇지 않다면 트랜잭션은 어보트될 수 있고 그것의 효과들은 어떤 것도 다른 트랜잭션들에 대해 가시적이지 않을 수 있다.
본 명세서의 특정 실시예들은 공유 오브젝트들에 액세스할 코드의 섹션들을, 예를 들어, 원자적으로 실행할, 트랜잭션들로서 지시하는 것(예를 들어, 마킹하는 것)을 포함한다.
도 4는 본 개시의 실시예들에 따른 전력 트랜잭션들이 없는 시스템을 위한 전력 관리 코드(400)를 도시한다. 도 4는 전력 트랜잭션들이 없이, 시스템이 제1 전력 천이가 완료할 때까지 제2 전력 천이를 지연할 수 있는 것을 도시한다. 전력 트랜잭션들이 없는 전력 상태 천이들을 위한 일 실시예에서, 커널 또는 디바이스 드라이버는 예를 들어, 이것을 위한 플랫폼 지원에 기초하여, 전력 관리 명령(예를 들어, 전력 상태 천이 요청)을 단일 디바이스 또는 다중 디바이스들에 발행할 수 있다. 그러나, OS, 디바이스 드라이버들, 펌웨어, 및 하드웨어에 걸쳐 이 복잡한 상태 머신을 편성하기 위해 다중 로크들 및/또는 동기화 프리미티브들이 사용될 수 있고, 이에 의해 에러들(예를 들어, 버그들), 경쟁 컨디션들, 로크업들/스타베이션, 이식불가능 코드, 및 플랫폼-특정적인 해결책들을 야기한다. 또한, 전력 트랜잭션들이 없이 전력 상태 천이를 수행하기 위한 시간은, 예를 들어, 전력 트랜잭션들이 없이 중단 및 재개의 높은 대기 시간으로 인해, 전력 트랜잭션들을 이용할 때의 시간 양의 10배 이상 소요될 수 있다.
도 5는 본 개시의 실시예들에 따른 전력 트랜잭션들이 있는 시스템을 위한 전력 관리 코드(500)를 도시한다. 도시되는 코드는 예를 들어, 원자성, 일관성, 고립성, 및 지속성(ACID) 트랜잭션적인 특성들 중 하나 이상에 따라, 전력 관리 명령들(예를 들어, 스레드들 T1과 T2 양쪽 모두)이 트랜잭션들로서 취급될 것을 선언하는 것(예를 들어, "원자적"에 의해)을 포함한다. 일 실시예에서, 컴퓨팅 시스템(예를 들어, 컴파일러)은, 그러한 스레드들을 동시에 실행될 수 있는 트랜잭션들로서 취급할 것이고, 예를 들어 충돌이 없다면, 양쪽 모두를 커미트한다.
도 6은 본 개시의 실시예들에 따른 T1과 T2에 대한 원자적인 전력 트랜잭션들이 있는 그리고 T1과 T2에 대한 원자적인 전력 트랜잭션들이 없는 타이밍 개략도(600)를 도시한다. 도 6은, 전력 관리 명령들(예를 들어, 비-원자적 T1과 T2)이 트랜잭션들이 아니기 때문에 직렬로 완료하는(예를 들어, 적어도 t1 + t2) 것과는 대조적으로, 원자적 전력 트랜잭션들에 있어서, 양쪽 스레드들이 동시적으로 실행할 수 있고, 예를 들어, 각각 실행하는 데 (그리고 공유 전력 리소스(601)에 대한 전력 제어 레지스터(들)에의 그들의 액세스에 의해 유발되는 충돌이 없다면, 커미트하는 데) 시간 t1과 t2가 소요될 것임을 도시한다. 일 실시예에서, 각각의 전력 관리 명령(예를 들어, 스레드)은 개별 코어 상에서 실행된다. 일 실시예에서, 코어는 전력 관리 유닛으로서 활용될 수 있다.
도 7은 본 개시의 실시예들에 따른 흐름도(700)를 도시한다. 도시되는 흐름도(700)는, 각각의 전력 도메인에 대한 전력 관리 명령에 응답하여 복수의 전력 상태들 중 하나로 천이하는 하드웨어 프로세서를 포함하는 하드웨어 장치의 복수의 전력 도메인들을 제공하는 단계(702); 동시 실행을 위해 제1 전력 관리 명령을 제1 전력 트랜잭션으로서 그리고 제2 전력 관리 명령을 제2 전력 트랜잭션으로서 할당하는 단계(704); 제1 전력 트랜잭션과 제2 전력 트랜잭션 사이에 충돌이 없을 때 제1 전력 트랜잭션과 제2 전력 트랜잭션의 커미트를 수행하는 단계(706); 및 제1 전력 트랜잭션과 제2 전력 트랜잭션 사이에 충돌이 있을 때 제1 전력 트랜잭션의 어보트와 제2 전력 트랜잭션의 커미트를 수행하는 단계(708)를 포함한다.
도 8은 본 개시의 실시예들에 따른 흐름도(800)를 도시한다. 도시되는 흐름은 예시적인 전력 트랜잭션, 예를 들어, 처음부터 끝까지 소프트웨어(예를 들어, OS)로부터 펌웨어까지 하드웨어까지를 포함한다. 일 실시예에서, 도 800의 흐름도는 도 1, 도 2, 및/또는 도 3의 회로를 참조할 수 있다. PMIC는 전력 관리 집적 회로를 지칭할 수 있다.
일 실시예에서, 하드웨어 장치는, 코어를 갖는 하드웨어 프로세서, 각각의 전력 도메인에 대한 전력 관리 명령에 응답하여 복수의 전력 상태들 중 하나로 천이하는 복수의 전력 도메인들, 및 전력 트랜잭션 유닛을 포함하고, 상기 전력 트랜잭션 유닛은: 동시 실행을 위해 제1 전력 관리 명령을 제1 전력 트랜잭션으로서 할당하고 제2 전력 관리 명령을 제2 전력 트랜잭션으로서 할당하고, 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 사이에 충돌이 없을 때 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션의 커미트를 수행하고, 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 사이에 충돌이 있을 때 상기 제1 전력 트랜잭션의 중단과 상기 제2 전력 트랜잭션의 커미트를 수행한다. 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 각각은 다중 명령어들을 포함할 수 있다. 상기 하드웨어 장치는 각각의 도메인에 대한 전력 관리 명령을 수신하는 복수의 전력 상태 레지스터들을 더 포함할 수 있다. 상기 충돌은 상기 제2 전력 트랜잭션이 기입한 전력 상태 레지스터에 상기 제1 전력 트랜잭션이 기입하는 것일 수 있다. 상기 전력 트랜잭션 유닛은 로크를 발행하지 않을 수 있다. 상기 충돌은, 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션이 공유 전력 도메인에 대해 충돌하는 전력 관리 명령들을 기입하는 것일 수 있다. 상기 충돌이 있을 때, 상기 제2 전력 트랜잭션의 실행에 응답한 전력 도메인의 천이는, 상기 제2 전력 트랜잭션의 커미트 후에만 다른 트랜잭션들에 대해 가시적일 수 있다. 상기 하드웨어 장치는 제1 스레드와 제2 스레드가 동일 메모리 어드레스를 변경하는 것이 아니라면, 상기 하드웨어 프로세서의 상기 코어 상의 제1 스레드 및 제2 코어 상의 제2 스레드의 동시 실행 후에 상기 제1 스레드와 상기 제2 스레드의 커미트를 수행하는 메모리 트랜잭션 유닛을 더 포함할 수 있다.
다른 실시예에서, 방법은, 각각의 전력 도메인에 대한 전력 관리 명령에 응답하여 복수의 전력 상태들 중 하나로 천이하는 하드웨어 프로세서를 포함하는 하드웨어 장치의 복수의 전력 도메인들을 제공하는 단계; 동시 실행을 위해 제1 전력 관리 명령을 제1 전력 트랜잭션으로서 할당하고 제2 전력 관리 명령을 제2 전력 트랜잭션으로서 할당하는 단계; 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 사이에 충돌이 없을 때 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션의 커미트를 수행하는 단계; 및 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 사이에 충돌이 있을 때 상기 제1 전력 트랜잭션의 중단과 상기 제2 전력 트랜잭션의 커미트를 수행하는 단계를 포함한다. 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 각각은 다중 명령어들을 포함할 수 있다. 상기 방법은, 전력 상태 레지스터에서 각각의 도메인에 대한 상기 전력 관리 명령을 수신하는 단계를 더 포함할 수 있다. 상기 충돌은 상기 제2 전력 트랜잭션이 기입한 전력 상태 레지스터에 상기 제1 전력 트랜잭션이 기입하는 것일 수 있다. 상기 방법은, 로크를 발행하지 않는 단계를 더 포함할 수 있다. 상기 충돌은, 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션이 공유 전력 도메인에 대해 충돌하는 전력 관리 명령들을 기입하는 것일 수 있다. 상기 충돌이 있을 때, 상기 제2 전력 트랜잭션의 실행에 응답한 전력 도메인의 천이는, 상기 제2 전력 트랜잭션의 커미트가 수행된 후에만 다른 트랜잭션들에 대해 가시적일 수 있다. 상기 방법은, 제1 스레드와 제2 스레드가 동일 메모리 어드레스를 변경하는 것이 아니라면, 상기 하드웨어 프로세서 상의 제1 스레드 및 제2 스레드의 동시 실행 후에 상기 제1 스레드와 상기 제2 스레드의 커미트를 수행하는 단계를 더 포함할 수 있다.
또 다른 실시예에서, 비일시적 머신 판독가능 저장 매체는 머신에 의해 처리될 때 방법이 수행되게 하는 프로그램 코드를 저장하고, 상기 방법은, 각각의 전력 도메인에 대한 전력 관리 명령에 응답하여 복수의 전력 상태들 중 하나로 천이하는 하드웨어 프로세서를 포함하는 하드웨어 장치의 복수의 전력 도메인들을 제공하는 단계; 동시 실행을 위해 제1 전력 관리 명령을 제1 전력 트랜잭션으로서 할당하고 제2 전력 관리 명령을 제2 전력 트랜잭션으로서 할당하는 단계; 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 사이에 충돌이 없을 때 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션의 커미트를 수행하는 단계; 및 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 사이에 충돌이 있을 때 상기 제1 전력 트랜잭션의 중단과 상기 제2 전력 트랜잭션의 커미트를 수행하는 단계를 포함한다. 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 각각은 다중 명령어들을 포함할 수 있다. 상기 방법은 전력 상태 레지스터에서 각각의 도메인에 대한 상기 전력 관리 명령을 수신하는 단계를 더 포함할 수 있다. 상기 충돌은 상기 제2 전력 트랜잭션이 기입한 전력 상태 레지스터에 상기 제1 전력 트랜잭션이 기입하는 것일 수 있다. 상기 방법은 로크를 발행하지 않는 단계를 포함할 수 있다. 상기 충돌은, 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션이 공유 전력 도메인에 대해 충돌하는 전력 관리 명령들을 기입하는 것일 수 있다. 상기 충돌이 있을 때, 상기 제2 전력 트랜잭션의 실행에 응답한 전력 도메인의 천이는, 상기 제2 전력 트랜잭션의 커미트가 수행된 후에만 다른 트랜잭션들에 대해 가시적일 수 있다. 상기 방법은 제1 스레드와 제2 스레드가 동일 메모리 어드레스를 변경하는 것이 아니라면, 상기 하드웨어 프로세서 상의 제1 스레드 및 제2 스레드의 동시 실행 후에 상기 제1 스레드와 상기 제2 스레드의 커미트를 수행하는 단계를 더 포함할 수 있다.
또 다른 실시예에서, 하드웨어 장치는, 코어를 갖는 하드웨어 프로세서, 각각의 전력 도메인에 대한 전력 관리 명령에 응답하여 복수의 전력 상태들 중 하나로 천이하는 복수의 전력 도메인, 및 수단을 포함하고, 상기 수단은: 동시 실행을 위해 제1 전력 관리 명령을 제1 전력 트랜잭션으로서 할당하고 제2 전력 관리 명령을 제2 전력 트랜잭션으로서 할당하고, 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 사이에 충돌이 없을 때 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션의 커미트를 수행하고, 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 사이에 충돌이 있을 때 상기 제1 전력 트랜잭션의 중단과 상기 제2 전력 트랜잭션의 커미트를 수행한다.
또 다른 실시예에서, 장치는 하드웨어 프로세서에 의해 실행될 때, 하드웨어 프로세서로 하여금 본 명세서에 개시된 임의의 방법을 수행하게 하는 코드를 저장하는 데이터 저장 디바이스를 포함한다. 장치는 상세한 설명에 기술된 것과 같을 수 있다. 방법은 상세한 설명에 기술된 것과 같을 수 있다.
명령어 세트는 하나 이상의 명령어 포맷을 포함할 수 있다. 주어진 명령어 포맷은 다양한 필드들(예를 들어, 비트 수, 비트들의 위치)을 정의할 수 있어서, 무엇보다도 특히, 수행될 연산(예를 들어, 오피코드), 및 그 연산이 수행되어야 하는 피연산자(들) 및/또는 다른 데이터 필드(들)(예를 들어, 마스크)을 특정한다. 어떤 명령어 포맷들은 명령어 템플릿들(또는 서브포맷들)의 정의를 통해 추가로 쪼개진다. 예를 들어, 주어진 명령어 포맷의 명령어 템플릿들은 명령어 포맷의 필드들의 상이한 서브세트들을 갖도록 정의될 수 있으며(포함된 필드들은 통상적으로 동일한 순서로 되어 있지만, 적어도 일부는 더 적은 필드들이 포함되기 때문에 상이한 비트 위치들을 가짐), 그리고/또는 상이하게 해석되는 소정의 필드를 갖도록 정의될 수 있다. 따라서, ISA의 각각의 명령어는, 주어진 명령어 포맷을 이용하여 (그리고 정의된다면, 그 명령어 포맷의 명령어 템플릿들 중 소정의 것에서) 표현되고, 연산, 및 피연산자들을 특정하기 위한 필드들을 포함한다. 예를 들어, 예시적인 ADD 명령어는 특정 오피코드, 및 그 오피코드를 특정하는 오피코드 필드 및 피연산자들(소스 1/데스티네이션 및 소스 2)을 선택하는 피연산자 필드들을 포함하는 명령어 포맷을 갖고; 명령어 스트림에서 이러한 ADD 명령어의 출현(occurrence)은 특정 피연산자들을 선택하는 피연산자 필드들에 특정 콘텐츠를 가질 것이다. AVX(Advanced Vector Extensions)(AVX1 및 AVX2)로서 지칭되며 VEX(Vector Extensions) 코딩 스킴을 이용하는 SIMD 확장들의 세트가 릴리즈되고/되거나 공개되었다(예를 들어, Intel® 64 및 IA-32 Architectures Software Developer's Manual, 2015년 4월, 참조; 및 Intel® Architecture Instruction Set Extensions Programming Reference, 2014년 10월, 참조).
예시적인 코어 아키텍처들, 프로세서들, 및 컴퓨터 아키텍처들
프로세서 코어들은 상이한 방식들로, 상이한 목적들을 위해, 상이한 프로세서들에서 구현될 수 있다. 예를 들어, 그러한 코어들의 구현들은 다음을 포함할 수 있다: 1) 범용 컴퓨팅을 대상으로 하는 범용 순차적 코어; 2) 범용 컴퓨팅을 대상으로 하는 고성능 범용 비순차적 코어; 3) 그래픽 및/또는 과학적(쓰루풋) 컴퓨팅을 주로 대상으로 하는 특수 목적 코어를 포함할 수 있다. 다양한 프로세서의 구현은 다음을 포함할 수 있다: 상이한 프로세서들의 구현들은: 1) 범용 컴퓨팅을 대상으로 하는 하나 이상의 범용 순차적 코어들 및/또는 범용 컴퓨팅을 대상으로 하는 하나 이상의 범용 비순차적 코어들을 포함하는 CPU; 및 2) 그래픽 및/또는 과학적(쓰루풋) 컴퓨팅을 주로 대상으로 하는 하나 이상의 특수 목적 코어들을 포함하는 코프로세서를 포함할 수 있다. 그러한 상이한 프로세서들은 상이한 컴퓨터 시스템 아키텍처들을 초래하고, 이들은 다음을 포함할 수 있다: 1) CPU와는 별개의 칩 상의 코프로세서; 2) CPU와 동일한 패키지에서의 별개의 다이 상의 코프로세서; 3) CPU와 동일한 다이 상의 코프로세서(이 경우, 이러한 코프로세서는 때때로 통합되는 그래픽 및/또는 과학(스루풋) 로직과 같은 특수 목적 로직 또는 특수 목적 코어들로서 지칭됨); 및 4) 부가적인 기능성, 전술한 코프로세서 및 전술한 CPU(때때로 애플리케이션 코어(들) 또는 애플리케이션 프로세서(들)로서 지칭됨)와 동일한 다이 상에 포함될 수 있는 시스템 온 칩. 예시적인 코어 아키텍처들이 다음에 설명되고, 예시적인 프로세서들 및 컴퓨터 아키텍처들의 설명들이 후속된다.
예시적인 코어 아키텍처들
순차적 및 비순차적 코어 블록도
도 9a는 본 개시의 실시예들에 따른, 예시적인 순차적 파이프라인 및 예시적인 레지스터 리네이밍, 비순차적 발행/실행 파이프라인 모두를 도시한 블록도이다. 도 9b는 본 개시의 실시예들에 따라 프로세서에 포함될 순차적 아키텍처 코어 및 예시적인 레지스터 리네이밍, 비순차적 발행/실행 아키텍처 코어 둘 모두의 예시적인 실시예를 도시하는 블록도이다. 도 9a 및 도 9b에서의 실선 박스들은 순차적 파이프라인 및 순차적 코어를 도시하는 반면, 파선 박스들의 옵션적인 부가는 레지스터 리네이밍, 비순차적 발행/실행 파이프라인 및 코어를 도시한다. 순차적 양태가 비순차적 양태의 서브세트라는 점을 고려하여, 비순차적 양태가 설명될 것이다.
도 9a에서, 프로세서 파이프라인(900)은 페치 스테이지(902), 길이 디코드 스테이지(904), 디코드 스테이지(906), 할당 스테이지(908), 리네이밍 스테이지(910), 스케줄링(디스패치(dispatch) 또는 발행이라고도 함) 스테이지(912), 레지스터 판독/메모리 판독 스테이지(914), 실행 스테이지(916), 라이트 백(write back)/메모리 기입 스테이지(918), 예외 처리 스테이지(922), 및 커미트(commit) 스테이지(924)를 포함한다.
도 9b는 실행 엔진 유닛(950)에 결합되는 프론트 엔드 유닛(front end unit)(930) - 둘 모두는 메모리 유닛(970)에 결합되어 있음 - 을 포함하는 프로세서 코어(990)를 도시한다. 코어(990)는 RISC(Reduced Instruction Set Computing) 코어, CISC(Complex Instruction Set Computing) 코어, VLIW(Very Long Instruction Word) 코어, 또는 하이브리드 또는 대안적인 코어 타입일 수 있다. 또 다른 옵션으로서, 코어(990)는, 예를 들어, 네트워크 또는 통신 코어, 압축 엔진, 코프로세서 코어, GPGPU(General Purpose computing Graphics Processing Unit) 코어, 그래픽 코어 또는 이와 유사한 것 등의 특수 목적 코어일 수 있다.
프론트 엔드 유닛(930)은 명령어 캐시 유닛(934)에 연결되는 분기 예측 유닛(932)을 포함하고, 명령어 캐시 유닛은 명령어 TLB(Translation Lookaside Buffer)(936)에 연결되고, 명령어 TLB는 명령어 페치 유닛(938)에 연결되고, 명령어 페치 유닛은 디코드 유닛(940)에 연결된다. 디코드 유닛(940)(또는 디코더 또는 디코더 유닛)은 명령어들을 디코딩할 수 있으며, 오리지널 명령어들로부터 디코딩되거나, 또는 그렇지 않으면 이들을 반영하거나, 또는 이들로부터 유도되는, 하나 이상의 마이크로-연산들, 마이크로-코드 엔트리 포인트들, 마이크로명령어들, 다른 명령어들 또는 다른 제어 신호들을 출력으로서 발생할 수 있다. 디코드 유닛(940)은 여러가지 상이한 메커니즘들을 사용하여 구현될 수 있다. 적절한 메커니즘의 예는 룩업 테이블, 하드웨어 구현, 프로그램 가능 로직 어레이들(PLAs), 마이크로코드 판독 전용 메모리들(ROMs), 기타 등등 포함하지만 여기에 한정되지는 않는다. 일 실시예에서, 코어(990)는 (예를 들어, 디코드 유닛(940)에서의 또는 그렇지 않으면 전단 유닛(930)에서의) 특정 매크로 명령들을 위한 마이크로코드를 저장하는 마이크로코드(ROM) 또는 다른 매체를 포함한다. 디코드 유닛(940)은 실행 엔진 유닛(950) 내의 리네임/할당자 유닛(952)에 연결된다.
실행 엔진 유닛(950)은 리타이어먼트 유닛(954) 및 하나 이상의 스케줄러 유닛(들)(956)의 세트에 연결되는 리네임/할당자 유닛(952)을 포함한다. 스케줄러 유닛(들)(956)은 예약 스테이션들, 중앙 명령어 윈도우, 기타 등등을 포함하는 임의의 개수의 상이한 스케줄러들을 나타낸다. 스케줄러 유닛(들)(956)은 물리적 레지스터 파일(들) 유닛(들)(958)에 결합된다. 물리적 레지스터 파일(들) 유닛들(958) 각각은 하나 이상의 물리적 레지스터 파일들을 나타내고, 이들 중 상이한 물리적 레지스터 파일들은 스칼라 정수, 스칼라 부동 소수점, 패킹된 정수, 패킹된 부동 소수점, 벡터 정수, 벡터 부동 소수점, 상태(예를 들어, 실행될 다음 명령어의 어드레스인 명령어 포인터) 등과 같은 하나 이상의 상이한 데이터 타입을 저장한다. 일 실시예에서, 물리적 레지스터 파일(들) 유닛(958)은 벡터 레지스터들 유닛, 기입 마스크 레지스터들 유닛, 및 스칼라 레지스터들 유닛을 포함한다. 이러한 레지스터 유닛들은 아키텍처의 벡터 레지스터들, 벡터 마스크 레지스터들, 및 범용 레지스터들을 제공할 수 있다. 물리적 레지스터 파일(들) 유닛(들)(958)은, 레지스터 리네이밍 및 비순차적 실행이(예를 들어, 재배열 버퍼(들) 및 리타이어먼트 레지스터 파일(들)을 사용하여; 미래 파일(들), 이력 버퍼(들) 및 리타이어먼트 레지스터 파일(들)을 사용하여; 레지스터 맵들 및 레지스터들의 풀(pool)을 사용하여 등) 구현될 수 있는 다양한 방식들을 도시하도록 리타이어먼트 유닛(954)에 의해 오버랩된다. 리타이어먼트 유닛(954) 및 물리적 레지스터 파일(들) 유닛(들)(958)은 실행 클러스터(들)(960)에 연결된다. 실행 클러스터(들)(960)는 하나 이상의 실행 유닛들(962)의 세트 및 하나 이상의 메모리 액세스 유닛들(964)의 세트를 포함한다. 실행 유닛들(962)은 다양한 타입의 데이터(예를 들어, 스칼라 부동 소수점, 팩킹된 정수, 팩킹된 부동 소수점, 벡터 정수, 벡터 부동 소수점)에 대해 다양한 연산들(예로서, 시프트, 가산, 감산, 승산)을 수행할 수 있다. 몇몇 실시예들은 특정 펑션들이나 펑션들의 세트들에 전용의 복수의 실행 유닛들을 포함할 수 있지만, 기타 실시예들은 단 하나의 실행 유닛, 또는 모두가 모든 펑션들을 수행하는 복수의 실행 유닛을 포함할 수 있다. 스케줄러 유닛(들)(956), 물리적 레지스터 파일(들) 유닛(들)(958) 및 실행 클러스터(들)(960)는 복수 개일 수 있는 것으로 도시되는데, 그 이유는 특정 실시예들이 특정 타입들의 데이터/연산들에 대해 개별 파이프라인들(예를 들어, 자신들의 스케줄러 유닛, 물리적 레지스터 파일(들) 유닛 및/또는 실행 클러스터를 각각의 갖는 스칼라 정수 파이프라인, 스칼라 부동 소수점/팩킹된 정수/팩킹된 부동 소수점/벡터 정수/벡터 부동 소수점 파이프라인 및/또는 메모리 액세스 파이프라인 - 및 개별 메모리 액세스 파이프라인의 경우, 이러한 파이프라인의 실행 클러스터만이 메모리 액세스 유닛(들)(964)을 갖는 특정 실시예들이 구현됨)을 발생하기 때문이다. 개별 파이프라인들이 사용되는 경우, 이들 파이프라인들 중 하나 이상은 비순차적 발행/실행일 수 있고, 나머지는 순차적일 수 있다는 점도 이해해야 한다.
메모리 액세스 유닛들(964)의 세트는, 레벨 2(L2) 캐시 유닛(976)에 연결되는 데이터 캐시 유닛(974)에 연결되는 데이터 TLB 유닛(972)을 포함하는 메모리 유닛(970)에 연결된다. 예시적인 일 실시예에서, 메모리 액세스 유닛들(964)은 로드 유닛, 저장 어드레스 유닛 및 저장 데이터 유닛을 포함할 수 있으며, 이들 각각은 메모리 유닛(970) 내의 데이터 TLB 유닛(972)에 연결된다. 명령어 캐시 유닛(934)은 메모리 유닛(970) 내의 레벨 2(L2) 캐시 유닛(976)에 더 연결된다. L2 캐시 유닛(976)은 하나 이상의 다른 레벨들의 캐시에 및 궁극적으로 메인 메모리에 연결된다.
예를 들어, 예시적인 레지스터 리네이밍, 비순차적 발행/실행 코어 아키텍처는 다음과 같이 파이프라인(900)을 구현할 수 있다: 1) 명령어 페치(938)는 페치 및 길이 디코딩 스테이지들(902, 904)을 수행하고; 2) 디코드 유닛(940)은 디코드 스테이지(906)를 수행하고; 3) 리네임/할당자 유닛(952)은 할당 스테이지(908) 및 리네이밍 스테이지(910)를 수행하고; 4) 스케줄러 유닛(들)(956)은 스케줄 스테이지(912)를 수행하고; 5) 물리적 레지스터 파일(들) 유닛(들)(958) 및 메모리 유닛(970)은 레지스터 판독/메모리 판독 스테이지(914)를 수행하고; 실행 클러스터(960)는 실행 스테이지(916)를 수행하고; 6) 메모리 유닛(970) 및 물리적 레지스터 파일(들) 유닛(들)(958)은 라이트 백/메모리 기입 스테이지(918)를 수행하고; 7) 다양한 유닛들이 예외 처리 스테이지(922)에 관련될 수 있고; 8) 리타이어먼트 유닛(954) 및 물리적 레지스터 파일(들) 유닛(들)(958)은 커미트 스테이지(924)를 수행한다.
코어(990)는, 본 명세서에서 개시되는 명령어(들)를 포함하는, 하나 이상의 명령어 세트들(예를 들어, (보다 새로운 버전들과 함께 추가된 일부 확장들을 갖는) x86 명령어 세트; 캘리포니아 서니베일의 MIPS Technologies의 MIPS 명령어 세트; 캘리포니아 서니베일의 ARM Holdings의(NEON 등의 옵션적 추가 확장들을 갖는) ARM 명령어 세트)을 지원할 수 있다. 일 실시예에서, 코어(990)는 팩킹된 데이터 명령어 세트 확장(예를 들어, AVX1, AVX2)을 지원하는 로직을 포함하며, 따라서 많은 멀티미디어 애플리케이션들에 의해 사용되는 연산들이 팩킹된 데이터를 사용하여 수행되는 것을 허용한다.
코어는(연산들 또는 스레드들의 두 개 이상의 병렬 세트들을 실행하는) 멀티스레딩을 지원할 수 있고, 시분할 멀티스레딩(time sliced multithreading), (이 경우 단일의 물리적 코어가, 그 물리적 코어가 동시에 멀티스레딩할 수 있는 스레드들 각각에 대해 논리적 코어를 제공함) 동시 멀티스레딩, 또는 이들의 조합(예를 들어, Intel® Hyperthreading 기술에서 등의 시분할 페칭 및 디코딩과 그 이후의 동시 멀티스레딩)을 포함하는 다양한 방식으로 멀티스레딩을 지원할 수 있다는 점을 이해해야 한다.
레지스터 리네이밍이 비순차적 실행의 정황에서 설명되었지만, 레지스터 리네이밍은 순차적 아키텍처에서 사용될 수도 있다는 점을 이해해야 한다. 도시된 프로세서의 실시예는 또한 개별 명령어 및 데이터 캐시 유닛들(934/974) 및 공유된 L2 캐시 유닛(976)을 포함하지만, 대안적 실시예들은, 예를 들어, 레벨 1(L1) 내부 캐시 또는 다중 레벨들의 내부 캐시 등, 명령어들, 및 데이터 둘 모두에 대해 단일 내부 캐시를 가질 수 있다. 몇몇 실시예들에서, 시스템은 내부 캐시와, 코어 및/또는 프로세서에 대해 외부에 있는 외부 캐시의 조합을 포함할 수 있다. 대안적으로, 모든 캐시는 코어 및/또는 프로세서에 대해 외부에 있을 수 있다.
특정 예시적인 순차적 코어 아키텍처
도 10a 내지 도 10b는 보다 구체적인 예시적인 순차적 코어 아키텍처의 블록도를 도시한 것이고, 이 코어는 칩에 있는 몇 개의 로직 블록들(동일한 타입 및/또는 상이한 타입들의 다른 코어들을 포함함) 중 하나일 것이다. 로직 블록들은 애플리케이션에 따라서, 일부 고정된 기능 로직, 메모리 I/O 인터페이스들, 및 다른 필요한 I/O 로직과 고 대역폭 상호접속 네트워크(예를 들어, 링 네트워크)를 통해 통신한다.
도 10a는 본 개시의 실시예들에 따른, 단일 프로세서 코어를, 온-다이 상호접속 네트워크(1002)로의 그의 접속 및 레벨 2(L2) 캐시의 그의 로컬 서브세트(1004)과 함께, 나타낸 블록도이다. 일 실시예에서, 명령어 디코더 유닛(1000)은 팩킹된 데이터 명령어 세트 확장을 갖는 x86 명령어 세트를 지원한다. L1 캐시(1006)는 스칼라 및 벡터 유닛들 내로의 캐시 메모리에 대한 저-지연(low-latency) 액세스들을 허용한다. (설계를 단순화하기 위해) 일 실시예에서 스칼라 유닛(1008) 및 벡터 유닛(1010)은 별개의 레지스터 세트들(각각의 스칼라 레지스터들(1012) 및 벡터 레지스터들(1014))을 이용하고, 이들 사이에 전달되는 데이터는 메모리에 기입된 다음, 레벨 1(L1) 캐시(1006)로부터 다시 판독되지만, 본 개시의 대안적인 실시예들은 상이한 접근법을 이용할 수 있다(예를 들어, 단일의 레지스터 세트를 이용하거나, 또는 기입 및 다시 판독되지 않고 2개의 레지스터 파일들 사이에서 데이터가 전달되는 것을 허용하는 통신 경로를 포함함).
L2 캐시(1004)의 로컬 서브세트는, 프로세서 코어 당 하나씩인 개별 로컬 서브세트들로 분할되는 글로벌 L2 캐시의 일부이다. 각각의 프로세서 코어는 L2 캐시(1004)의 자신의 로컬 서브세트에 대한 직접 액세스 경로를 갖는다. 프로세서 코어에 의해 판독된 데이터는 자신의 L2 캐시 서브세트(1004)에 저장되며, 다른 프로세서 코어들이 그들 자신의 로컬 L2 캐시 서브세트들에 액세스하는 것과 병렬로 빠르게 액세스될 수 있다. 프로세서 코어에 의해 기록된 데이터는 자신의 L2 캐시 서브세트(1004)에 저장되며, 필요한 경우에는, 다른 서브세트들로부터 제거된다. 링 네트워크는 공유 데이터에 대한 일관성(coherency)를 보장한다. 링 네트워크는 양-방향성이어서, 프로세서 코어들, L2 캐시들 및 다른 논리 블록들 등의 에이전트들이 칩 내에서 상호 통신하는 것을 허용한다. 각각의 링 데이터-경로는 방향 당 1012-비트 폭이다.
도 10b는 본 개시의 실시예들에 따른 도 10a에서의 프로세서 코어의 일부의 확대도이다. 도 10b는 L1 캐시(1004)의 L1 데이터 캐시(1006A) 부분은 물론, 벡터 유닛(1010) 및 벡터 레지스터들(1014)에 관한 부가 상세를 포함한다. 구체적으로는, 벡터 유닛(1010)은 정수, 단일 정밀도 부동 소수점, 및 배 정밀도 부동 소수점 명령어들 중 하나 이상을 실행하는 16-와이드(16-wide) 벡터 처리 유닛(VPU)(16-와이드 ALU(1028)를 참조)이다. VPU는, 스위즐(swizzle) 유닛(1020)에 의한 레지스터 입력들의 스위즐링, 수치 변환 유닛들(1022A-B)에 의한 수치 변환 및 메모리 입력에 대한 복제 유닛(1024)에 의한 복제를 지원한다. 기입 마스크 레지스터들(1026)은 결과적인 벡터 기입들을 서술하는 것(predicating)을 허용한다.
도 11은, 본 개시의 실시예들에 따라, 하나 초과의 코어들을 가질 수 있고, 통합 메모리 제어기를 가질 수 있고, 및 통합 그래픽을 가질 수 있는 프로세서(1100)의 블록도이다. 도 11의 실선 박스들은 단일 코어(1102A), 시스템 에이전트(1110), 하나 이상의 버스 제어기 유닛들(1116)의 세트를 갖는 프로세서(1100)를 도시하는 반면에, 옵션인 점선 박스들의 추가는 다중 코어(1102A-N), 시스템 에이전트 유닛(1110) 내의 하나 이상의 통합 메모리 제어기 유닛(들)(1114)의 세트, 및 특수 목적 로직(1108)을 갖는 대안적인 프로세서(1100)를 도시한다.
따라서, 프로세서(1100)의 상이한 구현들은 다음을 포함할 수 있다: 1) 통합 그래픽 및/또는 과학적(쓰루풋) 로직(하나 이상의 코어들을 포함할 수 있음)인 특수 목적 로직(1108) 및 하나 이상의 범용 코어들(예를 들어, 범용 순차적 코어들, 범용 비순차적 코어들, 이 두 가지의 조합)인 코어들(1102A-N)을 갖는 CPU; 2) 그래픽 및/또는 과학적(쓰루풋) 컴퓨팅을 주로 대상으로 하는 복수의 특수 목적 코어들인 코어들(1102A-N)을 갖는 코프로세서; 및 3) 복수의 범용 순차적 코어들인 코어들(1102A-N)을 갖는 코프로세서. 따라서, 프로세서(1100)는 범용 프로세서, 코프로세서, 또는 특수목적 프로세서, 예를 들어, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU(general purpose graphics processing unit), 하이-쓰루풋 MIC(many integrated core) 코프로세서(30개 이상의 코어를 포함함), 임베디드 프로세서, 또는 이와 유사한 것 등일 수 있다. 프로세서는 하나 이상의 칩 상에 구현될 수 있다. 프로세서(1100)는, 예를 들어, BiCMOS, CMOS, 또는 NMOS와같은 복수의 프로세스 기술 중 임의의 것을 이용하여 하나 이상의 기판 상에 구현될 수 있고/있거나 그 일부일 수 있다.
메모리 계층구조는 코어들 내의 하나 이상의 레벨들의 캐시, 하나 이상의 공유 캐시 유닛들(1106)의 세트, 및 통합 메모리 제어기 유닛들(1114)의 세트에 연결되는 외부 메모리(도시되지 않음)를 포함한다. 공유 캐시 유닛들(1106)의 세트는, 예를 들어, 레벨 2(L2), 레벨 3(L3), 레벨 4(L4) 또는 다른 레벨의 캐시 등의 하나 이상의 중간 레벨 캐시들, 최종 레벨 캐시(LLC) 및/또는 이들의 조합들을 포함할 수 있다. 일 실시예에서는 링 기반 상호접속 유닛(1112)이 통합 그래픽 로직(1108), 공유 캐시 유닛들(1106)의 세트 및 시스템 에이전트 유닛(1110)/통합 메모리 제어기 유닛(들)(1114)을 상호접속하지만, 대안 실시예들은 이러한 유닛들을 상호접속하는 임의 수의 공지된 기술들을 이용할 수 있다. 일 실시예에서, 하나 이상의 캐시 유닛들(1106)과 코어들(1102A-N) 사이에는 일관성이 유지된다.
일부 실시예들에서, 코어들(1102A-N) 중 하나 이상은 멀티-쓰레딩이 가능하다. 시스템 에이전트(1110)는 코어들(1102A-N)을 조정 및 조작하는 컴포넌트들을 포함한다. 시스템 에이전트 유닛(1110)은 예를 들어, PCU(Power Control Unit) 및 디스플레이 유닛을 포함할 수 있다. PCU는 코어들(1102A-N) 및 통합 그래픽 로직(1108)의 전력 상태를 조절하는 데 필요한 로직 및 컴포넌트들이거나 이들을 포함할 수 있다. 디스플레이 유닛은 하나 이상의 외부 접속되는 디스플레이들을 구동하기 위한 것이다.
코어들(1102A-N)은 아키텍처 명령어 세트와 관련하여 동종 또는 이종일 수 있다; 즉, 코어들(1102A-N) 중 둘 이상은 동일 명령어 세트를 실행할 수 있는 반면, 다른 코어들은 그 명령어 세트의 서브세트 또는 상이한 명령어 세트만을 실행할 수 있다.
예시적인 컴퓨터 아키텍처들
도 12 내지 도 15는 예시적인 컴퓨터 아키텍처들의 블록도들이다. 랩톱들, 데스크톱들, 핸드헬드 PC들, 퍼스널 디지털 어시스턴트들, 엔지니어링 워크스테이션들, 서버들, 네트워크 장치들, 네트워크 허브들, 스위치들, 임베디드 프로세서들, 디지털 신호 프로세서들(DSPs), 그래픽 장치들, 비디오 게임 장치들, 셋톱박스들, 마이크로 컨트롤러들, 휴대 전화들, 휴대용 미디어 플레이어들, 핸드헬드 장치들, 및 다양한 다른 전자 디바이스들에 대해 이 기술분야에 알려진 다른 시스템 설계들 및 구성들도 적합하다. 일반적으로, 본원에 개시된 바와 같은 프로세서 및/또는 다른 실행 로직을 통합할 수 있는 매우 다양한 시스템들 또는 전자 디바이스들이 일반적으로 적합하다.
이제 도 12를 참조하면, 본 개시의 일 실시예에 따른 시스템(1200)의 블록도가 도시된다. 시스템(1200)은 하나 이상의 프로세서(1210, 1215)을 포함할 수 있고 이것은 제어기 허브(1220)에 결합된다. 일 실시예에서, 제어기 허브(1220)는 GMCH(Graphics Memory Controller Hub)(1290) 및 IOH(Input/Ouput Hub)(1250)(개별 칩들 상에 존재할 수 있음)를 포함하고; GMCH(1290)는 메모리(1240) 및 코프로세서(1245)에 연결되는 메모리 및 그래픽 제어기들을 포함하고; IOH(1250)는 I/O(Input/Output) 디바이스들(1260)을 GMCH(1290)에 연결한다. 대안적으로, 메모리, 및 그래픽제어기들 중 하나 또는 둘 모두는(본 명세서에서 개시되는 바와 같이) 프로세서 내에 통합되고, 메모리(1240) 및 코프로세서(1245)는 프로세서(1210) 및 IOH(1250)와 단일 칩에 있는 제어기 허브(1220)에 직접 연결된다. 메모리(1240)는 예를 들어, 실행될 때 프로세서로 하여금 본 개시의 임의의 방법을 수행하게 하는 코드를 저장하기 위해 (예를 들어, 메모리 및/또는 전력) 트랜잭션 모듈(1240A)을 포함할 수 있다.
추가적인 프로세서들(1215)의 옵션적 속성이 도 12에 파선들로 표시된다. 각각의 프로세서(1210, 1215)는 본 명세서에 개시되는 처리 코어들 중 하나 이상을 포함할 수 있고, 프로세서(1100)의 일부 버전일 수 있다.
메모리(1240)는, 예를 들어, DRAM(Dynamic Random Access Memory), PCM(Phase Change Memory), 또는 이 둘의 조합일 수 있다. 적어도 일 실시예에 대해, 제어기 허브(1220)는 FSB(Front Side Bus), QPI(QuickPath Interconnect) 등의 지점-대-지점 인터페이스, 또는 유사한 접속(1295) 등의 멀티-드롭 버스를 통해 프로세서(들)(1210, 1215)와 통신한다.
일 실시예에서, 코프로세서(1245)는 예를 들어, 하이-스루풋 MIC 프로세서, 네트워크, 또는 통신프로세서, 압축 엔진, 그래픽 프로세서, GPGPU, 임베디드 프로세서 등의 특수 목적 프로세서이다. 일 실시예에서, 제어기 허브(1220)는 통합 그래픽 가속기를 포함할 수 있다.
아키텍처, 마이크로 아키텍처, 열, 전력 소비 특성들 등을 포함하는 장점의 다양한 메트릭들과 관련하여 물리적 리소스들(1210, 1215) 사이에는 다양한 차이점들이 존재할 수 있다.
일 실시예에서, 프로세서(1210)는 일반적인 타입의 데이터 처리 작업들을 제어하는 명령어들을 실행한다. 명령어들 내에는 코프로세서 명령어들이 내장될 수 있다. 프로세서(1210)는 이러한 코프로세서 명령어들을 부속된 코프로세서(1245)에 의해 실행되어야 하는 타입의 것으로 인식한다. 따라서, 프로세서(1210)는 이러한 코프로세서 명령어들(또는 코프로세서 명령어들을 나타내는 제어 신호들)을 코프로세서 버스 또는 다른 상호접속 상에서 코프로세서(1245)에 발행한다. 코프로세서(들)(1245)는 수신되는 코프로세서 명령어들을 수락 및 실행한다.
이제 도 13을 참조하면, 본 개시의 일 실시예에 따른, 제1의 보다 구체적이고 예시적인 시스템(1300)의 블록도가 도시된다. 도 13에 도시된 바와 같이, 멀티프로세서 시스템(1300)은 점대점 상호접속 시스템이고, 점대점 상호접속(1350)을 통해 결합되는 제1 프로세서(1370) 및 제2 프로세서(1380)를 포함한다. 프로세서들(1370, 1380) 각각은 일부 버전의 프로세서(1100)일 수 있다. 본 개시의 일 실시예에서, 프로세서들(1370, 1380)은 각각의 프로세서들(1210, 1215)이고, 코프로세서(1338)는 코프로세서(1245)이다. 기타 실시예에서는, 프로세서들(1370, 1380)이 각각의 프로세서(1210) 및 코프로세서(1245)이다.
프로세서들(1370, 1380)은 각각의 IMC(integrated memory controller) 유닛들(1372, 1382)을 포함하는 것으로 도시된다. 프로세서(1370)는 또한 그의 버스 제어기 유닛들의 일부로서 점대점(Point-to-Point, P-P) 인터페이스들(1376, 1378)을 포함한다; 유사하게 제2 프로세서(1380)는 P-P 인터페이스들(1386, 1388)을 포함한다. 프로세서들(1370, 1380)은 P-P 인터페이스 회로들(1378, 1388)을 이용하여 점대점(P-P) 인터페이스(1350)를 통해 정보를 교환할 수 있다. 도 13에 도시된 바와 같이, IMC들(1372, 1382)은 프로세서들을 각자의 메모리, 즉, 메모리(1332) 및 메모리(1334)에 연결하며, 이들 메모리는 각 프로세서에 국부적으로 부속되는 메인 메모리의 일부일 수 있다.
프로세서들(1370, 1380)은 점대점 인터페이스 회로들(1376, 1394, 1386, 1398)을 사용하여 개별 P-P 인터페이스들(1352, 1354)을 통해 칩셋(1390)과 정보를 각각의 교환할 수 있다. 칩셋(1390)은 고성능 인터페이스(1339)를 통해 코프로세서(1338)와 정보를 옵션적으로 교환할 수 있다. 일 실시예에서, 코프로세서(1338)는 예를 들어, 하이-쓰루풋 MIC 프로세서, 네트워크, 또는 통신프로세서, 압축 엔진, 그래픽 프로세서, GPGPU, 임베디드 프로세서 등 특수 목적 프로세서이다.
공유된 캐시(도시되지 않음)는 어느 한 프로세서에 포함되거나, 둘 모두의 프로세서의 외부이지만 여전히 P-P 상호접속을 통해 프로세서들과 접속될 수 있어서, 프로세서가 저 전력 모드에 놓이는 경우 어느 한쪽 또는 둘 모두의 프로세서의 로컬 캐시 정보가 공유된 캐시에 저장될 수 있다.
칩셋(1390)은 인터페이스(1396)를 통해 제1 버스(1316)에 연결될 수 있다. 일 실시예에서, 제1 버스(1316)는 주변 컴포넌트 상호접속(PCI) 버스, 또는 PCI 익스프레스 버스 또는 다른 3세대 I/O 상호접속 버스와 같은 버스일 수 있지만, 본 개시의 범위는 이에 한정되지 않는다.
도 13에 도시된 바와 같이, 제1 버스(1316)를 제2 버스(1320)에 결합하는 버스 브리지(1318)와 함께, 다양한 I/O 디바이스들(1314)이 제1 버스(1316)에 연결될 수 있다. 일 실시예에서는, 코프로세서들, 하이-쓰루풋 MIC 프로세서들, GPGPU들, 가속기들(예를 들어, 그래픽 가속기 또는 DSP(Digital Signal Processing) 유닛 등), 필드 프로그래머블 게이트 어레이들 또는 임의의 다른 프로세서 등 하나 이상의 추가적인 프로세서(들)(1315)가 제1 버스(1316)에 연결된다. 일 실시예에서, 제2 버스(1320)는 LPC(Low Pin Count) 버스일 수 있다. 일 실시예에서는, 예를 들어, 키보드 및/또는 마우스(1322), 통신 디바이스들(1327) 및 명령어들/코드 및 데이터(1330)를 포함할 수 있는 디스크 드라이브 또는 기타 대용량 저장 디바이스 등의 저장 유닛(1328)을 포함하는 다양한 디바이스들이 제2 버스(1320)에 연결될 수 있다. 또한, 오디오 I/O(1324)가 제2 버스(1320)에 연결될 수 있다. 다른 아키텍처들도 가능하다는 점에 유의한다. 예를 들어, 도 13의 점대점 아키텍처 대신에, 시스템은 멀티 드롭 버스 또는 다른 그러한 아키텍처를 구현할 수 있다.
이제 도 14를 참조하면, 본 개시의 실시예에 따른 제2의 보다 구체적인 예시적인 시스템(1400)의 블록도가 도시된다. 도 13 및 도 14에서의 유사한 요소들은 유사한 참조 번호들을 가지며, 도 14의 다른 양태들을 모호하게 하는 것을 회피하기 위해서 도 14로부터 도 13의 특정 양태들이 생략되었다.
도 14는 프로세서들(1370, 1380)이 각각 통합 메모리 및 I/O 제어 로직("CL")(1372, 1382)을 포함할 수 있음을 도시한다. 따라서, CL(1372, 1382)은 통합 메모리 제어기 유닛들을 포함하며, I/O 제어 로직을 포함한다. 도 14는 메모리들(1332, 1334)이 CL(1372, 1382)에 결합되어 있을 뿐만 아니라 I/O 디바이스들(1414)이 또한 제어 로직(1372, 1382)에 결합되어 있는 것을 나타내고 있다. 레거시 I/O 디바이스들(1415)은 칩셋(1390)에 연결된다.
이제 도 15를 참조하면, 본 개시의 실시예에 따른 SoC(1500)의 블록도가 도시된다. 도 11에서의 유사한 요소들은 동일한 참조 번호를 갖는다. 또한, 점선 박스는 더욱 향상된 SoC들에 관한 옵션적 특징들이다. 도 15에서, 상호접속 유닛(들)(1502)은: 하나 이상의 코어들(202A-N)의 세트 및 공유 캐시 유닛(들)(1106)을 포함하는 애플리케이션 프로세서(1510); 시스템 에이전트 유닛(1110); 버스 제어기 유닛(들)(1116); 통합되는 메모리 제어기 유닛(들)(1114); 통합되는 그래픽 로직, 영상 프로세서, 오디오 프로세서, 및 비디오 프로세서를 포함할 수 있는 하나 이상의 코프로세서들(1520)의 세트; SRAM(static random access memory) 유닛(1530); DMA(direct memory access) 유닛(1532); 및 하나 이상의 외부 디스플레이들에 결합하기 위한 디스플레이 유닛(1540)에 결합된다. 일 실시예에서, 코프로세서(들)(1520)는, 예를 들어, 네트워크, 또는 통신프로세서, 압축 엔진, GPGPU, 하이-쓰루풋 MIC 프로세서, 임베디드 프로세서 등의 특수 목적 프로세서를 포함한다.
본 명세서에 개시되는 (예를 들어, 메커니즘들의) 실시예들은 하드웨어, 소프트웨어, 펌웨어, 또는 이러한구현 접근법들의 조합으로 구현될 수 있다. 본 개시의 실시예들은 적어도 하나의 프로세서, 데이터 저장 시스템(휘발성 및 불휘발성 메모리 및/또는 저장 요소들을 포함함), 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스를 포함하는 프로그램 가능한 시스템들에서 실행하는 컴퓨터 프로그램들 또는 프로그램 코드로서 구현될 수 있다.
도 13에 예시된 코드(1330)와 같은 프로그램 코드는 본 명세서에 개시된 기능을 수행하기 위한 명령어를 입력하며 출력 정보를 발생하기 위해 적용될 수 있다. 출력 정보는 공지 방식으로 하나 이상의 출력 디바이스에 적용될 수 있다. 본 명세서의 목적으로, 처리 시스템은 예를 들어, 디지털 신호 프로세서(DSP), 마이크로컨트롤러, 주문형 집적 회로(ASIC) 또는 마이크로프로세서와 같은 프로세서를 갖는 임의의 시스템을 포함한다.
프로그램 코드는 프로세싱 시스템과 통신하기 위해 고레벨 절차 또는 객체 지향 프로그래밍 언어로 구현될 수 있다. 프로그램 코드는, 또한, 요구되는 경우, 어셈블리, 또는 기계언어로 구현될 수 있다. 사실상, 본원에 설명되는 메커니즘들은 임의의 특정 프로그래밍 언어로 범위가 한정되지 않는다. 어느 경우에나, 언어는 컴파일되거나 해석되는 언어일 수 있다.
적어도 일 실시예의 하나 이상의 양태들은 기계에 의해 판독될 기계로 하여금 본 명세서에서 설명되는 기술들을 수행하기 위한 논리를 제조하게 하는, 프로세서 내의 다양한 논리를 표현하는, 기계 판독가능 매체 상에 저장되는 전형적인 명령어들에 의해 구현될 수 있다. "IP 코어들"로서 알려진 그러한 표현들은 타입의 기계 판독가능 매체 상에 저장될 수 있으며, 다양한 고객들 또는 제조 설비에 제공되어, 논리, 또는 프로세서를실제로 제조하는 제조 기계들 내에 로딩될 수 있다.
이러한 기계 판독가능 저장 매체들은 하드 디스크, 플로피 디스크, 광 디스크, 컴팩트 디스크 판독 전용 메모리들(CD-ROMs), 재기입 가능 컴팩트 디스크들(CD-RWs) 및 광자기 디스크를 포함하는 임의의 다른 타입의 디스크, 판독 전용 메모리들(ROMs), 동적 랜덤 액세스 메모리들(DRAMs), 정적 랜덤 액세스 메모리들(SRAMs)와 같은 랜덤 액세스 메모리들(RAMs), 소거 가능하고 프로그래밍 가능한 판독 전용 메모리들(EPROMs), 플래시 메모리, 전기적으로 소거 가능하고 프로그래밍 가능한 판독 전용 메모리들(EEPROMs), 위상 변화 메모리(PCM)와 같은 반도체 디바이스, 자기, 또는 광학카드, 또는 전자 명령어들을 저장하기에 적합한 임의의 다른 타입의 매체와 같은 저장 매체를 포함하는 기계 또는 디바이스로 제조되거나 형성되는 파티클들의 타입 배열들을 포함할 수 있지만, 이에 한정되지 않는다.
따라서, 본 개시의 실시예들은, 또한, 명령어들을 포함하거나, 또는 본 명세서에 개시되는 구조들, 회로들, 장치들, 프로세서들 및/또는 시스템 특징들을 정의하는, HDL(Hardware Description Language) 등의 설계 데이터를 포함하는 비-일시적이고 타입인 머신 판독가능 매체를 포함한다. 이 실시예들은 프로그램 제품들로도 참조될 수 있다.
에뮬레이션(바이너리 변환, 코드 모핑 등을 포함함)
어떤 경우들에는, 명령어 변환기가 소스 명령어 세트로부터 타겟 명령어 세트로 명령어를 변환하는 데 사용될 수 있다. 예를 들어, 명령어 변환기는 코어에 의해 처리될 하나 이상의 다른 명령어들로 명령어를(예를 들어, 정적 바이너리 변환, 동적 컴필레이션을 포함하는 동적 바이너리 변환을 이용하여) 변환하거나, 모프하거나, 에뮬레이트하거나, 또는 다른 방식으로 변환할 수 있다. 명령어 변환기는 소프트웨어, 하드웨어, 펌웨어, 또는 그의 조합으로 구현될 수 있다. 명령어 변환기는 온-프로세서(on processor)에, 오프-프로세서(off processor)에, 또는 일부는 온-프로세서에 일부는 오프-프로세서에 있을 수 있다.
도 16은 본 개시의 실시예들에 따라 소스 명령어 세트 내의 바이너리 명령어들을 타겟 명령어 세트 내의 바이너리 명령어들로 변환하는 소프트웨어 명령어 변환기의 사용을 대조하는 블록도이다. 도시된 실시예에서, 명령어 변환기는 소프트웨어 명령어 변환기이지만, 대안적으로 명령어 변환기가 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 다양한 조합들로 구현될 수 있다. 도 16은 적어도 하나의 x86 명령어 세트 코어(1616)를 갖는 프로세서에 의해 기본적으로 실행될 수 있는 x86 이진 코드(1606)를 발생시키기 위해 고수준 언어(1602)로 된 프로그램이 x86 컴파일러(1604)를 사용하여 컴파일될 수 있다는 것을 나타낸 것이다. 적어도 하나의 x86 명령어 세트 코어를 갖는 프로세서(1616)는, 적어도 하나의 x86 명령어 세트 코어를 갖는 인텔 프로세서와 실질적으로 동일한 결과를 달성하기 위해서, (1) 인텔 x86 명령어 세트 코어의 명령어 세트의 상당 부분, 또는 (2) 적어도 하나의 x86 명령어 세트 코어를 갖는 인텔 프로세서 상에서 실행되는 것을 목적으로 하는 애플리케이션들 또는 다른 소프트웨어의 오브젝트 코드 버전들을 호환가능하게 실행하거나 또는 다른 방식으로 처리함으로써, 적어도 하나의 x86 명령어 세트 코어를 갖는 인텔 프로세서와 실질적으로 동일한 펑션을 수행할 수 있는 임의의 프로세서를 나타낸다. x86 컴파일러(예를 들어, 1604)는 추가적인 링크 처리(linkage processing)를 갖거나 갖지 않고서 적어도 하나의 x86 명령어 세트 코어를 갖는 프로세서(1616) 상에서 실행될 수 있는 x86 바이너리 코드(1606)(예를 들어, 오브젝트 코드)를 발생하도록 작동될 수 있는 컴파일러를 나타낸다. 이와 유사하게, 도 16은 적어도 하나의 x86 명령어 세트 코어가 없는 프로세서(1614)(예컨대, 미국 캘리포니아주 서니베일 소재의 MIPS Technologies의 MIPS 명령어 세트를 실행하는 그리고/또는 미국 캘리포니아주 서니베일 소재의 ARM Holdings의 ARM 명령어 세트를 실행하는 코어들을 갖는 프로세서)에 의해 기본적으로 실행될 수 있는 대안의 명령어 세트 이진 코드(1610)를 발생하기 위해 고수준 언어(1602)로 된 프로그램이 대안의 명령어 세트 컴파일러(1608)를 사용하여 컴파일될 수 있다는 것을 나타낸 것이다. 명령어 변환기(1612)는 x86 바이너리 코드(1606)를, x86 명령어 세트 코어(1614)를 갖지 않는 프로세서에 의해 선천적으로 실행될 수 있는 코드로 변환하는 데 사용된다. 이러한 변환된 코드는 대안적인 명령어 세트 바이너리 코드(1610)와 동일할 가능성이 없는데, 그 이유는 이를 행할 수 있는 명령어 변환기를 제조하기 어렵기 때문이다; 그러나, 변환된 코드는 일반적인 작업을 달성할 것이며, 대안적인 명령어 세트로부터의 명령어들로 이루어질 것이다. 따라서, 명령어 변환기(1612)는, 에뮬레이션, 시뮬레이션, 또는 임의의 다른 프로세스를 통해 x86 명령어 세트 프로세서 또는 코어를 갖지 않는 프로세서 또는 다른 전자 디바이스가 x86 바이너리 코드(1606)를 실행하는 것을 허용하는 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 나타낸다.

Claims (24)

  1. 하드웨어 장치로서,
    코어를 갖는 하드웨어 프로세서;
    각각의 전력 도메인에 대한 전력 관리 명령에 응답하여 복수의 전력 상태들 중 하나로 천이하는 복수의 전력 도메인들;
    전력 트랜잭션 유닛 - 상기 전력 트랜잭션 유닛은:
    동시 실행을 위해 제1 전력 관리 명령을 제1 전력 트랜잭션으로서 할당하고 제2 전력 관리 명령을 제2 전력 트랜잭션으로서 할당하고,
    상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 사이에 충돌이 없을 때 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션의 커미트(commit)를 수행하고,
    상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 사이에 충돌이 있을 때 상기 제1 전력 트랜잭션의 중단과 상기 제2 전력 트랜잭션의 커미트를 수행함 -; 및
    제1 스레드와 제2 스레드가 동일 메모리 어드레스를 변경하는 것이 아니라면, 상기 하드웨어 프로세서의 상기 코어 상의 제1 스레드 및 제2 코어 상의 제2 스레드의 동시 실행 후에 상기 제1 스레드와 상기 제2 스레드의 커미트를 수행하는 메모리 트랜잭션 유닛
    을 포함하는, 하드웨어 장치.
  2. 제1항에 있어서,
    상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 각각은 다중 명령어들을 포함하는, 하드웨어 장치.
  3. 제1항에 있어서, 각각의 도메인에 대한 전력 관리 명령을 수신하는 복수의 전력 상태 레지스터들을 더 포함하는, 하드웨어 장치.
  4. 제3항에 있어서, 상기 충돌은 상기 제2 전력 트랜잭션이 기입한 전력 상태 레지스터에 상기 제1 전력 트랜잭션이 기입하는 것인, 하드웨어 장치.
  5. 제1항에 있어서, 상기 전력 트랜잭션 유닛은 로크(lock)를 발행하지 않는, 하드웨어 장치.
  6. 제1항에 있어서, 상기 충돌은, 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션이 공유 전력 도메인에 대해 충돌하는 전력 관리 명령들을 기입하는 것인, 하드웨어 장치.
  7. 제1항에 있어서, 상기 충돌이 있을 때, 상기 제2 전력 트랜잭션의 실행에 응답한 전력 도메인의 천이는, 상기 제2 전력 트랜잭션의 커미트 후에만 다른 트랜잭션들에 의해 보여지는, 하드웨어 장치.
  8. 제1항에 있어서, 상기 전력 트랜잭션 유닛은 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 사이에 충돌이 있을 때 상기 제2 전력 트랜잭션의 커미트 대신에 상기 제2 전력 트랜잭션의 중단을 수행하는, 하드웨어 장치.
  9. 방법으로서,
    각각의 전력 도메인에 대한 전력 관리 명령에 응답하여 복수의 전력 상태들 중 하나로 천이하는 하드웨어 프로세서를 포함하는 하드웨어 장치의 복수의 전력 도메인들을 제공하는 단계;
    동시 실행을 위해 제1 전력 관리 명령을 제1 전력 트랜잭션으로서 할당하고 제2 전력 관리 명령을 제2 전력 트랜잭션으로서 할당하는 단계;
    상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 사이에 충돌이 없을 때 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션의 커미트를 수행하는 단계;
    상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 사이에 충돌이 있을 때 상기 제1 전력 트랜잭션의 중단과 상기 제2 전력 트랜잭션의 커미트를 수행하는 단계; 및
    제1 스레드와 제2 스레드가 동일 메모리 어드레스를 변경하는 것이 아니라면, 상기 하드웨어 프로세서 상의 제1 스레드 및 제2 스레드의 동시 실행 후에 상기 제1 스레드와 상기 제2 스레드의 커미트를 수행하는 단계
    를 포함하는, 방법.
  10. 제9항에 있어서, 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 각각은 다중 명령어들을 포함하는, 방법.
  11. 제9항에 있어서, 전력 상태 레지스터에서 각각의 도메인에 대한 상기 전력 관리 명령을 수신하는 단계를 더 포함하는, 방법.
  12. 제11항에 있어서, 상기 충돌은 상기 제2 전력 트랜잭션이 기입한 전력 상태 레지스터에 상기 제1 전력 트랜잭션이 기입하는 것인, 방법.
  13. 제9항에 있어서, 상기 방법은 어떤 단계에서도 로크가 발행되지 않는 것을 포함하는, 방법.
  14. 제9항에 있어서, 상기 충돌은, 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션이 공유 전력 도메인에 대해 충돌하는 전력 관리 명령들을 기입하는 것인, 방법.
  15. 제9항에 있어서, 상기 충돌이 있을 때, 상기 제2 전력 트랜잭션의 실행에 응답한 전력 도메인의 천이는, 상기 제2 전력 트랜잭션의 커미트가 수행된 후에만 다른 트랜잭션들에 의해 보여지는, 방법.
  16. 제9항에 있어서, 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 사이에 충돌이 있을 때 상기 제2 전력 트랜잭션의 커미트 대신에 상기 제2 전력 트랜잭션의 중단을 수행하는 단계를 더 포함하는, 방법.
  17. 머신에 의해 처리될 때 방법이 수행되게 하는 프로그램 코드를 저장한 비일시적 머신 판독가능 저장 매체로서, 상기 방법은,
    각각의 전력 도메인에 대한 전력 관리 명령에 응답하여 복수의 전력 상태들 중 하나로 천이하는 하드웨어 프로세서를 포함하는 하드웨어 장치의 복수의 전력 도메인들을 제공하는 단계;
    동시 실행을 위해 제1 전력 관리 명령을 제1 전력 트랜잭션으로서 할당하고 제2 전력 관리 명령을 제2 전력 트랜잭션으로서 할당하는 단계;
    상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 사이에 충돌이 없을 때 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션의 커미트를 수행하는 단계;
    상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 사이에 충돌이 있을 때 상기 제1 전력 트랜잭션의 중단과 상기 제2 전력 트랜잭션의 커미트를 수행하는 단계; 및
    제1 스레드와 제2 스레드가 동일 메모리 어드레스를 변경하는 것이 아니라면, 상기 하드웨어 프로세서 상의 제1 스레드 및 제2 스레드의 동시 실행 후에 상기 제1 스레드와 상기 제2 스레드의 커미트를 수행하는 단계
    를 포함하는, 비일시적 머신 판독가능 저장 매체.
  18. 제17항에 있어서, 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 각각은 다중 명령어들을 포함하는, 비일시적 머신 판독가능 저장 매체.
  19. 제17항에 있어서, 상기 방법은 전력 상태 레지스터에서 각각의 도메인에 대한 상기 전력 관리 명령을 수신하는 단계를 더 포함하는, 비일시적 머신 판독가능 저장 매체.
  20. 제19항에 있어서, 상기 충돌은 상기 제2 전력 트랜잭션이 기입한 전력 상태 레지스터에 상기 제1 전력 트랜잭션이 기입하는 것인, 비일시적 머신 판독가능 저장 매체.
  21. 제17항에 있어서, 상기 방법은 어떤 단계에서도 로크가 발행되지 않는 것을 포함하는, 비일시적 머신 판독가능 저장 매체.
  22. 제17항에 있어서, 상기 충돌은, 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션이 공유 전력 도메인에 대해 충돌하는 전력 관리 명령들을 기입하는 것인, 비일시적 머신 판독가능 저장 매체.
  23. 제17항에 있어서, 상기 충돌이 있을 때, 상기 제2 전력 트랜잭션의 실행에 응답한 전력 도메인의 천이는, 상기 제2 전력 트랜잭션의 커미트가 수행된 후에만 다른 트랜잭션들에 의해 보여지는, 비일시적 머신 판독가능 저장 매체.
  24. 제17항에 있어서, 상기 방법은 상기 제1 전력 트랜잭션과 상기 제2 전력 트랜잭션 사이에 충돌이 있을 때 상기 제2 전력 트랜잭션의 커미트 대신에 상기 제2 전력 트랜잭션의 중단을 수행하는 단계를 더 포함하는, 비일시적 머신 판독가능 저장 매체.
KR1020160065505A 2015-06-27 2016-05-27 트랜잭션적인 전력 관리를 수행하기 위한 하드웨어 장치들 및 방법들 KR101804677B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/752,896 2015-06-27
US14/752,896 US9733689B2 (en) 2015-06-27 2015-06-27 Hardware apparatuses and methods to perform transactional power management

Publications (2)

Publication Number Publication Date
KR20170001577A KR20170001577A (ko) 2017-01-04
KR101804677B1 true KR101804677B1 (ko) 2017-12-04

Family

ID=56080322

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160065505A KR101804677B1 (ko) 2015-06-27 2016-05-27 트랜잭션적인 전력 관리를 수행하기 위한 하드웨어 장치들 및 방법들

Country Status (8)

Country Link
US (2) US9733689B2 (ko)
EP (1) EP3109728A1 (ko)
JP (1) JP6272942B2 (ko)
KR (1) KR101804677B1 (ko)
CN (1) CN106293894B (ko)
BR (1) BR102016012083A2 (ko)
DE (1) DE102016006399A1 (ko)
TW (1) TWI733672B (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10216245B2 (en) * 2015-12-22 2019-02-26 Cray Inc. Application ramp rate control in large installations
US10133341B2 (en) * 2016-06-06 2018-11-20 Arm Limited Delegating component power control
EP3422192B1 (en) * 2017-06-28 2020-08-12 Arm Ltd Address translation data invalidation
US10642341B2 (en) * 2018-03-23 2020-05-05 Juniper Networks, Inc. Selective modification of power states based on conditions
US11340671B2 (en) * 2018-03-30 2022-05-24 Google Llc Protocol level control for system on a chip (SOC) agent reset and power management
KR20200135780A (ko) 2018-03-30 2020-12-03 프로비노 테크놀로지스, 아이엔씨. 인터커넥트와 연관된 가상 채널을 통한 트랜잭션의 부분들 중재하기
CN117716320A (zh) * 2021-07-16 2024-03-15 谷歌有限责任公司 用于功率状态管理的功率定序器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012137946A (ja) 2010-12-27 2012-07-19 Renesas Electronics Corp 半導体装置
JP2013137689A (ja) 2011-12-28 2013-07-11 Renesas Electronics Corp 半導体装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3906015B2 (ja) * 2000-07-12 2007-04-18 株式会社東芝 クロック周波数切り替え機能を有するlsi、計算機システム及びクロック周波数切り替え方法
US7685365B2 (en) * 2004-09-30 2010-03-23 Intel Corporation Transactional memory execution utilizing virtual memory
US9785462B2 (en) * 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
US8423802B2 (en) * 2010-04-07 2013-04-16 Andes Technology Corporation Power scaling module and power scaling unit of an electronic system having a function unit in a standby state which is insensitive to change in frequency or voltage during synchronization
US8601288B2 (en) 2010-08-31 2013-12-03 Sonics, Inc. Intelligent power controller
US8868941B2 (en) 2011-09-19 2014-10-21 Sonics, Inc. Apparatus and methods for an interconnect power manager
CN102681937B (zh) * 2012-05-15 2016-05-18 浪潮电子信息产业股份有限公司 一种缓存一致性协议正确性验证方法
US8984313B2 (en) * 2012-08-31 2015-03-17 Intel Corporation Configuring power management functionality in a processor including a plurality of cores by utilizing a register to store a power domain indicator
US9489307B2 (en) * 2012-10-24 2016-11-08 Texas Instruments Incorporated Multi domain bridge with auto snoop response
US8959576B2 (en) * 2013-03-14 2015-02-17 Intel Corporation Method, apparatus, system for qualifying CPU transactions with security attributes
US9928264B2 (en) * 2014-10-19 2018-03-27 Microsoft Technology Licensing, Llc High performance transactions in database management systems

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012137946A (ja) 2010-12-27 2012-07-19 Renesas Electronics Corp 半導体装置
JP2013137689A (ja) 2011-12-28 2013-07-11 Renesas Electronics Corp 半導体装置

Also Published As

Publication number Publication date
TW201716923A (zh) 2017-05-16
US20160378160A1 (en) 2016-12-29
JP2017016639A (ja) 2017-01-19
CN106293894A (zh) 2017-01-04
CN106293894B (zh) 2020-05-19
JP6272942B2 (ja) 2018-01-31
DE102016006399A1 (de) 2016-12-29
EP3109728A1 (en) 2016-12-28
US10768680B2 (en) 2020-09-08
BR102016012083A2 (pt) 2017-12-12
TWI733672B (zh) 2021-07-21
US20180059766A1 (en) 2018-03-01
US9733689B2 (en) 2017-08-15
KR20170001577A (ko) 2017-01-04

Similar Documents

Publication Publication Date Title
US11347680B2 (en) Processors, methods, systems, and instructions to atomically store to memory data wider than a natively supported data width
KR101804677B1 (ko) 트랜잭션적인 전력 관리를 수행하기 위한 하드웨어 장치들 및 방법들
JP6526609B2 (ja) プロセッサ
US10503517B2 (en) Method for booting a heterogeneous system and presenting a symmetric core view
KR102496402B1 (ko) 사용자-레벨 포크 및 조인 프로세서, 방법, 시스템, 및 명령어
US9870209B2 (en) Instruction and logic for reducing data cache evictions in an out-of-order processor
US9361233B2 (en) Method and apparatus for shared line unified cache
JP2017532643A (ja) 永続ストアフェンスプロセッサ、方法、システム、及び命令
CN108885586B (zh) 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令
US10031697B2 (en) Random-access disjoint concurrent sparse writes to heterogeneous buffers
EP4020190A1 (en) Software visible and controllable lock-stepping with configurable logical processor granularities
KR101806279B1 (ko) 명령어 순서 강제 명령어들의 쌍들, 프로세서들, 방법들, 및 시스템들
KR20170001568A (ko) 영구 커밋 프로세서들, 방법들, 시스템들 및 명령어들
CN108701101B (zh) 处理器系统管理中断事件的基于仲裁器的串行化
CN111752477A (zh) 用于提供具有低开销的存储器原子性的技术
US20140223105A1 (en) Method and apparatus for cutting senior store latency using store prefetching
CN112148106A (zh) 用于处理器的混合预留站的系统、装置和方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant