KR20140113600A - 이종 시스템을 부팅하고 대칭적 코어 뷰를 제공하는 방법 - Google Patents

이종 시스템을 부팅하고 대칭적 코어 뷰를 제공하는 방법 Download PDF

Info

Publication number
KR20140113600A
KR20140113600A KR1020140031255A KR20140031255A KR20140113600A KR 20140113600 A KR20140113600 A KR 20140113600A KR 1020140031255 A KR1020140031255 A KR 1020140031255A KR 20140031255 A KR20140031255 A KR 20140031255A KR 20140113600 A KR20140113600 A KR 20140113600A
Authority
KR
South Korea
Prior art keywords
core
physical
processor
cores
virtual
Prior art date
Application number
KR1020140031255A
Other languages
English (en)
Other versions
KR101773229B1 (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 KR20140113600A publication Critical patent/KR20140113600A/ko
Application granted granted Critical
Publication of KR101773229B1 publication Critical patent/KR101773229B1/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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4405Initialisation of multiprocessor systems
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • 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]
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Advance Control (AREA)
  • Power Sources (AREA)
  • Stored Programmes (AREA)
  • Microcomputers (AREA)
  • Multi Processors (AREA)

Abstract

이종 프로세서 아키텍처 및 이종 프로세서를 부팅하는 방법이 개시된다. 일 실시예에 따른 프로세서는: 큰 물리적 프로세서 코어들의 세트; 큰 물리적 프로세서 코어들에 관해 상대적으로 낮은 성능 프로세싱 능력들 및 상대적으로 낮은 전력 사용량을 갖는 작은 물리적 프로세서 코어들의 세트; 및 부트스트랩 프로세서를 가능하게 하는 패키지 유닛을 포함한다. 부트스트랩 프로세서는 순종 물리적 프로세서 코어들을 초기화하고, 한편 이종 프로세서는 시스템 펌웨어 인터페이스에 대해 순종 프로세서의 모습을 제공한다.

Description

