KR100880682B1 - 전력 관리를 위해 성능 조절 메커니즘을 이용하는마이크로프로세서 - Google Patents

전력 관리를 위해 성능 조절 메커니즘을 이용하는마이크로프로세서 Download PDF

Info

Publication number
KR100880682B1
KR100880682B1 KR1020037011721A KR20037011721A KR100880682B1 KR 100880682 B1 KR100880682 B1 KR 100880682B1 KR 1020037011721 A KR1020037011721 A KR 1020037011721A KR 20037011721 A KR20037011721 A KR 20037011721A KR 100880682 B1 KR100880682 B1 KR 100880682B1
Authority
KR
South Korea
Prior art keywords
instructions
unit
floating point
dispatch
instruction
Prior art date
Application number
KR1020037011721A
Other languages
English (en)
Other versions
KR20030082963A (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 KR20030082963A publication Critical patent/KR20030082963A/ko
Application granted granted Critical
Publication of KR100880682B1 publication Critical patent/KR100880682B1/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/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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
    • 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/3243Power saving in microcontroller unit
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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 or 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 or 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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 or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • 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 or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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 or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Power Sources (AREA)
  • Executing Machine-Instructions (AREA)
  • Microcomputers (AREA)

Abstract

마이크로프로세서는 각각 명령들을 실행하도록 구성된 다수의 실행 유닛들(60A, 60B, 60C) 및 상기 다수의 실행 유닛들에 실행하기 위해 상기 명령들을 디스패치하도록 구성된 명령 디스패치 회로(52)를 포함한다. 전력 관리 제어 유닛(50)은 1개 이상의 전력 삭감 모드를 지정하는 정보를 저장하는 프로그램가능한 유닛(51)을 포함한다. 제 1 성능 조절 기술의 실시에 있어서, 상기 전력 관리 제어 유닛은 명령 디스패처로 하여금 명령들의 디스패치를 제한된 수의 실행 유닛들로 제한하도록 구성될 수 있다. 제 2 성능 조절 기술의 실시에 있어서, 전력관리 제어 유닛은 매 주기 마다, 매 다른 주기 마다, 매 세 번째 주기 마다, 매 네 번째 주기 마다 등등에서, 상기 명령 디스패처로부터의 명령들의 디스패치를 제한하도록 구성될 수 있다. 제 3 성능 조절 기술의 실시에 있어서, 전력 관리 제어 회로는 부동 소수점 스케쥴러(56)로부터 1개 이상의 부동 소수점 실행 파이프라인들(58A, 58B, 58C)로의 명령들의 디스패치를 제어하도록 구성될 수 있다.
Figure R1020037011721
마이크로프로세서, 전력 관리, 부동 소수점 스케쥴러, 명령 디스패치

Description

전력 관리를 위해 성능 조절 메커니즘을 이용하는 마이크로프로세서 {MICROPROCESSOR EMPLOYING A PERFORMANCE THROTTLING MECHANISM FOR POWER MANAGEMENT}
본 발명은 마이크로프로세서들에 관한 것으로서, 특히 마이크로프로세서들 내에서의 전력 소모 관리에 관한 것이다.
컴퓨터 시스템들의 전력 소모를 줄이기 위한 많은 기술들이 개발되었다. 이러한 기술들은, 회로 집적의 증가, 및 개선된 회로와 전력 관리 유닛들(PMUs)의 통합을 포함한다. 컴퓨터 시스템들에 이용되는 하나의 특정한 전력 감소 기술은 일반적으로 비활성 회로 부분을 구동시키는 클럭 신호들을 중지시키는 성능을 포함한다. 이러한 기술을 이용하는 시스템은 전형적으로 전력 관리 유닛을 포함하는바, 이 전력 관리 유닛은 비활성 회로 부분들을 검출 또는 예측한 다음, 이러한 비활성 회로 부분들에 관련된 클럭 신호들을 중지시킨다. 비활성 회로 부분들을 구동시키는 "사용하지 않는(unused)" 클럭 신호들을 턴오프시킴으로써, 시스템의 전체 전력 소모가 감소된다. 유사한 기술은 시간이 중요하지 않은 동작 모드들 동안 회로 부분들을 구동시키는 클럭 신호들을 주파수를 감소시키는 성능을 포함하며, 다른 기술은 비활성 회로 부분들로부터 전력을 제거하는 성능을 포함한다.
또한, 컴퓨터 시스템들의 마이크로프로세서들에 의해 소모되는 전력을 제어하고 감소시키는 것이 중요하다. 전력 소모는 마이크로프로세서 칩들 내에 통합된 로직의 양이 끊임없이 증가하고 동작 주파수들이 증가한 결과에 부분적으로 영향을 받아왔다.
마이크로프로세서들을 이용하는 많은 컴퓨터 시스템들 및 응용들에서는, 고성능을 달성하는 것이 또한 중요하다. 고성능을 달성하기 위해, 많은 마이크로프로세서들은, 예를 들어 슈퍼스칼라 그리고/또는 순서를 벗어난(out of order) 실행 기술들 및 비교적 복잡한 다른 구조들을 포함하는 복잡한 마이크로 구조적인 특징들을 이용한다. 이러한 마이크로프로세서들의 실시는 종종 비교적 많은 양의 회로를 필요로 함으로써, 전력 소모 문제를 야기시킨다. 따라서, 마이크로프로세서 설계시에는 종종, 비교적 고성능을 제공하면서 만족스러운 전력 소모 특성을 달성하기 위한 절충이 이루어진다.
상기 설명한 문제들은 본원에서 설명되는 전력 관리를 위해 성능 조절 메커니즘을 이용하는 마이크로프로세서에 의해 해결된다. 일 실시예에서, 마이크로프로세서는 각각 명령들을 실행하는 다수의 실행 유닛들 및 상기 다수의 실행 유닛들에 의해 실행하기 위한 명령들을 디스패치하도록 구성된 명령 디스패치 회로를 포함한다. 전력 관리 제어 유닛은 1개 이상의 감소된 전력 모드(즉, 전력 삭감 모드)를 지정하는 정보를 저장하는 프로그램가능한 유닛을 포함한다.
제 1 성능 조절 기술의 실시에 있어서, 전력 관리 제어 유닛은 명령 디스패처가 명령들의 디스패치를 제한된 수의 실행 유닛들로 제한하도록 구성될 수 있다. 명령 디스패처는, 보통의 최대 디스패치 속도에서 명령들을 디스패치하기 보다는, 전력 관리 제어 유닛에 저장된 정보에 따라, 예를 들어 주기 마다 단지 2개의 명령들의 속도 또는 주기 마다 단지 1개의 명령의 속도로 명령들을 디스패치할 수 있다. 따라서, 이러한 모드에서 동작하게 되면, 새롭게 디스패치된 명령들의 실행에 있어서 감소된 수의 실행 유닛들이 활성이 될 것이다. 결과적으로, 전체 전력 소모가 감소한다.
제 2 성능 조절 기술의 실시에 있어서, 전력 관리 제어 유닛은 매 주기 마다, 매 다른 주기 마다, 매 세 번째 주기 마다, 매 네 번째 주기 마다 등등, 명령 디스패처로부터의 명령들의 디스패치를 제한하도록 구성될 수 있다. 일 특정 실시에서는, 카운터(또는 카운터들)가 명령 디스패치의 기능 정지(stalling)를 제어하도록 설정될 수 있다.
제 3 성능 조절 기술의 실시에 있어서, 전력 관리 제어 유닛은 1개의 부동 소수점 스케쥴러(floating-point scheduler)로부터 1개 이상의 부동 실행 파이프라인들로의 명령들의 디스패치를 제어하도록 구성될 수 있다. 바람직한 전력 유지를 달성하기 위해, 매 주기 마다, 매 다른 주기 마다, 매 세 번째 주기 마다, 매 네 번째 주기 마다 등등에서, 많은 명령들이 부동 소수점 파이프라인(들)에 제공될 수 있다.
또 다른 부가적인 실시예들에서, 대안적으로 또는 부가적으로, 전력 관리 제어 유닛은 최대 전력 또는 평균 전력에 기초하여 전력을 감소시키기 위해, 다른 프 로세서들의 서브 유닛들(sub-units)의 성능을 조절한다. 예를 들어, 일 실시예에서, 전력 관리 제어 유닛은 마이크로프로세서의 명령 캐시 그리고/또는 데이터 캐시로 하여금 단지 매 다른 주기, 매 세 번째 주기 등에서만 요구들을 처리하게 하도록 구성될 수 있다.
본 발명의 다른 목적들 및 장점들은 첨부 도면들을 참조하여 설명되는 하기의 상세한 설명으로부터 명확해질 것이다.
도 1은 마이크로프로세서의 일 실시예의 블럭도이다.
도 2는 도 1의 마이크로프로세서 내의 부동 소수점 유닛의 일 실시예의 블럭도이다.
도 3은 성능을 조절하기 위한 전력 관리 제어 유닛을 포함하는 마이크로프로세서 기능의 일 실시예의 블럭도이다.
도 4는 도 1의 마이크로프로세서를 이용하도록 구성된 컴퓨터 시스템의 일 실시예의 블럭도이다.
본 발명은 많은 변형들 및 대안적인 형태들을 가질 수 있지만, 본원의 도면 및 상세한 설명에서는 본 발명의 특정한 실시예들을 예시적으로 설명한다. 그러나, 주목할 사항으로서, 도면 및 상세한 설명은 본 발명을 개시된 형태로 한정하지 않으며, 본 발명은 첨부된 청구범위에 의해 정의되는 본 발명의 정신 및 범위 내에 포함되는 모든 변형들, 등가들 및 대안들을 포함한다.
도 1은 마이크로프로세서(10)의 일 실시예의 블록도를 도시한다. 마이크로프로세서(10)는 프리페치/프리디코드 유닛(12), 분기 예측 유닛(14), 명령 캐시(16), 명령 정렬 유닛(18), 다수의 디코드 유닛들(20A-20C), 다수의 예약 스테이션들(22A-22C) 및 다수의 기능 유닛들(24A-24C)을 포함한다. 마이크로프로세서(10)는 또한 적재/저장 유닛(load/store unit)(26), 데이터 캐시(28), 레지스터 파일(30), 재배열 버퍼(reorder buffer)(32), MROM 유닛(34), 부동 소수점 유닛(FPU)(36) 및 전력 관리 제어 유닛(50)을 포함한다. 본원에서 뒤에 글자가 붙어있는 특정한 참조 부호로 설명되는 요소들은 총체적으로 그 참조 부호 만으로 설명될 수 있다. 예를 들어, 디코드 유닛들(20A-20C)은 총체적으로 디코드 유닛들(20)로서 설명될 수 있다.
프리페치/프리디코드 유닛(11)은 주 메모리 서브 시스템들(도면 미도시)로부터 명령들을 수신하도록 결합되며, 또한 명령 캐시(16) 및 분기 예측 유닛(14)에 결합된다. 유사하게, 분기 예측 유닛(14)은 명령 캐시(16), 디코드 유닛들(20) 및 기능 유닛들(24)에 결합된다. 명령 캐시(16)는 또한 MROM 유닛(34) 및 명령 정렬 유닛(18)에 결합된다. 초기 디코드 유닛(EDU)(44)을 포함하는 명령 정렬 유닛(18)은 또한 디코드 유닛들(20)에 결합된다. 각 디코드 유닛(20A-20C)은 적재/저장 유닛(26) 및 각 예약 스테이션들(22A-22C)에 결합된다. 예약 스테이션들(22A-22C)은 또한 각 기능 유닛들(24A-24C)에 결합된다. 또한, 디코드 유닛들(20) 및 예약 스테이션들(22)은 레지스터 파일(30) 및 재배열 버퍼(32)에 결합된다. 기능 유닛들(24)은 적재/저장 유닛(26), 레지스터 파일(30) 뿐 아니라 재배열 버퍼(32)에 결합된 다. 데이터 캐시(28)는 적재/저장 유닛(26) 및 주 메모리 서브 시스템에 결합된다. 초기 디코드 유닛(EDU)(42)을 또한 포함하는 MROM 유닛(34)은 디코드 유닛들(20) 및 FPU(36)에 결합된다. FPU(36)는 적재/저장 유닛(26) 및 재배열 버퍼(32)에 결합된다. 예시적으로 프로그램가능한 레지스터들/카운터들 유닛(51)을 포함하는 전력 관리 제어 유닛(50)은 궁극적으로 명령 정렬 유닛(18) 및 FPU(36)에 결합된 것으로 도시된다.
하기에서 보다 상세히 설명되는 바와 같이, 전력 관리 제어 유닛(50)은, 마이크로프로세서(10)와 관련된 디스패치(또는 발행) 속도를 제한하여, 주파수를 감소시키지 않으면서 이 부분의 다이내믹한 전력 소모를 감소시킴으로써, 마이크로프로세서(10)의 성능을 조절하기 위해 제공된다. 전력 관리 제어 회로(50) 및 마이크로프로세서(10) 내에서의 성능 조절에 대한 세부 사항들을 설명하기 전에, 먼저 마이크로프로세서(10)의 구성 요소들의 동작에 관련된 양상들을 설명할 것이다. 전력 관리 제어 회로(50)의 일 실시의 일반적인 동작에 대한 세부 사항들은 하기에서 도 3을 참조하여 설명될 것이다.
명령 캐시(16)는 명령들을 저장하기 위해 제공되는 고속 캐시 메모리이다. 명령들은 명령 캐시(16)로부터 페치되어, 디코드 유닛들(20)에 디스패치된다. 일 실시예에서, 명령 캐시(16)는 64 바이트 라인들(1 바이트는 8개의 이진 비트들을 포함한다)을 갖는 2 방향 세트 어소시에이티브 구조(2-way set associative structure)로 최대 64 킬로바이트의 명령들을 저장하도록 구성된다. 주목할 사항으로서, 명령 캐시(16)는 완전 어소시에이티브(fully-associative), 세트 어소시에이 티브 또는 직접 맵핑된 구성(direct-mapped configuration)으로 실시될 수 있다.
명령들은 주 메모리로부터 페치되어, 프리페치/프리디코드 유닛(12)에 의해 명령 캐시(16)에 저장된다. 명령들은 프리페치 방식에 따라, 요구되기 전에 프리페치될 수 있다. 많은 프리페치 방식들이 프리페치/프리디코드 유닛(12)에 의해 이용될 수 있다. 프리페치/프리디코드 유닛(12)이 명령들을 주 메모리로부터 명령 캐시(16)로 전달할 때, 프리페치/프리디코드 유닛(12)은 명령들의 각 바이트에 대해 3개의 프리디코드 비트들, 즉 시작 비트, 종료 비트 및 기능 비트를 발생시킨다. 이러한 프리디코드 비트들은 각 명령의 경계들을 나타내는 태그들을 형성한다. 이 프리디코드 태그들은 또한, 소정의 명령이 디코드 유닛들(20)에 의해 직접 디코드되는지, 또는 명령이 MROM 유닛(34)에 의해 제어되는 마이크로코드 절차를 호출함으로써 실행되는지 등의 부가적인 정보를 전달할 수 있다. 이에 대해서는 하기에서 보다 상세히 설명할 것이다. 또한, 프리페치/프리디코드 유닛(12)은 분기 명령들을 검출하고 이 분기 명령들에 대응하는 분기 예측 정보를 분기 예측 유닛(14)에 저장하도록 구성될 수 있다.
다음으로, 가변 바이트 길이 명령 세트를 이용하는 마이크로프로세서(10)의 일 실시예에 대한 프리디코드 태그들의 한 엔코딩에 대해 설명한다. 상기 가변 바이트 길이 명령 세트는 서로 다른 명령들이 서로 다른 수의 바이트들을 점유할 수 있는 명령 세트이다. 마이크로프로세서(10)의 일 실시예에 의해 이용되는 예시적인 가변 바이트 길이 명령 세트는 x86 명령 세트이다.
예시적인 엔코딩에서, 소정의 바이트가 명령의 첫 번째 바이트이면, 그 바이 트에 대한 시작 비트가 설정된다. 상기 소정의 바이트가 명령의 마지막 바이트이면, 그 바이트에 대한 종료 비트가 설정된다. 디코드 유닛들(20)에 의해 직접 디코드될 수 있는 명령들은 "빠른 경로(fast path)" 명령들로서 언급된다. 일 실시예에 따르면, 나머지 x86 명령들은 MROM 명령들로서 언급된다. 빠른 경로 명령들에 있어서, 기능 비트는 명령에 포함된 각 접두 바이트(prefix byte)에 대해 설정되며, 다른 바이트들에 대해서는 클리어된다. 대안적으로, MROM 명령들에 있어서, 기능 비트는 각 접두 바이트에 대해 클리어되며, 다른 바이트들에 대해서는 설정된다. 명령의 타입은 종료 바이트에 대응하는 기능 비트를 검사함으로써 결정될 수 있다. 기능 비트가 클리어되면, 그 명령은 빠른 경로 명령이다. 반대로, 기능 비트가 설정되면, 그 명령은 MROM 명령이다. 이에 의해, 명령의 연산 코드(opcode)는, 디코드 유닛들(20)에 의해 명령의 제 1 클리어 기능 비트와 관련된 바이트로서 직접 디코드될 수 있는 명령 내에 위치될 수 있다. 예를 들어, 2개의 접두 바이트들, 즉 Mod R/M 바이트 및 즉시 바이트(immediate byte)를 포함하는 빠른 경로 명령은 다음과 같이 시작, 종료 및 기능 비트들을 갖는다.
시작 비트들 10000
종료 비트들 00001
기능 비트들 11000
일 특정 실시예에 따르면, 명령이 스케일 인덱스 베이스(scale-index-base)(SIB) 바이트를 포함한다는 것을 초기에 확인하는 것이 MROM 유닛(34)에 대해 유리하다. 이러한 실시예에서, 명령이 적어도 연산 코드 바이트 뒤에 2개의 바이트 들을 포함한다면, Mod R/M 바이트에 대한 기능 비트는 SIB 바이트의 존재를 나타낸다. Mod R/M 바이트에 대한 기능 비트가 설정된다면, SIB 바이트가 존재한다. 대안적으로, Mod R/M 바이트에 대한 기능 비트가 클리어되면, SIB 바이트는 존재하지 않는다.
MROM 명령들은 디코드 유닛들(20)에 의해 디코드되기에는 너무 복잡한 것으로 결정되는 명령들이다. MROM 명령들은 MROM 유닛(34)을 호출함으로써 실행된다. 보다 구체적으로, MROM 명령을 만나면, MROM 유닛(34)은 바람직한 동작을 달성하기 위해 상기 명령을 분석(parse)한 다음, 정의된 빠른 경로 명령들의 서브셋으로 발행한다. MROM 유닛(34)은 빠른 경로 명령들의 서브셋을 디코드 유닛들(20)에 디스패치한다.
마이크로프로세서(10)는 분기 예측을 이용하여 조건 분기 명령들 이후의 명령들을 추론적으로 페치시킨다. 분기 예측 유닛(14)은 분기 예측 동작을 수행하기 위해 포함된다. 일 실시예에서는, 최대 2개의 분기 타겟 어드레스들이 명령 캐시(16)의 각 캐시 라인의 각 16 바이트 부분에 대해 저장된다. 프리페치/프리디코드 유닛(12)은, 특정한 라인이 프리디코드될 때, 최초 분기 타겟들을 결정한다. 캐시 라인에 대응하는 분기 타겟들에 대한 이후의 갱신들은 캐시 라인 내에서의 명령들의 실행으로 인해 일어날 수 있다. 명령 캐시(16)는 페치되는 명령 어드레스의 표시를 제공하며, 이에 따라 분기 예측 유닛(14)은 분기 예측을 형성하기 위해 어떤 분기 타겟 어드레스들을 선택할 것인 지를 결정할 수 있다. 디코드 유닛들(20) 및 기능 유닛들(24)은 분기 예측 유닛(14)에 갱신 정보를 제공한다. 분기 예측 유 닛(14)은 캐시 라인의 16개의 바이트 부분 마다 2개의 타겟들을 저장하기 때문에, 라인 내의 일부 분기 명령들은 분기 예측 유닛(14)에 저장되지 않을 수 있다. 디코드 유닛들(20)은 분기 예측 유닛(14)에 의해 예측되지 않았던 분기 명령들을 검출한다. 기능 유닛들(24)은 분기 명령들을 실행한 다음, 예측된 분기 방향이 부정확한 지를 결정한다. 분기 방향은 "테이큰(taken)"이 될 수 있는바, 이 경우 이후의 명령들은 분기 명령의 타겟 어드레스로부터 페치된다. 반대로, 분기 방향은 "낫테이큰(not taken)"이 될 수 있는바, 이 경우 이후의 명령들은 분기 명령에 연속적인 메모리 위치들로부터 페치된다. 오예측된 분기 명령이 검출될 때, 이 오예측된 분기 이후의 명령들은 마이크로프로세서(10)의 많은 유닛들로부터 버려진다. 적절한 많은 분기 예측 알고리즘들이 분기 예측 유닛(14)에 의해 이용될 수 있다.
명령 캐시(16)로부터 페치된 명령들은 명령 정렬 유닛(18) 및 MROM 유닛(34)에 전달된다. 명령 캐시(16)로부터 명령들이 페치되면, 대응하는 프리디코드 데이터가 주사되어, 페치되는 명령들에 대한 정보를 명령 정렬 유닛(18) 및 MROM 유닛(34)에 제공한다. 명령 정렬 유닛(18)은 상기 주사 데이터를 이용하여 명령을 각 멀티플렉서들(46A-C)에 정렬시킨다. 일 실시예에서, 명령 정렬 유닛(18)은 8개의 명령 바이트들의 3개 세트들로부터의 명령들을 디코드 유닛들(20)에 정렬시킨다. 유사하게, MROM 유닛(34)은 최대 3개의 정렬된 명령들을 멀티플렉서들(46A-C)에 출력하도록 구성된다. 주목할 사항으로서, 명령 정렬 유닛(18) 및 MROM 유닛(34)은 각각 초기 디코드 유닛(EDC)(42 및 44)을 갖는다. 이러한 유닛들은, 예를 들어 각 명령에 대한 오퍼랜드 지정자(operand specifier)의 확인과 같은 디코 딩 과정의 제 1 단계들을 수행할 수 있다.
각 멀티플렉서(46A-C)는 명령 정렬 유닛(18) 및 MROM 유닛(34)으로부터 부분적으로 디코드된 명령(및 대응하는 디코드 및 프리디코드 정보)을 수신하도록 결합된다. 각 멀티플렉서(46A-C)는 각 클럭 주기 동안 명령 정렬 유닛(18) 또는 MROM 유닛(34)중 하나로부터 최대 1개의 명령을 선택하도록 구성된다. 선택된 명령들은 디코드 유닛들(20A-C)(정수 명령들) 및 FPU(36)(x86 부동 소수점, MMX 및 3DX 명령들)로 전송된다. 마이크로프로세서(10)의 일 실시예에서는, 클럭 주기 마다 최대 3개의 부동 소수점 명령들이 부동 소수점 유닛(36)으로 전달될 수 있다. 상기 설명한 바와 같이, 명령들은 MROM 유닛(34)(마이크로코드 명령들) 또는 명령 정렬 유닛(18)(빠른 경로 명령들)으로부터 나올 수 있다.
디코드 유닛들(20)은 멀티플렉서들(46A-C)로부터 수신된 디코딩 명령들을 완료하도록 구성된다. 레지스터 오퍼랜드 정보가 검출되어, 레지스터 파일(30) 및 재배열 버퍼(32)에 전송된다. 또한, 명령이 1개 이상의 메모리 동작들이 수행될 것을 요구한다면, 디코드 유닛들(20)은 메모리 동작들을 적재/저장 유닛(26)에 디스패치한다. 각 명령은 기능 유닛들(24)을 위한 한 세트의 제어값들로 디코드되며, 이러한 제어값들은 명령에 포함될 수 있는 오퍼랜드 어드레스 정보 및 변위 또는 즉시 데이터와 함께 예약 스테이션들(22)에 디스패치된다.
마이크로프로세서(10)는 순서를 벗어난 실행을 지원하며, 이에 따라 재배열 버퍼(32)를 이용하여, 레지스터 읽기 및 쓰기 동작들에 대해 최초 프로그램 순서의 트랙을 유지하고, 레지스터 재명명(register renaming)을 실시하며, 추론적인 명령 실행 및 분기 오예측 복구를 가능하게 하고, 그리고 정확한 예외들을 용이하게 한다. 재배열 버퍼(32) 내의 임시 저장 위치는, 레지스터의 갱신에 관여하는 명령의 디코드시에 예약되며, 그러므로써 추론적인 레지스터 상태들을 저장하게 된다. 분기 예측이 부정확하면, 오예측된 경로를 따라 추론적으로 실행된 명령들의 결과들은 이들이 레지스터 파일(30)에 기록되기 전에 버퍼 내에서 무효화될 수 있다. 유사하게, 특정한 명령이 예외를 야기시킨다면, 그 특정 명령 이후의 명령들은 버려질 수 있다. 이러한 방식으로, 예외들은 "정확하다"(즉, 예외를 야기시키는 특정 명령 이후의 명령들은 상기 예외 이전에 퇴거되지 않는다). 다르게 설명하면, 예외를 야기시키는 명령 다음에 오는 어떠한 명령들은 예외 이전에 실행되기는 하지만, 이들의 결과들은 마이크로프로세서의 아키텍쳐 상태에는 커미트(commit)되지 않는다. 주목할 사항으로서, 특정한 명령은, 이 특정한 명령이 프로그램 순서에 있어서 자신 보다 앞서는 명령들 이전에 실행된다면, 추론적으로 실행된다. 앞선 명령들은 분기 명령 또는 예외를 야기시키는 명령이 될 수 있는바, 이 경우 추론적인 결과들은 재배열 버퍼(32)에 의해 버려질 수 있다.
디코드 유닛들(20)의 출력들에 제공되는 명령 제어값들 및 즉시 또는 변위 데이터는 각각의 예약 스테이션들(22)에 직접 전송된다. 일 실시예에서, 각 예약 스테이션(22)은 명령 정보(즉, 명령 제어값들 뿐 아니라 오퍼랜드값들, 오퍼랜드 태그들 그리고/또는 즉시 데이터)를, 대응하는 기능 유닛으로의 발행을 기다리는 최대 6개의 미결 명령들(pending instructions)에 대해 홀딩할 수 있다. 주목할 사항으로서, 도 3의 실시예에 있어서, 각 예약 스테이션(22)은 전용 기능 유닛(24)에 결합된다. 따라서, 예약 스테이션들(22) 및 기능 유닛들(24)에 의해 3개의 전용 "발행 위치들"이 형성된다. 다시 말해, 발행 위치 0은 예약 스테이션(22A) 및 기능 유닛(24A)에 의해 형성된다. 예약 스테이션(22A)에 정렬 및 디스패치되는 명령들은 기능 유닛(24A)에 의해 실행된다. 유사하게, 발행 위치 1은 예약 스테이션(22B) 및 기능 유닛(24B)에 의해 형성되며, 발행 위치 2는 예약 스테이션(22C) 및 기능 유닛(24C)에 의해 형성된다.
특정한 명령의 디코드시, 요구되는 오퍼랜드가 레지스터 위치이면, 레지스터 어드레스 정보가 재배열 버퍼(32) 및 레지스터 파일(30)에 동시에 전송된다. 당업자라면, x86 레지스터 파일이 8개의 32 비트 실 레지스터들(real registers)(즉, 전형적으로 EAX, EBX, ECX, EDX, EBP, ESI, EDI 및 ESP로 불려짐)을 포함한다는 것을 알 수 있을 것이다. x86 마이크로프로세서 아키텍쳐를 이용하는 마이크로프로세서(10)의 실시예들에서, 레지스터 파일(30)은 32 비트 실 레지스터들 각각에 대해 저장 위치들을 포함한다. MROM 유닛(34)에 의해 이용하기 위한 부가적인 저장 위치들이 레지스터 파일(30) 내에 포함될 수 있다. 재배열 버퍼(32)는 결과들을 위한 임시 저장 위치들을 포함하는바, 이들은 이러한 레지스터들의 내용들을 변경함으로써, 순서를 벗어난 실행을 가능하게 한다. 재배열 버퍼(32)의 임시 저장 위치는 각 명령에 대해 예약되는바, 이는 디코드시, 실 레지스터들중 하나의 내용들을 변경하는 것으로 결정된다. 따라서, 특정 프로그램을 실행하는 동안의 많은 포인트들에서, 재배열 버퍼(32)는 추론적으로 실행된 소정 레지스터의 내용들을 포함하는 1개 이상의 위치들을 가질 수 있다. 소정 명령의 디코드에 이어서, 재배열 버퍼(32)가 소정 명령 내의 오퍼랜드로서 이용되는 레지스터에 할당되는 이전 위치 또는 위치들을 갖는 것으로 결정되면, 상기 재배열 버퍼(32)는 1) 가장 최근에 할당된 위치의 값, 또는 2) 궁극적으로 이전 명령들을 실행하게 될 기능 유닛에 의해 상기 값이 아직 생성되지 않은 경우, 가장 최근에 할당된 위치에 대한 태그 중 하나를, 대응하는 예약 스테이션에 전송한다. 재배열 버퍼(32)가 소정 레지스터에 대해 예약된 위치를 갖는 다면, 오퍼랜드 값(또는 재배열 버퍼 태그)은 레지스터 파일(30)로부터가 아닌 재배열 버퍼(32)로부터 제공된다. 재배열 버퍼(32) 내에 요구되는 레지스터에 대해 지정된 어떠한 위치도 없다면, 상기 값은 레지스터 파일(30)로부터 직접 가지고 온다. 오퍼랜드가 메모리 위치에 대응한다면, 오퍼랜드 값은 적재/저장 유닛(26)을 통해 예약 스테이션에 제공된다.
일 특정 실시예에서, 재배열 버퍼(32)는 동시에 디코드되는 명령들을 한 단위(unit)으로서 저장 및 처리하도록 구성된다. 이러한 구성은 본원에서 "라인 지향(line-oriented)"으로서 불려질 것이다. 몇 개의 명령들을 함께 처리함으로써, 재배열 버퍼(32) 내에서 이용되는 하드웨어가 단순해질 수 있다. 예를 들어, 본 실시예에 포함되는 라인 지향 재배열 버퍼는, 디코드 유닛들(20)에 의해 1개 이상의 명령들이 디스패치될 때 마다, 3개의 명령들(각 디코드 유닛(20)으로부터 하나)에 관련된 명령 정보에 충분한 저장 공간을 할당한다. 이와 대비적으로, 통상적인 재배열 버퍼들에서는, 실제로 디스패치되는 명령들의 수에 따라, 가변량의 저장 공간이 할당된다. 이러한 가변량의 저장 공간을 할당하기 위해서는 비교적 많은 수의 논리 게이트들이 필요하다. 동시에 디코드되는 명령들 각각이 실행될 때, 명령 결 과들은 레지스터 파일(30)에 동시에 저장된다. 이렇게 되면, 상기 저장 공간은 동시에 디코드되는 명령들의 다른 세트에 대해 자유롭게 할당될 수 있다. 또한, 몇 개의 동시 디코드되는 명령들을 통해 제어 논리가 상각(amortization)되기 때문에, 명령 마다 이용되는 제어 논리 회로의 양이 감소된다. 특정 명령을 확인하는 재배열 버퍼 태그는 2개의 필드들, 즉 라인 태그 및 오프셋 태그로 분할될 수 있다. 상기 라인 태그는 특정 명령을 포함하는 동시 디코드되는 명령들의 세트를 확인하고, 상기 오프셋 태그는 세트 내의 어떤 명령이 상기 특정 명령에 대응하는 지를 확인한다. 주목할 사항으로서, 명령 결과를 레지스터 파일(30)에 저장하고 대응하는 저장 공간을 비우는 것(freeing)은 명령들을 "퇴거(retiring)"하는 것으로 불려진다. 또한, 주목할 사항으로서, 마이크로프로세서(10)의 많은 실시예들에서는 어떠한 재배열 버퍼 구성이라도 이용될 수 있다.
상기 설명한 바와 같이, 예약 스테이션들(22)은 명령들이 대응하는 기능 유닛(24)에 의해 실행될 때 까지, 상기 명령들을 저장한다. 명령은 (i) 명령의 오퍼랜드들이 제공되고; 그리고 (ii) 동일한 예약 스테이션(22A-22C) 내에 있으며 프로그램 순서에 있어서 상기 명령에 앞서는, 상기 명령들에 대한 오퍼랜드들이 아직 제공되지 않은 경우, 실행을 위해 선택된다. 주목할 사항으로서, 명령이 기능 유닛들(24)중 하나에 의해 실행될 때, 명령의 결과는 이 결과를 기다리고 있는 어떠한 예약 스테이션들(22)에 바로 전달됨과 동시에, 재배열 버퍼(32)를 갱신하기 위해 전달된다(이 기술은 일반적으로 "결과 포워딩(result forwarding)"이라 불린다). 명령은 관련된 결과가 포워딩되는 클럭 주기 동안, 실행을 위해 선택되어 기능 유 닛(24A-24C)에 전달될 수 있다. 이 경우, 예약 스테이션들(22)은 상기 포워딩된 결과를 기능 유닛(24)에 보낸다.
일 실시예에서, 기능 유닛들(24) 각각은 덧셈 및 뺄셈의 정수 산술 연산들 뿐 아니라, 시프트들, 회전들, 논리 연산들 및 분기 연산들을 수행하도록 구성된다. 이러한 연산들은 특정 명령에 대해 디코드 유닛들(20)에 의해 디코드된 제어값들에 응답하여 수행된다. 또한, 기능 유닛들(24)은 적재/저장 유닛(26)에 의해 수행되는 적재 및 저장 메모리 연산들에 대한 어드레스 발생을 수행하도록 구성될 수 있다. 일 특정 실시예에서, 각 기능 유닛(24)은 실행 유닛 및 독립적인 어드레스 발생 유닛을 포함할 수 있다. 이러한 기능 유닛들은 정수 또는 분기 연산의 실행과 동시에 적재/저장 유닛(26)에 전달하기 위한 어드레스 발생을 수행할 수 있다.
기능 유닛들(24) 각각은 또한 조건 분기 명령들의 실행에 대한 정보를 분기 예측 유닛(14)에 제공할 수 있다. 분기 예측이 부정확했다면, 분기 예측 유닛(14)은 명령 처리 파이프라인에 들어가는 오예측된 분기 이후의 명령들을 플러시(flush)한 다음, 명령 캐시(16) 또는 주 메모리로부터 필요한 명령들을 페치하게 한다. 주목할 사항으로서, 이러한 상황들에서, 추론적으로 실행되어 적재/저장 유닛(26) 및 재배열 버퍼(32)에 임시 저장되었던 것들을 포함하여, 오예측된 분기 명령 이후에 일어난 최초 프로그램 순서에 있어서의 명령들의 결과들은 버려진다.
기능 유닛들(24)에 의해 생성된 결과들은, 레지스터 값이 갱신되는 경우에는 재배열 버퍼(32)에 전송되고, 메모리 위치의 내용들이 변경되는 경우에는 적재/저 장 유닛(26)에 전송된다. 상기 결과가 레지스터에 저장될 것이라면, 재배열 버퍼(32)는 명령이 디코드되었을 때 상기 레지스터의 값에 대해 예약된 위치에 상기 결과를 저장한다. 기능 유닛들(24) 및 적재/저장 유닛(26)으로부터 결과들을 포워딩하기 위한 많은 결과 버스들(38)이 포함된다. 이러한 결과 버스들(38)은 발생된 결과 뿐 아니라, 실행되는 명령을 확인하는 재배열 버퍼 태그를 전달한다.
적재/저장 유닛(26)은 기능 유닛들(24)과 데이터 캐시(28) 간에 인터페이스를 제공한다. 일 실시예에서, 적재/저장 유닛(26)은 미결 적재들 또는 저장들(stores)에 대한 데이터 및 어드레스 정보를 위한 12개의 저장 위치들을 갖는 프리 캐시(pre-cache) 적재/저장 버퍼, 및 32개의 엔트리들을 갖는 포스트 캐시(post-cache) 적재/저장 버퍼로 구성된다. 디코드 유닛들(20)은 적재/저장 유닛(26)에 대한 액세스를 조정한다. 버퍼가 가득차면, 디코드 유닛은 적재/저장 유닛(26)이 미결 적재 또는 저장 요구 정보를 위한 장소를 가질 때 까지 기다려야 한다. 적재/저장 유닛(26)은 또한 미결 저장 메모리 연산들에 대한 적재 메모리 연산들의 의존성 검사(dependency checking)를 수행하여, 데이터 코히런시가 유지됨을 보장한다. 메모리 연산은 마이크로프로세서(10)와 주 메모리 서브 시스템 간의 데이터 전송이다. 메모리 연산들은 메모리에 저장된 오퍼랜드를 이용하는 명령의 결과가 되거나, 데이터 전송을 야기시키지만 다른 어떠한 연산도 야기시키지 않는 적재/저장 명령의 결과가 될 수 있다. 또한, 적재/저장 유닛(26)은, 예를 들어 세그먼트 레지스터들 및 x86 마이크로프로세서 아키텍쳐에 의해 정의되는 어드레스 변환 메커니즘에 관련된 다른 레지스터들과 같은 특별한 레지스터들을 위한 특별한 레지스터 저장 공간을 포함할 수 있다.
데이터 캐시(28)는 적재/저장 유닛(26)과 주 메모리 서브 시스템 간에 전송되는 임시 저장 데이터에 대해 제공되는 고속 캐시 메모리이다. 일 실시예에서, 상기 데이터 캐시(28)는 2 방향 세트 어소시에이티브 구조로 최대 64 킬로바이트의 데이터를 저장할 수 있는 용량을 갖는다. 주목할 사항으로서, 데이터 캐시(28)는 세트 어소시에이티브 구성을 포함하는, 많은 특정한 메모리 구성들로 실시될 수 있다.
다음으로, 도 2는 FPU(36)의 세부도를 도시한다. 다른 실시예들이 가능하며 고려된다. FPU(36)는 클럭 주기 마다 최대 3개의 새로운 명령들을 받아들일 수 있는 고성능의, 순서를 벗어난 실행 유닛이다. 3개의 명령들은 x86 부동 소수점 명령들, MMX 명령들 또는 3D 명령들의 어떠한 결합이 될 수 있다. MMX 및 3DX 명령들은 표준 x86 명령 세트에 대한 확장들(extensions)이다. 3DX 명령 세트 확장의 한 예는 어드밴스드 마이크로 디바이시즈 인코포레이티드의 3DNow!TM 확장이다. MMX 명령들은 멀티미디어 및 2방향 그래픽 응용들과 관련되며, 3DX 명령들은 렌더링(rendering) 및 텍스쳐 맵핑(texture mapping)과 같은 3방향 그래픽 조종을 수행하도록 최적화된다. 많은 3DX 명령들은 다수의 독립적인 오퍼랜드들의 쌍들에 대해 동일한 연산을 수행하는 벡터화된 명령들이다.
도면에 도시된 바와 같이, 본 FPU(36)의 실시예는 다음의 구성 요소들: 재명명 1 유닛(rename-1 unit)(310), 재명명 2 유닛(312), 스케쥴러(314), 퇴거 큐(316), 레지스터 파일(318), 적재/가산 실행 파이프라인(320), 적재/곱셈 실행 파이프라인(322), 적재/저장 실행 파이프라인(326), 스키드 버퍼(skid buffer)(334), 변환 및 분류 유닛(336) 및 적재 맵퍼(338)를 포함한다. 재명명 1 유닛(310)은 재명명 2 유닛(312)에 결합되며, 추론적인 스택 꼭대기(speculative top of stack)(TOS) 태그 및 태그 워드(352)를 수신하도록 구성된다. 재명명 2 유닛(312)은 태그 미래 파일 어레이(328), 아키텍쳐 태그 어레이(330), 퇴거 큐(316), 스키드 버퍼(334), 스케쥴러(314) 및 적재 맵퍼(338)에 결합된다. 변환 및 분류 유닛(336)은 또한 적재 맵퍼(338)에 결합되며, 이 적재 맵퍼(338)는 또한 명령 상태 레지스터 파일(342) 및 스케쥴러(314)와 함께 실행 및 파이프라인 제어 유닛(340)에 결합된다. 레지스터 파일(318)은 변환 및 분류 유닛(336), 적재 맵퍼(338) 및 스페쥴러(314)로부터 입력들을 수신하고, 소스 오퍼랜드 버스(348)로 데이터를 출력한다. 상기 소스 오퍼랜드 버스(348)는 또한 실행 파이프라인들(320, 322 및 326)에 결합된다. 마지막으로, 상기 실행 파이프라인들(320, 322 및 326) 및 부동 소수점 상태/제어/태그 워드들(344)은 모두 결과 버스(346)에 결합된다. 부동 소수점 상태/제어/태그 워드들(344) 및 추론적인 스택 꼭대기 및 태그 워드(352)는 설명을 위해 도면에 개별적으로 도시되었지만, 이러한 태그들은 미래 파일 태그들(328) 및 아키텍쳐 레지스터 태그들(330)과 함께, 단일 저장 위치, 예를 들어 레지스터 파일(318), 실행 및 파이프라인 제어 유닛(340) 또는 퇴거 큐(316) 내에 저장될 수 있다.
상기 재명명 1 유닛(310)은 클럭 주기 마다 최대 3개의 명령들을 수신한다. 상기 설명한 바와 같이, 이러한 명령들은 부동 소수점, MMX 또는 3DX 명령들의 어떠한 결합이 될 수 있다. 재명명 1 유닛(310)은 스택 관련 레지스터들을 절대 레지스터 번호들(absolute register numbers)로 변환한다. 메모리 오퍼랜드들을 갖는 명령들, 예를 들어 FLD 명령들(부동 소수점 적재)에 대해, 스택 관련 레퍼런스(예를 들어, 목적지 ST(7))가 상기 절대 레지스터 번호에 맵핑된다. 또한, 어떠한 실시예들에서, FADD[mem]과 같은 적재 실행 명령들은 또한 스택 꼭대기 관련 어드레싱에서 절대 어드레싱으로 변환된 소스 오퍼랜드들을 필요로 한다. 따라서, 어떠한 실시예들에서, x86 타입 명령들(즉, 부동 소수점 명령들)은 스택에서 절대 레지스터로의 변환 과정을 겪지만, MMX 및 3DNow! 명령들을 이를 겪지 않는다. x86 명령 세트 및 아키텍쳐는 스택형 방식(stack-like manner)으로(즉, 스택 꼭대기 포인터에 대해) 액세스되는 8개의 부동 소수점 레지스터들을 정의한다. 재명명 1 유닛(310)은 또한 각 명령을, 3개의 실행 파이프라인들중 하나, 적재/저장 실행 파이프라인(326), 적재/덧셈 실행 파이프라인(320), 또는 적재/곱셈 실행 파이프라인(322)중 어느 하나에 할당하며, 필요한 경우, 각 명령을 내부 포맷으로 변환한다.
재명명 2 유닛(312)이 진짜 레지스터 재명명을 수행한다. 재명명 1 유닛(310)으로부터 명령들을 수신하면, 재명명 2 유닛(312)은 퇴거 큐(316) 내에 저장된 이용가능한 레지스터들의 "자유 리스트(free list)"로부터 3개의 레지스터 태그들을 읽는다. 일단 레지스터들이 읽혀지면, 재명명 2 유닛(312)은 그중 하나(one)를 각 명령의 목적지 레지스터에 할당한다. 소스 레지스터들을 재명명하기 위해, 재명명 2 유닛(312)은 각 소스 레지스터에 대해 절대 레지스터 번호를 이용하여 태그 미래 파일(328)를 인덱스한다. 상기 태그 미래 파일(328)은, 어떠한 레지스터들이 16개의 아키텍쳐 레지스터들 각각의 현재의 추론적인 미래 상태를 FPU(36) 내에 저장하는 지를 확인하는 태그들을 저장한다. 유사하게, 아키텍쳐 레지스터 태그 파일(330)은, 레지스터 파일(318) 내의 어떤 레지스터들이 FPU(36)의 현재 아키텍쳐(비 추론적인) 상태를 저장하는 지를 확인하는 태그들을 저장한다. 주목할 사항으로서, FPU(36)의 상태(아키텍쳐 또는 추론적)를 정의하는 16개의 레지스터들중에서, 8개는 아키텍쳐 레지스터들(즉, 부동 소수점 스택 또는 MMX 레지스터들)이며, 8개는 마이크로 아키텍쳐 레지스터들(즉, 일반적으로 프로그래머에게 액세스가 불가능한 내부 상태 정보를 저장하는 레지스터들)이다. 이후, 구 목적지 레지스터 태그들이 태그 미래 파일(328)로부터 읽혀진 다음, 자유 리스트의 끝(tail)에 기록된다. 마지막으로, 태그 미래 파일(328)은 새로운 목적지 레지스터들에 대한 태그들을 저장함으로써 갱신된다.
메모리 소스 오퍼랜드들은, 이들에게 목적지 레지스터로서 동일한 레지스터 태그를 할당함으로써 처리될 수 있다. 이는, 적재 데이터가 적재/저장 유닛(26)으로부터 수신될 때, 이 적재 데이터가 변환되어 목적지 레지스터 내에 바로 기록되기 때문이다. FLD 명령의 경우, 예외들을 처리하고 재배열 버퍼(32)에 완료를 신호하기 위해 FLD 명령이 실행 파이프라인에 여전히 할당되기는 하지만 (어떠한 예외 경우들에서를 제외하고) 그 이상의 어떠한 처리도 요구되지 않는다.
일단 3개의 명령들이 재명명 1 유닛(310) 및 재명명 2 유닛(312)을 통과하 면, 명령들은 3개의 오퍼랜드 포맷(즉, 제 1 소스 오퍼랜드, 제 2 소스 오퍼랜드 및 목적지 오퍼랜드)으로 표시된다. 제 1 소스 오퍼랜드가 항상 레지스터 오퍼랜드인 동안, 연산 코드 내의 한 비트는 제 2 오퍼랜드가 레지스터 오퍼랜드인지 메모리 오퍼랜드인지를 나타내는 데에 이용된다.
재명명 2 유닛(312)으로부터, 명령들은 스케쥴러(314)로 전달되는바, 여기서는 3개의 명령들이 저장 "라인"으로서 할당된다. 스케쥴러(314)가 가득 차면, 명령들은 스케쥴러(314) 내에 공간이 생길 때 까지 스키드 버퍼(334)에 저장될 수 있다. 3개의 명령들을 수신한 후, 스케쥴러(314)는 결과 버스(346) 및 소스 오퍼랜드 버스(348)을 스누프(snoop)한다. 스케쥴러(314)는 또한 적재 데이터 버스를 스누프할 수 있다. 저장 라인을 할당하고 스누프하는 동시에, 퇴거 큐(316)는 각 명령에 대해 1개의 엔트리를 할당한다. 엔트리들은 목적지 레지스터 태그들, 절대적인 목적지 레지스터 번호 및 구 목적지 레지스터 태그들을 저장한다. 예를 들어 퇴거시에 아키텍쳐 상태를 갱신하는 데에 필요할 수도 있는 정보와 같은 부가적인 정보가 또한 포함될 수 있다.
명령들이 스케쥴러(314)에 들어간 다음 주기에서, 상기 명령들은 스케줄링에 이용될 수 있다. 스케쥴러(314)는 저장된 모든 명령들을 검사한 다음, 다음의 기준들, 즉 (1) 명령이 할당된 실행 파이프라인이 이용가능하고, (2) 상기 실행 파이프라인에 대한 결과 버스가, 상기 명령이 완료될 클럭 주기에 이용하게 될 것이며(이는 특정 명령의 레이턴시(latency)에 의존한다), 그리고 (3) 명령의 소스 레지스터들 또는 메모리 오퍼랜들이 이용가능한 지의 기준들을 충족시키는 가장 오래된 명 령들을 발생한다. 본 실시예에서, 스케쥴러(314)는 클럭 주기 마다 최대 3개의 명령들을 스케쥴링할 수 있다. 3개의 실행 파이프라인들(320, 322 및 326) 각각은 매 클럭 주기 마다 새로운 명령을 받아들일 수 있다. 주목할 사항으로서, 다른 수의 명령들, 예를 들어 4개 이상의 명령들을 동시에 스케쥴링할 수 있는 다른 실시예들이 또한 가능하며 고려된다.
일단 라인 내의 3개의 모든 엔트리들이 스케쥴링되면, 그 라인은 스케쥴러(314)로부터 자유롭게 채워(compact)질 수 있다. 명령들이 스케쥴러(314)로부터 그들의 각 명령 실행 파이프라인으로 전달되면, 그들의 소스 오퍼랜드들이 읽혀진다. 소스 데이터는, 어떠한 경우들에서는 레지스터로부터 나오며, 다른 경우들에서는 "바이패스(bypass)"로부터 나올 것이다. 이 바이패스는 결과 포워딩 또는 결과 슈퍼포워딩(superforwarding)의 실행을 말한다. 상기 결과 포워딩은 최근 실행된 명령으로부터의 결과들을, 이 결과에 의존하는 다른 명령들에 직접 전달하는 것을 포함한다. 상기 결과 포워딩은, 결과가 레지스터에 저장되기를 기다리지 않으면서, 그리고 레지스터로부터 결과를 읽지 않으면서, 상기 결과가 이후의 명령들에서 이용될 수 있게 한다. 상기 결과 슈퍼포워딩에 대해서는 하기에서 보다 상세히 설명한다.
각 실행 파이프라인(320, 322 및 326)은 4-스테이지 파이프라인으로서 구성될 수 있다. 각 파이프라인의 제 1 스테이지에서는, 결과 버스들이 읽혀지고, 입력 데이터는 (데이터가 레지스터 파일(318) 내에 있을 경우에는) 소스 오퍼랜드 버스로부터, 또는 (바이패스가 수행되고 있는 경우에는) 결과 버스로부터 제공된다. 일 단 소스 데이터가 수신되면, 각 실행 파이프라인은 적절한 계산의 수행을 시작할 수 있다.
도면에 도시된 실시예에서, 실행 파이프라인(320)은 적재 및 덧셈 연산들을 수행하도록 구성되고, 실행 파이프라인(322)은 적재 및 곱셈 연산들을 수행하도록 구성되며, 그리고 실행 파이프라인(326)은 적재 및 저장 연산들을 수행하도록 구성된다. 실행 파이프라인들(320 및 322)은 어떠한 MMX 명령들을 수행하도록 구성될 수 있다. 곱셈기(50)를 포함하는 실행 파이프라인(322)은 또한, 제어 유닛(354), 분할/제곱근 ROM(360) 및 (나머지가 요구되는 경우에는) 나머지 제어 유닛(356)의 제어하에서, 곱셈을 포함하는 반복 계산들, 예를 들어 상반 연산들(reciprocal operations), 분할 연산들, 제곱근 연산들을 수행하도록 구성될 수 있다. 상수 ROM(358)은, 초월수 계산(transcendental computation)을 위해, FPU(39) 자기 검사를 위해, 그리고 어떠한 특별하고 예외적인 결과들을 위해, 예를 들어 FLDPI와 같은 적재 상수 명령들에 대한 다수의 상수들을 저장하도록 구성된 판독 전용 메모리이다. 분할/제곱근 ROM(360)은 분할 및 제곱근 계산들을 위한 최초값들을 결정하는 데에 이용되는 상수들 및 어떠한 3DNow! 명령들에 의해 복귀되는 상수들을 저장하는 판독 전용 메모리이다. 제어 유닛(354)은 분할 및 제곱근 기능들에 대한 시퀀스 정보를 제공한다. 주목할 사항으로서, 어떠한 실시예들에서, 상기 제어 유닛(354)은 실행 및 파이프라인 제어 유닛(340)의 일부가 될 수 있다.
어떠한 경우들에 있어서, 명령을 실행함으로써 발생되는 부동 소수점 명령 오퍼랜드들 또는 부동 소수점 결과들은 너무 작아서 오퍼랜드 또는 결과의 표준 데이터 포맷 내에 맞추지 못할 수도 있다. 이러한 수들은 "디노멀(denormal)"로서 언급된다. 표준화된 부동 소수점 값들은 비 제로 지수(non-zero exponent)를 갖고, 가수(significand)의 최상위 비트에서 1, 즉 이진 소수점(binary radix point)의 바로 왼쪽에 있는 비트(예를 들어, 1.001010)를 갖지만, 디노멀은 제로 지수 및 가수의 최상의 비트에서 제로(예를 들어, 0.000101...)로 표현된다. 디노멀 적재 데이터는 변환 및 분류 유닛(336)에 의해 검출 및 태그된다. 실행 파이프라인들(320, 322 및 326) 내에서 실행되는 동안 발생되는 디노멀 결과들은, 이들이 발생될 때 태그된다. 실행 및 파이프라인 제어 유닛(340)은 디노멀 태그들의 존재를 검출한 다음, 디노멀 데이터를 처리하기 위해 MROM(34)으로부터 적절한 마이크로코드 루틴을 호출한다.
마지막 실행 스테이지의 끝에서, 데이터는 결과 버스(346) 상에 놓여진다. 이렇게 되면, 상기 결과 데이터는 다음 클럭 주기 동안 명령 실행 파이프라인들중 하나의 제 1 스테이지에 들어가는 명령들에 대해 이용가능해진다. 일단 데이터가 결과 버스 상에 있으면, 이는 또한 레지스터 파일(318) 내에 기록될 수 있다. 레지스터 파일(318)에 저장되는 대신, 저장 데이터는 적재/저장 유닛(26)에 전송된다. 그러나, 어떠한 경우들에 있어서, 상기 저장 데이터는 (예를 들어, 부동 소수점 적재 제어 워드 명령들--FLDCW--에 대해, 그리고 디노멀이 저장되는 경우의 저장들에 대해) 적재/저장 유닛(26) 및 레지스터 파일(318)에 전송될 수 있다. 재배열 버퍼 태그 및 어떠한 예외 정보가 재배열 버퍼(32)로 다시 전송된다. 이 시점에서, 명령들은 완전하다. 그러나, 이들은 여전히 추론적이다. (어떠한 분기 오예측 또는 예 외 중단(exception abort)도 없다는 가정하에서) 명령들이 재배열 버퍼(32)의 바닥에 도달하면, 재배열 버퍼(32)는 명령들이 퇴거되어야 함을 FPU(36)에 통지한다. 부동 소수점 유닛(36)의 추론적인 상태는, 퇴거 큐(316)가 아키텍쳐 레지스터 파일(328)에 대한 태그들을 갱신할 때 아키텍쳐 상태로 커미트되며, 퇴거 큐(316) 내의 목적지 레지스터 태그들은 아키텍쳐 레지스터 파일(318)에 기록된다.
변환 및 분류 유닛(336)은 모든 적재 데이터를 수신하여, 이를 데이터 타입에 의해 분류하며, 필요한 경우 내부 포맷으로 변환한다. 일 실시예에서, 변환 및 분류 유닛(336)은 각 데이터 아이템에 3개의 비트 분류 태그들을 부가한다. 이러한 3개의 비트 태그들은 수반하는 데이터를 다음의 8개의 잠재적인 데이터 타입들, 즉 (1) 제로, (2) 무한대(infinity), (3) 조용한 NaN(quiet NaN), (4) 디노멀, (5) 신호 NaN, (6) MMX, (7) 정상, 또는 (8) 비지원(unsupported)중 하나로서 분류한다. NaN은 "수가 아닌(Not-a-Number)"에 대한 표준 약어이다. 서로 다른 실시들을 통해 표현들이 달라질 수 있기는 하지만, 상기 제로 데이터 타입들은 전형적으로 제로 지수 및 제로 가수로 표현된다. 유사하게, 상기 무한대 데이터 타입들은 전형적으로 모든 어서트(assert)된 1을 포함하는 지수로 표현된다. 상기 조용한 NaN은, 부동 소수점 명령이, 예를 들어 음수에 대한 제곱근 연산과 같은 무효한 연산을 야기시킬 때 마다 발생된다. 상기 신호 NaN("SNaN")은, 상기 조용한 NaN과 달리, 이용될 때 예외를 발생시킨다. 상기 신호 NaN들은 FPU(36)에 의해 발생되지 않으며, 전형적으로 프로그래머들에 의해 특정한 에러 상태들을 신호하는 데에만 이용된다. 하기의 표는 x86 호환가능한 부동 소수점 유닛들에 대한 각 데이터 타입의 특성들을 도시한다(여기서, "x"는 1또는 0을 나타낸다).
[표]
Figure 112008039937913-pct00005
삭제
삭제
삭제
삭제
삭제
주목할 사항으로서, 이러한 데이터 타입들은 IEEE-754 사양에 따른다.
상기 MMX 데이터 타입들은 64 비트 크기이며, 8개의 팩(pack)된 8 비트 바이트들, 4개의 팩된 16 비트 워드들, 또는 2개의 팩된 32 비트 이중 워드들중 하나를 포함한다. 이 MMX 데이터 타입들은 이들을 앞서는 MMX 연산 코드들에 의해 검출될 수 있다. 정상 데이터 타입들은 표준 부동 소수점 값들로서, 이들은 (이들이 내부 데이터 포맷으로 변환되기 전에) 단정도(single precision), 배정도(double precision), 또는 확장된 정도중 하나를 가지며, 상기 설명된 데이터 타입들중 어느 것의 특성도 갖지 않는다. 상기 비지원 데이터 타입들은 확장된 정확도 비트 패턴들로서, 이들은 상기 설명한 데이터 타입들중 어느 것에도 해당되지 않으며, IEEE 표준 754에 의해 정의되는 정상 데이터 타입과도 관계가 없다. 예를 들어, 0 표시 비트(sign bit), 11...11의 바이어스된 지수 및 0.11...11의 포맷(i.ff...ff)의 가수를 갖는 확장된 정확도 비트 시퀀스는 비지원값이다(여기서, "i"는 정수 비트이고, "f"는 프랙션 비트이다). 그러나, 주목할 사항으로서, 다른 실시예들에서는, 보다 크거나 작은 분류 태그들 및 부가적인 또는 다소의 데이터 타입들이 사용될 수 있다.
상기 설명된 데이터 타입들 및 예시적인 포맷들은 상기 변환 및 분류 유닛(336)에 의해 수신되어 확인되는 데이터를 설명한다. 일단 변환 및 분류 유닛(336)이 데이터를 분류하면, 분류 태그는 일부 또는 모든 데이터 특성들을 확인하는 데에 이용될 수 있다. 예를 들어, 값이 제로로서 분류되면, 상기 값의 지수 및 가수 부분들에 있어서 각 비트를 광범위하게 비교하는 대신, 자신의 분류 태그에 의해서만 확인될 수 있다. 이 분류 태그들은 FPU(36)를 통해 데이터를 수반할 수 있으며, 데이터와 함께 레지스터 파일(18)에 저장될 수 있다.
상기 설명한 바와 같이, 적재 명령으로부터의 데이터가 FPU(36)에 의해 수신되면, 이 데이터는 변환 및 분류 유닛(336)에 전송된다. 대응하는 재배열 버퍼 태그는 데이터를 수반하며, 적재 맵퍼(338)로 전송된다. 마이크로프로세서(10)의 설명시 상기 설명한 바와 같이, 재배열 버퍼 태그는 순서를 벗어난 명령들이 퇴거되어야 하는(즉, 아키텍쳐 상태로 커미트되어야 하는) 시퀀스를 확인한다. 적재 명령들에 있어서, 재배열 버퍼 태그는 적재/저장 유닛(26)에서 FPU(36)로의 데이터 다음에 온다. 적재 맵퍼(338)는 재배열 버퍼 태그를 수신한 다음, 이를 물리적인 레지스터 태그로 변환한다. 이 물리적인 레지스터 태그는, 대응하는 데이터가 적재될 레지스터 파일(318) 내의 데이터 레지스터를 나타낸다.
실행 및 파이프라인 제어 유닛(340)은 실행 파이프라인들(320, 322 및 326) 내의 각 스테이지의 상태를 추적한다. 이 실행 및 파이프라인 제어 유닛(340)은 각 실행 파이프라인들의 미래의 유효성을 결정할 수 있게 하는 타이밍 정보를 포함한다. 예를 들어, FMUL(부동 소수점 곱셈기) 명령이 곱셈 실행 파이프라인(322)에서 실행을 시작할 때, 제어 유닛(340)은 그의 저장된 타이밍 정보를 이용하여, 결과가 이후의 4개의 클럭 주기들 동안 결과 버스(346) 상의 출력으로 이용가능하게 될 것임을 스케쥴러(314)에 통지한다. 이러한 타이밍 정보에 의해, 스케쥴러(314)는 실행 파이프라인들(320, 322 및 326)에서 실행하기 위한 명령을 효율적으로 스케쥴링할 수 있게 된다. 제어 유닛(340)은 또한 각 파이프라인 스케이지의 상태를 추적함으로써, 실행 파이프라인들(320, 322 및 326)로부터 예외들을 수신하여 우선순위를 매긴다.
FPU 상태 워드, 제어 워드 및 태그 워드(총체적으로, 워드들(344))는 퇴거 큐(316) 내에 저장되며, 레지스터 파일(318) 내의 어떤 상태 및 제어 레지스터들이 FPU의 현재 아키텍쳐 상태를 포함하는 지를 나타낸다. 예를 들어, 일 실시예에서, 레지스터 파일(318)은 88개의 레지스터들, 즉 FPU(36)의 현재의 아키텍쳐 상태(하기 참조)를 저장하는 16개의 레지스터들, 및 FPU(36)의 추론적인 상태를 저장하는 72개의 추론 레지스터들을 포함할 수 있다. 72개의 추론 레지스터들 중에서, 16개는 "현재의" 추론적인 상태를 저장한다. (아키텍쳐 상태인지 추론적인 상태인지에 따라) FPU(36)의 특정한 상태를 저장하는 16개의 레지스터들의 각 세트 중에서, 8개의 레지스터들은 FPU 스택 레지스터들이며, 8개의 레지스터들은 FPU(36) 내의 마이크로코드 명령들에 대해서만 액세스가능한 상태 정보를 저장하는 마이크로 아키텍쳐 레지스터들이다(즉, 이들은 프로그래머에 대해 액세스가 불가능하며, 내부 상태 정보 만을 저장한다). 일 실시예에서, 레지스터 파일(314) 내의 각 레지스터는 90 비트 길이를 갖는다. 즉, 내부 포맷 데이터를 위한 저장 공간을 제공하는 87 비트들(예를 들어, 1개의 표시 비트, 18개의 지수 비트들 및 68 비트의 가수) 및 3개의 부류 비트들(class bits)을 갖는다.
명령 상태 레지스터 파일(342)은 실행 및 파이프라인 제어 유닛(340)을 위한 정보를 저장한다. FPU(36) 내에서의 순서를 벗어난 명령 실행의 결과로서, 예외 파이프라인들 내에서 일어나는 예외들은 이들을 발생시키는 명령들이 다음으로 퇴거될 때 까지 저장될 필요가 있다. 퇴거 큐(316)는, 명령들을 퇴거하고 아키텍쳐 부동 소수점 상태 워드(FPSW), 부동 소수점 제어 워드(FPCW) 및 태그 워드(총체적으로, 344)를 이에 따라 갱신할 때, 명령 상태 레지스터 파일(342)을 읽는다. 이 정보는 현재의 추론적인 스택 꼭대기(352) 및 결과 버스(346)를 통해 재명명 1 유닛에 전달된다.
도 3은 마이크로프로세서(100) 기능의 양상들을 도시한 단순화된 블럭도이다. 주목할 사항으로서, 도 1 및 2의 특정한 마이크로프로세서(10)는 일반적으로 도 3에 도시된 기능을 따른다. 도 1 및 2의 것들에 대응하는 회로 부분들은 단순함 및 명확성을 위해 동일하게 번호가 매겨진다.
도 3에 도시된 마이크로프로세서(100)의 기능은 다수의 정수 실행 파이프라인들(54A-54C) 및 부동 소수점 스케쥴러(56)에 결합된 명령 디스패처(52)를 포함한다. 전력 관리 제어 유닛(50)이 명령 디스패처(52) 및 부동 소수점 스케쥴러(56)에 결합된다. 또한, 부동 소수점 스케쥴러(56)에 결합된 다수의 부동 소수점 실행 파이프라인들(58A-58C)이 도시되어 있다. 가상선(phantom)으로 도시된 바와 같이, 전력 관리 제어 유닛(50)은 또한 실행 파이프라인들(54A-54C 및 58A-58C)에 결합되어, 하기 설명되는 바와 같이 다양한 성능 조절 동작들의 제어를 용이하게 할 수 있다.
정수 실행 파이프라인들(54) 각각은, 상기 설명된 도 1의 기능 유닛들(24)에 의해 실행되는 것들과 같은, 정수 명령들을 실행하기 위한 대응하는 실행 유닛(60A-60C)을 포함한다. 각 정수 실행 파이프라인(54)은 또한, 정수 실행 파이프라인들(54)의 특정한 실시예들에서는 포함되지 않을 수 있음에도 불구하고, 도 1에 도시된 디코드 유닛들(20) 및 예약 스테이션들(22)의 기능과 같은 부가적인 기능을 포함한다.
명령 디스패처(52)는 명령들을 명령 소스(도면 미도시)로부터 정수 실행 파이프라인들(54)로 디스패치시키도록 구성된다. 일 실시예에서, 상기 명령 디스패처(52)는 도 1의 명령 정렬 유닛(18)의 기능을 포함한다. 주목할 사항으로서, 다른 실시예들에서, 명령 디스패처(52)는 예를 들어 명령 큐들과 같은 명령들을 디스패칭 또는 발행하기 위한 대안적인 메커니즘들로 실시될 수 있다. 본원에서 이용되는 "디스패칭"이란 용어는 "발행"이라는 용어와 동의어로 이용된다.
부동 소수점 실행 파이프라인들(58) 각각은 유사하게 실행 유닛(62A-62C)을 포함하는바, 이들중 적어도 하나는 부동 소수점 명령들을 실행하도록 구성된다. 주목할 사항으로서 다른 실시예들에서는, 대안적인 또는 부가적인 기능들(functions)(예를 들어, 명령들)이 부동 소수점 실행 파이프라인들(58) 각각에서 실행될 수 있음에도 불구하고, 부동 소수점 실행 파이프라인들(58A-58C)은 일반적으로, 예를 들어 도 2의 파이프라인들(320, 322 및 326)을 나타낸다. 예를 들어, 일 실시예에서, 부동 소수점 파이프라인들(58) 각각은 마이크로프로세서(100)에 의해 지원되는 어떠한 타입의 부동 소수점 명령들을 실행하도록 구성될 수 있다. 또한, 주목할 사항으로서, 부동 소수점 명령들 외에, 부동 소수점 파이프라인들(58) 각각은 또한 바람직한 경우 MMX 명령들과 같은 다른 명령 타입들을 실행할 수 있다.
부동 소수점 스케쥴러(56)는, 부동 소수점 실행 파이프라인들(58) 내에서의 실행을 위해 명령 디스패처(52)로부터 디스패치된 명령들을 수신하도록 결합된다. 다른 실시예들에서는 다른 특정한 형태의 스케쥴러들이 이용될 수 있음에도 불구하고, 일 특정 실시에서 상기 부동 소수점 스케쥴러(56)는 도 2의 스케쥴러(314)의 기능을 실시한다. 주목할 사항으로서, 부가적으로 고려되는 다른 실시예들에서, 명령 디스패처(52)는 부동 소수점 실행 파이프라인들(58)에 명령들을 바로 제공하도록 구성될 수 있다. 이러한 경우들에서는, 부동 소수점 스케쥴러(56)가 생략될 수 있다.
전력 관리 제어 유닛(50)은 마이크로프로세서(100)의 성능을 조절하기 위한 몇 개의 서로 다른 기술들중 어떠한 1개 이상의 기술들을 실시하도록 구성될 수 있다. 제 1 성능 조절 기술의 실시에 있어서, 전력 관리 제어 유닛(50)은 명령 디스패처(52)로 하여금 빠른 경로 명령들의 디스패치를 실행 유닛들(60)로 제한하도록 구성될 수 있다. 보다 구체적으로, 전력 관리 제어 유닛(50)의 프로그램가능한 레지스터들/카운터들 유닛(51)은 소프트웨어를 통해 프로그램될 수 있으며, 이에 따라 명령 디스패처(52)는, (본 특정 실시예에서는) 주기 마다 3개의 명령들의 보통의 최대 디스패치 속도로 명령들을 디스패치하는 것이 아니라, 프로그램가능한 레지스터들/카운터들 유닛(51) 내에 저장된 값에 따라, 주기 마다 단지 2개의 명령들의 속도 또는 주기 마다 단지 1개의 명령의 속도로 명령들을 디스패치한다. 따라서, 이러한 모드에서 동작할 때에는, (상기 저장된 값에 따라) 단지 1개 또는 2개의 실행 유닛들(60)이 활성이 될 것이다. 예를 들어, 일 실시에서, 전력 관리 제어 유닛(50)의 프로그램가능한 레지스터들/카운터들 유닛(51) 내에 한 특정값이 저장되어 있을 때, 명령 디스패처(52)는 실행 유닛(60A)에 의해 실행하기 위한 명령 실행 파이프라인(54A)에 대해서만 명령들을 디스패치한다. 마찬가지로, 프로그램가능한 레지스터들/카운터들 유닛(51) 내에 제 2 특정 값이 저장되어 있을 때, 전력 관리 제어 유닛(50)은 명령 디스패처(52)로 하여금 실행 유닛(60A 및 60B)에 의해 실행하기 위한 정수 실행 파이프라인들(54A 및 54B)에 대해서만 명령들을 디스패치하게 한다. 일 실시에서, 명령 디스패처(52)에 의해 어떠한 명령도 디스패치되지 않는 실행 파이프라인들에는 무효 신호들(또는 무효 비트들)이 제공된다. 무효 신호(또는 명령 버스와 관련된 무효 비트)가 명령 디스패처(52)로부터 특정한 실행 파이프라인(54)에 전달될 때, 실행 파이프라인은 예를 들어 파이프라인의 입력과 관련된 입력 래치들 또는 플립 플롭들이 그 주기 동안 새로운 값을 받는 것을 막음으로써, 그 주기 동안 명령 디스패처(52)로부터의 입력에 반응하지 않도록 구성될 수 있다. 이는 과도 전력 손실 및 전체 전력 소모를 줄인다.
제 2 성능 조절 기술의 실시에 있어서, 전력 관리 제어 유닛(50)은 명령 디스패처(52)로부터 정수 실행 파이프라인들(54) 그리고/또는 부동 소수점 스케쥴러(56)로의 명령들의 디스패치를 매 주기 마다, 매 다른 주기 마다, 매 세 번째 주기 마다, 매 네 번째 주기 마다 등등에서 제한하도록 구성될 수 있다. 일 특정 실시에서, 프로그램가능한 레지스터들/카운터들 유닛(51)에 관련된 카운터(또는 카운터들)는, 예를 들어 "0"의 값에 이를 때 까지, 마이크로프로세서의 각 주기에서 감소되는 최초 카운터값으로 세트된 다음, 유사한 카운트 주기를 재개하기 위해 최초 카운트 값으로 리셋될 수 있다. 상기 명령 디스패처(52)는, 카운터가 특정한 값(또는 값들)에 이를 때에만, 정수 실행 파이프라인(54) 그리고/또는 부동 소수점 스케쥴러(56)에 명령들을 디스패치하도록 구성될 수 있다. 따라서, 예를 들어, "2"의 최초 카운트 값이 프로그램가능한 레지스터/카운터 유닛(51)의 지정된 카운터에 저장되어 있으면, 전력 관리 제어 유닛(50)은 마이크로프로세서(100)의 연속적인 클럭 주기들에서 상기 값을 "2"에서 "1"로 "1"에서 "0"으로 감소시킨 다음, 다시 "2"의 값이 되게 하도록 구성될 수 있다. 전력 관리 제어 유닛(50)은 명령 디스패처(52)로 하여금 대응하는 카운터에 "0"의 값이 포함되어 있는 주기들에서만 명령들을 디스패치하게 하며, 이에 따라 매 세 번째 클럭 주기 마다 유효 명령이 정수 실행 파이프라인들(54) 그리고/또는 부동 소수점 스케쥴러(56)에 디스패치된다. 이러한 기능의 다른 특정한 실시들이 고려되며 가능하다.
제 3 성능 조절 기술의 실시에 있어서, 전력 관리 제어 유닛(50)은 부동 소 수점 실행 파이프라인들(58)로의 명령들의 디스패치를 제어하도록 유사한 방식으로 구성될 수 있다. 이 방식에서, 마이크로프로세서(100)의 부동 소수점 부분의 성능은 조절 또는 제한되며, 이에 따라 정수 실행 파이프라인들(54)에 의해 실시되는 프로세서의 정수 기능의 성능에 영향을 주지 않으면서, 전력을 보존하게 된다. 일 특정 실시예에서는, 프로그램가능한 레지스터들/카운터들 유닛(51) 내에는, 각각의 부동 소수점 실행 유닛(62)(또는 각각의 부동 소수점 실행 파이프라인(58))에 대응하는 개별적인 카운터(예를 들어 3비트 카운터)가 제공된다. 각 카운터는 독립적인 값으로 세트될 수 있다. 전력 관리 제어 유닛(50)은 각 카운터의 값을 이용하여, 스케쥴러(56)로부터 개별적인 부동 소수점 실행 유닛들(62) 각각으로의 명령들의 발행을 개별적으로 제어한다. 이러한 방식에서는, 바람직한 전력 유지를 달성하기 위해, 유효 명령들이 매 주기 마다, 매 다른 주기 마다, 매 세 번째 주기 마다, 매 네 번째 주기 마다 등등에서 각 부동 소수점 실행 유닛(62)에 제공될 수 있다.
다른 부가적인 실시예들에서, 대안적으로 또는 부가적으로, 전력 관리 제어 유닛(50)은 다른 프로세서들의 서브 유닛들의 성능을 조절하여, 최대 전력 또는 평균 전력에 기초하여 전력을 감소시킬 수 있다. 예를 들어, 일 실시예에서, 전력 관리 제어 회로(50)는 (도 1의) 명령 캐시(16) 그리고/또는 데이터 캐시(28)로 하여금 매 다른 주기 마다, 매 세 번째 주기 마다 등등에서만 요구들을 처리하게 하도록 구성될 수 있다. 마이크로프로세서의 다른 서브 유닛들은 전력 관리 제어 유닛(50)에 의해 유사하게 제어될 수 있다.
마지막으로, 도 4는 전력 관리 제어 유닛(50)을 포함하는 일 실시예의 마이 크로프로세서(10)를 이용하도록 구성된 컴퓨터 시스템(500)의 일 실시예의 블럭도이다. 마이크로프로세서(10)는 버스 브리지(502)를 통해 많은 시스템 구성 요소들에 결합된다. 다른 실시예들이 가능하며 고려된다. 도시된 시스템에서, 주 메모리(504)가 메모리 버스(506)를 통해 버스 브리지(502)에 결합되고, 그래픽 제어기(508)가 AGP 버스(510)를 통해 버스 브리지(502)에 결합된다. 마지막으로, 다수의 PCI 디바이스들(512A-512B)이 PCI 버스(514)를 통해 버스 브리지(502)에 결합된다. 또한, EISA/ISA 버스(520)를 통한 1개 이상의 EISA 또는 ISA 디바이스들(518)로의 전기적인 인터페이를 제공하는 제 2 버스 브리지(516)가 제공된다. 마이크로프로세서(10)는 CPU 버스(524)를 통해 버스 브리지(502)에 결합된다.
버스 브리지(502)는 마이크로프로세서(10), 주 메모리(504), 그래픽 제어기(508) 및 PCI 버스(514)에 연결된 디바이스들 간에 인터페이스를 제공한다. 버스 브리지(502)에 연결된 디바이스들중 하나로부터 연산이 수신되면, 버스 브리지(502)는 연산의 타겟(예를 들어, 특정한 디바이스, 또는 PCI 버스(514)의 경우, 타겟은 PCI 버스(514) 상에 있다)을 확인한다. 버스 브리지(502)는 상기 연산을 타겟 디바이스에 전송한다. 버스 브리지(502)는 일반적으로 상기 연산을, 소스 디바이스 또는 버스에 의해 이용되는 프로토콜로부터 타겟 디바이스 또는 버스에 의해 이용되는 프로토콜로 변환한다. PCI 버스(514)에 대해 ISA/EISA 버스에 대한 인터페이스를 제공하는 것 외에, 제 2 버스 브리지(516)는 또한 바람직한 경우 부가적인 기능을 포함할 수 있다. 예를 들어, 일 실시예에서, 제 2 버스 브리지(516)는 PCI 버스(514)의 소유권을 조정하는 마스터 PCI 조정기(도면 미도시)를 포함한다. 또한, 제 2 버스 브리지(516) 외부의, 또는 이 내에 통합되는 입/출력 제어기(도면 미도시)가 컴퓨터 시스템(500) 내에 포함되어, 바람직한 경우 키보드 및 마우스(522), 그리고 많은 직렬 및 병렬 포트들에 대한 동작 지원을 한다. 다른 실시예들에서는, 외부 캐시 유닛(도면 미도시)이 마이크로프로세서(10)와 버스 브리지(502) 사이의 CPU 버스(524)에 결합될 수 있다. 대안적으로, 상기 외부 캐시 유닛이 버스 브리지(502)에 결합될 수 있으며, 상기 외부 캐시에 대한 캐시 제어 로직이 버스 브리지(502) 내에 통합될 수 있다.
주 메모리(504)는 응용 프로그램들이 저장되어 있는 메모리로서, 마이크로프로세서(10)가 주로 이 메모리로부터 명령을 실행한다. 적절한 주 메모리(504)는 DRAM(다이내믹 랜덤 액세스 메모리), 및 바람직하게는 SDRAM(동기 DRAM)의 다수의 뱅크들을 포함한다.
PCI 디바이스들(512A-512B)은, 예를 들어 네트워크 인터페이스 카드, 비디오 가속기, 오디오 카드, 하드 또는 플로피 디스크 드라이브 또는 드라이브 제어기, SCSI(소형 컴퓨터 시스템 인터페이스) 어댑터 및 전화 카드와 같은 많은 주변 디바이스들의 예이다. 유사하게, ISA 디바이스(518)는 예를 들어 모뎀, 사운드 카드, 그리고 다양한 데이터 획득 카드(예를 들어, GPIB 또는 필드 버스 인터페이스 카드)와 같은 여러 타입의 주변 디바이스들의 예이다.
그래픽 제어기(508)는 디스플레이(526) 상에서의 텍스트 및 이미지들의 렌더링을 제어하기 위해 제공된다. 그래픽 제어기(508)는, 주 메모리(504) 내로 그리고 이 주 메모리(504)로부터 효과적으로 시프트될 수 있는 3차원 데이터 구조들을 렌더링하기 위해 종래 기술에 일반적으로 알려진 전형적인 그래픽 가속기를 구현할 수 있다. 이에 따라, 그래픽 제어기(508)는, 버스 브리지(502) 내의 타겟 인터페이스에 대한 액세스를 요구 및 수신함으로써 주 메모리(504)를 액세스할 수 있다는 점에서, AGP 버스(510)의 마스터가 될 수 있다. 전용 그래픽 버스는 주 메모리(504)로부터 데이터를 신속하게 검색할 수 있게 한다. 특정한 연산들에 대해, 그래픽 제어기(508)는 또한 AGP 버스(510) 상에 PCI 프로토콜 트랜잭션들을 발생시키도록 구성될 수 있다. 따라서, 버스 브리지(502)의 AGP 인터페이스는 AGP 프로토콜 트랜잭션들 뿐 아니라 PCI 프로토콜 타겟 및 개시 프로그램(initiator) 트랜잭션들을 지원하는 기능을 포함할 수 있다. 디스플레이(526)는 이미지 또는 텍스트를 나타낼 수 있는 어떠한 전자 디스플레이이다. 적절한 디스플레이(526)는 음극선관("CRT"), 액정 표시 장치("LCD") 등을 포함한다.
주목할 사항으로서, 상기 설명에서는 AGP, PCI 및 ISA 또는 EISA 버스들이 이용되었지만, 바람직한 경우 어떠한 버스 아키텍쳐들로 대체될 수 있다. 또한, 주목할 사항으로서, 컴퓨터 시스템(500)은 부가적인 마이크로프로세서들을 포함하는 멀티프로세싱 컴퓨터 시스템이 될 수 있다(예를 들어, 마이크로프로세서(10a)가 컴퓨터 시스템(500)의 선택적인 구성 요소로 도시되어 있다). 마이크로프로세서(10a)는 마이크로프로세서(10)와 유사할 수 있다. 보다 구체적으로, 마이크로프로세서(10a)는 마이크로프로세서(10)의 동일한 카피가 될 수 있다. 마이크로프로세서(10a)는 마이크로프로세서(10)와 CPU 버스(524)를 공유하거나, 독립적 인 버스를 통해 버스 브리지(502)에 연결될 수 있다.
상기 실시예들을 상당히 상세하게 설명하기는 했지만, 다른 형태들이 가능하다. 상기 설명을 완전히 읽음으로써, 많은 변형들 및 수정들이 당업자에게 명백해질 것이다. 하기의 청구항들은 이러한 모든 변형들 및 수정들을 포함한다.
본 발명은 일반적으로 마이크로프로세서들에 적용할 수 있다.

Claims (14)

  1. 각각 정수 명령들을 실행하도록 구성된 다수의 정수 실행 유닛들과, 여기서 상기 다수의 정수 실행 유닛들 각각은 대응하는 정수 실행 파이프라인 내에 포함되고;
    상기 다수의 정수 실행 유닛들에 의한 실행을 위해 상기 명령들을 디스패치하도록 구성된 명령 디스패치 회로와; 그리고
    상기 명령 디스패치 회로에 결합되어, 전력 삭감 모드를 지정하는 특정값을 저장하는 프로그램가능한 유닛을 포함하는 전력 관리 제어 유닛과;
    여기서, 상기 명령 디스패치 회로는 상기 프로그램가능한 유닛에 저장된 제 1 특정값에 응답하여, 상기 다수의 정수 실행 유닛들중 제한된 수의 정수 실행 유닛들에 명령들을 전달하도록 구성되며;
    상기 명령 디스패치 회로로부터 디스패치되는 부동 소수점 명령들을 수신하도록 결합된 부동 소수점 스케쥴러와; 그리고
    상기 부동 소수점 스케쥴러로부터의 부동 소수점 명령들을 수신하도록 결합된 적어도 하나의 부동 소수점 실행 파이프 라인을 포함하며,
    여기서, 상기 전력 관리 제어 유닛은 부동 소수점 전력 삭감 모드로 프로그램되도록 더 구성되고, 상기 부동 소수점 스케쥴러는 상기 부동 소수점 전력 삭감 모드에 응답하여 그리고 상기 프로그램가능한 유닛에 저장된 제 2 특정값에 따라, 상기 적어도 하나의 부동 소수점 실행 파이프라인으로의 선택된 부동 소수점 명령들의 디스패치를 정체시키도록 구성되는 것을 특징으로 하는 마이크로프로세서.
  2. 제 1 항에 있어서,
    상기 명령 디스패치 회로는 명령 정렬 유닛을 포함하는 것을 특징으로 하는 마이크로프로세서.
  3. 삭제
  4. 삭제
  5. 제 1 항에 있어서,
    상기 각각의 대응하는 정수 실행 파이프라인은 상기 명령 디스패치 회로로부터 명령들을 수신하도록 결합된 디코드 유닛 및 상기 디코드 유닛으로부터 디코드된 명령을 수신하도록 결합된 예약 스테이션을 포함하는 것을 특징으로 하는 마이크로프로세서.
  6. 제 1 항에 있어서,
    상기 전력 관리 제어 유닛은 상기 부동 소수점 스케쥴러로 하여금, 선택된 주기들 동안 상기 적어도 하나의 부동 소수점 실행 파이프라인으로의 선택된 부동 소수점 명령들의 디스패치를 정체시키도록 구성되는 것을 특징으로 하는 마이크로프로세서.
  7. 정수 명령들을 실행하도록 구성된 적어도 하나의 정수 실행 유닛과, 여기서 상기 적어도 하나의 정수 실행 유닛 각각은 대응하는 정수 실행 파이프라인 내에 포함되고;
    상기 적어도 하나의 정수 실행 유닛에 의한 실행을 위해 상기 명령들을 디스패치하도록 구성된 명령 디스패치 회로와;
    상기 명령 디스패치 회로에 결합되어, 전력 삭감 모드에 대응하는 정보를 저장하는 프로그램 가능한 유닛을 포함하는 전력 관리 제어 유닛과;
    여기서, 상기 명령 디스패치 회로는 상기 프로그램 가능한 유닛에 저장된 제 1 정보에 응답하여, 소정의 디스패치 주기들에서, 상기 적어도 하나의 정수 실행 유닛으로의 선택된 명령들의 디스패치를 정체시키도록 구성되며;
    상기 명령 디스패치 회로로부터 디스패치되는 부동 소수점 명령들을 수신하도록 결합된 부동 소수점 스케쥴러와;
    상기 부동 소수점 스케쥴러로부터의 부동 소수점 명령들을 수신하도록 결합된 적어도 하나의 부동 소수점 실행 파이프 라인을 포함하고,
    여기서, 상기 전력 관리 제어 유닛은 부동 소수점 전력 감소 모드로 프로그램되도록 더 구성되고, 상기 부동 소수점 스케쥴러는 상기 부동 소수점 전력 삭감 모드에 응답하여 그리고 상기 프로그램가능한 유닛에 저장된 제 2 정보에 따라, 상기 적어도 하나의 부동 소수점 실행 파이프라인으로의 선택된 부동 소수점 명령들의 디스패치를 정체시키도록 구성되는 것을 특징으로 하는 마이크로프로세서.
  8. 제 7 항에 있어서,
    상기 적어도 하나의 정수 실행 유닛은 병렬의 슈퍼 스칼라 구성으로 결합된 적어도 두개의 정수 실행 유닛들을 포함하는 것을 특징으로 하는 마이크로프로세서.
  9. 제 7 항에 있어서,
    상기 프로그램가능한 유닛은 각 디스패치 주기에 변경되는 값을 포함하는 카운터를 포함하며, 상기 카운터의 특정값이 상기 선택된 명령들의 정체를 제어하는 것을 특징으로 하는 마이크로프로세서.
  10. 제 7 항에 있어서,
    상기 명령 디스패치 회로는 명령 정렬 유닛을 포함하는 것을 특징으로 하는 마이크로프로세서.
  11. 삭제
  12. 삭제
  13. 제 7 항에 있어서,
    상기 각각의 정수 실행 파이프라인은 상기 명령 디스패치 회로로부터 명령들을 수신하도록 결합된 디코드 유닛 및 상기 디코드 유닛으로부터 디코드된 명령을 수신하도록 결합된 예약 스테이션을 포함하는 것을 특징으로 하는 마이크로프로세서.
  14. 제 7 항에 있어서,
    상기 전력 관리 제어 유닛은 상기 부동 소수점 스케쥴러로 하여금, 선택된 주기들 동안 상기 적어도 하나의 부동 소수점 실행 파이프라인으로의 선택된 부동 소수점 명령들의 디스패치를 정체시키도록 구성되는 것을 특징으로 하는 마이크로프로세서.
