KR20230075480A - 동적으로 구성가능한 오버프로비저닝된 마이크로프로세서 - Google Patents

동적으로 구성가능한 오버프로비저닝된 마이크로프로세서 Download PDF

Info

Publication number
KR20230075480A
KR20230075480A KR1020237013547A KR20237013547A KR20230075480A KR 20230075480 A KR20230075480 A KR 20230075480A KR 1020237013547 A KR1020237013547 A KR 1020237013547A KR 20237013547 A KR20237013547 A KR 20237013547A KR 20230075480 A KR20230075480 A KR 20230075480A
Authority
KR
South Korea
Prior art keywords
computing resources
microprocessor
physical computing
pipeline
provisioned
Prior art date
Application number
KR1020237013547A
Other languages
English (en)
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 KR20230075480A publication Critical patent/KR20230075480A/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/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/505Allocation 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 the load
    • 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/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • 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/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

동적으로 구성가능한 오버프로비저닝된 마이크로프로세서는 다양한 상이한 컴퓨팅 애플리케이션 워크로드를 최적으로 지원하고 범용 마이크로프로세서 설계를 사용하여 컴퓨팅 애플리케이션별로 컴퓨팅 성능, 에너지 소비 및 클록 주파수를 절충할 수 있는 기능을 제공한다. 일부 구현예에서 오버프로비저닝된 마이크로프로세서는 물리적 컴퓨팅 리소스와 동적 구성 로직을 포함하며, 동적 구성 로직은 활성화 보증 동작 조건을 검출하고 활성화 보증 동작 조건을 검출하는 것에 응답하여 물리적 컴퓨팅 리소스를 언다크닝하고; 구성 보증 동작 조건을 검출하고; 및 구성 보증 동작 조건을 검출하는 것에 응답하여 언다크닝된 물리적 컴퓨팅 리소스를 사용하도록 오버프로비저닝된 마이크로프로세서를 구성하도록 구성된다.

Description