이종 시스템을 부팅하고 대칭적 코어 뷰를 제공하는 방법{METHOD FOR BOOTING A HETEROGENEOUS SYSTEM AND PRESENTING A SYMMETRIC CORE VIEW}
<교차 참조>
본 출원은, 본원에 참조로서 통합되는, 2013년 3월 15일에 출원된 가출원 번호 제61/801615호에 관한 것이며, 그의 우선권을 주장한다.
<기술 분야>
본 발명은 일반적으로 컴퓨터 프로세서들의 분야에 관한 것이다. 보다 구체적으로, 본 발명은 이종 프로세서를 초기화하고 부팅하기 위한 장치 및 방법에 관한 것이다.
현대의 휴대용 디바이스들은 그들의 작은 크기에 기인하여 전력 소모 및 열 소실 제약 양쪽 모두를 갖지만, 소비자들은 더욱 더 개선된 컴퓨팅 파워를 요구하는 더욱 더 개선된 기능성을 기대하고 있다. 감소된 전력 소모 및 증가된 컴퓨팅 리소스를 제공하기 위해, 이종 프로세서(heterogeneous processor)들이 이용될 수 있다. 이종 컴퓨팅 아키텍처들은 순종 아키텍처(homogenous architecture)들보다 고유한 이점을 제공하는데, 그 이유는, 둘 이상의 컴퓨팅 엘리먼트가 컴퓨팅 태스크들을 수행하는 데에 사용가능하기 때문이며, 이는 더 낮은 강도의 컴퓨팅 태스크들이 전력 효율적인 컴퓨팅 엘리먼트들에 의해 수행되게 하면서, 더 높은 강도의 컴퓨팅 태스크들이 더욱 강력한 컴퓨팅 엘리먼트들에 대해 수행되게 한다.
이종 컴퓨팅 아키텍처들의 잘 알려진 이점들에도 불구하고, 실제 세계에서는 CPU 코어들에 대한 이종 컴퓨팅의 적은 예시들이 존재한다. 이러한 아키텍처들은 각 CPU 코어 타입들(이 경우, 컴퓨팅 엘리먼트들은 CPU 코어들임)에 적합하게 태스크들을 스케줄하기 위한 방법을 알기 위한 소프트웨어를 요구한다. 하드웨어가 진화하고 코어 타입들이 변화함에 따라, 소프트웨어(예를 들면, 운영 체제)가 이용가능한 상이한 타입들의 CPU 코어들을 계속 추적하는 것과 이종성을 어떻게 효과적으로 이용할지는 매우 어렵다.
본 발명에 대한 보다 나은 이해는 이하의 도면들과 함께 하기의 상세한 설명으로부터 얻을 수 있다.
도 1a는 본 발명의 실시예들에 따른 예시적인 순차적 파이프라인 및 예시적은 레지스터 리네이밍, 비순차적 발행/실행 파이프라인 양쪽 모두를 예시하는 블록도.
도 1b는 본 발명의 실시예들에 따라 프로세서 내에 포함되는 예시적인 순차적 아키텍처 코어의 실시예와 예시적인 레지스터 리네이밍, 비순차적 발행/실행 아키텍처 코어 양쪽 모두를 예시하는 블록도.
도 2는 본 발명의 실시예에 따른 통합형 메모리 컨트롤러 및 그래픽을 갖는 싱글 코어 프로세서 및 멀티코어 프로세서의 블록도.
도 3은 본 발명의 일 실시예에 따른 시스템의 블록도를 나타내는 도면.
도 4는 본 발명의 실시예에 따른 제2 시스템의 블록도를 나타내는 도면.
도 5는 본 발명의 실시예에 따른 제3 시스템의 블록도를 나타내는 도면.
도 6은 본 발명의 실시예에 따른 SoC(system on a chip)의 블록도를 나타내는 도면.
도 7은 본 발명의 실시예들에 따라 소스 명령어 세트 내의 이진 명령어들을 타깃 명령어 세트 내의 이진 명령어들로 컨버팅하는 소프트웨어 명령어 컨버터의 사용을 대비하는 블록도를 나타내는 도면.
도 8은 이종 코어 컴퓨팅 아키텍처의 일 실시예를 나타내는 도면.
도 9a 및 9b는 실시예에 따른 시스템 부트 흐름의 개요의 흐름도.
도 10은 실시예에 따른, 펌웨어와 마이크로코드 엘리먼트들 사이에서 통과하는 데이터 및 메시지를 나타내는 시퀀스도.
도 11a-11b는 숨겨진 큰 코어 및 다수의 보이는(visible) 작은 코어들을 갖는 시스템의 일 실시예를 나타내는 도면.
이하의 상세한 설명에서, 예시의 목적을 위해, 다수의 특정 상세가 하기에 개시된 본 발명의 실시예에 대한 완전한 이해를 제공하기 위해 설명된다. 그러나, 당업자에게, 본 발명의 실시예들이 이러한 특정 상세들 중 일부 없이 실시될 수 있다는 것은 명확하다. 그외의 예들에서, 공지된 구조체들 및 디바이스들이 본 발명의 실시예들의 기초를 이루는 원리들을 모호하게 하지 않도록 블록도 형태로 도시된다.
예시적인 프로세서 아키텍처들 및 데이터 타입들
도 1a는 본 발명의 실시예들에 따른 예시적인 순차적 파이프라인 및 예시적인 레지스터 리네이밍, 비순차적 발행/실행 파이프라인 양쪽 모두를 나타내는 블록도이다. 도 1b는 본 발명의 실시예들에 따라 프로세서 내에 포함되는 예시적인 순차적 아키텍처 코어의 실시예와 예시적인 레지스터 리네이밍, 비순차적 발행/실행 아키텍처 코어 양쪽 모두를 예시하는 블록도이다. 도 1a-b 내의 실선 박스들은 순차적 파이프라인 및 순차적 코어를 예시하고, 한편, 점선 박스들의 옵션의 부가물은 레지스터 리네이밍, 비순차적 발행/실행 파이프라인 및 코어를 예시한다. 순차적 양태가 비순차적 양태의 서브 세트라고 가정하면, 비순차적 양태가 설명될 것이다.
도 1a에서, 프로세서 파이프라인(100)은 페치 스테이지(102), 길이 디코드 스테이지(104), 디코드 스테이지(106), 할당 스테이지(108), 리네이밍 스테이지(110), (또한 디스패치 또는 발행으로서 알려진) 스케줄링 스테이지(112), 레지스터 판독/메모리 판독 스테이지(114), 실행 스테이지(116), 되기입(write back)/메모리 기입 스테이지(118), 예외 핸들링 스테이지(122), 및 커밋(commit) 스테이지(124)를 포함한다.
도 1b는 실행 엔진 유닛(150)에 연결된 프론트 엔드 유닛(130)을 포함하는 프로세서 코어(190)를 도시하고, 양쪽 모두는 메모리 유닛(170)에 연결된다. 코어(190)는 RISC(reduced instruction set computing) 코어, CISC(complex instruction set computing) 코어, VLIW(very long instruction word) 코어, 또는 하이브리드 또는 대안의 코어 타입일 수 있다. 또 다른 옵션으로서, 코어(190)는, 예를 들면, 네트워크 또는 통신 코어, 압축 엔진, 코프로세서 코어, GPGPU(general purpose computing graphics processing unit) 코어, 그래픽 코어 등과 같은 특수 목적 코어일 수 있다.
프론트 엔드 유닛(130)은 명령어 캐시 유닛(134)에 연결된 브랜치 예측 유닛(132)을 포함하고, 명령어 캐시 유닛(134)은 명령어 TLB(translation lookaside buffer)(136)에 연결되고, 명령어 TLB(136)는 명령어 페치 유닛(138)에 연결되고, 명령어 페치 유닛(138)은 디코드 유닛(140)에 연결된다. 디코드 유닛(140)(또는 디코더)은 명령어들을 디코드하고, 출력으로서, 하나 이상의 마이크로-오퍼레이션들, 마이크로-코드 엔트리 포인트들, 마이크로명령어들, 또는 본래의 명령어들로부터 디코드되거나, 또는 다르게는 그것을 반영하거나, 또는 그것으로부터 도출되는, 그외의 명령어들 또는 그외의 제어 신호들을 생성한다. 디코드 유닛(140)은 다양한 상이한 메커니즘들을 이용하여 구현될 수 있다. 적절한 메커니즘들의 예시들은, 룩업 테이블들, 하드웨어 구현들, PLA(programmable logic array)들, 마이크로코드 ROM(read only memory)들 등을 포함하나, 이에 한정되지 않는다. 일 실시예에서, 코어(190)는 마이크로코드 ROM, 또는 특정 마이크로명령어들에 대한 마이크로코드를 (예를 들면, 디코드 유닛(140)에 또는 다르게는 프론트 엔드 유닛(130) 내에) 저장하는 그외의 매체를 포함한다. 디코드 유닛(140)은 실행 엔진 유닛(150) 내의 리네임/할당기 유닛(152)에 연결된다.
실행 엔진 유닛(150)은 리타이어먼트(retirement) 유닛(154) 및 하나 이상의 스케줄러 유닛(들)(156)의 세트에 연결되는 리네임/할당기 유닛(152)을 포함한다. 스케줄러 유닛(들)(156)은, 레저베이션 스테이션(reservations station)들, 중앙 명령어 윈도우 등을 포함하는, 임의의 수의 상이한 스케줄러들을 나타낸다. 스케줄러 유닛(들)(156)은 물리적 레지스터 파일(들) 유닛(들)(158)에 연결된다. 각각의 물리적 레지스터 파일(들) 유닛들(158)은 하나 이상의 물리적 레지스터 파일들, 또는, 스칼라 정수, 스칼라 부동 소수점, 패킹된(packed) 정수, 패킹된 부동 소수점, 벡터 정수, 벡터 부동 소수점, 상태(예를 들어, 실행될 다음 명령어의 어드레스인 명령어 포인터) 등과 같은 하나 이상의 상이한 데이터 타입들을 저장하는 상이한 것들을 나타낸다. 일 실시예에서, 물리적 레지스터 파일(들) 유닛(들)(158)은 벡터 레지스터 유닛, 기입 마스크 레지스터 유닛, 및 스칼라 레지스터 유닛을 포함한다. 이러한 레지스터 유닛들은 아키텍처적 벡터 레지스터들, 벡터 마스크 레지스터들, 및 범용 레지스터들을 제공할 수 있다. 물리적 레지스터 파일(들) 유닛(들)(158)은, 레지스터 리네이밍 및 비순차적 실행이 구현될 수 있는 다양한 방식들(예를 들면, 리오더(reorder) 버퍼(들) 및 리타이어먼트 레지스터 파일(들)의 이용; 미래 파일(future file), 이력(history) 버퍼(들), 및 리타이어먼트 레지스터 파일(들)의 이용; 레지스터 맵들 및 레지스터들의 풀(pool)의 이용; 등)을 나타내기 위해 리타이어먼트 유닛(154)에 의해 오버랩된다. 리타이어먼트 유닛(154) 및 물리적 레지스터 파일(들) 유닛(들)(158)은 실행 클러스터(들)(160)에 연결된다. 실행 클러스터(들)(160)은 하나 이상의 실행 유닛(162)의 세트 및 하나 이상의 메모리 액세스 유닛(164)의 세트를 포함한다. 실행 유닛들(162)은 다양한 오퍼레이션들(예를 들면, 시프트들, 덧셈, 뺄셈, 곱셈)을 수행하고, 다양한 타입들의 데이터(예를 들면, 스칼라 부동 소수점, 패킹된 정수, 패킹된 부동 소수점, 벡터 정수, 벡터 부동 소수점)에 대해 수행될 수 있다. 일부 실시예들이 특정 기능들 또는 기능들의 세트에 전용되는 다수의 실행 유닛들을 포함할 수 있으나, 그외의 실시예들은 단 하나의 실행 유닛 또는 모든 기능들을 모두 수행하는 다수의 실행 유닛들을 포함할 수 있다. 스케줄러 유닛(들)(156), 물리적 레지스터 파일(들) 유닛(들)(158), 및 실행 클러스터(들)(160)은 아마도 복수로서 도시되는데, 그 이유는, 특정 실시예들이 특정 타입들의 데이터/오퍼레이션들에 대한 별개의 파이프라인들{예를 들면, 스칼라 정수 파이프라인, 스칼라 부동 소수점/패킹된 정수/패킹된 부동 소수점/벡터 정수/벡터 부동 소수점 파이프라인, 및/또는, 각각이 그들 소유의 스케줄러 유닛, 물리적 레지스터 파일(들) 유닛, 및/또는 실행 클러스터를 갖는, 메모리 액세스 파이프라인 - 그리고, 별개의 메모리 액세스 파이프라인의 경우에, 이러한 파이프 라인의 실행 클러스터만이 메모리 액세스 유닛(들)(164)을 갖는 특정 실시예들이 구현됨)을 생성하기 때문이다. 별개의 파이프라인들이 이용되면, 하나 이상의 이러한 파이프라인은 비순차적 발행/실행이고, 나머지는 순차적일 수 있다.
메모리 액세스 유닛들(164)의 세트는, L2(level 2) 캐시 유닛(176)에 연결되는 데이터 캐시 유닛(174)에 연결되는 데이터 TLB 유닛(172)을 포함하는 메모리 유닛(170)에 연결된다. 하나의 예시적인 실시예에서, 메모리 액세스 유닛들(164)은 로드 유닛, 저장 어드레스(store address) 유닛, 및 저장 데이터(store data) 유닛을 포함할 수 있고, 이들 각각은 메모리 유닛(170) 내의 데이터 TLB 유닛(172)에 연결된다. 명령어 캐시 유닛(134)은 메모리 유닛(170) 내의 L2(level 2) 캐시 유닛(176)에 더 연결된다. L2 캐시 유닛(176)은 하나 이상의 그외의 레벨의 캐시 및 결국에는 메인 메모리에 연결된다.
예시로서, 예시적인 레지스터 리네이밍, 비순차적 발행/실행 코어 아키텍처가 이하와 같이 파이프라인(100)을 구현할 수 있다: 1) 명령어 페치(138)가 페치 및 길이 디코딩 스테이지들(102 및 104)을 수행함; 2) 디코드 유닛(140)이 디코드 스테이지(106)를 수행함); 3) 리네임/할당기 유닛(152)이 할당 스테이지(108) 및 리네이밍 스테이지(110)를 수행함; 4) 스케줄러 유닛(들)(156)이 스케줄 스테이지(112)를 수행함; 5) 물리적 레지스터 파일(들) 유닛(들)(158) 및 메모리 유닛(170)이 레지스터 판독/메모리 판독 스테이지(114)를 수행함; 실행 클러스터(160)가 실행 스테이지(116)를 수행함; 6) 메모리 유닛(170) 및 물리적 레지스터 파일(들) 유닛(들)(158)이 되기입/메모리 기입 스테이지(118)를 수행함; 7) 다양한 유닛들이 예외 핸들링 스테이지(122)에 수반될 수 있음; 및 8) 리타이어먼트 유닛(154) 및 물리적 레지스터 파일(들) 유닛(들)(158)이 커밋 스테이지(124)를 수행함.
코어(190)는, 본원에 개시된 명령어(들)을 포함하는, 하나 이상의 명령어들 세트(예를 들면, 더 새로운 버전에서 추가되고 있는 일부 확장들을 갖는) x86 명령어 세트; 캘리포니아 주, 서니베일 소재의 MIPS 테크놀로지의 MIPS 명령어 세트; 캘리포니아 주, 서니베일 소재의 ARM 홀딩스의 (NEON과 같은 옵션의 추가적인 확장들을 갖는) ARM 명령어 세트)를 지원할 수 있다. 일 실시예에서, 코어(190)는 팩킹된 데이터 명령어 세트 확장(예를 들면, 후술되는, AVX1, AVX2 및/또는 제네릭 벡터 친화적인 명령어 포맷(U=0 및/또는 U=1)의 일부 형태)을 지원하는 로직을 포함하여, 많은 멀티미디어 애플리케이션들에 의해 이용되는 오퍼레이션들이 패킹된 데이터를 이용하여 수행될 수 있게 한다.
코어가 (오퍼레이션들 또는 스레드들의 두 개 이상의 병렬 세트를 실행하는) 멀티스레딩(multithreading)을 지원할 수 있고, 타임 슬라이스형(time sliced) 멀티스레딩, (싱글 물리적 코어가, 물리적 코어가 동시에 멀티스레딩하고 있는 스레드들 각각에 대해 논리적 코어를 제공하는) 동시 멀티스레딩, 또는 그의 조합(예를 들면, Intel® 하이퍼스레딩 기술에서와 같은 그 이후의 타임 슬라이스형 페칭 및 디코딩 및 동시 멀티스레딩)을 포함하는 다양한 방식으로 그렇게 할 수 있다.
레지스터 리네이밍이 비순차적 실행의 컨텍스트에서 설명되었지만, 레지스터 리네이밍은 순차적 아키텍처에서 이용될 수 있다는 것은 당연하다. 프로세서의 예시적인 실시예가 또한 별개의 명령어 및 데이터 캐시 유닛들(134/174) 및 공유형 L2 캐시 유닛(176)을 포함할 수 있지만, 대안적인 실시예들은, 예를 들면, L1(Level 1) 내부 캐시, 또는 다수의 레벨들의 내부 캐시와 같은, 명령어들 및 데이터 양쪽 모두에 대한 싱글 내부 캐시를 가질 수 있다. 일부 실시예들에서, 시스템은 내부 캐시, 및 코어 및/또는 프로세서의 외부에 있는 외부 캐시의 조합을 포함할 수 있다. 대안으로, 캐시 모두는 코어 및/또는 프로세서의 외부에 있을 수 있다.
도 2는 본 발명의 실시예들에 따라, 두 개 이상의 코어를 가질 수 있고, 통합형 메모리 컨트롤러를 가질 수 있고, 통합형 그래픽을 가질 수 있는 프로세서(200)의 블록도이다. 도 2의 실선 박스들은 싱글 코어(202A), 시스템 에이전트(210), 하나 이상의 버스 컨트롤러 유닛들의 세트(216)를 갖는 프로세서(200)를 예시하고, 한편으로 점선 박스들은 다수의 코어들(202A-N), 시스템 에이전트(210) 내의 하나 이상의 통합형 메모리 컨트롤러 유닛(들)(214)의 세트, 및 특수 목적 로직(208)을 갖는 대안의 프로세서(200)를 예시한다.
따라서, 프로세서(200)의 상이한 구현들은: 1) (하나 이상의 코어를 포함할 수 있는) 통합형 그래픽 및/또는 과학(스루풋(throughput)) 로직인 특수 목적 로직(208), 및 하나 이상의 범용 코어(예를 들면, 범용 순차적 코어들, 범용 비순차적 코어들, 둘의 조합)인 코어들(202A-N)을 갖는 CPU; 2) 주로 그래픽 및/또는 과학(스루풋) 용으로 의도되는 다수의 특수 목적 코어들인 코어들(202A-N)을 갖는 코프로세서; 및 3) 많은 수의 범용 순차적 코어들인 코어들(202A-N)을 갖는 코프로세서를 포함할 수 있다. 따라서, 프로세서(200)는 범용 프로세서, 코프로세서 또는, 예를 들면, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU(general purpose graphics processing unit), (30 이상의 코어들을 포함하는) 하이-스루풋 MIC(many integrated core) 코프로세서, 임베디드 프로세서 등과 같은 특수 목적 프로세서일 수 있다. 프로세서는 하나 이상의 칩들 상에 구현될 수 있다. 프로세서(200)는, 예를 들면, BiCMOS, CMOS, 또는 NMOS와 같은 다수의 프로세스 기술들 중 임의의 것을 이용하여 하나 이상의 기판의 일부일 수 있고/있거나 기판 상에 구현될 수 있다.
메모리 계층은 코어들 내의 하나 이상의 레벨의 캐시, 하나 이상의 공유형 캐시 유닛(206)의 세트, 통합형 메모리 컨트롤러 유닛(214)의 세트에 연결된 외부 메모리(도시되지 않음)를 포함한다. 공유형 캐시 유닛들의 세트(206)는 L2(level 2), L3(level 3), L4(level 4), 또는 그외의 레벨의 캐시와 같은 하나 이상의 중간 레벨 캐시, LLC(last level cache), 및/또는 그들의 조합을 포함할 수 있다. 일 실시예에서, 링 기반 인터커넥트 유닛(212)은 통합형 그래픽 로직(208), 공유형 캐시 유닛들의 세트(206), 및 시스템 에이전트 유닛(210)/통합형 메모리 컨트롤러 유닛(들)(214)을 인터커넥트하지만, 대안의 실시예들은 그러한 유닛들을 인터커넥트하기 위한 임의의 수의 공지된 기법들을 이용할 수 있다. 일 실시예에서, 일관성(coherency)은 하나 이상의 캐시 유닛들(206) 및 코어들(202-A-N) 사이에서 유지된다.
일부 실시예들에서, 하나 이상의 코어들(202A-N)은 멀티스레딩할 수 있다. 시스템 에이전트(210)는 그러한 컴포넌트들을 코디네이팅(coordinating)하고 오퍼레이팅하는 코어들(202A-N)을 포함한다. 시스템 에이전트 유닛(210)은, 예를 들면 PCU(power control unit) 및 디스플레이 유닛을 포함할 수 있다. PCU는 코어들(202A-N) 및 통합형 그래픽 로직(208)의 전력 상태를 레귤레이팅하는 데에 필요한 로직 및 컴포넌트들이거나 또는 그것을 포함할 수 있다. 디스플레이 유닛은 하나 이상의 외부 접속된 디스플레이를 구동하기 위한 것이다.
코어들(202A-N)은 아키텍처 명령어의 관점에서 순종 또는 이종일 수 있는데; 즉, 코어들(202A-N) 중 둘 이상이 동일한 명령어 세트를 실행할 수 있는 반면에, 그외의 것들은 그 명령어 세트의 서브 세트 또는 상이한 명령어 세트만을 실행할 수 있다. 일 실시예에서, 코어들(202A-N)은 이종이고, 하기에서 설명되는 "스몰" 코어들 및 "빅(big)" 코어들 양쪽 모두를 포함한다.
도 3-6은 예시적인 컴퓨터 아키텍처들의 블록도들이다. 랩탑, 데스크탑, 핸드헬드 PC, 개인용 디지털 보조기기, 엔지니어링 워크스테이션, 서버, 네트워크 디바이스, 네트워크 허브, 스위치, 임베디드 프로세서, 디지털 신호 프로세서(DSP), 그래픽 디바이스, 비디오 게임 디바이스, 셋-톱 박스, 마이크로 컨트롤러, 셀 폰, 휴대용 미디어 플레이어, 핸드 헬드 디바이스, 및 다양한 그외의 전자 디바이스들을 위한 본 기술 분야에 공지된 그외의 시스템 설계들 및 구성들이 또한 적합할 수 있다. 일반적으로, 본원에 개시된 프로세서 및/또는 그외의 실행 로직을 통합할 수 있는 매우 다양한 시스템들 또는 전자 디바이스들이 일반적으로 적합하다.
이제 도 3을 참조하면, 본 발명의 일 실시예에 따른 시스템(300)의 블록도가 도시된다. 시스템(300)은 컨트롤러 허브(320)에 연결되는 하나 이상의 프로세서(310, 315)를 포함할 수 있다. 일 실시예에서, 컨트롤러 허브(320)는 GMCH(graphics memory controller hub)(390) 및 (별개의 칩들 상에 있을 수 있는) IOH(Input/Ouput Hub)(350)를 포함하고; GMCH(390)는 메모리, 및 메모리(340) 및 코프로세서(345)에 연결되는 그래픽 컨트롤러들을 포함하고; IOH(350)는 GMCH(390)에 입력/출력(I/O) 디바이스들(360)을 연결한다. 대안으로, 메모리 및 그래픽 컨트롤러들 중 하나 또는 둘 다는 (본원에 개시된 바와 같이) 프로세서 내에 통합되고, 메모리(340) 및 코프로세서(345)는 IOH(350)를 갖는 싱글 칩에서 프로세서(310), 및 컨트롤러 허브(320)에 직접 연결된다.
추가적인 프로세서(315)의 선택적인 특성은 파선으로 도 3에서 표시된다. 각각의 프로세서(310, 315)는 본원에 개시된 프로세싱 코어들 중 하나 이상을 포함할 수 있고 어떤 버전의 프로세서(200)일 수 있다.
메모리(340)는, 예를 들면, 동적 랜덤 액세스 메모리(DRAM), 상 변화 메모리(PCM), 또는 둘의 조합일 수 있다. 적어도 하나의 실시예의 경우에, 컨트롤러 허브(320)는 FSB(frontside bus)와 같은 멀티-드롭 버스, QPI(QuickPath Interconnect)와 같은 점대점 인터페이스, 또는 유사한 접속(395)을 통해 프로세서(들)(310, 315)와 통신한다.
일 실시예에서, 코프로세서(345)는, 예를 들면, 하이-스루풋 MIC 프로세서, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU, 임베디드 프로세서 등과 같은 특수 목적 프로세서이다. 일 실시예에서, 컨트롤러 허브(320)는 통합형 그래픽 가속기를 포함할 수 있다.
아키텍처, 마이크로아키텍처, 열, 전력 소비 특성들 등을 포함하는 메리트(merit)의 측정 기준(metrics)의 스펙트럼의 관점에서 물리적인 리소스들(310, 315) 사이의 다양한 차이들이 존재할 수 있다.
일 실시예에서, 프로세서(310)는 일반적인 타입의 데이터 프로세싱 오퍼레이션들을 제어하는 명령어를 실행한다. 명령어들 내의 임베드된 것은 코프로세서 명령어들일 수 있다. 프로세서(310)는 부착된 코프로세서(345)에 의해 실행되어야 하는 타입의 것으로서 이러한 코프로세서 명령어들을 인식한다. 따라서, 프로세서(310)는 코프로세서 버스 또는 그외의 인터커넥트 상에서 이러한 코프로세서 명령어들(또는 코프로세서 명령어들을 나타내는 제어 신호들)을 코프로세서(345)에 발행한다. 코프로세서(들)(345)는 수신한 코프로세서 명령어들을 수용 및 실행한다.
이제 도 4를 참조하면, 본 발명의 실시예에 따른 제1 더 구체적인 예시의 시스템(400)의 블록도가 도시된다. 도 4에 도시된 바와 같이, 멀티프로세서 시스템(400)은 점대점 인터커넥트 시스템이고, 점대점 인터커넥트(450)를 통해 연결된 제1 프로세서(470) 및 제2 프로세서(480)를 포함한다. 프로세서들(470, 480) 각각은 어떤 버전의 프로세서(200)일 수 있다. 본 발명의 일 실시예에서, 프로세서(470, 480)는 각각 프로세서(310, 315)이지만, 코프로세서(438)는 코프로세서(345)이다. 또 다른 실시예에서, 프로세서들(470, 480)은 각각 프로세서(310), 코프로세서(345)이다.
IMC(integrated memory comtroller) 유닛들(472, 482)을, 각각, 포함하는 프로세서들(470, 480)이 도시된다. 프로세서(470)는 또한 그것의 버스 컨트롤러 유닛들의 일부로서 점대점(P-P) 인터페이스들(476, 478)을 포함하고, 마찬가지로, 제2 프로세서(480)는 P-P 인터페이스들(486, 488)을 포함한다. 프로세서들(470, 480)은 P-P 인터페이스 회로들(478, 488)을 이용하여 점대점(P-P) 인터페이스(450)를 통해 정보를 교환할 수 있다. 도 4에 도시된 바와 같이, IMC들(472, 482)은 프로세서들을 각각의 메모리들, 즉 메모리(432) 및 메모리(434)에 연결하고, 이는 각각의 프로세서들에 로컬적으로 부착된 메인 메모리의 일부일 수 있다.
프로세서들(470, 480)은 점대점 인터페이스 회로들(476, 494, 486, 498)을 이용하여 개별 P-P 인터페이스들(452, 454)을 통해 칩셋(490)과 각각 정보를 교환할 수 있다. 칩셋(490)은 고성능 인터페이스(439)를 통해 코프로세서(438)와 정보를 선택적으로 교환할 수 있다. 일 실시예에서, 코프로세서(438)는, 예를 들면, 하이-스루풋 MIC 프로세서, 네트워크 또는 통신 프로세서, 압축 엔진, 그래픽 프로세서, GPGPU, 임베디드 프로세서 등과 같은 특수 목적 프로세서이다.
공유형 캐시(도시되지 않음)는 어느 하나의 프로세서 내에 또는 양쪽 프로세서들의 외부에 포함될 수 있지만, P-P 인터커넥트를 통해 프로세서들과 접속되어, 어느 하나 또는 양쪽 모두의 프로세서들의 로컬 캐시 정보가, 프로세서가 저 전력 모드에 위치하는 경우에 공유형 캐시에 저장될 수 있게 된다.
칩셋(490)은 인터페이스(496)를 통해 제1 버스(416)에 연결될 수 있다. 일 실시예에서, 제1 버스(416)는 PCI(Peripheral Component Interconnect) 버스, 또는 PCI Express 버스 또는 그외의 제3세대 I/O 인터커넥트 버스와 같은 버스 일 수 있으나, 본 발명의 범위는 그렇게 제한되지는 않는다.
도 4에 도시된 바와 같이, 다양한 I/O 디바이스들(414)은 버스 브릿지(418)와 함께, 제1 버스(416)에 연결될 수 있고, 버스 브릿지(418)는 제1 버스(416)를 제2 버스(420)에 연결한다. 일 실시예에서, 코프로세서, 하이-스루풋 MIC 프로세서들, GPGPU들, 가속기들(예를 들면, 그래픽 가속기 또는 디지털 신호 프로세싱(DSP) 유닛들), 필드 프로그램가능한 게이트 어레이들, 또는 임의의 그외의 프로세서와 같은 하나 이상의 추가 프로세서(들)(415)는 제1 버스(416)에 연결된다. 일 실시예에서, 제2 버스(420)는 LPC(low pin count) 버스일 수 있다. 예를 들면, 키보드 및/또는 마우스(422), 통신 디바이스(427), 및 일 실시예에서, 명령어/코드 및 데이터(430)를 포함할 수 있는 디스크 드라이브 또는 그외의 대용량 저장 디바이스와 같은 저장 유닛(428)을 포함하는 다양한 디바이스들이 제2 버스(420)에 연결될 수 있다. 또한, 오디오 I/O(424)는 제2 버스(420)에 연결될 수 있다. 다른 아키텍처들이 가능하다는 것을 유의해야 한다. 예를 들면, 도 4의 점대점 아키텍처 대신에, 시스템은 멀티-드롭 버스 또는 그외의 그러한 아키텍처를 구현할 수 있다.
이제 도 5를 참조하면, 본 발명의 실시예에 따른 제2 더 구체적인 예시의 시스템(500)의 블록도가 도시된다. 도 4 및 5에서 유사한 구성요소들은 유사한 참조 번호들을 가지며, 도 4의 특정 양태들은 도 5의 그외의 양태들을 모호하게 하지 않기 위해 도 5로부터 생략되었다.
도 5는 프로세서들(470, 480)이 통합형 메모리 및 I/O 제어 로직("CL")(472, 482)을, 각각, 포함할 수 있다는 것을 예시한다. 따라서, CL(472, 482)은 통합형 메모리 컨트롤러 유닛들을 포함하고 I/O 제어 로직을 포함한다. 도 5는 CL(472, 482)에 연결되는 메모리들(432, 434)뿐만 아니라, I/O 디바이스들(514)이 제어 로직(472, 482)에 연결된다는 것을 예시한다. 레거시 I/O 디바이스들(515)은 칩셋(490)에 연결된다.
도 6은 본 발명의 실시예에 따른 SoC(600)의 블록도를 도시한다. 도 2와 유사한 엘리먼트들은 유사한 참조 번호를 갖는다. 또한, 점선 박스들은 더 진보한 SoC들에 대한 옵션의 피처들이다. 도 6에서, 인터커넥트 유닛(들)(602)은: 하나 이상의 코어(202A-N)의 세트 및 공유형 캐시 유닛(들)(206)을 포함하는 애플리케이션 프로세서(610); 시스템 에이전트 유닛(210); 버스 컨트롤러 유닛(들)(216); 통합형 메모리 컨트롤러 유닛(들)(214); 통합형 그래픽 로직, 이미지 프로세서, 오디오 프로세서, 및 비디오 프로세서를 포함할 수 있는 하나 이상의 코프로세서(620)의 세트; 정적 랜덤 액세스 메모리(SRAM)유닛(630); 직접 메모리 액세스(DMA) 유닛(632); 및 하나 이상의 외부 디스플레이에의 커플링을 위한 디스플레이 유닛(640)에 연결된다. 일 실시예에서, 코프로세서(들)(620)는, 예를 들면, 네트워크 또는 통신 프로세서, 압축 엔진, GPGPU, 하이-스루풋 MIC 프로세서, 임베디드 프로세서 등과 같은 특수 목적 프로세서를 포함한다.
본원에 개시되는 메커니즘들의 실시예들은 하드웨어, 소프트웨어, 펌웨어, 또는 그러한 구현 방식들의 조합으로 구현될 수 있다. 본 발명의 실시예들은 적어도 하나의 프로세서, (휘발성 및 비휘발성 메모리 및/또는 저장 엘리먼트들을 포함하는) 저장 시스템, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스를 포함하는 프로그램가능한 시스템들 상에서 실행되는 컴퓨터 프로그램들 또는 프로그램 코드로서 구현될 수 있다.
도 4에 예시된 코드(430)와 같은 프로그램 코드는 본원에 개시된 기능들을 수행하고 출력 정보를 생성하도록 입력 명령어들에 적용될 수 있다. 출력 정보는 알려진 방식으로, 하나 이상의 출력 디바이스에 적용될 수 있다. 이러한 응용 목적들을 위해, 프로세싱 시스템은, 예를 들면, 디지털 신호 프로세서(DSP), 마이크로컨트롤러, ASIC(application specific integrated circuit), 또는 마이크로프로세서와 같은 프로세서를 갖는 임의의 시스템을 포함한다.
프로그램 코드는 프로세싱 시스템과 통신하기 위해 고레벨 절차적 또는 객체 지향형 프로그래밍 언어로 구현될 수 있다. 프로그램 코드는 또한, 원하는 경우, 어셈블리 또는 기계 언어로 구현될 수 있다. 사실, 본원에 개시된 메커니즘들은 임의의 특정 프로그래밍 언어에 범위가 제한되지 않는다. 임의의 경우에, 언어는 컴파일형 또는 해석형 언어일 수 있다.
적어도 하나의 실시예의 하나 이상의 양태가, 머신에 의해 판독될 때, 머신으로 하여금 본원에 개시된 기법들을 수행하는 로직을 제조하게 하는, 프로세서 내의 다양한 로직을 나타내는 머신-판독가능한 매체 상에 저장된 대표적인 명령어들에 의해 구현될 수 있다. "IP cores"로서 알려진 그러한 대표들은, 유형의, 머신 판독가능한 매체 상에 저장되고, 로직 또는 프로세서를 실제로 만드는 제조 머신들에 로딩되도록 다양한 고객들 또는 제조 설비들에 공급될 수 있다.
그러한 머신-판독가능한 저장 매체는, 하드 디스크들, 플로피 디스크들, 광 디스크들, CD-ROM(compact disk read-only memory)들, CD-RW(rewritable compact disk)들, 및 자기-광학 디스크들을 포함하는 임의의 그외의 타입의 디스크, ROM(read-only memory)들, DRAM(dynamic random access memory)들과 같은 RAM(random access memory)들, SRAM(static random access memory)들, EPROM(erasable programmable read-only memory)들, 플래시 메모리들, EEPROM(electrically erasable programmable read-only memory)들, PCM(phase change memory)와 같은 반도체 디바이스들, 자기 또는 광학 카드들, 전자 명령어들을 저장하기에 적합한 임의의 그외의 타입의 매체와 같은 저장 매체를 포함하는, 머신 또는 디바이스에 의해 제조되거나 또는 형성된 비일시적, 유형의 배열의 물품들을, 비제한적으로, 포함할 수 있다.
따라서, 본 발명의 실시예들은 또한 본원에 개시된 구조들, 회로들, 장치들, 프로세서들 및/또는 시스템 피쳐들을 정의하는, HDL(Hardware Description Language)와 같은, 명령어들을 포함하는 또는 설계 데이터를 포함하는 비일시적, 유형의 머신-판독가능한 매체를 포함한다. 그러한 실시예들은 또한 프로그램 제품들로서 지칭될 수 있다.
일부 경우들에서, 명령어 컨버터는 명령어를 소스 명령어 세트로부터 타깃 명령어 세트로 컨버팅하는 데에 이용될 수 있다. 예를 들면, 명령어 컨버터는 명령어를 코어에 의해 프로세싱될 하나 이상의 그외의 명령어로 (예를 들면, 정적 이진 변환, 동적 컴필레이션(compilation)을 포함하는 동적 이진 변환을 이용하여) 변환, 모핑(morph), 에뮬레이트(emulate), 또는 다르게는 컨버팅할 수 있다. 명령어 컨버터는 소프트웨어, 하드웨어, 펌웨어, 또는 그의 조합으로 구현될 수 있다. 명령어 컨버터는 프로세서 상에 있거나, 프로세서 밖에 있거나, 또는 프로세서 상의 일부 또는 프로세서 밖의 일부일 수 있다.
도 7은 본 발명의 실시예들에 따라 소스 명령어 세트 내의 이진 명령어들을 타깃 명령어 세트 내의 이진 명령어들로 컨버팅하는 소프트웨어 명령어 컨버터의 사용을 대비하는 블록도이다. 예시된 실시예에서, 명령어 컨버터는 소프트웨어 명령어 컨버터이지만, 대안으로 명령어 컨버터는 소프트웨어, 펌웨어, 하드웨어, 또는 그의 다양한 조합들로 구현될 수 있다. 도 7은 적어도 하나의 x86 명령어 세트 코어(716)를 갖는 프로세서에 의해 네이티브하게(natively) 실행될 수 있는 x86 이진 코드(706)를 생성하기 위해 x86 컴파일러(704)를 이용하여 컴파일될 수 있는 고레벨 언어(702)의 프로그램을 도시한다. 적어도 하나의 x86 명령어 세트 코어(716)를 갖는 프로세서는, 적어도 하나의 x86 명령어 세트 코어를 갖는 Intel 프로세서와 동일한 결과를 실질적으로 달성하기 위해, (1) Intel x86 명령어 세트 코어의 명령어 세트의 실질적인 일부 또는 (2) 적어도 하나의 x86 명령어 세트 코어를 갖는 Intel 프로세서 상에서 실행하는 것을 타깃으로 하는 그외의 소프트웨어 또는 애플리케이션들의 객체 코드 버젼들을 호환가능하게 실행하거나 또는 다르게는 프로세싱함으로써 적어도 하나의 x86 명령어 세트 코어를 갖는 Intel 프로세서와 동일한 기능을 실질적으로 수행할 수 있는 임의의 프로세서를 나타낸다. x86 컴파일러(704)는 적어도 하나의 x86 명령어 세트 코어(716)를 갖는 프로세서 상에서, 추가적인 연계 프로세싱과 함께 또는 그것 없이, 실행될 수 있는 x86 이진 코드(706)(예를 들면, 객체 코드)를 생성하도록 동작가능한 컴파일러를 나타낸다. 마찬가지로, 도 7은 고레벨 언어(702)의 프로그램이 적어도 하나의 x86 명령어 세트 코어(714)가 없는 프로세서(예를 들면, 캘리포니아주, 서니베일 소재의 MIPS 테크놀러지의 MIPS 명령어 세트를 실행하는, 및/또는 영국, 캠브릿지 소재의 ARM 홀딩스의 ARM 명령어 세트를 실행하는 코어들을 갖는 프로세서)에 의해 네이티브하게 실행될 수 있는 대안 명령어 세트 이진 코드(710)를 생성하기 위해 대안 명령어 세트 컴파일러(708)를 이용하여 컴파일될 수 있다. 명령어 컨버터(712)는 x86 이진 코드(706)를 x86 명령어 세트 코어(714)가 없는 프로세서에 의해 네이티브하게 실행될 수 있는 코드로 컨버팅하는 데에 이용된다. 이러한 컨버팅된 코드는, 이것을 할 수 있는 명령어 컨버터를 만들기 어렵기 때문에, 대안 명령어 세트 이진 코드(710)와 동일한 것이 아닐 수도 있지만, 컨버팅된 코드는 일반적인 오퍼레이션을 수행하고 대안 명령어 세트로부터의 명령어들로 구성될 것이다. 따라서, 명령어 컨버터(712)는, 에뮬레이션, 시뮬레이션 또는 임의의 그외의 프로세스를 통해, x86 명령어 세트 프로세서 또는 코어를 갖지 않는, 프로세서 또는 그외의 전자 디바이스가 x86 이진 코드(706)를 실행하게 해주는, 소프트웨어, 펌웨어, 하드웨어, 또는 그의 조합을 나타낸다.
시스템 투명 이종 컴퓨팅( System - Transparent Heterogeneous Computing )
이하에 개시된 본 발명의 실시예들은, 이종성(heterogeneity)을 시스템으로부터 완전히 숨기고, 프로세서 내의 모든 이종성-인식 로직 및 휴리스틱(heuristic)들을 통합함으로써, 시스템 펌웨어 인터페이스 및 운영 체제(OS)의 이종성에 대한 지원의 부재를 극복한다. 종래의 CPU에서는, 코어들에 대한 태스크들의 할당은 소프트웨어에 의해(일반적으로 OS에 의해) 배타적으로 행해지는 반면, 본 발명의 일 실시예에서는, 이러한 할당은 두 개의 부분들로 분리된다. 소프트웨어는 노출된 순종 코어들에 대해 소프트웨어 프로세스들을 스케줄하는 것을 계속하지만, 하드웨어는 노출된 코어들과, 숨겨진 이종 코어들 사이에서 스레드들을 동적으로 스왑(swap)한다.
순종 컴퓨팅 엘리먼트들만을 시스템에 노출시킴으로써, 하드웨어의 이종성적인 본질은, 시스템 펌웨어 인터페이스(예를 들면, BIOS, EFI, 또는 UEFI) 및 OS 및 모든 가능한 애플리케이션 레벨 S/W의 대부분을 포함하는, 소프트웨어로부터 완전하게 숨겨진다. 시스템은 따라서 순종 코어들만을 갖는 프로세서 상에서 그것이 실행되는 것처럼 부팅하고 오퍼레이팅한다. 이러한 실시예의 프로세서 하드웨어는 소프트웨어에 노출된 컴퓨팅 엘리먼트들 각각을 사용가능한 숨겨진 물리적 컴퓨팅 엘리먼트들 중 하나 이상에 동적으로 맵핑하는 로직을 포함한다. 추가적으로, 로직은 각 타입의 프로세서에서의 오퍼레이션 및 다양한 코어 타입들 사이에서 작업을 이동시키는 능력의 일관성을 유지한다. 하드웨어가 물리적 컴퓨팅 엘리먼트를 동적으로 선택하는 특정 메커니즘은 시스템에 대해 투명하다.
컴퓨팅 엘리먼트의 이종 선택을 포함함으로써, 프로세서 하드웨어는 매우 상이한 타입들의 컴퓨팅에 관한 태스크들을 갖는 매우 상이한 오퍼레이팅 컨디션들에서 항상 매우 효율적으로 오퍼레이팅할 수 있다. 예를 들면, 작은, 전력 효율 코어 및 큰, 고성능 코어 양쪽 모두를 포함하는 CPU는, 전력이 제한될 때(성능이 중요하지 않을 때), 그리고 또한 고성능이 필요할 때(그러나 전력이 제한되지 않을 때) 효율적으로 소프트웨어를 실행하는 데에 이용될 수 있다. 하드웨어 내의 컴퓨팅 엘리먼트들의 상이한 조합들의 선택은 어느 컨디션들 하에서 어느 타입들의 태스크들이 시스템 상에서 실행될 필요가 있는지에 대한 설계 요건들에 기초한다.
이종 시스템들은, 프로세서 코어들, GPU(graphic processor unit)들, 및 (정렬 및 루프와 같은 공통 기능들을 가속하기 위한) 고정형 기능 가속기들과 같은, 상이한 타입들의 컴퓨팅 엘리먼트들을 포함할 수 있다. 후술하는 본 발명의 실시예들에서, 이종 시스템들은 상이한 타입들의 프로세서 코어들 - 즉, 적은 수의 고성능 코어들 및 많은 수의 작은 전력 효율 코어들을 갖는다. 그러나, 본 발명의 기초가 되는 원리는 그외의 타입들의 컴퓨팅 엘리먼트들과 함께 이용될 수 있다.
도 8은, 본원에서 "헤테로 업(Hetero-UP)"(800)으로서 지칭하는, 이종 코어 컴퓨팅 아키텍처의 일 실시예를 나타낸다. 헤테로 업(800) 구성에서, 작은 전력 효율 코어들(802)은 소프트웨어에 노출된다. 애플리케이션(806)에 의해 추가적인 성능이 필요한 경우, 그리고 충분한 전력 예산이 이용가능한 경우, 가상-물리 코어 맵핑은, 작은 코어 대신에 실행하기 위해, 스레드들을 작은 전력 효율 코어(802)로부터 고성능의 큰 물리적 코어(804)로 투명하게 스왑할 수 있다. 일 실시예에서, 패키징 유닛(805)은, 전력 프로파일, 및 컴퓨팅에 관한 스루풋 요구들에 기초하여 어느 프로세서 코어들이 인에이블되고 디스에이블될 지를 결정하도록, 이종 프로세서 코어들의 그룹을 관리한다. 이하에, 이종 코어 컴퓨팅 구현의 부트 프로세스를 설명하기 위해, 헤테로 업(800) 실시예는 예시로서, 그러나 비제한적인 예로서 예시될 것이다.
헤테로 업(800) 실시예의 경우에, 펌웨어 인터페이스는 플랫폼 프로세서들을 작은 코어들로서 셀 수 있을 뿐일 것이다. 큰 코어는 소프트웨어로부터 숨겨질 것이고, CPUID와 같은, 종래의 세는 방법들을 이용하여 셀 수 없다. 그러나, 헤테로 다운(Hetero-Down) 구성 - 고성능의 큰 물리적 코어(804)가 보이는 반면, 작은 전력 효율 코어들(802)이 숨겨짐 - 과 같은, 이종 코어 컴퓨팅 구현의 그외의 실시예들이 가능하다는 것에 유의해야 한다. 이 경우에, 펌웨어 인터페이스는 큰 코어 프로세서를 셀 것이다.
일 실시예에서, 프로세서 디버그 툴과 같은, 특화된 소프트웨어 툴들은, 펌웨어 인터페이스 및 OS가 이종 프로세싱 시스템을 인식하지 못하더라도, 이용가능한 물리적 코어들의 타입을 식별할 수 있다. 특화된 소프트웨어 툴들은 코어들 사이에서 스위치하는 능력을 디스에이블하거나 또는 인에이블할 수 있고, 스레드를 하나의 코어 타입으로부터 상이한 코어 타입으로 강제로 스위칭하는 것과 같은 액션들을 수행할 수 있다.
투명 이종 컴퓨팅은 프로세서 하드웨어의 설계 및 개발에 있어서 복잡성을 증가시키게 되지만, 그것은 펌웨어 인터페이스 및 OS 개발자들에게 많은 이점을 제공한다. 첫째로, 펌웨어 인터페이스, OS, 또는 애플리케이션 소프트웨어는 CPU가 이종 코어들(또는 그외의 컴퓨팅 엘리먼트들)을 가졌는지를 알 필요가 없으며, 이는 운영 체제를 포함하는 레거시 소프트웨어가 개시된 하드웨어와 함께 계속 작동할 것이라는 것을 의미한다. 마찬가지로, 미래의 운영 체제 및 소프트웨어 애플리케이션들은 하드웨어 버전마다 이종성의 타입을 반영하기 위해 끊임없이 업데이트될 필요가 없을 것이다.
둘째로, 가상-물리 코어 맵핑 로직에 의해 구현되는 모든 휴리스틱스는 하드웨어 내에 포함되거나 또는 하드웨어와 함께 일괄 판매된, 또는 다르게는 프로세서 벤더에 의해 제공된 소프트웨어 또는 펌웨어 내에 포함된다. 결과적으로, 변화들의 모든 범위가 소프트웨어로부터 숨겨지고 소프트웨어 업데이트들을 요구하지 않기 때문에, 미래의 하드웨어 설계들은 보다 적극적이고 혁신적인 컴퓨팅 엘리먼트 선택들을 생성할 수 있다.
투명 이종 컴퓨팅을 위한 부트 흐름
현재의 이종 컴퓨팅 솔루션들은 연관된 소프트웨어 복잡성과 함께 이종 코어들을 인식할 것을 펌웨어 인터페이스 및 운영 체제(OS) 양쪽 모두에 요구할 수 있다. 그러나, 펌웨어 인터페이스 및 OS가, 그들이 실제로 하나 이상의 이종 코어 상에서 실행되고 있을 때에 그들이 싱글 타입의 코어 상에서 실행하고 있는 것과 같이 오퍼레이팅하도록 프로세서 인터페이스를 제공하는 것이 가능하다. 하나의 방법은, 그외의 타입들의 코어들의 행동을 "에뮬레이트"하는 마이크로코드 레이어를 이용하는 것이다. 추가적인 방법은, 실행중인 스레드를 적합한 실행 코어(예를 들면, 저전력 또는 고성능)으로 이동시키는 것을 도와주는 특별한 마이크로코드 및 패키지 레벨 하드웨어를 이용하는 것이다.
시스템 시동 시에, 시스템에 노출된 코어의 타입은 펌웨어 인터페이스에 의해 실행되는 부트 흐름을 결정한다. 펌웨어 인터페이스 초기화 동안, 숨겨진 코어들은 휴면 중에 있고, 특화된 마이크로코드 루틴들을 이용하는 것을 제외하고 시스템에 의해 이용될 수 없다. 일단 OS가 초기화되면, 그외의 코어 타입들이 필요한 초기화 흐름을 실행하기 위해 이용될 수 있다. OS가 이종 프로세싱 시스템을 인식하면, 이종 프로세서 코어들은 OS에게 보이게 되고, OS는 상이한 프로세서 코어 타입들 각각에 대해 직접 태스크를 스케줄할 수 있다. 일 실시예에서, 이종 인식 OS는, 실행 중인 소프트웨어에 순종 추상화 레이어(abstraction layer)를 제공하는, 에뮬레이션 또는 가상 프로세서들을 통해, OS 상에서 구동하고 있는 소프트웨어에 대한 프로세서들의 이종 본질을 추상화한다.
OS가 이종 프로세싱 시스템을 인식하지 못하는 경우, 숨겨진 코어들은, 이종 프로세서로 하여금 다양한 코어들 사이에서 실행 중인 스레드들을 동적으로 스왑하게 해주는, 동적 코어 스와핑 기능성을 이용하여 이용될 수 있다. 그 방법을 사용하면, 소프트웨어는, 소프트웨어가 실제로 실행되고 있는 코어가 어느 것인지에 무관하게, 그것이 소프트웨어에게 보이는 타입의 코어 상에서 실행한다고 믿는다. 시스템 투명성을 더 용이하게 하기 위해, 새로운 "마스크형 C6(Masked C6)" 프로세서 상태가 제공되며, 여기에서, 프로세서 코어는, 프로세서 코어가 거의 전력을 소비하지 않는 저 전력 상태에 위치하고, 여기에서 프로세서 코어는 시스템 소프트웨어에 보이지 않게 된다. 마스크형 C6 상태에 있는 프로세서 코어는 표준 시스템 트리거들에 의해 액세스될 수 없고, 대신에 특화된 마이크로코드 루틴들을 통해 액세스가능 하다.
하기에 간략히 설명하기 위해, 헤테로 업(800) 시스템은 예시적인 부트 흐름을 기술하는 데에 이용되고, 시스템이 볼 수 있는 코어들은 전력 효율적인 작은 코어들(802)이고, 이는 고성능의 큰 물리적 코어들(804)의 서브 세트를 구현하고, 더 적은 전력을 소모한다. 그러나, 이하의 설명은, 코어 타입들, 프로세서 상에서 그들이 얼마나 많이 빠져 나갔는지 및 어느 타입이 펌웨어 인터페이스 및 OS가 볼 수 있는지에 대해 관대하기 때문에, 실시예들은 그렇게 한정되지 않는다는 것이 이해되어야 한다.
도 9a 및 9b는 실시예에 따른, 헤테로 업 구성에 대한 시스템 부트 흐름의 개요의 흐름도이다. 도 9a의 시작에서, 901에서, PCH(Platform Controller Hub)는, UFS(Universal Flash Storage) 또는 일부 그외의 프로세서 실행가능한 메모리 공간과 같은, 마이크로코드 액세스가능한 메모리 공간으로 펌웨어 인터페이스 코드를 복사함으로써 시스템 부트를 준비한다. 902에서, 패키지 하드웨어 유닛(예를 들면, 도 8의 패키지 유닛(805))은 모든 작은 코어들을 리셋으로부터 꺼내고, 각 작은 코어를 시스템 펌웨어 인터페이스에 보이게 하고, 전력 효율적인 작은 코어들 중 하나를 BSP(bootstrap processor)가 되도록 선택한다. 904에서, BSP가 되도록 선택된 작은 코어 프로세서는 업데이트되고 그것의 마이크로코드를 실행한다. BSP 마이크로코드는 애플리케이션 프로세서들로서 이용될 추가적인 작은 코어 프로세서들을 인에이블하는 명령어들을 포함한다.
BSP 마이크로코드는 펌웨어 인터페이스 시동 모듈을 포함할 수 있고, 이것은 BSP를 제1 부트 단계 동안 로딩한다. BSP는 IPI(inter-processor interrupts)의 사용을 통해 그외의 프로세스들에 통신한다. 옵션으로, 910a, 910b, 및 910c에서, BSP는 IPI를 이용하여 각각의 작은 코어 AP가 임의의 사용가능한 부트 마이크로코드를 로딩하도록 트리게한다. 912a, 912b, 및 912c에 도시된 바와 같이, 각 작은 코어 AP는 그들의 각각의 애플리케이션 프로세서 프리-부트 마이크로코드를 실행하고, 이는 머신 체크 지원을 초기화하는 것을 포함한다. 일 실시예에서, 작은 코어 AP들에 의해 핸들링되지 않은 이전의 머신 체크 이벤트들이 로깅되고(logged), 머신 체크 지원이 인에이블되면 새로운 머신 체크 이벤트들이 핸들링된다. 914a, 914b, 및 914c에서, 각 작은 코어 AP는 아이들 상태(idle state)에 진입하고, BSP로부터 SIPI(startup IPI)를 기다린다.
작은 코어 애플리케이션 프로세서 초기화와 동시에, 작은 코어 애플리케이션 프로세서들의 수퍼 세트를 갖는 큰 코어 애플리케이션 프로세서가, 908에 도시된 바와 같이, 패키지 유닛에 의해 인에이블되고 초기화된다. 일 실시예에서, 하나 이상의 큰 코어는 하드웨어에서 이용가능하지만, 내부 퓨즈를 통해 디스에이블되며, 이 경우, 큰 코어는 초기화되지 않는다.
916에서, BSP는 고성능의 큰 코어 AP를 시작하는 것을 준비하며, 이는 큰 코어 프리-부트 마이크로코드에 대한 업데이트 패치(patch)의 옵션의 로딩을 포함한다. 918에서, 큰 코어는 명령어 실행을 위해 코어를 준비하도록 프리-부트 마이크로코드를 실행한다. 920에서, 큰 코어 프로세서는 프리-부트 시퀀스를 완료하고, 준비된 프로세서 컨텍스트를 세이브한다. 928에서, 큰 코어는 BSP에게 큰 코어 초기화 시퀀스가 완료되었고, 마스크형 C6 상태에 진입한다는 것을 통지한다. 이 시점에서, 블록(930)에 도시되고, 도 9b에 더 예시된 바와 같이, BSC는 펌웨어 인터페이스 부트를 마무리하고 OS 스타트를 준비한다.
도 9b를 참조하면, 일단 BSP 상에서 실행 중인 시스템 펌웨어 인터페이스 모듈이 완료하면, BSP는, 934에 도시된 바와 같이, 그들의 마이크로코드 업데이트를 로딩하는 것을 완료하지 못한 임의의 작은 코어 AP들을 기다린다. 936에서, BSP는 작은 코어 AP들 각각에 SIPI 이벤트를 보낸다. 938에서, 각 작은 코어 AP가 그들의 리셋 사이클을 완료하고 표준 C6 상태에 진입한다. 이 시점에서, 작은 코어 부트스트랩 프로세서, 및 작은 코어 애플리케이션 프로세서들이 이용가능하고, 각각은 시스템에 보이지만, 큰 코어는 마스크형 C6 상태로 남아 있다. 940에서, BSP는 패키지 유닛을 헤테로-인에이블 모드(hetero-enable mode)로 설정하며, 이는 프로세서가 스레드들을 숨겨진 이종 코어로 동적으로 스왑하게 한다.
일단 펌웨어 인터페이스의 초기화가 완료하면, OS 초기화 루틴들이 시작할 수 있다. OS가 이종 프로세서 시스템들을 지원하지 않는 경우에, OS는 작은 코어 AP에 대한 태스크들을 스케줄할 수 있고, 프로세서 하드웨어는 자동적으로 작은 코어 AP들 중 하나로부터 큰 코어 AP로 태스크들을 스왑할 수 있다. 소프트웨어 관점으로부터, 시스템은 완전한 순종 상태에서 실행한다. 숨겨진 큰 코어는 마스크되고, 시스템 상에서 소프트웨어 보임 상태로 노출되지 않는다. 예를 들면, 이종 프로세서 시스템들을 지원하지 않는 OS 상에서, 숨겨진 큰 코어는 보이는 진보된 프로그램가능한 인터럽트 컨트롤러 ID(visible advanced programmable interrupt controller ID)를 갖지 않으며, 직접 소프트웨어 개시된 인터-프로세서 인터럽트(direct software initiated inter-processor interrupt)들을 받아들이지 않으며, 큰 코어로서 머신 체크 이벤트들을 핸들링하지 않는다. 일 실시예에서, 이종 프로세싱 시스템의 하나 이상의 숨겨진 코어는 보이는 순종 코어들의 명령어 세트를 에뮬레이팅함으로써 비이종 인식 OS에 노출된다. OS가 이종 프로세서 시스템들을 지원하는 경우에, OS는 다양한 코어 타입들 각각을 소프트웨어에 노출시킬 수 있고, 다양한 코어 타입들에 대해 소프트웨어 태스크들을 스케줄할 수 있다. 추가적으로, 이종 인식 OS는 코어들 사이에서 스레드들을 스왑하는 데 이용되는 하드웨어 메커니즘을 제어할 수 있다.
도 10은 이종 프로세싱 시스템 부트 시퀀스의 일 실시예의 펌웨어와 마이크로코드 엘리먼트들 사이에서 통과하는 데이터 및 메시지를 나타내는 시퀀스도이다. 일 실시예에서, 1002에 도시된 바와 같이, 패키지 유닛 펌웨어(1000)에 의해 실행되는 펌웨어 인터페이스 명령어들의 세트는 초기화 BSP(bootstrap processor) 메시지를 BSP(1020)가 되도록 선택된 작은 코어 프로세서에 보낸다. 그 후, 시스템에 보이게 될 남아 있는 작은 코어 애플리케이션 프로세서들(1040)을 인에이블하도록 진행할 때, 패키지 유닛(1000)은 BSP(1020)에 대한 마이크로코드 업데이트 및 로드(1004) 트리거를 트리거한다. 마이크로코드 업데이트를 포함하는 초기화 랑데부 시퀀스(1024)는 시스템에 보이는 각 작은 코어 애플리케이션 프로세서(1040)에 보내지고, 이는 각 작은 코어 AP로 하여금 랑데부 상태로 진입하게 한다.
랑데부 상태에서, 멀티 코어 또는 멀티 프로세서 시스템의 각 프로세서 코어는, 초기화를 관리하거나, 또는 시스템의 모든 프로세서들에 대해 에러 핸들링을 수행할 수 있는, 싱글 코어 또는 프로세서를 제어하는 것을 그만둔다. BSP(1020)로부터 초기화 랑데부 시퀀스(1024)를 수신하는 것에 응답하여, 보이는 작은 코어 애플리케이션 프로세서들(1040)은 마이크로코드 업데이트 랑데부 시퀀스(1046)로 진입하여, 각 프로세서에 대한 마이크로코드의 실행을 로딩한다. 일단 초기화되면, 각 작은 코어 AP(1040)는 수신 확인 메시지(1035)를 BSP(1020)에 보내고, 그 후 시스템 보임 아이들 상태(system visible idle state)(1048)(예를 들면, 표준 C6 모드)에 진입한다.
작은 코어 애플리케이션 프로세서들의 초기화와 동시에, BSP(1020)는 초기화 랑데부 시퀀스(1026)를 하나 이상의 숨겨진 큰 코어 애플리케이션 프로세서(1060)에 보낸다. 하나 이상의 큰 코어 애플리케이션 프로세서(1060)는 마이크로코드 업데이트 랑데부 상태(1068)에 진입하여, 각 큰 코어(1060)에 대한 마이크로코드를 로딩한다. 하나 이상의 큰 코어 애플리케이션 프로세서(1060)는, 완료할 때, 수신 확인 메시지(1055)를 BSP(1020)에 보내고, 마스크형 C6 아이들 상태(1070)에 진입하며, 여기에서 큰 코어 애플리케이션 프로세서(1060)는 펌웨어 인터페이스 및 OS에 보이지 않는다. 일단 모드 코어가 초기화되면, BSP(1020)는, 모든 코어가 초기화되었고(1010), 시스템은 OS를 로딩할 준비가 되었다는 것을 패키지 유닛(1000)에 통지한다. 일 실시예에서, OS는 이종 프로세싱 시스템을 인식하고, OS 초기화 시에, 큰 코어 애플리케이션 프로세서(1060)는 OS에 보이게 되고, 작은 코어 애플리케이션 프로세서들(1040)과 함께 코어 스위치 오프레이션들에 대해 이용가능하다. 일 실시예에서, OS는 이종 프로세싱 시스템을 인식하지 못하고, 이종 프로세싱 시스템은, OS의 지시 없이, 큰 코어 애플리케이션 프로세서를 투명하게 이용할 수 있다.
도 11a-b는 본 발명의 일 실시예가, 필요한 경우, 작은 코어를 큰 코어와 투명하게 스왑하는 방법을 예시한다. 일 실시예에서, 이종성을 시스템 펌웨어 인터페이스로부터 숨기는 것과, 모든 이종성-인식 로직 및 휴리스틱스들을 프로세서 내에 통합하는 것은, 이종성에 대한 투명한 지원을 가능하게 한다. 종래의 CPU에서, 코어들에 대한 태스크들의 할당은 소프트웨어에 의해(통상적으로 OS에 의해) 배타적으로 행해진다. 그러나, 일 실시예에서, 이러한 할당은 두 부분으로 분리된다. 소프트웨어는 프로세서에 의해 노출된 순종 "가상 코어들"에 대해 소프트웨어 프로세스들을 스케줄하는 것을 계속하는 한편, 하드웨어는 어느 물리적 코어 타입이 주어진 가상 코어를 구현할지를 동적으로 선택한다. 소프트웨어 스케줄링 알고리즘들은, 작업을 계속하기 위한 스루풋, 성능, 또는 그외의 메트릭을 최대화하도록 의도되지만, 하드웨어는 최적화의 또 다른 (투명한) 레이어를 수행하며, 여기에서, 각 가상 코어 상에서 구동되고 있는 프로세스들/스레드들은 그 가상 코어 상에서 구동되고 있는 작업 부하의 타입에 어느 물리적 코어가 가장 적합한지에 대해 지시받는다.
도 11a에 예시된 바와 같이, 프로세서 하드웨어는 다수의 이종 물리적 코어들 PC0-PC4(1150)을 포함하며, 이것은 작은 코어들 PC0-PC3의 세트 및 하나의 큰 코어(PC4)를 포함한다. 이 실시예에서, 순종 가상 코어들 VC0-VC3(1106)은 소프트웨어에 노출된다. 시스템 내의 다양한 물리적 코어 타입들에도 불구하고, 가상 코어들은 각각 싱글 타입의 코어로서 제공되며; 이 경우, 작은 코어 타입이다. 결과적으로, (OS의 일부일 수 있는) 소프트웨어 기반 스케줄러(1110)는, 반드시 그것이 진정한 순종 멀티 코어 프로세서 또는 멀티 프로세서 시스템 내에 있는 것처럼, 노출된 순종 가상 코어들(1106) 각각에 대해 실행을 위한 스레드들(1101)을 스케줄한다. 가상-물리(V-P) 맵핑 로직(1130)은 맵핑 규칙들(1140)의 세트에 따라, 그리고 현재 검출된 컨디션들(1141)에 기초하여 각 가상 코어(1120)를 하나 이상의 적합한 물리적 코어(1150)에 맵핑한다. 전술한 바와 같이, 맵핑 결정은, 소프트웨어, 하드웨어, 펌웨어, 또는 그의 임의의 조합으로 구현될 수 있는, 맵핑 결정 로직(1109)에 의해 수행될 수 있다.
일 실시예에서, 가상 코어들(1106)과 작은 코어들 PC0-PC3 사이의 디폴트 1:1 맵핑이 제공된다. 결과적으로, 작은 코어들 PC0-PC3은 효과적으로 소프트웨어 기반 스케줄러에 보이게 된다. 일 실시예에서, 시스템이 (지정된 임계치 아래의) 낮은 이용을 가질 때 및/또는 대부분의 작은 코어들이 바쁠 때(예를 들면, 지정된 임계치를 넘는 높은 프로세싱 부하를 가질 때), 이러한 디폴트 맵핑은 유지된다. 예를 들면, 일 실시예에서, 시스템이 낮은 이용을 가질 때(예를 들면, 어느 코어도 60%를 초과하는 활동을 하지 않을 때) 또는 대부분의 작은 코어들이 바쁠 때(예를 들면, 전체 이용가능한 코어들 중 75% 넘는 코어가 60%를 초과하는 활동을 할 때), 이러한 디폴트 맵핑은 유지된다.
그러나, 일 실시예에서, 시스템이 (예를 들면, 모든 이용가능한 코어들 중 50%를 넘는) 많은 수의 아이들 코어들 및 (하나 이상의) 적은 수의 과도하게 부하가 걸린 매우 활성인 코어를 가질 때, 그 후 맵핑 결정 로직(1109)에 의해 구현된 휴리스틱은 자동적으로, 도 11b에 예시된 바와 같이, 맵핑들을 변경한다. 여기에서, 두 개의 스레드(1101)만이 가상 코어들 VC1 및 VC2에 대해 스케줄러(1110)에 의해 스케줄되고 있고, 가상 코어들 중 적어도 하나(이 예시에서는 VC2)가 지정된 임계치를 넘어 활동하고 있다. 결과적으로, 이 예에서, V-P 코어 맵핑 로직(1130)은, 맵핑 결정 로직(1109)에 의해 제공된 맵핑 결정에 응답하여, 가상 코어 VC2를 작은 물리적 코어 PC2로부터 큰 물리적 코어 PC4로 재맵핑한다.
본원에 개시된 바와 같이, 명령어들은, 특정 오퍼레이션들을 수행하도록 구성되는, 또는 미리 결정된 기능성을 갖는 ASIC(application specific integrated circuit)들과 같은 하드웨어의 특정 구성들, 또는 비일시적 컴퓨터 판독가능 매체로 구현된 메모리에 저장된 소프트웨어 명령어들을 지칭할 수 있다. 따라서, 도면들에 도시된 기법들은 하나 이상의 전자 디바이스(예를 들면, 엔드 스테이션(end station), 네트워크 엘리먼트 등) 상에 저장되고 실행되는 코드 및 데이터를 이용하여 구현될 수 있다. 그러한 전자 디바이스들은, 비일시적 컴퓨터 머신-판독가능한 저장 매체(예를 들면, 자기 디스크들, 광학 디스크들, 랜덤 액세스 메모리, 판독 전용 메모리, 플래시 메모리 디바이스들, 상 변화 메모리) 및 일시적 컴퓨터 머신-판독가능 통신 매체(예를 들면, 전기, 광학, 음향, 또는 그외의 형태의 전파형 신호들 - 예를 들면, 반송파들, 적외선 신호들, 디지털 신호들 등)과 같은, 컴퓨터 머신-판독가능한 매체를 이용하여 코드 및 데이터를 (내부적으로 및/또는 네트워크를 통해 그외의 전자 디바이스들과) 저장하고 통신한다.
또한, 그러한 전자 디바이스들은 일반적으로, 하나 이상의 저장 디바이스들(비일시적 머신-판독가능 저장 매체), 사용자 입력/출력 디바이스들(예를 들면, 키보드, 터치 스크린, 및/또는 디스플레이), 및 네트워크 접속들과 같은, 하나 이상의 그외의 컴포넌트에 연결되는 하나 이상의 프로세서의 세트를 포함한다. 프로세서들과 그외의 컴포넌트들의 커플링은 일반적으로 하나 이상의 버스 및 브릿지(또한 버스 컨트롤러들로서 칭해짐)를 통한다. 저장 디바이스, 및 네트워크 트래픽을 운반하는 신호들은 각각 하나 이상의 머신-판독가능한 저장 매체 및 머신-판독가능한 통신 매체를 나타낸다.
따라서, 주어진 전자 디바이스의 저장 디바이스는 일반적으로 그 전자 디바이스의 하나 이상의 프로세서의 세트 상에서의 실행을 위한 코드 및/또는 데이터를 저장한다. 물론, 본 발명의 실시예의 하나 이상의 부분이 소프트웨어, 펌웨어 및/또는 하드웨어의 상이한 조합들을 이용하여 구현될 수 있다. 상세한 설명 전체에 걸쳐, 설명의 목적으로, 다수의 특정 상세들이 본 발명의 철저한 이해를 제공하기 위해 설명되었다. 그러나, 당업자라면, 본 발명이 그러한 특정 상세들 중 일부 없이도 실시될 수 있다는 것을 알 것이다. 특정 예들에서, 공지된 구조들 및 기능들은 본 발명의 청구 대상을 모호하게 하지 않기 정성들여 상세히 설명되지 않았다. 따라서, 본 발명의 범위 및 사상은 이하의 특허청구범위의 관점에서 판단되어야만 한다.