KR1020037011721A 2001-03-08 2002-02-14 전력 관리를 위해 성능 조절 메커니즘을 이용하는마이크로프로세서 KR100880682B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/802,782 US6826704B1 (en) 2001-03-08 2001-03-08 Microprocessor employing a performance throttling mechanism for power management
US09/802,782 2001-03-08
PCT/US2002/004199 WO2002073336A2 (en) 2001-03-08 2002-02-14 Microprocessor employing a performance throttling mechanism for power management

Publications (2)

Publication Number Publication Date
KR20030082963A KR20030082963A (ko) 2003-10-23
KR100880682B1 true KR100880682B1 (ko) 2009-01-30

Family

ID=25184665

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037011721A KR100880682B1 (ko) 2001-03-08 2002-02-14 전력 관리를 위해 성능 조절 메커니즘을 이용하는마이크로프로세서

Country Status (9)

Country Link
US (1) US6826704B1 (ko)
EP (1) EP1390835B1 (ko)
JP (1) JP3792200B2 (ko)
KR (1) KR100880682B1 (ko)
CN (1) CN100340950C (ko)
AU (1) AU2002251925A1 (ko)
DE (1) DE60205363T2 (ko)
TW (1) TWI265406B (ko)
WO (1) WO2002073336A2 (ko)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1451678B1 (en) * 2001-11-26 2012-04-18 Nytell Software LLC Vliw architecture with power down instruction
US6976153B1 (en) * 2002-09-24 2005-12-13 Advanced Micro Devices, Inc. Floating point unit with try-again reservation station and method of operation
US7243217B1 (en) 2002-09-24 2007-07-10 Advanced Micro Devices, Inc. Floating point unit with variable speed execution pipeline and method of operation
US20040064745A1 (en) * 2002-09-26 2004-04-01 Sudarshan Kadambi Method and apparatus for controlling the rate at which instructions are executed by a microprocessor system
JP3896087B2 (ja) * 2003-01-28 2007-03-22 松下電器産業株式会社 コンパイラ装置およびコンパイル方法
EP1469370A2 (en) * 2003-03-10 2004-10-20 Matsushita Electric Industrial Co., Ltd. Power-save computing apparatus, method and program
US7137021B2 (en) * 2003-05-15 2006-11-14 International Business Machines Corporation Power saving in FPU with gated power based on opcodes and data
US7167989B2 (en) * 2003-10-14 2007-01-23 Intel Corporation Processor and methods to reduce power consumption of processor components
US7428645B2 (en) * 2003-12-29 2008-09-23 Marvell International, Ltd. Methods and apparatus to selectively power functional units
US7330988B2 (en) * 2004-06-30 2008-02-12 Sun Microsystems, Inc. Method and apparatus for power throttling in a multi-thread processor
JP2006059068A (ja) * 2004-08-19 2006-03-02 Matsushita Electric Ind Co Ltd プロセッサ装置
US7395415B2 (en) * 2004-09-30 2008-07-01 Intel Corporation Method and apparatus to provide a source operand for an instruction in a processor
US7266708B2 (en) * 2004-10-12 2007-09-04 Via Technologies, Inc. System for idling a processor pipeline wherein the fetch stage comprises a multiplexer for outputting NOP that forwards an idle signal through the pipeline
US8074057B2 (en) 2005-03-08 2011-12-06 Hewlett-Packard Development Company, L.P. Systems and methods for controlling instruction throughput
US20060218428A1 (en) * 2005-03-22 2006-09-28 Hurd Kevin A Systems and methods for operating within operating condition limits
US7353414B2 (en) * 2005-03-30 2008-04-01 Intel Corporation Credit-based activity regulation within a microprocessor based on an allowable activity level
US8639963B2 (en) * 2005-05-05 2014-01-28 Dell Products L.P. System and method for indirect throttling of a system resource by a processor
TW200707174A (en) 2005-08-09 2007-02-16 Asustek Comp Inc Charging apparatus capable of selectively enabling or interrupting charging procedure for chargeable battery in portable electronic device and charging method thereof
US7924708B2 (en) * 2005-12-13 2011-04-12 Intel Corporation Method and apparatus for flow control initialization
US7747881B2 (en) * 2006-08-14 2010-06-29 Globalfoundries Inc. System and method for limiting processor performance
US8566568B2 (en) * 2006-08-16 2013-10-22 Qualcomm Incorporated Method and apparatus for executing processor instructions based on a dynamically alterable delay
KR100770703B1 (ko) * 2006-08-30 2007-10-29 삼성전자주식회사 메모리 시스템의 전력 쓰로틀링 방법 및 메모리 시스템
US7673160B2 (en) * 2006-10-19 2010-03-02 International Business Machines Corporation System and method of power management for computer processor systems
US7793125B2 (en) * 2007-01-10 2010-09-07 International Business Machines Corporation Method and apparatus for power throttling a processor in an information handling system
US7725690B2 (en) * 2007-02-13 2010-05-25 Advanced Micro Devices, Inc. Distributed dispatch with concurrent, out-of-order dispatch
US7818592B2 (en) * 2007-04-18 2010-10-19 Globalfoundries Inc. Token based power control mechanism
US7895421B2 (en) * 2007-07-12 2011-02-22 Globalfoundries Inc. Mechanism for using performance counters to identify reasons and delay times for instructions that are stalled during retirement
US8495343B2 (en) * 2009-09-09 2013-07-23 Via Technologies, Inc. Apparatus and method for detection and correction of denormal speculative floating point operand
US8806232B2 (en) 2010-09-30 2014-08-12 Apple Inc. Systems and method for hardware dynamic cache power management via bridge and power manager
US9141568B2 (en) 2011-08-25 2015-09-22 Apple Inc. Proportional memory operation throttling
US8706925B2 (en) 2011-08-30 2014-04-22 Apple Inc. Accelerating memory operations blocked by ordering requirements and data not yet received
US9009451B2 (en) 2011-10-31 2015-04-14 Apple Inc. Instruction type issue throttling upon reaching threshold by adjusting counter increment amount for issued cycle and decrement amount for not issued cycle
US9009506B2 (en) * 2012-03-01 2015-04-14 Nxp B.V. Energy efficient microprocessor platform based on instructional level parallelism
US9442732B2 (en) 2012-03-19 2016-09-13 Via Technologies, Inc. Running state power saving via reduced instructions per clock operation
JP2014048972A (ja) * 2012-08-31 2014-03-17 Fujitsu Ltd 処理装置、情報処理装置、及び消費電力管理方法
US10019260B2 (en) 2013-09-20 2018-07-10 Via Alliance Semiconductor Co., Ltd Fingerprint units comparing stored static fingerprints with dynamically generated fingerprints and reconfiguring processor settings upon a fingerprint match
US10241798B2 (en) * 2013-09-20 2019-03-26 Nvidia Corporation Technique for reducing voltage droop by throttling instruction issue rate
US9330011B2 (en) 2013-09-20 2016-05-03 Via Alliance Semiconductor Co., Ltd. Microprocessor with integrated NOP slide detector
US10860081B2 (en) 2013-09-27 2020-12-08 Nxp Usa, Inc. Electronic device and apparatus and method for power management of an electronic device
US9755902B2 (en) 2014-05-20 2017-09-05 Via Alliance Semiconductor Co., Ltd. Dynamic system configuration based on cloud-collaborative experimentation
US9575778B2 (en) 2014-05-20 2017-02-21 Via Alliance Semiconductor Co., Ltd. Dynamically configurable system based on cloud-collaborative experimentation
US11474591B2 (en) 2016-08-05 2022-10-18 Ati Technologies Ulc Fine-grain GPU power management and scheduling for virtual reality applications
US10120430B2 (en) 2016-09-07 2018-11-06 Advanced Micro Devices, Inc. Dynamic reliability quality monitoring
US10318363B2 (en) 2016-10-28 2019-06-11 Advanced Micro Devices, Inc. System and method for energy reduction based on history of reliability of a system
US10955900B2 (en) 2018-12-04 2021-03-23 International Business Machines Corporation Speculation throttling for reliability management
US10955906B2 (en) 2019-02-07 2021-03-23 International Business Machines Corporation Multi-layered processor throttle controller
US12118411B2 (en) * 2019-09-11 2024-10-15 Advanced Micro Devices, Inc. Distributed scheduler providing execution pipe balance
US11169812B2 (en) 2019-09-26 2021-11-09 Advanced Micro Devices, Inc. Throttling while managing upstream resources
US11281466B2 (en) 2019-10-22 2022-03-22 Advanced Micro Devices, Inc. Register renaming after a non-pickable scheduler queue
US12001929B2 (en) * 2020-04-01 2024-06-04 Samsung Electronics Co., Ltd. Mixed-precision neural processing unit (NPU) using spatial fusion with load balancing
US11467841B1 (en) * 2021-06-01 2022-10-11 Andes Technology Corporation Microprocessor with shared functional unit for executing multi-type instructions
US20230205538A1 (en) * 2021-12-23 2023-06-29 Intel Corporation Adaptive dynamic dispatch of micro-operations

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6138232A (en) 1996-12-27 2000-10-24 Texas Instruments Incorporated Microprocessor with rate of instruction operation dependent upon interrupt source for power consumption control

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0122528B1 (ko) * 1993-01-08 1997-11-20 윌리엄 티.엘리스 슈퍼스칼라 프로세서 시스템에서 중간 기억 버퍼의 할당을 인덱스하기 위한 방법 및 시스템
US5420808A (en) * 1993-05-13 1995-05-30 International Business Machines Corporation Circuitry and method for reducing power consumption within an electronic circuit
US5887178A (en) 1994-08-29 1999-03-23 Matsushita Electronics Corporation Idle state detector and idle state detecting method for a microprocessor unit for power savings
US5490059A (en) 1994-09-02 1996-02-06 Advanced Micro Devices, Inc. Heuristic clock speed optimizing mechanism and computer system employing the same
US5726921A (en) * 1995-12-22 1998-03-10 Intel Corporation Floating point power conservation
US5742832A (en) 1996-02-09 1998-04-21 Advanced Micro Devices Computer system with programmable driver output's strengths responsive to control signal matching preassigned address range
US5764524A (en) 1996-02-12 1998-06-09 Snap-On Technologies, Inc. Method and apparatus for detection of missing pulses from a repetitive pulse train
US5815724A (en) * 1996-03-29 1998-09-29 Intel Corporation Method and apparatus for controlling power consumption in a microprocessor
US5805907A (en) * 1996-10-04 1998-09-08 International Business Machines Corporation System and method for reducing power consumption in an electronic circuit
US6029006A (en) 1996-12-23 2000-02-22 Motorola, Inc. Data processor with circuit for regulating instruction throughput while powered and method of operation
US5951689A (en) 1996-12-31 1999-09-14 Vlsi Technology, Inc. Microprocessor power control system
US6182203B1 (en) * 1997-01-24 2001-01-30 Texas Instruments Incorporated Microprocessor
JP3961619B2 (ja) 1997-06-03 2007-08-22 株式会社東芝 コンピュータシステムおよびその処理速度制御方法
CN1126013C (zh) * 1997-09-29 2003-10-29 英特尔公司 控制集成电路功耗的方法和器件
US6237101B1 (en) * 1998-08-03 2001-05-22 International Business Machines Corporation Microprocessor including controller for reduced power consumption and method therefor
US6308260B1 (en) * 1998-09-17 2001-10-23 International Business Machines Corporation Mechanism for self-initiated instruction issuing and method therefor
US6553502B1 (en) * 1999-01-11 2003-04-22 Texas Instruments Incorporated Graphics user interface for power optimization diagnostics
JP2000284960A (ja) * 1999-03-08 2000-10-13 Texas Instr Inc <Ti> ビット・フィールド・プロセッサ
US6430678B1 (en) * 1999-07-29 2002-08-06 International Business Machines Corporation Scoreboard mechanism for serialized string operations utilizing the XER
US6834353B2 (en) * 2001-10-22 2004-12-21 International Business Machines Corporation Method and apparatus for reducing power consumption of a processing integrated circuit

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6138232A (en) 1996-12-27 2000-10-24 Texas Instruments Incorporated Microprocessor with rate of instruction operation dependent upon interrupt source for power consumption control