동적으로 구성가능한 오버프로비저닝된 마이크로프로세서
본 출원은 소비자-등급 개인 컴퓨팅 디바이스들 및 엔터프라이즈급-등급 서버 컴퓨터들의 중앙 처리 장치들(CPU)과 같은 범용 마이크로프로세서들에 관한 것이다. 보다 구체적으로, 일부 구현예들은 동적으로 구성가능한(dynamically configurable) 오버프로비저닝된(overprovisioned) 마이크로프로세서들과 관련이 있다.
최근까지 상보성 금속산화물 반도체(Complementary Metal-Oxide Semiconductor) 기술에 대한 스케일링은 끊임없이 진행되어 왔다. 이 기간 동안, 모스 전계 효과 트랜지스터들(MOSFET)은 무어의 법칙(Moore's law)에 따라 더 작아지고 트랜지스터 밀도가 증가했다. 그러나 데나드의 스케일링 법칙(Dennard's scaling law)에 따라 트랜지스터당 동적 스위칭 전력 소비도 감소했다. 이를 통해 단일 코어 마이크로프로세서 칩 설계자들과 제조업체들은 전체 전력 밀도를 크게 증가하지 않고 한 마이크로프로세서 세대부터 다음 세대로 클록 주파수(clock frequency)들을 높일 수 있었다.
최근, 트랜지스터들의 크기는 단일 코어 마이크로프로세서들에 대한 데나드 스케일링의 한계에 도달하는 지점까지 감소되었다. 특히, 작은 트랜지스터 크기들(예를 들어 65 나노미터 미만)에서 증가된 전류 누설 및 증가된 전력 밀도는 칩 자체를 파괴하는 열 폭주를 위협하는 마이크로프로세서의 열 에너지를 증가시킨다. 그 결과, 컴퓨팅 워크로드 성능을 높이고자 하는 욕구와 함께 트랜지스터 크기들이 계속 감소함에 따라, 마이크로프로세서 칩 설계자들과 제조업체들은 단일 코어 마이크로프로세서들의 클록 주파수들 증가에 덜 집중하고 멀티코어 범용 마이크로프로세서 설계들 및 가속기(accelerator)들 또는 주문형 집적 회로(ASIC)와 같은 특수화된 칩들에 더 집중했다.
불행하게도, 이러한 멀티코어 설계들은 또한 데나드 스케일링의 한계들에 접근하고 있다. 멀티코어 설계들에서 트랜지스터 크기들이 점점 더 작아지고 트랜지스터 밀도가 증가함에 따라 전력 제약들 내에서 유지하고 열 폭주를 피하기 위해, 멀티코어 마이크로프로세서 트랜지스터들의 일부는 주어진 시간에서 "다크(dark)" 될 수 있다. 더 구체적으로는, 점점 작아지는 트랜지스터 크기들로 인해 촉진되는 최신 멀티코어 설계들의 더 큰 전력 밀도는 열 설계 전력(TDP) 제약들 내에서 공칭 동작 전압(nominal operating voltage)에서 동시에 모든 트랜지스터들의 전력을 켜는 기능을 방해한다. 마이크로프로세서의 상당 부분은 주어진 시간에서 다크될 수 있다(사용되지 않음). 다크 부분은 "다크 실리콘"이라고도 한다.
마이크로프로세서의 극저온 냉각(예를 들어, 액체 질소, 액체 헬륨 또는 다른 적합한 극저온유체 사용)은 전류 누설 에너지를 감소시킨다. 이를 통해 모든 트랜지스터들의 더 많은 비율을 TDP 제약들 내에서 유지하면서 공칭 전압에서 동시에 전력을 켤 수 있다. 극저온 동작은 다른 유용한 속성들을 포함한다. 특히, 트랜지스터는 더 빠르게 스위칭되어 마이크로프로세서가 더 높은 클록 주파수들에서 동작할 수 있도록 하며 집적 회로 와이어들은 전기 저항이 적고 결과적으로 신호 지연이 적다.
많은 컴퓨팅 애플리케이션 도메인들에 대해, 솔루션에 대한 컴퓨팅 시간을 비용 효율적으로 줄이기 위한 충족할 수 없는 요구가 있다. 이러한 컴퓨팅 도메인들은 예를 들어, 다른 컴퓨팅 애플리케이션 도메인들 중에서 머신 러닝, 게이밍, 이미지 및 비디오 편집, 그래프 처리가 포함한다. 이러한 요구를 충족할 수 있는 한 가지 가능한 솔루션은 보다 범용적인 마이크로프로세서보다 특정 컴퓨팅 워크로드들의 컴퓨팅 성능을 개선하도록 특별히 설계된 특수 목적 마이크로프로세서들을 설계 및 제조하는 것이다. 이러한 특수 목적 마이크로프로세서의 한 예는 극저온 동작 전용으로 특별히 설계한 것이다(예를 들어, 약 100- 및 4-켈빈도 사이의 극저온유체 사용). 그러나, 일반적으로 다양한 컴퓨팅 워크로드들을 위한 특수 목적 마이크로프로세서들을 설계하고 제조하는 것은 설계 및 제조의 높은 오버헤드(overhead)로 인해 비용 효율적이지 않다.
이 섹션에 기재된 접근법은 추구될 수 있지만 반드시 이전에 구상되었거나 추구되었던 접근법이 아닌 접근법이다. 이에 따라, 달리 지시되지 않는 한, 본 섹션에서 설명된 접근법들 중 임의의 것이 단지 본 섹션에서의 이들의 포함에 의해 종래 기술로서 자격이 있다고 가정되어서는 안 된다.
일부 구현예들은 첨부된 도면들에서 제한이 아닌 예로서 예시되며 유사한 참조 번호들은 유사한 요소들을 지칭하며, 여기서:
도 1은 일부 구현예들에 따른, 동적으로 구성가능한 오버프로비저닝된 마이크로프로세서에 대해 본 명세서에 개시된 기술들이 구현될 수 있는 예시적인 마이크로프로세서의 개략도이다.
도 2는 일부 구현예들에 따른, 도 1의 예시적인 마이크로프로세서의 코어의 개략도이다.
도 3은 일부 구현예들에 따른, 도 1의 마이크로프로세서 내의 컴퓨팅 리소스(resource)에 대한 동적 구성 로직에 의해 관리되는 컴퓨팅 리소스(compute resource)의 예시적인 상태들의 상태도이다.
도 4는 일부 구현예들에 따른, 도 1의 마이크로프로세서의 코어의 동적으로 구성가능한 하이브리드 순차(in-order)/비순차(out-of-order) CPU의 개략도이다.
도 5는 일부 구현예들에 따른, 도 1의 마이크로프로세서의 코어의 CPU 내의 동적으로 구성가능한 메모리 레벨 병렬 유닛의 개략도이다.
도 6은 일부 구현예들에 따른, 도 1의 마이크로프로세서의 코어의 CPU 내의 동적으로 구성가능한 동시 멀티스레딩(multithreading) 유닛의 개략도이다.
도면들은 명확한 예들을 예시하기 위한 목적들로 일부 구현예들을 예시하지만, 일부 구현예들을 도면들에 도시된 임의의 요소들을 생략, 추가, 재정렬 또는 수정할 수 있다.
다음의 설명에서, 설명의 목적들을 위해, 일부 구현예의 완전한 이해를 제공하기 위해 다수의 특정 세부사항들이 설명된다.그러나 일부 구현예들은 이러한 특정 세부사항들 없이 실행될 수 있음이 명백할 것이다. 다른 경우에는, 일부 구현예들을 불필요하게 모호하게 하는 것을 피하기 위해 잘 알려진 구조들과 디바이스들이 블록 다이어그램도 형태로 표시된다.
일반적인 개요
범용 마이크로프로세서 설계를 사용하여 최적화된 다목적 처리 능력을 제공하기 위해, 마이크로프로세서는 더 많은 트랜지스터들, 더 긴 제어 범위들 및 더 큰 데이터 저장 구조들과 같은 물리적 컴퓨팅 리소스들로 오버프로비저닝된다. 동작 중에, 오버프로비저닝된 마이크로프로세서는 컴퓨팅 리소스들을 활성화(다크되지 않게)하도록 동적으로 구성된다. 그런 다음 활성화된 컴퓨팅 리소스들은 주어진 컴퓨팅 애플리케이션 또는 컴퓨팅 애플리케이션의 주어진 부분에 대해 보다 최적의 컴퓨팅 워크로드 성능을 제공하기 위해 동작 중에 사용된다.
활성화된 리소스들이 더 이상 필요하지 않을 때, 마이크로프로세서는 리소스들을 비활성화(다크되게)하여 에너지 소비를 줄이거나 클록 주파수를 증가시키도록 동적으로 구성될 수 있다. 주어진 컴퓨팅 워크로드를 처리하는 과정 동안, 다양한 컴퓨팅 리소스들이 동적으로 활성화되고 컴퓨팅 성능, 에너지 소비 및 클록 주파수 사이의 균형을 맞추기 위해 동적으로 비활성화될 수 있다.
일부 구현예들에서, 오버프로비저닝된 마이크로프로세서는 활성화 보증(activation-warranting) 동작 조건의 검출에 응답하여 컴퓨팅 리소스들을 활성화하도록 동적으로 구성된다. 활성화 보증 동작 조건의 비제한적인 한 예는 오버프로비저닝된 마이크로프로세서의 극저온 동작이다. 이 경우, 오버프로비저닝된 마이크로프로세서는 컴퓨팅 리소스들을 동적으로 활성화하도록 구성되어, 대체 컴퓨팅 리소스들이 동시에 활성화될 수 있도록 하며, 여기서 컴퓨팅 리소스들의 한 세트가 현재 사용되는 반면 컴퓨팅 리소스들의 대체 세트가 활성화되고 사용을 위해 이용 가능하다. 대체 컴퓨팅 리소스들을 동시에 활성화하면 구성 결정을 내린 후 컴퓨팅 리소스의 대체 세트가 활성화(다크되지 않게)할 때까지 기다릴 필요 없이 컴퓨팅 리소스의 한 세트 사용으로부터 대체 컴퓨팅 리소스들의 세트 사용으로 오버프로비저닝된 마이크로프로세서의 효율적인 동적 구성이 가능하다. 이러한 및 다른 활성화 보증 동작 조건들은 아래에서 자세하게 설명된다.
일부 구현예들에서, 오버프로비저닝된 마이크로프로세서는 구성 보증 동작 조건을 검출하는 것에 응답하여 컴퓨팅 리소스들의 사용 사이를 스위칭하도록 동적으로 구성된다. 구성 보증 동작 조건의 비제한적인 한 예는 재정렬 버퍼(reorder buffer)의 저활용(underutilization)이다. 이 경우, 오버프로비저닝된 마이크로프로세서는 비순차 명령어 실행을 위한 컴퓨팅 리소스들 사용으로부터 순차 명령어 실행을 위한 컴퓨팅 리소스들 사용으로 스위칭하도록 동적으로 구성될 수 있다. 이 조건들 및 기타 구성 보증 동작 조건들은 아래에서 자세히 설명된다.
따라서, 오버프로비저닝된 마이크로프로세서의 동적 구성을 위한 기술들이 제공되어 다양한 컴퓨팅 애플리케이션 워크로드들을 최적으로 지원하고 범용 마이크로프로세서 설계들을 사용하여 컴퓨팅 애플리케이션별로 컴퓨팅 성능, 에너지 소비 및 클록 주파수 간의 트레이드오프할 수 있는 기능을 제공한다.
마이크로프로세서의 예
도 1은 일부 구현에 따르면, 동적으로 구성가능한 오버프로비저닝된 마이크로프로세서에 대해 본 명세서에 개시된 기술들이 구현될 수 있는 예시적인 마이크로프로세서(100)의 개략도이다. 본 명세서에서, 동적으로 구성되거나 동적으로 구성되는에서 "동적"이라는 용어는 작업을 다시 시작하지 않고도 하나 이상의 컴퓨팅 작업들(예를 들어, 프로세스들 또는 스레드들)을 실행하는 동안 오버프로비저닝된 마이크로프로세서가 동작 중에 구성 또는 구성되는 것을 의미한다. 대신, 오버프로비저닝된 마이크로프로세서는 구성 또는 구성 후에 작업들을 계속 실행할 수 있다.
마이크로프로세서(100)는 병렬 처리 및 멀티태스킹(multitasking) 동작을 지원하는 2개 이상의 개별 코어들(102-1 … 102-N)을 갖는다. 각 코어(102)는 자체 중앙 처리 장치(104), 자체 레지스터들의 세트(106) 및 자체 캐시(cache)들(108)을 갖는다. 코어들(102-1 … 102-N)은 아마도 도시되지 않은 하나 이상의 중간 컴포넌트들을 통해 코어들(102-1 … 102-N)과 메모리 디바이스들(112) 및 입력/출력 디바이스들(114) 사이에서 데이터 및 커맨드들을 발송 및 수신하기 위해 버스(110)에 물리적으로 결합된다.
도 2는 일부 구현예에 따르면, 코어(102-1)의 개략도이다. 마이크로프로세서(100)의 다른 코어들(102)은 동일하거나 동등한 컴포넌트들을 가질 수 있다. 그러나 이종(heterogeneous) 코어들(102-1 … 102-N)도 가능하다. 코어(102-1)는 멀티스레딩되는 중앙 처리 장치(CPU) 또는 마이크로프로세서(100)가 멀티스레딩되는 단일 스레딩된 코어일 수 있다. 코어(102-1)는 수퍼스칼라 아키텍처(superscalar architecture), 동시 멀티스레딩, 세분화된(fine-grained) 멀티스레딩, 추측 실행, 분기 예측, 비순차 실행 및/또는 레지스터 리네이밍(renaming)을 포함하지만 이에 제한되지 않는 범용 프로세서 설계 기술들을 활용할 수 있다. 코어(100)는 사전 정의된 명령어 세트 아키텍처에 따라 명령어들을 실행하기 위한 물리적 컴퓨팅 리소스들을 포함할 수 있다. 예를 들어, 사전 정의된 명령어 세트 아키텍처는 X86, ARM, POWERPC, MIPS, SPARC, RISC 또는 기타 복잡하거나 축소된 명령어 세트 아키텍처 중 하나일 수 있다. 코어(100)에 포함될 수 있는 비독점적인 물리적 컴퓨팅 리소스들의 세트는 명령어 페치 유닛(110), 명령어 캐시(115), 디코드 유닛(120), 레지스터 리네이밍 유닛(125), 명령어 대기열(130), 실행 유닛들(135), 로드/저장 유닛들(140), 데이터 캐시(140) 및 코어(100)의 다른 회로부를 포함할 수 있다. 코어(102-1)에 포함될 수 있는 다른 컴퓨팅 리소스들(미도시)은 프리페치 버퍼, 분기 예측 로직, 글로벌/바이모달 로직, 루프 로직, 간접 점프 로직, 루프 스트림 디코더, 마이크로 명령어 시퀀서, 리타이어먼트 레지스터 파일, 레지스터 할당 테이블, 재정렬 버퍼, 명령어 대기열(Reservation Station), 산술 로직 장치 또는 메모리 정렬 버퍼를 포함할 수 있지만 이에 제한되지는 않는다.
위에서 설명한 마이크로프로세서는 일부 구현예들이 구현될 수 있는 기본 마이크로프로세서의 예들을 설명하기 위한 목적으로 제공된다. 그러나 위에서 설명한 것보다 많거나 적거나 다른 컴퓨팅 리소스들을 가진 마이크로프로세서들을 포함하는 다른 마이크로프로세서들이 구현예에 사용될 수 있음을 이해해야 한다. 또한, 논의 목적으로, 다음 설명에서는 멀티코어 마이크로프로세서 맥락에서 동적으로 구성가능한 오버프로비저닝된 마이크로프로세서의 예들을 제시한다. 그러나, 일부 구현예들은 마이크로프로세서 구성에 제한되지 않는다. 특히, 멀티코어 마이크로프로세서는 모든 구현예들에 필요한 것은 아니지만 논의를 위한 프레임워크를 제공하는 데 사용된다. 대신에, 일부 구현예들은 아래에 자세히 제공된 구현예들의 방법론들을 지원할 수 있는 모든 유형의 마이크로프로세서 또는 다른 집적 회로에서 구현될 수 있다.
오버프로비저닝된 마이크로프로세서
아래에 설명된 예들에 의해 예시된 바와 같이, 일부 구현예들에서, 마이크로프로세서(100)는 물리적 컴퓨팅 리소스들로 오버프로비저닝된다. 여기서, "오버프로비저닝된"은 타겟 열 설계 전력(TDP) 제약 내에서 공칭 동작 전압에서 동시에 전력을 켤 수 있는 것보다 더 많은 물리적 컴퓨팅 리소스들을 갖는 마이크로프로세서(100)를 포함한다. 타겟 TDP 제약은 마이크로프로세서(100)의 비 극저온 동작에 기초될 수 있다(가정). 예를 들어, 타겟 TDP는 대략 100- 및 4- 켈빈도 사이의 극저온유체(예를 들어, 액체 질소, 액체 헬륨 등)의 사용이 사용되지 않는 경우 "상온" 동작에 기초될 수 있다.
추가적으로, 또는 대안적으로, "오버프로비저닝된"은 컴퓨팅 리소스들 사이에 긴 물리적 제어 범위(긴 물리적 신호 와이어들)를 갖는 마이크로프로세서(100)를 포함한다. 제어 범위의 물리적 길이들은 상온 동작에서 마이크로프로세서(100)의 타겟 클록 주파수에서 시그널링 타이밍 제약을 충족시키기에는 너무 길 수 있다. 예를 들어, 비 극저온 동작에서 마이크로프로세서(100)의 명시된 "온 더 박스(on the box)" 클록 주파수에서 신호 타이밍 제약들을 충족시키기에는 길이가 너무 길 수 있다. 비 극저온 동작(예를 들어, 상온 동작)에서 전기 저항은 극저온 동작보다 제어 범위에서 더 크다. 그 결과, 이러한 긴 제어 범위를 사용하고 여전히 신호 타이밍 제약들을 충족시키기 위해, 마이크로프로세서(100)의 클록 주파수가 감소(언더클로킹)되거나 마이크로프로세서(100)의 극저온 동작이 필요할 수 있다.
일부 구현예들에 따른, 마이크로프로세서(100)는 마이크로프로세서(100)가 극저온 동작에 있음을 검출하거나 타겟 클록 주파수에서 동작할 필요가 없음을 검출할 때(예를 들어, 광범위한 주요 메모리 I/O로 인해) 긴 제어 범위들을 사용하도록 동적으로 구성가능하고 따라서 동작 클록 주파수를 일시적으로 줄여 긴 제어 범위들을 사용할 수 있다. 타이밍 제약들로 인해 일반적으로 이러한 방식으로 서로 연결되지 않는 컴퓨팅 리소스들을 연결하는 데 긴 제어 범위들이 사용될 수 있다. 이러한 방식으로 일반적으로 연결되지 않는 컴퓨팅 리소스들 사이에 긴 제어 범위들을 사용함으로써, 긴 제어 범위들을 이용하는 마이크로프로세서(100)의 동적 구성들이 가능하다. 이러한 동적 구성들의 예들은 아래에서 자세히 설명된다.
마이크로프로세서(100)의 오버프로비저닝하는 다양한 형태들을 취할 수 있다. 일부 구현예들에 따른, (1) 대체 컴퓨팅 리소스들, (2) 긴 제어 범위들 및 (3) 확장된 데이터 저장 구조 헤드룸(storage structure headroom)의 세 가지 이상의 다른 형태들이 고려된다. 이러한 형태들의 각각의 예들은 아래에서 더 자세히 제공된다.
대체 컴퓨팅 리소스들
일반적으로, 대체 컴퓨팅 리소스들은 동작 중에 대체 사용될 수 있는 오버프로비저닝된 마이크로프로세서(100)의 컴퓨팅 리소스들이다. 대체 컴퓨팅 리소스들의 예로는 비순차 실행 유닛에 대한 순차 실행 유닛이다. 본 명세서에 개시된 기술들로, 마이크로프로세서(100)는 순차 실행 및 비순차 실행 모두를 위한 컴퓨팅 리소스들로 오버프로비저닝될 수 있으며, 오버프로비저닝된 마이크로프로세서(100)는 예를 들어, 순차 실행 컴퓨팅 리소스들을 사용할 때 과도한 지연과 같은 구성 보증 동작 조건을 검출하는 것에 응답하여 하나 또는 다른 하나를 사용하도록 동적으로 구성될 수 있다. 이 예에서, 오버프로비저닝된 마이크로프로세서(100)는 비순차 실행 컴퓨팅 리소스들을 사용하도록 구성될 수 있다. 오버프로비저닝된 마이크로프로세서(100)에서 대체 컴퓨팅 리소스들을 활용하는 이러한 및 다른 예들은 아래에서 더 자세히 설명된다.
대체 사용될 수 있는 컴퓨팅 리소스들의 또 다른 예는 병렬 주요 메모리 액세스를 위한 연관 로드-저장 유닛에 대한 순차 메인 메모리 액세스를 위한 단순 로드 저장 유닛이다. 본 명세서에 개시된 기술들로, 마이크로프로세서(100)는 순차 메모리 액세스 및 비순차 메모리 액세스 모두를 위한 컴퓨팅 리소스들로 오버프로비저닝될 수 있으며, 오버프로비저닝된 마이크로프로세서(100)는 예를 들어, 비순차 메모리 액세스 컴퓨팅 리소스들을 사용할 때 컴퓨팅 바운드된 애플리케이션의 실행과 같은 구성 보증 동작 조건을 검출하는 것에 응답하여 하나 또는 다른 하나를 사용하도록 동적으로 구성될 수 있다. 이 예에서, 오버프로비저닝된 마이크로프로세서(100)는 순차 메모리 액세스 컴퓨팅 리소스들을 사용하도록 구성될 수 있다. 오버프로비저닝된 마이크로프로세서(100)에서 대체 컴퓨팅 리소스들을 활용하는 이러한 및 다른 예들은 아래에서 더 자세히 설명된다.
긴 제어 범위들
일부 구현예에 따른, 마이크로프로세서(100)는 일반적으로 함께 연결되지 않는 컴퓨팅 리소스들 간의 통신을 가능하게 하는 데 사용될 수 있는 긴 제어 범위들로 오버프로비저닝될 수 있다. 아래 예들에 의해 예시된 바와 같이, 긴 제어 범위들은 순차 실행과 비순차 실행 사이에 오버프로비저닝된 마이크로프로세서(100)의 동적 구성을 구현하고 단일 스레드 처리 모드와 동시 멀티스레딩되는 처리 모드 사이에서 오버프로비저닝된 마이크로프로세서(100)의 동적 구성을 구현하는 데 사용될 수 있다.
확장된 데이터 저장 구조 헤드룸
마이크로프로세서(100)는 레지스터 파일들, 리네임 테이블들, 재정렬 버퍼들, 로드/저장 유닛들, 명령어 대기열들, 및 데이터 아이템들을 저장하기 위한 고정된 수의 엔트리들을 갖는 다른 물리적 데이터 저장 구조들과 같은 많은 데이터 저장 구조들을 포함할 수 있다. 고정된 수(서로 다른 구조들 간에 다를 수 있음)는 일반적으로 비 극저온 동작에서 타겟 클록 주파수 및 타겟 TDP의 타이밍 제약들을 기반으로 마이크로프로세서 설계 중에 결정된다. 일부 구현예들에서, 데이터 저장 구조들은 구조의 데이터 저장 헤드룸을 증가시키기 위해 확장된 수의 엔트리들을 갖도록 오버프로비저닝된 마이크로프로세서(100)에서 설계된다. 예를 들어, 오버프로비저닝된 마이크로프로세서(100)는 확장된 레지스터 파일을 사용하도록 동적으로 구성될 수 있다. 다른 예로서, 오버프로비저닝된 마이크로프로세서(100)는 명령어 윈도우 크기를 증가시키기 위해 확장된 데이터 저장 구조들을 사용하도록 동적으로 구성될 수 있다. 오버프로비저닝된 마이크로프로세서(100)에서 확장된 데이터 저장 구조들을 활용하는 이러한 및 다른 예들은 아래에서 더 자세히 설명된다.
동적 구성 로직
일부 구현예에 따른, 오버프로비저닝된 마이크로프로세서(100)는 마이크로프로세서(100)의 물리적 컴퓨팅 리소스들을 동적으로 구성하기 위한 하나 이상의 동적 구성 로직들로 구성된다. 동적 구성 로직은 펌웨어, 유한 상태 머신 로직 또는 다른 적합한 로직으로 구현될 수 있다. 서로 다른 동적 구성 논리들은 서로 다른 컴퓨팅 리소스들을 동적으로 구성할 수 있으며 단일 동적 구성 로직은 다수의 컴퓨팅 리소스들을 동적으로 구성하도록 담당할 수 있다.
일부 구현예들에 따른, 동적 구성 로직에 의해 동적으로 구성될 수 있는 마이크로프로세서(100)의 물리적 컴퓨팅 리소스들은 전력 게이팅(gate)될 수 있는 것일 수 있다. 전력 게이팅은 컴퓨팅 리소스들이 사용되지 않을 때 컴퓨팅 리소스들에 의한 누설 전력 손실을 줄이기 위한 마이크로프로세서들의 기술들을 말한다. 전력 게이팅은 예를 들어 P 유형 금속산화물 반도체(PMOS) 또는 N 유형 금속산화물 반도체(NMOS) 슬립 트랜지스터(sleep transistor)들을 사용하여 마이크로프로세서(100)에서 구현될 수 있다. 또는, 다른 회로 기술들이 사용되어 물리적 컴퓨팅 리소스들을 기면 상태(drowsy state), 슬립 상태, 또는 기타 저 전력 상태로 배치할 수 있다. 예를 들어 다음 논문에 설명된 컴퓨팅 리소스들의 정적 전력 소비를 줄이기 위한 전압 스케일링 기술들은 활성 상태와 기면 상태 사이의 컴퓨팅 리소스들에 대체 적용될 수 있다: 케이.플러트너(K.Flautner), 김남성(Nam Sung Kim), 에스.마틴(S. Martin), 디.블러우(D. Blaauw) 및 T.머지(T. Mudge), "기면 캐시: 누설 전력을 줄이기 위한 간단한 기술들", 컴퓨터 아키텍처에 관한 제29회 연례 국제 심포지엄 진행, 앵커리지, AK주, 미국, 2002년, 148 내지 157 페이지. 이 전압 스케일링 기술들을 사용하는 잠재적인 이점은 전력 게이팅과 비교할 때 컴퓨팅 리소스를 활성 상태와 기면 상태 사이에서 송신하는 데 요구되는 클록 사이클들의 수가 적다는 것이다.
전력 상태들
도 3은 일부 구현예들에 따른, 컴퓨팅 리소스에 대한 동적 구성 로직에 의해 관리되는 컴퓨팅 리소스의 예시적인 전력 상태들의 상태도이다. 처음에는, 컴퓨팅 리소스는 다크 상태(332)에 있을 수 있다. 다크 상태(332)에 있을 때, 컴퓨팅 리소스는 전력 게이팅될 수 있고 컴퓨팅 작업들에 사용되지 않을 수 있다.
활성화 보증 동작 조건을 검출하는 동적 구성 로직에 따라, 동적 구성 로직은 컴퓨팅 리소스를 다크 상태(332)에서 활성이지만 저전력 대기 모드(활성 대기 상태(334)에서)로 전환시킬 수 있다. 대안적으로, 동적 구성 로직은 컴퓨팅 리소스를 비대기 활성 상태(336)로 직접 전환할 수 있다. 어느 경우든, 다크 상태(332)에서 컴퓨팅 리소스를 언다크닝(undarkening)하는 것은 컴퓨팅 리소스에서 전력 게이트를 제거하는 동적 구성 로직을 포함할 수 있다.
다양한 상이한 활성화 보증 동작 조건이 가능하며 특정 활성화 보증 동작 조건이 요구되지 않는다. 일부 활성 보장 동작 조건의 예는 마이크로프로세서(100)의 극저온 동작을 검출하는 동적 구성 로직, 컴퓨팅 리소스를 활성화하기 위한 커맨드를 수신하거나 획득하는 동적 구성 로직(예를 들어, 명령어 세트 아키텍처(ISA) 커맨드를 통해 또는 메모리 매핑된 I/O를 통해), 또는 컴퓨팅 리소스 사용을 보증하는 구성 보증 동작 조건을 검출하는 동적 구성 로직을 포함한다.
동적 구성 로직이 컴퓨팅 리소스 사용을 보증하는 구성 보증 동작 조건을 검출하고 컴퓨팅 리소스가 다크 상태(332)에 있는 경우, 동적 구성 로직은 컴퓨팅 리소스를 다크 상태(332)에서 비대기 활성 상태(336)로 직접 전환하거나 또는 먼저 컴퓨팅 리소스를 다크 상태(332)에서 활성 대기 상태(334)로 전환한 다음 비대기 활성 상태(336)로 전환할 목적으로 구성 보증 동작 조건을 활성화 보증 동작 시스템으로 취급할 수 있다.
한편, 구성 보증 동작 조건이 동적 구성 로직에 의해 검출될 때 컴퓨팅 리소스가 이미 활성-대기 상태(334)에 있는 경우, 동적 구성 로직은 컴퓨팅 리소스를 활성 대기 상태(334)에서 비대기 활성 상태(336)로 전환할 수 있다. 이러한 전환은 컴퓨팅 리소스에서 클록 게이트를 제거하는 동적 구성 로직에 의해 또는 전압 스케일링 기술을 사용하여 컴퓨팅 리소스를 기면 상태(drowsy state)에서 활성 상태로 전환하는 동적 구성 로직에 의해 달성될 수 있다.
동적 구성 로직은 구성 보증 동작 조건을 검출하면 더 이상 컴퓨팅 리소스를 사용하지 않도록 마이크로프로세서(100)를 구성할 수 있다. 이 경우 컴퓨팅 리소스는 활성 대기 상태(334)로 다시 전환될 수 있다. 비대기 활성 상태(336)에서 활성 대기 상태(334)로의 이러한 전환을 위해, 동적 구성 로직은 컴퓨팅 리소스를 클록 게이팅하거나 전압 스케일링 기술을 사용하여 컴퓨팅 리소스를 활성 상태에서 기면 상태로 전환할 수 있다.
대안적으로, 동적 구성 로직이 비대기 활성 상태(336)인 컴퓨팅 리소스에 대한 비활성화 보증 동작 조건을 검출하면, 동적 구성 로직은 이어서 컴퓨팅 리소스를 다크 상태(332)로 직접 전환하기 위해 컴퓨팅 리소스에 전력 게이팅할 수 있다.
컴퓨팅 리소스가 활성 대기 상태(334)에 있을 때, 동적 구성 로직은 전력 소비를 보존하기 위해 컴퓨팅 리소스를 클록 게이팅할 수 있다. 클록 게이팅은 컴퓨팅 리소스가 사용되지 않을 때 컴퓨팅 리소스에 의한 전력 소비를 줄이기 위한 마이크로프로세서의 기술을 지칭한다. 클록 게이팅은 예를 들어 사용되지 않을 때 컴퓨팅 리소스에서 클록 신호를 제거함으로써 마이크로프로세서(100)에서 구현될 수 있다. 물리적 컴퓨팅 리소스가 클록 게이팅되면, 회로부에 전력이 공급되지만 회로를 구동하는 클록 펄스는 차단된다. 이렇게 함으로써, 회로 스위칭으로 인해 소비되는 에너지는 감소 또는 제거되지만 여전히 누설 전력이 소비된다. 클록 게이팅과 달리, 전력 게이팅은 전력 신호를 차단하므로 전류가 회로부로 유입되는 것을 차단한다. 전력 게이팅은 일반적으로 전력 상태들 사이의 전환을 필요로 하며, 이는 일반적으로 회로부에 대한 클록 펄스를 활성화 및 비활성화하는 (클록 게이팅) 것보다 물리적으로 더 많은 시간이 소요되는 프로세스(더 높은 대기 시간 프로세스)이다. 따라서 클록 게이팅은 활성 대기 상태(334)와 비대기 상태(336) 사이에서 물리적 컴퓨팅 리소스를 보다 효율적으로 전환하는 데 사용될 수 있다.
클록 게이팅이 활성 대기 상태(334)와 비대기 활성 상태(336) 사이에서 물리적 컴퓨팅 리소스를 전환하는 데 사용될 수 있지만, 활성 상태와 기면 상태 사이에서 물리적 컴퓨팅 리소스를 전환하기 위해 위에서 언급된 전압 스케일링 기술과 같은 다른 기술을 사용하여 이러한 상태들 사이에서 물리적 컴퓨팅 리소스를 전환할 수 있다. 이 경우, 기면 전압 스케일링 상태는 활성 대기 상태(334)에 대응하고 활성 전압 스케일링 상태는 비대기 활성 상태(336)에 대응할 것이다.
일부 구현예에 따르면, 동적 구성 로직은 동적 구성 로직이 컴퓨팅 리소스에 대한 활성화 보증, 비활성화 보증 또는 구성 보증 동작 조건을 정기적으로 확인하는 프로그래밍 가능한 에포크 기반(epoch-based) 시스템이다. 예를 들어, 동적 구성 로직은 몇 클록 사이클들 또는 몇 나노초마다 이러한 조건들 중 하나 이상을 확인할 수 있다. 이러한 확인의 주기성은 이러한 확인을 수행하는 빈도의 증가 또는 감소를 보장하는 조건을 검출하는 동적 구성 로직에 대한 응답으로 시간이 지남에 따라 변경될 수도 있다. 확인 빈도는 또한 예를 들어, 마이크로프로세서(100)에 의해 실행되는 명령어 세트에 고급 언어 프로그래밍된 명령어 또는 고급 언어 컴파일러 추가 명령어와 같은 상위 레벨 로직으로부터 제어될 수 있다.
하이브리드 순차/비순차 CPU 설계
일부 구현예에 따르면, 오버프로비저닝된 마이크로프로세서(100)의 코어(예를 들어, 102-1)의 CPU(예를 들어, 104-1)는 하이브리드 순차/비순차 CPU 설계를 포함한다. 특히, 마이크로프로세서(100)는 순차 실행 컴퓨팅 리소스 및 비순차 실행 컴퓨팅 리소스 모두로 오버프로비저닝되고 CPU의 동적 구성 로직은 CPU를 순차 또는 비순차 명령어 실행 머신으로 동적으로 구성한다.
일반적으로, CPU가 순차 명령어 실행 모드에 있을 때, 컴퓨팅 애플리케이션 명령어는 컴파일러 생성 순서로 페치, 실행 및 커밋된다. 명령어가 정지하면(예를 들어, 메인 메모리에서 데이터를 기다리는 경우) 그 뒤의 모든 명령어들도 정지된다. 명령어들은 컴파일러 생성 순서로 CPU에 의해 통계적으로 스케줄링된다. 순차 명령어 실행의 장점은 더 간단한 구현, 빠른 클록 사이클, 더 적은 컴퓨팅 리소스, 더 낮은 비용의 설계, 개발 및 디버그 시간을 포함한다.
반면에 CPU가 비순차 명령 실행 모드에 있을 때, 컴퓨팅 애플리케이션 명령어들은 여전히 컴파일러 생성 순서로 페치될 수 있다. 그러나 명령어 완료는 순차적이거나 비순차적일 수 있다. 명령어들은 CPU에 의해 동적으로 스케줄링된다. CPU는 명령어들이 실행될 수 있는 순서를 결정하고 정지된 명령어 뒤에 있는 명령어들은 정지된 명령어에 종속되지 않는 경우 실행 순서로 이를 패스할 수 있다. 비순차 실행의 이점은 높은 레벨의 명령어 레벨 병렬처리와 적은 명령어 종속성을 가진 특정 컴퓨팅 워크로드에 대한 더 높은 성능을 포함한다. 잠재적으로 다른 이점은 대기 시간 하이딩, 프로세서 정지 감소, 실행(기능) 유닛의 높은 활용도를 포함한다.
순차 명령어 실행 컴퓨팅 리소스를 사용하는 경우, 비순차 명령어 실행 컴퓨팅 리소스가 다크일 수 있다. 대안적으로, 비순차 명령어 실행 컴퓨팅 리소스를 사용할 때, 순차 명령어 실행 컴퓨팅 리소스가 다크일 수 있다. 극저온 동작 또는 더 낮은(언더클로킹) 클록 주파수에서와 같이 동작 조건이 타겟 TDP 내에 있도록 허용되는 경우, 순차 명령어 실행 컴퓨팅 리소스와 비순차 명령어 실행 컴퓨팅 리소스 모두는 둘 중 하나가 사용되는 동안 활성 상태를 유지할 수 있다. 이 경우, 순차 명령어 실행 컴퓨팅 리소스 사용과 비순차 명령어 실행 컴퓨팅 리소스 사용 간의 동적 구성은 컴퓨팅 리소스를 다크 상태에서 활성 상태로 전환하는 오버헤드를 발생시키지 않는다. 예를 들어, 전력 게이팅의 오버헤드가 방지된다.
순차 명령어 실행 발행 머신 또는 비순차 명령어 실행 발행 머신 사이의 CPU의 동적 구성은 명령어 대기열, 테이블 리네이밍 및 재정렬 버퍼와 같은 데이터 저장 구조뿐만 아니라 제어 및 데이터 경로들의 동적 구성을 포함할 수 있다. CPU가 내재된 명령어 레벨 병렬성이 높고 데이터 종속성이 상대적으로 적은 컴퓨팅 애플리케이션을 실행할 때, 이는 비순차 명령어 실행 동작에 의해 제공되는 추측(speculation) 및 역동성(dynamism)의 이점을 얻기 위해 CPU를 비순차 명령어 실행 발행 머신이 되도록 구성하기 위해 동적 구성 로직을 트리거하는 구성 보증 동작 조건일 수 있다. 그러나 컴퓨팅 애플리케이션에서 이러한 추측과 역동성이 더 이상 필요하지 않으면 이는 또한 비순차 명령어 실행 모드의 오버헤드를 피하기 위해 CPU를 순차 명령어 실행 발행 머신이 되도록 동적으로 구성하기 위해 동적 구성 로직을 트리거하는 구성 보증 동작 조건일 수 있다.
위에서 언급된 바와 같이, CPU가 순차 명령어 실행 모드 또는 비순차 명령어 실행 모드에 있을 때, 현재 모드에서 사용되지 않는 특정 데이터 및 제어 경로와 데이터 스토리지 구조와 같은 대체 컴퓨팅 리소스는 전력을 절약하기 위해 다크 상태가 될 수 있다. 그러나 예를 들어 극저온 동작 또는 언더클로킹 클록 주파수에서와 같이 누설 전류가 감소하면 클록 게이팅 또는 기타 저전력 상태는 현재 사용되지 않는 컴퓨팅 리소스를 활성 상태로 유지하기 위해 최소한의 전력 오버헤드로 사용될 수 있다. 이렇게 함으로써, 동적 구성 로직이 순차 명령어 실행 모드에서 비순차 명령어 실행 모드로 또는 그 반대로 전환하도록 CPU를 동적으로 구성하도록 결정하는 경우, 이는 컴퓨팅 리소스를 언다크닝하지 않고도 신속하게 수행될 수 있다.
도 4는 일부 구현예에 따른 마이크로프로세서(100)의 코어(102-1)의 하이브리드 순차/비순차 CPU(104-1)의 개략도이다. CPU(104-1)는 프로그램 카운터에 저장된 메모리 어드레스로부터 다음 명령어를 페치하고 페치된 명령어를 명령어 레지스터에 저장하기 위한 명령어 페치 유닛(438)을 갖는다. CPU(104-1)는 또한 페치된 명령어를 해석하기 위한 명령어 디코드 유닛(440)을 갖는다. 구성가능 발행 유닛(442)은 동적 구성 로직(444)에 의한 현재 구성에 따라 순차 명령어 실행 유닛(446) 또는 비순차 명령어 실행 유닛(448)에 디코딩된 명령어를 발행할 수 있다.
동적 구성 로직(444)은 구성 보증 동작 조건을 검출할 때 순차 명령어 실행을 위해 순차 명령어 실행 유닛(446)에 또는 비순차 명령어 실행을 위해 비순차 명령어 실행 유닛(448)에 명령어를 발행하도록 구성가능 발행 유닛(442)을 동적으로 구성할 수 있다. 예를 들어, 동적 구성 로직(444)은 다수의 클록 사이클들 또는 다수의 나노초의 에포크 동안 명령어 실행 정지의 수를 추적할 수 있다. 에포크 동안 정지의 수가 임계치를 초과하고 구성가능 발행 유닛(442)이 현재 순차 명령어 실행 모드에 있는 경우, 동적 구성 로직(444)은 구성가능 발행 유닛(442)을 동적으로 구성하여 동적 구성 로직(444)이 순차 명령어 실행 모드로 다시 전환하는 것을 보증하는 구성 보증 동작 조건을 검출할 때까지 비순차 명령어 실행 유닛(448)에 명령어를 발행할 수 있다. 예를 들어, 동적 구성 로직(444)은 순차 명령어 실행을 요청하는 명령어 디코드 유닛(440)으로부터 전달된 명령어를 검출할 수 있다. 이러한 명령어는 실행될 컴퓨팅 애플리케이션의 후속 명령어가 높은 수준의 명령어 레벨 병렬성을 갖지 않고, 따라서 이러한 후속 명령어들에 대해 비순차 명령어 실행의 오버헤드가 보장되지 않는다는 기대에 기초하여 컴퓨팅 애플리케이션에 삽입되거나 컴파일러 또는 런타임 명령어 프로파일러에 의해 컴퓨팅 애플리케이션 명령어들의 세트에 추가될 수 있다.
예를 들어, 고급 프로그래밍 언어 컴파일러는 최적화 또는 프로파일링 패스 동안 명령어 윈도우에 대해 컴파일러에 의해 생성된 명령어 스케줄이 레지스터 종속성이 거의 없거나 전혀 없다고 결정할 수 있다. 이 경우, 컴파일러는 명령어 윈도우를 실행하기 위해 순차 명령어 실행을 선택하도록 명령을 삽입하거나 컴파일링된 명령어를 구성할 수 있다. 다른 한편으로, 컴파일러가 많은 레지스터 종속성(예를 들어, 임계치 이상의 많은 레지스터 종속성)이 있는 복잡한 명령어 스케줄을 생성하는 경우, 컴파일러는 명령어 윈도우를 실행하기 위해 비순차 명령어 실행을 선택하도록 명령어를 삽입하거나 컴파일링된 명령어를 구성할 수 있다.
CPU(104-1)는 순차 명령어 실행 유닛(446) 및 비순차 명령어 실행 유닛(448)과 관련된 다른 컴퓨팅 리소스를 포함할 수 있다. 그러한 다른 컴퓨팅 리소스는 명령어 큐(450), 재정렬 버퍼(452), 리네임 테이블(454), 기능 유닛(456) 및 레지스터 파일(458)을 포함할 수 있다.
CPU(104-1)에서, 순차 명령어 실행(446) 및 비순차 명령어 실행(448)을 지원하는 컴퓨팅 리소스는 프론트 엔드 로직, 예를 들어 명령어 페치 유닛(438), 디코드 명령어 유닛(440), 구성가능 발행 유닛(442) 및 동적 구성 로직(444)을 공유한다. 순차 명령어 실행 유닛(446) 및 비순차 명령어 실행 유닛(448)은 개별의 사설 컴퓨팅 리소스를 가질 수 있다. 예를 들어, 비순차 명령어 실행 유닛(448)만이 리네임 테이블(454) 및 재정렬 버퍼(452)를 사용하여 레지스터 리네이밍을 수행할 가능성이 있다. 순차 명령어 실행 유닛(446) 및 비순차 명령어 실행 유닛(448)은 또한 그들 자신의 개별의 레지스터 파일들(458)을 사용할 수 있거나(예를 들어, 포트 폭을 증가시키기 위해), 또는 이들 유닛들은 레지스터 파일(458)을 공유할 수 있다.
긴 제어 범위(460)는 극저온 동작(전기 저항이 더 낮은 경우) 또는 더 낮은(언더클로킹된) 클록 주파수와 같은 특정 동작 조건에서만 사용 가능한 긴 제어 범위의 예이다. 긴 제어 범위(460)는 비순차 명령어 실행과 순차 명령어 실행으로부터 스위칭할 때 리네이밍 테이블(454)과 순차 명령어 실행 유닛(446) 사이에서 레지스터 상태 정보의 전송을 허용한다. 레지스터 상태 정보는 예를 들어 순차 명령어 실행 유닛(446)이 순차 명령어 실행에 사용될 물리적 레지스터 식별자로 해석하는 리네임 테이블(454)의 논리적 레지스터 식별자를 포함할 수 있다.
구성가능한 메모리 수준 병렬성
일부 구현예에 따르면, 메모리 명령어를 보유하기 위한 마이크로프로세서(100)의 코어(예를 들어, 102-1)의 CPU(예를 들어, 104-1)의 로드-저장(LS) 유닛은 극저온 동작(전기 저항이 더 낮은 경우) 또는 더 낮은(언더클로킹된) 클록 주파수와 같은 특정 동작 조건에서 활성화(언다크닝)될 수 있는 추가 대기열 엔트리로 오버프로비저닝될 수 있다. 메모리 요청(예를 들어, 로드 및 저장)을 저장하기 위한 대기열의 추가 용량/폭은 마이크로프로세서(100)가 향상된 메모리 레벨 병렬성을 제공할 수 있게 한다.
또한 CPU는 (1) 단순 로드 저장(LS) 유닛 및 (2) 연관 로드 저장(LS) 유닛으로 오버프로비저닝될 수 있다. 순차 메모리 액세스가 필요하고, 그들이 컴퓨팅 바인딩되기 때문에 메모리 레벨 병렬 처리가 제한되어 있고, 데이터 의존성을 갖고, 분기를 예측하기 어렵고 또는 예측할 수 없는 메모리 액세스 패턴을 갖는 컴퓨팅 애플리케이션 또는 컴퓨팅 애플리케이션의 일부에 대해, 단순 LS 유닛이 이러한 애플리케이션 또는 이러한 부분에 사용될 수 있다. 다른 한편으로, 보다 강화된 메모리 스케줄링 및 조정 기능을 갖는 연관 LS 유닛은 높은 수준의 메모리 레벨 병렬성을 갖는 컴퓨팅 애플리케이션 또는 컴퓨팅 애플리케이션의 일부에 사용될 수 있다.
CPU가 단순 LS 유닛 컴퓨팅 리소스를 사용하고 있을 때, 연관 LS 유닛 컴퓨팅 리소스가 다크 상태일 수 있다. 대안적으로, CPU가 연관 LS 유닛 컴퓨팅 리소스를 사용하는 경우, 단순 LS 단위 컴퓨팅 리소스가 다크 상태일 수 있다. 극저온 동작 또는 더 낮은(언더클로킹된) 클록 주파수와 같이 동작 조건이 타겟 TDP 내에 있도록 허용되는 경우, 단순 LS 유닛 컴퓨팅 리소스와 연관 LS 유닛 컴퓨팅 리소스 모두는 둘 중 하나가 사용되는 동안 활성 상태를 유지할 수 있다. 이 경우 단순 LS 유닛 컴퓨팅 리소스와 연관 LS 유닛 컴퓨팅 리소스 사이의 구성은 컴퓨팅 리소스를 다크에서 활성으로 전환하는 오버헤드를 발생시키지 않는다. 예를 들어, 전력 게이팅의 오버헤드가 방지된다.
CPU는 단순 LS 유닛과 연관 LS 유닛을 사용하는 사이에 CPU를 동적으로 구성하기 위한 동적 구성 로직을 포함할 수 있다. CPU가 내재된 메모리 레벨 병렬성이 높고 데이터 종속성이 상대적으로 적은 컴퓨팅 애플리케이션을 실행할 때, 이는 단순 LS 유닛 사용에서 연관 LS 유닛 사용으로 스위칭하도록 CPU를 구성하기 위해 동적 구성 로직을 트리거링하는 구성 보증 동작 조건일 수 있다. 그러나 컴퓨팅 애플리케이션에서 연관 LS 유닛의 스케줄링 및 중재가 더 이상 필요하지 않은 경우, 이는 단순 LS 유닛을 사용하도록 CPU를 동적으로 구성하기 위해 동적 구성 로직을 트리거링하는 구성 보증 동작 조건일 수도 있다.
상술한 바와 같이, CPU가 단순 LS 유닛 또는 연관 LS 유닛을 사용할 때, 현재 모드에서 사용되지 않는 특정 데이터 및 제어 경로와 데이터 스토리지 구조와 같은 대체 컴퓨팅 리소스는 전력을 절약하기 위해 다크 상태가 될 수 있다. 그러나, 예를 들어 극저온 동작에서와 같이 누설 전류가 감소된 경우에는, 클록 게이팅 또는 기타 저전력 상태는 현재 사용되지 않는 컴퓨팅 리소스를 활성 상태로 유지하기 위해 최소한의 전력 오버헤드로 사용될 수 있다. 그렇게 함으로써, 동적 구성 로직이 단순 LS 유닛 사용에서 연관 LS 유닛 사용으로 또는 그 반대로 스위칭하도록 CPU를 동적으로 구성하기로 결정하는 경우, 이는 컴퓨팅 리소스를 언다크닝할 필요 없이 신속하게 수행될 수 있다.
도 5는 일부 구현예에 따른 마이크로프로세서(100)의 코어(102-1)의 CPU(104-1) 내의 구성가능 로드/저장(LS) 유닛의 개략도이다. CPU(104-1)는 메모리 액세스(예를 들어, 로드 및 저장)에 대한 요청을 수신하는 구성가능 메모리 요청 발행 유닛(562)을 갖는다. 구성가능 발행 유닛(562)은 현재 구성에 따라 단순 LS 유닛(566) 또는 연관 LS 유닛(568)에 메모리 요청을 발행하도록 동적 구성 로직(562)에 의해 동적으로 구성된다. 연관 LS 유닛(568)은 향상된 메모리 스케줄링 또는 중재 로직을 포함할 수 있다. 이러한 로직은 다중 일관성 모델 또는 저장/로드 포워딩을 포함하여 다양한 메모리 순서로 구성될 수 있다.
예를 들어, 동적 구성 로직(562)은 구성 보증 동작 조건을 검출할 때 단순 LS 유닛(566) 또는 연관 LS 유닛(568)에 메모리 액세스 요청을 발행하도록 구성가능 발행 유닛(562)을 동적으로 구성할 수 있다. 예를 들어, 동적 구성 로직(562)은 시간 경과에 따라 기능 유닛의 활용을 추적할 수 있다. 기능 유닛이 현재 충분히 활용되지 않고 구성가능 발행 유닛(562)이 현재 연관 LS 모드에 있는 경우, 실행 중인 명령어에 메모리 레벨 병렬 처리가 충분하지 않을 수 있다. 따라서, 동적 구성 로직(564)은 연관 LS 유닛(568)의 에너지 및 컴퓨팅 오버헤드를 피하기 위해 단순 LS 유닛(566)을 사용하는 것으로 스위칭하도록 구성가능 발행 유닛(562)을 동적으로 구성할 수 있다.
단순 LS 유닛(566)과 연관 LS 유닛(568) 사이의 스위칭을 위한 다른 가능한 구성 보증 동작 조건은 컴파일러 지시문(compiler-directive), 명령어 또는 고급 프로그래밍 언어 컴파일러에 의해 실행된 명령어에 삽입된 힌트를 포함한다. 예를 들어, 컴파일링된 명령어의 메모리 명령어 레이트가 높은 경우(예를 들어, 컴파일링된 명령어 윈도우에서 총 동작당 메모리 동작의 관점에서), 컴파일러는 컴파일링된 코드에 명령어 또는 힌트를 삽입하여 명령어 윈도우에 더 큰 로드 저장 대기열이 사용됨을 나타낼 수 있다. 반면에, 명령어 윈도우의 메모리 명령어 레이트가 낮으면, 명령어 또는 힌트는 일반 크기 또는 더 작은 크기의 로드 저장 대기열이 명령어 윈도우에 사용됨을 나타낼 수 있다.
컴파일러가 메모리 명령어에 대한 어드레스를 잘 해결할 수 있고 컴파일러가 명령어 윈도우에 많은 독립적인 어드레스가 있다고 결정하면 컴파일러는 연관 LS 유닛(568)이 윈도우에 대한 메모리 레벨 병렬성을 증가시키기 위해 윈도우에 사용될 것을 지시하거나 암시할 수 있다. 컴파일러가 명령어 윈도우에 대해 컴파일 시간에 메모리 어드레스를 해결하는 데 어려움을 갖는 경우 연관 LS 유닛(568)의 재정렬 로직 또는 포워딩 로직을 비효율적으로 이용하는 것을 피하기 위해 윈도우가 실행될 때 단순 LS 유닛(566) 모드를 선호할 수 있다.
어드레스 예측 기술 또는 관찰된 어드레스를 추적하는 성능 카운터를 사용하는 실행 시간 어드레스 프로파일링은 동적 구성 로직에 의해 활용될 수 있다. 애플리케이션 프로그램 실행 동안 높은 메모리 레벨 병렬 처리 단계가 검출되면, 이는 동적 구성 로직에 의해 검출될 수 있고 단순 LS 유닛(566)을 사용하는 것으로부터 연관 LS 유닛(568)으로의 전환이 이루어질 수 있다. 반대로, 마이크로프로세서(100)가 연관 LS 유닛(568)에서 복잡한 로직을 활용하는 형편없는 일을 하고 있다면, 단순 LS 유닛(566)을 사용하는 것으로의 전환은 동적 구성 로직에 의해 이루어질 수 있다. 동적 구성 로직은 또한 구성 보증 동작 조건을 검출할 때 여분의 오버프로비저닝된 엔트리를 활성화하거나 사용하기 위해 단순 LS 유닛(566) 및 연관 LS 유닛(568)의 대기열 또는 다른 데이터 저장 구조를 동적으로 구성할 수 있다. 예를 들어, 동적 구성 로직은 마이크로프로세서(100)가 극저온 동작에 있음을 검출하거나 마이크로프로세서(100)가 언더클로킹되고 있음을 검출할 때 메모리 액세스 요청을 위해 단순 LS 유닛(566) 또는 연관 LS 유닛(568)에 더 많은 폭(가능한 더 큰 메모리 레벨 병렬 처리)을 제공하기 위해 여분의 오버프로비저닝된 엔트리를 사용하도록 단순 LS(566) 또는 연관 LS 유닛(568)을 활성화하고 동적으로 구성할 수 있다. 마이크로프로세서(100)가 더 이상 극저온 동작 상태가 아니거나 더 이상 언더클로킹되지 않음을 검출하면, 동적 구성 로직은 여분의 오버프로비저닝된 엔트리를 더 이상 사용하지 않도록 단순 LS(556) 또는 연관 LS 유닛(568)을 동적으로 구성할 수 있다.
구성가능 동시 멀티스레딩 프로세서
컴퓨팅 애플리케이션은 단일 스레드 방식과 다중 스레드 방식 모두로 실행되도록 프로그래밍될 수 있다. 실행 중에, 컴퓨팅 애플리케이션은 단일 스레드 실행과 다중 스레드 실행 간에 앞뒤로 스위칭할 수 있다. 일부 구현예에 따르면 단일 CPU 설계는 단일 스레드 실행과 다중 스레드 실행을 모두 최적화하기 위해 파이프라인 컴퓨팅 리소스로 오버프로비저닝될 수 있다.
도 6은 일부 구현예에 따른 마이크로프로세서(100)의 코어(102-1)의 구성가능 동시 멀티스레딩 CPU(104-1)의 개략도이다. CPU(104-1)는 다중 동시 실행 스레드를 지원하기 위해 다중 하드웨어 명령어 파이프라인을 갖는다. 각각의 파이프라인은 자신의 명령어 페치 유닛(670), 자신의 명령어 디코드 유닛(672), 자신의 구성가능 명령어 발행 유닛(674), 자신의 명령어 대기열(676) 및 자신의 기능 유닛 세트(678)를 갖는다. 또한, CPU(104-1)는 각각의 구성가능 명령어 발행 유닛(674)으로부터 하나 이상의 다른 하드웨어 파이프라인으로의 긴 제어 범위로 오버프로비저닝된이다. 도 6의 예에서, 각각의 구성가능 명령 발행 유닛(674)은 긴 제어 범위에 의해 서로 다른 하드웨어 파이프라인에 연결된다. 그러나 구성가능 명령어 유닛(674)은 긴 제어 범위에 의해 다른 모든 파이프라인보다 적은 파이프라인에 연결될 수도 있다.
이와 함께, CPU(104-1)가 단일 스레드 컴퓨팅 애플리케이션 또는 파이프라인 중 하나에서 컴퓨팅 애플리케이션의 단일 스레드 부분을 실행하는 경우, 다른 파이프라인의 프론트 엔드 컴퓨팅 리소스는 다크 상태이거나 활성 상태가 될 수 있지만 프론트 엔드 컴퓨팅 리소스가 전력을 보존하는 데 사용되지 않는 경우 저전력 상태(예를 들어, 클록 게이팅)가 된다. 프론트 엔드 컴퓨팅 리소스는 명령어 페치 유닛(670), 명령어 디코드 유닛(672) 및 구성가능 명령어 발행 유닛(674)을 포함한다.
또한, 이러한 상황에서, 단일 스레드를 실행하는 데 사용되는 파이프라인의 구성가능 명령어 발행 유닛(674)은 사용되지 않는 파이프라인의 백 엔드에 명령어를 발행할 수 있다. 이는 다른 파이프라인의 기능 유닛(678)을 사용하여 단일 스레드의 명령어를 실행하는 데 사용될 수 있도록 수행될 수 있다. 명령어는 극저온 동작 또는 언더클로킹된 클록 속도에서 사용 가능한 긴 제어 범위 동안 다른 파이프라인의 백 엔드에 발행될 수 있다.
예를 들어, 파이프라인 0이 단일 스레드를 실행 중이면, 파이프라인 0의 프론트 엔드 유닛(670-0, 672-0 및 674-0)과 백 엔드 유닛(676-0 및 678-0)을 사용하여 단일 스레드의 명령어를 페치하고, 디코딩하고, 발행하고, 실행할 수 있다. 이 시간 동안 파이프라인 1의 프론트 엔드 유닛(670-1, 672-01, 674-1)과 파이프라인 2의 프론트 엔드 유닛(670-2, 670-2, 674-2)이 다크 상태이거나 전력을 보존하는 데 사용되지 않기 때문에 저전력 상태에 있을 수 있다. 그러나 백 엔드 유닛(676-1, 678-1, 676-2, 678-2)은 이 시간 동안 사용될 수 있다. 특히, 파이프라인 0의 기능 유닛(678-0)이 거의 완전히 활용되거나 완전히 활용되었음을 나타내는 구성 보증 동작 조건을 검출하면, 구성가능 명령어 발행 유닛(674-0)은 다른 파이프라인(예를 들어, 파이프라인 1 또는 파이프라인 2)의 백 엔드로 긴 제어 범위에 걸쳐 명령어를 발행하기 시작하도록 동적으로 구성될 수 있다. 이러한 방식으로 파이프라인 0은 단일 스레드 애플리케이션 또는 그 일부를 실행할 때 자체 기능 유닛 세트(678-0) 외에 다른 파이프라인의 기능 유닛(678-1 또는 678-2)을 활용할 수 있다. 이는 단일 스레드의 전체 명령어 처리량을 증가시킨다.
컴퓨팅 애플리케이션이 다중 실행 스레드에 대한 스레드 산란(spawning)을 시작하면, 다른 파이프라인(예를 들어, 파이프라인 1 또는 파이프라인 2)의 프론트 엔드를 사용하여 여러 스레드가 별도의 파이프라인에서 동시에 실행할 수 있다. 이 경우에, 구성가능 명령어 발행 유닛(674-0)은 더 이상 다른 파이프라인(예를 들어, 파이프라인 1 또는 파이프라인 2)의 백 엔드로 제어의 클롱(klong) 범위를 통해 명령어를 발행하지 않도록 동적으로 구성될 수 있으며, 이는 이러한 백 엔드가 해당 파이프라인에서 실행되는 스레드에서 사용되기 때문이다.
도 6의 구성가능 동시 멀티스레딩 CPU(104-1)는 도 4의 하이브리드 순차/비순차 CPU(104-1)와 함께 조합될 수 있다는 점에 유의해야 한다. 이 구성에서, 각 파이프라인은 순차 및 비순차 명령어 실행 유닛과 연관된 컴퓨팅 리소스로 오버프로비저닝될 수 있다. 구성가능 명령어 발행 유닛(674)은 단일 스레드 모드에 있을 때 개별의 파이프라인 내에서 그리고 파이프라인에 걸쳐 순차 명령어 발행과 비순차 명령어 발행 사이에서 스위칭할 수 있다. 예를 들어, 단일 스레드가 실행 중인 파이프라인의 순차 명령어 실행 유닛 외에 다른 파이프라인의 순차 명령어 실행 유닛을 사용함으로써 낮은 레벨의 명령어 레벨 병렬성을 갖는 단일 스레드 애플리케이션의 명령어에 대한 명령어 실행 처리량이 향상될 수 있다.
구성가능한 레지스터 파일 크기
일부 구현예에 따르면, 마이크로프로세서(100)의 코어(예를 들어, 102-1)의 CPU(예를 들어, 104-1)의 레지스터 파일은 극저온 동작(전기 저항이 더 낮은 경우) 또는 더 낮은(언더클로킹된) 클록 주파수에서와 같은 특정 동작 조건에서 활성화(언다크닝)될 수 있는 추가 항목으로 오버프로비저닝된다. 레지스터 파일의 추가 용량/폭은 마이크로프로세서(100)가 다른 컴퓨팅 리소스의 활용도를 높일 수 있도록 한다. 예를 들어 오버프로비저닝된 레지스터 파일 외에도, 마이크로프로세서(100)는 또한 더 많은 기능 유닛, 기능 유닛 스케줄러, 명령어 대기열 엔트리, 분기 예측자 테이블 엔트리, 프리페처 테이블 엔트리, 재정렬 버퍼 엔트리, 온칩 캐시 엔트리, 로드 저장 대기열 엔트리, 캐시 방식 예측자 엔트리, op 코드 캐시 엔트리 또는 페치 버퍼 엔트리로 오버프로비저닝될 수 있다. 또한 래치, 플립 플롭, SRAM 구조, CAM 구조 등의 크기(데이터 용량)가 증가될 수 있다.
구성가능한 명령어 윈도우 크기
일부 구현예에 따르면 구성가능 명령어 윈도우 크기가 제공된다. 여기서, 명령어 윈도우 크기를 구현하는 CPU(예를 들어, 104-1) 또는 마이크로프로세서(100)의 코어(102-1)의 데이터 저장 구조는 극저온 동작(전기 저항이 더 낮은 경우) 또는 더 낮은(언더클로킹된) 클록 주파수에서와 같은 특정 동작 조건에서 활성화(언다크닝)될 수 있는 추가 엔트리로 오버프로비저닝될 수 있다. 이러한 데이터 저장 구조는 레지스터 파일, 리네임 테이블, 재정렬 버퍼 등을 포함할 수 있다. 이러한 추가 엔트리를 사용하여 명령어 윈도우 크기가 증가될 수 있다. 증가된 명령어 윈도우 크기가 필요하지 않은 경우 이러한 추가 오버프로비저닝된 엔트리가 다크 상태가 되거나 저전력 상태(예를 들어, 클록 게이팅)로 놓일 수 있다. 명령어 윈도우 크기를 늘리기 위해 추가 엔트리를 사용할지 여부는 컴퓨팅 애플리케이션의 명령어 또는 CPU에서 실행되는 컴퓨팅 애플리케이션 부분의 명령어 레벨 병렬 처리 레벨에 따라 달라질 수 있다. 명령어에 높은 레벨의 명령어 레벨 병렬성이 있는 경우, 추가 엔트리가 사용될 수 있다. 명령어에 낮은 레벨 또는 중간 레벨의 명령어 레벨 병렬 처리만 있는 경우 추가 엔트리가 다크 상태가 되거나 사용되지 않을 수 있다.
프로그래밍된 로직 지원
동적 구성 로직은 프로그래밍 가능하거나 구성가능한 에포크에 따라 활성화 보증, 비활성화 보증 및 구성 보증 동작 조건을 주기적으로 검사하도록 프로그래밍되거나 구성될 수 있다. 에포크는 예를 들어 클록 사이클의 수 또는 나노초의 수로 프로그래밍되거나 구성될 수 있다. 또한 동적 구성 로직은 카운터 및 기타 데이터를 유지 관리하여 동작 조건이 충족되는지 또는 더 이상 충족되지 않는지 여부와 시기를 결정할 수 있다. 이러한 카운터는 활용되고 있는 데이터 저장 구조의 엔트리 수, 메모리 명령어 레이트, 캐시 미스 레이트, 대역폭 사용량 등을 포함할 수 있다. 이러한 카운터 및 데이터를 기반으로 동적 구성 로직은 동작 조건이 충족되었는지 판단하고 그에 따라 컴퓨팅 리소스를 다크 상태, 활성 대기 및 비대기 활성 상태 사이에서 전환할 수 있다.
컴파일러 기반 구성도 지원될 수 있다. 예를 들어, C, C++ 등과 같은 고급 프로그래밍 언어로 프로그래밍된 컴퓨팅 애플리케이션의 프로그래밍된 명령어를 컴파일링할 때, 컴파일러는 프로그래밍된 명령어를 컴파일 명령어(머신 코드)로 컴파일링하는 동안 획득된 프로그래밍된 명령어에 의한 레지스터 파일 사용에 대한 컴파일러의 지식을 기반으로 컴파일링된 명령어에 명령어 힌트를 추가하여 레지스터 파일의 추가 오버프로비저닝된 엔트리를 사용할 수 있다. 실행 시 명령어 힌트는 동적 구성 로직과 컴파일링된 명령어 실행될 때 사용되는 레지스터 파일의 여분의 오버프로비저닝된 엔트리에 의해 검출될 수 있다. 힌트는 컴퓨팅 애플리케이션의 모든 컴파일링된 명령어 또는 일부에만 적용될 수 있다.
운영 체제 구성도 지원될 수 있다. 예를 들어, 단일 스레드 컴퓨팅 애플리케이션을 실행하는 운영 체제는 예를 들어 운영 체제에 시스템 호출을 발행함으로써 컴퓨팅 애플리케이션이 여러 스레드를 생성했음을 검출하면 CPU에 대한 시스템 호출 또는 기타 낮은 레벨 호출을 실행할 수 있다. 동적 구성 로직은 운영 체제의 시스템 호출 또는 낮은 레벨 호출을 검출하고 예를 들어 도 6과 관련하여 위에서 설명된 것처럼 단일 스레드 모드에서 동시 다중 스레드 모드로 CPU의 파이프라인을 동적으로 구성할 수 있다.
결론
따라서, 동적으로 구성가능한 오버프로비저닝된 마이크로프로세서가 개시된다. 마이크로프로세서는 대체 컴퓨팅 리소스, 긴 제어 범위 또는 여분의 헤드룸이 있는 데이터 저장 구조와 같은 컴퓨팅 리소스로 오버프로비저닝될 수 있다. 동적 구성 로직은 컴퓨팅 처리량과 에너지 사용 간의 균형을 유지하기 위해 다크 상태, 저전력 상태 및 사용 중인 상태 간에 컴퓨팅 리소스를 전환하는 것을 보증하는 동작 조건을 검출할 수 있다. 일부 구현예에서는 예를 들어 긴 제어 범위와 같은 특정 오버프로비저닝된 컴퓨팅 리소스가 극저온 동작 또는 언더클로킹과 같은 특정 동작 조건에서만 사용되는 반면, 다른 오버프로비저닝된 컴퓨팅 리소스는 현재 사용되지 않는 컴퓨팅 리소스를 전력 게이팅에 의해 다크 상태로 만들거나 클록 게이팅에 의해 저전력 상태로 만들어 실온 동작의 대상 클록 주파수에서 계속 사용할 수 있다. 예를 들어, 전력 밀도를 줄이고 타겟 TDP 내에 머물기 위해 사용되지 않는 다른 컴퓨팅 리소스를 다크 상태로 만들거나 클록 게이팅함으로써 실온 동작에서 타겟 클록 주파수에서 레지스터 파일의 여분의 오버프로비저닝된 헤드룸을 사용할 수 있다.
본 개시의 다른 양태
문맥상 명백히 다르게 지시되지 않는 한, 용어 "또는"은 포괄적인 의미로(독점적인 의미가 아님) 전술한 명세서 및 첨부된 청구범위에서 사용되어 예를 들어 요소 목록을 연결하는 데 사용되는 경우 "또는"이라는 용어가 목록의 요소 중 하나, 일부 또는 모두를 의미하도록 한다.
문맥상 명백히 다르게 지시되지 않는 한, "포함하는(comprising)", "포함하는(including)", "갖는(having)", "기초로 하는(based on)", "포함하는(encompassing)" 등의 용어는 전술한 명세서 및 첨부된 청구범위에서 개방형 방식으로 사용되며, 추가 요소, 특징, 행위 또는 동작을 제외하지 않는다.
문맥상 명백히 다르게 지시되지 않는 한, "X, Y 및 Z 중 적어도 하나"라는 구와 같은 접속어는 항목, 용어 등이 X, Y 또는 Z 또는 이들의 조합일 수 있음을 전달하는 것으로 이해되어야 한다. 따라서, 그러한 접속어는 특정 구현이 X 중 적어도 하나, Y 중 적어도 하나 및 Z 중 적어도 하나가 각각 존재할 것을 요구한다는 것을 암시하도록 의도되지 않는다.
문맥상 명백히 다르게 지시되지 않는 한, 전술한 상세한 설명 및 첨부된 청구범위에서 사용된 단수형("a", "an" 및 "the")은 복수형도 포함하는 것으로 의도된다.
문맥상 명백히 다르게 지시되지 않는 한, 전술한 상세한 설명 및 첨부된 특허청구범위에서, 제1, 제2 등의 용어가 일부 경우에 다양한 요소를 설명하기 위해 본 명세서에서 사용되지만, 이러한 요소는 이러한 용어에 의해 제한되어서는 안 된다. 이러한 용어는 하나의 요소를 다른 요소와 구별하는 데에만 사용된다. 예를 들어, 제1 컴퓨팅 디바이스는 제2 컴퓨팅 디바이스로 칭할 수 있고, 유사하게, 제2 컴퓨팅 디바이스는 제1 컴퓨팅 디바이스로 칭할 수 있다. 제1 컴퓨팅 디바이스 및 제2 컴퓨팅 디바이스는 둘 모두 컴퓨팅 디바이스이지만, 이들은 동일한 컴퓨팅 디바이스가 아니다.
전술한 명세서에서, 일부 구현예는 구현마다 다를 수 있는 많은 특정 세부사항을 참조하여 설명되었다.따라서, 명세서 및 도면은 제한적인 의미보다는 예시적인 것으로 간주되어야 한다. 발명의 범위 및 발명의 범위가 되도록 출원인이 의도하는 것의 유일하고 배타적인 지표는 후속 정정을 포함하여 해당 청구가 발행하는 특정 형식으로 이 출원에서 발행하는 청구항 세트의 문자적이고 동등한 범위이다.

