KR101889756B1 - 전력 효율적 프로세서 아키텍처 - Google Patents
전력 효율적 프로세서 아키텍처 Download PDFInfo
- Publication number
- KR101889756B1 KR101889756B1 KR1020167012948A KR20167012948A KR101889756B1 KR 101889756 B1 KR101889756 B1 KR 101889756B1 KR 1020167012948 A KR1020167012948 A KR 1020167012948A KR 20167012948 A KR20167012948 A KR 20167012948A KR 101889756 B1 KR101889756 B1 KR 101889756B1
- Authority
- KR
- South Korea
- Prior art keywords
- cores
- core
- interrupt
- processor
- logic
- 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
- 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/3293—Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
-
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W52/00—Power management, e.g. TPC [Transmission Power Control], power saving or power classes
- H04W52/02—Power saving arrangements
- H04W52/0209—Power saving arrangements in terminal devices
- H04W52/0261—Power saving arrangements in terminal devices managing power supply demand, e.g. depending on battery level
- H04W52/0274—Power saving arrangements in terminal devices managing power supply demand, e.g. depending on battery level by switching on or off the equipment or parts thereof
- H04W52/028—Power saving arrangements in terminal devices managing power supply demand, e.g. depending on battery level by switching on or off the equipment or parts thereof switching on or off only a part of the equipment circuit blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W88/00—Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
- H04W88/02—Terminal devices
-
- 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
-
- 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/60—Details of cache memory
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
-
- 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
- Y02B—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO BUILDINGS, e.g. HOUSING, HOUSE APPLIANCES OR RELATED END-USER APPLICATIONS
- Y02B70/00—Technologies for an efficient end-user side electric power management and consumption
- Y02B70/30—Systems integrating technologies related to power network operation and communication or information technologies for improving the carbon footprint of the management of residential or tertiary loads, i.e. smart grids as climate change mitigation technology in the buildings sector, including also the last stages of power distribution and the control, monitoring or operating management systems at local level
-
- 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
-
- Y02D10/122—
-
- Y02D10/22—
-
- 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
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Power Sources (AREA)
- Microcomputers (AREA)
- Advance Control (AREA)
Abstract
일 실시 예에서, 본 발명은 가속기로부터 인터럽트를 수신하거나, 인터럽트에 응답해서 재개 신호를 직접 작은 코어에 전송하고 큰 코어의 실행 상태의 서브세트를 제1 작은 코어에 제공하며, 작은 코어가 인터럽트에 연관된 요청을 핸들링할 수 있는지 여부를 판정하고, 판정이 긍정이면 요청에 해당하는 동작을 작은 코어에서 수행하고, 그렇지 않으면 큰 코어 실행 상태와 재개 신호를 큰 코어에 제공하는 방법을 포함한다. 다른 실시 예들도 기술되고 청구된다.
Description
통상, 프로세서는, 예를 들어, 가능한 한 ACPI(Advanced Configuration and Power Interface) 표준(예로, 2006년 10월 10일에 공표된 Rev. 3.0b)에 따른 전력 절감 슬립 모드를 이용한다. 전압 및 주파수 스케일링(DVFS 또는 ACPI 성능 상태(P-상태)) 이외에 이들 소위 말하는 C-상태 코어 저전력 상태(ACPI C-상태)는 코어가 쉬고 있거나 전적으로 이용되지 않을 때 전력을 절감할 수 있다. 그러나, 심지어는 멀티-코어 프로세서 문맥에서도, 한 코어는 종종 비교적 단순한 동작을 수행하기 위해 효율적 휴면 상태에서 깨어나고 이후 휴면 상태로 복귀한다. 이러한 동작은 레이턴시(latency)와 저전력 상태를 빠져나갔다가 복귀함에 따른 전력 소비에 비용이 드므로 전력 효율에 악영향을 줄 수 있다. 상태 이행(transition) 동안 유용한 작업이 완수됨이 없이 어떤 유형의 프로세서들에서는 전력 효율을 떨어뜨릴 때까지 전력이 소모될 수 있다.
저전력 상태를 빠져나갈 때 핸들링될 동작의 예들은 키보드 입력, 타이머 인터럽트, 망 인터럽트 등을 포함한다. 전력 감지 식으로 이들 동작을 핸들링하기 위해서, 현 운영 시스템(OSs)은 더 많은 양의 데이터를 한번에 처리함으로써 또는 주기적인 타이머 인터럽트가 없고 단지 산발적으로 프로그램된 것들이 있는 틱리스(tickless) OS로 이동함으로써 프로그램 행위를 변경한다. 다른 전략은 다수의 인터럽트를 묶어서 동시에 핸들링하는 타이머 코얼레싱(timer coalescing)을 이용하는 것이다. 그러나 프로그램의 행위를 바꾸는 것 이외에도, 이들 선택 모두는 복잡성을 증가시키고 여전히 전력 비효율 동작을 낳는다. 더구나, 어떤 유형의 소프트웨어(예를 들어, 미디어 재생)는 완수해야할 작업이 얼마나 많은가에 관계없이 빈번한 주기적인 웨이크(wake)를 요청함으로써 하드웨어 전력 효율 메커니즘을 무력화시킬 수 있다. 이와 같이, 틱리스/타이머 코얼레싱 전략은 딥 C-상태로부터 불필요한 웨이크를 줄임으로써 약간의 전력을 절감할 수 있지만, 이들은 OS에 대한 외과적인 변경을 필요로 하고 운영 시스템의 새로운 버전이 배포될 때까지는 그러한 변경이 구현되지 않으므로 컴퓨팅 에코시스템(computing ecosystem)을 통해 전파하는데 상당한 양의 시간이 걸릴 수 있다.
도 1은 본 발명의 일 실시 예에 따른 프로세서의 블록 도이다.
도 2는 본 발명의 다른 실시 예에 따른 프로세서의 블록 도이다.
도 3은 본 발명의 일 실시 예에 따른 코어들 간의 재개 흐름 옵션의 흐름도이다.
도 4는 본 발명의 실시 예에 따른 방법의 흐름도이다.
도 5는 본 발명의 실시 예에 따른 실행 상태를 전이(transfer)하기 위한 방법의 흐름도이다.
도 6은 본 발명의 다른 실시 예에 따른 프로세서의 블록 도이다.
도 7은 본 발명의 또 다른 실시 예에 따른 프로세서의 블록 도이다.
도 8은 본 발명의 또 다른 실시 예에 따른 프로세서의 블록 도이다.
도 9는 본 발명의 실시 예에 따른 타이밍 도이다.
도 10은 본 발명의 실시 예에 따른 전력 절감의 그래픽 도이다.
도 11은 본 발명의 실시 예에 따른 시스템의 블록 도이다.
도 2는 본 발명의 다른 실시 예에 따른 프로세서의 블록 도이다.
도 3은 본 발명의 일 실시 예에 따른 코어들 간의 재개 흐름 옵션의 흐름도이다.
도 4는 본 발명의 실시 예에 따른 방법의 흐름도이다.
도 5는 본 발명의 실시 예에 따른 실행 상태를 전이(transfer)하기 위한 방법의 흐름도이다.
도 6은 본 발명의 다른 실시 예에 따른 프로세서의 블록 도이다.
도 7은 본 발명의 또 다른 실시 예에 따른 프로세서의 블록 도이다.
도 8은 본 발명의 또 다른 실시 예에 따른 프로세서의 블록 도이다.
도 9는 본 발명의 실시 예에 따른 타이밍 도이다.
도 10은 본 발명의 실시 예에 따른 전력 절감의 그래픽 도이다.
도 11은 본 발명의 실시 예에 따른 시스템의 블록 도이다.
다양한 실시 예에서, 평균 전력 소비량은 이종 프로세서 환경에서 감소할 수 있다. 이러한 이종 환경은 시스템 및 전력 효율 이유로 결합한 대형 고속 코어들과 소형 전력-효율 코어들을 포함할 수 있다. 더욱이, 실시 예들은 프로세서로 실행되는 운영 시스템(OS)에 투명(transparent)한 방식으로 이러한 전력 제어를 제공할 수 있다. 그러나, 본 발명의 범위는 이종 환경에 한정되지 않으며, 평균 전력을 줄이기 위해(예로, 가능한 한 많은 코어들이 멀티프로세서 환경에서 휴면하도록 유지하기 위해서) 이종 환경(OS-트랜스페어런트이지만 반드시 하드웨어-이종 퍼스펙티브(perspective)일 필요는 없음)에 이용될 수 있다. 실시 예들은 코어들이 종종 휴면하는 태블릿 컴퓨터-기반 및 시스템-온-칩(SoC) 아키텍처와 같은 하드웨어-가속 환경에 특히 적합할 수 있다.
일반적으로, 실시 예들은 모든 웨이크업(wakeup) 신호를 큰 코어보다는 오히려 작은 코어에 조향(steering)함으로써 전력 제어를 제공할 수 있다. 이러한 식으로, 시스템이 95% 아이들(idle)일 때 평균 전력을 충분히 2배 이상 줄일 수 있다. 기술되는 바와 같이, 많은 실시 예에서, 이러한 작은 코어는 OS로부터 격리될 수 있다. 즉, 이러한 작은 코어의 존재는 OS에 알려져 있지 않으며, 그래서 이 코어는 OS에 인비저블(invisible)하다. 이와 같이, 실시 예들은 프로세서 상에서 실행되는 OS 및 애플리케이션들에 투명한 식으로 프로세서 하드웨어를 통해 전력 효율적 프로세서 동작을 제공할 수 있다.
이제, 도 1을 참조해 보면, 본 발명의 일 실시 예에 따른 프로세서의 블록 도가 도시되어 있다. 도 1에서 알 수 있듯이, 프로세서(100)는 다수의 큰 코어, 작은 코어 및 가속기를 갖춘 이종 프로세서일 수 있다. 여기서는 멀티-코어 프로세서의 문맥에서 기술될지라도, 실시 예들이 그에 한정되지 않으며 SoC 또는 다른 반도체-기반 처리 장치 내에 구현될 수 있음을 이해해야 한다. 가속기들은 입력 작업의 큐(queue)를 기반으로, 프로세서 코어들에 전력이 공급되든 그렇지 않든 간에 작업을 실행할 수 있음에 유의하자. 도 1의 실시 예에서, 프로세서(100)는 복수의 큰 코어를 포함하고 있다. 도시된 특정 실시 예에서는, 2개 초과의 그러한 큰 코어가 제공될 수 있다고 이해하지만, 2개의 그러한 코어(110a 및 110b)(일반적으로 큰 코어(110))가 도시되어 있다. 다양한 구현에서, 이들 큰 코어는 비교적 복잡한 파이프라인 아키텍처를 갖고 복잡한 명령 세트 컴퓨팅(CISC) 아키텍처에 따라 동작하는 무질서한 프로세서들일 수 있다.
게다가, 프로세서(100)는 복수의 작은 코어(120a-120n)(일반적으로는 작은 코어들(120))를 더 포함한다. 8개의 그러한 코어가 도 1의 실시예에 도시되어 있을지라도, 본 발명의 범위가 이 양태에 한정되지 않음을 이해해야 한다. 다양한 실시 예에서, 작은 코어들(120)은, 예를 들어, CISC 또는 줄어든 명령 세트 컴퓨팅(RISC) 아키텍처에 따라 명령을 실행하기 위한 전력 효율적 질서 프로세서들(power efficient in-order processors)일 수 있다. 어떤 구현에서, 이들 코어 중 2 이상의 코어는 관련된 처리를 실행하기 위해서 함께 일렬로 연결될 수 있으며, 예를 들어, 수개의 큰 코어들이 전력-절감 상태에 있다면 1 이상의 작은 코어가 활성화되어 작업을 수행할 수 있고 그렇지 않으면 큰 코어들을 깨울 것이다. 많은 실시 예에서, 작은 코어들(120)은 OS에 투명할 수 있지만, 다른 실시 예들에서는 작은 코어와 큰 코어들이 이용가능한 구성 옵션에 따라서 OS에 노출될 수도 있다. 일반적으로, 큰 코어들과 작은 코어들 간의 임의 코어 믹스(mix)가 다양한 실시 예에 이용될 수 있다. 예를 들어, 하나의 작은 코어가 큰 코어마다 제공될 수 있고, 또는 다른 실시 예들에서는 하나의 작은 코어가 다수의 큰 코어들에 연관될 수 있다.
여기에 이용된 바와 같은, 용어 "큰 코어"는 "작은 코어"에 비해서 디자인이 비교적 복잡하고 비교적 큰 양의 칩 자원(real-estate)을 소모할 수 있는 프로세서 코어일 수 있고, "작은 코어"는 디자인이 덜 복잡하고 따라서 더 적은 양의 칩 자원을 소모할 수 있다. 게다가, 작은 코어들은 큰 코어들보다 작은 열 디자인 전력(TDP)을 가질 수 있으므로 큰 코어들보다 전력 효율이 높다. 그러나, 작은 코어들은 큰 코어들에 비해서 그들의 처리 능력이 한정될 수 있음을 이해하자. 예를 들어, 이들 작은 코어는 큰 코어들에서 가능한 모든 동작을 핸들링할 수는 없다. 게다가, 작은 코어들이 명령 처리에 있어 덜 효율적일 수 있다. 즉, 명령은 작은 코어들보다는 큰 코어들에서 더 빠르게 수행될 수 있다.
좀더 알 수 있듯이, 큰 코어들(110)과 작은 코어들(120)은 상호연결(130)에 연결될 수 있다. 이러한 상호연결 구조의 다양한 구현들은 다양한 실시 예에서 실현될 수 있다. 예를 들어, 어떤 구현에서 상호연결 구조는 프론트 사이드 버스(FSB) 아키텍처 또는 인텔® Quick Path Interconnect(QPI) 프로토콜을 따를 수 있다. 다른 실시 예들에서, 상호연결 구조는 주어진 시스템 기본구조를 따를 수 있다.
도 1을 더 참조해 보면, 다수의 가속기(140a-140c)도 또한 상호연결(130)에 연결될 수 있다. 본 발명의 범위는 이에 관해서 한정되지 않을지라도, 가속기들은 오디오 및/또는 비디오 프로세서 등의 미디어 프로세서, 암호 프로세서, 고정 기능 유닛 등을 포함할 수 있다. 이들 가속기는 코어들을 설계한 동일 디자이너들에 의해 설계될 수 있고, 또는 프로세서에 통합된 독립형 3자 지적 소유권(IP) 블록들일 수 있다. 일반적으로 전용 처리 태스크는, 성능이나 전력 소비 관점에서, 큰 코어들이나 작은 코어들에서 수행되는 것보다는 이들 가속기에서 실행되는 것이 더 효율적일 수 있다. 이러한 특정 구현이 도 1의 실시 예에 도시되어 있을지라도, 본 발명의 범위는 이에 관해서 한정되지 않음을 이해하자. 예를 들어, 단지 2개 유형의 코어, 즉 큰 코어와 작은 코어를 갖추는 대신에, 다른 실시 예들은 적어도 큰 코어, 중간 코어 및 작은 코어를 포함하는 다수 계층 코어들을 가질 수 있고, 여기서 중간 코어는 작은 코어보다는 큰 칩 자원을 갖지만 큰 코어보다는 작은 칩 자원을 갖고 큰 코어의 전력 소비와 작은 코어의 전력 소비 사이의 해당 전력을 소비한다. 또 다른 실시 예에서, 작은 코어는, 예를 들어, 큰 코어의 로직 및 구조의 서브세트로서 큰 코어 내에 내장될 수 있다.
더욱이, 다수의 큰 코어와 다수의 작은 코어를 포함하는 것으로, 도 1의 실시 예에 도시되어 있지만, 모바일 프로세서 또는 SoC와 같은 특정 구현들의 경우에, 단지 하나의 큰 코어와 하나의 작은 코어가 제공될 수 있다. 구체적으로, 이제, 도 2를 참조하면, 프로세서(100')가 상호연결(130) 및 가속기(140a-c)와 함께 하나의 큰 코어(110)와 하나의 작은 코어(120)를 포함하는 본 발명의 다른 실시 예에 따른 프로세서의 블록 도가 도시되어 있다. 언급한 바와 같이, 이 구현은 모바일 응용에 적합할 수 있다.
통상적인 큰 코어의 전력 수치의 예로서, 전력 소비는 대략 6000 밀리와트(mW) 정도일 수 있고, 중간 코어의 전력 소비는 대략 500 mW 정도일 수 있고, 매우 작은 코어의 전력 소비는 대략 15 mW일 수 있다. 큰 코어를 깨우는 것을 피하는 구현에서는 유의미한 전력 이득이 성취될 수 있다.
실시 예들은 크고, 적은 전력-효율적 코어들이 그렇지 않을 경우 낮은 휴면 상태에 있을 때보다 더 길게 낮은 전력 휴면 상태에 유지될 수 있게 해준다. 인터럽트들과 다른 코어 웨이킹(waking) 이벤트를 큰 코어들 대신에 작은 코어들에 조향(steering)함으로써, 작은 코어들은 더 오래 작동할 수 있고 더 자주 깨어있지만 데이터 이동과 같은 사소한 태스크를 수행하기 위해서 큰 코어를 깨우는 것보다는 여전히 전력 효율이 더 좋다. 몇몇 동작들에 대해서 이하 기술되는 바와 같이, 큰 코어는, 예를 들어, 작은 코어가 벡터 연산(예로, AVX 연산), 복잡한 어드레싱 모드 또는 플로팅 포인트(FP) 연산을 지원할 수 없으므로, 실행을 위해 파워온될 수 있음에 유의하자. 그러한 경우에, 웨이크 신호는 작은 코어에서 큰 코어로 다시 경로이동될 수 있다.
예를 들어, 프로세서로 하드웨어-가속 1080p 비디오 재생을 수행하는 동안, 코어 C6 상태 안팎으로의 1000번 초과의 이행(transition)들과 거의 1200번의 인터럽트가 초당 발생한다. 이들 웨이크 이벤트의 일부라도 본 발명의 실시 예를 이용하여 작은 코어로 재조향되면, 유의미한 전력 절감이 성취될 수 있다.
도 3은 본 발명의 일 실시 예에 따른 코어들 간의 재개 흐름 옵션을 요약하고 있다. 도 3에 도시된 바와 같이, 소프트웨어 도메인(210)과 하드웨어 도메인(220)이 존재한다. 일반적으로, 소프트웨어 도메인(210)은, 예를 들어, ACPI 구현에 따른 전력 관리에 관해서 OS 동작에 해당한다. 일반적으로 OS는 그의 스케줄링 메커니즘에 따라 다가오는 태스크들에 대한 그의 지식을 기반으로, 다수의 C-상태 중 하나를 선택하여 프로세서에게 저전력 모드로 들어가도록 요청할 수 있다. 예를 들어, OS는 요청되고 있는 특정한 저전력 상태를 포함하는 MWAIT 호(call)를 발행할 수 있다.
일반적으로, C0은 명령이 실행되는 정상 동작 상태에 대응하고, 상태 C1-C3는 각각이 상이한 레벨의 전력 절감과 C0 상태로 복귀하기 위한 대응하는 상이한 레벨의 레이턴시(latency)를 갖는 OS 저전력 상태들이다. 도시된 바와 같이, 프로세서의 예상 작업량에 따라, OS는 논-아이들 상태, 예를 들어, OS C0 또는 다수의 아이들 상태, 예를 들어, OS C-상태 C1-C3 중 하나를 선택할 수 있다. 이들 아이들 상태 각각은 프로세서 하드웨어의 제어를 받는 대응하는 하드웨어 저전력 상태에 매핑(map)될 수 있다. 그러므로, 프로세서 하드웨어는 주어진 OS C-상태를 대응하는 하드웨어 C-상태에 매핑할 수 있고, 이는 OS가 지시하는 것보다 더 큰 전력 절감을 제공할 수 있다. 일반적으로, 라이터 C-상태(lighter C-states)(예를 들어, C1)는 전력을 덜 절감하지만 디퍼 C-상태(deeper C-states)(예를 들어, C3)보다 낮은 재개 시간을 갖는다. 다양한 실시 예에서, 하드웨어 도메인(220)과 프로세서 C-상태들에 대한 OS C-상태들의 매핑은 프로세서의 전력 제어 유닛(PCU)에 의해 실행될 수 있고, 본 발명의 범위는 이에 관해서 한정되지 않는다. 이러한 매핑은 OS 기반 전력 관리 요청의 선행 히스토리(prior history)에 기반을 둘 수 있다. 또한, 판정은 전체 시스템의 상황, 구성 정보 등에 기반을 둘 수 있다.
게다가, PCU 또는 다른 프로세서 로직은 모든 웨이크 이벤트를 가장 작은 가용 코어(이는 다양한 실시 예에서 OS 인비저블 코어일 수 있음)에 보내도록 구성될 수 있다. 도 3에서 볼 수 있는 바와 같이, 주어진 하드웨어-기반 아이들 상태에서 나갈 때, 이 상태가 이 가장 작은 코어로 전이되도록 가장 작은 가용 코어에 대한 직접 제어가 재개된다. 대조적으로, 종래의 하드웨어/소프트웨어 재개에서는 제어가 단지 큰 코어로 복귀한다. 일반적으로, OS는 아키텍처가 하드웨어 C-상태에 대해 매핑하는 예상된 아이들 시간 및 재개 레이턴시 필요요건을 기반으로 C-상태를 선택한다. 이와 같이, 도 3의 실시 예에서 알 수 있듯이, 모든 재개 신호(예로, 인터럽트)는 가장 작은 가용 코어로 라우트되고, 이는 재개 동작을 핸들링할 수 있는지 여부를 판정하고, 또는 대신에 웨이크 신호를 큰 코어에 연속해서 전송할 것이다. 실시 예들은 기존의 P-상태들 또는 C-상태 오토-디모션(auto-demotion)을 방해하지 않음을 유의해야 하며, C-상태 오토-디모션에서는 하드웨어가 측정된 실험 효율을 기반으로 낮은 재개 레이턴시를 이용해 자동으로 하드웨어 C-상태를 선택한다. PCU 또는 다른 프로그램어블 엔티티는 인입 웨이크 이벤트들을 검사해서 어느 코어(크거나 작은)에 라우트해야 하는지 판정할 수 있다는 점에 유의하자.
위에 기술된 바와 같이, 어떤 구현들에서, 작은 코어 그 자체는 OS와 애플리케이션 소프트웨어로부터 숨겨져 있을 수 있다. 예를 들어, 작은-큰 코어 쌍은 애플리케이션 소프트웨어로부터 추출되어 숨겨져 있을 수 있다. 저전력 상태에서, 모든 코어는 휴면할 수 있지만 가속기(예로, 비디오 디코드 가속기)는 디코딩 태스크와 같은 주어진 태스크를 실행한다. 가속기가 데이터를 소진할 때, 가속기는 작은 코어로부터 있을 수 있는 추가 데이터를 요청하기 위해 깨우는 웨이크 신호를 보내며, 이러한 간단한 데이터 이동 동작이 큰 코어를 깨우지 않고서 완수될 수 있다고 판정하고, 그럼으로써 전력이 절감된다. 타이머 인터럽트가 도착하여 작은 코어가 깨어나고 대신에 복소 벡터 연산(256-비트 AVX 명령과 같은)이 명령 스트림에 존재함이 검출되면, 레이턴시가 감소할 수 있도록 복잡한 명령(및 이 스트림 내의 다른 명령)을 핸들링하기 위해 큰 코어가 깨워질 수 있다. 대안 구현에서, PCU 내에 위치해 있거나 PCU 근방의 다른 언코어(uncore) 위치에 있을 수 있거나 글로벌 상호연결에 관한 하드웨어 로직의 개별 섹션으로서 또는 작은 코어의 내부 제어 로직에 대한 추가로서 글로벌 하드웨어 관측 메커니즘은 작은 코어가 AVX 명령을 접하는 것을 검출할 수 있고 정의되지 않은 명령 폴트(fault)를 생성할 수 있으며, 이 폴트는 작은 코어를 셧다운(shut down)시킬 수 있고 큰 코어를 깨운 후에 큰 코어에 명령 스트림을 다시 조향할 수 있다. 이러한 행위는 명령을 넘어서서 구성이나 특징부들에까지 확장할 수 있음을 유의하자. 작은 코어가 예를 들어 단지 큰 코어에만 존재하는 구성 공간에 대한 기록(write)을 접하면, 이는 큰 코어의 웨이크를 요청할 수 있다.
이제, 도 4를 참조해 보면, 본 발명의 실시 예에 따른 방법의 흐름도가 도시되어 있다. 도 4의 방법은 주어진 구현에 따라서 다양한 에이전트에 의해 수행될 수 있음에 유의하자. 예를 들어, 어떤 구현들에서, 방법(300)은 시스템 에이전트나 프로세서의 언코어 부분에 있을 수 있는 전력 제어 유닛과 같은 프로세서 내의 시스템 에이전트 회로에 의해서 부분적으로 구현될 수 있다. 다른 실시 예에서, 방법(300)은, 예를 들어, 상호연결 구조에 연결된 가속기들로부터 인터럽트들을 수신하여 이들 인터럽트를 선택된 위치에 포워드할 수 있는 상호연결 구조 내의 전력 제어 로직과 같은 상호연결 로직에 의해 부분적으로 구현될 수 있다.
도 4에서 볼 수 있는 바와 같이, 방법(300)은 크고 작은 코어들을 휴면 상태에 배정하는 것으로 시작할 수 있다(블록 310). 즉, 코어들에서는 액티브한 동작이 실행되고 있지 않다고 가정한다. 이와 같이, 이들은 전력 소비를 줄이기 위해서 선택된 저전력 상태에 배정되어 있을 수 있다. 코어들이 활성이지 않을 수 있을지라도, 1 이상의 가속기와 같은 프로세서 또는 SoC 내의 다른 에이전트들은 태스크를 수행하고 있을 수 있다. 블록 320에서, 인터럽트는 그러한 가속기로부터 수신될 수 있다. 이러한 인터럽트는 가속기가 태스크를 완성했을 때, 에러를 접했을 때 또는 가속기가 추가 데이터를 필요로 하거나 다른 처리가 주어진 코어와 같은 다른 컴포넌트에 의해 수행되어야 할 때 전송될 수 있다. 제어는 다음 블록 330으로 진행하고 여기서 로직은 재개 신호를 작은 코어에 직접 전송할 수 있다. 즉, 로직은 큰 코어와 작은 코어들이 저전력 상태에 있을 때는 재개 신호를 작은 코어(또는 시스템 구현에 따라서 복수의 그러한 작은 코어들 중 선택된 코어)에 항상 전송하도록 프로그램될 수 있다. 인터럽트들을 직접 그리고 항상 작은 코어에 전송함으로써, 작은 코어가 요청된 동작을 핸들링할 수 있는 인터럽트의 많은 순간 동안, 큰 코어에 의한 큰 전력 소비가 방지될 수 있다. 성능과 전력 간의 균형을 맞추기 위해서 원하는 만큼 특정 인터럽트 소스들이 항상 한 코어 또는 다른 코어에 항상 라우트되도록, 특정한 유형의 필터링 또는 캐싱(caching) 메커니즘이 블록 330에 추가될 수 있음에 유의하자.
도 4를 더 참조해보면, 제어는 다이아몬드 340으로 진행하고, 여기서 작은 코어가 인터럽트에 연관된 요청을 핸들링할 수 있는지 여부가 판정될 수 있다. 본 발명의 범위는 이에 연관해서 한정되지 않을지라도, 어떤 실시 예들에서는 이러한 판정은 작은 코어가 깨어난 후 작은 코어 그 자체에서 실행될 수 있다. 또는 도 4의 방법을 수행하는 로직이 이 판정을 실행할 수 있다(그리고 이 경우에 이러한 분석은 재개 신호를 작은 코어에 전송하기 전에 실행될 수 있다).
일례로, 작은 코어는 작은 코어의 성능 필요요건 및/또는 명령 세트 아키텍처(ISA) 능력을 기반으로 요청된 동작을 핸들링할 수 있는지 여부를 판정할 수 있다. 작은 코어가 ISA 지원이 없어서 요청된 동작을 핸들링할 수 없다면, 작은 코어의 프론트 엔드 로직은 수신된 명령 스트림을 분석하고 이 스트림 내의 적어도 한 명령이 작은 코어에 의해 지원되지 않는다고 판정할 수 있다. 따라서, 작은 코어는 정의되지 않은 명령 폴트를 발행할 수 있다. 이러한 정의되지 않은 폴트는 PCU(또는 다른 엔티티)에 전송될 수 있고, PCU는 이 폴트와 작은 코어의 상태를 분석하여 정의되지 않은 폴트가 명령을 처리하기 위한 하드웨어 지원이 없는 작은 코어의 결과물인지 여부, 또는 대신에 이 폴트가 진짜 정의되지 않은 폴트인지 여부를 판정할 수 있다. 후자의 경우에, 정의되지 않은 폴트는 추가 처리를 위해 OS에 포워드될 수 있다. 이 폴트가 명령을 핸들링하기 위한 적절한 하드웨어 지원이 없는 작은 코어에 기인한 것이면, PCU는 이 작은 코어에 전이된 실행 상태를 해당하는 큰 코어에 전이하여 요청된 명령(들)을 핸들링할 수 있다.
다른 실시 예들에서, 작은 코어와 큰 코어 간의 실행 상태의 전이는 작은 코어가 너무 긴 시간 동안 실행하고 있었거나 성능 레벨이 너무 낮다고 판정될 때 발생할 수 있다. 즉, 작은 코어가 많은 수천 또는 수백만 프로세서 사이클 동안 요청된 태스크를 수행하고 있었다고 가정한다. 큰 코어에서 좀더 빠른 실행이 가능하기 때문에, 태스크를 좀더 빠르게 종결하기 위해서 큰 코어를 인에이블하여 상태를 큰 코어에 전이함으로써 큰 전력 절감이 이루어질 수 있다.
도 4를 더 참조하면, 요청된 동작이 작은 코어에서 핸들링될 수 있다고 판정되면, 제어는 블록 350으로 가고, 여기서 동작은 작은 코어에서 실행된다. 예를 들어, 요청된 동작이 데이터 이동 동작이라고 가정하면, 작은 코어는 요청된 처리를 실행할 수 있고, 작은 코어에 계류중인 다른 태스크가 없다면, 이는 다시 저전력 상태에 배정될 수 있다.
대신에 다이아몬드 340에서 작은 코어가 요청된 동작을 핸들링할 수 없는 것으로 판정되면, 예를 들어, 이 동작이 작은 코어가 핸들링하도록 구성되지 않은 비교적 복잡한 동작이면, 제어는 블록 360으로 간다. 여기서는 큰 코어가 파워업되도록 웨이크업 신호가, 예를 들어, 작은 코어로부터 직접 큰 코어로 전송된다. 따라서, 제어는 블록 370으로 가고 여기서 요청된 동작이 큰 코어에서 수행될 수 있다. 도 4의 실시 예에서 특정 세트의 동작을 이용해 기술되었을지라도, 본 발명의 범위가 이에 관해서 한정되지 않음을 이해해야 한다.
이와 같이, 다양한 실시 예에서, 큰 코어를 깨우지 않고서 하드웨어 인터럽트들 및 다른 웨이크 신호가 직접 작은 코어에 라우트되게 해주는 메커니즘이 제공될 수 있다. 다른 실시 예들에서, 작은 코어 그 자체 또는 감시 에이전트는 웨이크 신호 및 처리가 큰 코어를 깨우지 않고도 완성될 수 있는지 여부를 판정할 수 있음을 유의하자. 대표적인 경우에, 작은 코어는 큰 코어보다 전력 효율이 훨씬 클 수 있고 결과적으로 큰 코어가 지원하는 명령들의 서브 세트만을 지원할 수 있다. 그리고, 저전력 상태로부터 깨울 때 수행되는 많은 동작들이 간단하고 좀더 전력-효율적인 코어에 분담될 수 있어서 이종 환경(다양한 사이즈의 많은 코어들이 성능 또는 전력 효율 이유로 시스템에 포함되어 있는 환경)에서 큰 좀더 강력한 코어를 깨울 필요가 방지될 수 있다.
이제, 도 5를 참조하면, 본 발명의 실시 예에 따른 실행 상태를 전이하기 위한 방법의 흐름도가 도시되어 있다. 도 5에 도시된 바와 같이, 방법(380)은 일 실시 예에서 PCU의 로직에 의해 수행될 수 있다. 이 로직은 큰 코어를 저전력 상태에 배정하라는 요청에 응답해서 트리거될 수 있다. 그러한 요청에 응답해서, 방법(380)은 큰 코어의 실행 상태가 일시 저장 영역에 저장될 수 있는 블록 382에서 시작할 수 있다. 이러한 일시 저장 영역은 코어에 연관된 전용 상태 세이브 영역일 수 있고, 또는 이는 마지막 레벨 캐시(LLC)와 같은 공유 캐시 내에 있을 수 있음에 유의하자. 본 발명의 범위가 이에 관해서 한정되지 않을지라도, 실행 상태는 범용 레지스터, 상황 및 구성 레지스터, 실행 플래그 등을 포함할 수 있다. 게다가, 이때, 큰 코어를 저전력 상태에 배정되게 하는 추가 동작이 수행될 수 있다. 그러한 동작은 주어진 코어의 셧다운을 위한 시그널링은 물론이고 내부 캐시 및 다른 상태의 플러싱(flushing)을 포함한다.
도 5를 더 참조하면, 작은 코어가 재개되었는지 여부가 판정될 수 있다(다이아몬드 384). 이러한 재개는, 예를 들어, 프로세서의 가속기로부터 나오는 인터럽트에 응답해서 수신된 재개 신호의 결과로 나타날 수 있다. 작은 코어 재개의 일환으로, 제어는 블록 386으로 가고, 이 블록에서 큰 코어 상태의 적어도 일부는 일시 저장 영역으로부터 추출될 수 있다. 특히, 이러한 추출된 부분은 작은 코어에 의해 이용될 큰 코어의 실행 상태의 해당 일부일 수 있다. 예로, 이러한 상태 부분은 메인 레지스터 콘텐츠, 특정 실행 플래그와 같은 다양한 플래그, 머신 상태 레지스터 등을 포함할 수 있다. 그러나, 작은 코어 내의 해당 실행 유닛들이 없는 큰 코어 내에 존재하는 1 이상의 실행 유닛에 연관된 상태와 같은 특정 상태는 추출될 수 없다. 이와 같이 추출된 상태의 부분은 작은 코어에 전송되고(블록 388), 그럼으로써 작은 코어가 주어진 인터럽트에 응답하여 적절한 모든 동작들을 수행하도록 인에이블된다. 도 5의 실시 예에서 이러한 특정 구현이 도시되었을지라도, 본 발명의 범위가 이에 관해서 한정되지 않음을 이해해야 한다.
이제, 도 6을 참조해 보면, 본 발명의 실시 예에 따른 프로세서의 블록 도가 도시되어 있다. 도 6에 도시된 바와 같이, 프로세서(400)는 OS에 노출될 수 있는 제1 복수의 코어(4101-410n) 및 OS에 투명한 제2 복수의 코어(410a-x)를 포함하는 멀티코어 프로세서일 수 있다.
도시된 바와 같이, 다양한 코어들이 상호연결(415)를 통해서 다양한 컴포넌트를 포함하는 시스템 에이전트 또는 언코어(420)에 연결될 수 있다. 도시된 바와 같이, 언코어(420)는 마지막 레벨 캐시일 수 있는 공유 캐시(430)를 포함할 수 있다. 게다가, 언코어는 집적 메모리 제어기(440), 다양한 인터페이스(450a-n), 전력 제어 유닛(455) 및 어드밴스드 프로그램어블 인터럽트 제어기(APIC)(465)를 포함할 수 있다.
PCU(450)는 본 발명의 실시 예에 따른 전력 효율 동작을 인에이블하기 위한 다양한 로직을 포함할 수 있다. 도시된 바와 같이, PCU(450)는 위에 기술된 바와 같이 웨이크업을 수행할 수 있는 웨이크업 로직(452)을 포함할 수 있다. 그래서 로직(452)은 항상 작은 코어를 먼저 깨우도록 구성될 수 있다. 그러나, 이러한 로직은 특정 상황에서는 그러한 작은 코어 직접 웨이크업을 실행하지 않도록 동적으로 구성될 수 있다. 예를 들어, 시스템은, 예를 들어, 이 시스템이 배터리로 운영되는 모바일 시스템일 때는 전력 절감 동작을 위해 동적으로 구성될 수 있다. 그러한 상황에서, 로직은 항상 작은 코어를 깨우도록 구성될 수 있다. 대신에, 이 시스템이 서버 시스템, 데스크톱 또는 벽 전원에 연결되는 랩톱 시스템이면, 실시 예들은 전력 절감보다는 레이턴시 및 성능을 선택할 수 있게 사용자-기반 선택을 제공할 수 있다. 이와 같이 로직(452)은 그러한 경우에는 인터럽트에 응답해서 작은 코어를 깨우기보다는 큰 코어를 깨우도록 구성될 수 있다. 큰 코어의 유사한 웨이크업은 많은 수의 작은 코어 웨이크업이 큰 코어로 방향수정된 것으로 판정되었을 때 수행될 수 있다.
전력 효율 동작을 더 가능하게 하기 위하여, PCU(450)는 큰 코어와 작은 코어 간의 실행 상태의 전이를 수행할 수 있는 상태 전이 로직(454)을 더 포함할 수 있다. 위에 기술된 바와 같이, 이러한 로직은 저전력 상태 동안 일시 저장소에 저장된 큰 코어의 실행 상태를 취하고 작은 코어 웨이크업시 이 상태의 적어도 일부를 추출해서 작은 코어에 제공하는데 이용될 수 있다.
더욱이, PCU(450)는 인터럽트 히스토리 저장소(456)를 포함할 수 있다. 그러한 저장소는 시스템 동작 동안 발생한 인터럽트 및 인터럽트가 작은 코어에 의해서 성공적으로 핸들링되었는지 여부를 각각이 식별하는 복수의 엔트리를 포함할 수 있다. 이 히스토리를 기반으로, 주어진 인터럽트가 수신될 때, 이 저장소의 해당 엔트리는 동일 유형의 이전 인터럽트가 작은 코어에 의해서 성공적으로 핸들링되었는지 여부를 판정하기 위해 접근될 수 있다. 그렇다면, PCU는 새로운 인입 인터럽트를 동일한 작은 코어로 보낼 수 있다. 대신에 이 히스토리를 기반으로 이러한 유형의 인터럽트가 작은 코어에 의해 성공적으로 핸들링되지 않았다고(또는 만족스럽지 않게 낮은 성능으로 처리되었다고) 판정되면, 이 인터럽트는 대신에 큰 코어에 전송될 수 있다.
도 6을 더 참조하면, PCU(450)는 정의되지 않은 핸들링 로직(458)을 더 포함할 수 있다. 그러한 로직은 작은 코어가 발행한 정의되지 않은 폴트를 수신할 수 있다. 이 로직을 기반으로, 작은 코어 내의 정보가 접근될 수 있다. 이후 정의되지 않은 폴트가 작은 코어 내의 명령에 대한 지원 결핍이나 다른 이유의 결과인지 여부가 판정될 수 있다. 이러한 판정에 응답해서, 이 로직은 작은 코어의 상태를 큰 코어 실행 상태(일시 저장 영역에 저장된)의 나머지 부분과 합병하여 인터럽트의 핸들링을 위해 큰 코어에 전송하거나 추가 핸들링을 위해 정의되지 않은 폴트를 OS에 전송할 수 있다. 작은 코어가 인터럽트를 핸들링할 수 없다고 판정될 때, 작은 코어에 제공된 실행 상태의 부분은 작은 코어로부터 취해져서 다시 일시 저장 위치에 세이브되며, 따라서 작은 코어는 파워다운된다. 큰 코어의 나머지 실행 상태와 함께 이러한 합병된 상태는 다시 큰 코어에 제공될 수 있고 큰 코어는 작은 코어가 핸들링할 수 없는 인터럽트를 핸들링하도록 인에이블할 수 있다. 또한 인터럽트 히스토리 저장소(456) 내의 엔트리는 작은 코어에 의한 그러한 잘못된 핸들링에 응답해서 기록될 수 있다. 도 6의 실시 예에 이러한 특정 로직이 도시되어 있을지라도, 본 발명의 범위가 이에 관해서 한정되지 않음을 이해해야 한다. 예를 들어, PCU(450)의 다양한 로직은 다른 실시 예에서는 단일 로직 블록으로 구현될 수 있다.
APIC(465)는, 예를 들어, 가속기로부터 발행된 다양한 인터럽트를 수신할 수 있고 이들 인터럽트를 적절하다면 주어진 1 이상의 코어에 보낼 수 있다. 어떤 실시 예들에서는, 작은 코어들을 OS에 숨겨둔 채로 유지하기 위해, APIC(465)는 인입 인터럽트들을 동적으로 다시 매핑할 수 있고, 이들 인터럽트 각각은 큰 코어에 연관된 APIC ID로부터 작은 코어에 연관된 APIC ID까지 그에 연관된 APIC 식별자를 포함할 수 있다.
도 6을 더 참조해 보면, 프로세서(400)는, 예를 들어, 메모리 버스를 통해서 시스템 메모리(460)와 통신할 수 있다. 게다가, 인터페이스들(450)에 의해서 주변 장치, 대용량 저장소 등과 같은 다양한 오프-칩 컴포넌트들에 접속될 수 있다. 도 6의 실시 예에서 이러한 특정 구현이 도시되었지만, 본 발명의 범위는 이에 관해서 한정되지 않는다.
다양한 아키텍처가 큰 코어와 작은 코어의 서로 다른 결합 또는 통합을 가능하게 한다는 점에 유의하자. 예로서, 이들 이질적인 코어들의 결합 정도는 다이 면적, 전력, 성능 및 반응에 관련된 다양한 엔지니어링 최적화 매개변수에 따를 수 있다.
이제, 도 7을 참조하면, 본 발명의 다른 실시 예에 따른 프로세서의 블록 도가 도시되어 있다. 도 7에 도시된 바와 같이, 프로세서(500)는 큰 코어(510)와 작은 코어(520)를 포함하는 참 이종 프로세서일 수 있다. 도시된 바와 같이, 각 프로세서는 그 자신의 전용 캐시 메모리 계층구조, 즉 레벨 1 및 레벨 2 캐시 메모리를 포함할 수 있는 캐시 메모리(515 및 525)에 연관될 수 있다. 이어서, 코어들은 링 상호연결(530)을 통해서 함께 연결될 수 있다. 다수의 가속기(540a 및 540b) 및 LLC, 즉 공유 캐시일 수 있는 L3 캐시(550)도 링 상호연결에 연결될 수 있다. 이러한 구현에서, 실행 상태는 링 상호연결(530)를 통해서 2개 코어 간에 전이될 수 있다. 위에 기술한 바와 같이, 큰 코어(500)의 실행 상태는 주어진 저전력 상태로 들어가기 전에 캐시(550)에 저장될 수 있다. 이후 작은 코어(520)의 웨이크업시에, 이 실행 상태의 적어도 한 서브세트는 작은 코어가 그의 웨이크업을 트리거한 동작의 실행을 준비하도록 작은 코어에 제공될 수 있다. 그래서, 도 7의 실시 예에서, 코어들은 이 링 상호연결을 통해서 느슨하게 연결된다. 하나의 큰 코어와 하나의 작은 코어가 예시의 용이함을 위해 도시되어 있을지라도, 본 발명의 범위는 이에 관해서 한정되지 않음을 이해해야 한다. 도 7의 구현과 같은 구현을 이용하여, 교환될 상태나 통신이 링 아키텍처(이는 버스나 패브릭 아키텍처일 수 있음)를 통해서 핸들링될 수 있다. 또는, 다른 실시 예에서, 이러한 통신은 두 코어 간의 전용 버스를 통해서일 수 있다(도 7에는 도시되지 않음).
이제, 도 8을 참조하면, 본 발명의 다른 실시 예에 따른 프로세서의 블록 도가 도시되어 있다. 도 8에 도시된 바와 같이, 프로세서(500')는 큰 코어와 작은 코어 간에 견고한 결합이나 통합이 있는 하이브리드 이종 프로세서일 수 있다. 구체적으로 도 8에 도시된 바와 같이, 큰 코어(510)와 작은 코어(520)는 공유 캐시 메모리(518)를 공유할 수 있고, 이 메모리는 다양한 실시 예에서 레벨 1 및 레벨 2 캐시를 포함할 수 있다. 이와 같이, 실행 상태가 이러한 캐시 메모리를 통해서 코어들 중 하나에서 다른 코어로 전이될 수 있어, 링 상호연결(530)을 통한 통신의 레이턴시가 방지된다. 이러한 배열은 감소한 데이터 이동 오버헤드와 코어들 간의 빠른 통신에 기인해 저전력을 가능하게 해주지만 그만큼 유연성이 있을 수는 없다는 점에 유의하자.
유념해야 할 점은 도 7 및 도 8은 단지 2개의 가능한 구현을 예시하고 있다는(그리고 제한된 수의 코어를 보여주고 있다는) 것이다. 코어의 다양한 배열, 2개 스킴의 결합, 2개보다 많은 유형의 코어들, 등을 포함해서 좀더 다양한 구현이 가능하다. 또한 도 8의 변형에서는, 2개의 코어가 실행 유닛, 명령 포인터 또는 레지스터 파일과 같은 어떤 컴포넌트를 공유하는 것도 가능하다.
논의된 바와 같이, 실시 예들은 운영 시스템에 완전하게 투명하고 비가시적일 수 있고, 그래서 소프트웨어가 변경되지 않으며 오직 C-상태로부터의 재개 시간의 증가가 최소화될 수 있다. 다른 실시 예들에서는, 작은 코어들의 존재 및 이용가능성이 OS에 노출될 수 있어 OS는 인터럽트를 작은 코어와 큰 코어 중에서 어느 코어에 제공해야할지를 판정할 수 있다. 더욱이, 실시 예들은 큰 코어 및 작은 코어를 OS에 노출하거나 작은 코어들이 노출되는지 그렇지 않은지 여부를 구성하기 위한 메커니즘을 기본 입력 출력 시스템(BIOS)과 같은 시스템 소프트웨어에서 제공할 수 있다. 실시 예들은 C-상태로부터의 뚜렷한 재개 시간을 증가시킬 수 있으나, 이는 재개 레이턴시들에서의 현재 플랫폼 변화로서 허용될 수 있고, 현재 코어의 상태가 저장되고 있는 동안에는 유용한 작업이 행해지지 않는다. 얼마나 다른 크고 작은 코어들이 있어야 하는지에 대한 비율은 대수롭지 않은 차이로부터 중요한 마이크로아키텍처 구조 차이에 이르기까지 다양할 수 있다. 다양한 실시 예에 따르면, 이종 코어들 간의 가장 주된 구분자는 코어들이 소비하는 다이 면적 및 전력일 수 있다.
어떤 구현들에서는, 큰 코어가 재개시 대부분의 시간 동안 깨어있다고 판정되면, 먼저 작은 코어를 깨우는 것을 우회하여 적어도 성능을 보전하기 위해 미리 정해진 기간 동안 큰 코어를 직접 깨울 수 있게 해주는 제어 메커니즘이 제공될 수 있다. 어떤 실시 예들에서 모든 인터럽트와 다른 웨이크 신호를 작거나 큰 코어에 보편적으로 다시 조향하는 메커니즘은 애플리케이션 및 시스템의 전력 및 성능 필요요건에 따라서, 소프트웨어, 시스템 및 사용자-레벨 소프트웨어에 노출될 수 있다. 그러한 일례로, 특정된 코어에 대한 웨이크업 동작의 조향을 수행하기 위해 사용자-레벨 명령이 제공될 수 있다. 그러한 명령은 MWAIT-형 명령의 변형일 수 있다.
어떤 실시 예들에서는, 가속기는 요청된 동작이 비교적 단순한 동작이라 작은 코어에서 효율적으로 핸들링될 수 있음을 나타내기 위한 힌트(hint)를 인터럽트와 함께 PCU 또는 다른 관리 에이전트에게 전송할 수 있다. PCU는 이와 같이 가속기가 제공한 힌트를 이용하여 자동으로 인입 인터럽트들을 작은 코어에 보내서 핸들링할 수 있다.
이제, 도 9를 참조하면, 본 발명의 실시 예에 따른 큰 코어(710) 및 작은 코어(720)에서 발생하는 동작들을 보여주는 타이밍 도가 도시되어 있다. 도시된 바와 같이, 큰 코어(710)에 대한 긴 휴면 지속기간은 장치 인터럽트를 직접 작은 코어(720)에 제공되게 허용하고 작은 코어에서 이 인터럽트를 핸들링할 수 있는지 여부를 판정함으로써 인에이블(enable)될 수 있다. 그렇다면, 큰 코어(710)는 휴면 상태를 유지할 수 있고 인터럽트는 작은 코어(720) 상에서 핸들링된다.
이제, 도 10을 참조하면, 본 발명의 실시 예에 따른 전력 절감의 그래픽 도가 도시되어 있다. 도 10에 도시된 바와 같이, 액티브 C0 상태로부터 딥 저전력 상태, 예를 들어, C6 상태로 이행하는 종래의 시스템에서, 큰 코어의 코어 전력 소비는 C0 상태로의 모든 엔트리 동안 비교적 높은 레벨, 예를 들어, 500 mW로부터 C6 상태에서의 제로 전력 소비 레벨까지 변할 수 있다(중간 도면). 대신에 본 발명의 실시 예(하위 도면)에서는, C0 상태로의 웨이크업이 큰 코어로부터 작은 코어로 보내질 수 있고, 그래서 작은 코어들은 500 mW 전력 소비 레벨이 아니라 훨씬 낮은 전력 레벨, 예를 들어, 도 10의 실시 예에서는 10 mW로 C0 상태를 핸들링할 수 있다.
실시 예들은 많은 다양한 시스템 유형에서 구현될 수 있다. 이제, 도 11을 참조하면, 본 발명의 실시 예에 따른 시스템의 블록 도가 도시되어 있다. 도 11에 도시된 바와 같이, 멀티프로세서 시스템(600)은 포인트-투-포인트 상호연결 시스템이며, 포인트-투-포인트 상호연결(650)을 통해 연결된 제1 프로세서(670) 및 제2 프로세서(680)를 포함한다. 도 11에 도시된 바와 같이, 프로세서(670 및 680) 각각은 제1 및 제2 프로세서 코어(즉, 프로세서 코어(674a 및 674b) 및 프로세서 코어(684a 및 684b))를 포함하는 멀티코어 프로세서일 수 있지만, 잠재적으로 더 많은 코어가 프로세서에 제공될 수 있다. 좀더 구체적으로, 프로세서들 각각은 여기에 기술된 바와 같이 적어도 큰 코어들이 저전력 상태에 있을 때 가장 작은 가용 코어에 웨이크업을 보내기 위한 로직 이외에도, 큰, 작은(및 혹은 중간) 코어들의 믹스, 가속기 등을 포함할 수 있다.
도 11을 더 참조하면, 제1 프로세서(670)는 메모리 제어기 허브(MCH)(672) 및 포인트-투-포인트(P-P) 인터페이스(676 및 678)를 더 포함한다. 유사하게, 제2 프로세서(680)는 MCH(682) 및 포인트-투-포인트(P-P) 인터페이스(686 및 688)를 포함한다. 도 11에 도시된 바와 같이, MCH(672 및 682)는 각 프로세서에 국부적으로 부착된 시스템 메모리(예를 들어, DRAM)의 부분들일 수 있는 각 메모리, 즉 메모리(632) 및 메모리(634)에 프로세서들을 연결한다. 제1 프로세서(670) 및 제2 프로세서(680)는 각각 P-P 상호연결(652 및 654)을 통해서 칩셋(690)에 연결될 수 있다. 도 11에 도시된 바와 같이, 칩셋(690)은 P-P 인터페이스(694 및 698)를 포함한다.
더욱이, 칩셋(690)은 P-P 상호연결(639)에 의해서 칩셋(690)을 고성능 그래픽 엔진(638)에 연결하기 위한 인터페이스(692)를 포함한다. 차례로, 칩셋(690)은 인터페이스(696)를 통해서 제1 버스(616)에 연결될 수 있다. 도 11에 도시된 바와 같이, 다양한 입/출력(I/O) 장치(614)는 제1 버스(616)를 제2 버스(620)에 연결하는 버스 브릿지(618)와 함께 제1 버스(616)에 연결될 수 있다. 일 실시 예에서, 예를 들어, 키보드/마우스(622), 통신 장치(626), 및 디스크 드라이브 또는 코드(630)를 포함할 수 있는 다른 대용량 저장 장치와 같은 데이터 저장 유닛(628)을 포함해서 다양한 장치가 제2 버스(620)에 연결될 수 있다. 더욱이, 오디오 I/O(624)는 제2 버스(620)에 연결될 수 있다. 실시 예들은 스마트 셀룰러 전화, 태블릿 컴퓨터, 넷북 등과 같은 모바일 장치를 포함하는 다른 유형의 시스템에 통합될 수 있다.
실시 예들은 코드로 구현될 수 있고, 명령을 수행하도록 시스템을 프로그램하는데 이용될 수 있는 명령이 저장된 비-일시 저장 매체에 저장될 수 있다. 저장 매체는 플로피 디스크, 광 디스크, 고체 상태 드라이브(SSD), 컴팩트 디스크 판독-전용 메모리(CD-ROM), 컴팩트 재기록가능 디스크(CD-RW), 및 자기-광학 디스크, 판독-전용 메모리(ROM), 동적 랜덤 억세스 메모리(DRAM), 정적 랜덤 억세스 메모리(SRAM) 등의 랜덤 억세스 메모리(RAM), 소거가능 프로그램어블 판독-전용 메모리(EPROM), 플래시 메모리, 전기적 소거 가능한 프로그램어블 판독-전용 메모리(EEPROM)와 같은 반도체 장치, 자기 또는 광학 카드, 또는 전자 명령을 저장하기에 적합한 임의 다른 유형의 미디어를 포함할 수 있지만 이에 한정되지 않는다.
본 발명이 한정된 수의 실시 예에 관해서 기술되었지만, 이 방면에 숙련된 자들은 이에 대한 수많은 수정 및 변형을 인식할 것이다. 첨부된 청구항들은 본 발명의 참 정신 및 범위 내에 속하는 것으로 모든 그러한 수정 및 변형을 포괄한다.
Claims (20)
- 모바일 디바이스로서,
장치;
상기 장치에 결합된 DRAM (dynamic random access memory); 및
데이터 저장소
를 포함하고,
상기 장치는
암호 가속기(cryptographic accelerator);
비디오 가속기;
메모리 제어기; 및
프로세서
를 포함하고,
상기 프로세서는,
제1 복수의 코어들;
제2 복수의 코어들 - 상기 제2 복수의 코어들은 상기 제1 복수의 코어들과 이종이며(heterogeneous) 더 적은 전력 소모를 함 -;
적어도 상기 제1 복수의 코어들과 결합된 공유 캐시 메모리(shared cache memory);
상기 제1 복수의 코어들, 상기 제2 복수의 코어들, 및 적어도 상기 제1 복수의 코어들과 결합된 상기 공유 캐시 메모리를 결합하기 위한 상호연결(interconnect); 및
상기 제2 복수의 코어들의 코어로 하여금 동작을 실행하도록 하는 로직 - 상기 제2 복수의 코어들의 상기 코어의 성능 레벨에 적어도 부분적으로 기초하여, 상기 로직은 상기 제2 복수의 코어들의 상기 코어의 실행 상태가 상기 제1 복수의 코어들의 코어로 전이(transferred)되도록 하여 상기 제1 복수의 코어들의 상기 코어가 상기 동작을 실행하는 것을 가능하게 함 -
을 포함하고,
상기 로직은 상기 제1 복수의 코어들의 상기 코어 및 상기 제2 복수의 코어들의 상기 코어가 저전력 상태에 있을 때 인터럽트에 응답해서 상기 제1 복수의 코어들의 상기 코어가 아닌 상기 제2 복수의 코어들의 상기 코어로 하여금 깨워지게 하고(woken),
상기 로직은 복수의 인터럽트들을 분석하고, 상기 복수의 인터럽트들이 상기 제1 복수의 코어들의 상기 코어에 의해 핸들링될 수 있는 것으로 판정되면, 상기 로직은 상기 인터럽트에 응답해서 상기 제2 복수의 코어들의 상기 코어를 깨우지 않는 대신에 상기 제1 복수의 코어들의 상기 코어를 깨우는 모바일 디바이스. - 삭제
- 제1항에 있어서,
상기 로직은 테이블의 엔트리가 상기 제2 복수의 코어들의 상기 코어가 상기 인터럽트와 동일한 유형의 이전 인터럽트에 응답해서 정의되지않은 폴트(fault)를 초래했음을 나타낼 때 상기 인터럽트에 응답해서 상기 제2 복수의 코어들의 상기 코어가 아닌 상기 제1 복수의 코어들의 상기 코어로 하여금 깨워지게 하는 모바일 디바이스. - 제1항에 있어서,
상기 로직은 상기 인터럽트에 응답하여 상기 제1 복수의 코어들의 상기 코어의 실행 상태의 서브세트를 상기 제2 복수의 코어들의 상기 코어로 제공하는 모바일 디바이스. - 제4항에 있어서,
상기 제2 복수의 코어들의 상기 코어가 적어도 하나의 요청된 동작을 핸들링할 수 없다는 판정에 응답하여, 상기 로직은 상기 제2 복수의 코어들의 상기 코어로부터 상기 실행 상태의 상기 서브세트를 획득하고 이 실행 상태 서브세트를 일시 저장 영역에 저장된 상기 제1 복수의 코어들의 상기 코어의 상기 실행 상태에 합병하는 모바일 디바이스. - 제1항에 있어서,
상기 비디오 가속기는 작업(task)을 수행하고 상기 작업을 완료한 때에 상기 로직으로 상기 인터럽트를 전송하는 모바일 디바이스. - 삭제
- 제1항에 있어서,
상기 프로세서는 멀티코어 프로세서를 포함하고,
상기 로직은:
웨이크업 로직;
상태 전이 로직;
정의되지 않은 핸들링 로직; 및
인터럽트 히스토리 저장소
를 포함하는 모바일 디바이스. - 제1항에 있어서,
복수의 인터럽트들을 수신하고 상기 복수의 인터럽트들을 상기 제1 복수의 코어들 및 상기 제2 복수의 코어들 중 적어도 하나의 하나 또는 이상의 코어들로 보내는(direct) 인터럽트 제어기를 더 포함하는 모바일 디바이스. - 제1항에 있어서, 상기 모바일 디바이스는 스마트 폰을 포함하는 모바일 디바이스.
- 제1항에 있어서, 상기 모바일 디바이스는 태블릿 컴퓨터를 포함하는 모바일 디바이스.
- 제1항에 있어서, 오디오 디바이스를 더 포함하는 모바일 디바이스.
- 제1항에 있어서, 상기 제1 복수의 코어들의 상기 코어는 적어도 하나의 캐시 메모리를 더 포함하는 모바일 디바이스.
- 모바일 디바이스의 프로세서의 제2 복수의 코어들의 코어로 하여금, 상기 제2 복수의 코어들의 상기 코어의 성능 레벨에 적어도 부분적으로 기초하여 동작을 실행하도록 하는 단계 - 상기 프로세서는 제1 복수의 코어들, 상기 제2 복수의 코어들을 포함하고, 상기 제2 복수의 코어들은 상기 제1 복수의 코어들과 이종이며 더 적은 전력 소모를 하고, 상기 프로세서는 상기 제1 복수의 코어들과 상기 제2 복수의 코어들을 결합하기 위한 상호연결 및 적어도 상기 제1 복수의 코어들과 결합된 공유 캐시 메모리를 더 포함함 -;
상기 제2 복수의 코어들의 상기 코어의 실행 상태가 상기 제1 복수의 코어들의 코어로 전이되도록 하여 상기 제1 복수의 코어들의 상기 코어가 상기 동작을 실행하는 것을 가능하게 하는 단계;
상기 제1 복수의 코어들의 상기 코어 및 상기 제2 복수의 코어들의 상기 코어가 저전력 상태에 있을 때 인터럽트에 응답해서 상기 제1 복수의 코어들의 상기 코어가 아닌 상기 제2 복수의 코어들의 상기 코어로 하여금 깨워지게 하는 단계; 및
테이블의 엔트리가 상기 제2 복수의 코어들의 상기 코어가 상기 인터럽트와 동일한 유형의 이전 인터럽트에 응답해서 정의되지않은 폴트를 초래했음을 나타낼 때 상기 인터럽트에 응답해서 상기 제2 복수의 코어들의 상기 코어가 아닌 상기 제1 복수의 코어들의 상기 코어로 하여금 깨워지게 하는 단계
를 포함하는 방법. - 삭제
- 삭제
- 제14항에 있어서,
상기 인터럽트에 응답하여 상기 제1 복수의 코어들의 상기 코어의 실행 상태의 서브세트를 상기 제2 복수의 코어들의 상기 코어로 제공하는 단계를 더 포함하는 방법. - 명령어들을 포함하는 적어도 하나의 컴퓨터 판독가능 저장매체로서, 상기 명령어들은 실행되는 경우 시스템으로 하여금:
모바일 디바이스의 프로세서의 제2 복수의 코어들의 코어로 하여금, 상기 제2 복수의 코어들의 상기 코어의 성능 레벨에 적어도 부분적으로 기초하여 동작을 실행하도록 하고 - 상기 프로세서는 제1 복수의 코어들, 상기 제2 복수의 코어들, 상기 제1 복수의 코어들과 상기 제2 복수의 코어들을 결합하기 위한 상호연결 및 적어도 상기 제1 복수의 코어들과 결합된 공유 캐시 메모리를 포함하고, 상기 제2 복수의 코어들은 상기 제1 복수의 코어들과 이종이며 더 적은 전력 소모를 함 -,
상기 제2 복수의 코어들의 상기 코어의 실행 상태가 상기 제1 복수의 코어들의 코어로 전이되도록 하여 상기 제1 복수의 코어들의 상기 코어가 상기 동작을 실행하도록 하고,
상기 제1 복수의 코어들의 상기 코어 및 상기 제2 복수의 코어들의 상기 코어가 저전력 상태에 있을 때 인터럽트에 응답해서 상기 제1 복수의 코어들의 상기 코어가 아닌 상기 제2 복수의 코어들의 상기 코어로 하여금 깨워지게 하고,
테이블의 엔트리가 상기 제2 복수의 코어들의 상기 코어가 상기 인터럽트와 동일한 유형의 이전 인터럽트에 응답해서 정의되지않은 폴트를 초래했음을 나타낼 때 상기 인터럽트에 응답해서 상기 제2 복수의 코어들의 상기 코어가 아닌 상기 제1 복수의 코어들의 상기 코어로 하여금 깨워지게 하는 것을 가능하게 하는
적어도 하나의 컴퓨터 판독가능 저장매체. - 삭제
- 삭제
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/050580 WO2013036222A1 (en) | 2011-09-06 | 2011-09-06 | Power efficient processor architecture |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147005804A Division KR101624061B1 (ko) | 2011-09-06 | 2011-09-06 | 전력 효율적 프로세서 아키텍처 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160060163A KR20160060163A (ko) | 2016-05-27 |
KR101889756B1 true KR101889756B1 (ko) | 2018-08-21 |
Family
ID=47832464
Family Applications (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167012948A KR101889756B1 (ko) | 2011-09-06 | 2011-09-06 | 전력 효율적 프로세서 아키텍처 |
KR1020197012473A KR102082242B1 (ko) | 2011-09-06 | 2011-09-06 | 전력 효율적 프로세서 아키텍처 |
KR1020147005804A KR101624061B1 (ko) | 2011-09-06 | 2011-09-06 | 전력 효율적 프로세서 아키텍처 |
KR1020187018280A KR102082241B1 (ko) | 2011-09-06 | 2011-09-06 | 전력 효율적 프로세서 아키텍처 |
KR1020167012946A KR101889755B1 (ko) | 2011-09-06 | 2011-09-06 | 전력 효율적 프로세서 아키텍처 |
KR1020167018264A KR101873935B1 (ko) | 2011-09-06 | 2011-09-06 | 전력 효율적 프로세서 아키텍처 |
Family Applications After (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020197012473A KR102082242B1 (ko) | 2011-09-06 | 2011-09-06 | 전력 효율적 프로세서 아키텍처 |
KR1020147005804A KR101624061B1 (ko) | 2011-09-06 | 2011-09-06 | 전력 효율적 프로세서 아키텍처 |
KR1020187018280A KR102082241B1 (ko) | 2011-09-06 | 2011-09-06 | 전력 효율적 프로세서 아키텍처 |
KR1020167012946A KR101889755B1 (ko) | 2011-09-06 | 2011-09-06 | 전력 효율적 프로세서 아키텍처 |
KR1020167018264A KR101873935B1 (ko) | 2011-09-06 | 2011-09-06 | 전력 효율적 프로세서 아키텍처 |
Country Status (9)
Country | Link |
---|---|
US (5) | US9360927B2 (ko) |
JP (1) | JP6197196B2 (ko) |
KR (6) | KR101889756B1 (ko) |
CN (2) | CN106155265B (ko) |
DE (1) | DE112011105590T5 (ko) |
GB (1) | GB2507696B (ko) |
IN (1) | IN2014CN01367A (ko) |
TW (4) | TWI564704B (ko) |
WO (1) | WO2013036222A1 (ko) |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8886917B1 (en) * | 2007-04-25 | 2014-11-11 | Hewlett-Packard Development Company, L.P. | Switching to core executing OS like codes upon system call reading greater than predetermined amount of data |
TWI454905B (zh) * | 2011-09-30 | 2014-10-01 | Intel Corp | 在多核心平台中之受限制的啓動技術 |
US8984200B2 (en) * | 2012-08-21 | 2015-03-17 | Lenovo (Singapore) Pte. Ltd. | Task scheduling in big and little cores |
US9009508B2 (en) | 2012-08-28 | 2015-04-14 | Advanced Micro Devices, Inc. | Mechanism for reducing interrupt latency and power consumption using heterogeneous cores |
KR102082859B1 (ko) * | 2013-01-07 | 2020-02-28 | 삼성전자주식회사 | 복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법 |
US9727345B2 (en) * | 2013-03-15 | 2017-08-08 | Intel Corporation | Method for booting a heterogeneous system and presenting a symmetric core view |
JP6175980B2 (ja) * | 2013-08-23 | 2017-08-09 | 富士通株式会社 | Cpuの制御方法、制御プログラム、情報処理装置 |
US10218645B2 (en) * | 2014-04-08 | 2019-02-26 | Mellanox Technologies, Ltd. | Low-latency processing in a network node |
US9575537B2 (en) * | 2014-07-25 | 2017-02-21 | Intel Corporation | Adaptive algorithm for thermal throttling of multi-core processors with non-homogeneous performance states |
KR20160054850A (ko) * | 2014-11-07 | 2016-05-17 | 삼성전자주식회사 | 다수의 프로세서들을 운용하는 장치 및 방법 |
US9958932B2 (en) * | 2014-11-20 | 2018-05-01 | Apple Inc. | Processor including multiple dissimilar processor cores that implement different portions of instruction set architecture |
US9898071B2 (en) | 2014-11-20 | 2018-02-20 | Apple Inc. | Processor including multiple dissimilar processor cores |
US10095514B2 (en) | 2014-12-14 | 2018-10-09 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude I/O-dependent load replays in an out-of-order processor |
US10127046B2 (en) | 2014-12-14 | 2018-11-13 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude uncacheable-dependent load replays in out-of-order processor |
US10088881B2 (en) | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude I/O-dependent load replays in an out-of-order processor |
US10228944B2 (en) | 2014-12-14 | 2019-03-12 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method for programmable load replay preclusion |
US10108427B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor |
US9804845B2 (en) | 2014-12-14 | 2017-10-31 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor |
US10108428B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor |
US10209996B2 (en) | 2014-12-14 | 2019-02-19 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method for programmable load replay preclusion |
US10146546B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd | Load replay precluding mechanism |
US9740271B2 (en) * | 2014-12-14 | 2017-08-22 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor |
US10089112B2 (en) | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor |
US10114794B2 (en) | 2014-12-14 | 2018-10-30 | Via Alliance Semiconductor Co., Ltd | Programmable load replay precluding mechanism |
JP6286066B2 (ja) | 2014-12-14 | 2018-02-28 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサでのロードリプレイを低減する節電メカニズム |
KR101819315B1 (ko) | 2014-12-14 | 2018-01-16 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 비순차 프로세서에서 작성 결합 메모리 공간 접근에 따라 로드 리플레이를 억제하기 위한 장치 및 방법 |
US10120689B2 (en) | 2014-12-14 | 2018-11-06 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor |
US10175984B2 (en) | 2014-12-14 | 2019-01-08 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor |
KR101819314B1 (ko) | 2014-12-14 | 2018-01-16 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 비순차 프로세서에서 오프다이 제어 부재 접근에 따라 로드 리플레이를 억제하는 장치 |
US10146540B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor |
JP6286068B2 (ja) | 2014-12-14 | 2018-02-28 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサでのキャッシュ不可に依存するロードリプレイを除外するメカニズム |
US10114646B2 (en) | 2014-12-14 | 2018-10-30 | Via Alliance Semiconductor Co., Ltd | Programmable load replay precluding mechanism |
US10146547B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor |
US10108421B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude shared ram-dependent load replays in an out-of-order processor |
US10083038B2 (en) | 2014-12-14 | 2018-09-25 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on page walks in an out-of-order processor |
US10146539B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd. | Load replay precluding mechanism |
US10108429B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude shared RAM-dependent load replays in an out-of-order processor |
WO2016097786A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on page walks in out-of-order processor |
US10108420B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor |
KR102352756B1 (ko) | 2015-04-29 | 2022-01-17 | 삼성전자주식회사 | 애플리케이션 프로세서, 시스템 온 칩, 및 이를 포함하는 컴퓨팅 장치 |
US9928115B2 (en) | 2015-09-03 | 2018-03-27 | Apple Inc. | Hardware migration between dissimilar cores |
US10037227B2 (en) * | 2015-12-17 | 2018-07-31 | Intel Corporation | Systems, methods and devices for work placement on processor cores |
US10856220B2 (en) * | 2015-12-21 | 2020-12-01 | Apple Inc. | Energy-efficient signal processing |
US11061730B2 (en) * | 2016-11-18 | 2021-07-13 | Red Hat Israel, Ltd. | Efficient scheduling for hyper-threaded CPUs using memory monitoring |
US10528118B2 (en) * | 2017-04-21 | 2020-01-07 | Intel Corporation | Dynamically power on/off register files during execution |
KR102482896B1 (ko) | 2017-12-28 | 2022-12-30 | 삼성전자주식회사 | 이종 휘발성 메모리 칩들을 포함하는 메모리 장치 및 이를 포함하는 전자 장치 |
CN109996185B (zh) * | 2017-12-29 | 2022-02-15 | 腾讯科技(深圳)有限公司 | 终端的定位方法和装置、存储介质、电子装置 |
US11347679B2 (en) * | 2018-02-08 | 2022-05-31 | Alibaba Group Holding Limited | Hybrid system-on-chip for power and performance prediction and control |
KR102679562B1 (ko) * | 2018-03-30 | 2024-07-01 | 구글 엘엘씨 | 시스템 온 칩(SoC) 에이전트 리셋 및 전력 관리를 위한 프로토콜 레벨 제어 |
KR102552666B1 (ko) | 2018-11-12 | 2023-07-10 | 삼성전자주식회사 | 전자 장치 및 그것의 동작 방법 |
US11256624B2 (en) * | 2019-05-28 | 2022-02-22 | Micron Technology, Inc. | Intelligent content migration with borrowed memory |
CN113254070B (zh) | 2020-02-07 | 2024-01-02 | 阿里巴巴集团控股有限公司 | 加速单元、片上系统、服务器、数据中心和相关方法 |
WO2022126036A1 (en) * | 2020-12-31 | 2022-06-16 | Innopeak Technology, Inc. | Diagnosis and troubleshooting of devices using multiple layer architecture |
US20230205297A1 (en) * | 2021-12-27 | 2023-06-29 | Advanced Micro Devices, Inc. | Method and apparatus for managing power states |
CN114253694B (zh) * | 2022-02-25 | 2022-06-24 | 杭州雄迈集成电路技术股份有限公司 | 一种基于神经网络加速器的异步处理方法与装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070113111A1 (en) | 2005-11-14 | 2007-05-17 | Franck Dahan | Standby Mode for Power Management |
JP2007148952A (ja) * | 2005-11-30 | 2007-06-14 | Renesas Technology Corp | 半導体集積回路 |
US20070245164A1 (en) * | 2004-08-05 | 2007-10-18 | Shuichi Mitarai | Information Processing Device |
US20070283128A1 (en) | 2006-06-06 | 2007-12-06 | Matsushita Electric Industrial Co., Ltd. | Asymmetric multiprocessor |
US20080126747A1 (en) * | 2006-11-28 | 2008-05-29 | Griffen Jeffrey L | Methods and apparatus to implement high-performance computing |
US20100333075A1 (en) * | 2009-06-30 | 2010-12-30 | International Business Machines Corporation | Executing platform-independent code on multi-core heterogeneous processors |
WO2011026084A1 (en) * | 2009-08-31 | 2011-03-03 | Qualcomm Incorporated | Methods and systems for operating a computer via a low power adjunct processor |
JP2011118871A (ja) * | 2009-12-03 | 2011-06-16 | Intel Corp | イベント処理のためのターボ性能を向上させる方法および装置 |
US20110213947A1 (en) * | 2008-06-11 | 2011-09-01 | John George Mathieson | System and Method for Power Optimization |
US20110213935A1 (en) * | 2010-03-01 | 2011-09-01 | Arm Limited | Data processing apparatus and method for switching a workload between first and second processing circuitry |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5257375A (en) | 1991-08-23 | 1993-10-26 | International Business Machines Corp. | Method and apparatus for dispatching tasks requiring short-duration processor affinity |
JPH06348513A (ja) | 1993-06-11 | 1994-12-22 | Sony Corp | 割込制御装置 |
JPH08249018A (ja) | 1995-03-10 | 1996-09-27 | Omron Corp | マルチプロセッサ演算装置、および該装置を有するプログラマブルコントローラ |
US5768594A (en) | 1995-07-14 | 1998-06-16 | Lucent Technologies Inc. | Methods and means for scheduling parallel processors |
US6728892B1 (en) | 1999-09-15 | 2004-04-27 | Koninklijke Philips Electronics N.V. | Method for conserving power in a can microcontroller and a can microcontroller that implements this method |
US7093147B2 (en) | 2003-04-25 | 2006-08-15 | Hewlett-Packard Development Company, L.P. | Dynamically selecting processor cores for overall power efficiency |
US7376954B2 (en) | 2003-08-28 | 2008-05-20 | Mips Technologies, Inc. | Mechanisms for assuring quality of service for programs executing on a multithreaded processor |
US7516456B2 (en) | 2003-09-25 | 2009-04-07 | International Business Machines Corporation | Asymmetric heterogeneous multi-threaded operating system |
US20050132239A1 (en) * | 2003-12-16 | 2005-06-16 | Athas William C. | Almost-symmetric multiprocessor that supports high-performance and energy-efficient execution |
US7451146B2 (en) | 2004-06-30 | 2008-11-11 | Hewlett-Packard Development Company, L.P. | Almost non-blocking linked stack implementation |
US7664970B2 (en) | 2005-12-30 | 2010-02-16 | Intel Corporation | Method and apparatus for a zero voltage processor sleep state |
US20060075404A1 (en) | 2004-10-06 | 2006-04-06 | Daniela Rosu | Method and system for scheduling user-level I/O threads |
US8607235B2 (en) | 2004-12-30 | 2013-12-10 | Intel Corporation | Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention |
JP3866749B2 (ja) | 2005-03-07 | 2007-01-10 | 富士通株式会社 | マイクロプロセッサ |
US7461275B2 (en) | 2005-09-30 | 2008-12-02 | Intel Corporation | Dynamic core swapping |
GB0519981D0 (en) * | 2005-09-30 | 2005-11-09 | Ignios Ltd | Scheduling in a multicore architecture |
US8798571B2 (en) | 2005-10-11 | 2014-08-05 | Via Technologies Inc. | Method of managing power consumption of portable computer and portable computer using the same |
JP4621113B2 (ja) * | 2005-10-28 | 2011-01-26 | ルネサスエレクトロニクス株式会社 | 半導体集積回路装置 |
US7647509B2 (en) * | 2006-05-12 | 2010-01-12 | Intel Corporation | Method and apparatus for managing power in a processing system with multiple partitions |
JP4837780B2 (ja) | 2006-07-28 | 2011-12-14 | アーム・リミテッド | マスタおよびスレーブを有するデータ処理デバイスにおける電力管理 |
US20080263324A1 (en) | 2006-08-10 | 2008-10-23 | Sehat Sutardja | Dynamic core switching |
US8028290B2 (en) | 2006-08-30 | 2011-09-27 | International Business Machines Corporation | Multiple-core processor supporting multiple instruction set architectures |
JP2007188523A (ja) | 2007-03-15 | 2007-07-26 | Toshiba Corp | タスク実行方法およびマルチプロセッサシステム |
US20080307240A1 (en) | 2007-06-08 | 2008-12-11 | Texas Instruments Incorporated | Power management electronic circuits, systems, and methods and processes of manufacture |
CN101689106B (zh) | 2007-06-12 | 2013-10-09 | 松下电器产业株式会社 | 多处理器控制装置、多处理器控制方法以及多处理器控制电路 |
US7962679B2 (en) * | 2007-09-28 | 2011-06-14 | Intel Corporation | Interrupt balancing for multi-core and power |
US7603504B2 (en) * | 2007-12-18 | 2009-10-13 | Intel Corporation | Reducing core wake-up latency in a computer system |
US8615647B2 (en) | 2008-02-29 | 2013-12-24 | Intel Corporation | Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state |
CN101546276B (zh) * | 2008-03-26 | 2012-12-19 | 国际商业机器公司 | 多核环境下实现中断调度的方法及多核处理器 |
US8010822B2 (en) | 2008-03-28 | 2011-08-30 | Microsoft Corporation | Power-aware thread scheduling and dynamic use of processors |
US20100030927A1 (en) * | 2008-07-29 | 2010-02-04 | Telefonaktiebolaget Lm Ericsson (Publ) | General purpose hardware acceleration via deirect memory access |
US8199917B2 (en) | 2008-10-29 | 2012-06-12 | International Business Machines Corporation | SID management for access to encrypted drives |
JP5109935B2 (ja) | 2008-11-10 | 2012-12-26 | 富士通株式会社 | プロセッサシステムの動作方法およびプロセッサシステム |
US8135972B2 (en) | 2009-03-10 | 2012-03-13 | Cortina Systems, Inc. | Data interface power consumption control |
US8234431B2 (en) | 2009-10-13 | 2012-07-31 | Empire Technology Development Llc | Interrupt masking for multi-core processors |
US8566836B2 (en) | 2009-11-13 | 2013-10-22 | Freescale Semiconductor, Inc. | Multi-core system on chip |
KR101697937B1 (ko) * | 2010-01-08 | 2017-02-01 | 삼성전자주식회사 | 멀티프로세서 시스템에서 동적 태스크 마이그레이션을 위한 방법 및 시스템 |
US8418187B2 (en) | 2010-03-01 | 2013-04-09 | Arm Limited | Virtualization software migrating workload between processing circuitries while making architectural states available transparent to operating system |
CN101923491A (zh) | 2010-08-11 | 2010-12-22 | 上海交通大学 | 多核环境下线程组地址空间调度和切换线程的方法 |
-
2011
- 2011-09-06 KR KR1020167012948A patent/KR101889756B1/ko active IP Right Grant
- 2011-09-06 DE DE112011105590.0T patent/DE112011105590T5/de active Pending
- 2011-09-06 CN CN201610536651.1A patent/CN106155265B/zh active Active
- 2011-09-06 KR KR1020197012473A patent/KR102082242B1/ko active IP Right Grant
- 2011-09-06 WO PCT/US2011/050580 patent/WO2013036222A1/en active Application Filing
- 2011-09-06 GB GB1402807.0A patent/GB2507696B/en active Active
- 2011-09-06 KR KR1020147005804A patent/KR101624061B1/ko active IP Right Grant
- 2011-09-06 IN IN1367CHN2014 patent/IN2014CN01367A/en unknown
- 2011-09-06 KR KR1020187018280A patent/KR102082241B1/ko active IP Right Grant
- 2011-09-06 JP JP2014528345A patent/JP6197196B2/ja active Active
- 2011-09-06 KR KR1020167012946A patent/KR101889755B1/ko active IP Right Grant
- 2011-09-06 KR KR1020167018264A patent/KR101873935B1/ko active IP Right Grant
- 2011-09-06 US US13/992,361 patent/US9360927B2/en not_active Expired - Fee Related
- 2011-09-06 CN CN201180073263.XA patent/CN103765409A/zh active Pending
-
2012
- 2012-09-05 TW TW101132336A patent/TWI564704B/zh not_active IP Right Cessation
- 2012-09-05 TW TW105114441A patent/TWI622874B/zh active
- 2012-09-05 TW TW105118773A patent/TWI622875B/zh active
- 2012-09-05 TW TW104137165A patent/TWI622872B/zh active
-
2016
- 2016-04-21 US US15/134,756 patent/US10048743B2/en active Active
- 2016-04-21 US US15/134,770 patent/US9864427B2/en active Active
- 2016-06-24 US US15/192,134 patent/US9870047B2/en active Active
-
2018
- 2018-07-24 US US16/043,738 patent/US10664039B2/en active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070245164A1 (en) * | 2004-08-05 | 2007-10-18 | Shuichi Mitarai | Information Processing Device |
US20070113111A1 (en) | 2005-11-14 | 2007-05-17 | Franck Dahan | Standby Mode for Power Management |
JP2007148952A (ja) * | 2005-11-30 | 2007-06-14 | Renesas Technology Corp | 半導体集積回路 |
US20070283128A1 (en) | 2006-06-06 | 2007-12-06 | Matsushita Electric Industrial Co., Ltd. | Asymmetric multiprocessor |
US20080126747A1 (en) * | 2006-11-28 | 2008-05-29 | Griffen Jeffrey L | Methods and apparatus to implement high-performance computing |
US20110213947A1 (en) * | 2008-06-11 | 2011-09-01 | John George Mathieson | System and Method for Power Optimization |
US20100333075A1 (en) * | 2009-06-30 | 2010-12-30 | International Business Machines Corporation | Executing platform-independent code on multi-core heterogeneous processors |
WO2011026084A1 (en) * | 2009-08-31 | 2011-03-03 | Qualcomm Incorporated | Methods and systems for operating a computer via a low power adjunct processor |
JP2011118871A (ja) * | 2009-12-03 | 2011-06-16 | Intel Corp | イベント処理のためのターボ性能を向上させる方法および装置 |
US20110213935A1 (en) * | 2010-03-01 | 2011-09-01 | Arm Limited | Data processing apparatus and method for switching a workload between first and second processing circuitry |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101889756B1 (ko) | 전력 효율적 프로세서 아키텍처 | |
KR101476568B1 (ko) | 코어 마다의 전압 및 주파수 제어 제공 | |
US20140082630A1 (en) | Providing an asymmetric multicore processor system transparently to an operating system | |
US7886177B2 (en) | Method and apparatus of collecting timer ticks | |
KR102685083B1 (ko) | 프로브 필터 리텐션 기반 저전력 상태 | |
EP3475783B1 (en) | Systems, methods and devices for standby power entry without latency tolerance information | |
US11645115B2 (en) | Systems, methods and devices for standby power savings | |
JP6409218B2 (ja) | 電力効率の優れたプロセッサアーキテクチャ | |
GB2537300A (en) | Power efficient processor architecture | |
JP2017021811A (ja) | 電力効率の優れたプロセッサアーキテクチャ | |
JP2016212907A (ja) | 電力効率の優れたプロセッサアーキテクチャ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant |