KR20130044211A - 제1 및 제2 처리 회로 간 작업 부하를 스위칭하는 데이터 처리 장치 및 방법 - Google Patents

제1 및 제2 처리 회로 간 작업 부하를 스위칭하는 데이터 처리 장치 및 방법 Download PDF

Info

Publication number
KR20130044211A
KR20130044211A KR1020127024538A KR20127024538A KR20130044211A KR 20130044211 A KR20130044211 A KR 20130044211A KR 1020127024538 A KR1020127024538 A KR 1020127024538A KR 20127024538 A KR20127024538 A KR 20127024538A KR 20130044211 A KR20130044211 A KR 20130044211A
Authority
KR
South Korea
Prior art keywords
processing
processing circuit
workload
destination
source
Prior art date
Application number
KR1020127024538A
Other languages
English (en)
Other versions
KR101802140B1 (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 KR20130044211A publication Critical patent/KR20130044211A/ko
Application granted granted Critical
Publication of KR101802140B1 publication Critical patent/KR101802140B1/ko

Links

Images

Classifications

    • 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/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • 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/3293Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Power Sources (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

2개의 처리 회로 사이로 작업 부하의 수행을 스위칭하기 위해 데이터 처리 장치 및 방법이 제공된다. 데이터 처리 장치는 제2 처리 회로와 아키텍처가 호환 가능하지만 마이크로 아키텍처는 상이한 제1 처리 회로를 포함한다. 임의의 시점에서, 적어도 하나의 어플리케이션과 해당 적어도 하나의 어플리케이션을 구동시키는 적어도 하나의 운영 시스템을 포함하는 작업 부하는 제1 및 제2 처리 회로 중 하나에 의해 수행된다. 스위치 제어기는 이전 자극에 응답하여, 작업 부하의 성능을 소스 처리 회로로부터 수신지 처리 회로로 이전하는 핸드오버 동작을 수행하며, 상기 소스 처리 회로는 상기 제1 및 제2 처리 회로 중 하나이고, 상기 수신지 처리 회로는 상기 제1 및 제2 처리 회로 중 다른 하나이다. 상기 핸드오버 동작 중, 스위치 제어기는 상기 소스 처리 회로가 자체의 현재 아키텍처 상태를 상기 수신지 처리 회로에 유효하게 구성하도록 유도하고, 상기 현재 아키텍처 상태는 상기 핸드오버 동작이 개시되는 시점에 공유 메모리로부터 유효하지 않고, 상기 작업 부하의 성능을 상기 소스 처리 회로로부터 성공적으로 인계받기 위해 상기 수신지 처리 회로에 필요한 상태이다. 또한, 스위치 제어기는 상기 작업 부하의 이전이 운영 시스템에 투명하도록 미리 정해진 프로세서 특정 설정 정보를 적어도 하나의 운영 시스템으로부터 마스킹한다. 이러한 접근은 처리 회로 간의 어플리케이션 스위칭 능력을 통해 운영 시스템의 제공과 관련된 복잡성을 회피하면서 상당한 에너지 소비 이득을 제공하는 것이 확인되었다.

Description

제1 및 제2 처리 회로 간 작업 부하를 스위칭하는 데이터 처리 장치 및 방법{A DATA PROCESSING APPARATUS AND METHOD FOR SWITCHING A WORKLOAD BETWEEN FIRST AND SECOND PROCESSING CIRCUITRY}
본 발명은 제1 및 제2 처리 회로 간 작업 부하를 스위칭하는 데이터 처리 장치 및 방법에 관한 것으로, 보다 상세하게는 데이터 처리 장치의 에너지 효율을 향상시키도록 이러한 스위칭을 수행하는 기술에 관한 것이다.
현대의 데이터 처리 시스템에서는 게임 동작과 같은 고강도 작업과 MP3 재생과 같은 저강도 작업 간의 성능 요구 차가 100:1의 비율을 넘을 수 있다. 모든 작업에 사용되는 프로세서가 하나인 경우, 해당 프로세서는 고성능을 가져야 하지만, 프로세서 마이크로 아키텍처의 원리는 고성능 프로세서가 저성능 프로세서보다 덜 에너지 효율적이라는 것이다. 프로세서에 소정 범위의 성능 레벨과 대응하는 에너지 소비 특성을 제공하기 위해 전압 및 주파수의 동적 스케일링(DVFS) 또는 파워 게이트 제어와 같은 기술을 사용하여 프로세서 레벨에서 에너지 효율을 개선하는 것이 알려져 있다. 그러나, 이러한 기술은 하나의 프로세서가 이러한 분할 수행 요건으로써 작업을 감당하도록 하기엔 통상 불충분하게 된다.
따라서, 이러한 분할 작업의 수행을 위해 에너지 효율적인 시스템을 제공하기 위해 다중 코어 아키텍처를 사용하는 것이 고려된 바 있다. 효율 증가를 위해 다른 작업에 대해 다른 코어가 병렬로 동작하도록 하는 것에 의해 다중 프로세서 코어를 갖는 시스템을 성능 향상에 얼마간 사용하였지만, 이러한 시스템을 에너지 효율 개선에 어떻게 사용할 수 있는 지에 대한 분석은 비교적 최근에 이루어졌다.
ACM SIGOPS Operating System Review, 43권 25호(2009년 7월)에 실린 V Kumar 등에 의한 논문 "Towards Better Perfomance Per Watt in Virtual Environments on Asymmetric Single-ISA Multi-Core Systems"은 동일한 명령 세트 아키텍처를 노출하지만 특징, 복잡성, 전력 소비 및 성능이 다른 여러 개의 코어로 이루어진 비대칭의 단일 명령 세트 아키텍처(ASISA) 다중 코어 시스템을 기술하고 있다. 논문에서는 성능 및 에너지 소비의 개선을 위해 이들 작업 부하가 ASISA 시스템상에서 스케줄링되어야 하는 방법을 이해하기 위해 가상 작업 부하의 특성을 연구하고 있다. 논문은 소정의 작업이 높은 주파수/성능의 마이크로 아키텍처(통상 집중적 작업의 계산)에 더 해당되는 반면, 다른 작업은 낮은 주파수/성능의 마이크로 아키텍터에 더욱 적합하고 부작용으로서 에너지 소비가 적은 것(통상 집중적 작업의 입력/출력)을 확인하고 있다. 이러한 연구는 ASISA 시스템을 어떻게 사용하여 에너지 효율적인 방식으로 다양한 작업을 수행할 수 있는지를 보여주지만, 개별 작업의 스케줄링을 위한 메커니즘을 가장 적절한 프로세서에 제공하는 것이 여전히 필요하고 이러한 스케줄링 관리는 통상 운영 시스템 상에 큰 부담을 준다.
36차 마이크로아키텍처 국제 심포지엄 회의(MICRO-36'03)에 실린 R Kumar 등에 의한 논문 "Single-ISA Heterogenous Multi-Core Architectures: The Potential for Processor Power Reduction"은 모든 코어가 동일한 명령 세트를 실행하지만 다른 능력 및 성능 레벨을 갖는 다중-코어 아키텍터를 기술한다. 구동 시간에, 시스템 소프트웨어는 어플리케이션의 리소스 요건을 평가하고, 이들 요건을 가장 만족시키면서도 에너지 소비를 최소화하는 코어를 선택한다. 상기 논문의 섹션 2에 논의되는 바와 같이, 어플리케이션의 실행 중, 운영 시스템 소프트웨어는 해당 어플리케이션을 다른 코어에 매칭을 시도함으로써 예컨대, 특정 성능 요건 등의 확정된 목표 기능을 만족하고자 하고 있다. 섹션 2.3에서는 코어의 스위칭의 희생이 기술되는데, 이러한 희생은 스위칭의 정교성의 제한을 필요로 하는 것이다. 운영 시스템이 스위칭을 유효한 것으로 결정하면, 새로운 코어를 파워 업시키고 캐시 메모리를 비우도록 기동하여 모든 불량 캐시 데이터를 공유 메모리 구조에 세이브(저장)한 후, 새로운 코어에 신호를 보내 미리 정해진 운영 시스템 엔트리 시점에서 작동 시작하도록 하는 특정 예가 논의된다. 그러면 기존 코어는 파워 다운되고 새로운 코어가 메모리로부터 필요한 데이터를 검색할 수 있다. 이러한 접근은 소정의 어플리케이션이 운영 시스템에 의해 코어 사이에서 스위칭될 수 있게 하는 것으로 섹션 2.3에 기술되고 있다. 논문의 나머지 부분은 이러한 스위칭이 에너지 소비의 절감 목적으로 다중 코어 내에서 어떻게 동적으로 수행될 수 있는지를 기술하고 있다.
상기 논문은 단일-ISA 외래 다중-코어 아키텍처가 에너지 소비 감소를 제공할 가능성을 기술하고 있지만, 운영 시스템이 수행될 개별 어플리케이션에 대한 충분한 스케줄링 결정을 가능케 하는 기능성을 갖도록 하는 것이 여전히 필요하다. 이 점에서 운영 시스템의 역할은 다른 아키텍처 특성의 프로세서의 경우 간의 스위칭시 보다 복잡해지게 된다. 이와 관련하여, 논문에 고려되는 알파 코어(EV4-EV8)는 예컨대, 섹션 2.2의 5번째 구문에 언급된 바와 같이 ISA와 완전히 호환되는 것은 아님을 알아야 한다.
또한, 논문은 코어 간의 스위칭 어플리케이션에 상당한 오버헤드가 존재하는 문제점에 대해 다루고 있지 않은데, 이는 스위칭으로부터 얻어지는 이익을 크게 저감시킬 수 있다.
본 발명의 일측면의 관점에서 데이터 처리 장치가 제공되며, 해당 장치는: 데이터 처리 동작을 수행하는 제1 처리 회로와; 데이터 처리 동작을 수행하는 제2 처리 회로와; 이전 자극에 응답하여, 데이터 처리 장치에 의해 수행될 작업 부하의 성능을 소스 처리 회로로부터 수신지 처리 회로로 이전하는 핸드오버 동작을 수행하는 스위치 제어기를 포함하고; 상기 제1 처리 회로는 상기 작업 부하가 상기 제1 처리 회로 또는 제2 처리 회로 상에서 수행 가능하도록 상기 제2 처리 회로와 아키텍처가 호환 가능하고, 상기 작업 부하는 적어도 하나의 어플리케이션과 해당 적어도 하나의 어플리케이션을 구동시키는 적어도 하나의 운영 시스템을 포함하고, 상기 제1 처리 회로는 해당 제1 처리 회로의 성능이 상기 제2 처리 회로의 성능과 상이하도록 상기 제2 처리 회로와 마이크로 아키텍처가 상이하며, 상기 제1 및 제2 처리 회로는 상기 작업 부하가 임의의 시점에서 상기 제1 및 제2 처리 회로 중 하나에 의해 수행되도록 구성되며; 상기 소스 처리 회로는 상기 제1 및 제2 처리 회로 중 하나이고, 상기 수신지 처리 회로는 상기 제1 및 제2 처리 회로 중 다른 하나이고; 상기 스위치 제어기는 상기 핸드오버 동작 중, (i) 상기 소스 처리 회로가 자체의 현재 아키텍처 상태를 상기 수신지 처리 회로에 유효하게 구성하도록 유도하고; (ii) 상기 작업 부하의 이전이 상기 적어도 하나의 운영 시스템에 투명하도록 미리 정해진 프로세서 특정 설정 정보를 상기 적어도 하나의 운영 시스템으로부터 마스킹하도록 구성되며; 상기 현재 아키텍처 상태는 상기 핸드오버 동작이 개시되는 시점에 상기 제1 및 제2 처리 회로 사이에 공유된 공유 메모리로부터 유효하지 않고, 상기 작업 부하의 성능을 상기 소스 처리 회로로부터 성공적으로 인계받기 위해 상기 수신지 처리 회로에 필요한 상태인 것을 특징으로 한다.
본 발명에 따르면, 데이터 처리 장치는 아키텍처가 서로 호환 가능하지만 마이크로 아키텍처는 상이한 제1 및 제2 처리 회로를 포함한다. 제1 및 제2 처리 회로의 아키텍처의 호환성에 기인하여, 하나 이상의 어플리케이션뿐만 아니라 해당 하나 이상의 어플리케이션을 구동시키는 적어도 하나의 운영 시스템을 포함하는 작업 부하가 제1 및 제2 처리 회로 사이에서 이동될 수 있다. 또한, 제1 및 제2 처리 회로는 마이크로 아키텍처가 상이하므로, 제1 및 제2 처리 회로의 성능 특성( 및 그에 따른 에너지 소비 특성)이 상이하다.
본 발명에 따르면, 임의의 시점에서 작업 부하는 제1 및 제2 처리 회로 중 하나에 의해 수행되며, 스위치 제어기는 이전 자극에 응답하여 작업 부하의 성능을 처리 회로 사이에서 이전하는 핸드오버 동작을 수행한다. 이전 자극의 수신시, 두 개의 처리 회로 중 현재 작업 부하를 수행하는 회로를 소스 처리 회로인 것으로 간주하고 다른 회로를 수신지 처리 회로인 것으로 간주한다. 핸드오버 동작을 수행하는 역할의 스위치 제어기는 소스 처리 회로의 현재 아키텍처 상태가 수신지 처리 회로에 유효하게 되도록 유도하고, 추가로 작업 부하의 이전이 작업 부하의 일부를 형성하는 적어도 하나의 운영 시스템에 투명하도록 미리 정해진 프로세서 특정 설정 정보를 해당 적어도 하나의 운영 시스템으로부터 마스킹한다.
본 발명의 사용을 통해, 전체 작업 부하를 하나의 처리 회로로부터 다른 처리 회로로 이전하면서, 이와 함께 이러한 이전을 운영 시스템으로부터 마스킹하고, 핸드오버 동작이 개시되는 시점에서 공유 메모리에 유효하지 않은 필요한 아키텍처가 수신지 처리 회로에 유효하게 됨으로써 해당 수신지 처리 회로가 작업 부하의 성능을 성공적으로 인계받을 수 있도록 하는 것을 보장하는 것이 가능하다.
전체 작업 부하를 임의의 특정 시점에서 제1 및 제2 처리 회로 중 하나에서만 수행되는 거시적 엔티티로서 취급하는 것에 의해, 본 발명의 기술은 작업 부하가 운영 시스템에 대해 투명한 방식으로 제1 및 제2 처리 회로 사이에서 용이하게 스위칭될 수 있게 하면서도, 수신지 처리 회로가 작업 부하의 성능을 성공적으로 인계받을 수 있도록 하는데 필요한 모든 정보를 가진다. 이러한 접근은 운영 시스템을 사용하여 어플리케이션을 특정 처리 회로에 스케줄링하는 것을 관리하는 것으로부터 유래된 서두에 언급한 문제점에 대처하며, 상당한 에너지 소비 절감이 달성될 수 있음이 확인되었다.
일 실시예에서, 상기 데이터 처리 장치는 상기 제1 및 제2 처리 회로에 제공되는 파워를 개별 제어하는 파워 제어 회로를 더 포함하고, 이전 자극의 발생 이전에, 상기 수신지 처리 회로는 파워 세이빙 상태에 있고, 상기 핸드오버 동작 중, 상기 파워 제어 회로는 상기 수신지 처리 회로에 작용하여 해당 수신지 처리 회로가 상기 작업 부하의 성능을 인계받기 이전에 상기 파워 세이빙 상태를 벗어나도록 한다. 이러한 파워 제어 회로의 사용으로, 현재 작업 부하를 수행하지 않는 임의의 처리 회로에 의해 소비되는 에너지를 줄이는 것이 가능하다.
일 실시예에서, 상기 핸드오버 동작 이후에, 파워 제어 회로는 상기 소스 처리 회로가 파워 세이빙 상태로 들어가도록 유도한다. 이것은 핸드오버 동작 직후에 일어날 수 있으며, 대안적인 실시예에서, 상기 소스 처리 회로는 소정의 미리 정해진 시간 구간이 경과 후에만 상기 파워 세이빙 상태로 들어가도록 구성될 수 있으며, 이는 상기 소스 처리 회로에 의해 여전히 유지되는 데이터가 보다 에너지 효율적이고 높은 성능을 갖는 방식으로 상기 수신지 처리 회로에 유효하게 되도록 할 수 있다.
다른 처리 회로 사이의 스위칭이 일어나는 방식과 무관하게, 종래 기술에 존재하는 추가의 문제점은 해당 스위칭에 필요한 정보를 어떻게 성공적으로 신속하고 에너지 효율적인 방식으로 이전할 수 있는지에 있다. 특히, 서두에 언급된 현재 아키텍처 상태는 수신지 처리 회로에 유효하게 되는 것이 필요하다. 이를 달성할 수 있는 한 가지 방법은 핸드오버 동작의 일부로서 상기 현재 아키텍처 상태 전부를 공유 메모리에 기록함으로써 해당 상태가 수신지 처리 회로에 의해 공유 메모리로부터 판독될 수 있도록 하는 것이다. 여기에 사용되는 "공유 메모리"란 용어는 제1 및 제2 처리 회로 모두에 의해 직접 액세스 가능한 메모리, 예컨대, 배선을 통해 제1 및 제2 처리 회로 모두에 결합된 메인 메모리를 말한다.
그러나, 현재 아키텍처 상태 전부를 공유 메모리에 기록시 생기는 문제점은 이러한 처리가 상당량의 시간을 소요할 뿐 아니라, 상당한 에너지 소비를 가져오며, 이는 스위칭의 수행에 의해 얻어질 수 있는 잠재적인 이익을 크게 상쇄할 수 있다.
일 실시예에 따르면, 이전 동작 중에, 스위치 제어기는 상기 현재 아키텍처 상태를 획득하기 위해 상기 수신지 처리 회로에 의한 공유 메모리의 문의없이 상기 소스 처리 회로가 자체의 현재 아키텍처 상태를 상기 공유 메모리에 유효하게 하는 가속 메커니즘을 채용하도록 유도한다. 따라서, 이러한 실시예에 따라, 수신지 처리 회로에 유효하게 되도록 하기 위해 아키텍처 상태가 공유 메모리를 통해 전송되는 것을 필요로 하지 않는 메커니즘이 제공된다. 이것은 이전 동작 중 성능 개선은 물론, 이전 동작과 관련된 에너지 소비 감소를 가져온다.
일 실시예에서, 적어도 상기 소스 회로는 연관 캐시를 가지며, 상기 데이터 처리 장치는 스누프 제어 회로를 더 포함하며, 상기 가속 메커니즘은 상기 소스 회로의 관련 캐시와 상기 스누프 제어 회로의 사용을 통해 현재 아키텍처 상태를 상기 수신지 처리 회로로 이전하는 것을 포함한다.
본 기술에 따르면, 상기 수신지 프로세서에 유효한 상태로 형성되어야 하는 현재 아키텍처 상태를 저장하기 위해 상기 소스 처리 회로의 로컬 캐시가 사용된다. 해당 상태는 공유 가능한 것으로 마킹되고, 이는 해당 상태가 상기 스누프 제어 회로를 사용하여 수신지 처리 회로에 의해 탐색되게 한다. 따라서, 이러한 실시예에서, 상기 제1 및 제2 처리 회로는 서로 상관되는 하드웨어 캐시로 구성되고, 이는 상기 소스 처리 회로로부터 상기 수신지 처리 회로로의 스위칭에 포함된 시간, 에너지 및 하드웨어 복잡성의 정도를 감소시킨다.
하나의 특정 실시예에서, 상기 가속 메커니즘은 세이브 및 복원 메커니즘이고, 상기 세이브 및 복원 메커니즘은 상기 소스 처리 회로가 자체의 현재 아키텍처 상태를 관련 캐시에 저장하도록 하고 상기 수신지 처리 회로가 복원 동작을 수행하도록 하고, 상기 복원 동작을 통해 상기 스누프 제어 회로는 상기 소스 처리 회로의 관련 캐시로부터 현재 아키텍처 상태를 검색한 후 해당 검색된 아키텍처 상태를 상기 수신지 처리 회로에 제공한다. 상기 세이브/저장 메커니즘은 아키텍처 상태를 소스 회로의 로컬 캐시에 저장하고 이후 수신지 처리 회로가 해당 상태를 검색하는데 특히 효율적인 기술을 제공한다.
이러한 접근은 수신지 처리 회로가 차제의 관련 로컬 캐시의 보유 여부에 무관하게 이용될 수 있다. 수신지 처리 회로로부터 직접 또는 캐시 미스 발생시에는 수신지 처리 회로의 관련 로컬 캐시로부터 아키텍처 상태의 항목에 대한 요청이 스누프 제어 회로에 의해 수신될 때마다, 스누프 제어 회로는 요청된 아키텍처 항목이 소스 회로에 관련된 로컬 캐시에 저장됨을 결정하고 수신지 처리 회로로(직접 또는 존재하는 경우 수신지 처리 회로의 관련 캐시를 통해)의 복귀를 위해 소스 회로의 로컬 캐시로부터 해당 데이터를 검색할 것이다.
하나의 특정 실시예에서, 상기 수신지 처리 회로는 스누프 제어 회로에 의해 얻어지는 이전된 아키텍처 상태가 상기 수신지 처리 회로에 의한 문의를 위해 저장되는 관련 캐시를 포함한다.
그러나, 전술한 하드웨어 캐시의 조화를 통한 접근은 전술한 가속 메커니즘을 제공하기 위해 사용될 수 있는 유일한 메커니즘이 아니다. 예를 들면, 대안적인 실시예에서, 상기 가속 메커니즘은 상기 소스 처리 회로가 자체의 아키텍처 상태를 상기 수신지 처리 회로로 제공하는 상기 소스 처리 회로와 상기 수신지 처리 회로 간의 전용 버스를 포함한다. 이러한 접근은 통상 캐시 코히런시(coherency) 접근을 채용한 경우보다 하드웨어 비용이 고가이지만, 스위칭을 수행하는 매우 빠른 방법을 제공할 것이고, 이는 소정의 구현 형태에 유리할 수 있다.
스위치 제어기는 여러 가지 다양한 형태를 취할 수 있다. 그러나, 일 실시예에서, 상기 스위치 제어기는 상기 적어도 하나의 운영 시스템을 상기 제1 및 제2 처리 회로로부터 논리적으로 분리시키는 가상 현실화 소프트웨어를 적어도 포함한다. 특정 세트의 원시 명령(native instruction)을 사용하여 기록된 어플리케이션이 다른 원시 명령 세트를 갖는 하드웨어 상에서 실행될 수 있도록 가상 머신을 사용하는 것이 알려져 있다. 상기 어플리케이션은 가상 머신 환경에서 실행되는데, 이러한 환경에서 어플리케이션의 명령은 가상 머신에 고유하지만 가상 머신은 다른 원시 명령 세트를 갖는 하드웨어상에서 실행되는 소프트웨어에 의해 구현된다. 전술한 실시예의 스위치 제어기에 의해 제공되는 가상현실화 소프트웨어는 가상 머신 환경 내의 하이퍼바이저와 유사한 방식으로 동작하는 것으로 보여질 수 있는데, 이는 해당 제어기가 작업 부하와 기본적인 하드웨어 플랫폼 사이를 분리시키기 때문이다. 본 발명의 측면에서, 가상현실화 소프트웨어는 프로세서 특정 설정 정보를 해당 작업 부하를 형성하는 운영 시스템(들)으로부터 마스킹하면서 하나의 처리 회로로부터 다른 처리 회로로 작업 부하를 이전하는 효율적인 메커니즘을 제공한다.
이전 자극은 다양한 원인으로 발생될 수 있다. 그러나, 일 실시예에서, 이전 자극의 타이밍은 데이터 처리 장치의 에너지 효율을 향상시키도록 선택된다. 이것은 다양한 방식으로 얻어질 수 있다. 예를 들면, 처리 회로의 작업 카운터는 성능에 민감한 이벤트(예, 실행되는 명령의 수 또는 부하-저장 동작의 수)를 카운트하도록 셋업될 수 있다. 사이클 카운터 또는 시스템 타이머와 결합되면, 이것은 고성능 처리 회로로의 스위칭에 의해 더 잘 제공될 수 있는 고강도 연산 어플리케이션이 실행됨을 나타내는 식별, 에너지 효율적인 처리 회로 상에 더 잘 제공될 수 있는 IO 집중 어플리케이션을 지시하는 다수의 부하-저장 동작의 식별 등을 허용한다. 대안적인 접근은 "빅(big)", "리틀(little)" 또는 "빅/리틀"로 프로파일되고 마킹되는 어플리케이션의 경우인데, 이로써 운영 시스템은 작업 부하를 이동시키기 위해 스위치 제어기와 인터페이스 연결될 수 있다(예기서, "빅"이란 용어는 고성능 처리 회로를, "리틀"이란 용어는 보다 에너지 효율적인 처리 회로를 말한다).
소스 처리 회로로부터 작업 부하의 작업을 성공적으로 인계받기 위해 수신지 처리 회로에 필요한 아키텍처 상태는 다양한 형태를 취할 수 있다. 그러나, 일 실시예에서, 상기 아키텍처 상태는 프로그램 카운터 값을 포함하는, 소스 처리 회로의 하나 이상의 특수 목적 레지스터의 현재 값을 적어도 포함한다. 프로그램 카운터 값 이외에, 다른 다양한 정보가 특수 목적 레지스터에 저장될 수 있다. 예를 들면, 다른 특수 목적 레지스터는 프로세서 모드용 제어 비트, 인터럽트 마스킹, 실행 상태 및 플래그를 보유하는 프로세서 상태 레지스터(예, ARM 아키텍처 중의 CPSR 및 SPSR)를 포함한다. 다른 특수 목적 레지스터는 데이터 엔디안(endianness)를 변경하고 MMU를 작동 온 또는 오프시키고, 데이터/명령 캐시를 온 또는 오프 시키는 등의 수행을 위해 비트를 보유하는 아키텍처 제어(ARM 아키텍처의 CP15 시스템 제어 레지스터)를 포함한다. CP15 내의 다른 특수 목적 레지스터는 예외 어드레스 및 상태 정보를 저장한다.
일 실시예에서, 상기 아키텍처 상태는 상기 소스 처리 회로의 아키텍처 레지스터 파일 내에 저장되는 현재 값을 더 포함한다. 당업자가 이해할 수 있는 바와 같이, 아키텍처 레지스터 파일은 어플리케이션이 구동되는 동안 실행되는 명령에 의해 문의되는 레지스터를 포함하며, 해당 레지스터는 연산을 위한 소스 오퍼랜드(operands)를 보유하고 해당 연산의 결과가 저장되는 위치를 제공한다.
일 실시예에서, 상기 제1 및 제2 처리 회로 중 적어도 하나는 하나의 처리 유닛을 포함한다. 또한, 일 실시예에서, 상기 제1 및 제2 처리 회로 중 적어도 하나는 동일한 아미크로 아키텍처를 갖는 처리 유닛의 집합을 포함한다. 하나의 특정 실시예에서, 상기 제1 처리 회로는 동일한 마이크로 아키텍처를 갖는 처리 유닛의 집합을 포함하고, 상기 제2 처리 회로는 하나의 처리 유닛(제1 처리 회로를 형성하는 집합 내의 처리 유닛의 마이크로 아키텍처와 다른 마이크로 아키텍처를 가짐)을 포함한다.
파워 제어 회로가 제1 및 제2 처리 회로를 선택적으로 설정할 수 있는 파워 세이빙 상태는 다양한 형태를 취할 수 있다. 일 실시예에서, 상기 파워 세이빙 상태는: 파워 오프 상태; 부분/완전 데이터 보유 상태; 휴면 상태; 또는 아이들 상태; 중 하나이다. 이러한 상태는 당업자에 의해 잘 이해될 수 있으며, 따라서 여기서는 더 상세히 논의되지 않는다.
제1 및 제2 처리 회로가 마이크로 아키텍처 구조가 다르게 배열될 수 있는 다수의 방법이 존재한다. 일 실시예에서, 상기 제1 및 제2 처리 회로는: 다른 실행 파이프라인 길이; 또는 다른 실행 리소스; 중 적어도 하나를 갖는 것에 의해 마이크로 아키텍처가 다르게 구성된다. 파이프라인의 길이의 차이는 통상 작동 주파수의 차이를 가져올 것이고, 이는 다시 성능에 영향을 줄 것이다. 유사하게, 실행 리소스의 차이는 처리 효율과 그에 따른 성능에 영향을 미칠 것이다. 예를 들면, 광범위한 실행 리소스를 갖는 처리 회로는 더 많은 정보가 임의의 특정 시점에 처리될 수 있게 함으로써 처리 효율을 향상시킬 수 있다. 추가로 또는 대안적으로, 하나의 처리 회로는 다른 것보다 많은 실행 리소스, 예컨대, 더 많은 연산 로직 유닛(ALUs)을 가질 수 있으며, 이는 다시 처리 효율을 향상시킬 것이다. 실행 리소스의 다른 예로, 에너지 효율적 처리 회로는 단순한 정렬 파이프라인을 가지는 반면, 고성능 처리 회로는 비정렬 슈퍼 스칼라 파이프라인을 가질 수 있다.
예컨대 GHz 주파수로 구동하는 고성능 처리 회로를 사용할 때 생길 수 있는 추가의 문제점은 이러한 프로세서가 설계 동작 범위의 온도 한계에 접근하거나 심지어 초과하는 것이다. 이들 문제점에 대처하고자 하는 공지의 기술은 처리 회로를 클록 스로틀링 및/또는 전압 감소를 포함할 수 있는 낮은 파워 상태로 유도하여 열 출력을 낮추고, 잠재적으로는 처리 회로를 소정의 시간 동안 완전히 작동 오프시키는 것도 포함할 수 있다. 그러나, 본 발명의 실시예의 기술을 적용시, 온도 한계를 초과하는 것을 피할 수 있는 대안적인 접근의 구현이 가능하다. 특히, 일 실시예에서, 상기 소스 처리 회로는 상기 수신지 처리 회로보다 고성능이며, 상기 데이터 처리 장치는 상기 소스 처리 회로의 열 출력을 모니터링하고 상기 열 출력이 미리 정해진 레벨에 도달하면 상기 자극 이전을 시발하는 온도 모니터링 회로를 더 포함한다. 이러한 기술에 따르면, 전체 작업 부하는 고성능 처리 회로로부터 저성능 처리 회로로 이전될 수 있고, 이후 열이 덜 발생될 것이므로 소스 처리 회로는 냉각이 될 것이다. 따라서, 2개의 처리 회로를 포함하는 패키지는 냉각될 수 있는 한편, 프로그램은 비록 낮은 처리 효율일지라도 계속적으로 실행될 수 있다.
데이터 처리 장치는 다양한 방식으로 배열될 수 있다. 그러나, 일 실시예에서, 상기 제1 및 제2 처리 회로는 하나의 집적 회로 내에 존재한다.
본 발명의 제2 측면의 관점에서 데이터 처리 장치가 제공되며, 해당 장치는: 데이터 처리 동작을 수행하기 위한 제1 처리 수단과; 데이터 처리 동작을 수행하기 위한 제2 처리 수단과; 이전 자극에 응답하여, 데이터 처리 장치에 의해 수행될 작업 부하의 성능을 소스 처리 수단으로부터 수신지 처리 수단으로 이전하는 핸드오버 동작을 수행하기 위한 이전 제어 수단을 포함하고; 상기 제1 처리 수단은 상기 작업 부하가 상기 제1 처리 수단 또는 제2 처리 수단 상에서 수행 가능하도록 상기 제2 처리 수단과 아키텍처가 호환 가능하고, 상기 작업 부하는 적어도 하나의 어플리케이션과 해당 적어도 하나의 어플리케이션을 구동시키는 적어도 하나의 운영 시스템을 포함하고, 상기 제1 처리 수단은 해당 제1 처리 수단의 성능이 상기 제2 처리 수단의 성능과 상이하도록 상기 제2 처리 수단과 마이크로 아키텍처가 상이하며, 상기 제1 및 제2 처리 수단은 상기 작업 부하가 임의의 시점에서 상기 제1 및 제2 처리 수단 중 하나에 의해 수행되도록 구성되며; 상기 소스 처리 수단은 상기 제1 및 제2 처리 수단 중 하나이고, 상기 수신지 처리 수단은 상기 제1 및 제2 처리 수단 중 다른 하나이고; 상기 이전 제어 수단은 상기 핸드오버 동작 중, (i) 상기 소스 처리 수단이 자체의 현재 아키텍처 상태를 상기 수신지 처리 수단에 유효하게 구성하도록 유도하고; (ii) 상기 작업 부하의 이전이 상기 적어도 하나의 운영 시스템에 투명하도록 미리 정해진 프로세서 특정 설정 정보를 상기 적어도 하나의 운영 시스템으로부터 마스킹하도록 구성되며; 상기 현재 아키텍처 상태는 상기 핸드오버 동작이 개시되는 시점에 상기 제1 및 제2 처리 수단 사이에 공유된 공유 메모리 수단으로부터 유효하지 않고, 상기 작업 부하의 성능을 상기 소스 처리 수단으로부터 성공적으로 인계받기 위해 상기 수신지 처리 수단에 필요한 상태인 것을 특징으로 한다.
본 발명의 제3 측면의 관점에서 데이터 처리 장치 동작 방법이 제공되며, 상기 데이터 처리 장치는 데이터 처리 동작을 수행하는 제1 처리 회로와 데이터 처리 동작을 수행하는 제2 처리 회로를 포함하고, 상기 제1 처리 회로는 상기 데이터 처리 장치에 의해 수행될 작업 부하가 상기 제1 처리 회로 또는 제2 처리 회로 상에서 수행 가능하도록 상기 제2 처리 회로와 아키텍처가 호환 가능하고, 상기 작업 부하는 적어도 하나의 어플리케이션과 해당 적어도 하나의 어플리케이션을 구동시키는 적어도 하나의 운영 시스템을 포함하고, 상기 제1 처리 회로는 해당 제1 처리 회로의 성능이 상기 제2 처리 회로의 성능과 상이하도록 상기 제2 처리 회로와 마이크로 아키텍처가 상이하며, 상기 방법은: 임의의 시점에 상기 제1 및 제2 처리 회로 중 하나의 회로상에서 상기 작업 부하를 수행하는 단계와; 이전 자극에 응답하여, 상기 작업 부하의 성능을 소스 처리 회로로부터 수신지 처리 회로로 이전하는 핸드오버 동작을 수행하는 단계로서, 상기 소스 처리 회로는 상기 제1 및 제2 처리 회로 중 하나이고, 상기 수신지 처리 회로는 상기 제1 및 제2 처리 회로 중 다른 하나인, 그러한 단계와; 상기 핸드오버 동작 중, (i) 상기 소스 처리 회로가 자체의 현재 아키텍처 상태를 상기 수신지 처리 회로에 유효하게 구성하도록 유도하는 단계로서, 상기 현재 아키텍처 상태는 상기 핸드오버 동작이 개시되는 시점에 상기 제1 및 제2 처리 회로 사이에 공유된 공유 메모리로부터 유효하지 않고, 상기 작업 부하의 성능을 상기 소스 처리 회로로부터 성공적으로 인계받기 위해 상기 수신지 처리 회로에 필요한 상태인, 그러한 단계와; (ii) 상기 작업 부하의 이전이 상기 적어도 하나의 운영 시스템에 투명하도록 미리 정해진 프로세서 특정 설정 정보를 상기 적어도 하나의 운영 시스템으로부터 마스킹하는 단계를 포함하는 것을 특징으로 한다.
첨부 도면을 참조로 본 발명의 실시예들을 단지 예시적인 목적으로 설명한다.
도 1은 일 실시예에 따른 데이터 처리 시스템의 블록도이고;
도 2는 데이터 처리 장치에 의해 수행되는 작업 부하를 해당 작업 부하를 수행하는데 사용되는 데이터 처리 장치 내의 특정 하드웨어 플랫폼으로부터 논리적으로 분리하기 위해 일 실시예에 따라 제공되는 스위치 제어기(작업 부하 이전 제어기로도 지칭됨)의 개략도이고;
도 3은 일 실시예에 따라 작업 부하를 소스 프로세서로부터 수신지 프로세서로 이전하기 위해 스위칭 자극에 응답하여 소스 프로세서 및 수신지 프로세서 모두에 의해 수행되는 단계를 개략적으로 나타낸 다이어그램이고;
도 4a는 도 3의 세이빙 동작 중에 관련된 캐시 내에 소스 처리 회로의 현재 아키텍처 상태의 저장을 개략적으로 나타내며;
도 4b는 도 3의 복원 동작 중 소스 처리 회로의 현재 아키텍처 상태를 수신지 처리 회로로 이전하는 것을 제어하기 위해 스누프 제어 회로 유닛을 사용하는 것을 개략적으로 나타내고;
도 5는 일 실시예에 따라 이전 동작 중 소스 처리 회로의 현재 아키텍처 상태를 수신지 처리 회로로 이전하기 위해 가속 메커니즘을 제공하는 다른 구조를 나타내며;
도 6a-6i는 일 실시예에 따라 작업 부하를 소스 처리 회로로부터 수신지 처리 회로로 이전하기 위해 수행되는 단계를 개략적으로 나타내며;
도 7은 일 실시예에 따른 다양한 프로세서 코어의 성능 및 에너지 효율 변동을 보여주고 도 1에 예시된 다양한 프로세서 코어가 곡선을 따라 여러 시점에 사용되는 방식을 나타내 그래프이고;
도 8a 및 도 8b는 일 실시예에 사용되는 바와 같이 저성능 프로세서 파이프라인과 고성능 프로세서 파이프라인을 개략적으로 나타내고;
도 9는 작업 부하 처리 성능이 저성능 고에너지 효율의 처리 회로와 고성능 저에너지 효율의 처리 회로 간의 스위칭시 데이터 처리 시스템에 의해 소비되는 파워 변동을 나타내는 그래프이다.
도 1은 일 실시예에 따른 데이터 처리 시스템의 블록도이다. 도 1에 예시된 바와 같이, 시스템은 아키텍처 호환 가능한 2개의 처리 회로 사례(처리 회로 0(10)와 처리 회로 1(50))를 포함하지만, 다른 처리 회로 사례는 다른 마이크로 아키텍처를 가진다. 특히, 처리 회로(10)는 처리 회로(50)보다 고성능이지만 처리 회로(10)가 처리 회로(50)보다 덜 에너지 효율적이 되는 균형 상태로 동작하도록 배열된다. 마이크로 아키텍처 차이의 예는 도 8a 및 도 8b를 참조로 하기에 보다 상세히 설명될 것이다.
각각의 처리 회로는 하나의 처리 유닛(여기서는 프로세서 코어로도 지칭됨)을 포함할 수 있거나, 또는 대안적으로 처리 회로 사례 중 적어도 하나는 자체가 동일한 마이크로 아키텍처를 가지는 처리 유닛의 집합을 포함할 수 있다.
도 1에 예시된 예에서, 처리 회로(10)는 양자가 아키텍처 및 마이크로 아키텍처 상 동일한 2개이 프로세서 코어(15, 20)를 포함한다. 이에 대해, 처리 회로(50)는 오직 하나의 처리 코어(55)를 포함한다. 다음의 설명에서, 프로세서 코어(15, 20)는 "빅(big)" 코어로 지칭되는 반면, 프로세서 코어(55)는 "리틀(little)" 코어로 지칭되는데, 이는 프로세서 코어(15, 20)가 성능을 염두에 두고 설계되는데 기인하여 통상 프로세서 코어(55)보다 복잡한 반면, 이에 대해 프로세서 코어(55)는 에너지 효율을 염두에 두고 설계되는데 기인하여 통상 훨씬 덜 복잡하기 때문이다.
도 1에서, 코어(15, 20, 55) 각각은 자체의 관련 로컬 레벨 1 캐시(25, 30, 60)를 포함하며, 해당 캐시는 관련 코어에 의해 문의되는 명령 및 데이터 모두를 저장하기 위한 통합된 캐시로서 배열되거나 Harvard 아키텍처로 배열됨으로써 별개의 레벨 1 데이터와 레벨 1의 명령 캐시를 제공할 수 있다. 코어 각각은 자체의 관련 레벨 1 캐시를 가지는 것으로 보여지지만, 이것은 필요 조건이 아니고, 대안적인 실시예에서 하나 이상의 코어가 로컬 캐시를 보유하지 않을 수 있다.
도 1에 도시된 실시예에서, 처리 회로(10)는 코어(15)와 코어(20) 사이에 공유된 레벨 2의 캐시(35)도 포함하며, 2개의 레벨 1 캐시(25, 30)와 레벨 2의 캐시(35) 사이의 캐시 코히런시를 보장하기 위해 스누프(snoop) 제어 유닛(40)이 사용된다. 일 실시예에서, 레벨 2 캐시는 포괄적 캐시로서 배열되므로, 레벨 1 캐시(25, 30) 어느 것에 저장되는 임의의 데이터는 레벨 2 캐시(35)에도 존재할 것이다. 당업자들은 잘 이해하는 바와 같이, 스누프 제어 유닛(40)의 목적은 다양한 캐시 간의 캐시 코히런시를 확립함으로써 코어(15, 20)가 액세스 요청을 발할 때 가장 최신 버전의 임의의 데이터에 언제나 액세스하는 것이 보장될 수 있다. 따라서, 단지 예시로써, 코어(15)가 관련 레벨 1 캐시(25)에 존재하지 않는 데이터에 대한 액세스 요청을 발하면, 스누프 제어 유닛(40)은 전파되는 요청을 레벨 1 캐시(25)로부터 차단하고, 레벨 1 캐시(30) 및/또는 레벨 2 캐시(35)를 참조로 해당 액세스 요청이 다른 캐시 중 하나의 콘텐츠로부터 제공될 수 있는지 여부를 결정한다. 데이터가 임의의 캐시에 존재하지 않는 경우에만 액세스 요청은 배선(70)을 통해 메인 메모리(80)로 전파되는데, 이때 메인 메모리(80)는 처리 회로(10)와 처리 회로(50) 모두 사이에 공유되는 메모리이다.
배선(70) 내에 제공되는 스누프 제어 유닛(400)은 스누프 제어 유닛(40)과 유사한 방식으로 동작하지만, 해당 경우는 처리 회로(10) 내에 제공되는 캐시 구조와 처리 회로(50) 내에 제공되는 캐시 구조 사이에 코히런시를 찾는다. 레벨 2 캐시(35)가 포괄적 캐시인 예에서, 스누프 제어 유닛은 처리 회로(10)의 레벨 2 캐시(35)와 처리 회로(50)의 레벨 1 캐시(60) 사이에 하드웨어 캐시 코히런시를 유지한다. 그러나, 레벨 2 캐시(35)가 독점적 레벨 2 캐시로서 구성되면, 스누프 제어 유닛(75)은 처리 회로(10)의 캐시와 처리 회로(50)의 캐시(60) 사이에 캐시 코히런시를 보장하기 위해 레벨 1 캐시(25, 30)에 유지된 데이터를 탐색할 것이다.
일 시시예에 따르면, 처리 회로(10)와 처리 회로(50) 중 하나의 회로만이 임의의 시점에서 작업 부하를 능동적으로 처리할 것이다. 해당 어플리케이션을 위해, 작업 부하는 적어도 하나의 어플리케이션과 도 2에서 참조 번호 100으로 개략적으로 지시된 것과 같은 적어도 하나의 어플리케이션을 구동시키는 적어도 하나의 운영 시스템을 포함하는 것으로 고려될 수 있다. 해당 예에서, 운영 시스템(115)의 제어 하에 2개의 어플리케이션(105, 110)이 구동되고 있으며, 어플리케이션(105, 110)과 운영 시스템(115)은 전체적으로 작업 부하(100)를 형성한다. 어플리케이션은 사용자 레벨에 존재하는 것이 고려될 수 있지만, 운영 시스템은 특권 레벨에 존재하며, 전체적으로 어플리케이션과 운영 시스템에 의해 형성되는 작업 부하는 하드웨어 플랫폼(125)(하드웨어 레벨 뷰를 나타냄) 상에서 구동된다. 임의의 시점에 상기 하드웨어 플랫폼은 처리 회로(10) 또는 처리 회로(50)에 의해 제공될 것이다.
도 1에 예시된 바와 같이, 파워 제어 회로(65)는 처리 회로(10)와 처리 회로(50)에 파워를 선택적으로 독립적으로 공급되기 위해 제공된다. 하나의 처리 회로로부터 다른 회로로 작업 부하를 이전하기 이전에, 처리 회로 중 하나만이 완전히 급전될 것이고(즉 현재 작업 부하를 수행하는 처리 회로(소스 처리 회로)), 다른 처리 회로(수신지 처리 회로)는 통상 파워 세이빙 상태에 있을 것이다. 작업 부하가 하나의 처리 회로로부터 다른 처리 회로로 이전되어야 함이 결정되면, 처리 회로 모두가 파워 온 상태에 있는 이전 동작 중의 시간 구간이 존재할 것이지만, 이전 동작 후의 소정 시점에, 작업 부하가 이전 완료되는 소스인 소스 처리 회로는 파워 세이빙 상태로 놓여질 것이다.
파워 세이빙 상태는 구현 방식에 따라 다양한 형태를 취할 수 있으며, 예컨대 파워 오프 상태, 부분/완전 데이터 보유 상태, 휴면 상태, 또는 아이들 상태 중 하나일 수 있다. 이러한 상태는 당업자가 잘 이해할 수 있으므로 여기서 더 구체적으로 논의되지 않는다.
전술한 실시예의 목적은 요구되는 작업 부하의 성능/에너지 레벨에 따라 처리 회로 간의 작업 부하 스위칭을 수행하는 것이다. 따라서, 작업 부하가 게임 어플리케이션의 실행과 같은 하나 이상의 성능 집중 작업의 실행을 포함하는 경우, 작업 부하는 빅 코어(15, 20) 중 하나 또는 모두를 사용하여 고성능 처리 회로(10) 상에서 수행될 수 있다. 그러나, 이에 비해, 작업 부하가 MP3 재생과 같은 낮은 성능 집중 작업만을 수행하는 경우, 전체 작업 부하는 처리 회로(50)로 이전되어 처리 회로(50)의 사용으로부터 실현될 수 있는 에너지 효율의 잇점을 얻을 수 있다.
이러한 스위칭 능력을 최적으로 이용하기 위해, 작업 부하의 이전 동작이 스위칭의 장점을 무효화할 정도로 에너지를 소비하지 않도록 간단하고 효율적인 방식으로 스위칭이 일어나도록 하는 메커니즘을 제공하고, 스위칭 과정 자체가 상당 정도로 성능을 저하시키지 않도록 충분히 빨리 처리되도록 하는 것을 보장하는 것이 필요하다.
일 실시예에서, 이러한 장점은 처리 회로(10)를 처리 회로(50)와 아키텍처 호환 가능하게 구성하는 것에 의해 적어도 부분적으로 달성될 수 있다. 이것은 정확한 동작을 보장하면서 작업 부하가 하나의 처리 회로로부터 다른 처리 회로로 이동될 수 있는 것을 보장한다. 최소한의 상태로서, 이러한 아키텍처 호환성은 처리 회로(10, 50) 모두가 동일한 명령 세트의 아키텍처를 공유하는 것을 필요로 한다. 그러나, 일 실시예에서, 이러한 아키텍처 호환성도 2개의 처리 회로 사례가 프로그래머의 관점에서 동일한 것으로 보이는 것을 보장하도록 높은 호환성의 요건이 수반된다. 일 실시예에서, 이것은 동일한 아키텍처 레지스터와, 어플리케이션 실행시 운영 시스템에 의해 사용되는 데이터를 저장하는 하나 이상의 특수 목적 레지스터의 사용을 포함한다. 이러한 수준의 아키텍처 호환성에 의해, 처리 회로 간의 작업 부하의 이전을 운영 시스템(115)으로부터 마스킹하는 것이 가능해짐으로써, 운영 시스템은 작업 부하가 처리 회로(10)나 처리 회로(50) 상에서 실행되는지 여부에 대해 완전히 알 수 없다.
일 실시예에서,하나의 처리 회로로부터 다른 처리 회로로 이전의 취급은 도 2에 도시된 스위치 제어기(120)(가상화기로도 지칭되고 그밖에 작업 부하 이전 제어기로 지칭됨)에 의해 관리된다. 스위치 제어기는 하드웨어, 펌웨어 및/또는 소프트웨어 특징부의 조합으로 구현될 수 있으나, 일 실시예에서, 하나의 원시 명령 세트로 기록된 어플리케이션이 다른 원시 명령 세트를 채용하는 하드웨어 플랫폼 상에서 실행될 수 있도록 하기 위해 가상 머신에 제공되는 하이퍼바이저 소프트웨어와 사실상 유사한 소프트웨어를 포함한다. 두 개의 처리 회로(10, 50) 간의 아키텍처 호환성에 기인하여, 스위치 제어기(120)는 단지 하나 이상의 미리 정해진 프로세스 특정 설정 정보의 항목을 운영 시스템으로부터 마스킹하는 것에 의해 상기 이전 동작을 운영 시스템(115)으로부터 마스킹할 수 있다. 예를 들면, 프로세서 특정 설정 정보는 CP15 프로세서 ID 레지스터와 CP15 캐시 타입 레지스터의 콘텐츠를 포함한다.
이러한 실시예에서, 스위치 제어기는 공유 메모리(80)로부터 이미 유효하게 이전이 개시되는 시점이 아닌 이전의 시점에서 소스 처리 회로에 의해 유지되는 임의의 현재 아키텍처 상태가 수신지 처리 회로에 유효하게 설정됨으로써 수신지 회로가 작업 부하의 성능을 성공적으로 인계받는 위치에 있을 수 있게 하는 것을 보장하는 것이 단지 필요하다. 전술한 예를 이용하면, 이러한 아키텍처 상태는 통상 소스 처리 회로의 하나 이상의 특수 목적 레지스터의 현재 값과 함께, 소스 처리 회로의 아키텍처 레지스터 파일에 저장된 현재 값을 포함한다. 처리 회로(10, 50) 간의 아키텍처 호환성에 기인하여, 만일 현재 아키텍처 상태가 소스 처리 회로로부터 수신지 처리 회로로 이전될 수 있으면, 수신지 처리 회로는 소스 처리 회로로부터 작업 부하의 성능을 성공적으로 인계받는 위치에 있게 될 것이다.
처리 회로(10, 50) 간의 아키텍처 호환성은 해당 2개의 처리 회로 간의 전체 작업 부하의 이전을 용이하게 하지만, 일 실시예에서, 처리 회로(10, 50)는 2개의 처리 회로와 관련되어 성능 특성 및 그에 따른 에너지 소비 특성에 차이가 존재하도록 마이크로 아키텍처가 서로 상이하다. 전술한 바와 같이, 일 실시예에서, 처리 회로(10)는 고성능, 고에너지 소비의 처리 회로인 반면, 처리 회로(50)는 저성능 저에너지 소비의 처리 회로이다. 이들 2개의 처리 회로는 여러 가지 측면에서 마이크로 아키텍처가 서로 상이할 수 있지만, 통상 상이한 실행 파이프라인 길이 및/또는 상이한 실행 리소스 중 적어도 하나를 가질 것이다. 파이프라인 길이의 차이는 통상 동작 주파수에 차이를 야기하고, 이는 다시 성능에 영향을 미칠 것이다. 유사하게, 실행 리소스의 차이는 처리 효율 및 그에 따른 성능에 영향을 미칠 것이다. 따라서, 예로써, 처리 회로(10)는 처리 효율의 향상을 위해 광범위한 실행 리소스 및/또는 더 많은 실행 리소스를 가질 수 있다. 또한, 프로세서 코어(15, 20) 내의 파이프라인은 비정렬(out-of-order) 슈퍼스칼라(superscalar) 처리를 수행하도록 구성되지만, 에너지 효율적인 처리 회로(50) 내의 단순한 코어(55)는 정렬(in-order) 파이프라인으로서 구성될 수 있다. 마이크로 아키텍처의 차이에 대한 추가의 논의는 도 8a 및 도 8b를 참조로 후술될 것이다.
스위치 제어기(130)가 핸드오버 동작을 개시하도록 하여 작업 부하를 하나의 처리 회로로부터 다른 회로로 이전시키는 이전 자극의 생성은 다양한 이유로 시발될 수 있다. 예를 들면, 일 실시예에서, 어플리케이션은 '빅(고성능)', '리틀(저성능)' 및/또는 '빅/리틀'로 프로파일되고 마킹될 수 있고, 그에 따라 운영 시스템은 스위치 제어기와 인터페이스 연결됨으로써 작업 부하를 대응 이동시킬 수 있다. 따라서, 이러한 접근에 의해, 이전 자극의 생성은 실행되는 어플리케이션의 특정 조합에 매핑되어, 고성능이 필요한 경우, 작업 로드가 고성능 처리 회로(10) 상에서 실행되고, 해당 고성능이 필요하지 않으면, 대신에 에너지 효율적인 처리 회로(50)가 사용되는 것을 보장할 수 있다. 다른 실시예에서, 알고리즘이 실행되어 하나 이상의 입력을 기초로 하나의 처리 회로로부터 다른 회로로 작업 부하의 이전을 시발시킬 때를 동적으로 결정할 수 있다. 예를 들면, 처리 회로의 성능 카운터는 성능에 민감한 이벤트(예, 실행되는 명령의 수 또는 부하-저장 동작의 수)를 카운트하도록 셋업될 수 있다. 사이클 카운터 또는 시스템 타이머와 결합되면, 이것은 고성능 처리 회로로의 스위칭에 의해 더 잘 제공될 수 있는 고강도 연산 어플리케이션이 실행됨을 나타내는 식별, 또는 에너지 효율적인 처리 회로 상에 더 잘 제공될 수 있는 IO 집중 어플리케이션을 지시하는 다수의 부하-저장 동작의 식별 등을 허용한다.
이전 자극이 생성될 수 있는 경우의 추가의 예로서, 데이터 처리 시스템은 동작 중 데이터 처리 시스템의 온도를 모니터링하는 하나 이상의 열 센서(90)를 포함할 수 있다. 현대의 고성능 처리 회로, 예컨대 GHz 주파수로 구동하는 처리회로는 설계 동작 범위의 온도 한계에 도달하거나 초과하는 경우가 있을 수 있다. 이러한 열 센서(90)의 사용을 통해, 이러한 온도 한계에 도달할 때가 감지될 수 있고, 이러한 상태에서 데이터 처리 장치에 대한 전체적인 냉각을 야기하기 위해 이전 자극이 생성되어 작업 부하를 보다 에너지 효율적인 처리 회로로 이전하는 것을 시발시킬 수 있다. 따라서, 처리 회로(10)가 고성능 처리 회로이고 처리 회로(50)가 에너지 소비가 덜한 저성능 처리 회로인 도 1의 예를 고려하면, 장치의 온도 한계에 도달시 작업 부하를 처리 회로(10)로부터 처리 회로(50)로 이전하는 것은 연이어 장치의 냉각을 야기하면서도 비록 낮은 처리 효율로라도 여전히 프로그램 실행이 계속 일어나도록 허용한다.
도 1에는 2개의 처리 회로(10, 50)가 예시되고 있지만, 전술한 실시예의 기술은 3개 이상의 상이한 처리 회로를 포함하는 시스템에도 적용될 수 있어서 해당 데이터 처리 시스템이 보다 넓은 범위의 성능/에너지 레벨에 걸쳐지게 됨을 알 수 있을 것이다. 이러한 실시예에서, 상이한 처리 회로 각각은 처리 회로 간에 전체 작업 부하의 이동을 용이하게 하도록 서로 아키텍처 호환 가능하게 구성될 것이지만, 필요한 성능/에너지 레벨에 따라 해당 처리 회로의 사용 간에 선택이 이루어지도록 마이크로 아키텍처가 서로 상이할 수도 있다.
도 3은 이전 자극의 수신시 작업 부하가 소스 처리 회로로부터 수신지 처리 회로로 이전시 소스 처리 회로 및 수신지 처리 회로 모두에서 수행되는 일련의 단계를 나타낸 흐름도이다. 이러한 이전 자극은 시스템 펌웨어 인터페이스를 통해 가상화기(virtualizer)(120) 또는 운영 시스템(115)에 의해 생성됨으로써 200 단계에서 소스 프로세서(작업 부하는 물론, 스위치 제어기(120)의 적어도 일부를 형성하는 가상화기 소프트웨어를 구동함)에 의해 스위칭 자극이 검출될 수 있다. 200 단계에서 이전 자극(스위칭 자극으로도 지칭됨)의 수신은 파워 제어기(65)가 수신지 프로세서 상에 파워 온 및 리셋 동작(205)을 개시하도록 할 것이다. 이러한 파워 온 및 리셋 동작 이후, 수신지 프로세서는 210 단계에서 자체의 로컬 캐시를 무효화한 후 215 단계에서 스누핑을 인에이블할 것이다. 이 시점에서, 수신지 프로세서는 작업 부하의 이전 수행의 준비 신호를 소스 프로세서에 보낼 것이고, 해당 신호는 225 단계에서 소스 프로세서가 세이브 상태 동작을 실행하도록 한다. 이러한 세이브 상태 동작은 도 4a를 참조로 더 상세히 후술될 것이지만, 일 실시예에서, 소스 처리 회로가 핸드오버 동작이 개시되는 시점에 공유 메모리로부터 유효하지 않으면서 수신지 프로세서가 성공적으로 작업 부하의 성능을 인계받는데 필요한 임의의 현재 아키텍처 상태를 자체 로컬 캐시에 저장하는 것을 포함한다.
세이브 상태 동작(225) 이후, 스위치 상태 신호가 수신지 프로세서(230)에 발행되어, 요구되는 아키텍처 상태의 검색을 위해 소스 프로세서의 스누핑을 이제 개시하여야 함을 해당 수신지 프로세서에 알린다. 이러한 과정은 복원 상태 동작(230)을 통해 이루어지는데, 해당 복원 상태 동작은 도 4b를 참조로 더 상세히 후술될 것이지만, 일 실시예에서, 수신지 처리 회로가, 배선(70) 내에서 스누프 제어 유닛(75)에 의해 차단되고 또한 소스 아키텍처의 로컬 캐시 내의 아키텍처 상태의 캐시 저장 카피가 검색되어 수신지 프로세서로 리턴되도록 하는 일련의 액세스를 개시하는 것을 포함한다.
230 단계 이후, 수신지 프로세서는 작업 부하의 처리를 인계받는 위치에 있게 되고, 따라서 235 단계에서 정상 동작이 시작된다.
일 실시예에서, 일단 정상 동작이 수신지 프로세서상에서 시작되면, 소스 프로세서의 캐시는 임의의 불량 데이터를 공유 메모리(80)로 플러시하도록 250 단계에서 지시되는 바와 같이 비워질 수 있고, 이후 255 단계에서 소스 프로세서가 파워 다운될 수 잇다. 그러나, 일 실시예에서, 수신지 프로세서의 효율을 더 향상시키기 위해, 소스 프로세서는 도 3에서 스누핑 기간으로 지칭되는 시간 구간 동안 파워 업 상태를 유지하도록 구성된다. 이러한 시간 구간 중에, 소스 회로의 캐시 중 적어도 하나는 파워 업 상태를 유지함으로써, 수신지 프로세서에 의해 보내지는 액세스 요청에 응답하여 캐시의 콘텐츠가 스누프 제어 유닛(75)에 의해 탐색될 수 있다. 도 3에 기술된 프로세스를 이용한 전체 작업 부하의 이전 후에, 수신지 프로세서가 작업 부하의 동작을 시작 과정이 후속으로 일어나는 적어도 시간 초기 구간 동안, 작업 부하의 수행 중에 필요한 데이터 중 일부가 소스 프로세서의 캐시에 존재하는 것이 예상된다. 소스 프로세서가 자체 콘텐츠를 메모리로 플러시한 후 파워 다운되었다면, 수신지 프로세서는 이들 초기 단계 중에 비교적 비효율적으로 동작하게 되는데, 이는 프로세서의 로컬 캐시에 다량의 캐시 미스와 공유 메모리로부터 다량의 데이터 페칭이 존재하여 성능에 상당한 영향을 미치는 한편, 작업 부하에 의해 특정되는 동작의 수행을 위해 수신지 프로세서의 캐시가 웜 업되어(warmed up), 즉 수신지 처리 회로에 의해 필요한 데이터 값으로 채워지기 때문이다. 그러나, 스누핑 기간 동안 소스 프로세서의 캐시를 파워 다운 상태로 두는 것에 의해, 스누프 제어 유닛(75)은 소스 회로의 캐시를 참조로 다량의 이들 캐시 미스 요청을 서비스할 수 있어서 해당 데이터를 공유 데이터(80)로부터 검색하는 것과 비교시 상당한 성능 이득을 제공할 수 있다.
그러나, 이러한 성능 이득은 스위칭 이후의 소정 정도의 시간 동안만 지속되는 것으로 예상되는데, 그 이후에는 소스 프로세서의 캐시의 콘텐츠가 스테일(stale) 상태가 될 것이다. 따라서, 245 단계에서는 소정의 시점에 스누프 중지 이벤트가 발생되어 스누핑을 디스에이블시킬 것이고, 이후 250 단계에서 소스 프로세서의 캐시가 비워질 것이고, 이후 255 단계에서 소스 프로세서가 파워 다운될 것이다. 스누프 중지 이벤트가 발생되는 다양한 시나리오에 대한 논의는 도 6g를 참조로 더 상세히 후술될 것이다.
도 4a는 일 실시예에 따라 도 3의 225 단계에서 수행되는 세이빙 동작을 개략적으로 나타낸다. 특히, 일 실시예에서, 소스 처리 회로(300)로부터 로컬 캐시(330)로 저장되는 것이 필요한 아키텍처 상태는, 작업 부하가 수신지 처리 회로에 의해 성공적으로 인계되도록 하기 위해 작업 부하에 필요한 다양한 정보 조각을 식별하는 다양한 특성 목적 레지스터(320)의 콘텐츠와 함께, 데이터 처리 동작의 수행 중 연산 로직 유닛(ALUs)(305)에 의해 문의되는 레지스터 파일(310)의 콘텐츠로 이루어진다. 특수 목적 레지스터(320)의 콘텐츠는 예컨대, 다양한 다른 정보와 함께, 실행되는 현재 명령을 식별하는 프로그램 카운터 값을 포함할 것이다. 예를 들면, 다른 특수 목적 레지스터는 프로세서 모드, 인터럽트 마스킹, 실행 상태 및 플래그를 위한 제어 비트를 보유하는 프로세서 상태 레지스터(예, ARM 아키텍처의 CPSR 및 SPSR)를 포함한다. 다른 특수 목적 레지스터는 데이터 엔디안(endianness)를 변경하고 MMU를 작동 온 또는 오프시키고, 데이터/명령 캐시를 온 또는 오프 시키는 등의 수행을 위해 비트를 보유하는 아키텍처 제어(ARM 아키텍처의 CP15 시스템 제어 레지스터)를 포함한다. CP15 내의 다른 특수 목적 레지스터는 예외 어드레스 및 상태 정보를 저장한다.
도 4a에 개략적으로 예시된 바와 같이, 소스 프로세스 회로(300)는 통상 소정의 프로세스 특정 설정 정보(315)를 보유할 것이지만, 이 정보는 캐시(330)에 저장할 필요는 없는데, 이는 해당 정보가 수신지 처리 회로에 적용 가능하지 않을 것이기 때문이다. 프로세서 특정 설정 정보(315)는 통상 로직 상수를 사용하여 소스 처리 회로(300)에 변경 곤란하게 기록되며, 예컨대, (처리 회로마다 다른) CP15 프로세서 ID 레지스터의 콘텐츠 또는 (예컨대, 캐시가 다른 라인 길이를 가짐을 나타내는 캐시(25, 30, 60)의 구성에 의존하는) CP15 캐시 타입의 레지스터의 콘텐츠를 포함할 수 있다. 운영 시스템(115)이 일편의 프로세서 특정 설정 정보(315)를 필요로 하는 경우, 프로세서가 이미 하이퍼바이저 모드에 있지 않으면, 하이퍼바이저 모드로의 실행 트랩이 발생된다. 이에 대해, 가상화기(120)는 일 실시예에서 요청 정보의 값을 지시할 수 있지만, 다른 실시예에서 "가상" 값을 내보낼 것이다. 프로세서 ID 값의 경우, 이 가상 값은 "고성능" 및 "저성능" 프로세서 모두에 대해 동일하게 되도록 선택될 수 있어서 가상화기(120)에 의해 실제 하드웨어 설정이 운영 시스템(115)으로부터 감춰지도록 할 수 있다.
도 4a에 개략적으로 예시된 바와 같이, 세이브 동작 중, 레지스터 파일(310)과 특수 목적 레지스터(320)의 콘텐츠는 소스 처리 회로에 의해 캐시(330) 내로 저장되어 캐시 저장된 카피(335)를 형성한다. 이 캐시 저장된 카피는 공유 가능한 것으로 마킹되고, 이는 수신지 프로세서가 스누프 제어 유닛(75)을 통해 해당 상태를 탐색(스누핑)하도록 할 수 있다.
수신지 프로세서상에서 후속으로 수행되는 복원 동작이 도 4b에 개략적으로 예시된다. 특히, 자체 로컬 캐시를 보유하거나 보유하지 않을 수 있는 수신지 처리 회로는 아키텍처 상태의 특정 항목에 대한 요청을 발할 것인데, 해당 요청은 스누프 제어 유닛(75)에 의해 차단된다. 스누프 제어 유닛은 이후 아키텍처 상태의 해당 항목이 소스의 캐시 내에 존재하는지 여부를 결정하기 위해 스누프 요청을 소스 처리 회로의 로컬 캐시(330)로 보낼 것이다. 도 4a에 논의된 세이브 동작 중에 수행되는 단계 때문에, 소스의 캐시(330)에서 히트(hit)가 감지되어, 해당 캐시 저장된 아키텍처 상태가 스누프 제어 유닛(75)을 통해 수신지 처리 회로(350)로 복귀되는 결과가 야기된다. 이러한 프로세스는 아키텍처 상태의 모든 항목이 소스 처리 회로의 캐시의 스누핑을 통해 검색 완료될 때까지 되풀이하여 반복될 수 있다. 수신지 처리 회로(350)에 관련된 임의의 프로세서 특정 설정 정보는 통상 전술한 바와 같이 변경이 어렵게 수신지 처리 회로(350)에 기록된다. 따라서, 복원 동작이 일단 완료되면, 수신지 처리 회로는 자체가 작업 부하의 취급을 성공적으로 인계받도록 하는데 필요한 모든 정보를 가진다.
또한, 일 실시예에서, 작업 부하(100)가 "고성능" 처리 회로(10) 또는 "저성능" 처리 회로(50)에 의해 수행되는지 여부에 무관하게, 가상화기(120)는 동일한 값의 가상 설정 정보를 갖는 운영 시스템(115)을 제공하며, 그에 따라 "고성능" 및 "저성능" 처리 회로(10, 50) 간의 하드웨어 차이는 가상화기(120)에 의해 운영 시스템(115)으로부터 마스킹된다. 이것은 운영 시스템(115)이 작업 부하의 성능이 상이한 하드웨어 플랫폼으로 이전되었음을 알지 못함을 의미한다.
도 4a 및 도 4b를 참조로 언급된 세이브 및 복원 동작에 따르면, 아키텍처 상태를 소스 프로세서로부터 수신지 프로세서로 이전하는데 포함되는 시간, 에너지 및 하드웨어 복잡도의 정도를 감소시키기 위해 다양한 경우의 프로세서(10, 50)가 서로 하드웨어 캐시가 조화되도록 구성된다. 해당 기술은 소스 프로세서로부터 수신지 프로세서로 이전되어야 하지만 이전 동작 발생시 공유 메모리로부터 유효하지 않은 모든 상태를 저장하기 위해 소스 프로세서의 로컬 캐시를 사용한다. 상태는 소스 프로세서의 캐시 내에서 공유 가능한 것으로 마킹되므로, 이것은 하드웨어 캐시 조화된 수신지 프로세서가 이전 동작 중 해당 상태를 탐색할 수 있게 한다. 이러한 기술의 사용으로, 해당 상태를 메인 메모리에 또는 로컬 메모리 매핑된 저장 요소에 세이브할 필요 없이 프로세서 사이에서 해당 상태를 이전하는 것이 가능하다. 따라서, 이것은 상당한 성능 및 에너지 소비의 잇점을 가져와서, 에너지 소비의 잇점을 구현하고자 작업 부하를 스위칭하는 것이 적절할 수 있는 상황을 다변화한다.
그러나, 전술한 바와 같이 캐시 코힌런시를 이용하는 기술은 현재 아키텍처 상태를 공유 메모리를 통해 보내지 않고 현재 아키텍처 상태를 수신지 프로세서에 유효하게 하는 하나의 가속 메커니즘을 제공하지만, 이러한 가속 메커니즘이 구현될 수 있는 유일한 방법이 아니다. 예를 들면, 도 5는 핸드오버 동작 중 아키텍처 상태가 이전될 수 있도록 하기 위해 소스 처리 회로(300)와 수신지 처리 회로(350) 사이에 전용 버스(380)가 제공되는 대안적인 메커니즘을 예시한다. 따라서, 이러한 실시예에서, 도 3의 세이브 및 복원 동작(225, 230)은 전용 버스(380)를 사용하는 대안적인 이전 메커니즘으로 대체된다. 이러한 접근은 통상 캐시 코히런시 접근(통상 데이터 처리 시스템 내에 이미 설치된 하드웨어를 사용함)을 채용한 경우보다 하드웨어 비용이 고가이지만, 스위칭을 수행하는 매우 빠른 방법을 제공할 것이고, 이는 소정의 구현 형태에 유리할 수 있다.
도 6a-6i는 작업 부하를 소스 처리 회로(300)로부터 수신지 처리 회로(350)로 이전하기 위해 수행되는 일련의 단계를 개략적으로 나타내다. 소스 처리 회로(300)는 이전 수행에 전에 작업 부하를 수행하는 어느 쪽의 처리 회로(10, 20)이고, 수신지 처리 회로는 처리 회로(10, 50) 중 다른 하나이다.
도 6a는 소스 처리 회로(300)가 파워 제어기(65)에 의해 급전되어 처리 작업 부하(100)를 수행하는 중이며 수신지 처리 회로(350)는 파워 세이빙 상태에 있는 초기 상태의 시스템을 보여준다. 해당 실시예에서, 파워 세이빙 상태는 파워 오프 상태이지만, 전술한 바와 같이 다른 종류의 파워 세이빙 상태도 사용될 수 있다. 어플리케이션(105, 110)과 해당 어플리케이션(105, 110)을 구동시키기 위한 운영 시스템(115)을 포함하는 작업 부하(100)는 가상화기(120)에 의해 소스 처리 회로(300)의 하드웨어 플랫폼으로부터 추출된다. 작업 부하의 수행 중, 소스 처리 회로(300)는 예컨대, 도 4a에 보여지는 바와 같이 레지스터 파일(310)과 특수 목적 레지스터(320)의 콘텐츠를 포함할 수 있는 아키텍처 상태(400)를 유지한다.
도 6b에서, 가상화기(120)에 의해 이전 자극(430)이 감지된다. 이전 자극(430)은 도 6b에 외부 이벤트(예, 열 센서(90)에 의한 열 방출의 감지)로 나타내고 있지만, 이전 자극(430)은 가상화기(120) 자체에 의해 또는 운영 시스템(115)(특별한 종류의 어플리케이션이 처리되어야 할 때 가상화기(120)에 알려주도록 구성됨)에 의해 기동되는 이벤트일 수도 있다. 가상화기(120)는 수신지 처리 회로(350)를 파워 공급 상태로 만들기 위해 수신지 처리 회로(350)에 파워를 공급하도록 파워 제어기(65)를 제어하는 것에 의해 이전 자극(430)에 응답한다.
도 6c에서, 수신지 처리 회로(350)는 가상화기(120)의 실행을 시작한다. 가상화기(120)는 수신지 처리 회로(350)를 제어하여 자체의 캐시(420)를 무효화함으로써, 수신지 처리 회로(350)의 파워 업 시 캐시(420) 내에 존재할 수 있는 잘못된 데이터 값에 의해 야기되는 처리 에러를 방지한다. 수신지 캐시(420)가 무효화되는 동안, 소스 처리 회로(300)는 작업 부하(100)의 수행을 계속한다. 수신지 캐시(420)의 무효화가 완료되면, 가상화기(120)는 수신지 처리 회로(350)를 제어하여 작업 부하(100)의 핸드오버가 준비되었다는 신호를 소스 처리 회로(300)에 제공한다. 수신지 처리 회로(350)가 핸드오버 동작을 준비할 때까지 소스 처리 회로(300) 상에서 작업 부하(100)의 처리를 계속하는 것에 의해, 핸드오버의 성능 영향은 감소될 수 있다.
도 6d에 도시된 다음 단계에서, 소스 처리 회로(300)는 작업 부하(100)의 수행을 중지한다. 이 단계에서는 소스 처리 회로(300)도 수신지 처리 회로(350)도 작업 부하(100)를 수행하지 않는다. 아키텍처 상태(400)의 카피는 소스 처리 회로(300)로부터 수신지 처리 회로(350)로 이전된다. 예를 들면, 아키텍처 상태(400)는 도 4a 및 도 4b에 도시된 바와 같이 소스 캐시(410)에 저장되고 수신지 처리 회로(350)에 복원되거나, 도 5에 도시된 바와 같이 전용 버스를 통해 이전될 수 있다. 아키텍처 상태(400)는 공유 메모리(80)에 이미 존재하는 정보가 아닌, 작업 부하(100)의 수행을 위해 수신지 처리 회로(350)에 필요한 모든 상태 정보를 포함한다.
아키텍처 상태(400)를 수신지 처리 회로(350)로 이전 완료하면, 소스 처리 회로(300)는 소스 캐시(410)가 파워 활성화된 상태로 유지되는 것을 제외하고, 파워 제어 회로(65)(도 6e 참조)에 의해 파워 세이빙 상태로 된다. 한편, 수신지 처리 회로(350)는 이전된 아키텍처 상태(400)를 사용하여 작업 부하(100)를 수행하기 시작한다.
수신지 처리 회로(350)가 작업 부하의 처리를 시작하면, 스누핑 기간이 시작된다(도 6f 참조). 스누핑 기간 중에, 스누프 제어 유닛(75)은 소스 캐시(410)에 저장된 데이터를 탐색하고 수신지 처리 회로(350)를 대신하여 데이터를 검색할 수 있다. 수신지 처리 회로(350)가 수신지 캐시(420)에 존재하지 않는 데이터를 요청하면, 수신지 처리 회로(350)는 스누프 제어 유닛(75)으로부터 데이터를 요청한다. 스누프 제어 유닛(75)은 이후 소스 캐시(410)를 탐색하고 탐색 결과 캐시 히트가 있으면, 스누피 제어 유닛(75)이 소스 캐시(420)로부터 탐색 데이터를 검색한 후 해당 데이터를 수신지 캐시(420)로 복귀시키는데, 이 경우 탐색 데이터는 수신지 캐시(420)에 저장될 수 있다. 다른 한편, 탐색 결과 소스 캐시(410)에 캐시 미스가 있으면, 요청된 데이터는 공유 메모리(80)로부터 페칭된 후 수신지 처리 회로(350)로 복귀(리턴)된다. 소스 캐시(410) 내의 데이터로의 액세스는 그 속도가 빨라서 공유 메모리(80)에 대한 액세스에 비해 에너지가 덜 필요하므로, 소정 기간 동안의 소스 캐시(410)의 탐색(스누핑)은 수신지 처리 회로(350)로의 작업 부하(100)의 핸드오버 이후의 초기 기간 동안 처리 성능을 향상시키고 에너지 소비를 줄인다.
도 6g에 도시된 단계에서, 스누프 제어 유닛(75)은 소스 캐시(410)를 파워 공급된 상태로 유지하기에는 더 이상 충분치 않음을 지시하는 스누핑 중지 이벤트를 감지한다. 스누핑 중지 이벤트는 스누핑 기간의 종료를 유도한다. 스누핑 중지 이벤트는 스누프 제어 회로(75)에 의해 관측되는 스누핑 중지 이벤트 세트 중 임의의 이벤트일 수 있다. 예를 들면, 스누핑 중지 이벤트 세트는 다음의 이벤트 중 임의의 하나 이상의 이벤트를 포함할 수 있다:
a) 소스 캐시(410) 내의 캐시 히트를 가져오는 스누프 히트의 비율 또는 분율(즉, 전체 스누프 중 스누핑 히트/횟수의 수에 비례하는 양)이 수신지 처리 회로(350)가 작업 부하(100)의 수행을 시작한 후 미리 정해진 임계 레벨 미만으로 떨어지는 경우;
b) 수신지 처리 회로(350)가 작업 부하(100)를 수행하기 시작한 이후에 수행되는 트랜잭션(transactions)의 수 또는 미리 정해진 종류의 트랜잭션(캐시 wjkd r가능한 트랜잭션)의 수가 미리 정해진 임계치를 초과하는 경우;
c) 수신지 처리 회로(350)가 작업 부하(100)의 수행을 시작한 이후 경과된 처리 사이클의 수가 미리 정해진 임계치를 초과하는 경우;
d) 공유 메모리(80)의 특정 영역이 수신지 처리 회로(350)가 작업 부하(100)의 수행을 시작한 이후 제1 기간 동안에 액세스되는 경우;
e) 수신지 처리 회로(350)가 작업 부하(100)의 수행을 시작한 후 초기 기간 동안 액세스된 공유 메모리(80)의 특정 영역이 미리 정해진 수의 사이클 또는 미리 정해진 시간 구간 동안 액세스되지 않는 경우;
f) 이전된 작업 부하(100)의 수행을 시작한 후 제1 기간 동안 수신지 처리 회로(350)가 미리 정해진 메모리 위치에 기록되는 경우.
이들 스누핑 중지 이벤트는 프로그래밍 가능한 카운터를 사용하여 스누프 제어 유닛(75)을 포함하는 코히런트 배선(70)에 감지될 수 있다. 다른 종류의 스누핑 중지 이벤트는 스누핑 중지 이벤트의 세트에도 포함될 수 있다.
스누핑 중지 이벤트의 감지시, 스누프 제어 유닛(75)은 소스 프로세서(300)에 스누핑 중지 신호(440)를 전송한다. 스누프 제어 유닛(75)은 소스 캐시(410)의 탐색을 중지하고, 그때부터 공유 메모리(80)로부터 요청 데이터를 페칭하고 해당 페칭된 데이터를 캐시 저장할 수 있는 수신지 처리 회로(350)로 리턴닝하는 것에 의해 수신지 처리 회로(350)로부터의 액세스 요청에 응답한다.
도 6h에서, 소스 캐시의 제어 회로는 임의의 유효한 불량 데이터 값(해당 캐시 저장된 값은 대응하는 공유 메모리(80) 내의 값보다 더 새로운 값이다)을 공유 메머리(80)에 저장하기 위해 캐시(410)를 비우도록 스누핑 중지 신호(440)에 응답한다.
도 6i에서, 소스 캐시(410)는 소스 처리 회로(300)가 완전히 파워 세이빙 상태에 있도록 파워 제어기(65)에 의해 파워 다운된다. 수신지 처리 회로(350)는 작업 부하(100)의 수행을 계속한다. 운영 시스템(115)의 관점에서, 상황은 이제 도 6a에서와 같다. 운영 시스템(115)은 작업 부하가 하나의 처리 회로로부터 다른 처리 회로로 이전되었음을 알지 못한다. 다른 이전 자극이 발생하면, 도 6a-6i와 동일한 단계를 이용하여 작업 부하의 수행을 다시 제1 프로세서(이 경우 처리 회로(10, 50) 중 "소스 처리 회로"와 "수신지 처리 회로"가 어떤 것인지는 반대로 된다)로 스위칭할 수 있다.
도 6a-6i의 실시예에서, 캐시(410)와 소스 처리 회로(300)에 대한 독립적인 파워 제어는 수신지 처리 회로(350)가 일단 작업 부하의 수행을 시작한 후(도 6e 참조) 소스 캐시(410)가 아닌 소스 처리 회로(300)가 파워 다운될 수 있고, 소스 처리 회로(300)의 캐시(410)만이 파워 공급된 상태에 있도록(도 6f-6h 참조) 활성화 될 수 있다. 도 6i에서 소스 캐시(410)는 이후 파워 다운된다. 이러한 접근은 특히 소스 처리 회로(300)가 "고성능" 처리 회로(10)인 경우에 에너지 절감에 유용하다.
그러나, 스누핑 기간 중에 전제 소스 처리 회로(300)에 파워 공급을 계속하고, 스누핑 기간이 종료되고 소스 캐시(410)가 비워진 후에 소스 처리 회로(300)를 전체적으로 파워 세이빙 상태로 하는 것도 가능하다. 이것은 소스 캐시(410)가 소스 프로세서 코어에 너무 깊이 임베딩되어 소스 프로세서 코어와는 별개로 파워 공급될 수 없는 경우에 더 유용할 수 있다. 이러한 접근은 소스 프로세서가 "고성능" 처리 회로(10)에 비해 파워 소비가 미미한 "저성능" 처리 회로(50)일 때 더 실제적일 수 있는데, 이는 일단 "고성능" 처리 회로(10)가 이전된 작업 부하의 처리를 시작하면, 스누핑 기간 중에 캐시(60)가 아닌 "저성능" 처리 회로(50)가 파워 세이빙 상태로 스위칭되는 경우, 시스템의 전체 파워 소비에 거의 영향을 미치지 않을 수 있기 때문이다. 이것은 "저성능" 처리 회로(50)와 "저성능" 코어의 캐시(60)에 대해 개별 제어를 제공하는 추가의 하드웨어 복잡성이 정당화될 수 없음을 의미할 수 있다.
소정의 경우, 작업 부하가 이전되기 전에 소스 캐시(410)에 저장된 데이터는 작업 부하(100)의 수행을 시작할 때 수신지 처리 회로(350)가 해당 데이터를 필요로 하지 않을 것임을 알 수 있다. 예를 들면, 소스 처리 회로(300)는 이전이 발생시 어플리케이션을 완료할 수 있으며, 그에 따라 이전시의 소스 캐시(410) 내의 데이터는 이전 이후 수신지 처리 회로(350)에 의해 수행될 어플리케이션이 아니라 상기 완료된 어플리케이션에 관한 것이다. 이러한 경우, 스누프 오버라이드 제어기가 가상화기(120)와 스누프 제어 회로(300)를 작동시켜 소스 캐시(410)의 탐색을 중지시키고 소스 처리 회로(300)를 제어하여 스누핑 기간의 종료를 알리는 스누핑 중단 이벤트를 기다리지 않고 소스 캐시(410)를 비우고 파워 다운시킬 수 있다. 이 경우, 도 6a-6i의 기술은 데이터가 소스 캐시(410)로부터 탐색되는 도 6f의 단계 없이, 도 6e의 단계로부터 바로 도 6g의 단계로 점프할 수 있다. 따라서, 소스 캐시(410) 내의 데이터가 수신지 처리 회로(350)에 유용하지 않음을 미리 안다면, 스누핑 중지 이벤트를 기다리지 않고 소스 캐시(410)와 소스 처리 회로(350)를 파워 세이빙 상태로 만드는 것에 의해 파워가 절감될 수 있다. 스누프 오버라이드 제어기는 가상화기(120)의 일부일 수 있거나, 소스 처리 회로(300) 상에서 실행되는 펌웨어로 구현될 수 있다. 스누프 오버라이드 제어기는 여러 요소의 조합으로도 구현될 수 있는데, 예컨대, 운영 시스템(115)은 어플리케이션이 종료시 가상화기(120)에 이를 알릴 수 있고, 가상화기(120)는 이후 어플리케이션의 종료시 이전이 발생하는 경우 소스 캐시(410)의 스누핑을 중지시킬 수 있다.
도 7은 성능에 따른 에너지 소비를 나타내는 라인(600)의 그래프이다. 이 그래프의 여러 부분에 대해, 데이터 처리 시스템은 성능과 에너지 소비 간의 적절한 균형을 얻고자 하는 시도로서 도 1에 도시된 프로세서 코어(15, 20)의 상이한 조합을 활용하도록 배열될 수 있다. 따라서, 예로써, 다수의 초고성능의 작업의 실행이 필요한 경우, 원하는 성능을 얻기 위해 처리 회로(10)의 고성능 코어(15, 20) 모두를 구동시키는 것이 가능하다. 선택적으로, 이들 2개의 코어를 활용하는 경우, 성능 및 에너지 소비에 소정의 변화가 생기도록 공급 전압 변동 기술이 이용될 수 있다.
고성능 코어 중 하나만을 사용하여 필요한 성능이 얻어질 수 있는 레벨로 성능 요건이 떨어지면, 작업은 고성능 코어(15, 20) 중 하나의 코어 측으로만 이행될 수 있고, 나머지 코어는 파워 다운되거나 소정의 다른 파워 세이빙 상태로 놓여진다. 다시 공급 전압 변동을 활용하여, 이러한 하나의 고성능 코어의 사용시 성능과 에너지 소비 간에 소정의 변동을 야기할 수 있다. 2개의 고성능 코어로부터 하나의 고성능 코어로의 전환은 이전 자극의 발생도 작업 부하의 이전을 위한 전술한 기술의 이용도 필요치 않을 것임에 유의하여야 하는데, 이는 모든 경우, 사용되는 것은 처리 회로(10)이고 다른 처리 회로(50)는 파워 세이빙 상태에 있을 것이기 때문이다. 그러나, 도 7에서 점선(610)으로 나타낸 바와 같이, 저성능 코어에 의해 필요한 성능을 달성할 수 있는 수준으로 성능이 떨어지면, 이전 자극이 발생되어, 전체 작업 부하가 저성능 코어(55) 상에서 수행되고 처리 회로(10)는 파워 세이빙 상태로 놓여지도록 전체 작업 부하를 처리 회로(10)로부터 다른 처리 회로(50)로 이전하기 위한 전술한 메커니즘을 작동시킬 수 있다. 다시, 공급 전압 변동을 활용하여, 저성능 코어(55)의 성능과 에너지 소비 간에 소정의 변동을 야기할 수 있다.
도 8a 및 도 8b는 일 실시예에 따라 저성능 프로세서 파이프라인(800)과 고성능 프로세서 파이프라인(850) 간의 마이크로 아키텍처를 각각 나타낸다. 도 8a의 저성능 프로세서 파이프라인(800)은 도 1의 저성능 처리 코어(55)에 적절한 반면, 도 8b의 고성능 프로세서 파이프라인(850)은 고성능 코어(15, 20)에 적절할 수 있다.
도 8a의 저성능 프로세서 파이프라인(800)은 메모리(80)로부터 명령을 페칭하는 페치 스테이지(810)와, 페칭된 명령을 디코딩하는 디코드 스테이지(830)와, 실행 명령을 내는 이슈 스테이지(830)와, 그리고 정수 연산을 수행하는 정수 파이프라인(840), 곱셈 누적 연산을 수행하는 MAC 파이프라인(842), SIMD(단일 명령, 다중 데이터) 연산 또는 프로팅 포인트(floating point) 연산을 수행하는 SIMD/FPU 파이프라인(844)을 포함하는 다중 실행 파이프라인을 포함한다. 저성능 프로세서 파이프라인(800)에서, 이슈 스테이지(830)는 한 번에 하나의 명령을 발행하고 해당 명령이 페칭되는 순으로 명령을 발행한다.
도 8b의 고성능 프로세서 파이프라인(850)은 메모리(80)로부터 명령을 페칭하는 페치 스테이지(860)와, 페칭된 명령을 디코딩하는 디코드 스테이지(870)와, 디코딩된 명령에 특정된 레지스터를 네임 변경하는 네임 변경 스테이지(875)와, 실행 명령을 디스패치하는 디스패치 스테이지(880)와, 그리고 2개의 정수 파이프라인(890, 892), MAC 파이프라인(894), 2개의 SIMD/FPU 파이프라인(896, 898)을 포함하는 다중 실행 파이프라인을 포함한다. 고성능 프로세서 파이프라인(850)에서, 디스패치 스테이지(880)는 파이프라인(890, 892, 894, 896, 898) 중 다른 파이프라인에 한 번에 여러 개의 명령을 발행할 수 있는 병렬 이슈 스테이지이다. 디스패치 스테이지(880)는 비정렬로 명령을 발행할 수 있다. 저성능 프로세서 파이프라인(800)에서와 달리, SIMD/FPU 파이프라인(896, 898)은 가변 길이인데, 이는 SIMD/FPU 파이프라인(896, 898)을 통해 진행되는 연산이 소정 스테이지를 스킵하도록 제어될 수 있음을 의미한다. 이러한 접근의 장점은 다중 실행 파이프라인 각각이 다른 리소스를 가지는 경우, 인위적으로 최단 파이프라인을 최장 파이프라인과 동일한 길이로 늘릴 필요가 없고, 대신에 다른 파이프라인에 의해 얻어지는 결과의 비정렬 특성의 처리에 로직이 필요하다는 것이다(예, 절차 제외가 생기면 모든 것을 다시 순차로 배치).
네임 변경 스테이지(875)는 프로그램 명령에 포함되고 프로그래머의 모델의 관점에서 볼 때 특정 아키텍처 레지스터를 식별하는 레지스터 지정자(specifier)를 하드웨어 플랫폼의 실제 레지스터인 물리적 레지스터에 매핑하도록 제공된다. 네임 변경 스테이지(875)는 마이크로프로세서의 프로그래머의 모델의 관점 내에 존재하는 것보다 큰 풀(pool)의 물리적 레지스터가 마이크로프로세서에 의해 제공될 수 있게 한다. 큰 풀의 물리적 레지스터는 비정렬 실행 중에 유용한데, 이는 그러한 큰 풀이 2개 이상의 상이한 명령으로 특정된 동일한 아키텍처의 레지스터를 2개 이상의 물리적 레지스터에 매핑함으로써 해당 상이한 명령이 동시에 실행될 수 잇도록 하는 것에 의해 기록-후-기록(WAW) 위험과 같은 위험이 회피되도록 할 수 있기 때문이다. 레지스터 네임 변경 기술의 더 구체적인 내용은 공유 미국 특허 출원 US2008/114966 및 미국 특허 7,590,826을 참조할 수 있다.
저성능 파이프라인(800)과 고성능 파이프라인(850)은 여러 가지 방식으로 마이크로 아키텍처가 상이하다. 마이크로 아키텍처의 차이는 다음의 것을 포함할 수 있다:
a) 다른 스테이지를 갖는 파이프라인. 예컨대, 고성능 파이프라인(800)은 저성능 파이프라인(800)에 없는 네임 변경 스테이지(875)를 가진다.
b) 다른 능력의 파이프라인. 예컨대, 저성능 파이프라인(800)의 이슈 스테이지(830)는 오직 하나의 명령 발행만이 가능한 반면, 고성능 파이프라인(850)의 디스패치 스테이지(880)는 병렬의 명령 발행이 가능하다. 병렬 발행은 파이프라인의 처리 효율을 향상시켜서 성능을 향상시킨다.
c) 다른 길이의 파이프라인. 예컨대, 고성능 파이프라인(850)의 디코드 스테이지(870)는 3개의 서브 스테이지를 포함할 수 있는 반면, 저성능 파이프라인(800)의 디코드 스테이지(820)는 오직 하나의 서브 스테이지만을 포함할 수 있다. 파이프라인 스테이지가 길수록(서브 스테이지의 수가 많을수록), 동시에 보내질 수 있는 명령의 수가 많아져서, 파이프라인이 동작할 수 있는 동작 주파수도 커져서 높은 수준의 성능이 얻어진다.
d) 다른 수의 실행 파이프라인(예, 고성능 파이프라인(850)은 저성능 파이프라인(800)보다 실행 파이프라인이 많다). 보다 많은 파이프라인의 제공을 통해, 보다 많은 명령이 병렬 처리될 수 있어서 성능이 향상된다.
e) 정렬 실행(파이프라인(800)의 경우) 또는 비정렬 실행(파이프라인(850)의 경우)의 제공. 명령이 비정렬(비순차)로 실행될 수 있을 때 성능이 개선되는데, 이는 명령의 실행이 동적으로 예정되어 성능을 최적화할 수 있기 때문이다. 예컨대, 저성능의 정렬(순차) 파이프라인(800)의 경우, 일련의 MAC 명령이 MAC 파이프라인(842)에 의해 하나씩 실행된 후 나중의 명령이 정수 파이프라인(840)과 SIMD/FPU 파이프라인(844) 중 하나에 의해 실행되는 것이 필요할 수 있다. 이에 대해, 고성능 파이프라인(850)의 경우, MAC 명령은 MAC 파이프라인(894)에 의해 실행될 수 있는 반면, (네임 변경에 의해 해결될 수 없는 임의의 데이터 위험의 경우) 다른 실행 파이프라인(890, 892, 896, 898)을 사용한 나중의 명령이 MAC 명령과 병렬로 실행될 수 있다. 이것은 비정렬 실행이 처리 성능을 향상시킬 수 있음을 의미한다.
이들 및 다른 예의 마이크로 아키텍처 차이는 파이프라인(850)이 파이프라인(800)보다 고성능의 처리를 제공하는 결과를 가져온다. 다른 한편, 마이크로 아키텍처 차이는 또한 파이프라인(850)이 파이프라인(800)보다 많은 에너지를 소비하게 한다. 따라서, 마이크로 아키텍처가 다른 파이프라인(800, 850)을 제공하는 것은 작업 부하의 처리를 고성능(고성능 파이프라인(850)을 갖는 "고성능" 처리 회로(10)를 사용하는 것에 의한) 또는 에너지 효율(저성능 파이프라인(800)을 갖는 "저성능" 처리 회로(50)를 사용하는 것에 의한)에 대해 최적화되도록 할 수 있다.
도 9는 작업 부하(100)의 수행이 고성능 처리 회로(10)와 저성능 처리 회로(50) 사이에서 스위칭될 때 데이터 처리 시스템의 파워 소비 변동을 나타내는 그래프이다.
도 9의 A 지점에서, 작업 부하(100)는 저성능 처리 회로(50) 상에서 수행되므로 파워 소비가 낮다. B 지점에서, 이전 자극이 생겨서 고강도 처리가 수행되어야 함을 지시하므로 작업 부하의 성능은 고성능 처리 회로(10)로 핸드오버된다. 그러면, 고성능 처리 회로(10)가 작업 부하를 수행하는 동안 파워 소비가 상승하여 C 지점에 높이 유지된다. D 지점에서, 양자의 고성능 코어가 함께 동작하여 작업 부하를 처리하는 것으로 여겨진다. 그러나, 작업 부하가 고성능 코어 중 단 하나에 의해 처리될 수 있는 수준으로 성능 요건이 떨어지면, 작업 부하는 고성능 코어 중 하나로만 이행되고, E 지점에 인접한 레벨로 파워가 강하되는 것으로 지시된 바와 같이 나머지는 파워 다운된다. 그러나, E 지점에서, 다른 이전 자극이 생겨서(낮은 강도의 처리로 복귀하는 것이 요망됨을 지시) 작업 부하의 수행이 다시 저성능 처리 회로(50)로 이전되도록 유도된다.
저성능 처리 회로(50)가 작업 부하의 처리를 시작하면, 고성능 처리 회로의 대부분은 파워 세이빙 상태에 있지만, 고성능 처리 회로(10)의 캐시는 해당 캐시 내의 데이터가 저성능 처리 회로(50)에 대해 검색될 수 있도록 스누핑 기간 동안 파워 공급 상태를 유지한다. 따라서, 고성능 처리 회로(10)의 캐시는 F 지점에서의 파워 소비가 저성능 처리 회로(50)만이 파워 공급된 경우의 A 지점에서의 파워 소비보다 크도록 할 수 있다. 스누핑 기간의 말단에서, 고성능 처리 회로(10)의 캐시는 파워 다운되고, G 지점에서 파워 소비는 저성능 처리 회로(50)만이 활성인 경우 낮은 레벨로 복귀된다.
전술한 바와 같이, 도 9에서 파워 소비는 고성능 처리 회로(10)가 스누핑 기간 중에 파워 공급되는데 기인하여 G 지점에서보다 F 지점에서 스누핑 기간 중에 더 크다. 파워 소비의 증가는 고성능에서 저성능으로의 전환을 통해서만 나타나고 있지만, 저성능에서 고성능으로의 전환을 통해서도 스누핑 기간이 존재하고 해당 기간 중에 저성능 처리 회로(50)의 캐시 내의 데이터가 스누프 제어 유닛(75)에 의해 고성능 처리 회로(10) 대신에 탐색될 수 있다. 저성능-고성능 전환의 경우의 스누핑 기간은 도 9에 지시되고 있지 않은데, 이는 스누핑 기간 중에 저성능 처리 회로(50)의 캐시를 파워 공급 상태로 남기는 것에 의해 소비되는 파워가 작업 부하의 처리를 수행시 고성능 처리 회로(10)에 의해 소비되는 파워에 비해 미미하므로 저성능 처리 회로(50)의 캐시가 파워 공급되는데 기인한 파워 소비의 극소 증가는 도 9의 그래프에서 볼 수 없기 때문이다.
전술한 실시예는 마이크로 아키텍처가 에너지 효율 또는 성능을 위해 최적화된 2개 이상의 아키텍처 호환 가능한 프로세서의 사례를 포함하는 시스템을 기술한다. 운영 시스템과 어플리케이션에 의해 필요한 아키텍처 상태는 전체 작업 부하가 프로세서 사례간에 스위칭될 수 있도록 요구되는 성능/ 에너지 레벨에 따라 프로세서의 사례 간에 스위칭될 수 있다. 일 실시예에서, 프로세서 사례 중 하나만이 임의의 주어진 시간에 작업 부하를 구동시키며, 다른 프로세서의 경우 파워 세이빙 상태에 있거나 파워 세이빙 상태로 진입 중이거나 파워 세이빙 상태를 벗어나는 중에 있다.
일 실시예에서, 프로세서의 사례는 아키텍처 상태를 소스 프로세서로부터 수신지 프로세서로 스위칭하는데 포함되는 시간, 에너지 및 하드웨어 복잡성의 정도를 감소시키기 위해 서로 하드웨어 캐시 조화되도록 배열될 수 있다. 이것은 스위칭 동작 수행 시간을 감소시키고, 이는 실시예의 기술이 사용될 수 있는 기회를 증가시킨다.
이러한 시스템은 에너지 효율이 배터리 수명 및/또는 열 관리를 위해 중요한 경우의 다양한 상황에 사용될 수 있으며, 성능의 범위는 저성능 처리 작업 부하에 보다 에너지 효율적인 프로세서가 사용되는 반면, 고성능 처리 작업 부하에 고성능 프로세서가 사용될 수 있도록 정해진다.
2개 이상의 처리 사례는 아키텍처 호환 가능하므로, 어플리케이션의 관점으로부터 2개의 프로세서 간의 유일한 차이는 유효 성능이다. 일 실시예의 기술을 통해, 모든 필요한 아키텍처 상태는 어떤 프로세서 상에서 운영 시스템과 어플리케이션이 구동되는지에 대해 운영 시스템과 해당 운영 시스템 상에서 구동되는 어플리케이션에 투명하도록 운영 시스템을 포함하는 것을 요구하지 않고 프로세서 사이에서 이동될 수 있다.
전술한 실시예에 설명된 바와 같이 아키텍처 호환 가능한 프로세서의 사례를 이용할 때, 이전되는 것이 필요한 아키텍처 상태의 총량은 데이터 캐시 내에 용이하게 맞출 수 있으며, 현대의 처리 시스템은 캐시 코히런스를 구현하고 있으므로, 데이터 캐시 내로 스위칭될 아키텍처 상태를 저장하는 것에 의해, 수신지 프로세서는 해당 상태를 기존의 회로 구조를 사용하는 에너지 효율적인 방식으로 신속하게 탐색할 수 있다.
전술한 하나의 실시예에서, 데이터 처리 시스템에 대한 온도 한계가 위배되지 않도록 하는 것을 보장하기 위해 스위칭 메커니즘이 사용된다. 특히, 온도 한계가 위배되려 할 때, 전체 작업 부하는 보다 에너지 효율적인 프로세서의 사례로 스위칭될 수 있어서, 전체 시스템이 냉각되도록 하면서도 비록 낮은 처리 효율이지만 프로그램 실행이 계속적으로 이루어지도록 한다.
여기에 특정 실시예들을 설명하였지만, 본 발명은 이에 한정되지 않으며, 발명의 범위 내에서 많은 변형 및 추가가 이루어질 수 있음을 알 것이다. 예를 들면, 본 발명의 범위를 벗어나지 않고 이어지는 종속 청구항의 특징을 독립 청구항의 특징과 다양하게 결합할 수 있다.