Claims (20)

  1. 오버프로비저닝된 마이크로프로세서(overprovisioned microprocessor)로서,
    제1 물리적 컴퓨팅 리소스(physical compute resource);
    동적 구성 로직(dynamic configuration logic)으로서:
    활성화 보증 동작 조건을 검출하고;
    상기 활성화 보증 동작 조건을 검출하는 것에 응답하여 상기 제1 물리적 컴퓨팅 리소스를 언다크닝하고(undarkening);
    구성 보증 동작 조건을 검출하고;
    상기 구성 보증 동작 조건을 검출하는 것에 응답하여 상기 언다크닝된 제1 물리적 컴퓨팅 리소스를 사용하도록 상기 오버프로비저닝된 마이크로프로세서를 동적으로 구성가능한, 상기 동적 구성 로직을 포함하는, 오버프로비저닝된 마이크로프로세서.
  2. 제1항에 있어서, 상기 동적 구성 로직은 또한:
    상기 오버프로비저닝된 마이크로프로세서의 극저온 동작을 검출하고;
    상기 오버프로비저닝된 마이크로프로세서의 극저온 동작을 검출하는 것에 응답하는 상기 제1 물리적 컴퓨팅 리소스를 언다크닝가능한, 오버프로비저닝된 마이크로프로세서.
  3. 제1항에 있어서,
    제2 물리적 컴퓨팅 리소스; 및
    상기 제1 물리적 컴퓨팅 리소스를 상기 제2 물리적 컴퓨팅 리소스에 연결하는 긴 제어 범위(long span of control)를 더 포함하는, 오버프로비저닝된 마이크로프로세서.
  4. 제1항에 있어서,
    물리적 컴퓨팅 리소스들의 제1 세트를 포함하는 순차 명령어 실행 파이프라인;
    컴퓨팅 리소스들의 제2 세트를 포함하는 비순차 명령어 실행 파이프라인을 더 포함하고;
    상기 제1 물리적 컴퓨팅 리소스는 상기 물리적 컴퓨팅 리소스들의 제1 세트 중 하나이고; 및
    상기 동적 구성 로직은 상기 구성 보증 동작 조건을 검출하는 것에 응답하여 컴퓨팅 애플리케이션의 명령어를 실행하기 위해 상기 순차 명령어 실행 파이프라인을 사용하고 상기 컴퓨팅 애플리케이션의 명령어를 실행하기 위해 상기 비순차 명령어 실행 파이프라인을 더 이상 사용하지 않도록 상기 오버프로비저닝된 마이크로프로세서를 동적으로 구성가능한, 오버프로비저닝된 마이크로프로세서.
  5. 제1항에 있어서,
    물리적 컴퓨팅 리소스들의 제1 세트를 포함하는 순차 명령어 실행 파이프라인;
    컴퓨팅 리소스들의 제2 세트를 포함하는 비순차 명령어 실행 파이프라인을 더 포함하고;
    상기 제1 물리적 컴퓨팅 리소스는 상기 물리적 컴퓨팅 리소스들의 제2 세트 중 하나이고; 및
    상기 동적 구성 로직은 상기 구성 보증 동작 조건을 검출하는 것에 응답하여 컴퓨팅 애플리케이션의 명령어를 실행하기 위해 상기 비순차 명령어 실행 파이프라인을 사용하고 상기 컴퓨팅 애플리케이션의 명령어를 실행하기 위해 상기 순차 명령어 실행 파이프라인을 더 이상 사용하지 않도록 상기 오버프로비저닝된 마이크로프로세서를 동적으로 구성가능한, 오버프로비저닝된 마이크로프로세서.
  6. 제1항에 있어서,
    물리적 컴퓨팅 리소스들의 제1 세트를 포함하는 단순 로드 저장 유닛;
    컴퓨팅 리소스들의 제2 세트를 포함하는 연관 로드 저장 유닛을 더 포함하고;
    상기 제1 물리적 컴퓨팅 리소스는 상기 물리적 컴퓨팅 리소스들의 제1 세트 중 하나이고;
    상기 동적 구성 로직은 상기 구성 보증 동작 조건을 검출하는 것에 응답하여 메모리 액세스 요청을 실행하기 위해 상기 단순 로드 저장 유닛을 사용하고 메모리 액세스 요청을 실행하기 위해 상기 연관 로드 저장 유닛을 더 이상 사용하지 않도록 상기 오버프로비저닝된 마이크로프로세서를 동적으로 구성가능한, 오버프로비저닝된 마이크로프로세서.
  7. 제1항에 있어서,
    물리적 컴퓨팅 리소스들의 제1 세트를 포함하는 단순 로드 저장 유닛;
    컴퓨팅 리소스들의 제2 세트를 포함하는 연관 로드 저장 유닛을 더 포함하고;
    상기 제1 물리적 컴퓨팅 리소스는 상기 물리적 컴퓨팅 리소스들의 제2 세트 중 하나이고;
    상기 동적 구성 로직은 상기 구성 보증 동작 조건을 검출하는 것에 응답하여 메모리 액세스 요청을 실행하기 위해 상기 연관 로드 저장 유닛을 사용하고 메모리 액세스 요청을 실행하기 위해 더 이상 상기 단순 로드 저장 유닛을 사용하지 않도록 상기 오버프로비저닝된 마이크로프로세서를 동적으로 구성가능한, 오버프로비저닝된 마이크로프로세서.
  8. 제1항에 있어서,
    복수의 파이프라인들 - 여기서, 상기 복수의 파이프라인들의 각각의 파이프라인은 프론트 엔드 컴퓨팅 리소스들의 개별의 세트와 백 엔드 컴퓨팅 리소스들의 개별의 세트를 갖고, 상기 프론트 엔드 컴퓨팅 리소스들의 개별의 세트는 개별의 명령어 페치 유닛을 포함하고, 상기 백 엔드 컴퓨팅 리소스들의 개별의 세트는 기능 유닛들의 개별의 세트를 포함함 -;
    상기 복수의 파이프라인들인 중 제1 파이프라인의 상기 프론트 엔드 컴퓨팅 리소스들의 개별의 세트의 컴퓨팅 리소스를 상기 파이프라인의 제2 파이프라인의 상기 백 엔드 컴퓨팅 리소스들의 상기 개별의 세트의 컴퓨팅 리소스에 연결하는 적어도 하나의 긴 제어 범위를 더 포함하는, 오버프로비저닝된 마이크로프로세서.
  9. 제8항에 있어서,
    상기 제2 파이프라인의 상기 백 엔드 컴퓨팅 리소스들의 개별의 세트의 컴퓨팅 리소스에 상기 긴 제어 범위에 걸쳐 상기 제1 파이프라인에서 실행되는 단일 스레드 컴퓨팅 애플리케이션의 명령어를 발송가능한 상기 제1 파이프라인의 상기 프론트 엔드 컴퓨팅 리소스들의 개별 세트의 구성가능 명령어 발행 유닛을 더 포함하는, 오버프로비저닝된 마이크로프로세서.
  10. 제1항에 있어서,
    상기 제1 물리적 컴퓨팅 리소스는 데이터 저장 구조의 하나 이상의 오버프로비저닝된 엔트리들인, 오버프로비저닝된 마이크로프로세서.
  11. 제10항에 있어서,
    상기 데이터 저장 구조는 대기열, 레지스터 파일, 리네임 테이블 또는 재정렬 버퍼인, 오버프로비저닝된 마이크로프로세서.
  12. 오버프로비저닝된 마이크로프로세서 코어로서,
    제1 물리적 컴퓨팅 리소스;
    동적 구성 로직으로서:
    활성화 보증 동작 조건을 검출하고;
    상기 활성화 보증 동작 조건을 검출하는 것에 응답하여 상기 제1 물리적 컴퓨팅 리소스를 언다크닝하고;
    구성 보증 동작 조건을 검출하고;
    상기 구성 보증 동작 조건을 검출하는 것에 응답하여 상기 제1 물리적 컴퓨팅 리소스를 활성 대기 전력 상태에서 비대기 전력으로 동적으로 전환가능한, 상기 동적 구성 로직을 포함하는, 오버프로비저닝된 마이크로프로세서 코어.
  13. 제12항에 있어서, 상기 동적 구성 로직은 또한:
    상기 오버프로비저닝된 마이크로프로세서 코어의 극저온 동작을 검출하고;
    집적 회로의 극저온 동작을 검출하는 것에 응답하는 상기 제1 물리적 컴퓨팅 리소스를 언다크닝가능한, 오버프로비저닝된 마이크로프로세서 코어.
  14. 제12항에 있어서,
    제2 물리적 컴퓨팅 리소스; 및
    상기 제1 물리적 컴퓨팅 리소스를 상기 제2 물리적 컴퓨팅 리소스에 연결하는 긴 제어 범위를 더 포함하는, 오버프로비저닝된 마이크로프로세서 코어.
  15. 제12항에 있어서,
    물리적 컴퓨팅 리소스들의 제1 세트를 포함하는 순차 명령어 실행 파이프라인;
    컴퓨팅 리소스들의 제2 세트를 포함하는 비순차 명령어 실행 파이프라인을 더 포함하고;
    상기 제1 물리적 컴퓨팅 리소스는 상기 물리적 컴퓨팅 리소스들의 제1 세트 중 하나이고;
    상기 동적 구성 로직은 상기 구성 보증 동작 조건을 검출하는 것에 응답하여 컴퓨팅 애플리케이션의 명령어를 실행하기 위해 상기 순차 명령어 실행 파이프라인을 사용하고 상기 컴퓨팅 애플리케이션의 명령어를 실행하기 위해 상기 비순차 명령어 실행 파이프라인을 더 이상 사용하지 않도록 상기 오버프로비저닝된 마이크로프로세서 코어를 동적으로 구성가능한, 오버프로비저닝된 마이크로프로세서 코어.
  16. 제12항에 있어서,
    물리적 컴퓨팅 리소스들의 제1 세트를 포함하는 순차 명령어 실행 파이프라인;
    컴퓨팅 리소스들의 제2 세트를 포함하는 비순차 명령어 실행 파이프라인을 더 포함하고;
    상기 제1 물리적 컴퓨팅 리소스는 상기 물리적 컴퓨팅 리소스들의 제2 세트 중 하나이고;
    상기 동적 구성 로직은 상기 구성 보증 동작 조건을 검출하는 것에 응답하여 컴퓨팅 애플리케이션의 명령어를 실행하기 위해 상기 비순차 명령어 실행 파이프라인을 사용하고 상기 컴퓨팅 애플리케이션의 명령어를 실행하기 위해 상기 순차 명령어 실행 파이프라인을 더 이상 사용하지 않도록 상기 오버프로비저닝된 마이크로프로세서를 동적으로 구성가능한, 오버프로비저닝된 마이크로프로세서 코어.
  17. 제12항에 있어서,
    물리적 컴퓨팅 리소스들의 제1 세트를 포함하는 단순 로드 저장 유닛;
    컴퓨팅 리소스들의 제2 세트를 포함하는 연관 로드 저장 유닛을 더 포함하고;
    상기 제1 물리적 컴퓨팅 리소스는 상기 물리적 컴퓨팅 리소스들의 제1 세트 중 하나이고;
    상기 동적 구성 로직은 상기 구성 보증 동작 조건을 검출하는 것에 응답하여 메모리 액세스 요청을 실행하기 위해 상기 단순 로드 저장 유닛을 사용하고 메모리 액세스 요청을 실행하기 위해 상기 연관 로드 저장 유닛을 더 이상 사용하지 않도록 상기 오버프로비저닝된 마이크로프로세서 코어를 동적으로 구성가능한, 오버프로비저닝된 마이크로프로세서 코어.
  18. 제12항에 있어서,
    물리적 컴퓨팅 리소스들의 제1 세트를 포함하는 단순 로드 저장 유닛;
    컴퓨팅 리소스들의 제2 세트를 포함하는 연관 로드 저장 유닛을 더 포함하고;
    상기 제1 물리적 컴퓨팅 리소스는 상기 물리적 컴퓨팅 리소스들의 제2 세트 중 하나이고;
    상기 동적 구성 로직은 상기 구성 보증 동작 조건을 검출하는 것에 응답하여 메모리 액세스 요청을 실행하기 위해 상기 연관 로드 저장 유닛을 사용하고 메모리 액세스 요청을 실행하기 위해 더 이상 상기 단순 로드 저장 유닛을 사용하지 않도록 상기 오버프로비저닝된 마이크로프로세서 코어를 동적으로 구성가능한, 집적 회로.
  19. 제12항에 있어서,
    복수의 파이프라인들 - 여기서, 상기 복수의 파이프라인들의 각각의 파이프라인은 프론트 엔드 컴퓨팅 리소스들의 개별의 세트와 백 엔드 컴퓨팅 리소스들의 개별의 세트를 갖고, 상기 프론트 엔드 컴퓨팅 리소스들의 개별의 세트는 개별의 명령어 페치 유닛을 포함하고, 상기 백 엔드 컴퓨팅 리소스들의 개별의 세트는 기능 유닛들의 개별의 세트를 포함함 -;
    상기 복수의 파이프라인들인 중 제1 파이프라인의 상기 프론트 엔드 컴퓨팅 리소스들의 개별의 세트의 컴퓨팅 리소스를 상기 파이프라인의 제2 파이프라인의 상기 백 엔드 컴퓨팅 리소스들의 상기 개별의 세트의 컴퓨팅 리소스에 연결하는 적어도 하나의 긴 제어 범위를 더 포함하는, 집적 회로.
  20. 제19항에 있어서,
    상기 제2 파이프라인의 상기 백 엔드 컴퓨팅 리소스들의 개별의 세트의 컴퓨팅 리소스에 상기 긴 제어 범위에 걸쳐 상기 제1 파이프라인에서 실행되는 단일 스레드 컴퓨팅 애플리케이션의 명령어를 발송가능한 상기 제1 파이프라인의 상기 프론트 엔드 컴퓨팅 리소스들의 개별 세트의 구성가능 명령어 발행 유닛을 더 포함하는, 오버프로비저닝된 마이크로프로세서 코어.