Claims (25)

  1. 제1 명령어 세트 및 제1 전력 소모 레벨을 갖고, 제1 성능 레벨에서 스레드(thread)를 실행하는 제1 물리적 코어;
    제2 명령어 세트 및 제2 전력 소모 레벨을 갖고, 제2 성능 레벨에서 스레드를 실행하는 제2 물리적 코어 - 상기 제1 및 제2 코어들은 동적 멀티-코어 유닛 내에 있음 -; 및
    상기 제1 및 제2 물리적 코어들에 연결되고, 상기 제1 물리적 코어를 가상 코어를 통해 시스템 펌웨어 인터페이스에 맵핑하고 상기 제2 물리적 코어를 상기 시스템 펌웨어 인터페이스로부터 숨기는 가상-물리(V-P) 맵핑 회로
    를 포함하는 프로세서.
  2. 제1항에 있어서,
    상기 제1 명령어 세트 및 상기 제1 전력 소비 레벨을 갖는 제3 물리적 코어를 더 포함하고, 상기 V-P 맵핑 회로는 제1 가상 코어를 상기 제1 물리적 코어에 맵핑하고 제2 가상 코어를 상기 제3 물리적 코어에 맵핑하여, 스레드들의 세트가 상기 제1 및 제3 물리적 코어들에 걸쳐 병렬로 실행되게 하는 프로세서.
  3. 제2항에 있어서,
    상기 V-P 맵핑 회로는, 실행되고 있는 상기 스레드들의 세트와 연관된 검출된 특성들에 응답하여 상기 펌웨어 인터페이스에 대해 투명하게(transparently) 상기 제2 가상 코어를 상기 제2 물리적 코어에 맵핑하는 프로세서.
  4. 제3항에 있어서,
    상기 제1 전력 소모 레벨은 상기 제2 전력 소모 레벨보다 더 낮은 프로세서.
  5. 제4항에 있어서,
    상기 제2 성능 레벨은 상기 제1 성능 레벨보다 더 높은 프로세서.
  6. 제5항에 있어서,
    상기 제2 물리적 코어는 상기 V-P 맵핑 회로가 상기 가상 코어들 중 하나 이상의 가상 코어를 상기 제2 물리적 코어에 맵핑함으로써 소프트웨어에 액세스 가능하게 되는 프로세서.
  7. 제1항에 있어서,
    싱글 물리적 코어는 부트스트랩(bootstrap) 프로세서로서 동작하는 프로세서.
  8. 제7항에 있어서,
    상기 제1 물리적 코어는 상기 부트스트랩 프로세서로서 동작하는 프로세서.
  9. 제8항에 있어서,
    상기 부트스트랩 프로세서는 상기 제2 물리적 코어를 초기화하는 프로세서.
  10. 하나 이상의 작은 물리적 프로세서 코어들의 세트를 제공하는 단계;
    상기 작은 물리적 프로세서 코어들에 비해 상대적으로 더 높은 성능 프로세싱 능력들 및 상대적으로 더 높은 전력 사용량을 갖는 적어도 하나의 큰 물리적 프로세서 코어를 제공하는 단계;
    둘 이상의 작은 물리적 프로세서 코어들의 세트를 시스템 펌웨어 인터페이스에 노출시키는 단계; 및
    상기 적어도 하나의 큰 물리적 프로세서 코어를 상기 시스템 펌웨어 인터페이스로부터 숨기는 단계
    를 포함하는 방법.
  11. 제10항에 있어서,
    스레드를 제1 작은 물리적 프로세서 코어로부터 큰 물리적 프로세서 코어로 동적으로 스와핑(swapping)하여, 상기 스레드들이 상기 큰 물리적 프로세서 코어 상에서 실행되게 하는 단계를 더 포함하고, 상기 스와핑은 상기 스레드에 대해 투명한(transparent) 방법.
  12. 제10항에 있어서,
    상기 작은 물리적 프로세서 코어들의 세트로부터 작은 물리적 프로세서 코어를 부트스트랩 프로세서로서 지명하는 단계;
    상기 부트스트랩 프로세서에 의해, 상기 작은 물리적 코어들의 세트의 각 프로세서를 초기화하는 단계; 및
    상기 부트스트랩 프로세서에 의해, 상기 적어도 하나의 큰 물리적 코어를 초기화하는 단계를 더 포함하는 방법.
  13. 제12항에 있어서,
    상기 작은 물리적 프로세서 코어들은 가상 프로세서들과 작은 물리적 프로세서 코어들 사이의 디폴트 맵핑(default mapping)을 통해 소프트웨어에 노출되는 방법.
  14. 제13항에 있어서,
    상기 적어도 하나의 큰 물리적 프로세서 코어는 하나 이상의 가상 코어를 상기 큰 물리적 프로세서 코어들에 투명하게 맵핑함으로써 운영 체제에 액세스 가능하게 되고, 상기 시스템 펌웨어 인터페이스로부터 숨겨지는 방법.
  15. 제14항에 있어서,
    상기 큰 물리적 프로세서는 다수의 명령어 세트들을 갖는 프로세서 코어들에 대한 지원을 갖는 운영 체제에 보이는(visible) 방법.
  16. 작은 물리적 프로세서 코어들의 세트;
    상기 작은 물리적 프로세서 코어들에 비해 상대적으로 더 높은 성능 프로세싱 능력들 및 상대적으로 더 높은 전력 사용량을 갖는 하나 이상의 큰 물리적 프로세서 코어;
    대응하는 가상 코어들의 세트를 통해 시스템 펌웨어 인터페이스에 상기 작은 물리적 프로세서 코어들의 세트를 노출시키고, 상기 적어도 하나의 큰 물리적 프로세서 코어를 상기 시스템 펌웨어로부터 숨기는 가상-물리(V-P) 맵핑 로직; 및
    상기 작은 물리적 프로세서 코어들의 세트로부터 선택된 부트스트랩 프로세서를 지명하고 초기화하는 패키지 유닛
    을 포함하는 시스템.
  17. 제16항에 있어서,
    상기 V-P 맵핑 회로는 각 가상 코어를 상기 작은 물리적 프로세서 코어들의 세트 내의 물리적 코어에 맵핑하여, 스레드들의 제1 세트가 상기 작은 물리적 프로세서 코어들에 걸쳐 병렬로 실행되게 하는 시스템.
  18. 제17항에 있어서,
    상기 물리적 프로세서 코어들 중 하나로부터 선택된 부트스트랩 프로세서를 더 포함하고, 상기 부트스트랩 프로세서는, 상기 작은 물리적 코어들의 세트의 각 프로세서를 초기화하고, 상기 적어도 하나의 큰 물리적 코어를 초기화하는 시스템.
  19. 제18항에 있어서,
    상기 적어도 하나의 큰 물리적 코어는 마스크형 아이들 상태(masked idle state)를 포함하고, 상기 적어도 하나의 큰 물리적 코어가 상기 마스크형 아이들 상태에 있을 때 상기 적어도 하나의 큰 물리적 코어는 가상 코어에 맵핑되지 않는 시스템.
  20. 제19항에 있어서,
    상기 부트스트랩 프로세서는 작은 물리적 코어인 시스템.
  21. 하나 이상의 작은 물리적 프로세서 코어들의 세트를 제공하는 수단;
    상기 작은 물리적 프로세서 코어들에 비해 상대적으로 더 높은 성능 프로세싱 능력들 및 상대적으로 더 높은 전력 사용량을 갖는 적어도 하나의 큰 물리적 프로세서 코어를 제공하는 수단;
    두 개 이상의 작은 물리적 프로세서 코어들의 세트를 시스템 펌웨어 인터페이스에 노출시키는 수단; 및
    상기 적어도 하나의 큰 물리적 프로세서 코어를 상기 시스템 펌웨어 인터페이스로부터 숨기는 수단
    을 포함하는 장치.
  22. 제1 명령어 세트 및 제1 전력 소모 레벨을 갖고, 제1 성능 레벨에서 스레드를 실행하는 제1 물리적 코어;
    제2 명령어 세트 및 제2 전력 소모 레벨을 갖고, 제2 성능 레벨에서 스레드를 실행하는 제2 물리적 코어;
    상기 제1 명령어 세트 및 상기 제1 전력 소모 레벨을 갖고, 상기 제1 성능 레벨에서 스레드를 실해하는 제3 물리적 코어 - 상기 제1, 제2, 및 제3 물리적 코어들은 동적 멀티-코어 유닛 내에 있음 -; 및
    상기 제1, 제2, 및 제3 물리적 코어들에 연결된 가상-물리(V-P) 맵핑 회로
    를 포함하고,
    상기 V-P 맵핑 회로는,
    상기 제1 물리적 코어를 제1 가상 코어를 통해 시스템 펌웨어 인터페이스에 맵핑하고,
    상기 제2 물리적 코어를 상기 시스템 펌웨어 인터페이스로부터 숨기고,
    상기 제3 물리적 코어를 제2 가상 코어를 통해 상기 시스템 펌웨어 인터페이스에 맵핑하여, 스레드들의 세트가 상기 제1 및 제3 물리적 코어들에 걸쳐 병렬로 실행되게 하고,
    실행되고 있는 상기 스레드들의 세트와 연관된 검출된 특성들에 응답하여 상기 펌웨어 인터페이스에 대해 투명하게 상기 제2 가상 코어를 상기 제2 물리적 코어에 맵핑하는 프로세서.
  23. 제22항에 있어서,
    상기 제1 전력 소모 레벨은 상기 제2 전력 소모 레벨보다 더 낮고, 상기 제2 성능 레벨은 상기 제1 성능 레벨보다 더 높은 프로세서.
  24. 제22항에 있어서,
    상기 제2 물리적 코어는 상기 V-P 맵핑 회로가 상기 가상 코어들 중 하나 이상의 가상 코어를 상기 제2 물리적 코어에 맵핑함으로써 소프트웨어에 액세스 가능하게 되는 프로세서.
  25. 제22항에 있어서,
    상기 프로세서의 싱글 물리적 코어는 부트스트랩 프로세서로서 동작하는 프로세서.
