KR101496062B1 - 명령들의 클래스 및 콘텐츠에 기초한 프로세서 전력 관리 - Google Patents

명령들의 클래스 및 콘텐츠에 기초한 프로세서 전력 관리 Download PDF

Info

Publication number
KR101496062B1
KR101496062B1 KR1020137006957A KR20137006957A KR101496062B1 KR 101496062 B1 KR101496062 B1 KR 101496062B1 KR 1020137006957 A KR1020137006957 A KR 1020137006957A KR 20137006957 A KR20137006957 A KR 20137006957A KR 101496062 B1 KR101496062 B1 KR 101496062B1
Authority
KR
South Korea
Prior art keywords
macro
instruction
floating
byte
units
Prior art date
Application number
KR1020137006957A
Other languages
English (en)
Other versions
KR20130054375A (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 KR20130054375A publication Critical patent/KR20130054375A/ko
Application granted granted Critical
Publication of KR101496062B1 publication Critical patent/KR101496062B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • 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/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3237Power saving characterised by the action undertaken by disabling clock generation or distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

프로세서 및 방법이 기술된다. 일 실시예에서, 프로세서는 매크로 명령들을 저장하는 프리페치 버퍼를 포함한다. 프로세서는 프로세서 내의 기능 유닛들 중 적어도 일부에 클록 신호를 제공할 수 있는 클록 회로를 또한 포함한다. 프로세서는 각각의 매크로 명령의 클래스를 결정할 수 있는 매크로 명령 디코드 로직을 또한 포함한다. 프로세서는 디코딩되는 현재 매크로 명령에 작용하지 않는 프로세서의 유닛들 중 적어도 하나에 들어가는 적어도 하나의 클록 사이클 동안 클록 신호가 정상 상태에 머물게 할 수 있는 클록 관리 유닛을 또한 포함한다. 마지막으로, 프로세서는 제1 매크로 명령을 하나 이상의 연산 코드들로 디코딩할 수 있는 적어도 하나의 명령 디코더 유닛을 또한 포함한다.

Description

명령들의 클래스 및 콘텐츠에 기초한 프로세서 전력 관리{PROCESSOR POWER MANAGEMENT BASED ON CLASS AND CONTENT OF INSTRUCTIONS}
본 발명은 소정의 명령 클래스에 대해 또는 명령 내의 특정 콘텐츠에 대해 사용되지 않는 프로세서의 개별적인 부분들을 클록 게이팅해서 프로세서의 전력 소비를 관리하는 것에 관한 것이다.
명령 파이프라인의 특정 스테이지들에서 동작하는 중앙 처리 장치(CPU)의 다수의 상이한 기능 유닛들이 있다. 명령의 클래스 또는 명령 내의 콘텐츠에 따라, 이러한 기능 유닛들 전부가 동시에 사용되지는 않는 경우가 종종 있다. 따라서, 한 CPU 내의 모든 기능 유닛들이 동시에 온이어야만 할 고유한 이유는 없다. 오히려, 일부 유닛들은 임의의 소정의 시간에 조작할 데이터를 갖지 않을 수 있다. 기능 유닛이 조작할 데이터를 갖지 않을 때, 그것은 실질적으로 유휴 상태이다. 그러나, 액티브 클록이 여전히 제공되는 이러한 유휴 유닛들은 수신된 클록 신호로 인해 유닛 도처에서 래치들의 끊임없는 스위칭(즉, 토글링)을 통해 전력 소비를 경험할 것이다.
x86 명령들은 수 개의 필드들을 포함한다. 가장 기본적인 필드들 중 3개는 명령 연산 코드(instruction opcode) 필드(예를 들어, 이동, 시프트 등), 직접 피연산자(immediate operand) 필드, 및 변위 바이트(displacement bytes) 필드이다. 명령 파이프라인 내의 다수의 기능 유닛들이 이러한 필드들을 다루는 회로를 갖더라도, 파이프라인을 통해 이동하는 일부 명령들은 어떠한 변위 바이트 정보 또는 직접 피연산자 정보도 포함하지 않는다. 이러한 경우에, 이러한 필드들을 채우는 데이터는 사용되지 않으며, 일반적으로 랜덤 데이터 비트들로 구성된다. 명령이 파이프라인을 통해 이동함에 따라, 이러한 필드들이 사용되지 않더라도, 기능 유닛들은 여전히 이러한 정보를 입력하는 그들의 래치들에서의 스위칭을 겪을 것이다. 이러한 스위칭은 CPU의 기능 유닛들 내의 전력 소비를 더 증가시킨다.
본 발명은 일례로서 도시된 것이고 도면들에 의해 제한되지 않으며, 도면들에서, 유사한 참조 부호들은 유사한 요소들을 나타낸다.
도 1은 시스템의 적어도 하나의 프로세서 내에서 실행되는 명령들의 클래스 및 콘텐츠에 기초하여 프로세서 전력 소비를 관리할 수 있는 컴퓨터 시스템의 일 실시예를 도시한다.
도 2는 명령 클래스 결정 및 명령 콘텐츠 결정을 통해 코어 전력 소비를 관리하는 능력을 코어에게 허용하는 소정의 코어 내의 특정 관련 유닛들 및 기능 로직 블록들을 도시한다.
도 3은 명령 파이프라인을 통해 부동 소수점 마이크로 오퍼레이션들을 추적하는 데 사용되는 상태 기계의 일 실시예를 도시한다.
도 4는 디코더에 들어가는 현재 명령을 디코딩하도록 구성되지 않은 디코더의 하나 이상의 프로그래밍 가능 로직 어레이들을 클록 게이팅하는 프로세스의 일 실시예의 흐름도이다.
도 5는 브랜치 명령이 파이프라인에서 디코딩되고 있지 않을 때 브랜치 유닛을 클록 게이팅하는 프로세스의 일 실시예의 흐름도이다.
도 6은 부동 소수점 명령이 명령 파이프라인에 존재하지 않을 때 부동 소수점 유닛을 클록 게이팅하는 프로세스의 일 실시예의 흐름도이다.
도 7은 한 명령이 직접 및 변위 바이트 필드들을 사용하지 않을 때 그 명령의 직접 및 변위 바이트 필드들을 제로 아웃(zero out)하는 프로세스의 일 실시예의 흐름도이다.
명령 파이프라인 내의 명령들의 클래스 및 콘텐츠에 기초하여 프로세서 전력을 관리하는 프로세서 및 방법의 실시예들이 기술된다.
도 1은 시스템의 적어도 하나의 프로세서 내에서 실행되는 명령들의 클래스 및 콘텐츠에 기초하여 프로세서 전력 소비를 관리할 수 있는 컴퓨터 시스템의 일 실시예를 도시한다.
컴퓨터 시스템(100)이 도시되어 있다. 컴퓨터 시스템은 데스크탑, 서버, 워크스테이션, 랩탑, 핸드헬드, 텔레비전 셋탑, 미디어 센터, 게임 콘솔, 통합 시스템(예를 들어, 자동차 안), 또는 다른 타입의 컴퓨터 시스템일 수 있다. 몇몇 실시예들에서, 컴퓨터 시스템(100)은, "프로세서들"이라고도 하는, 하나 이상의 중앙 처리 장치(CPU)을 포함한다. 다수의 실시예들에서, 잠재적으로 다수의 CPU들이 있더라도, 도 1에 도시된 실시예에서는 단순성을 위해 CPU(102)만이 도시되어 있다. CPU(102)는 Intel® 코포레이션 CPU 또는 다른 브랜드의 CPU일 수 있다. CPU(102)는 상이한 실시예들에서 하나 이상의 코어들을 포함한다. CPU(102)는 4개의 코어들(코어들 104, 106, 108, 110)을 포함하는 것으로 도시되어 있다.
다수의 실시예들에서, 각각의 코어는, 예를 들어, 코어(104)의 확대된 도면에 도시된 것들과 같은 수 개의 내부 기능 블록들/유닛들/로직 컴포넌트들을 포함한다. 예를 들어, 코어(104)는 적어도 명령/데이터(즉, 레벨 1, L1) 캐시들(112), 프리페치 버퍼(114), 프리디코드 캐시(116), 명령 디코더(118), 브랜치 어드레스 계산 유닛(120), 명령 큐(122), 부동 소수점 실행 유닛(124), 할당/퇴거(allocation/retirement) 유닛(126), 및 클록 관리/생성 로직(128)을 포함한다. 이러한 유닛들 및 로직 컴포넌트들 중 몇몇은 도 2와 관련하여 아주 상세히 후술될 것이다. 일반적으로, 도시된 유닛들 각각의 수 개의 복사본들의 가능성을 포함하여 코어(104)에 도시된 유닛들보다 각각의 코어 내에 더 많은 유닛들, 레지스터들, 및 다른 회로가 있지만(예를 들어, 하나 이상의 정수/어드레스 실행 유닛들, 3개의 부동 소수점 유닛들 등), 도 1의 중요한 요소들의 명료성을 유지하기 위해 추가 유닛들은 도시되지 않는다.
싱글 스레드 방식(single-threaded) 코어에서, 각각의 코어는 하드웨어 스레드라고 할 수 있다. 코어가 멀티 스레드 방식(multi-threaded) 또는 하이퍼 스레드 방식(hyper-threaded)일 때, 각각의 코어 내에서 동작하는 각각의 스레드도 또한 하드웨어 스레드라고 할 수 있다. 따라서, 컴퓨터 시스템(100)에서 실행되는 임의의 싱글 실행 스레드는 하드웨어 스레드라고 할 수 있다. 예를 들어, 도 1에서, 각각의 코어가 싱글 스레드 방식이면, 시스템(4개의 코어들)에는 4개의 하드웨어 스레드들이 존재한다. 한편, 각각의 코어가 멀티 스레드 방식이고 2개의 스레드들의 상태들을 동시에 유지하는 능력을 가진다면, 시스템(코어 당 2개의 스레드들을 가진 4개의 코어들)에는 8개의 하드웨어 스레드들이 존재한다.
CPU(102)는 비-L1 캐시(non-L1 cache)(112) 등의 하나 이상의 비-L1 캐시들을 더 포함할 수 있다. 다수의 실시예들에서, 캐시(130) 등의 적어도 하나의 비-L1 캐시가 임의의 소정의 코어 밖에 CPU(102) 내에 존재한다. 또한, 다수의 실시예들에서, 캐시(130)는 도시된 4개의 코어들 간에 공유된다. 도시되지 않은 다른 실시예들에서, 캐시(130) 외의 추가의 비-L1 캐시들이 구현된다. 상이한 실시예들에서, 캐시(130)는 상이한 방법들로 배분될 수 있다. 또한, 캐시(130)는 상이한 실시예들에서 다수의 상이한 크기들 중 하나일 수 있다. 예를 들어, 캐시(130)는 8 메가바이트(MB) 캐시, 16 MB 캐시 등일 수 있다. 또한, 상이한 실시예들에서, 캐시(130)는 직접 매핑 캐시(direct mapped cache), 완전 연관 캐시(fully associative cache), 멀티-웨이 세트-연관 캐시(a multi-way set-associative cache), 또는 다른 타입의 매핑을 가진 캐시일 수 있다. 다수의 실시예들에서, 캐시(130)는 모든 코어들 간에 공유되는 하나의 큰 부분을 포함할 수 있으며, 또는 수 개의 개별적인 기능 슬라이스들(예를 들어, 각각의 코어에 하나의 슬라이스)로 분할될 수 있다. 캐시(130)는 모든 코어들 간에 공유되는 한 부분 및 코어 당 개별적인 기능 슬라이스들인 수 개의 다른 부분들을 또한 포함할 수 있다.
다수의 실시예들에서, CPU(102)는 시스템 메모리(134)와 통신하기 위한 인터페이스를 제공하는 통합 시스템 메모리 컨트롤러(132)를 포함한다. 도시되지 않은 다른 실시예들에서, 메모리 컨트롤러(132)는 컴퓨터 시스템(100) 내에서 별개의 다른 곳에 위치할 수 있다.
시스템 메모리(134)는 한 타입의 더블 데이터 레이트(DDR) DRAM 등의 다이내믹 랜덤 액세스 메모리(DRAM), 플래시 메모리 등의 비휘발성 메모리, 상변화 메모리(PCM), 또는 다른 타입의 메모리 기술을 포함할 수 있다. 시스템 메모리(134)는 CPU(102)에 의해 조작될 데이터 및 명령들을 저장하기 위한 범용 메모리일 수 있다. 또한, 다이렉트 메모리 액세스(DMA) 가능 I/O(입력/출력) 디바이스 등의, 시스템 메모리들에 대한 판독 및 기록 능력을 가진 컴퓨터 시스템(100) 내의 다른 잠재적 디바이스들이 있을 수 있다.
CPU(102)를 시스템 메모리(134)와 연결하는 링크(즉, 버스, 인터커넥트 등)은 데이터, 어드레스, 제어, 및 클록 정보를 운송할 수 있는 하나 이상의 광, 금속, 또는 다른 배선들(즉, 라인들)을 포함할 수 있다.
플랫폼 컨트롤러 허브(PCH)(136)(예를 들어, I/O 컨트롤러들 및 다른 회로의 복합체)는 CPU(102)와 외부 I/O 디바이스들 간의 통신을 가능케 하는 I/O 인터페이스를 포함한다. 이 복합체는 I/O 어댑터(138) 등의 하나 이상의 I/O 어댑터들을 포함할 수 있다. I/O 어댑터들은 CPU(102) 내에서 사용되는 호스트 통신 프로토콜을, I/O 디바이스(140) 등의 특정 I/O 디바이스와 호환 가능한 프로토콜로 변환한다. 소정의 I/O 어댑터가 변환할 수 있는 프로토콜들 중 일부는, 특히, PCI(Peripheral Component Interconnect)-익스프레스, USB(Universal Serial Bus), SATA(Serial Advanced Techonology Attachment), SCSI(Small Computer System Interface), RAID(Redundant Array of Inexpensive Disks), 및 1394 "파이어와이어(Firewire)"를 포함한다. 또한, 하나 이상의 무선 프로토콜 I/O 어댑터들이 있을 수 있다. 무선 프로토콜들의 일례들은, 특히, 블루투스, IEEE 802.11-기반 무선 프로토콜들, 및 셀룰러 프로토콜들이다.
I/O 디바이스들 외에, PCH(136)는 EC(142) 등, 시스템 내의 하나 이상의 EC(embedded controller)에 또한 연결될 수 있다. EC(142)는 다수의 기능들을 포함할 수 있다. 예를 들어, RAID 스토리지 컨트롤러 디바이스가 컴퓨터 시스템(100) 내에 존재할 수 있다. RAID 컨트롤러는 하드 디스크 드라이브들 또는 솔리드 스테이트 디스크(SSD)들의 어레이를 관리할 수 있다. 컨트롤러 디바이스의 다른 일례들은 별개의 대역 외 관리 엔진, 키보드 컨트롤러, 또는 다른 타입의 컨트롤러일 수 있다.
다른 실시예들에서, PCH(136)는 CPU(102)의 외부에 위치한 별개의 디바이스이다. 이러한 실시예들에서, 다이렉트 메모리 인터페이스(DMI) 등의 인터페이스는 CPU를 PCH에 연결한다. 그렇지만, 이러한 실시예들은 도시되지 않는다.
인터-CPU 인터페이스(144)는 하나 이상의 추가의 CPU들에 연결된 링크에 대한 인터페이스를 제공하고, CPU 간 통신이 발생하도록 할 수 있다. 예를 들어, 인터-CPU 고속 인터페이스는 QPI(Quick Path Interconnect) 또는 다른 유사 인터페이스일 수 있다. 추가의 CPU들이 도 1에 도시되지 않더라도, 다수의 실시예들에서, CPU(102)는 컴퓨터 시스템(100) 내에 존재하는 다수의 CPU들 중 하나이다. 다수의 실시예들에서, 인터-CPU 인터페이스(144)는 CPU(102)와 시스템에 존재하는 다른 CPU들 각각 간에 지점간 고속 통신 인터페이스(point-to-point high-speed communication interface)를 제공한다.
그래픽 인터페이스(146)는 별개의 그래픽 컨트롤러(별개의 그래픽 컨트롤러는 도시되지 않음)에 연결된 링크에 대한 인터페이스를 제공할 수 있다. 인터페이스는 고속 PCI-익스프레스 인터페이스 또는 다른 고속 인터페이스일 수 있다. 다른 실시예들에서, CPU(102)는 통합 그래픽 컨트롤러를 포함하고, 그래픽 인터페이스(146)는 모니터 등의 디스플레이 디바이스에 연결될 수 있다. 다수의 실시예들에서, 인터페이스는 링크를 통해 아주 큰 그래픽 데이터 트래픽이 전송될 수 있도록 고속이다(예를 들어, 3D 그래픽, 비디오 등).
컴퓨터 시스템(100)은 컴퓨터 시스템 및 컴포넌트들을 초기화하기 위한 부팅 명령들을 제공하는 시스템 관리 펌웨어(148)를 또한 포함한다. 상이한 실시예들에서, 시스템 관리 펌웨어는 기본 입력/출력 시스템(BIOS), 확장 가능 펌웨어, 또는 컴퓨터 시스템이 플랫폼의 부팅 중에 사용할 수 있는 다른 형태의 펌웨어 명령들일 수 있다.
다수의 실시예들에서, 컴퓨터 시스템(100) 내의 각각의 코어는 각각의 코어 내에서 실행되는 명령들의 클래스 및 콘텐츠에 기초하여 코어 전력 소비를 관리하기 위한 내부 로직을 포함한다. 수 개의 유닛들 내의 다양한 로직이 클록 관리/생성 로직(128)을 통해 클록 단위로 특정 유닛들을 클록 게이팅하는 데 사용된다.
도 2는 명령 클래스 결정 및 명령 콘텐츠 결정을 통해 코어 전력 소비를 관리하는 능력을 코어에게 허용하는 소정의 코어 내의 특정 관련 유닛들 및 기능 로직 블록들을 도시한다.
소정의 코어에서, 매크로 명령들이 명령 캐시(112)로부터 검색되고 프리페치 버퍼(200)에 도달한다. 다수의 실시예들에서, 2개의 명령 디코더들(디코더 0(202) 및 디코더 1(204))이 있다. 프리페치 버퍼(200)는 각각의 디코더에 대한 명령 레지스터(명령 1 레지스터(206) 및 명령 2 레지스터(208))에 공급한다. 도 1에 도시된 실시예들에서, 코어는 2개의 명령들을 동시에 디코딩할 수 있기 때문에, 명령 디코더에 도시된 2개의 디코더들이 있다. 간소화를 위해, 디코더 0 내에만 싱글 디코더 내의 상세한 회로가 도시된다. 동일한 회로가 디코더 1에 존재하지만, 그 회로는 디코더 0에 도시된 회로를 반영하기 때문에 도시되지 않았고, 따라서, 회로의 중복 설명은 불필요하다.
프리페치 버퍼(200) 외에도, 프리페치 버퍼로부터 캐시 라인들을 판독하고 명령 캐시 라인으로부터 매크로 명령을 분리하며 프리디코드 비트들에 기초하여 명령의 길이를 결정하는 프리디코드 기반 로직(210)이 있다. 매크로 명령들 각각에 대해, 디코드 로직은 명령의 바이트-크기 클래스의 제1 패스 근사치(a first pass approximation)을 제공하거나(즉, 매크로 명령이 1-바이트 마이크로 오퍼레이션(연산 코드)으로 디코딩될지, 2-바이트 연산 코드로 디코딩될지, 3-바이트 연산 코드로 디코딩될지), 또는 가변 길이의 하나 이상의 연산 코드들의 더 복잡한 집합으로 디코딩한다. 바이트-크기가 부정확할 수 있는 약간의 명령들이 있기 때문에, 프리디코드 프로세스의 바이트-클래스 크기는 근사치이다. 도 2에 도시된 로직 외에, 완전히 정확한, 총 길이 디코딩을 실행하는 다른 병렬 디코더(총 길이 디코더(242))가 있다. 그러나 총 길이 디코더는 프리디코드 길이 근사치만큼 효율적이지 않으므로, 그것은 도 2에 도시된 로직에 의해 실행되는 디코드 프로세스와 병렬로 실행된다.
다수의 실시예들에서, 총 길이 디코더가 매크로 명령 디코드 로직 근사 길이와 상이한 연산 코드 바이트-길이를 가지고 돌아오면, 잘못된 연산 코드 바이트-길이로 인해 명령 파이프라인을 따라 더 아래에서 임의의 가비지 데이터(random garbage data)가 사용될 수 있기 때문에, 현재 명령을 지나서 다음 명령들은 무효화된다. 무효화된 명령들은 총 길이 디코더에 의해 결정된 정확한 연산 코드 바이트-길이를 가지고 다시 파이프라인을 통해 송신된다. 가끔의 연산 코드의 무효화 및 명령 파이프라인을 통한 후속의 제2 패스가 파이프라인 성능 효율을 낮추더라도, 매크로 명령 디코드 로직 바이트-길이 근사치의 높은 성공률은 더 큰 효율 이점을 제공하여, 이 병렬 이중 길이 디코드 프로세스가 사용되는 것을 정당화한다.
이제 명령 1 레지스터(206)로 돌아가서, 이 레지스터에 래칭된 매크로 명령은 디코더 0(202)에 들어가고, 디코더 내의 수 개의 로직 컴포넌트들에 전파된다. 임의의 타입의 수신된 매크로 명령의 디코딩 프로세스를 처리하는 하나의 큰 프로그래밍 로직 어레이(PLA)를 갖는 대신, 디코더 0에 존재하는 PLA들은 바이트-길이당 매크로 명령 디코딩을 실행하는 PLA들로 분할된다. 1-바이트 연산 코드들을 산출하는 모든 매크로 명령들은 1-바이트 연산 코드 PLA(212)에서 디코딩되고, 2-바이트 연산 코드들을 산출하는 모든 매크로 명령들은 2-바이트 연산 코드 PLA(214)에서 디코딩되며, 3-바이트 연산 코드들을 산출하는 모든 매크로 명령들은 3-바이트 연산 코드 PLA(216)에서 디코딩된다. 또한, 복합 명령 PLA(218)는 PLA들(212-216)에서의 디코딩으로 다루어지지 않는 모든 다른 연산 코드들을 디코딩한다. 일반적으로, 대부분의 매크로 명령들은 1-3 바이트 연산 코드 변환들에 속하므로, 복합 명령 PLA(218)는 다른 3개의 PLA들만큼 자주 사용되지 않을 수 있다.
이전 생성 디코더들에서는, 모든 명령들을 디코딩할 수 있는 PLA가 일반적으로 존재했다. 도 2의 모든 4개의 PLA들 내의 회로는 이러한 싱글 PLA로 통합되었을 것이다. 따라서, 어떤 바이트-크기 클래스 매크로 명령이 PLA에 의해 수신되었든지, 그 매크로 명령을 대응 연산 코드(들)로 디코딩하기 위해 PLA 전체가 액티브 상태였다. 도 2에 도시된 본 실시예에서는, 이 회로는 4개의 개별 PLA들로 분할된다. 또한, 모든 PLA들은 수신된 발진 클록 신호(oscillating clock signal)에 기초하여 사이클마다 액티브하게 실행중이다. 이 발진 클록 신호는 클록 관리 및 생성 로직(CMGL)(220)으로부터 수신된다. CMGL(220)은 적어도 하나의 주파수에서 적어도 하나의 발진 클록 신호를 생성하는 클록 회로를 포함한다. 그렇지만, 프로세서의 설계에 유연성(flexibility)을 부여하기 위해 다수의 주파수에서 다수의 신호가 사용될 수 있다. 하나 보다 많은 클록 속도가 사용되는 몇몇 실시예들에서, 일부 유닛들은 더블 주파수, 1/2 주파수, 또는 임의의 다른 잠재적으로 조작된 클록 신호 주파수에서 모두 클록 신호를 취한다. 그렇지만, 몇몇 실시예들에서, 도 2에 도시된 기능 유닛들 및 로직은 모두 동일한 주파수에서 실행된다. 임의의 이벤트에서, CMGL(220)은 정확히 실행될 것을 요구하는 도 2에 도시된 임의의 기능 블록/유닛에 발진 클록 신호를 전파할 수 있다. 그렇지만, 도 2를 명백하게 하기 위해, 특정 블록들/유닛들만이 CMGL(220)로부터의 발신 라인(outbound line)을 통해 공급되는 클록 신호를 갖는 것으로 도시되어 있으며, 이러한 특정 클록 소스 및 행선 쌍들은 후술될 것이다.
또한, CMGL(220)은 임의의 하나 이상의 기능 블록들/유닛들로의 클록 신호(들)의 공급을 액티브하게 관리하는 능력을 제공하는 클록 관리 회로를 더 포함한다. 예를 들어, 클록 관리 회로는 클록 신호를 정상 상태(steady state) 하이 상태로 끌어당기거나 클록 신호를 정상 로우 상태로 밀어내는 클록 생성 로직을 포함할 수 있다.
클록의 실행을 요구하는 기능 블록/유닛이 들어오는 클록 신호를 거부할 때, 내부 회로는 회로 내의 스위칭 활동(즉, 공급받는 클록 신호에 기초한 스위칭/토글링)을 갖기보다는 정상 상태로 강제되기 때문에, 그 블록/유닛은 기능 작동을 정지한다. 따라서, CMGL(220)이 기능 로직의 블록/유닛에 대한 클록 신호를 셧다운하면, 로직은 동작을 멈춘다. 이는 블록/유닛의 회로의 동적 스위칭 전력 소비를 절약한다.
따라서, CMGL(220)은 도 2의 임의의 소정의 기능 블록/유닛에 제공되는 클록 신호를 셧다운할 수도 셧다운하지 않을 수도 있다. 다수의 실시예들에서, 매크로 명령 디코드 로직(210)은 명령 1 레지스터(206)에 들어간 소정의 명령에 대응하여 결정한 바이트-크기 클래스 길이 근사치 정보를 CMGL(220)에 송신한다. 다수의 실시예들에서, 근사화된 바이트-크기 클래스 길이는 일반적으로 1, 2 또는 3 바이트일 수 있다. 다음 클록 사이클 동안, CMGL(220)은 근사화된 길이에 대응하는 PLA에 공급되는 클록 신호를 유지하고, 다른 길이들을 디코딩하는 다른 2개의 PLA들에 그것이 공급하고 있는 클록을 정상 상태로 끌어당긴다. 상술된 다음 클록 사이클 동안, 3개의 특정 바이트-길이 PLA 중 오직 하나만이 동작할 것이다. 더욱이, 다른 2개의 특정 바이트-길이 PLA들은 동작하지 않을 것이고, 그 각각의 회로들 내에서 동적 스위칭 전력 소비가 없을 것이기 때문에, 동적 전력을 덜 소비할 것이다.
다음 명령이 명령 1 레지스터(206)에서 디코딩되기를 기다리는 다음 클록 사이클에서, 동일한 프로세스가 발생한다. 따라서, 임의의 소정의 클록 사이클 동안에, 1, 2, 및 3-바이트 연산 코드 PLA들 중 기껏해야 하나만이 상당한 동적 스위칭 전력을 소비할 것이다. 다수의 실시예들에서, 복합 명령 PLA(218)는 공급된 클록을 항상 수신하는데, 그 이유는 CMGL(220)은 그 특정 PLA에 대한 클록 게이팅 능력을 갖고 있지 않기 때문이다.
1, 2, 또는 3 바이트 디코드의 경우에, 매크로 명령이 관련 바이트-길이 PLA를 거쳐서 대응 연산 코드로 디코딩되면, 그것은 MUX(222)를 통해 멀티플렉싱된다. PLA(218)를 요구하는 복합 명령의 경우에, 결과는 마이크로-코드 판독 전용 메모리(ROM)(224)로부터 연산 코드(들)를 산출할 수 있다. MUX(222)의 출력은 그 후 다시 MUX(226)를 통해 PLA(218) 및 마이크로-코드 ROM(224)의 출력과 멀티플렉싱된다. 그 후, 디코더로부터 결과 연산 코드를 포함하는, MUX(226)의 연산 코드 출력은, 프리페치 버퍼(200)의 원래의 매크로 명령에 첨부된 필드들이었을 수 있는 임의의 변위 바이트들 및/또는 직접 피연산자를 처리하는 로직(228)에서 수신된다. 변위 바이트들 및/또는 직접 피연산자가 처리되면(원래의 매크로 명령에 첨부된 임의의 필드들이 있었다면), 연산 코드는 디코더 0으로부터 명령 큐(230)로 송신되어 실행을 대기한다.
다수의 실시예들에서, 매크로 명령 디코드 로직(210)은 소정의 수신된 매크로 명령을 부분적으로 디코딩할 수 있다. 매크로 명령 디코드 로직(210)은, 소정의 매크로 명령에 대한 프리디코드 프로세스 중에 생성된 프리디코드 비트들의 집합을 또한 제공할 것이다. 몇몇 실시예들에서, 매크로 명령 디코드 로직(210)은 디코더 1에서 동시된 디코딩된 제2 명령이 프리디코드 비트들에 기초하여 무효라고 결정할 수 있다. 제2 명령이 무효일 수 있는 이유에 대한 다수의 일례들(예를 들어, 브랜칭 이슈)이 있지만, 이유와 무관하게, 매크로 명령 디코드 로직(210)이 디코더 1에 들어가는 제2 명령이 무효일 것이라고 인식하면, 매크로 명령 디코드 로직(210)은 CMGL(220)이 전체 디코더 2에 공급된 클록 신호를 게이팅하게 할 수 있다. 예를 들어, CMGL(220)은 명령 2 레지스터(208)에 대해 클록을 정상 상태로 끌어올려 그 레지스터 내의 래치들이 디코더 1로 명령을 놓아주게 하지 않을 수 있다. 다른 실시예들에서, CMGL(220)은 싱글 로케이션(도 2에 도시되지 않음)의 디코더에 들어가는 클록 트리에 기초하여 디코더 2 내의 모든 주요한 기능 유닛들/블록들에 개별적으로 제공할 수 있다. 이러한 실시예들에서, CMGL(220)은 디코더에 들어가는 전체 트리를 클록 게이팅할 수 있다. 따라서, 명령이 무효하다고 프리디코더 로직(210)이 결정하면, 그것은 디코더 로직에 공급되는 클록들을 게이팅함으로써 명령을 연산 코드로 디코딩하도록 스케줄이 잡힌 디코더 내의 모든 로직을 본질적으로 셧다운할 수 있다.
디코더 0으로 돌아가서, 브랜치, 부동 소수점, 필드 검출기 로직(BFFDL)(232)은 명령 1 레지스터(206)로부터 디코더 0으로 전파된 매크로 명령을 또한 수신한다. BFFDL(232)은 코어 내의 전력 관리를 돕는 검출 로직의 수 개의 부분들을 포함한다.
로직의 이름이 시사하는 바와 같이, BFFDL(232) 내에는 별개의 브랜치 검출 로직, 부동 소수점 검출 로직, 및 필드 검출 로직이 있다. 브랜치 검출 로직은 명령이 브랜치 어드레스 계산을 필요로 하는지를 결정한다.
브랜치 어드레스 계산 유닛(234)은 어떤 브랜치 어드레스가 브랜치 명령에 대한 것인지를 계산할 것이다. 매크로 명령이 임의의 형태의 브랜치를 수반하지 않으면, 이 브랜치 어드레스 계산 유닛(234)은 사용되지 않을 것이지만, 이 유닛에 제공된 클록은 통상적으로는 여전히 가동될 것이며, 이는 다시 불필요한 동적 스위칭 전력 소비를 야기한다. 브랜치 어드레스 계산 유닛(234) 전력 소비를 최소화하기 위해, BFFDL(232)은 브랜치 어드레스 계산 유닛(234)에 도달할 다음 명령이 브랜치 명령이 아닌 것을 인식할 것이다. BFFDL(232)은 이러한 정보를 CMGL(220)에 송신해서, CMGL(220)이 브랜치 어드레스 계산 유닛(234)에 제공된 클록을 게이팅하도록 야기할 수 있다.
BFFDL(232) 내의 필드 검출 로직은 수신된 특정 매크로 명령이 변위 바이트 필드의 데이터 및/또는 직접 피연산자 필드의 데이터를 실제로 갖고 있는지를 결정하는 능력을 가진다. 다수의 매크로 명령들은 이러한 필드들을 사용하지 않는다. 이 필드들이 사용되지 않더라도, 연산 코드들을 처리하는 파이프라인 도처의 로직은 이러한 필드들에 대한 슬롯들을 가지며, 이러한 슬롯들은 그 안에 연산 코드와 함께 전달되는 임의의 가비지 데이터를 가질 것이다. 임의의 가비지 데이터는 그 데이터가 사용되지 않더라도 동적 스위칭 전력 소비를 야기한다. 따라서, 다수의 실시예들에서, BFFDL(232)은, 매크로 명령이 이러한 필드들 중 하나 또는 둘 다를 사용하지 않는다고 결정했으면, 미사용 필드들을 제로 아웃하라고 로직(228)에 명령한다. 이러한 필드(들)의 제로 아웃은 코어 내의 기능 유닛들/블록들 간의 파이프라인 전력 소비를 더 최소화한다.
BFFDL(232) 내의 부동 소수점 검출 로직은 들어오는 매크로 명령이 부동 소수점(FP) 오퍼레이션인지를 검출한다. 다수의 실시예들에서, 부동 소수점 계산들을 처리하는 부동 소수점 유닛(236)은 상술된 클록 게이팅된 다른 유닛들과 유사하게 클록 게이팅될 수 있지만, 유닛이 적절히 기능하기 위해 리드 타임(lead time)이 필요하고 클록 당 전체 FP 유닛(236)을 클록 게이팅하는 것이 비현실적이기 때문에, 부동 소수점 유닛의 클록 게이팅은 더 복잡하다. 따라서, 다수의 실시예들에서, FP 유닛(236)은 오직 전체 파이프라인에 존재하는 FP 오퍼레이션들이 없을 때에만 클록 게이팅된다. FP 유닛과 관련된 파이프라인은 (FP 매크로 명령을 디코딩하기 위해) 디코더 유닛에서 개시하여 (실행이 완료된 후에 FP 명령을 퇴거하는) 퇴거 유닛에서 종료하는 단계를 일반적으로 포함한다. 따라서, 상태 기계는 (디코드 및 퇴거 간에) 파이프라인에 존재하는 FP 오퍼레이션들의 전체 집합의 추적을 지원하도록 구현될 수 있다.
FP 마이크로-오피(micro-op) 트래커 유닛(238)은 파이프라인에 존재하는 임의의 FP 명령들/연산 코드들을 추적해서, FP 명령들/연산 코드들이 존재하지 않으면 FP 유닛(236)을 클록 게이팅하라고 CMGL(220)에게 명령할 수 있다. FP 명령이 디코드 스테이지에 들어가고 있을 때, BFFDL(232)은 정보를 FP 마이크로-오피 트래커(238)에 송신한다. 그 후, FP 명령은 전체 파이프라인을 통과하고, 결국 퇴거한다. 퇴거 중에, 할당/퇴거 유닛(240)은, FP 명령이 퇴거했음을 FP 마이크로-오피 트래커(238)에 알린다. 일단 퇴거하면, 디코더에 들어간 추가의 FP 명령이 없는 경우, FP 마이크로-오피 트래커(238)는 FP 유닛(236)에 들어가는 클록(들)을 셧다운하라고 CMGL(220)에 명령할 수 있다.
도 3은 명령 파이프라인을 통해 부동 소수점 마이크로 오퍼레이션들을 추적하는 데 사용되는 상태 기계의 일 실시예를 도시한다.
개시 상태는 부동 소수점 마이크로 오퍼레이션들에 관하여 유휴 상태의 파이프라인을 도시한다(상태 300). 수신된 FP 마이크로 오퍼레이션(uOP)이 없으면, 파이프라인이 FP uOP를 디코드하지 않기 때문에(태스크 A), 상태 기계는 유휴 상태에 머문다. FP uOP가 도착하면, 파이프라인은 FP uOP를 디코딩하고(태스크 B), 상태 기계는 uOP가 디코드 상태를 완료했고 이제는 명령 큐에 있는 다음 상태로 전이한다(상태 302). FP uOP가 명령 큐에 있으면, 유휴 상태로 다시 돌아가는 유일한 방법은 파이프라인에 남아 있는 임의의 추가 FP uOP들 없이 FP uOP가 퇴거하는 것이다.
FP uOP가 명령 큐에 있으면(상태 302), 두 이벤트들이 발생할 수 있다. 첫째, 명령 큐의 FP uOP가 여전히 명령 큐에 있으면서, 새로운 제2 FP uOP가 디코더에 도착하면, 상태 기계는 제1 FP uOP의 추적을 정지하고, 대신 막 도착한 제2 FP uOP의 추적으로 전이한다. 이는 제2 FP uOP가 제1 FP uOP 후에 퇴거할 것이기 때문이다. 파이프라인은 다른 FP uOP를 디코딩하는 태스크를 실행한다(태스크 C).
다른 잠재적인 이벤트는 명령 큐의 uOP가 실행되도록 리소스들을 할당받을 수 있다(태스크 D). 이러한 경우에, 상태 기계는 uOP 할당 상태로 전이한다(상태 304).
uOP 할당 상태에서, 추가의 3개의 이벤트들이 발생할 수 있다. 첫째, 할당 스테이지(상태 304)의 제1 FP uOP가 아직 퇴거되지 않았고, 새로운 제2 FP uOP가 디코더에 도착하면, 상태 기계는 제1 FP uOP의 추적을 정지하고, 대신 막 도착한 제2 FP uOP의 추적으로 전이한다. 이는 제2 FP uOP가 제1 FP uOP 후에 퇴거할 것이기 때문이다. 파이프라인은 다른 FP uOP를 디코딩하는 태스크를 실행한다(태스크 E). 이는 상태 기계가 명령 큐 상태(상태 302)에 있는 UOP로 리턴하게 야기하며, 상태 기계는 이제 제2 FP uOP를 추적중이다.
상태 304에서 발생할 수 있는 제2 이벤트는 FP uOP 할당이 발생했지만, FP uOP 퇴거는 발생하지 않은 경우이다. 이러한 경우에, 파이프라인이 FP uOP를 퇴거하지 않았기 때문에(태스크 F), 비-이벤트(non-event)가 발생한다. 이는 FP uOP의 실행 중에 발생할 수 있다.
상태 304에서 발생할 수 있는 제3 이벤트는 파이프라인이 FP uOP를 퇴거할 수 있는 경우이다(태스크 G). 이러한 이벤트가 발생할 때, 상태 기계는 유휴 상태로 다시 돌아간다(상태 300). 상태 기계가 유휴 상태인 임의의 소정의 시점에, FP 마이크로-오피 트래커(도 2의 238)는 FP 유닛(236)을 클록 게이팅하라고 CMGL(220)에 명령할 수 있다.
도 4는 디코더에 들어가는 현재 명령을 디코딩하도록 구성되지 않은 디코더의 하나 이상의 프로그래밍 가능 로직 어레이들을 클록 게이팅하는 프로세스의 일 실시예의 흐름도이다.
프로세스는 상이한 실시예들에서 하드웨어 회로 및/또는 마이크로코드를 포함할 수 있는 프로세싱 로직에 의해 실행된다. 프로세스는 프리페치 버퍼로부터 매크로 명령을 검색하는 프로세싱 로직에 의해 개시된다(프로세싱 블록 400). 프로세스는 매크로 명령의 바이트-길이 클래스를 결정하는 프로세싱 로직에 의해 계속된다(프로세싱 블록 402). 결정에 기초하여, 프로세싱 로직은 매크로 명령이 디코딩될 디코더의 하나 이상의 PLA들을 클록 게이팅한다(프로세싱 블록 404). 클록 게이팅되는 특정 PLA(들)는 결정된 바이트-길이 클래스의 매크로 명령들을 디코딩하도록 할당되지 않은 PLA들이다. 마지막으로, 프로세싱 로직은 클록 게이팅되지 않은 나머지 PLA로 디코딩의 매크로 명령을 디코딩한다(프로세싱 블록 406).
도 5는 브랜치 명령이 디코딩되지 않았을 때 브랜치 유닛을 클록 게이팅하는 프로세스의 일 실시예의 흐름도이다.
프로세스는 상이한 실시예들에서 하드웨어 회로 및/또는 마이크로코드를 포함할 수 있는 프로세싱 로직에 의해 실행된다. 프로세스는 프리페치 버퍼로부터 매크로 명령을 검색하는 프로세싱 로직에 의해 개시된다(프로세싱 블록 500). 그 후, 프로세싱 로직은 명령이 브랜치 명령인지를 결정한다(프로세싱 블록 502). 명령이 브랜치 명령이면, 프로세스는 완료된다. 그렇지 않고, 명령이 브랜치 명령이 아니면, 프로세싱 로직은 매크로 명령으로부터 산출된 연산 코드가 파이프라인의 브랜치 계산 위치에 있는 클록 사이클 중에 브랜치 유닛을 클록 게이팅하고(프로세싱 블록 504), 프로세스는 종료한다.
도 6은 부동 소수점 명령이 명령 파이프라인에 존재하지 않을 때 부동 소수점 유닛을 클록 게이팅하는 프로세스의 일 실시예의 흐름도이다.
프로세스는 상이한 실시예들에서 하드웨어 회로 및/또는 마이크로코드를 포함할 수 있는 프로세싱 로직에 의해 실행된다. 프로세스는 디코드 유닛 및 퇴거 유닛 간의 파이프라인에 임의의 FP 명령이 있는지를 결정하는 프로세싱 로직에 의해 개시된다(프로세싱 블록 600). 파이프라인의 어딘가에 FP 명령이 있으면, 프로세스는 블록 600으로 리턴하고 다시 검사한다. 그렇지 않고, 파이프라인에 FP 명령이 없으면, 프로세싱 로직은 FP 유닛을 클록 게이팅하고(프로세싱 블록 602), 프로세스는 완료된다. 다수의 실시예들에서, 이 프로세스는 도 3에 상세히 도시된 상태 기계를 사용해서, 파이프라인에서의 FP 명령들의 존재를 추적한다.
도 7은 명령이 직접 및 변위 바이트 필드들을 사용하지 않을 때 그 명령의 직접 및 변위 바이트 필드들을 제로 아웃하는 프로세스의 일 실시예의 흐름도이다.
프로세스는 상이한 실시예들에서 하드웨어 회로 및/또는 마이크로코드를 포함할 수 있는 프로세싱 로직에 의해 실행된다. 프로세스는 프리페치 버퍼로부터 매크로 명령을 검색하는 프로세싱 로직에 의해 개시된다(프로세싱 블록 700). 그 후, 프로세싱 로직은 명령이 직접 필드를 사용하는지를 결정한다(프로세싱 블록 702). 명령이 직접 필드를 사용하지 않으면, 프로세싱 로직은 명령의 직접 필드의 모든 데이터를 제로 아웃한다(프로세싱 블록 704). 명령이 직접 필드를 사용하든 사용하지 않든 간에, 프로세싱 블록은 다음으로 명령이 변위 바이트 필드를 사용하는지를 결정한다(프로세싱 블록 706). 변위 바이트 필드를 사용하면, 프로세스는 완료된다. 그렇지 않고, 명령이 변위 바이트 필드를 사용하지 않으면, 프로세싱 로직은 명령의 변위 바이트 필드의 모든 데이터를 제로 아웃하고(프로세싱 블록 708), 프로세스는 종료한다.
다수의 실시예들에서, 소정의 기능 블록/유닛에 대해 클록 게이팅이 실행될 때, 클록은 유닛에 대해 적어도 하나의 클록 사이클 동안 게이팅되지만, 클록 게이팅은 유닛을 클록 게이팅하는 특정 이유에 따라 한 사이클보다 더 오래 발생할 수 있다. 예를 들어, 명령들이 각각의 클록 사이클에서 디코딩되기 위해 도입되기 때문에, 1-바이트 PLA의 클록 게이팅은 일반적으로 싱글 클록 사이클에 기초하여 실행되므로, PLA는 1 클록 사이클 정도의 짧은 시간 동안 게이팅될 수 있다. 이와 관련하여, 수천 개의 매크로 명령들이 단 하나의 부동 소수점 오퍼레이션도 없이 파이프라인을 통해 실행될 수 있으며, 이러한 경우에, FP 유닛은 다수의 클록 사이클들 동안 연속하여 클록 게이팅될 수 있다.
본 발명의 실시예들의 요소들은 또한 기계 실행 가능 명령들을 저장하기 위한 기계 판독 가능 매체로서 제공될 수 있다. 기계 판독 가능 매체는, 플래시 메모리, 광 디스크들, 콤팩트-디스크-판독 전용 메모리(CD-ROM), DVD(digital versatile/video disks) ROM, 랜덤 액세스 메모리(RAM), 소거 가능 프로그래밍 가능 판독 전용 메모리(EPROM), 전기적 소거 가능 프로그래밍 가능 판독 전용 메모리(EEPROM), 자기 또는 광 카드들, 전파 매체 또는 전자 명령들을 저장하기에 적합한 다른 타입의 기계 판독 가능 매체를 포함할 수 있지만, 이들로만 제한되지는 않는다.
상술된 설명 및 청구항들에서, 용어들 "include(포함하다)" 및 "comprise(포함하다)"가 그 파생어들과 함께 사용될 수 있으며, 서로 동의어들로 취급되도록 의도된 것이다. 또한, 이하의 설명 및 청구항들에서, 용어들 "coupled(결합된)" 및 "connected(접속된)"이 그 파생어들과 함께 사용될 수 있다. 이러한 용어들은 서로 동의어들로 취급되도록 의도된 것이 아님을 알아야만 한다. 오히려, 특정 실시예들에서, "접속된"은 2개의 또는 그 이상의 요소들이 서로 직접적으로 물리적 또는 전기적 접촉중임을 나타내는데 사용될 수 있다. "결합된"은, 2개의 또는 그 이상의 요소들이 직접적으로 물리적 또는 전기적 접촉중임을 의미할 수 있다. 그러나, "결합된"은, 2개의 또는 그 이상의 요소들이 서로 직접적으로 접촉하고 있지 않지만, 여전히 서로 협력, 상호 작용, 또는 통신함을 또한 의미할 수 있다.
상술된 설명에서, 특정 용어가 본 발명의 실시예들을 기술하는데 사용된다. 예를 들어, 용어 "로직(logic)"은 하나 이상의 기능들을 실행하기 위한 하드웨어, 펌웨어, 소프트웨어(또는 그 임의의 조합)를 나타낸다. 예를 들어, "하드웨어"의 일례들은 집적 회로, 유한 상태 기계, 또는 심지어 결합 로직을 포함하지만, 이들로만 제한되지는 않는다. 집적 회로는 마이크로프로세서 등의 프로세서, 주문형 반도체, 디지털 신호 프로세서, 마이크로-컨트롤러 등의 형태를 취할 수 있다.
본 명세서에서 "일 실시예" 또는 "실시예"에 대한 언급은, 본 실시예와 관련하여 기술된 특정 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함됨을 의미함을 알아야만 한다. 따라서, 본 명세서의 여러 부분들에서의 "실시예" 또는 "일 실시예" 또는 "대안의 실시예"에 대한 2회 또는 그 이상의 언급들은 반드시 모두가 동일한 실시예를 나타내는 것은 아님이 강조되고 이해되어야만 한다. 또한, 특정 특징들, 구조들 또는 특성들은 본 발명의 하나 이상의 실시예들에서 적합하게 조합될 수 있다.
유사하게, 본 발명의 실시예들의 상술된 설명에서, 본 발명의 각종 양상들 중 하나 이상의 양상들의 이해를 돕는 본 설명을 간소화하기 위해, 각종 특징들은 단일 실시예, 도면, 또는 그 설명에서 때때로 함께 그룹화됨을 알아야만 한다. 그러나, 본 발명의 본 방법은 청구 주제가 각각의 청구항에서 명백하게 인용된 것보다 더 많은 특징들을 필요로 한다는 의도를 반영하는 것으로 해석되지 않는다. 오히려, 이하의 청구항들이 반영하는 바와 같이, 본 발명의 양상들은 상술된 단일 실시예의 모든 특징들보다 적은 특징들에 있다. 따라서, 상세한 설명에 이어지는 청구항들은 본 명세서에서 본 상세한 설명에 명백하게 포함된다.

Claims (21)

  1. 컴퓨터 시스템의 프로세서로서,
    복수의 매크로 명령들을 저장하기 위한 프리페치 버퍼;
    상기 프로세서의 적어도 복수의 유닛에 발진 클록 신호(oscillating clock signal)를 제공하기 위한 클록 회로;
    상기 프리페치 버퍼로부터 검색된 각각의 매크로 명령의 클래스를 결정하고, 제1 매크로 명령이 하나 이상의 변위 바이트들(displacement bytes)을 포함하는지를 결정하고, 상기 제1 매크로 명령이 어떤 변위 바이트도 갖지 않음에 응답해서, 상기 제1 매크로 명령의 변위 바이트 필드를 제로 아웃(zero out)하기 위한 매크로 명령 디코드 로직;
    상기 복수의 매크로 명령들 중 제1 매크로 명령의 클래스의 결정에 응답해서, 상기 제1 매크로 명령의 상기 클래스에 의해 결정됨에 따라 상기 제1 매크로 명령에 대해 동작하는데 사용되지 않는 상기 프로세서의 상기 복수의 유닛들 중 적어도 하나에 상기 클록 회로에 의해 공급되는 발진 클록 신호가 적어도 하나의 클록 사이클 동안 게이팅되게 하기 위한 클록 관리 유닛;
    상기 제1 매크로 명령을 하나 이상의 연산 코드들(opcodes)로 디코딩하기 위한 상기 복수의 유닛들 중의 제1 명령 디코더 유닛;
    상기 복수의 매크로 명령들 중 부동 소수점 매크로 명령에 대응하는 부동 소수점 마이크로-오퍼레이션을, 상기 대응하는 부동 소수점 매크로 명령이 상기 프리페치 버퍼로부터 검색되는 시간으로부터 상기 부동 소수점 마이크로-오퍼레이션의 퇴거(retirement) 시간까지 추적하고, 부동 소수점 파이프라인 클리어 플래그가 설정될 때, 현재 추적되고 있는 부동 소수점 마이크로-오퍼레이션이 없음을 나타내는, 부동 소수점 파이프라인 클리어 플래그를 설정하기 위한 부동 소수점 마이크로-오퍼레이션 트래커(floating point micro-operation tracker); 및
    상기 부동 소수점 파이프라인 클리어 플래그가 설정됨에 응답해서, 상기 복수의 유닛들 중의 부동 소수점 유닛에 들어가는 적어도 하나의 클록 사이클 동안 상기 발진 클록 신호가 정상 상태에 머물게 하기 위한 전력 관리 회로
    를 포함하는 프로세서.
  2. 제1항에 있어서,
    상기 제1 명령 디코더 유닛은,
    1-바이트 연산 코드를 산출하는, 상기 프리페치 버퍼로부터 검색된, 매크로 명령들을 디코딩하기 위한 상기 복수의 유닛들 중의 제1 PLA(programmable logic array) 유닛;
    2-바이트 연산 코드를 산출하는, 상기 프리페치 버퍼로부터 검색된, 매크로 명령들을 디코딩하기 위한 상기 복수의 유닛들 중의 제2 PLA 유닛; 및
    3-바이트 연산 코드를 산출하는, 상기 프리페치 버퍼로부터 검색된, 매크로 명령들을 디코딩하기 위한 상기 복수의 유닛들 중의 제3 PLA 유닛
    을 포함하고,
    상기 매크로 명령 디코드 로직은 상기 제1 매크로 명령으로부터 산출된 연산 코드의 바이트-길이를 결정하고,
    상기 클록 관리 유닛은 상기 결정된 바이트-길이의 매크로 명령들을 디코딩하지 않는 상기 제1, 제2, 및 제3 PLA 중 임의의 PLA에 들어가는 적어도 하나의 클록 사이클 동안 상기 발진 클록 신호가 정상 상태에 머물게 하는 프로세서.
  3. 제1항에 있어서,
    상기 클록 관리 유닛은 상기 제1 매크로 명령의 클래스가 브랜치 명령이 아니라는 결정에 응답해서, 상기 복수의 유닛들 중의 브랜치 어드레스 계산 유닛에 들어가는 적어도 하나의 클록 사이클 동안 상기 발진 클록 신호가 정상 상태에 머물게 하는 프로세서.
  4. 삭제
  5. 제1항에 있어서,
    상기 매크로 명령 디코드 로직은
    상기 제1 매크로 명령이 직접 피연산자를 포함하는지를 결정하고;
    상기 제1 매크로 명령이 직접 피연산자를 갖지 않음에 응답해서, 상기 제1 매크로 명령의 직접 피연산자 필드를 제로 아웃하는 프로세서.
  6. 제1항에 있어서,
    상기 복수의 유닛들 중의 제2 명령 디코더;
    상기 복수의 매크로 명령들 중 제2 매크로 명령이 유효하지 않은지를 결정하기 위한 상기 매크로 명령 디코드 로직 - 상기 제1 매크로 명령은 제1 클록 사이클에 상기 제1 명령 디코더 유닛에 들어가고, 상기 제2 매크로 명령은 상기 제1 클록 사이클에 상기 제2 명령 디코더 유닛에 들어감 - ; 및
    상기 제2 매크로 명령이 유효하지 않다는 결정에 응답해서, 상기 제2 명령 디코더 유닛에 들어가는 적어도 하나의 클록 사이클 동안 상기 발진 클록 신호가 정상 상태에 머물게 하기 위한 전력 관리 회로
    를 더 포함하는 프로세서.
  7. 삭제
  8. 프로세서 전력을 관리하기 위한 방법으로서,
    프리페치 버퍼에 복수의 매크로 명령들을 저장하는 단계;
    프로세서의 적어도 복수의 유닛들에 발진 클록 신호를 제공하는 단계;
    상기 프리페치 버퍼로부터 검색된 각각의 매크로 명령의 클래스를 결정하는 단계;
    상기 복수의 매크로 명령들 중 제1 매크로 명령의 클래스의 결정에 응답해서, 상기 제1 매크로 명령의 상기 클래스에 의해 결정됨에 따라 상기 제1 매크로 명령에 대해 동작하는데 사용되지 않는 상기 프로세서의 상기 복수의 유닛들 중 적어도 하나에 클록 회로에 의해 공급되는 발진 클록 신호가 게이팅되게 하기 위한 단계;
    상기 제1 매크로 명령이 하나 이상의 변위 바이트들을 포함하는 지를 결정하는 단계;
    상기 제1 매크로 명령이 어떠한 변위 바이트도 갖지 않음에 응답해서, 상기 제1 매크로 명령의 변위 바이트 필드를 제로 아웃하는 단계;
    상기 제1 매크로 명령을 하나 이상의 연산 코드들로 디코딩하는 단계;
    상기 복수의 매크로 명령들 중 부동 소수점 매크로 명령에 대응하는 부동 소수점 마이크로-오퍼레이션을, 상기 대응하는 부동 소수점 매크로 명령이 상기 프리페치 버퍼로부터 검색되는 시간으로부터 상기 부동 소수점 마이크로-오퍼레이션의 퇴거 시간까지 추적하는 단계;
    부동 소수점 파이프라인 클리어 플래그가 설정될 때, 현재 추적되고 있는 부동 소수점 마이크로-오퍼레이션이 없음을 나타내는, 부동 소수점 파이프라인 클리어 플래그를 설정하는 단계; 및
    상기 부동 소수점 파이프라인 클리어 플래그가 설정됨에 응답해서, 상기 복수의 유닛들 중의 부동 소수점 유닛에 들어가는 적어도 하나의 클록 사이클 동안 상기 발진 클록 신호가 정상 상태에 머물게 하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서,
    1-바이트 연산 코드를 산출하는, 상기 프리페치 버퍼로부터 검색된, 매크로 명령들을 디코딩하는 단계;
    2-바이트 연산 코드를 산출하는, 상기 프리페치 버퍼로부터 검색된, 매크로 명령들을 디코딩하는 단계;
    3-바이트 연산 코드를 산출하는, 상기 프리페치 버퍼로부터 검색된, 매크로 명령들을 디코딩하는 단계;
    상기 제1 매크로 명령으로부터 산출된 연산 코드의 바이트-길이를 결정하는 단계; 및
    상기 결정된 바이트-길이의 매크로 명령들을 디코딩하지 않는 제1, 제2, 및 제3 PLA 중 임의의 PLA에 들어가는 적어도 하나의 클록 사이클 동안 상기 발진 클록 신호가 정상 상태에 머물게 하는 단계
    를 더 포함하는 방법.
  10. 제8항에 있어서,
    상기 제1 매크로 명령의 클래스가 브랜치 명령이 아니라는 결정에 응답해서, 상기 복수의 유닛들 중의 브랜치 어드레스 계산 유닛에 들어가는 적어도 하나의 클록 사이클 동안 상기 발진 클록 신호가 정상 상태에 머물게 하는 단계를 더 포함하는 방법.
  11. 삭제
  12. 제8항에 있어서,
    상기 제1 매크로 명령이 직접 피연산자를 포함하는지를 결정하는 단계; 및
    상기 제1 매크로 명령이 직접 피연산자를 갖지 않음에 응답해서, 상기 제1 매크로 명령의 직접 피연산자 필드를 제로 아웃하는 단계
    를 더 포함하는 방법.
  13. 제8항에 있어서,
    상기 복수의 매크로 명령들 중 제2 매크로 명령이 유효하지 않은지를 결정하는 단계 - 상기 제1 매크로 명령은 제1 클록 사이클에 제1 명령 디코더 유닛에 들어가고, 상기 제2 매크로 명령은 상기 제1 클록 사이클에 제2 명령 디코더 유닛에 들어감 - ; 및
    상기 제2 매크로 명령이 유효하지 않는다는 결정에 응답해서, 상기 제2 명령 디코더 유닛에 들어가는 적어도 하나의 클록 사이클 동안 상기 발진 클록 신호가 정상 상태에 머물게 하는 단계
    를 더 포함하는 방법.
  14. 삭제
  15. 컴퓨터 시스템의 프로세서로서,
    복수의 매크로 명령들을 저장하기 위한 프리페치 버퍼;
    상기 프로세서의 적어도 복수의 유닛들에 발진 클록 신호를 제공하기 위한 클록 회로;
    상기 프리페치 버퍼로부터 검색된 각각의 매크로 명령의 근사치 바이트-길이 클래스(approximate byte-length class)를 결정하기 위한 매크로 명령 디코드 로직;
    상기 복수의 매크로 명령들 중 제1 매크로 명령의 근사치 바이트-길이 클래스의 결정에 응답해서, 상기 제1 매크로 명령의 클래스에 의해 결정됨에 따라 상기 제1 매크로 명령에 대해 동작하는데 사용되지 않은 상기 프로세서의 상기 복수의 유닛들 중 적어도 하나에 상기 클록 회로에 의해 공급되는 발진 클록 신호가 적어도 하나의 클록 사이클 동안 게이팅되게 하기 위한 클록 관리 유닛;
    상기 제1 매크로 명령을 하나 이상의 연산 코드들로 디코딩하기 위한 상기 복수의 유닛들 중의 제1 명령 디코더 유닛; 및
    총 길이 디코더 로직(full length decoder logic)
    을 포함하고,
    상기 총 길이 디코더 로직은, 상기 제1 매크로 명령의 정확한 바이트-길이 클래스를 결정하고 - 상기 총 길이 디코더는 상기 제1 명령 디코더 유닛과 병렬로 상기 제1 매크로 명령을 디코딩함 - ;
    상기 제1 매크로 명령의 상기 정확한 바이트-길이 클래스를 상기 제1 매크로 명령의 상기 근사치 바이트-길이 클래스와 비교하며;
    상기 정확한 바이트-길이 및 상기 근사치 바이트-길이가 상이한 길이들임에 응답해서, 상기 제1 명령 디코더 유닛에 의해 산출된 하나 이상의 연산 코드들을 무효화하는 프로세서.
  16. 제15항에 있어서,
    상기 제1 명령 디코더 유닛은,
    1-바이트 연산 코드를 산출하는, 상기 프리페치 버퍼로부터 검색된, 매크로 명령들을 디코딩하기 위한 상기 복수의 유닛들 중의 제1 PLA(programmable logic array) 유닛;
    2-바이트 연산 코드를 산출하는, 상기 프리페치 버퍼로부터 검색된, 매크로 명령들을 디코딩하기 위한 상기 복수의 유닛들 중의 제2 PLA 유닛; 및
    3-바이트 연산 코드를 산출하는, 상기 프리페치 버퍼로부터 검색된, 매크로 명령들을 디코딩하기 위한 상기 복수의 유닛들 중의 제3 PLA 유닛
    을 포함하고,
    상기 매크로 명령 디코드 로직은 상기 제1 매크로 명령으로부터 산출된 연산 코드의 바이트-길이를 결정하고,
    상기 클록 관리 유닛은 상기 결정된 바이트-길이의 매크로 명령들을 디코딩하지 않는 상기 제1, 제2, 및 제3 PLA 중 임의의 PLA에 들어가는 적어도 하나의 클록 사이클 동안 상기 발진 클록 신호가 정상 상태에 머물게 하는 프로세서.
  17. 제15항에 있어서,
    상기 클록 관리 유닛은 상기 제1 매크로 명령의 클래스가 브랜치 명령이 아니라는 결정에 응답해서, 상기 복수의 유닛들 중의 브랜치 어드레스 계산 유닛에 들어가는 적어도 하나의 클록 사이클 동안 상기 발진 클록 신호가 정상 상태에 머물게 하는 프로세서.
  18. 제15항에 있어서,
    상기 매크로 명령 디코드 로직은
    상기 제1 매크로 명령이 하나 이상의 변위 바이트들을 포함하는 지를 결정하고;
    상기 제1 매크로 명령이 어떠한 변위 바이트도 갖지 않음에 응답해서, 상기 제1 매크로 명령의 변위 바이트 필드를 제로 아웃하는 프로세서.
  19. 제15항에 있어서,
    상기 매크로 명령 디코드 로직은
    상기 제1 매크로 명령이 직접 피연산자를 포함하는지를 결정하고;
    상기 제1 매크로 명령이 직접 피연산자를 갖지 않음에 응답해서, 상기 제1 매크로 명령의 직접 피연산자 필드를 제로 아웃하는 프로세서.
  20. 제15항에 있어서,
    상기 복수의 유닛들 중의 제2 명령 디코더 유닛;
    상기 복수의 매크로 명령들 중 제2 매크로 명령이 유효하지 않은지를 결정하기 위한 상기 매크로 명령 디코드 로직 - 상기 제1 매크로 명령은 제1 클록 사이클에 상기 제1 명령 디코더 유닛에 들어가고, 상기 제2 매크로 명령은 상기 제1 클록 사이클에 상기 제2 명령 디코더 유닛에 들어감 - ; 및
    상기 제2 매크로 명령이 유효하지 않다는 결정에 응답해서, 상기 제2 명령 디코더 유닛에 들어가는 적어도 하나의 클록 사이클 동안 상기 발진 클록 신호가 정상 상태에 머물게 하기 위한 전력 관리 회로
    를 더 포함하는 프로세서.
  21. 제15항에 있어서,
    상기 복수의 매크로 명령들 중 부동 소수점 매크로 명령에 대응하는 부동 소수점 마이크로-오퍼레이션을, 상기 대응하는 부동 소수점 매크로 명령이 상기 프리페치 버퍼로부터 검색되는 시간으로부터 상기 부동 소수점 마이크로-오퍼레이션의 퇴거 시간까지 추적하고;
    부동 소수점 파이프라인 클리어 플래그가 설정될 때, 현재 추적되고 있는 부동 소수점 마이크로-오퍼레이션이 없음을 나타내는, 부동 소수점 파이프라인 클리어 플래그를 설정하기 위한
    부동 소수점 마이크로-오퍼레이션 트래커; 및
    상기 부동 소수점 파이프라인 클리어 플래그가 설정됨에 응답해서, 상기 복수의 유닛들 중의 부동 소수점 유닛에 들어가는 적어도 하나의 클록 사이클 동안 상기 발진 클록 신호가 정상 상태에 머물게 하기 위한 전력 관리 회로
    를 더 포함하는 프로세서.
KR1020137006957A 2010-09-24 2011-09-23 명령들의 클래스 및 콘텐츠에 기초한 프로세서 전력 관리 KR101496062B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/890,574 2010-09-24
US12/890,574 US9710277B2 (en) 2010-09-24 2010-09-24 Processor power management based on class and content of instructions
PCT/US2011/053147 WO2012040662A2 (en) 2010-09-24 2011-09-23 Processor power management based on class and content of instructions

Publications (2)

Publication Number Publication Date
KR20130054375A KR20130054375A (ko) 2013-05-24
KR101496062B1 true KR101496062B1 (ko) 2015-02-25

Family

ID=45871869

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137006957A KR101496062B1 (ko) 2010-09-24 2011-09-23 명령들의 클래스 및 콘텐츠에 기초한 프로세서 전력 관리

Country Status (9)

Country Link
US (1) US9710277B2 (ko)
JP (1) JP5735112B2 (ko)
KR (1) KR101496062B1 (ko)
CN (1) CN103154846B (ko)
BR (1) BR112013006962A2 (ko)
DE (1) DE112011103210T5 (ko)
GB (1) GB2497443B (ko)
TW (1) TWI567639B (ko)
WO (1) WO2012040662A2 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120079249A1 (en) * 2010-09-28 2012-03-29 Wei-Han Lien Training Decode Unit for Previously-Detected Instruction Type
CN104281413B (zh) * 2013-07-10 2017-10-20 群联电子股份有限公司 命令队列管理方法、存储器控制器及存储器储存装置
KR102270791B1 (ko) * 2014-12-10 2021-06-29 삼성전자주식회사 매크로 명령어를 처리하는 방법 및 장치
WO2017145341A1 (ja) * 2016-02-25 2017-08-31 富士通株式会社 端末装置、給電判定装置及び給電判定方法
CN105929928B (zh) * 2016-04-25 2018-11-27 天津大学 一种指令级并行处理器低功耗设计优化方法
US9977680B2 (en) * 2016-09-30 2018-05-22 International Business Machines Corporation Clock-gating for multicycle instructions
WO2019105332A1 (en) * 2017-11-28 2019-06-06 Bitmain Technologies Inc. Computational integrated circuit chip and corresponding circuit board
CN109086875A (zh) * 2018-08-16 2018-12-25 郑州云海信息技术有限公司 一种基于宏指令集的卷积网络加速方法及装置
CN112540796B (zh) * 2019-09-23 2024-05-07 阿里巴巴集团控股有限公司 一种指令处理装置、处理器及其处理方法
CN111124499B (zh) * 2019-11-22 2022-11-01 中国科学院计算技术研究所 一种兼容多指令系统的处理器及其运行方法
US11907712B2 (en) * 2020-09-25 2024-02-20 Intel Corporation Methods, systems, and apparatuses for out-of-order access to a shared microcode sequencer by a clustered decode pipeline
US20230185572A1 (en) * 2021-12-13 2023-06-15 Intel Corporation Instruction decode cluster offlining

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6275948B1 (en) 1997-11-14 2001-08-14 Agere Systems Guardian Corp. Processor powerdown operation using intermittent bursts of instruction clock
US20020144087A1 (en) 2001-04-03 2002-10-03 Pao-Lung Chen Architecture of method for fetching microprocessor's instructions
US20040255103A1 (en) 2003-06-11 2004-12-16 Via-Cyrix, Inc. Method and system for terminating unnecessary processing of a conditional instruction in a processor

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5374855A (en) 1976-12-15 1978-07-03 Fujitsu Ltd Data processor
JPS6145354A (ja) * 1984-08-10 1986-03-05 Nec Corp マイクロプロセツサ
JPH03167615A (ja) 1989-11-28 1991-07-19 Nec Corp マイクロプロセッサ
US5241637A (en) * 1990-01-05 1993-08-31 Motorola, Inc. Data processor microsequencer having multiple microaddress sources and next microaddress source selection
JP2834289B2 (ja) * 1990-07-20 1998-12-09 株式会社日立製作所 マイクロプロセッサ
JPH05143322A (ja) * 1991-11-15 1993-06-11 Sanyo Electric Co Ltd マイクロコンピユータ
US5392437A (en) * 1992-11-06 1995-02-21 Intel Corporation Method and apparatus for independently stopping and restarting functional units
US5623615A (en) * 1994-08-04 1997-04-22 International Business Machines Corporation Circuit and method for reducing prefetch cycles on microprocessors
US5666537A (en) * 1994-08-12 1997-09-09 Intel Corporation Power down scheme for idle processor components
US5872947A (en) * 1995-10-24 1999-02-16 Advanced Micro Devices, Inc. Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions
US5726921A (en) * 1995-12-22 1998-03-10 Intel Corporation Floating point power conservation
US5867681A (en) * 1996-05-23 1999-02-02 Lsi Logic Corporation Microprocessor having register dependent immediate decompression
AU3480897A (en) * 1996-06-10 1998-01-07 Lsi Logic Corporation An apparatus and method for detecting and decompressing instructions from a variable-length compressed instruction set
US5941980A (en) * 1996-08-05 1999-08-24 Industrial Technology Research Institute Apparatus and method for parallel decoding of variable-length instructions in a superscalar pipelined data processing system
US6385715B1 (en) * 1996-11-13 2002-05-07 Intel Corporation Multi-threading for a processor utilizing a replay queue
JP2886838B2 (ja) * 1997-01-14 1999-04-26 財団法人工業技術研究院 スーパースカラパイプライン式データ処理装置の可変長命令の並列デコーディング装置及び方法
GB2323188B (en) 1997-03-14 2002-02-06 Nokia Mobile Phones Ltd Enabling and disabling clocking signals to elements
JP3961619B2 (ja) * 1997-06-03 2007-08-22 株式会社東芝 コンピュータシステムおよびその処理速度制御方法
US6609193B1 (en) * 1999-12-30 2003-08-19 Intel Corporation Method and apparatus for multi-thread pipelined instruction decoder
US7516334B2 (en) 2001-03-22 2009-04-07 Sony Computer Entertainment Inc. Power management for processing modules
GB2375695B (en) * 2001-05-19 2004-08-25 At & T Lab Cambridge Ltd Improved power efficency in microprocessors
JP2003058365A (ja) * 2001-08-17 2003-02-28 Matsushita Electric Ind Co Ltd 命令デコード装置
JP4026753B2 (ja) * 2002-07-25 2007-12-26 株式会社日立製作所 半導体集積回路
US7194601B2 (en) * 2003-04-03 2007-03-20 Via-Cyrix, Inc Low-power decode circuitry and method for a processor having multiple decoders
US7197655B2 (en) * 2003-06-26 2007-03-27 International Business Machines Corporation Lowered PU power usage method and apparatus
US7917734B2 (en) * 2003-06-30 2011-03-29 Intel Corporation Determining length of instruction with multiple byte escape code based on information from other than opcode byte
US7246219B2 (en) * 2003-12-23 2007-07-17 Intel Corporation Methods and apparatus to control functional blocks within a processor
WO2006000979A2 (en) 2004-06-25 2006-01-05 Koninklijke Philips Electronics N.V. Instruction processing circuit
US7263621B2 (en) * 2004-11-15 2007-08-28 Via Technologies, Inc. System for reducing power consumption in a microprocessor having multiple instruction decoders that are coupled to selectors receiving their own output as feedback
TWI286705B (en) 2005-09-06 2007-09-11 Via Tech Inc Power management method of central processing unit
JP5496602B2 (ja) * 2009-10-30 2014-05-21 ルネサスエレクトロニクス株式会社 データプロセッサ
US8850166B2 (en) * 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6275948B1 (en) 1997-11-14 2001-08-14 Agere Systems Guardian Corp. Processor powerdown operation using intermittent bursts of instruction clock
US20020144087A1 (en) 2001-04-03 2002-10-03 Pao-Lung Chen Architecture of method for fetching microprocessor's instructions
US20040255103A1 (en) 2003-06-11 2004-12-16 Via-Cyrix, Inc. Method and system for terminating unnecessary processing of a conditional instruction in a processor

Also Published As

Publication number Publication date
GB2497443A (en) 2013-06-12
CN103154846A (zh) 2013-06-12
GB2497443B (en) 2019-06-12
TW201218074A (en) 2012-05-01
US9710277B2 (en) 2017-07-18
TWI567639B (zh) 2017-01-21
KR20130054375A (ko) 2013-05-24
US20120079242A1 (en) 2012-03-29
JP2013546036A (ja) 2013-12-26
GB201302383D0 (en) 2013-03-27
WO2012040662A2 (en) 2012-03-29
DE112011103210T5 (de) 2013-07-04
BR112013006962A2 (pt) 2016-07-26
CN103154846B (zh) 2015-11-25
JP5735112B2 (ja) 2015-06-17
WO2012040662A3 (en) 2012-05-18

Similar Documents

Publication Publication Date Title
KR101496062B1 (ko) 명령들의 클래스 및 콘텐츠에 기초한 프로세서 전력 관리
US7743232B2 (en) Multiple-core processor with hierarchical microcode store
KR100783828B1 (ko) 단일 스레드 프로그램의 암시적 멀티스레디드 실행을 행할수 있는 멀티스레디드 프로세서
US6857064B2 (en) Method and apparatus for processing events in a multithreaded processor
KR970008187B1 (ko) 명령 연속흐름을 갖는 프로세서 제어된 인터페이스
US7809933B2 (en) System and method for optimizing branch logic for handling hard to predict indirect branches
EP2674857B1 (en) Loop buffer packing
US6684323B2 (en) Virtual condition codes
US20120066483A1 (en) Computing Device with Asynchronous Auxiliary Execution Unit
US8370671B2 (en) Saving power by powering down an instruction fetch array based on capacity history of instruction buffer
US5596735A (en) Circuit and method for addressing segment descriptor tables
JP2010521748A (ja) 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア
US9552032B2 (en) Branch prediction power reduction
US9547358B2 (en) Branch prediction power reduction
KR20150067327A (ko) 이진 변환된 자가 수정 코드 및 교차 수정 코드의 처리
US8635408B2 (en) Controlling power of a cache based on predicting the instruction cache way for high power applications
WO2019133172A1 (en) Processor, method, and system for reducing latency in accessing remote registers
EP0901063A2 (en) Power management methods
US6393523B1 (en) Mechanism for invalidating instruction cache blocks in a pipeline processor
US20140189319A1 (en) Opportunistic Utilization of Redundant ALU
Shum et al. Design and microarchitecture of the IBM System z10 microprocessor
CN105528227B (zh) 用以改善在处理器中重新执行加载的装置与方法
CN115858022A (zh) 集群化解码管线的可缩放切换点控制电路系统
WO2009158247A2 (en) Power aware retirement
CN113568663A (zh) 代码预取指令

Legal Events

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

Payment date: 20180201

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190129

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200129

Year of fee payment: 6