Claims (20)

  1. 데이터 처리 장치로서:
    데이터 처리 동작을 수행하는 제1 처리 회로와;
    데이터 처리 동작을 수행하는 제2 처리 회로와;
    이전 자극에 응답하여, 데이터 처리 장치에 의해 수행될 작업 부하의 성능을 소스 처리 회로로부터 수신지 처리 회로로 이전하는 핸드오버 동작을 수행하는 스위치 제어기를 포함하고;
    상기 제1 처리 회로는 상기 작업 부하가 상기 제1 처리 회로 또는 제2 처리 회로 상에서 수행 가능하도록 상기 제2 처리 회로와 아키텍처가 호환 가능하고, 상기 작업 부하는 적어도 하나의 어플리케이션과 해당 적어도 하나의 어플리케이션을 구동시키는 적어도 하나의 운영 시스템을 포함하고,
    상기 제1 처리 회로는 해당 제1 처리 회로의 성능이 상기 제2 처리 회로의 성능과 상이하도록 상기 제2 처리 회로와 마이크로 아키텍처가 상이하며,
    상기 제1 및 제2 처리 회로는 상기 작업 부하가 임의의 시점에서 상기 제1 및 제2 처리 회로 중 하나에 의해 수행되도록 구성되며;
    상기 소스 처리 회로는 상기 제1 및 제2 처리 회로 중 하나이고, 상기 수신지 처리 회로는 상기 제1 및 제2 처리 회로 중 다른 하나이고;
    상기 스위치 제어기는: 상기 핸드오버 동작 중,
    (i) 상기 소스 처리 회로가 자체의 현재 아키텍처 상태를 상기 수신지 처리 회로에 유효하게 구성하도록 유도하고;
    (ii) 상기 작업 부하의 이전이 상기 적어도 하나의 운영 시스템에 투명하도록 미리 정해진 프로세서 특정 설정 정보를 상기 적어도 하나의 운영 시스템으로부터 마스킹하도록 구성되며;
    상기 현재 아키텍처 상태는 상기 핸드오버 동작이 개시되는 시점에 상기 제1 및 제2 처리 회로 사이에 공유된 공유 메모리로부터 유효하지 않고, 상기 작업 부하의 성능을 상기 소스 처리 회로로부터 성공적으로 인계받기 위해 상기 수신지 처리 회로에 필요한 상태인 것을 특징으로 하는 데이터 처리 장치.
  2. 제1항에 있어서,
    상기 제1 및 제2 처리 회로에 제공되는 파워를 개별 제어하는 파워 제어 회로를 더 포함하고,
    이전 자극의 발생 이전에, 상기 수신지 처리 회로는 파워 세이빙 상태에 있고, 상기 핸드오버 동작 중, 상기 파워 제어 회로는 상기 수신지 처리 회로에 작용하여 해당 수신지 처리 회로가 상기 작업 부하의 성능을 인계받기 이전에 상기 파워 세이빙 상태를 벗어나도록 하는 데이터 처리 장치.
  3. 제2항에 있어서,
    상기 핸드오버 동작 이후에, 상기 파워 제어 회로는 상기 소스 처리 회로가 파워 세이빙 상태로 들어가도록 유도하는 데이터 처리 장치.
  4. 제1항 내지 제3항 중 어느 항에 있어서,
    상기 이전 동작 중에, 상기 스위치 제어기는 상기 현재 아키텍처 상태를 획득하기 위해 상기 수신지 처리 회로에 의한 공유 메모리의 문의없이 상기 소스 처리 회로가 자체의 현재 아키텍처 상태를 상기 공유 메모리에 유효하게 하는 가속 메커니즘을 채용하도록 유도하는 데이터 처리 장치.
  5. 제4항에 있어서,
    적어도 상기 소스 회로는 연관 캐시를 가지며;
    상기 데이터 처리 장치는 스누프 제어 회로를 더 포함하며;
    상기 가속 메커니즘은 상기 소스 회로의 관련 캐시와 상기 스누프 제어 회로의 사용을 통해 현재 아키텍처 상태를 상기 수신지 처리 회로로 이전하는 것을 포함하는 데이터 처리 장치.
  6. 제5항에 있어서,
    상기 가속 메커니즘은 세이브 및 복원 메커니즘이고, 상기 세이브 및 복원 메커니즘은 상기 소스 처리 회로가 자체의 현재 아키텍처 상태를 관련 캐시에 저장하도록 하고 상기 수신지 처리 회로가 복원 동작을 수행하도록 하고, 상기 복원 동작을 통해 상기 스누프 제어 회로는 상기 소스 처리 회로의 관련 캐시로부터 현재 아키텍처 상태를 검색한 후 해당 검색된 아키텍처 상태를 상기 수신지 처리 회로에 제공하는 데이터 처리 장치.
  7. 제5항 또는 제6항에 있어서,
    상기 수신지 처리 회로는 상기 스누프 제어 회로에 의해 얻어지는 이전된 아키텍처 상태가 상기 수신지 처리 회로에 의한 문의를 위해 저장되는 관련 캐시를 포함하는 데이터 처리 장치.
  8. 제4항 내지 제7항 중 어느 항에 있어서,
    상기 가속 메커니즘은 상기 소스 처리 회로가 자체의 아키텍처 상태를 상기 수신지 처리 회로로 제공하는 상기 소스 처리 회로와 상기 수신지 처리 회로 간의 전용 버스를 포함하는 데이터 처리 장치.
  9. 제1항 내지 제8항 중 어느 항에 있어서,
    상기 스위치 제어기는 상기 적어도 하나의 운영 시스템을 상기 제1 및 제2 처리 회로로부터 논리적으로 분리시키는 가상 현실화 소프트웨어를 적어도 포함하는 데이터 처리 장치.
  10. 제1항 내지 제9항 중 어느 항에 있어서,
    상기 이전 자극의 타이밍은 데이터 처리 장치의 에너지 효율을 향상시키도록 선택되는 데이터 처리 장치.
  11. 제1항 내지 제10항 중 어느 항에 있어서,
    상기 아키텍처 상태는 프로그램 카운터 값을 포함하는, 상기 소스 처리 회로의 하나 이상의 특수 목적 레지스터의 현재 값을 적어도 포함하는 데이터 처리 장치.
  12. 제11항에 있어서,
    상기 아키텍처 상태는 상기 소스 처리 회로의 아키텍처 레지스터 파일 내에 저장되는 현재 값을 더 포함하는 데이터 처리 장치.
  13. 제1항 내지 제12항 중 어느 항에 있어서,
    상기 제1 및 제2 처리 회로 중 적어도 하나는 하나의 처리 유닛을 포함하는 데이터 처리 장치.
  14. 제1항 내지 제13항 중 어느 항에 있어서,
    상기 제1 및 제2 처리 회로 중 적어도 하나는 동일한 아미크로 아키텍처를 갖는 처리 유닛의 집합을 포함하는 데이터 처리 장치.
  15. 제2항에 종속하는 선행하는 항들 중 어느 항에 있어서, 상기 파워 세이빙 상태는:
    파워 오프 상태;
    부분/완전 데이터 보유 상태;
    휴면 상태; 또는
    아이들 상태;
    중 하나인 데이터 처리 장치.
  16. 제1항 내지 제15항 중 어느 항에 있어서,
    상기 제1 및 제2 처리 회로는:
    다른 실행 파이프라인 길이; 또는
    다른 실행 리소스; 중 적어도 하나
    를 갖는 것에 의해 마이크로 아키텍처가 다르게 구성된 데이터 처리 장치.
  17. 제1항 내지 제16항 중 어느 항에 있어서,
    상기 소스 처리 회로는 상기 수신지 처리 회로보다 고성능이며,
    상기 데이터 처리 장치는
    상기 소스 처리 회로의 열 출력을 모니터링하고 상기 열 출력이 미리 정해진 레벨에 도달하면 상기 자극 이전을 시발하는 온도 모니터링 회로를 더 포함하는 데이터 처리 장치.
  18. 제1항 내지 제17항 중 어느 항에 있어서,
    상기 제1 및 제2 처리 회로는 하나의 집적 회로 내에 존재하는 데이터 처리 장치.
  19. 데이터 처리 장치로서:
    데이터 처리 동작을 수행하기 위한 제1 처리 수단과;
    데이터 처리 동작을 수행하기 위한 제2 처리 수단과;
    이전 자극에 응답하여, 데이터 처리 장치에 의해 수행될 작업 부하의 성능을 소스 처리 수단으로부터 수신지 처리 수단으로 이전하는 핸드오버 동작을 수행하기 위한 이전 제어 수단을 포함하고;
    상기 제1 처리 수단은 상기 작업 부하가 상기 제1 처리 수단 또는 제2 처리 수단 상에서 수행 가능하도록 상기 제2 처리 수단과 아키텍처가 호환 가능하고, 상기 작업 부하는 적어도 하나의 어플리케이션과 해당 적어도 하나의 어플리케이션을 구동시키는 적어도 하나의 운영 시스템을 포함하고,
    상기 제1 처리 수단은 해당 제1 처리 수단의 성능이 상기 제2 처리 수단의 성능과 상이하도록 상기 제2 처리 수단과 마이크로 아키텍처가 상이하며,
    상기 제1 및 제2 처리 수단은 상기 작업 부하가 임의의 시점에서 상기 제1 및 제2 처리 수단 중 하나에 의해 수행되도록 구성되며;
    상기 소스 처리 수단은 상기 제1 및 제2 처리 수단 중 하나이고, 상기 수신지 처리 수단은 상기 제1 및 제2 처리 수단 중 다른 하나이고;
    상기 이전 제어 수단은 상기 핸드오버 동작 중,
    (i) 상기 소스 처리 수단이 자체의 현재 아키텍처 상태를 상기 수신지 처리 수단에 유효하게 구성하도록 유도하고;
    (ii) 상기 작업 부하의 이전이 상기 적어도 하나의 운영 시스템에 투명하도록 미리 정해진 프로세서 특정 설정 정보를 상기 적어도 하나의 운영 시스템으로부터 마스킹하도록 구성되며;
    상기 현재 아키텍처 상태는 상기 핸드오버 동작이 개시되는 시점에 상기 제1 및 제2 처리 수단 사이에 공유된 공유 메모리 수단으로부터 유효하지 않고, 상기 작업 부하의 성능을 상기 소스 처리 수단으로부터 성공적으로 인계받기 위해 상기 수신지 처리 수단에 필요한 상태인 것을 특징으로 하는 데이터 처리 장치.
  20. 데이터 처리 장치 동작 방법으로서:
    상기 데이터 처리 장치는 데이터 처리 동작을 수행하는 제1 처리 회로와 데이터 처리 동작을 수행하는 제2 처리 회로를 포함하고, 상기 제1 처리 회로는 상기 데이터 처리 장치에 의해 수행될 작업 부하가 상기 제1 처리 회로 또는 제2 처리 회로 상에서 수행 가능하도록 상기 제2 처리 회로와 아키텍처가 호환 가능하고, 상기 작업 부하는 적어도 하나의 어플리케이션과 해당 적어도 하나의 어플리케이션을 구동시키는 적어도 하나의 운영 시스템을 포함하고, 상기 제1 처리 회로는 해당 제1 처리 회로의 성능이 상기 제2 처리 회로의 성능과 상이하도록 상기 제2 처리 회로와 마이크로 아키텍처가 상이하며, 상기 방법은:
    임의의 시점에 상기 제1 및 제2 처리 회로 중 하나의 회로상에서 상기 작업 부하를 수행하는 단계와;
    이전 자극에 응답하여, 상기 작업 부하의 성능을 소스 처리 회로로부터 수신지 처리 회로로 이전하는 핸드오버 동작을 수행하는 단계로서, 상기 소스 처리 회로는 상기 제1 및 제2 처리 회로 중 하나이고, 상기 수신지 처리 회로는 상기 제1 및 제2 처리 회로 중 다른 하나인, 그러한 단계와;
    상기 핸드오버 동작 중, (i) 상기 소스 처리 회로가 자체의 현재 아키텍처 상태를 상기 수신지 처리 회로에 유효하게 구성하도록 유도하는 단계로서, 상기 현재 아키텍처 상태는 상기 핸드오버 동작이 개시되는 시점에 상기 제1 및 제2 처리 회로 사이에 공유된 공유 메모리로부터 유효하지 않고, 상기 작업 부하의 성능을 상기 소스 처리 회로로부터 성공적으로 인계받기 위해 상기 수신지 처리 회로에 필요한 상태인, 그러한 단계와;
    (ii) 상기 작업 부하의 이전이 상기 적어도 하나의 운영 시스템에 투명하도록 미리 정해진 프로세서 특정 설정 정보를 상기 적어도 하나의 운영 시스템으로부터 마스킹하는 단계를 포함하는 것을 특징으로 하는 데이터 처리 장치 동작 방법.