KR1020237013547A 2020-09-30 2021-09-28 동적으로 구성가능한 오버프로비저닝된 마이크로프로세서 KR20230075480A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/037,727 US20220100563A1 (en) 2020-09-30 2020-09-30 Dynamically configurable overprovisioned microprocessor
US17/037,727 2020-09-30
PCT/US2021/052462 WO2022072377A1 (en) 2020-09-30 2021-09-28 Dynamically configurable overprovisioned microprocessor

Publications (1)

Publication Number Publication Date
KR20230075480A true KR20230075480A (ko) 2023-05-31

Family

ID=80822561

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237013547A KR20230075480A (ko) 2020-09-30 2021-09-28 동적으로 구성가능한 오버프로비저닝된 마이크로프로세서

Country Status (6)

Country Link
US (1) US20220100563A1 (ko)
EP (1) EP4222593A1 (ko)
JP (1) JP2023544004A (ko)
KR (1) KR20230075480A (ko)
CN (1) CN116420140A (ko)
WO (1) WO2022072377A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102639415B1 (ko) * 2023-07-18 2024-02-23 메티스엑스 주식회사 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10725510B2 (en) * 2018-03-16 2020-07-28 Microsoft Technology Licensing, Llc Device configuration-based thermal management control

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8725886B1 (en) * 2006-10-20 2014-05-13 Desktone, Inc. Provisioned virtual computing
US7856549B2 (en) * 2007-01-24 2010-12-21 Hewlett-Packard Development Company, L.P. Regulating power consumption
US7962774B2 (en) * 2007-10-04 2011-06-14 Wisconsin Alumni Research Foundation Over-provisioned multicore processor
US9251033B2 (en) * 2011-07-07 2016-02-02 Vce Company, Llc Automatic monitoring and just-in-time resource provisioning system
US11789769B2 (en) * 2013-09-20 2023-10-17 Qualcomm Incorporated System and method for generation of event driven, tuple-space based programs
US9921866B2 (en) * 2014-12-22 2018-03-20 Intel Corporation CPU overprovisioning and cloud compute workload scheduling mechanism
FR3035243B1 (fr) * 2015-04-20 2018-06-29 Commissariat A L'energie Atomique Et Aux Energies Alternatives Placement d'une tache de calcul sur un processeur fonctionnellement asymetrique
US9848041B2 (en) * 2015-05-01 2017-12-19 Amazon Technologies, Inc. Automatic scaling of resource instance groups within compute clusters
US10658987B2 (en) * 2017-12-18 2020-05-19 Rambus Inc. Amplifier circuit for cryogenic applications
US11385863B2 (en) * 2018-08-01 2022-07-12 Hewlett Packard Enterprise Development Lp Adjustable precision for multi-stage compute processes
US10956168B2 (en) * 2019-03-08 2021-03-23 International Business Machines Corporation Post completion execution in an out-of-order processor design
US11895808B2 (en) * 2020-05-27 2024-02-06 Nvidia Corporation Intelligent refrigeration-assisted data center liquid cooling

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102639415B1 (ko) * 2023-07-18 2024-02-23 메티스엑스 주식회사 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서