KR1020140031255A 2013-03-15 2014-03-17 이종 시스템을 부팅하고 대칭적 코어 뷰를 제공하는 방법 KR101773229B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361801615P 2013-03-15 2013-03-15
US61/801,615 2013-03-15
US13/854,001 2013-03-29
US13/854,001 US9727345B2 (en) 2013-03-15 2013-03-29 Method for booting a heterogeneous system and presenting a symmetric core view

Publications (2)

Publication Number Publication Date
KR20140113600A true KR20140113600A (ko) 2014-09-24
KR101773229B1 KR101773229B1 (ko) 2017-08-31

Family

ID=51534015

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140031255A KR101773229B1 (ko) 2013-03-15 2014-03-17 이종 시스템을 부팅하고 대칭적 코어 뷰를 제공하는 방법

Country Status (7)

Country Link
US (2) US9727345B2 (ko)
JP (1) JP5945292B2 (ko)
KR (1) KR101773229B1 (ko)
CN (1) CN104503830B (ko)
BR (1) BR102014006299A8 (ko)
DE (1) DE102014003798B4 (ko)
GB (2) GB2514236B (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9465432B2 (en) 2013-08-28 2016-10-11 Via Technologies, Inc. Multi-core synchronization mechanism
US9588572B2 (en) 2013-08-28 2017-03-07 Via Technologies, Inc. Multi-core processor having control unit that generates interrupt requests to all cores in response to synchronization condition
US9792112B2 (en) 2013-08-28 2017-10-17 Via Technologies, Inc. Propagation of microcode patches to multiple cores in multicore microprocessor
US9600551B2 (en) * 2013-10-24 2017-03-21 Sap Se Coexistence of message-passing-like algorithms and procedural coding
US9507649B2 (en) * 2014-05-29 2016-11-29 Apple Inc. Web browser for spoofing supported features
WO2016134784A1 (en) * 2015-02-27 2016-09-01 Huawei Technologies Co., Ltd. Systems and methods for heterogeneous computing application programming interfaces (api)
US20170052799A1 (en) * 2015-08-21 2017-02-23 Microchip Technology Incorporated Integrated Circuit Device With Selectable Processor Core
US20170160782A1 (en) * 2015-12-07 2017-06-08 Mediatek Inc. Share power source mechanism in a multicore processor system
US10354033B2 (en) * 2016-10-18 2019-07-16 Intel Corporation Mapping application functional blocks to multi-core processors
CN108460282A (zh) * 2017-02-22 2018-08-28 北京大学 一种基于异构多核芯片的计算机安全启动方法
US10599442B2 (en) * 2017-03-02 2020-03-24 Qualcomm Incorporated Selectable boot CPU
US10510133B2 (en) * 2017-06-20 2019-12-17 Think Silicon Sa Asymmetric multi-core heterogeneous parallel processing system
US20190004816A1 (en) * 2017-06-29 2019-01-03 Dell Products L.P. Systems and methods for heterogeneous system on a chip servers
WO2019056358A1 (en) * 2017-09-25 2019-03-28 Intel Corporation EFFICIENT MEMORIZATION OF COMPUTER PROCESSOR DATA STRUCTURES IN COMPUTER MACHINE
KR102623918B1 (ko) * 2017-12-25 2024-01-11 인텔 코포레이션 프리-메모리 초기화 멀티스레드 병렬 컴퓨팅 플랫폼
CN108228189B (zh) * 2018-01-15 2020-07-28 西安交通大学 一种隐藏异构编程多线程的关联结构及基于其的映射方法
CN109947569B (zh) * 2019-03-15 2021-04-06 Oppo广东移动通信有限公司 绑定核心的方法、装置、终端及存储介质
US11842202B2 (en) * 2019-10-25 2023-12-12 Intel Corporation Apparatus and method for dynamic selection of an optimal processor core for power-up and/or sleep modes
US20220058029A1 (en) * 2020-08-24 2022-02-24 Intel Corporation Energy-efficient core voltage selection apparatus and method

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4377000A (en) * 1980-05-05 1983-03-15 Westinghouse Electric Corp. Automatic fault detection and recovery system which provides stability and continuity of operation in an industrial multiprocessor control
US5440752A (en) 1991-07-08 1995-08-08 Seiko Epson Corporation Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU
US5642506A (en) 1994-12-14 1997-06-24 International Business Machines Corporation Method and apparatus for initializing a multiprocessor system
WO1996035177A1 (en) 1995-05-01 1996-11-07 Apple Computer, Inc. A modular system utilizing interchangeable processor cards
JP3005499B2 (ja) 1997-06-26 2000-01-31 日本電気アイシーマイコンシステム株式会社 図形処理装置及び図形処理方法
JP3497988B2 (ja) 1998-04-15 2004-02-16 株式会社ルネサステクノロジ 図形処理装置及び図形処理方法
US6341347B1 (en) 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6970992B2 (en) 1999-10-04 2005-11-29 Intel Corporation Apparatus to map virtual pages to disparate-sized, non-contiguous real pages and methods relating thereto
US7233998B2 (en) 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US7996839B2 (en) 2003-07-16 2011-08-09 Hewlett-Packard Development Company, L.P. Heterogeneous processor core systems for improved throughput
US7873776B2 (en) 2004-06-30 2011-01-18 Oracle America, Inc. Multiple-core processor with support for multiple virtual processors
US9264384B1 (en) 2004-07-22 2016-02-16 Oracle International Corporation Resource virtualization mechanism including virtual host bus adapters
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
US9058292B2 (en) 2004-12-29 2015-06-16 Intel Corporation System and method for one step address translation of graphics addresses in virtualization
US7353410B2 (en) 2005-01-11 2008-04-01 International Business Machines Corporation Method, system and calibration technique for power measurement and management over multiple time frames
US7600135B2 (en) 2005-04-14 2009-10-06 Mips Technologies, Inc. Apparatus and method for software specified power management performance using low power virtual threads
US7490254B2 (en) 2005-08-02 2009-02-10 Advanced Micro Devices, Inc. Increasing workload performance of one or more cores on multiple core processors
US7461275B2 (en) 2005-09-30 2008-12-02 Intel Corporation Dynamic core swapping
US7516301B1 (en) 2005-12-16 2009-04-07 Nvidia Corporation Multiprocessor computing systems with heterogeneous processors
US7802073B1 (en) 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
US7272517B1 (en) 2006-04-25 2007-09-18 International Business Machines Corporation Method and system for providing performance estimations for a specified power budget
US7822941B2 (en) 2006-06-05 2010-10-26 Oracle America, Inc. Function-based virtual-to-physical address translation
US7904676B2 (en) * 2007-04-30 2011-03-08 Hewlett-Packard Development Company, L.P. Method and system for achieving varying manners of memory access
US8225315B1 (en) * 2007-07-23 2012-07-17 Oracle America, Inc. Virtual core management
US7818500B2 (en) * 2007-11-01 2010-10-19 Pubali Ray Apparatus and method for using one core for RAID control in multi-core CPU
US8010822B2 (en) * 2008-03-28 2011-08-30 Microsoft Corporation Power-aware thread scheduling and dynamic use of processors
US20090309243A1 (en) 2008-06-11 2009-12-17 Nvidia Corporation Multi-core integrated circuits having asymmetric performance between cores
US8214675B2 (en) * 2008-12-08 2012-07-03 Lenovo (Singapore) Pte. Ltd. Apparatus, system, and method for power management utilizing multiple processor types
US9507640B2 (en) 2008-12-16 2016-11-29 International Business Machines Corporation Multicore processor and method of use that configures core functions based on executing instructions
US8122269B2 (en) * 2009-01-07 2012-02-21 International Business Machines Corporation Regulating power consumption in a multi-core processor by dynamically distributing power and processing requests by a managing core to a configuration of processing cores
US8930953B2 (en) 2009-01-16 2015-01-06 International Business Machines Corporation Dynamic checking of hardware resources for virtual environments
US8386747B2 (en) 2009-06-11 2013-02-26 Freescale Semiconductor, Inc. Processor and method for dynamic and selective alteration of address translation
US8400458B2 (en) 2009-09-09 2013-03-19 Hewlett-Packard Development Company, L.P. Method and system for blocking data on a GPU
US8650426B2 (en) * 2009-12-16 2014-02-11 Qualcomm Incorporated System and method for controlling central processing unit power in a virtualized system
US8386749B2 (en) 2010-03-16 2013-02-26 Advanced Micro Devices, Inc. Address mapping in virtualized processing system
US8898664B2 (en) * 2010-06-01 2014-11-25 Microsoft Corporation Exposure of virtual cache topology to a guest operating system
US8869164B2 (en) 2010-09-02 2014-10-21 International Business Machines Corporation Scheduling a parallel job in a system of virtual containers
US8943334B2 (en) 2010-09-23 2015-01-27 Intel Corporation Providing per core voltage and frequency control
US9268611B2 (en) 2010-09-25 2016-02-23 Intel Corporation Application scheduling in heterogeneous multiprocessor computing platform based on a ratio of predicted performance of processor cores
US8418177B2 (en) 2010-10-01 2013-04-09 Microsoft Corporation Virtual machine and/or multi-level scheduling support on systems with asymmetric processor cores
US9092219B2 (en) 2010-11-02 2015-07-28 Advanced Micro Devices, Inc. Method and system of sampling to automatically scale digital power estimates with frequency
US8861434B2 (en) 2010-11-29 2014-10-14 Alcatel Lucent Method and system for improved multi-cell support on a single modem board
US9286257B2 (en) 2011-01-28 2016-03-15 Qualcomm Incorporated Bus clock frequency scaling for a bus interconnect and related devices, systems, and methods
US20130246825A1 (en) 2011-03-25 2013-09-19 Research In Motion Limited Method and system for dynamically power scaling a cache memory of a multi-core processing system
US8793686B2 (en) * 2011-06-08 2014-07-29 Microsoft Corporation Operating system decoupled heterogeneous computing
KR102082241B1 (ko) 2011-09-06 2020-02-27 인텔 코포레이션 전력 효율적 프로세서 아키텍처
TW201319827A (zh) * 2011-11-04 2013-05-16 Inventec Corp 執行多重作業系統的方法及電子裝置
US9442773B2 (en) 2011-11-21 2016-09-13 Qualcomm Incorporated Thermally driven workload scheduling in a heterogeneous multi-processor system on a chip
US20130155081A1 (en) 2011-12-15 2013-06-20 Ati Technologies Ulc Power management in multiple processor system
US9304570B2 (en) 2011-12-15 2016-04-05 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including power and performance workload-based balancing between multiple processing elements
US9372524B2 (en) 2011-12-15 2016-06-21 Intel Corporation Dynamically modifying a power/performance tradeoff based on processor utilization
US20130160003A1 (en) 2011-12-19 2013-06-20 Vmware, Inc. Managing resource utilization within a cluster of computing devices
US9720730B2 (en) 2011-12-30 2017-08-01 Intel Corporation Providing an asymmetric multicore processor system transparently to an operating system
WO2013162589A1 (en) 2012-04-27 2013-10-31 Intel Corporation Migrating tasks between asymmetric computing elements of a multi-core processor
US9009508B2 (en) * 2012-08-28 2015-04-14 Advanced Micro Devices, Inc. Mechanism for reducing interrupt latency and power consumption using heterogeneous cores
US9524012B2 (en) 2012-10-05 2016-12-20 Dell Products L.P. Power system utilizing processor core performance state control
US9672046B2 (en) * 2012-12-28 2017-06-06 Intel Corporation Apparatus and method for intelligently powering heterogeneous processor components
US9448829B2 (en) 2012-12-28 2016-09-20 Intel Corporation Hetergeneous processor apparatus and method
US9639372B2 (en) * 2012-12-28 2017-05-02 Intel Corporation Apparatus and method for heterogeneous processors mapping to virtual cores
US9329900B2 (en) 2012-12-28 2016-05-03 Intel Corporation Hetergeneous processor apparatus and method
KR102055622B1 (ko) 2013-01-10 2020-01-23 삼성디스플레이 주식회사 평판 표시 장치 및 평판 표시 장치의 구동 방법

Also Published As

Publication number Publication date
JP2014225242A (ja) 2014-12-04
US20140281457A1 (en) 2014-09-18
GB2514236B (en) 2017-02-15
GB201404549D0 (en) 2014-04-30
BR102014006299A8 (pt) 2018-05-29
DE102014003798B4 (de) 2023-07-13
GB2514236A (en) 2014-11-19
CN104503830A (zh) 2015-04-08
JP5945292B2 (ja) 2016-07-05
CN104503830B (zh) 2018-05-22
GB2547769B (en) 2018-04-25
US20180060078A1 (en) 2018-03-01
BR102014006299A2 (pt) 2015-11-03
US9727345B2 (en) 2017-08-08
US10503517B2 (en) 2019-12-10
KR101773229B1 (ko) 2017-08-31
DE102014003798A1 (de) 2014-09-18
GB201700245D0 (en) 2017-02-22
GB2547769A (en) 2017-08-30

Similar Documents

Publication Publication Date Title
KR101773229B1 (ko) 이종 시스템을 부팅하고 대칭적 코어 뷰를 제공하는 방법
EP3274816B1 (en) User-level fork and join processors, methods, systems, and instructions
KR101673435B1 (ko) 공동 설계 프로세서에서 격리된 실행 환경의 생성
KR101738212B1 (ko) 명령어 에뮬레이션 프로세서, 방법, 및 시스템
KR102262176B1 (ko) 예외로부터 리턴할 때 마스크 불가능 인터럽트의 조기 인에이블링의 회피
US10127039B2 (en) Extension of CPU context-state management for micro-architecture state
KR101804677B1 (ko) 트랜잭션적인 전력 관리를 수행하기 위한 하드웨어 장치들 및 방법들
KR20200138439A (ko) 인터럽트들의 세트들을 구성하는 장치 및 방법
US10949207B2 (en) Processor core supporting a heterogeneous system instruction set architecture
WO2017172220A1 (en) Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga
CN113535245A (zh) 用于更快的启动过程的多处理器启动流程的方法、系统和设备
US10771554B2 (en) Cloud scaling with non-blocking non-spinning cross-domain event synchronization and data communication
WO2019133172A1 (en) Processor, method, and system for reducing latency in accessing remote registers
US10877765B2 (en) Apparatuses and methods to assign a logical thread to a physical thread
US9684541B2 (en) Method and apparatus for determining thread execution parallelism
US20160266901A1 (en) Apparatus and method for efficient register allocation and reclamation
US11775336B2 (en) Apparatus and method for performance state matching between source and target processors based on interprocessor interrupts
US20220413860A1 (en) System, Apparatus And Methods For Minimum Serialization In Response To Non-Serializing Register Write Instruction
Asri et al. The Non-Uniform Compute Device (NUCD) Architecture for Lightweight Accelerator Offload

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
E902 Notification of reason for refusal
GRNT Written decision to grant