Also Published As

Publication number Publication date
AU2002251925A1 (en) 2002-09-24
WO2002073336A2 (en) 2002-09-19
CN1630845A (zh) 2005-06-22
CN100340950C (zh) 2007-10-03
DE60205363D1 (de) 2005-09-08
DE60205363T2 (de) 2006-06-01
WO2002073336A3 (en) 2003-12-18
JP3792200B2 (ja) 2006-07-05
JP2004537084A (ja) 2004-12-09
KR20030082963A (ko) 2003-10-23
TWI265406B (en) 2006-11-01
EP1390835A2 (en) 2004-02-25
US6826704B1 (en) 2004-11-30
EP1390835B1 (en) 2005-08-03

Similar Documents

Publication Publication Date Title
KR100880682B1 (ko) 전력 관리를 위해 성능 조절 메커니즘을 이용하는마이크로프로세서
US6393555B1 (en) Rapid execution of FCMOV following FCOMI by storing comparison result in temporary register in floating point unit
US6105129A (en) Converting register data from a first format type to a second format type if a second type instruction consumes data produced by a first type instruction
US6405305B1 (en) Rapid execution of floating point load control word instructions
US6490607B1 (en) Shared FP and SIMD 3D multiplier
US6487575B1 (en) Early completion of iterative division
JP3977016B2 (ja) 仮想レジスタ番号を用いて論理レジスタ番号を物理レジスタ番号にマッピングするように構成されるプロセッサ
EP1116102B1 (en) Method and apparatus for calculating indirect branch targets
US6253287B1 (en) Using three-dimensional storage to make variable-length instructions appear uniform in two dimensions
US6247117B1 (en) Apparatus and method for using checking instructions in a floating-point execution unit
US20100070741A1 (en) Microprocessor with fused store address/store data microinstruction
KR100698493B1 (ko) 좁은 피연산자들에서 계산을 수행하는 방법 및 장치
US6425072B1 (en) System for implementing a register free-list by using swap bit to select first or second register tag in retire queue
JP2003514274A (ja) 接近して結合される多重プロセッサのための高速マルチスレッディング
JPH10124391A (ja) マージされたストア・オペレーションによってストア集束を行うためのプロセッサ及び方法
KR101378169B1 (ko) 동적으로 자기-감쇠하는 디바이스 아키텍쳐
US6185672B1 (en) Method and apparatus for instruction queue compression
US6408379B1 (en) Apparatus and method for executing floating-point store instructions in a microprocessor
US6460132B1 (en) Massively parallel instruction predecoding
US6425074B1 (en) Method and apparatus for rapid execution of FCOM and FSTSW
JP2003523574A (ja) 2次リオーダ・バッファ・マイクロプロセッサ
US6487653B1 (en) Method and apparatus for denormal load handling
US6460130B1 (en) Detecting full conditions in a queue
CN114675882A (zh) 用于可缩放预留站的方法、系统和装置
US6405303B1 (en) Massively parallel decoding and execution of variable-length instructions

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: 20121227

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140103

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150106

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20151217

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20161220

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20171219

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20181226

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20191217

Year of fee payment: 12