Also Published As

Publication number Publication date
EP4222593A1 (en) 2023-08-09
US20220100563A1 (en) 2022-03-31
JP2023544004A (ja) 2023-10-19
CN116420140A (zh) 2023-07-11
WO2022072377A1 (en) 2022-04-07

Similar Documents

Publication Publication Date Title
US11755099B2 (en) Dynamic core selection for heterogeneous multi-core systems
US20070124736A1 (en) Acceleration threads on idle OS-visible thread execution units
US20080028183A1 (en) Processor architecture for multipass processing of instructions downstream of a stalled instruction
JP2013532331A (ja) 第1コア型と第2コア型を結合することにより電力性能効率を改善させる装置、方法及びシステム
US8806181B1 (en) Dynamic pipeline reconfiguration including changing a number of stages
JP2009505279A (ja) 最大パワーを制御するためのマイクロプロセッサ・リソースの相互排除アクティブ化のためのシステム及び方法
Gibson et al. Forwardflow: A scalable core for power-constrained CMPs
KR20230075480A (ko) 동적으로 구성가능한 오버프로비저닝된 마이크로프로세서
Sim et al. An adaptive multitasking superscalar processor
Sasaki et al. Energy-efficient dynamic instruction scheduling logic through instruction grouping
Shieh et al. Saving register-file static power by monitoring instruction sequence in ROB
Packirisamy et al. Efficiency of thread-level speculation in SMT and CMP architectures-performance, power and thermal perspective
Österberg Profiling memory accesses on the ODROID-XU4
Chidai et al. A Tightly Coupled Heterogeneous Core with Highly Efficient Low-Power Mode
Sasaki et al. Dynamic instruction cascading on gals microprocessors
Jones et al. Compiler directed issue queue energy reduction
Suijkerbuijk et al. Implementing Hardware Multithreading in a VLIW Architecture.
Jianwu et al. Survey on microprocessor architecture and development trends
Lv et al. A Novel Compiler Assisted Approach for Issue Queue Power Reduction
Xiao et al. A low-power register file based on access queues for multi-issue processors
Packirisamy et al. Performance and power comparison of Thread Level Speculation in SMT and CMP architectures
Panda et al. Power-efficient Processor Architecture
Chu POERS: a performance-oriented energy reduction scheduling technique for a high-performance MPSoC architecture