KR1020127024538A 2010-03-01 2011-02-17 제1 및 제2 처리 회로 간 작업 부하를 스위칭하는 데이터 처리 장치 및 방법 KR101802140B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/659,234 US8418187B2 (en) 2010-03-01 2010-03-01 Virtualization software migrating workload between processing circuitries while making architectural states available transparent to operating system
US12/659,234 2010-03-01
PCT/GB2011/050317 WO2011107776A1 (en) 2010-03-01 2011-02-17 A data processing apparatus and method for switching a workload between first and second processing circuitry

Publications (2)

Publication Number Publication Date
KR20130044211A true KR20130044211A (ko) 2013-05-02
KR101802140B1 KR101802140B1 (ko) 2017-12-28

Family

ID=44202159

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127024538A KR101802140B1 (ko) 2010-03-01 2011-02-17 제1 및 제2 처리 회로 간 작업 부하를 스위칭하는 데이터 처리 장치 및 방법

Country Status (10)

Country Link
US (1) US8418187B2 (ko)
JP (1) JP5823987B2 (ko)
KR (1) KR101802140B1 (ko)
CN (1) CN102782671B (ko)
BR (1) BR112012021102B1 (ko)
DE (1) DE112011100744T5 (ko)
GB (1) GB2490823B (ko)
IL (1) IL221270A (ko)
RU (1) RU2520411C2 (ko)
WO (1) WO2011107776A1 (ko)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8533505B2 (en) 2010-03-01 2013-09-10 Arm Limited Data processing apparatus and method for transferring workload between source and destination processing circuitry
CN103038749B (zh) 2010-07-01 2017-09-15 纽戴纳公司 为了优化群集特定配置的使用而按进程类型在群集之间分割进程
US8782645B2 (en) * 2011-05-11 2014-07-15 Advanced Micro Devices, Inc. Automatic load balancing for heterogeneous cores
US8683468B2 (en) * 2011-05-16 2014-03-25 Advanced Micro Devices, Inc. Automatic kernel migration for heterogeneous cores
US20130007376A1 (en) * 2011-07-01 2013-01-03 Sailesh Kottapalli Opportunistic snoop broadcast (osb) in directory enabled home snoopy systems
DE112011105590T5 (de) 2011-09-06 2014-07-03 Intel Corp. Energieeffiziente Prozessorarchitektur
GB2537300B (en) * 2011-09-06 2017-10-04 Intel Corp Power efficient processor architecture
US9727388B2 (en) 2011-12-29 2017-08-08 Intel Corporation Migrating threads between asymmetric cores in a multiple core processor
KR101975288B1 (ko) * 2012-06-15 2019-05-07 삼성전자 주식회사 멀티 클러스터 프로세싱 시스템 및 그 구동 방법
US9195285B2 (en) * 2012-12-27 2015-11-24 Intel Corporation Techniques for platform duty cycling
US10162687B2 (en) * 2012-12-28 2018-12-25 Intel Corporation Selective migration of workloads between heterogeneous compute elements based on evaluation of migration performance benefit and available energy and thermal budgets
US9569223B2 (en) * 2013-02-13 2017-02-14 Red Hat Israel, Ltd. Mixed shared/non-shared memory transport for virtual machines
US20140269611A1 (en) * 2013-03-14 2014-09-18 T-Mobile Usa, Inc. Communication Handovers from Networks Using Unlicensed Spectrum to Circuit-Switched Networks
JP6244771B2 (ja) * 2013-09-24 2017-12-13 日本電気株式会社 情報処理システム、処理装置、分散処理方法、及び、プログラム
US20150095614A1 (en) * 2013-09-27 2015-04-02 Bret L. Toll Apparatus and method for efficient migration of architectural state between processor cores
KR20150050135A (ko) * 2013-10-31 2015-05-08 삼성전자주식회사 복수의 이종 코어들을 포함하는 전자 시스템 및 이의 동작 방법
US9665372B2 (en) * 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
US20150355946A1 (en) * 2014-06-10 2015-12-10 Dan-Chyi Kang “Systems of System” and method for Virtualization and Cloud Computing System
US9870226B2 (en) * 2014-07-03 2018-01-16 The Regents Of The University Of Michigan Control of switching between executed mechanisms
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US9582052B2 (en) 2014-10-30 2017-02-28 Qualcomm Incorporated Thermal mitigation of multi-core processor
US9898071B2 (en) * 2014-11-20 2018-02-20 Apple Inc. Processor including multiple dissimilar processor cores
US9958932B2 (en) 2014-11-20 2018-05-01 Apple Inc. Processor including multiple dissimilar processor cores that implement different portions of instruction set architecture
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
JP6478762B2 (ja) 2015-03-30 2019-03-06 ルネサスエレクトロニクス株式会社 半導体装置及びその制御方法
US10628214B2 (en) 2015-06-01 2020-04-21 Samsung Electronics Co., Ltd. Method for scheduling entity in multicore processor system
US9928115B2 (en) 2015-09-03 2018-03-27 Apple Inc. Hardware migration between dissimilar cores
US10775859B2 (en) * 2016-09-23 2020-09-15 Hewlett Packard Enterprise Development Lp Assignment of core identifier
JP2018101256A (ja) * 2016-12-20 2018-06-28 ルネサスエレクトロニクス株式会社 データ処理システム及びデータ処理方法
US10579575B2 (en) * 2017-02-24 2020-03-03 Dell Products L.P. Systems and methods of management console user interface pluggability
US10628223B2 (en) * 2017-08-22 2020-04-21 Amrita Vishwa Vidyapeetham Optimized allocation of tasks in heterogeneous computing systems
US10491524B2 (en) 2017-11-07 2019-11-26 Advanced Micro Devices, Inc. Load balancing scheme
US11188379B2 (en) 2018-09-21 2021-11-30 International Business Machines Corporation Thermal capacity optimization for maximized single core performance
TWI705377B (zh) * 2019-02-01 2020-09-21 緯創資通股份有限公司 硬體加速方法及硬體加速系統
CN110413098B (zh) * 2019-07-31 2021-11-16 联想(北京)有限公司 一种控制方法及装置

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3309A (en) * 1843-10-18 Weaver s loom for working any number of heddles
US288748A (en) * 1883-11-20 John watson
JPH09138716A (ja) * 1995-11-14 1997-05-27 Toshiba Corp 電子計算機
GB2318194B (en) * 1996-10-08 2000-12-27 Advanced Risc Mach Ltd Asynchronous data processing apparatus
JP3459056B2 (ja) * 1996-11-08 2003-10-20 株式会社日立製作所 データ転送システム
JP3864509B2 (ja) * 1997-08-19 2007-01-10 株式会社日立製作所 マルチプロセッサシステム
JPH11203254A (ja) * 1998-01-14 1999-07-30 Nec Corp 共有プロセス制御装置及びプログラムを記録した機械読み取り可能な記録媒体
US6501999B1 (en) * 1999-12-22 2002-12-31 Intel Corporation Multi-processor mobile computer system having one processor integrated with a chipset
US6631474B1 (en) * 1999-12-31 2003-10-07 Intel Corporation System to coordinate switching between first and second processors and to coordinate cache coherency between first and second processors during switching
JP2002215597A (ja) * 2001-01-15 2002-08-02 Mitsubishi Electric Corp マルチプロセッサ装置
US7100060B2 (en) 2002-06-26 2006-08-29 Intel Corporation Techniques for utilization of asymmetric secondary processing resources
US20040225840A1 (en) 2003-05-09 2004-11-11 O'connor Dennis M. Apparatus and method to provide multithreaded computer processing
US20050132239A1 (en) * 2003-12-16 2005-06-16 Athas William C. Almost-symmetric multiprocessor that supports high-performance and energy-efficient execution
US20060064606A1 (en) * 2004-09-21 2006-03-23 International Business Machines Corporation A method and apparatus for controlling power consumption in an integrated circuit
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
JP4982971B2 (ja) * 2004-09-29 2012-07-25 ソニー株式会社 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
US7275124B2 (en) * 2005-02-24 2007-09-25 International Business Machines Corporation Method and system for controlling forwarding or terminating of a request at a bus interface based on buffer availability
US7461275B2 (en) * 2005-09-30 2008-12-02 Intel Corporation Dynamic core swapping
US20080263324A1 (en) 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
US7624253B2 (en) 2006-10-25 2009-11-24 Arm Limited Determining register availability for register renaming
US7590826B2 (en) 2006-11-06 2009-09-15 Arm Limited Speculative data value usage
US7996663B2 (en) * 2007-12-27 2011-08-09 Intel Corporation Saving and restoring architectural state for processor cores
US20110213947A1 (en) * 2008-06-11 2011-09-01 John George Mathieson System and Method for Power Optimization
JP4951034B2 (ja) * 2009-06-25 2012-06-13 株式会社日立製作所 計算機システムとその稼働情報管理方法
US9367462B2 (en) * 2009-12-29 2016-06-14 Empire Technology Development Llc Shared memories for energy efficient multi-core processors

Also Published As

Publication number Publication date
CN102782671B (zh) 2015-04-22
CN102782671A (zh) 2012-11-14
GB2490823A (en) 2012-11-14
RU2012141606A (ru) 2014-04-10
GB2490823B (en) 2017-04-12
RU2520411C2 (ru) 2014-06-27
BR112012021102A2 (pt) 2017-07-11
US8418187B2 (en) 2013-04-09
DE112011100744T5 (de) 2013-06-27
JP5823987B2 (ja) 2015-11-25
BR112012021102B1 (pt) 2020-11-24
GB201214368D0 (en) 2012-09-26
IL221270A (en) 2016-07-31
WO2011107776A1 (en) 2011-09-09
JP2013521557A (ja) 2013-06-10
IL221270A0 (en) 2012-10-31
KR101802140B1 (ko) 2017-12-28
US20110213934A1 (en) 2011-09-01

Similar Documents

Publication Publication Date Title
KR101802140B1 (ko) 제1 및 제2 처리 회로 간 작업 부하를 스위칭하는 데이터 처리 장치 및 방법
KR101740225B1 (ko) 소스 및 수신지 처리 회로 간 작업 부하를 이전하는 데이터 처리 장치 및 방법
US20110213935A1 (en) Data processing apparatus and method for switching a workload between first and second processing circuitry
Kalla et al. IBM Power5 chip: A dual-core multithreaded processor
TWI494850B (zh) 通透地提供給作業系統之非對稱多核心處理器系統
TWI620121B (zh) 具有原生切換機制之非對稱多核心處理器
Gochman et al. Introduction to Intel Core Duo Processor Architecture.
EP2642368B1 (en) Running state power saving via reduced instructions per clock operation
US20140189411A1 (en) Power control for cache structures
US9870226B2 (en) Control of switching between executed mechanisms
JP5972981B2 (ja) マルチコアプラットフォームにおける制約ブート法
KR20100111700A (ko) 로킹된 오퍼레이션을 수행하기 위한 방법 및 시스템
Gutierrez et al. Evaluating private vs. shared last-level caches for energy efficiency in asymmetric multi-cores
Burgess et al. e6500: Freescale's low-power, high-performance multithreaded embedded processor
JP2023505459A (ja) 異種プロセッサ間のタスク遷移の方法
KR101837817B1 (ko) 비순차 프로세서에서 페이지 워크에 따라 로드 리플레이를 억제하는 메커니즘

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