CN108227896A - 用于并行多步骤功率管理流程的指令和逻辑 - Google Patents
用于并行多步骤功率管理流程的指令和逻辑 Download PDFInfo
- Publication number
- CN108227896A CN108227896A CN201711136876.9A CN201711136876A CN108227896A CN 108227896 A CN108227896 A CN 108227896A CN 201711136876 A CN201711136876 A CN 201711136876A CN 108227896 A CN108227896 A CN 108227896A
- Authority
- CN
- China
- Prior art keywords
- fsm
- core
- stage
- processor
- power control
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 161
- 238000012545 processing Methods 0.000 claims abstract description 133
- 238000012790 confirmation Methods 0.000 claims abstract description 51
- 230000004044 response Effects 0.000 claims abstract description 23
- 230000015654 memory Effects 0.000 claims description 123
- 238000003860 storage Methods 0.000 claims description 48
- 230000009467 reduction Effects 0.000 claims description 12
- 230000006399 behavior Effects 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 claims description 5
- 238000011084 recovery Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 51
- 238000005516 engineering process Methods 0.000 description 26
- 238000010586 diagram Methods 0.000 description 25
- 238000004891 communication Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 19
- 238000004519 manufacturing process Methods 0.000 description 18
- 238000007726 management method Methods 0.000 description 17
- 238000013461 design Methods 0.000 description 13
- 238000007667 floating Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 10
- 239000003795 chemical substances by application Substances 0.000 description 8
- 230000003068 static effect Effects 0.000 description 8
- 238000005056 compaction Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000009826 distribution Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000000429 assembly Methods 0.000 description 4
- 230000000712 assembly Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 230000005611 electricity Effects 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 241001269238 Data Species 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 229910052754 neon Inorganic materials 0.000 description 2
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 206010038743 Restlessness Diseases 0.000 description 1
- 102000001332 SRC Human genes 0.000 description 1
- 108060006706 SRC Proteins 0.000 description 1
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 238000003306 harvesting Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000013442 quality metrics Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 241000894007 species Species 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3296—Power saving characterised by the action undertaken by lowering the supply or operating voltage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/324—Power saving characterised by the action undertaken by lowering clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Advance Control (AREA)
- Power Sources (AREA)
- Computer Hardware Design (AREA)
Abstract
本申请公开了用于并行多步骤功率管理流程的指令和逻辑。公开了并行多步骤功率管理流程装置和使用其的方法。在一个实施例中,集成电路包括:多个处理实体,用于执行操作;功率控制器,耦合到多个处理实体以控制多个处理实体的功率管理;以及多个代理,其中多个代理中的每一个能操作以通过响应于接收自功率控制器的多个请求而使用调度器分别地调度并且执行多个功率控制流程阶段来执行处理实体中的一个的功率控制流程,并且每个代理能操作以在完成多个功率控制流程阶段时发送多个确认,每个阶段有一个确认。
Description
发明领域
本公开涉及处理逻辑、微处理器以及相关联的指令集架构领域,当由处理器或其他处理逻辑执行该指令集架构时,该指令集架构执行逻辑、数学或其他功能性操作。
相关技术的描述
功率管理用于电气设备,诸如,例如,处理器、芯片上系统(SoC)和其他集成电路,以减少功耗。功率的减少通常通过当设备是较不活动或不活动时关闭设备或将设备的全部或部分置于较低的功率状态来完成。即,当没有有用的被执行时,可以使设备的各个部分掉电以节约能量。
一些设备具有多个功率管理状态。例如,一些处理器具有多个空闲状态,被称为C状态。在一个实现方式中,存在六个C状态,即C0-C6,其中C0是具有全部功率和性能的活动状态,并且C6是全部处理器的功率被关闭的深睡眠状态并且处理器状态被保存在小存储器中。
为了进入降低的功耗状态中的一个,在一个实现方式中,功率控制单元(PCU)或P单元,穿过有限状态机(FSM)的多个阶段并且将功率管理流程的每个阶段串行地传递给核或被管理的知识产权(IP)单元。在开始新阶段之前,PCU等待直到核已经完成执行每个阶段。在每个阶段被完成之后,核发送指示功率阶段已经被完成的确认。响应于确认,PCU开始发送用于下一阶段的通信。当阶段被执行时,在PCU与核之间串行地进行的来回通信具有最高性能成本。
附图说明
在附图中的诸个图中通过示例而非限制地示出各个实施例:
图1A是根据一个实施例的系统的框图;
图1B是根据一个实施例的系统的框图;
图1C是根据一个实施例的系统的框图;
图2是根据一个实施例的处理器的框图;
图3A示出根据一个实施例的紧缩数据类型;
图3B示出根据一个实施例的紧缩数据类型;
图3C示出根据一个实施例的紧缩数据类型;
图3D示出根据一个实施例的指令编码;
图3E示出根据一个实施例的指令编码;
图3F示出根据一个实施例的指令编码;
图4A示出根据一个实施例的处理器微架构的要素;
图4B示出根据一个实施例的处理器微架构的要素;
图5是根据一个实施例的处理器的框图;
图6是根据一个实施例的计算机系统的框图;
图7是根据一个实施例的计算机系统的框图;
图8是根据一个实施例的计算机系统的框图;
图9是根据一个实施例的芯片上系统的框图;
图10是根据一个实施例的处理器的框图;
图11是根据一个实施例的IP核开发系统的框图;
图12示出根据一个实施例的架构仿真系统。
图13示出根据一个实施例的用于转换指令的系统。
图14是根据实施例的处理器的框图。
图15示出向核供电的一个实施例。
图16示出对核的时钟信号的时钟门控的一个实施例。
图17示出五个FSM阶段的一个实施例。
图18是用于将核置于静默状态的FSM过程的一个实施例的流程图。
图19是用于阻止到核的一个或多个接口的FSM过程的一个实施例的流程图。
图20是用于停止对核提供时钟的FSM过程的一个实施例的流程图。
图21是用于退出降低的功耗状态的FSM过程的一个实施例的流程图。
图22是用于使核恢复执行指令的FSM过程的一个实施例的流程图。
图23示出掉电流程的一个实施例的对五个请求的并行的发送,每个阶段有一个请求,作为一个消息的一部分。
详细描述
描述了多阶段功率控制流程和用于执行多阶段功率控制流程的方法。在一个实施例中,功率控制流程是用于将设备的一部分(诸如,例如,集成电路(例如,处理器、芯片上系统(SoC)等))置于睡眠状态的流程。设备的一部分可以是例如核、控制器、处理单元或知识产权(IP)块。在一个实施例中,睡眠状态是深睡眠状态(例如,C6C状态)。在另一实施例中,功率控制流程是用于执行关于组件的动态电压和频率缩放(DVFS)的流程。
在一个实施例中,处理逻辑执行处理器、计算机系统或其他处理装置内或与其相关联的功率控制流程。在以下描述中,陈述了诸如处理逻辑、处理器类型、微架构条件、事件、启用机制等众多特定细节,以提供对本发明实施例的更透彻理解。然而,本领域技术人员将领会,没有这些具体细节也可实施本发明。此外,没有详细示出一些公知的结构、电路等,以避免不必要地使本发明的多个实施例模糊。
虽然参照处理器来描述下列各实施例,但是,其他实施例也适用于其他类型的集成电路和逻辑器件。本发明的实施例的类似技术和教导可应用于其他类型的电路或半导体器件,这些其他类型的电路或半导体器件可受益于更高的流水线吞吐量和改善的性能。本发明的实施例的教导适用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并且可适用于执行数据操纵或管理的任何处理器和机器。另外,下列描述提供了示例,并且为了进行说明,所附附图示出各种示例。然而,这些示例不应当被理解为是限制性意义的,因为它们仅仅旨在提供本发明的诸个实施例的示例,而并非提供本发明的实施例的所有可能实现的详尽列表。
虽然下述的示例是在执行单元和逻辑电路情境下描述指令处理和分配,但本发明的其他实施例也可通过存储在机器可读有形介质上的数据或指令来完成,这些数据或指令在被机器执行时使得机器执行与本发明至少一个实施例相一致的功能。在一个实施例中,与本发明的多个实施例相关联的功能被具体化在机器可执行指令中。这些指令可用来使通过这些指令而被编程的通用处理器或专用处理器执行本发明的步骤。本发明的多个实施例也可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可包括其上存储有指令的机器或计算机可读介质,这些指令可被用来对计算机(或其他电子设备)进行编程以执行根据本发明的多个实施例的一个或多个操作。或者,本发明的多个实施例的多个步骤可由包含用于执行这些步骤的固定功能逻辑的专用硬件组件来执行,或由经编程的计算机组件以及固定功能硬件组件的任何组合来执行。
可将用于对逻辑进行编程以执行本发明的多个实施例的指令存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储设备)内。此外,指令可经由网络或通过其他计算机可读介质来分配。因此,机器可读介质可包括用于以机器(例如,计算机)可读的形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧致盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在互联网上经由电、光、声、或其他形式的传播信号(例如,载波、红外信号、数字信号等)发送信息中所使用的有形的机器可读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形的机器可读介质。
设计会经历多个阶段,从创建到仿真到制造。表示设计的数据可以用多种方式来表示该设计。首先,像仿真中有用的那样,可以使用硬件描述语言或另一功能性描述语言来表示硬件。此外,可以在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段都达到表示硬件模型中各种设备的物理布置的数据的层级。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种各样特征的数据。在任何的设计表示中,数据可被存储在任何形式的机器可读介质中。存储器或磁/光存储器(诸如,盘)可以是存储信息的机器可读介质,这些信息是经由光学或电学波来发送的,这些光学或电学波被调制或以其他方式生成以传送这些信息。当发送指示或承载代码或设计的电学载波达到实现电信号的复制、缓冲或重新发送的程度时,即产生了新的副本。因此,通信提供商或网络提供商可在有形的机器可读介质上至少临时地存储具体化本发明的多个实施例的技术的制品(诸如,被编码成载波的信息)。
在现代处理器中,将多个不同的执行单元用于处理和执行各种代码和指令。并不是所有指令都被同等地创建,因为一些指令更快地完成而其他指令可能需要多个时钟周期来完成。指令的吞吐量越快,则处理器的总体性能越好。因此,使尽可能多的指令尽可能快地执行将会是有利的。然而,存在具有更大的复杂度,并在执行时间和处理器资源方面要求更多的某些指令。例如,存在浮点指令、加载/存储操作、数据移动等。
因为更多的计算机系统被用于互联网、文本以及多媒体应用,所以已逐渐地引进了附加的处理器支持。在一个实施例中,指令集可与一个或多个计算机架构相关联,一个或多个计算机架构包括:数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理以及外部输入和输出(I/O)。
在一个实施例中,指令集架构(ISA)可由一个或更多微架构来实现,微架构包括用于实现一个或多个指令集的处理器逻辑和电路。因此,具有不同微架构的多个处理器可共享公共指令集的至少一部分。例如,奔腾四(Pentium 4)处理器、酷睿(CoreTM)处理器、以及来自加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公司(Advanced Micro Devices,Inc.)的多个处理器执行几乎相同版本的x86指令集(在更新的版本中加入了一些扩展),但具有不同的内部设计。类似地,由其他处理器开发公司(诸如,ARM控股有限公司、MIPS或它们的授权方或兼容方)设计的多个处理器可共享至少一部分公共指令集,但可包括不同的处理器设计。例如,ISA的相同寄存器架构在不同的微架构中可使用新的或公知的技术以不同方法来实现,包括专用物理寄存器、使用寄存器重命名机制(例如,使用寄存器别名表(RAT)、重排序缓冲器(ROB)以及引退寄存器堆)的一个或多个动态分配物理寄存器。在一个实施例中,寄存器可包括:可由软件编程者寻址或不可由软件编程者寻址的一个或多个寄存器、寄存器架构、寄存器堆、或其他寄存器集合。
在一个实施例中,指令可包括一个或多个指令格式。在一个实施例中,指令格式可指示多个字段(位的数量、位的位置等)以指定将要被执行的操作以及将要对其执行操作的操作数等。一些指令格式可进一步由指令模板(或子格式)细分定义。例如,给定指令格式的指令模板可被定义为具有指令格式字段的不同的子集,和/或被定义为具有以不同方式进行解释的给定字段。在一个实施例中,使用指令格式(并且,如果定义过,则以该指令格式的指令模板中的给定的一个)来表示指令,并且该指令指定或指示操作以及该操作将操作的操作数。
科学应用、金融应用、自动向量化通用应用、RMS(识别、挖掘和合成)应用以及视觉和多媒体应用(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频处理)可能需要对大量数据项执行相同的操作。在一个实施例中,单指令多数据(SIMD)指的是使得处理器对多个数据元素执行一个操作的指令类型。可将SIMD技术用于可将寄存器中的多个位逻辑地划分为多个固定尺寸或可变尺寸的数据元素(每个数据元素表示单独的值)的处理器中。例如,在一个实施例中,可将64位寄存器中的多个位组织为包含四个单独的16位数据元素的源操作数,每个数据元素表示单独的16位的值。该数据类型可被称为“紧缩”数据类型或“向量”数据类型,并且该数据类型的操作数被称为紧缩数据操作数或向量操作数。在一个实施例中,紧缩数据项或向量可以是存储在单个寄存器中的紧缩数据元素的序列,并且紧缩数据操作数或向量操作数可以是SIMD指令(或“紧缩数据指令”或“向量指令”)的源操作数或目的地操作数。在一个实施例中,SIMD指令指定了将要对两个源向量操作数执行以生成具有相同或不同尺寸的、具有相同或不同数量的数据元素的、具有相同或不同数据元素顺序的目的地向量操作数(也被称为结果向量操作数)的单个向量操作。
诸如由酷睿(CoreTM)处理器(具有包括x86、MMXTM、流SIMD扩展(SSE)、SSE2、SSE3、SSE4.1、SSE4.2指令的指令集)、ARM处理器(诸如,ARM处理器族,具有包括向量浮点(VFP)和/或NEON指令的指令集)和MIPS处理器(诸如,中国科学院计算机技术研究所(ICT)开发的龙芯处理器族)所采用的SIMD技术之类的SIMD技术在应用性能上带来了极大的提高(CoreTM和MMXTM是加利福尼亚州圣克拉拉市的英特尔公司的注册商标或商标)。
在一个实施例中,目的地寄存器/数据和源寄存器/数据是表示对应数据或操作的源和目的地的通用术语。在一些实施例中,它们可由寄存器、存储器或具有与所描绘的那些名称或功能不同的名称或功能的其他存储区域来实现。例如,在一个实施例中,“DEST1”可以是临时存储寄存器或其他存储区域,而“SRC1”和“SRC2”可以是第一和第二源存储寄存器或其他存储区域,等等。在其他实施例中,SRC和DEST存储区域中的两个或更多可对应于相同存储区域中的不同数据存储元素(例如,SIMD寄存器)。在一个实施例中,通过例如将对第一和第二源数据执行的操作的结果写回至两个源寄存器中作为目的地寄存器的那个寄存器,源寄存器中的一个也可以作为目的地寄存器。
图1A是根据本发明的一个实施例的示例性计算机系统的框图,该计算机系统被形成为具有包括执行单元以执行指令的处理器。根据本发明,诸如在本文中所描述的实施例中,系统100包括诸如处理器102之类的组件,该处理器102用于使用包括逻辑的执行单元以执行算法来处理数据。系统100代表基于可从美国加利福尼亚州圣克拉拉市的英特尔公司获得的III、4、XeonTM、XScaleTM和/或StrongARMTM微处理器的处理系统,不过也可使用其它系统(包括具有其它微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本系统100可执行可从美国华盛顿州雷蒙德市的微软公司获得的WINDOWSTM操作系统的一个版本,不过也可使用其它操作系统(例如UNIX和Linux)、嵌入式软件、和/或图形用户界面。因此,本发明的各实施例不限于硬件电路和软件的任何具体组合。
诸实施例不限于计算机系统。本发明的替代实施例可用于其他设备,诸如手持式设备和嵌入式应用。手持式设备的某些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)以及手持式PC。嵌入式应用可包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或能够执行根据至少一个实施例的一条或多条指令的任何其他系统。
图1A是计算机系统100的框图,计算机系统100被形成为具有处理器102,处理器102包括一个或多个执行单元108用于执行算法,从而执行根据本发明的一个实施例的至少一条指令。可在单处理器桌面设备或服务器系统的情境中描述一个实施例,但是可将替代实施例包括在多处理器系统中。系统100是“中枢”系统架构的示例。计算机系统100包括用于处理数据信号的处理器102。处理器102可以是复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现多个指令集组合的处理器或任意其他处理器设备(例如,数字信号处理器)。处理器102耦合至处理器总线110,该处理器总线可在处理器102和系统100内的其他组件之间传输数据信号。系统100的多个要素执行为熟悉本领域的人员所共知的它们的常规功能。
在一个实施例中,处理器102包括第一级(L1)内部高速缓存存储器104。取决于架构,处理器102可具有单个内部高速缓存或多级内部高速缓存。或者,在另一个实施例中,高速缓存存储器可驻留在处理器102的外部。其他实施例也可包括内部高速缓存和外部高速缓存的组合,这取决于特定实现和需求。寄存器堆106可将不同类型的数据存储在各种寄存器(包括整数寄存器、浮点寄存器、状态寄存器、指令指针寄存器)中。
执行单元108(包括用于执行整数和浮点操作的逻辑)也驻留在处理器102中。处理器102还包括存储用于某些宏指令的微代码的微代码(ucode)ROM。对于一个实施例,执行单元108包括用于处理紧缩指令集109的逻辑。通过将紧缩指令集109包括在通用处理器102以及用于执行指令的相关联的电路的指令集中,可以使用通用处理器102中的紧缩数据来执行由许多多媒体应用使用的操作。因此,通过将处理器数据总线的完整宽度用于对紧缩数据执行操作,可加速并更高效地执行许多多媒体应用。这能消除跨处理器数据总线传输更小数据单元以便一次对一个数据元素执行一个或多个操作的需求。
执行单元108的替代实施例也可被用于微控制器、嵌入式处理器、图形设备、DSP以及其他类型的逻辑电路。系统100包括存储器120。存储器120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储器设备。存储器120可存储由可由处理器102执行的数据信号来表示的指令和/或数据。
系统逻辑芯片116耦合至处理器总线110和存储器120。在所示出的实施例中的系统逻辑芯片116是存储器控制器中枢(MCH)。处理器102可经由处理器总线110来与MCH 116通信。MCH 116提供至存储器120的高带宽存储器路径118,用于指令和数据存储,并且用于图形命令、数据和纹理的存储。MCH 116用于在处理器102、存储器120与系统100中的其他组件之间引导数据信号,并且用于在处理器总线110、存储器120与系统I/O 122之间桥接数据信号。在一些实施例中,系统逻辑芯片116可提供用于耦合至图形控制器112的图形端口。MCH 116通过存储器接口118耦合至存储器120。图形卡112通过加速图形端口(AGP)互连114耦合至MCH 116。
系统100使用专有中枢接口总线122以将MCH 116耦合至I/O控制器中枢(ICH)130。ICH 130经由本地I/O总线来提供到某些I/O设备的直接连接。本地I/O总线是用于将外围设备连接到存储器120、芯片组以及处理器102的高速I/O总线。一些示例是音频控制器、固件中枢(闪存BIOS)128、无线收发机126、数据存储设备124、包括用户输入和键盘接口的传统I/O控制器、串行扩展端口(诸如,通用串行总线(USB))以及网络控制器134。数据存储设备124可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备、或其他大容量存储设备。
对于系统的另一个实施例,根据一个实施例的指令可以与芯片上系统一起使用。芯片上系统的一个实施例包括处理器和存储器。一个这样的系统的存储器是闪存。闪存可以位于与处理器和其他系统组件相同的管芯上。另外,诸如存储器控制器或图形控制器的其他逻辑块也可以位于芯片上系统上。
图1B示出数据处理系统140,该数据处理系统140实现本发明的一个实施例的原理。本领域的技术人员将容易理解,本文描述的多个实施例可用于替代的处理系统,而不背离本发明的多个实施例的范围。
计算机系统140包括能够执行根据一个实施例的至少一条指令的处理核159。对于一个实施例,处理核159表示任何类型的架构(包括但不限于,CISC、RISC或VLIW类型架构)的处理单元。处理核159也可适于以一种或多种处理技术来制造,并且通过足够详细地表示在机器可读介质上可适用于促进所述制造。
处理核159包括执行单元142、一组寄存器堆145以及解码器144。处理核159也包括对于理解本发明的实施例不是必需的附加电路(未示出)。执行单元142用于执行处理核159接收到的指令。除了执行典型的处理器指令外,执行单元142也可执行紧缩指令集143中的指令,以便对紧缩数据格式执行操作。紧缩指令集143包括用于执行本发明的多个实施例的指令以及其他紧缩指令。执行单元142通过内部总线耦合至寄存器堆145。寄存器堆145表示处理核159上用于存储包括数据的信息的存储区域。如前文所述,可以理解,将该存储区域用于存储紧缩数据并不是关键的。执行单元142耦合至解码器144。解码器144用于将处理核159接收到的指令解码为控制信号和/或微代码进入点。响应于这些控制信号和/或微代码进入点,执行单元142执行合适的操作。在一个实施例中,将解码器用于解释指令的操作码,该操作码将指示应当对该指令内所指示的对应数据执行什么操作。
处理核159与总线141耦合,用于与各种其他系统设备进行通信,其他系统设备可包括但不限于:例如,同步动态随机存取存储器(SDRAM)控制器146、静态随机存取存储器(SRAM)控制器147、猝发闪存接口148、个人计算机存储卡国际协会(PCMCIA)/紧致闪存(CF)卡控制器149、液晶显示器(LCD)控制器150、直接存储器存取(DMA)控制器151、以及替代的总线主接口152。在一个实施例中,数据处理系统140也可包括I/O桥154,用于经由I/O总线153与各种I/O设备进行通信。此类I/O设备可包括但不限于:例如,通用异步接收机/发射机(UART)155、通用串行总线(USB)156、蓝牙无线UART 157、以及I/O扩展接口158。
数据处理系统140的一个实施例提供了移动通信、网络通信和/或无线通信,并提供了能够执行包括文本串比较操作的SIMD操作的处理核159。可利用各种音频、视频、成像和通信算法对处理核159进行编程,这些算法包括:离散变换(诸如Walsh-Hadamard变换、快速傅立叶变换(FFT)、离散余弦变换(DCT)以及它们相应的逆变换);压缩/解压缩技术(例如,色彩空间变换、视频编码运动估计或视频解码运动补偿);以及调制/解调(MODEM)功能(例如,脉冲编码调制(PCM))。
图1C示出了能够执行SIMD文本串比较操作的数据处理系统的其他替代实施例。根据一个替代实施例,数据处理系统160可包括主处理器166、SIMD协处理器161、高速缓存存储器167以及输入/输出系统168。输入/输出系统168可以可选地耦合至无线接口169。SIMD协处理器161能够执行包括根据一个实施例的指令的操作。处理核170可适用于以一种或多种处理技术来制造,并且通过足够详细地表示在机器可读介质上,可适用于促进包括处理核170的数据处理系统160的全部或部分的制造。
对于一个实施例,SIMD协处理器161包括执行单元162以及一组寄存器堆164。主处理器165的一个实施例包括解码器165,该解码器165用于识别包括根据一个实施例的、用于由执行单元162执行的指令的指令集163中的多条指令。对于替代实施例,SIMD协处理器161也包括用于对指令集163中的多条指令进行解码的解码器165B的至少部分。处理核170也包括对于理解本发明的实施例不是必需的附加电路(未示出)。
在操作中,主处理器166执行控制通用类型的数据处理操作(包括与高速缓存存储器167和输入/输出系统168之间的交互)的数据处理指令流。SIMD协处理器指令被嵌入到该数据处理指令流中。主处理器166的解码器165将这些SIMD协处理器指令识别为应当由附连的SIMD协处理器161来执行的类型。因此,主处理器166在协处理器总线166上发布这些SIMD协处理器指令(或表示SIMD协处理器指令的控制信号),由任何附连的SIMD协处理器从该协处理器总线166接收到这些指令。在这种情况下,SIMD协处理器161将接受并执行任何接收到的针对该SIMD协处理器的SIMD协处理器指令。
可经由无线接口169接收数据以通过SIMD协处理器指令进行处理。对于一个示例,能以数字信号的形式接收到语音通信,可由SIMD协处理器指令处理该数字信号以便重新生成表示该语音通信的数字音频样本。对于另一个示例,能以数字位流的形式接收到被压缩的音频和/或视频,可由SIMD协处理器指令处理该数字位流以便重新生成数字音频样本和/或运动视频帧。对于处理核170的一个实施例,主处理器166和SIMD协处理器161被集成在单个处理核170中,该单个处理核170包括执行单元162、一组寄存器堆164以及用于识别包括根据一个实施例的多条指令的指令集163中的多条指令的解码器165。
图2是处理器200的微架构的框图,该处理器200包括用于执行根据本发明的一个实施例的指令的逻辑电路。在一些实施例中,根据一个实施例的指令可被实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(诸如单精度和双精度整数和浮点数据类型)的数据元素执行操作。在一个实施例中,有序前端201是处理器200的一部分,其取出将要被执行的指令,并准备这些指令以在稍后供处理器流水线使用。前端201可包括若干单元。在一个实施例中,指令预取器226从存储器取出指令,并将指令馈送至指令解码器228,指令解码器228随后解码或解释指令。例如,在一个实施例中,解码器将所接收到的指令解码为机器可执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实施例中,解码器将指令解析为操作码和对应的数据及控制字段,它们被微架构用于执行根据一个实施例的操作。在一个实施例中,追踪高速缓存230接受经解码的uop,并将它们组装为程序有序序列或uop队列234中的踪迹,以用于执行。当追踪高速缓存230遇到复杂指令时,微代码ROM 232提供完成操作所需的uop。
一些指令被转换为单个微操作,而其他指令需要若干个微操作以完成整个操作。在一个实施例中,如果需要多于四个微操作来完成指令,则解码器228访问微代码ROM 232以执行该指令。对于一个实施例,指令可被解码为少量的微操作以用于在指令解码器228处进行处理。在另一个实施例中,如果需要若干个微操作来完成操作,则可将指令存储在微代码ROM 232中。追踪高速缓存230参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM 232中读取微代码序列来完成根据一个实施例的一条或多条指令。在微代码ROM 232完成对于指令的微操作序列化之后,机器的前端201恢复从追踪高速缓存230取出微操作。
乱序执行引擎203是将指令准备好用于执行的单元。乱序执行逻辑具有若干个缓冲器,用于将指令流平滑并且重排序,以优化指令流进入流水线后的性能,并调度指令流以供执行。分配器逻辑分配每个微操作需要的机器缓冲器和资源,以用于执行。寄存器重命名逻辑将诸个逻辑寄存器重命名为寄存器堆中的条目。在指令调度器(存储器调度器、快速调度器202、慢速/通用浮点调度器204、简单浮点调度器206)之前,分配器也将每个微操作的条目分配在两个微操作队列中的一个之中,一个微操作队列用于存储器操作,另一个微操作队列用于非存储器操作。微操作调度器202、204、206基于对它们的依赖输入寄存器操作数源的准备就绪以及微操作完成它们的操作所需的执行资源的可用性来确定微操作何时准备好用于执行。一个实施例的快速调度器202可在主时钟周期的每半个上进行调度,而其他调度器可仅仅在每个主处理器时钟周期上调度一次。调度器对分配端口进行仲裁以调度微操作以便执行。
寄存器堆208、210位于调度器202、204、206与执行块211中的执行单元212、214、216、218、220、222、224之间。存在分别用于整数和浮点操作的分开的寄存器堆208、210。一个实施例的每个寄存器堆208、210也包括旁路网络,旁路网络可将刚完成的还没有被写入寄存器堆的结果旁路或转发给新的依赖微操作。整数寄存器堆208和浮点寄存器堆210也能够彼此传递数据。对于一个实施例,整数寄存器堆208被划分为两个单独的寄存器堆,一个寄存器堆用于低阶的32位数据,第二个寄存器堆用于高阶的32位数据。一个实施例的浮点寄存器堆210具有128位宽度的条目,因为浮点指令通常具有从64至128位宽度的操作数。
执行块211包括执行单元212、214、216、218、220、222、224,在执行单元212、214、216、218、220、222、224中实际执行指令。该区块包括寄存器堆208、210,寄存器堆208、210存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器200包括有多个执行单元:地址生成单元(AGU)212、AGU 214、快速ALU 216、快速ALU 218、慢速ALU 220、浮点ALU222、浮点移动单元224。对于一个实施例,浮点执行块222、224执行浮点、MMX、SIMD、SSE或其他操作。一个实施例的浮点ALU 222包括64位/64位浮点除法器,用于执行除法、平方根、以及余数微操作。对于本发明的诸个实施例,涉及浮点值的指令可使用浮点硬件来处理。在一个实施例中,ALU操作进入高速ALU执行单元216、218。一个实施例的快速ALU 216、218可执行快速操作,有效等待时间为半个时钟周期。对于一个实施例,大多数复杂整数操作进入慢速ALU 220,因为慢速ALU 220包括用于长等待时间类型操作的整数执行硬件,诸如,乘法器、移位器、标志逻辑和分支处理。存储器加载/存储操作由AGU 212、214来执行。对于一个实施例,整数ALU 216、218、220被描述为对64位数据操作数执行整数操作。在替代实施例中,可实现ALU 216、218、220以支持包括16、32、128、256等各种数据位。类似地,可实现浮点单元222、224以支持具有各种位宽的多个操作数。对于一个实施例,浮点单元222、224可结合SIMD和多媒体指令对128位宽度紧缩数据操作数进行操作。
在一个实施例中,在父加载完成执行之前,微操作调度器202、204、206就分派依赖性操作。因为在处理器200中微操作被推测性地调度和执行,所以处理器200也包括处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在带着临时错误的数据离开调度器的运行中的依赖性操作。重放机制跟踪使用错误数据的指令,并重新执行这些指令。仅仅依赖性操作需要被重放,而允许独立操作完成。处理器的一个实施例的调度器和重放机制也被设计成捕获用于文本串比较操作的指令序列。
术语“寄存器”可指代被用作为指令的一部分以标识操作数的板上处理器存储位置。换句话说,寄存器可以是那些处理器外部(从编程者的角度来看)可用的处理器存储位置。然而,一实施例的寄存器不限于表示特定类型的电路。相反,一实施例的寄存器能够存储并提供数据,并且能够执行本文所述的功能。本文所描述的寄存器可利用任何数量的不同技术通过处理器中的电路来实现,这些不同技术诸如专用物理寄存器、利用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器堆也包含八个多媒体SIMD寄存器,用于紧缩数据。对于以下讨论,寄存器应被理解为设计成保存紧缩数据的数据寄存器,诸如来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器的64位宽MMXTM寄存器(在一些实例中也称为“mm寄存器”)。这些MMX寄存器(可用在整数和浮点形式中)可与伴随SIMD和SSE指令的紧缩数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或更新的技术(统称为“SSEx”)的128位宽XMM寄存器也可被用于保持此类紧缩数据操作数。在一个实施例中,在存储紧缩数据和整数数据时,寄存器不需要区分这两类数据类型。在一个实施例中,整数和浮点数据可被包括在相同的寄存器堆中,或被包括在不同的寄存器堆中。进一步的,在一个实施例中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。
在下述附图的示例中,描述了多个数据操作数。图3A示出了根据本发明的一个实施例的多媒体寄存器中的各种紧缩数据类型表示。图3A示出用于128位宽操作数的紧缩字节310、紧缩字320以及紧缩双字(dword)330的数据类型。本示例的紧缩字节格式310是128位长,并且包含十六个紧缩字节数据元素。字节在此被定义为8位数据。每一个字节数据元素的信息被存储为:对于字节0存储在位7到位0,对于字节1存储在位15到位8,对于字节2存储在位23到位16,最后对于字节15存储在位120到位127。因此,在该寄存器中使用了所有可用的位。该存储配置提高了处理器的存储效率。同样,因为访问了十六个数据元素,所以现在可并行地对十六个数据元素执行一个操作。
通常,数据元素是与具有相同长度的其他数据元素一起被存储在单个寄存器或存储器位置中的单独的数据片。在涉及SSEx技术的紧缩数据序列中,存储在XMM寄存器中的数据元素的数目是128位除以单独的数据元素的位长。类似地,在涉及MMX和SSE技术的紧缩数据序列中,存储在MMX寄存器中的数据元素的数目是64位除以单独的数据元素的位长。虽然图3A中示出的数据类型是128位长,但是本发明的实施例还可以利用64位宽或其他尺寸的操作数来操作。本示例中的紧缩字格式320是128位长,并且包含八个紧缩字数据元素。每个紧缩字包含十六位的信息。图3A的紧缩双字格式330是128位长,并且包含四个紧缩双字数据元素。每个紧缩双字数据元素包含三十二位的信息。紧缩四字是128位长,并包含两个紧缩四字数据元素。
图3B示出替代的寄存器内数据存储格式。每个紧缩数据可包括多于一个的独立数据元素。示出了三种紧缩数据格式:紧缩半数据元素341、紧缩单数据元素342和紧缩双数据元素343。紧缩半数据元素341、紧缩单数据元素342和紧缩双数据元素343的一个实施例包含固定点数据元素。对于替代实施例,紧缩半数据元素341、紧缩单数据元素342和紧缩双数据元素343中的一个或多个可包含浮点数据元素。紧缩半数据元素341的一个替代实施例是一百二十八位长的,并且包含八个16位数据元素。紧缩单数据元素342的一个实施例是一百二十八位长的,并且包含四个32位数据元素。紧缩双数据元素343的一个实施例是一百二十八位长的,并且包含两个64位数据元素。将会理解,可进一步将此类紧缩数据格式扩展至其他寄存器长度,例如,96位、160位、192位、224位、256位或更长。
图3C示出了根据本发明的一个实施例的多媒体寄存器中的各种有符号和无符号紧缩数据类型表示。无符号紧缩字节表示344示出将无符号紧缩字节存储在SIMD寄存器中。每一个字节数据元素的信息被存储为:对于字节0存储在位7到位0,对于字节1存储在位15到位8,对于字节2存储在位23到位16,最后对于字节15存储在位120到位127。因此,在该寄存器中使用了所有可用的位。该存储配置可提高处理器的存储效率。同样,因为访问了十六个数据元素,所以现在能以并行方式对十六个数据元素执行一个操作。有符号紧缩字节表示345示出了有符号紧缩字节的存储。注意,每个字节数据元素的第八位是符号指示符。无符号紧缩字表示346示出了如何将字7到字0存储在SIMD寄存器中。有符号紧缩字表示347类似于无符号紧缩字寄存器内表示346。注意,每个字数据元素的第十六位是符号指示符。无符号紧缩双字表示348示出了如何存储双字数据元素。有符号紧缩双字表示349类似于无符号紧缩双字寄存器内表示348。注意,必要的符号位是每个双字数据元素的第三十二位。
图3D是与可从美国加利福尼亚州圣克拉拉市的英特尔公司的万维网(www)intel.com/design/litcentr上获得的“IA-32英特尔架构软件开发者手册卷2:指令集参考(IA-32 Intel Architecture Software Developer’s Manual Volume 2:InstructionSet Reference)”中描述的操作码格式类型相对应的、具有32或更多位的操作编码(操作码)格式360以及寄存器/存储器操作数寻址模式的一个实施例的描绘。在一个实施例中,可通过字段361和362中的一个或多个对指令进行编码。可以对于每条指令标识多至两个操作数位置,包括多至两个源操作数标识符364和365。对于一个实施例,目的地操作数标识符366与源操作数标识符364相同,而在其他实施例中它们不相同。对于替代实施例,目的地操作数标识符366与源操作数标识符365相同,而在其他实施例中它们不相同。在一个实施例中,由源操作数标识符364和365标识的源操作数中的一个被文本串比较操作的结果覆写,而在其他实施例中,标识符364对应于源寄存器元件,而标识符365对应于目的地寄存器元件。对于一个实施例,操作数标识符364和365可被用于标识32位或64位的源和目的地操作数。
图3E是具有四十个或更多位的另一个替代操作编码(操作码)格式370的描绘。操作码格式370对应于操作码格式360,并包括可选的前缀字节378。根据一个实施例的指令可通过字段378、371和372中的一个或多个来编码。通过源操作数标识符374和375以及通过前缀字节378,可对每条指令标识多至两个操作数位置。对于一个实施例,前缀字节378可被用于标识32位或64位的源和目的地操作数。对于一个实施例,目的地操作数标识符376与源操作数标识符374相同,而在其他实施例中它们不相同。对于替代实施例,目的地操作数标识符376与源操作数标识符375相同,而在其他实施例中它们不相同。在一个实施例中,指令对由操作数标识符374和375所标识的操作数中的一个或多个进行操作,并且通过该指令的结果覆写由操作数标识符374和375所标识的一个或多个操作数,而在其他实施例中,将由标识符374和375标识的操作数写入另一寄存器中的另一数据元素中。操作码格式360和370允许由MOD字段363和373以及由可选的比例-索引-基址(scale-index-base)和位移(displacement)字节部分地指定的寄存器到寄存器寻址、存储器到寄存器寻址、由存储器对寄存器寻址、由寄存器对寄存器寻址、由立即数对寄存器寻址、寄存器到存储器寻址。
接下来转到图3F,在一些替代实施例中,可以通过协处理器数据处理(CDP)指令来执行64位单指令多数据(SIMD)算术操作。操作编码(操作码)格式380描绘了具有CDP操作码字段382和389的一条此类CDP指令。对于替代实施例,可由字段383、384、387和388中的一个或多个对CDP指令操作的这种类型进行编码。可以对每个指令标识多至三个操作数位置,包括多至两个源操作数标识符385和390以及一个目的地操作数标识符386。协处理器的一个实施例可对8位、16位、32位和64位的值进行操作。对于一个实施例,对整数数据元素执行指令。在一些实施例中,可使用条件字段381,有条件地执行指令。对于一些实施例,可通过字段383来对源数据尺寸进行编码。在一些实施例中,可对SIMD字段执行零(Z)、负(N)、进位(C)和溢出(V)检测。对于一些指令,可通过字段384对饱和类型进行编码。
图4A是示出根据本发明的至少一个实施例的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。图4B是示出根据本发明的至少一个实施例的、要被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑的框图。图4A中的实线框示出了有序流水线,而虚线框示出了寄存器重命名的、乱序发布/执行流水线。类似地,图4B中的实线框示出了有序架构逻辑,而虚线框示出了寄存器重命名逻辑以及乱序发布/执行逻辑。
在图4A中,处理器流水线400包括取出级402、长度解码级404、解码级406、分配级408、重命名级410、调度(也称为分派或发布)级412、寄存器读取/存储器读取级414、执行级416、写回/存储器写入级418、异常处理级422以及提交级424。
在图4B中,箭头指示两个或更多个单元之间的耦合,并且箭头的方向指示那些单元之间的数据流的方向。图4B示出了包括耦合到执行引擎单元450的前端单元430的处理器核490,且执行引擎单元和前端单元两者都耦合到存储器单元470。
核490可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为又一选项,核490可以是专用核,例如,网络或通信核、压缩引擎、图形核等。
前端单元430包括耦合到指令高速缓存单元434的分支预测单元432,该指令高速缓存单元434耦合到指令转换后备缓冲器(TLB)436,该指令转换后备缓冲器436耦合到指令取出单元438,指令取出单元438耦合到解码单元440。解码单元或解码器可解码指令,并生成从原始指令中解码出的、或以其他方式反映原始指令的、或从原始指令中导出的一个或多个微操作、微代码进入点、微指令、其他指令或其他控制信号作为输出。可使用各种不同的机制来实现解码器。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元434进一步耦合到存储器单元470中的第2级(L2)高速缓存单元476。解码单元440耦合至执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450包括重命名/分配器单元452,该重命名/分配器单元452耦合到引退单元454和一个或多个调度器单元的集合456。(多个)调度器单元456表示任何数量的不同调度器,包括预留站、中央指令窗口等。(多个)调度器单元456耦合到(多个)物理寄存器堆单元458。(多个)物理寄存器堆单元458中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型(诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点等)、状态(诸如,作为将要执行的下一指令的地址的指令指针)等等。(多个)物理寄存器堆单元458与引退单元154重叠以示出可以用来实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器和(多个)引退寄存器堆;使用寄存器映射和寄存器池等等)。通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定电路类型。多种不同类型的寄存器可适用,只要它们能够存储并提供在此所述的数据。合适的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。引退单元454和物理寄存器堆单元458耦合至执行群集460。(多个)执行群集460包括一个或多个执行单元462的集合和一个或多个存储器访问单元464的集合。执行单元462可以对各种类型的数据(例如,标量浮点、紧缩整型、紧缩浮点、向量整型、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其它实施例可包括仅一个执行单元或全部执行所有功能的多个执行单元。(多个)调度器单元456、(多个)物理寄存器堆单元458和(多个)执行群集460被示为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,各自具有其自己的调度器单元、(多个)物理寄存器堆单元和/或执行群集的标量整型流水线、标量浮点/紧缩整型/紧缩浮点/向量整型/向量浮点流水线和/或存储器访问流水线——以及在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行群集具有(多个)存储器访问单元464的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以为乱序发布/执行,并且其余流水线可以为有序发布/执行。
存储器访问单元的集合464耦合至存储器单元470,该存储器单元包括数据TLB单元472,该数据TLB单元耦合至数据高速缓存单元474,该数据高速缓存单元耦合至第二级(L2)高速缓存单元476。在一个示例性实施例中,存储器访问单元464可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元470中的数据TLB单元472。L2高速缓存单元476被耦合到一个或多个其他级的高速缓存,并最终被耦合到主存储器。
作为示例,示例性寄存器重命名的、乱序发布/执行核架构可以如下实现流水线400:1)指令取出438执行取出和长度解码级402和404;2)解码单元440执行解码级406;3)重命名/分配器单元452执行分配级408和重命名级410;4)调度器单元456执行调度级412;5)物理寄存器堆单元458和存储器单元470执行寄存器读取/存储器读取级414;执行群集460执行执行级416;6)存储器单元470和物理寄存器堆单元458执行写回/存储器写入级418;7)各单元可牵涉到异常处理级422;以及8)引退单元454和物理寄存器堆单元458执行提交级424。
核490可支持一个或多个指令集(诸如,x86指令集(具有增加有更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选附加扩展,诸如NEON))。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正在同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如用超线程化技术来同步多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。虽然处理器的所示出的实施例也包括单独的指令和数据高速缓存单元434/474以及共享的L2高速缓存单元476,但替代实施例可具有用于指令和数据两者的单个的内部高速缓存,诸如例如,第1级(L1)内部高速缓存或多个层级的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
图5是根据本发明的多个实施例的具有集成存储器控制器和图形器件的单核处理器和多核处理器500的框图。图5的实线框示出了处理器500,其具有单个核502A、系统代理510、一组一个或多个总线控制器单元516,而可选附加的虚线框示出了替代的处理器500,其具有多个核502A-N、位于系统代理单元510中的一组一个或多个集成存储器控制器单元514以及集成图形逻辑508。
存储器层次结构包括核内的一个或多个层级的高速缓存、一组或一个或多个共享高速缓存单元506以及耦合到集成存储器控制器单元514的集合的外部存储器(未示出)。该共享高速缓存单元的集合506可以包括一个或多个中间级高速缓存,诸如二级(L2)、三级(L3)、四级(L4)或其它级别的高速缓存、末级高速缓存(LLC)、和/或其组合。虽然在一个实施例中,基于环的互连单元512将集成图形逻辑508、共享高速缓存单元的集合506和系统代理单元510进行互连,但替代的实施例也可使用任何数量的公知技术来互连此类单元。
在一些实施例中,核502A-N中的一个或多个能够实现多线程。系统代理510包括协调并操作核502A-N的那些组件。系统代理单元510可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于调整核502A-N和集成图形逻辑508的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个从外部连接的显示器。
核502A-N在架构和/或指令集方面可以是同构或异构的。例如,核502A-N中的一些可以是有序的,而另一些是乱序的。作为另一个示例,核502A-N中的两个或更多能够执行相同的指令集,而其他核仅能够执行该指令集的子集或不同的指令集。
处理器可以是通用处理器,诸如酷睿(CoreTM)i3、i5、i7、2Duo和Quad、至强(XeonTM)、安腾(ItaniumTM)、XScaleTM或StrongARMTM处理器,这些均可以从加利福尼亚圣克拉拉市的英特尔公司获得。或者,处理器可以来自另一个公司,诸如来自ARM控股公司、MIPS等。处理器可以是专用处理器,诸如,例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器,等等。该处理器可以被实现在一个或多个芯片上。处理器500可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个工艺技术中的任何一个技术将该处理器实现在一个或多个衬底上。
图6-8是适于包括处理器500的示例性系统,而图9是可包括核502中的一个或多个的示例性芯片上系统(SoC)。本领域已知的对膝上型设备、桌面设备、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其它电子设备的其它系统设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其它执行逻辑的多个系统或电子设备一般都是合适的。
现在参考图6,所示出的是根据本发明一个实施例的系统600的框图。系统600可以包括耦合至图形存储器控制器中枢(GMCH)620的一个或多个处理器610、615。在图6中以虚线表示附加的处理器615的可选的性质。
每个处理器610、615可以是处理器500的某个版本。然而,应当注意,集成图形逻辑和集成存储器控制单元不太可能出现在处理器610和615中。图6示出了GMCH 620可以耦合至存储器640,该存储器640可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可以与非易失性高速缓存相关联。
GMCH 620可以是芯片组或芯片组的部分。GMCH 620可以与处理器610、615进行通信,并控制处理器610、615与存储器640之间的交互。GMCH 620还可担当处理器610、615和系统600的其他元件之间的加速总线接口。对于至少一个实施例,GMCH 620经由诸如前端总线(FSB)695之类的多点总线与处理器610、615进行通信。
此外,GMCH 620耦合至显示器645(诸如平板显示器)。GMCH 620可包括集成图形加速器。GMCH 620进一步耦合至输入/输出(I/O)控制器中枢(ICH)650,该输入/输出(I/O)控制器中枢(ICH)650可用于将各种外围设备耦合至系统600。在图6的实施例中作为示例示出了外部图形设备660以及另一外围设备670,该外部图形设备660可以是耦合至ICH 650的分立图形设备。
替代地,附加的或不同的处理器也可存在于系统600中。例如,附加的处理器615可以包括与处理器610相同的附加的处理器、与处理器610异构的或不对称的附加的处理器、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器。在物理资源610和615之间会存在包括架构、微架构、热和功耗特征等的一系列品质度量方面的各种差异。这些差异可以有效显示为处理器610和615之间的不对称性和异构性。对于至少一个实施例,各种处理器610和615可驻留在同一管芯封装中。
现在参照图7,所示出的是根据本发明实施例的第二系统700的框图。如图7所示,多处理器系统700是点对点互连系统,并包括经由点对点互连750耦合的第一处理器770和第二处理器780。处理器770和780中的每一个可以是处理器500的某个版本(如处理器610、615中的一个或多个)。
虽然仅以两个处理器770、780来示出,但是应当理解本发明的范围不限于此。在其他实施例中,在给定处理器中可存在一个或多个附加处理器。
处理器770和780被示为分别包括集成存储器控制器单元772和782。处理器770还包括作为其总线控制器单元的一部分的点对点(P-P)接口776和778;类似地,第二处理器780包括P-P接口786和788。处理器770、780可以经由使用点对点(P-P)接口电路778、788的P-P接口750来交换信息。如图7所示,IMC 772和782将各处理器耦合到相应的存储器,即存储器732和存储器734,这些存储器可以是本地附连至相应的处理器的主存储器的部分。
处理器770、780可各自经由使用点对点接口电路776、794、786、798的各个P-P接口752、754与芯片组790交换信息。芯片组790还可经由高性能图形接口739与高性能图形电路738交换信息。
共享高速缓存(未示出)可被包括在任一处理器中,或在两个处理器的外部但经由P-P互连与这些处理器连接,从而如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在该共享的高速缓存中。
芯片组790可经由接口796耦合到第一总线716。在一个实施例中,第一总线716可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图7所示,各种I/O设备714可以连同总线桥718被耦合至第一总线716,总线桥718将第一总线716耦合至第二总线720。在一个实施例中,第二总线720可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合至第二总线720,包括例如,键盘和/或鼠标722、通信设备727以及存储单元728(诸如,可包括指令/代码和数据730的盘驱动器或其他大容量存储设备)。此外,音频I/O 724可以被耦合到第二总线720。注意,其它架构是可能的。例如,系统可实现多分支总线或者其他此类架构,而不是图7中的点对点架构。
现在参照图8,所示出的是根据本发明实施例的第三系统800的框图。图7和8中的相同部件用相同附图标记表示,并已从图8中省去了图7中的某些方面,以避免使图8的其他方面变得模糊。
图8示出处理器870、880可分别包括集成存储器和I/O控制逻辑(“CL”)872和882。对于至少一个实施例,CL 872和882可包括诸如以上结合图5和7所描述的集成存储器控制器单元。此外,CL 872、882还可以包括I/O控制逻辑。图8示出不仅存储器832、834耦合到CL872、882,而且I/O设备814也耦合到控制逻辑872、882。传统I/O设备815耦合到芯片组890。
现在参照图9,所示出的是根据本发明的实施例的SoC 900的框图。图5中相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图9中,互连单元902耦合至:应用处理器910,包括一组一个或多个核902A-N以及共享高速缓存单元906;系统代理单元910;总线控制器单元916;集成存储器控制器单元914;一组或一个或多个媒体处理器920,可包括集成图形逻辑908、用于提供静态和/或视频照相功能的图像处理器924、提供硬件音频加速的音频处理器926、提供视频编码/解码加速的视频处理器928、静态随机存取存储器(SRAM)单元930;直接存储器存取(DMA)单元932;以及显示单元940,用于耦合至一个或多个外部显示器。
图10示出处理器,包括中央处理单元(CPU)和图形处理单元(GPU),该处理器可执行根据一个实施例的至少一条指令。在一个实施例中,执行根据至少一个实施例的操作的指令可由CPU来执行。在另一实施例中,指令可以由GPU来执行。在又一实施例中,指令可以由GPU和CPU所执行的操作的组合来执行。例如,在一个实施例中,根据一个实施例的指令可被接收,并被解码,以便在GPU上执行。然而,经解码的指令中的一个或多个操作可由CPU来执行,并且结果被返回到GPU,以便进行指令的最终引退。相反,在一些实施例中,CPU可作为主处理器,而GPU作为协处理器。
在一些实施例中,受益于高度并行化的吞吐量处理器的指令可由GPU来执行,而受益于处理器(这些处理器受益于深度流水线架构)性能的指令可由CPU来执行。例如,图形、科学应用、金融应用以及其他并行工作负荷可受益于GPU的性能并相应地被执行,而更多的序列化应用(例如,操作系统内核或应用代码)可更适于CPU。
在图10中,处理器1000包括,CPU 1005、GPU 1010、图像处理器1015、视频处理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、显示设备1040、存储器接口控制器1045、MIPI控制器1050、闪存存储器控制器1055、双数据率(DDR)控制器1060、安全引擎1065、I2S/I2C控制器1070。其他逻辑和电路(包括更多的CPU或GPU以及其他外围设备接口控制器)可被包括在图10的处理器中。
至少一个实施例的一个或多个方面可由存储在表示处理器内的各种逻辑的机器可读介质上的表示性数据来实现,当机器读取该表示性数据时,该表示性数据使得该机器用于制造执行本文所述的技术的逻辑。可将此类表示(即所谓“IP核”)存储在有形的机器可读介质(“磁带”)上,并将其提供给各种顾客或生产设施,以便加载到实际制作该逻辑或处理器的制造机器中。例如,IP核(诸如由ARM控股公司所开发的CortexTM处理器族以及由中国科学院计算机技术研究所(ICT)所开发的龙芯IP核)可被授权或销售给各种客户或受许可方,诸如德州仪器、高通、苹果、或三星,并被实现在由这些客户或受许可方生产的处理器中。
图11示出根据一个实施例的IP核开发的框图。存储设备1130包括仿真软件1120和/或硬件或软件模型1110。在一个实施例中,表示IP核设计的数据可经由存储器1140(例如,硬盘)、有线连接(例如,互联网)1150或无线连接1160而被提供给存储设备1130。由仿真工具和模型所生成的IP核信息可随后被发送到生产设施,可由第三方在该生产设施中制造该IP核以执行根据至少一个实施例的至少一条指令。
在一些实施例中,一条或多条指令可以对应于第一类型或架构(例如,x86),并且可在不同类型或架构(例如,ARM)的处理器上被转换或仿真。根据一个实施例,因此可在任何处理器或处理器类型(包括ARM、x86、MIPS、GPU或其他处理器类型或架构)上执行指令。
图12示出了根据一个实施例的第一类型的指令如何被不同类型的处理器仿真。在图12中,程序1205包含可执行与根据一个实施例的指令相同或基本相同的功能的一些指令。然而,程序1205的指令可以是与处理器1215不同或不兼容的类型和/或格式,这意味着不能够由处理器1215原生地执行程序1205中的类型的指令。然而,借助于仿真逻辑1210,将程序1205的指令转换成能够由处理器1215原生执行的指令。在一个实施例中,仿真逻辑被具体化在硬件中。在另一实施例中,将仿真逻辑具体化在有形的机器可读介质中,该机器可读介质包含用于将程序1205中的该类指令转换为能由处理器1215原生地执行的类型的软件。在其他实施例中,仿真逻辑是固定功能或可编程硬件和存储在有形的机器可读介质上的程序的组合。在一个实施例中,处理器包含仿真逻辑,而在其他实施例中,仿真逻辑在处理器之外,并且由第三方提供。在一个实施例中,通过执行被包括在处理器中或者与该处理器相关联的微代码或固件,处理器能够加载被具体化在包含软件的有形的机器可读介质中的仿真逻辑。
图13是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图13示出可以使用x86编译器1304来编译高级语言1302形式的程序以生成可由具有至少一个x86指令集核的处理器1316原生地执行的x86二进制代码1306。具有至少一个x86指令集核的处理器1316表示任何处理器,这些处理器能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1304表示可用于生成x86二进制代码1306(例如,目标代码)的编译器,该x86二进制代码1306能够通过附加的链接处理或无需附加的链接处理而在具有至少一个x86指令集核的处理器1316上执行。类似地,图13示出可以使用替代的指令集编译器1308来编译高级语言1302的程序以生成可由不具有至少一个x86指令集核的处理器1314(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集和/或执行加利福尼州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生地执行的替代的指令集二进制代码1310。该指令转换器1312被用于将x86二进制代码1306转换为可由不具有x86指令集核的处理器1314原生执行的代码。该转换后的代码不大可能与替代性指令集二进制代码1310相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替代指令集的指令构成。因此,指令转换器1312通过仿真、模拟或任何其它过程来表示允许不具有x86指令集处理器或核的处理器或其它电子设备执行x86二进制代码1306的软件、固件、硬件或其组合。
多阶段功率控制流程
描述了用于执行多阶段功率控制流程的指令和逻辑。在一个实施例中,功率控制流程是用于将设备的一部分(诸如,例如,集成电路(例如,处理器、芯片上系统(SoC)等))置于睡眠状态的流程。设备的一部分可以是例如核、控制器或知识产权(IP)块或设备的一些其他部分。在一个实施例中,睡眠状态是深睡眠状态(诸如,例如,C6C状态)。在另一实施例中,功率控制流程是用于执行关于设备的一部分的动态电压和频率缩放(DVFS)的流程。
在一个实施例中,本文所述的技术在集成电路中实现,集成电路包括用于执行操作的多个处理实体(例如,核、存储器控制器等)、耦合到处理实体以控制这些实体的功率管理的功率控制器、以及各自为处理实体中的一个执行功率控制流程(例如,掉电流程)的多个代理。
在一个实施例中,代理分别地使用调度器来调度并且响应于来自功率控制器的并行的请求来执行多个功率控制流程阶段。为了与代理相关联的处理实体的性能,基于代理的调度器和该处理实体,可以由代理的调度器调度阶段。在一个实施例中,本文所述的技术移除掉电流程的不同阶段之间的依赖关系,这进而移除阶段的串行本质。在没有依赖关系的情况下,调度器可以调度多个阶段以与其他阶段分开地发生。在一个实施例中,调度器还可以跳过处理实体的某些操作,其中这些操作对于掉电流程不是必须的。
在一个实施例中,每个代理包括用于根据多个有限状态机(FSM)为其相关联的处理实体执行掉电流程的电路。在一个实施例中,FSM说明用于将处理实体中的一个转变为和转变出深睡眠状态(例如,C6功率状态)和/或用于使处理实体中的一个能经受电压和频率缩放的操作。
在一个实施例中,每个FSM指定掉电流程的一个阶段的操作。响应于接收来自功率控制器的请求,每个代理访问FSM并且调度每个FSM指定的操作。在一个实施例中,将来自功率控制器的用于执行每个FSM的操作的请求与用于执行其他FSM的请求并行地发送。在完成功率控制流程之后,在一个实施例中,每个代理并行地将确认发送回功率控制器,其中每个确认用于确认阶段中的一个的完成。在一个实施例中,仅当所有功率控制流程阶段完成时,代理才发送这些确认。因此,调度器管理掉电流程的所有待决请求并且管理所有确认。由代理并行地(例如,在一个消息中)传递来自功率控制器的对阶段的请求并且并行地(例如,在一个消息中)发送确认的能力隐藏了与执行功率控制流程的相关联的通信等待时间,并且减少了不同阶段之间的FSM停止。通过移除与执行FSM定义的阶段中的每一个相关联的大部分通信,用于完成所有阶段的等待时间可以被减少到一半并且甚至被减少更多。
在一个实施例中,多个代理中的至少一个发送指示因为多个阶段之前与处理实体不相关而未被其相关联的处理实体执行的该多个阶段中的一个或多个的完成的确认中的至少一个(与其他确认一起)。
在单个FSM包括所有阶段的现有实现方式中,PCU将与处理实体传递请求以一次执行一个阶段并且将在发送对要被执行的下一阶段的请求之前等待以接收该阶段已经完成的确认。这意味着当PCU处理对前一阶段的确认时,处理实体必须等待以得到下一请求。此外,一旦单个FSM被启动,则所有阶段必须被完成,并且相互可能重叠的阶段以及阶段或其部分无法被跳过。此外,在一个实施例中,可以发送多次对执行阶段的请求。这意味着不同阶段在执行时可能是重叠的。
在一个实施例中,本文所述的技术减少DVFS和C6进入/退出功率流程的等待时间。用于一些实现方式的通信本身将消耗约4微秒。通过将通信减少到具有并行的对执行掉电流程的阶段的请求的一个消息和具有并行的对请求已经被完成的确认的一个消息,该通信等待时间被减少约4微秒到2微秒。这转换为15%的性能改善。在服务器的情形下,通信等待时间高得多并且收获大得多。与这些技术的使用相关联的减少的等待时间由于降低的成本而允许功率流程更频繁地执行,这最终为包含这些技术的设备带来更低的功率和更好的性能。
注意,在另一实施例中,对执行功率流程控制阶段的请求被串行地发送到功率管理代理。在这种情形下,功率管理代理在调度操作之前可以等待以接收所有请求。在另一实施例中,当阶段请求被接收时,功率管理代理调度操作。在又一实施例中,功率管理代理串行地发送确认。
图14是根据实施例的处理器的框图。参考图14,处理器1400可以是包括多个核1410a-1410n的多核处理器。在一个实施例中,每一个此类核可以是单个域或独立的功率域,并且可配置成进入和退出活动状态和/或不活动状态。这可以基于核1410a-1410n中的每一个的工作负荷。
除了核1410a-1410n之外,附加的处理引擎可选地存在于处理器内,诸如上文所述的那些,包括但不限于,至少一个图形单元(为了易于说明而未示出),该至少一个图形单元可包括一个或多个图形处理单元(GPU)以执行图形处理以及可能执行图形处理器上的通用操作。此外,可以存在至少一个图像信号处理器(为了易于说明而未示出)以处理接收自在处理器内部或在芯片外的一个或多个捕捉设备的传入图像数据。所有这些各种处理单元(包括核1410a-1410n,以及任何图形单元和图像信号处理器)均耦合到互连1415。
可经由互连1415将各种核耦合到包括各种组件的非核1420。互连1415可以包括但不限于结构、环形架构、点对点互连等。互连1415可以充当高速缓存一致性管芯上互连,其进而耦合到非核1420中的集成存储器控制器1440。进而,存储器控制器1440控制与系统存储器1460(诸如,例如,动态随机存取存储器(DRAM))的通信。
在一个实施例中,非核1420包括执行不在核中的处理器的功能的组件。这些功能可以包括但不限于,存储器访问功能、输入/输出(I/O)功能和/或时钟功能。在一个实施例中,这些功能与核紧密地连接。在一个实施例中,非核1420包括用于执行这些操作中的一个或多个的系统代理。
在一个实施例中,非核1420包括各种接口1450和功率控制单元(PCU)1455,功率控制单元1455控制处理器中的组件的功耗,组件包括但不限于核1410a-1410n、存储器控制器1440。在一个实施例中,PCU 1455对进入哪些功率管理状态(例如,微处理器性能(P)状态、微处理器节流(T)状态、微处理器和封装空闲(C)状态、系统睡眠(S)状态等)做决定。在一个实施例中,PCU 1455包括根据实施例的动态电压和频率缩放(DVFS)控制逻辑1459。在一个实施例中,DVFS控制逻辑1459配置为启用对核1410a-1410n的多个域和/或非核1420的多个部分(例如,存储器控制器1440)的独立的V/F控制。这可以基于活动信息、配置信息、环境信息和试探法。在一个实施例中,这基于温度、电流、功率和操作系统(OS)状态的输入。
在一个实施例中,处理器1400例如经由存储器总线与系统存储器1460通信。此外,通过使用接口1450,可完成向诸如例如外围设备、大容量存储设备等的各种芯片外组件的连接。尽管在图14的实施例中以此特定实现示出,但是本发明的范围不限于该方面。
如进一步所示,每个核1410包括时钟接口1405,时钟接口1405可以实现为气泡发生器先进先出(BGF)时钟交叉缓冲器以实现到互连1415的互连。每个核还包括核存储器。在一个实施例中,核存储器1406位于每个核的外部。此类存储器的示例示出为共享高速缓存存储器1430(例如,静态随机存取存储器(SRAM)、末级高速缓存(LLC)等)。在另一实施例中,核存储器是核本身的一部分,诸如核存储器1406A-N(例如,静态随机存取存储器(SRAM)、末级高速缓存(LLC)等)。在一个实施例中,使用与对核存储器1406的核的其余部分供电的相同的供电轨对核存储器1406供电。然而,在一个实施例中,当进入一个或多个降低的功耗状态(例如,C6)并且在一个或多个降低的功耗状态期间时,开关将核存储器1406耦合到另一供电轨。这种供电轨可以是较低电压供电轨。
图15示出向核供电的一个实施例。参考图15,供电轨1501通过功率门电路1502向核供电。经由一个或多个控制信号1503控制功率门电路1502以启用或禁用到核的功率。在一个实施例中,控制信号1503来自核的代理。门逻辑1504使来自供电轨1501或不同的供电轨(即供电轨1505)的功率能向核中的核存储器供电(例如,SRAM)。在一个实施例中,来自核的代理的一个或多个控制信号1506控制门逻辑1504以当核处于活动状态时为核存储器提供来自供电轨1501的功率并且在一个或多个降低的功耗状态(例如,C状态C6)期间为核存储器提供来自供电轨1505的功率。在一个实施例中,门逻辑1504包括一个或多个功率门电路。在另一实施例中,门逻辑1504包括一个或多个开关。
每个核1410a-1410n和其他处理单元(例如,存储器控制器)被耦合以接收来自时钟发生器(例如,锁相环(PLL))的时钟信号。在一个实施例中,时钟发生器可以是核的一部分。在另一实施例中,时钟发生器是非核1420的一部分。当在一个或多个降低的功耗状态(例如,C状态C6)中操作时,门控来自时钟发生器的时钟信号并且/或者禁用时钟发生器。在一个实施例中,这由核的代理控制。图16示出对核的时钟信号的时钟门控的一个实施例。参考图16,PLL 1601接收参考时钟1600并且生成核时钟信号1603,核时钟信号1603用于为核1605提供时钟。在一个实施例中,PLL 1601由控制信号1610控制。在一个实施例中,控制信号1510禁用和启用PLL 1601并且指示会被PLL 1601在生成核时钟信号1603中使用的时钟频率。在一个实施例中,控制信号1610由核的代理1605生成。时钟门控逻辑1604能操作以门控到核1605的核时钟信号1603。在一个实施例中,来自核的代理1605的控制信号1611在一个或多个降低的功耗状态(例如,C状态C6)期间门控核时钟信号1603。
往回参考图14,核和组件中的每一个还包括功率管理代理,诸如例如,核1410a-1410n的功率管理代理1411a-1411n和存储器控制器1440的存储器控制器功率管理代理1441。注意,处理器中的其他组件也可以具有对应的功率管理代理。在一个实施例中,功率管理代理1411a-1411n是非核1420的一部分,代替在每个核内,诸如功率管理代理1480所示。
在一个实施例中,功率管理代理为它们相应的组件中的每一个执行掉电流程。例如,核的代理执行核掉电流程。在一个实施例中,这通过为代理中的每一个提供电路和调度器来完成,电路用于执行与多个有限状态机(FSM)相关联的操作,掉电流程的每个阶段有一个操作,并且调度器响应于接收自PCU的使阶段执行的请求而控制阶段中的每一个的性能。FSM的操作存储在可能是代理的一部分并且/或者可被代理访问的代理存储器中。在一个实施例中,FSM的操作被实现在由代理使用以执行操作的固件中。
在一个实施例中,掉电流程被分成五个阶段,每个阶段有一个FSM。通过执行所有五个阶段,完成掉电流程。在一个实施例中,PCU将对多个阶段的请求并行地发送到代理,请求指示PCU想要代理为PCU的相关联的核(或组件)执行掉电流程。在掉电流程被分成五个阶段的情形下,PCU将五个请求并行地发送到代理。图23示出掉电流程的一个实施例中的对五个请求的并行的发送,阶段1-5中的每一个有一个请求,作为一个消息的一部分。响应于此,该核的代理的调度器调度完成每个阶段所需的操作以完成掉电流程。在所有阶段已经被完成之后,代理将确认并行地发送到PCU,每个完成的阶段有一个确认。在另一实施例中,PCU将单个请求发送到代理以执行所有阶段(例如,五个FSM说明的五个阶段)并且当所有阶段已经被完成时接收返回自代理的单个确认。
在一个实施例中,代理是组件(例如,核)本身的一部分。在另一实施例中,代理是非核1420的一部分或是其相应组件的外部的另一区域。
注意,通过将掉电流程分成多个单独的阶段以及它们的对应的FSM,可以移除FSM之间的任何依赖关系并且可以独立于其他FSM调度每个FSM的操作。
图17示出五个FSM阶段的一个实施例。注意,尽管图17限于核,但是FSM可用于作为处理器或另一集成电路的一部分的其他组件。参考图17,多个有限状态机1700包括:第一FSM,用于将核置于静默状态(1701);第二FSM,用于阻止到核的一个或多个接口(1702);第三FSM,用于停止对核提供时钟(1703);第四FSM,用于退出降低的功耗状态(1704);以及第五FSM,用于使核恢复执行指令(1705)。
图18是用于将核置于静默状态的FSM过程的一个实施例的流程图。在一个实施例中,该过程由处理逻辑执行,处理逻辑可包括硬件(电路、专用逻辑等)、软件(例如,运行在通用计算机系统上或专用机器上)、固件、或这三者的组合。
参考图18,该过程通过处理逻辑停止核操作而开始(处理块1801)。在停止核操作之后,核不再生成到存储器的事务。然后,处理逻辑完成核是其一部分的任何热节流(处理块1802)。随后,处理逻辑发送核掉电状态(处理块1803)。在一个实施例中,一旦这些操作已经被完成,核的代理发送该阶段已经被完成的确认。在一个实施例中,并行地发送该确认以及其他阶段已经被完成的确认。
图19是用于阻止到核的一个或多个接口的FSM过程的一个实施例的流程图。在一个实施例中,该过程由处理逻辑执行,处理逻辑可包括硬件(电路、专用逻辑等)、软件(例如,运行在通用计算机系统上或专用机器上)、固件、或这三者的组合。
参考图19,该过程通过处理逻辑激活机制以响应于具有核不具有与监听相关的任何数据的指示的监听操作而开始(处理块1901)。当来自I/O子系统的路径对监听仍然开启时,这是必要的。接下来,处理逻辑停止到核的互连接口(处理块1902)。在一个实施例中,停止互连接口包括停止IDI(管芯中互连)接口。在到核的I/O接口已经被关闭之后,核不能接收上行通信量。
一旦互连接口已经被停止,处理逻辑关闭时钟接口(处理块1903)。在一个实施例中,时钟接口被实现为气泡发生器先进先出(BGF)时钟交叉缓冲器以启用不同电压和频率的域之间的互连,并且时钟接口被关闭。
在一个实施例中,一旦这些操作已经被完成,核的代理发送该阶段已经被完成的确认。在一个实施例中,并行地发送该确认以及其他阶段已经被完成的确认。
图20是用于停止对核提供时钟的FSM过程的一个实施例的流程图。在一个实施例中,该过程由处理逻辑执行,处理逻辑可包括硬件(电路、专用逻辑等)、软件(例如,运行在通用计算机系统上或专用机器上)、固件、或这三者的组合。
参考图20,该过程通过处理逻辑断言核重置信号以重置核而开始(处理块2001)。接下来,处理逻辑门控到核的时钟(处理块2002)并且关闭时钟发生器(例如,PLL)(处理块2003)。随后,处理块将存储阵列(例如,核SRAM等)切换到不同的供电轨以使存储阵列在降低的功耗状态期间能继续接收功率(处理块2004)。在一个实施例中,在核高速缓存存储器被转储清除并且核的时钟已经被关闭之后,存储阵列存储核状态。在一个实施例中,存储阵列包括末级高速缓存(LLC)。在一个实施例中,新的供电轨是较低电压供电轨,其提供足够的功率以保持存储阵列中的数据被刷新。存储器还可以被置于自刷新模式。最后,处理逻辑从核移除电压(处理块2005)。在一个实施例中,处理逻辑通过关闭使功率能到核的开关而从核移除电压。在一个实施例中,功率门电路用于切断到核的电压。
在一个实施例中,一旦这些操作已经被完成,核的代理发送该阶段已经被完成的确认。在一个实施例中,并行地发送该确认以及其他阶段已经被完成的确认。
注意,在此处,核处于用于启用DVFS的合适的状态以使当核处于安全点时核的电压和/或频率转变。因此,在此处,可以更新频率和电压,并且这可以由一个或多个其他FSM执行。
图21是用于退出降低的功耗状态的FSM过程的一个实施例的流程图。在一个实施例中,该过程由处理逻辑执行,处理逻辑可包括硬件(电路、专用逻辑等)、软件(例如,运行在通用计算机系统上或专用机器上)、固件、或这三者的组合。
参考图21,该过程通过处理逻辑启动时钟发生器而开始(处理块2101)。在一个实施例中,启动时钟发生器包括开启PLL。接下来,处理逻辑将电压应用到核(处理块2102)。在一个实施例中,为了将电压应用到核,处理逻辑通知开关(例如,功率门电路)以使电压能到核。处理逻辑还使核电压升高至指定水平(处理块2103)。该电压水平可以是PCU指定的作为频率和电压缩放的一部分的水平。一旦电压已经被升高到指定水平,处理逻辑生成核具有功率的指示(例如,断言pwrgood信号)(处理块2014)。处理逻辑还将核存储器阵列切换到核供电轨(处理块2015)并且将时钟发生器的时钟频率置位并且等待时钟发生器准备好(处理块2016)。在一个实施例中,时钟发生器是PLL,并且频率(例如,2x是频率加倍、3x是频率三倍等)已经被编程,PLL继续到实现锁定。频率可以被置位作为动态频率和电压缩放的一部分。当PLL被锁定时,然后PLL准备好了。最后,处理逻辑清除核状态(处理块2017)。
在一个实施例中,一旦这些操作已经被完成,核的代理发送该阶段已经被完成的确认。在一个实施例中,并行地发送该确认以及其他阶段已经被完成的确认。
在一个实施例中,如果退出除了C状态C6之外的状态,一旦核电压被提高到指定水平并且PLL准备好,该阶段完成,则处理块2014和2015被跳过。例如,如果执行动态电压和频率缩放操作,则发送核具有功率的指示(例如,pwrgood信号)以及将存储器阵列(例如,SRAM、LLC等)切换到除了核的供电轨之外的不同的供电轨的操作未被执行,并且在PLL准备好之后,该阶段完成。
图22是用于使核恢复执行指令的FSM过程的一个实施例的流程图。在一个实施例中,该过程由处理逻辑执行,处理逻辑可包括硬件(电路、专用逻辑等)、软件(例如,运行在通用计算机系统上或专用机器上)、固件、或这三者的组合。
参考图22,该过程通过处理逻辑向核加载不同消息而开始(处理块2201)。在一个实施例中,这些消息包括对退出的类型的指示:1)从重置退出,2)从C6退出等。这些消息还可以指示核的操作的频率。这可以是选择为DVFS的一部分的新频率。在一个实施例中,这些消息还指定SoC结构拓扑。接下来,处理逻辑重启互连通信(处理块2202)。在一个实施例中,该处理逻辑解除对到核的输入/输出(I/O)接口的阻止。在一个实施例中,接口是IDI。一旦接口不再被阻止,处理逻辑加载指示核状态被保存的存储器位置的引导向量以使核能在其停止处继续处理(处理块2203)。
在一个实施例中,一旦这些操作已经被完成,核的代理发送该阶段已经被完成的确认。在一个实施例中,并行地发送该确认以及其他阶段已经被完成的确认。
在一个实施例中,代理包括调度功率控制流程的阶段的调度器。在上文所述的五个FSM描绘的五个阶段的情形下,调度器调度五个阶段的操作。在一个实施例中,这响应于来自PCU的对执行功率控制流程的多个阶段的请求而完成。在这些阶段已经被完成后,代理发送指示多个阶段已经被完成的确认。在一个实施例中,仅在所有多个阶段已经被完成之后,一起并行地发送这些确认。这可以通过在相同的消息中发送确认来实现。
注意,在一个实施例中,所有阶段可能不与特定的组件相关。在这些情形下,代理仅执行相关的阶段。然而,代理仍然发送指示完成所有阶段的确认,即使一些阶段未被执行。例如,当存储器控制器的代理被PCU请求执行五个阶段(例如,五个FSM)时,不需要停止并耗尽核。因此,存储器控制器的代理可以跳过该阶段。虽然如此,当其他四个阶段已经被执行时,存储器控制器的代理将所有五个确认发送到PCU。
存在本文所述的多个示例实施例。
示例1是集成电路,包括:多个处理实体,用于执行操作;功率控制器,耦合到多个处理实体以控制多个处理实体的功率管理;以及多个代理,其中多个代理中的每一个能操作以通过响应于功率控制器请求执行多个功率控制流程阶段而使用调度器分别地调度并且执行多个功率控制流程阶段来执行处理实体中的一个的功率控制流程,并且每个代理能操作以在完成多个功率控制流程阶段时发送多个确认,每个阶段有一个确认。
示例2是示例1的集成电路,该集成电路可任选地包括:多个处理实体包括至少一个核。
示例3是示例1的集成电路,该集成电路可任选地包括:多个处理实体包括存储器控制器。
示例4是示例1的集成电路,该集成电路可任选地包括:多个代理中的每一个能操作以仅在所有多个功率控制流程阶段已经被完成之后并行地发送指示多个功率控制流程阶段的阶段已经被完成的确认。
示例5是示例1的集成电路,该集成电路可任选地包括:多个代理中的至少一个能操作以发送指示所述多个阶段中的一个或多个阶段的完成的确认的至少一个,所述一个或多个阶段曾由于与处理实体不相关而未为了其相关联的处理实体被执行。
示例6是示例1的集成电路,该集成电路可任选地包括:每个代理包括电路以根据多个有限状态机(FSM)执行其相关联的处理实体的功率控制流程,并且FSM中的每一个能操作以指定功率控制流程的一个阶段的操作,并且进一步其中每个代理响应于接收来自PCU的多个请求而访问FSM并且调度FSM指定的操作。
示例7是示例6的集成电路,该集成电路可任选地包括:多个FSM说明用于将处理实体中的一个转变为和转变出C6功率状态的操作。
示例8是示例6的集成电路,该集成电路可任选地包括:多个FSM说明用于使处理实体中的一个能经受电压和频率缩放的操作。
示例9是示例6的集成电路,该集成电路可任选地包括:多个FSM包括:第一FSM,用于指定与将核置于静默状态相关联的操作;第二FSM,用于指定与阻止到核的一个或多个接口相关联的操作;第三FSM,用于指定与停止核时钟相关联的操作;第四FSM,用于指定与退出核驻留的降低的功耗状态相关联的操作;以及第五FSM,用于指定与使核恢复执行指令相关联的操作。
示例10是示例1的集成电路,该集成电路可任选地包括:多个代理中的每一个能操作以响应于单个消息内发送的多个请求而执行功率控制流程,多个请求中的每个请求用于请求多个功率控制流程阶段中的一个的性能。
示例11是处理器,包括:用于执行操作的多个核和存储器控制器;功率控制器,耦合到多个处理实体以控制多个处理实体的功率管理;以及多个代理,多个代理中的每一个用于执行多个核和存储器控制器中的一个的功率控制流程,其中每个代理包括:调度器,能操作以响应于来自功率控制器的请求执行功率控制流程阶段而分别地调度多个功率控制流程阶段,以及电路,用于执行多个有限状态机(FSM),多个FSM指定其相关联的处理实体的功率控制流程的操作,多个FSM中的每一个用于指定功率控制流程的一个阶段的操作,并且进一步其中每个代理能操作以响应于来自功率控制器的请求而访问FSM并且使用调度器来调度FSM指定的操作,并且每个代理能操作以在完成多个功率控制流程阶段时发送多个确认,每个阶段有一个确认。
示例12是示例11的处理器,该处理器可任选地包括:多个代理中的每一个能操作以仅在所有多个功率控制流程阶段已经被完成之后并行地发送指示多个功率控制流程阶段的阶段已经被完成的确认。
示例13是示例11的处理器,该处理器可任选地包括:多个代理中的至少一个能操作以发送指示所述多个阶段中的一个或多个阶段的完成的确认的至少一个,所述一个或多个阶段曾由于与相关联的处理实体不相关而未为了其相关联的处理实体被执行。
示例14是示例11的处理器,该处理器可任选地包括:多个FSM说明用于将处理实体中的一个转变为和转变出C6功率状态以及用于经受电压和频率缩放的操作。
示例15是系统,包括:互连;动态随机存取存储器(DRAM),耦合到互连;以及处理器,耦合到互连,其中处理器包括:多个处理实体,用于执行操作,功率控制器,耦合到多个处理实体以控制多个处理实体的功率管理,以及多个代理,多个代理中的每一个用于通过响应于功率控制器请求执行多个功率控制流程阶段而使用调度器分别地调度并且执行多个功率控制流程阶段来执行处理实体中的一个的功率控制流程,其中每个代理能操作以在完成多个功率控制流程阶段时发送多个确认,每个阶段中有一个确认。
示例16是示例15的系统,该系统可任选地包括:多个处理实体包括至少一个核。
示例17是示例15的系统,该系统可任选地包括:多个处理实体包括存储器控制器。
示例18是示例15的系统,该系统可任选地包括:多个代理中的每一个能操作以仅在所有多个功率控制流程阶段已经被完成之后发送指示多个功率控制流程阶段的阶段已经被完成的确认。
示例19是示例15的系统,该系统可任选地包括:多个代理中的至少一个能操作以发送指示所述多个阶段中的一个或多个阶段的完成的确认的至少一个,所述一个或多个阶段曾由于与相关联的处理实体不相关而未为了其相关联的处理实体被执行。
示例20是示例15的系统,该系统可任选地包括:每个代理包括电路以根据多个有限状态机(FSM)执行其相关联的处理实体的功率控制流程,FSM中的每一个用于指定功率控制流程的一个阶段的操作,并且进一步其中每个代理响应于接收来自功率控制器的多个请求而访问FSM并且调度FSM指定的操作。
示例21是示例15的系统,该系统可任选地包括:多个FSM包括:第一FSM,用于指定与将核置于静默状态相关联的操作;第二FSM,用于指定与阻止到核的一个或多个接口相关联的操作;第三FSM,用于指定与停止核时钟相关联的操作;第四FSM,用于指定与退出核驻留的降低的功耗状态相关联的操作;以及第五FSM,用于指定与使核恢复执行指令相关联的操作。
示例22是方法,包括:功率控制器请求关于处理器的核的功率控制流程的性能;执行核的功率控制流程,包括响应于功率控制器请求执行多个功率控制流程阶段而分别地调度多个功率控制流程阶段,以及根据与阶段相关联的有限状态机(FSM)执行功率控制流程阶段中的每一个的操作,包括访问多个FSM,多个FSM能操作以指定核的功率控制流程的操作,多个FSM中的每一个用于指定功率控制流程的一个阶段的操作,以及在完成多个功率控制流程阶段时发送多个确认,每个阶段有一个确认。
示例23是示例22的方法,该方法可任选地包括:发送多个确认包括仅在所有多个功率控制流程阶段已经被完成之后并行地发送指示多个功率控制流程阶段的阶段已经被完成的确认。
示例24是示例22的方法,该方法可任选地包括:并行地发送多个确认包括:指示所述多个阶段中的一个或多个阶段的完成,所述一个或多个阶段曾由于与相关联的处理实体不相关而未为了其相关联的处理实体被执行。
示例25是示例22的方法,该方法可任选地包括:多个FSM说明用于将处理实体中的一个转变为和转变出C6功率状态以及用于经受电压和频率缩放的操作。
示例26是示例22的方法,该方法可任选地包括:多个请求在一个消息中发送。
示例27是机器可读介质,具有存储于其上的指令,指令如果被机器执行,使机器执行方法,包括:功率控制器请求关于处理器的核的功率控制流程的性能;执行核的功率控制流程,包括响应于功率控制器请求执行多个功率控制流程阶段而分别地调度多个功率控制流程阶段,以及根据与阶段相关联的有限状态机(FSM)执行功率控制流程阶段中的每一个的操作,包括访问多个FSM,多个FSM能操作以指定核的功率控制流程的操作,多个FSM中的每一个用于指定功率控制流程的一个阶段的操作,以及在完成多个功率控制流程阶段时并行地发送多个确认,每个阶段有一个确认。
示例28是示例27的机器可读介质,该机器可读介质可任选地包括:方法包括并行地发送多个确认,包括仅在所有多个功率控制流程阶段已经被完成之后发送指示多个功率控制流程阶段的阶段已经被完成的确认。
示例29是示例27的机器可读介质,该机器可读介质可任选地包括:方法包括并行地发送多个确认,包括:指示因为之前一个或多个阶段与处理实体不相关而未被其相关联的处理实体执行的多个阶段中的一个或多个的完成。
示例30是处理器或其他装置,能操作以执行示例22至26中的任一项所述的方法。
示例31是处理器或其他设备,其包括用于执行示例22至26中的任一项所述的方法的装置。
示例32是基本上如本文中所述的处理器或其他装置。
示例33是能操作以执行基本上如本文中所述的任意方法的处理器或其他装置。
示例34是能操作以执行基本上如本文中所述的任意指令/操作的处理器或其他装置。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令以执行本文描述的功能并产生输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。可将被称为“IP核”的此类表示存储在有形的机器可读介质上,并将其提供给各种客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非瞬态的有形安排,其包括存储介质,诸如:硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的各实施例还包括非瞬态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
因此,公开了用于执行根据至少一个实施例的一条或多条指令的技术。虽然已经描述并在附图中示出了某些示例性实施例,但是应当理解,此类实施例仅仅是对本宽泛发明的说明而非限制,并且本发明不限于所示出和所描述的特定结构和配置,因为本领域技术人员在研究了本公开文本之后可以料知到各种其他修改。在诸如本申请这样的、发展迅速且进一步的进展难以预见的技术领域中,所公开的多个实施例在通过启用技术进步所促成的配置和细节上是容易修改的,同时不背离本公开的原理和所附权利要求书的范围。
Claims (19)
1.一种用于在计算系统中使用的集成电路,所述集成电路包括:
多个处理实体,用于执行操作;
功率控制器,耦合到所述多个处理实体以控制所述多个处理实体的功率管理;以及
多个代理,所述多个代理中的每一个用于通过响应于来自所述功率控制器的多个并行的请求而使用调度器分别地调度并且执行多个功率控制流程阶段来执行所述处理实体中的一个的功率控制流程,每个代理能操作以在完成所述多个功率控制流程阶段时并行地发送多个确认,每个阶段有一个确认。
2.如权利要求1所述的集成电路,其特征在于,所述多个处理实体包括至少一个核。
3.如权利要求1所述的集成电路,其特征在于,所述多个处理实体包括存储器控制器。
4.如权利要求1所述的集成电路,其特征在于,所述多个代理中的每一个能操作以仅在所有多个功率控制流程阶段已经被完成之后发送指示多个功率控制流程阶段的阶段已经被完成的确认。
5.如权利要求1所述的集成电路,其特征在于,所述多个代理中的至少一个能操作以发送指示所述多个阶段中的一个或多个阶段的完成的确认的至少一个,所述一个或多个阶段曾由于与相关联的处理实体不相关而未为了其相关联的处理实体被执行。
6.如权利要求1所述的集成电路,其特征在于,每个代理包括多个有限状态机(FSM)以为其相关联的处理实体执行功率控制流程,FSM中的每一个用于指定所述功率控制流程的一个阶段的操作,并且进一步其中每个代理响应于接收来自所述功率控制器的多个请求而访问FSM并且调度FSM指定的操作。
7.如权利要求6所述的集成电路,其特征在于,所述多个FSM说明用于将处理实体中的一个转变为和转变出C6功率状态的操作。
8.如权利要求6所述的集成电路,其特征在于,所述多个FSM说明用于使处理实体中的一个能经受电压和频率缩放的操作。
9.如权利要求6所述的集成电路,其特征在于,所述多个FSM包括:
第一FSM,用于指定与将核置于静默状态相关联的操作;
第二FSM,用于指定与阻止到核的一个或多个接口相关联的操作;
第三FSM,用于指定与停止核时钟相关联的操作;
第四FSM,用于指定与退出核驻留的降低的功耗状态相关联的操作;以及
第五FSM,用于指定与使核恢复执行指令相关联的操作。
10.一种计算系统,在所述计算系统中执行功率控制,所述系统包括:
互连;
动态随机存取存储器(DRAM),耦合到所述互连;以及
处理器,耦合到所述互连,所述处理器包括:
多个处理实体,用于执行操作,
功率控制器,耦合到所述多个处理实体以控制所述多个处理实体的功率管理,以及
多个代理,所述多个代理中的每一个用于通过响应于来自所述功率控制器的多个并行的请求而使用调度器分别地调度并且执行多个功率控制流程阶段来执行处理实体中的一个的功率控制流程,每个代理能操作以在完成所述多个功率控制流程阶段时并行地发送多个确认,每个阶段中有一个确认。
11.如权利要求10所述的系统,其特征在于,所述多个处理实体包括至少一个核或存储器控制器。
12.如权利要求10所述的系统,其特征在于,所述多个代理中的每一个能操作以仅在所有多个功率控制流程阶段已经被完成之后发送指示多个功率控制流程阶段的阶段已经被完成的确认。
13.如权利要求10所述的系统,其特征在于,所述多个代理中的至少一个能操作以发送指示所述多个阶段中的一个或多个阶段的完成的确认的至少一个,所述一个或多个阶段曾由于与相关联的处理实体不相关而未为了其相关联的处理实体被执行。
14.如权利要求10所述的系统,其特征在于,每个代理包括多个有限状态机(FSM)以为其相关联的处理实体执行功率控制流程,FSM中的每一个用于指定所述功率控制流程的一个阶段的操作,并且进一步其中每个代理响应于接收来自所述功率控制器的多个请求而访问FSM并且调度FSM指定的操作。
15.如权利要求14所述的系统,其特征在于,所述多个FSM包括:
第一FSM,用于指定与将核置于静默状态相关联的操作;
第二FSM,用于指定与阻止到核的一个或多个接口相关联的操作;
第三FSM,用于指定与停止核时钟相关联的操作;
第四FSM,用于指定与退出核驻留的降低的功耗状态相关联的操作;以及
第五FSM,用于指定与使核恢复执行指令相关联的操作。
16.一种用于在处理器中执行功率控制流程的方法,所述方法包括:
接收来自功率控制器的多个并行的请求以执行关于处理器的核的功率控制流程;
执行所述核的功率控制流程,包括
响应于来自所述功率控制器的多个并行的请求而分别地调度多个功率控制流程阶段,以及
根据与阶段相关联的有限状态机(FSM)执行所述功率控制流程阶段中的每一个的操作,包括访问多个FSM,所述多个FSM能操作以指定所述核的功率控制流程的操作,所述多个FSM中的每一个用于指定所述功率控制流程的一个阶段的操作,以及
在完成所述多个功率控制流程阶段时并行地发送多个确认,每个阶段有一个确认。
17.如权利要求16所述的方法,其特征在于,并行地发送多个确认包括仅在所有多个功率控制流程阶段已经被完成之后发送指示多个功率控制流程阶段的阶段已经被完成的确认。
18.如权利要求16所述的方法,其特征在于,并行地发送多个确认包括:指示所述多个阶段中的一个或多个阶段的完成,所述一个或多个阶段曾由于与相关联的处理实体不相关而未为了其相关联的处理实体被执行。
19.如权利要求16所述的方法,其特征在于,所述多个FSM说明用于将处理实体中的一个转变为和转变出C6功率状态以及用于经受电压和频率缩放的操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/374,684 US10365707B2 (en) | 2016-12-09 | 2016-12-09 | Instruction and logic for parallel multi-step power management flow |
US15/374,684 | 2016-12-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108227896A true CN108227896A (zh) | 2018-06-29 |
CN108227896B CN108227896B (zh) | 2024-03-12 |
Family
ID=62489259
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711136876.9A Active CN108227896B (zh) | 2016-12-09 | 2017-11-16 | 用于并行多步骤功率管理流程的指令和逻辑 |
Country Status (2)
Country | Link |
---|---|
US (2) | US10365707B2 (zh) |
CN (1) | CN108227896B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10423209B2 (en) * | 2017-02-13 | 2019-09-24 | Apple Inc. | Systems and methods for coherent power management |
US10535394B2 (en) * | 2017-07-20 | 2020-01-14 | Samsung Electronics Co., Ltd. | Memory device including dynamic voltage and frequency scaling switch and method of operating the same |
US20190158374A1 (en) * | 2017-11-22 | 2019-05-23 | Advanced Micro Devices, Inc. | Dynamic fine grain link control |
CN110872449B (zh) * | 2018-08-30 | 2022-03-04 | 中国石油化工股份有限公司 | 一种废橡胶粉改性沥青及其制备方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140258760A1 (en) * | 2013-03-11 | 2014-09-11 | Ryan D. Wells | Controlling Operating Voltage Of A Processor |
CN104813277A (zh) * | 2012-12-19 | 2015-07-29 | 英特尔公司 | 用于处理器的功率效率的向量掩码驱动时钟门控 |
CN104937539A (zh) * | 2012-11-28 | 2015-09-23 | 英特尔公司 | 用于提供推入缓冲器复制和存储功能的指令和逻辑 |
US20160041945A1 (en) * | 2014-08-06 | 2016-02-11 | Intel Corporation | Instruction and logic for store broadcast |
US20160091944A1 (en) * | 2014-09-25 | 2016-03-31 | Telefonaktiebolaget L M Ericsson (Publ) | Hw-controlled power domains with automatic power-on request |
US20160179166A1 (en) * | 2014-12-23 | 2016-06-23 | Tsvika Kurts | Processor core power event tracing |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE60034345D1 (de) * | 2000-11-03 | 2007-05-24 | St Microelectronics Srl | Abschaltprotokoll für integrierte Schaltungen |
US8286014B2 (en) * | 2008-03-25 | 2012-10-09 | Intel Corporation | Power management for a system on a chip (SoC) |
US8448001B1 (en) * | 2009-03-02 | 2013-05-21 | Marvell International Ltd. | System having a first device and second device in which the main power management module is configured to selectively supply a power and clock signal to change the power state of each device independently of the other device |
US8726047B2 (en) * | 2010-05-07 | 2014-05-13 | Samsung Electronics Co., Ltd. | System on chip, devices having the same, and method for power control of the SOC |
-
2016
- 2016-12-09 US US15/374,684 patent/US10365707B2/en not_active Expired - Fee Related
-
2017
- 2017-11-16 CN CN201711136876.9A patent/CN108227896B/zh active Active
-
2019
- 2019-07-16 US US16/513,267 patent/US11016556B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104937539A (zh) * | 2012-11-28 | 2015-09-23 | 英特尔公司 | 用于提供推入缓冲器复制和存储功能的指令和逻辑 |
CN104813277A (zh) * | 2012-12-19 | 2015-07-29 | 英特尔公司 | 用于处理器的功率效率的向量掩码驱动时钟门控 |
US20140258760A1 (en) * | 2013-03-11 | 2014-09-11 | Ryan D. Wells | Controlling Operating Voltage Of A Processor |
US20160041945A1 (en) * | 2014-08-06 | 2016-02-11 | Intel Corporation | Instruction and logic for store broadcast |
US20160091944A1 (en) * | 2014-09-25 | 2016-03-31 | Telefonaktiebolaget L M Ericsson (Publ) | Hw-controlled power domains with automatic power-on request |
US20160179166A1 (en) * | 2014-12-23 | 2016-06-23 | Tsvika Kurts | Processor core power event tracing |
Also Published As
Publication number | Publication date |
---|---|
US20180164873A1 (en) | 2018-06-14 |
US11016556B2 (en) | 2021-05-25 |
US10365707B2 (en) | 2019-07-30 |
US20200110460A1 (en) | 2020-04-09 |
CN108227896B (zh) | 2024-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104937539B (zh) | 用于提供推入缓冲器复制和存储功能的指令和逻辑 | |
CN103970509B (zh) | 对条件循环进行矢量化的装置、方法、处理器、处理系统以及机器可读介质 | |
CN104011662B (zh) | 用于提供向量混合和置换功能的指令和逻辑 | |
CN103827814B (zh) | 用于提供利用跨越功能的向量加载操作/存储操作的指令和逻辑 | |
CN104204990B (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
CN104484284B (zh) | 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑 | |
CN105955704B (zh) | 用于提供向量横向比较功能的指令和逻辑 | |
CN104321741B (zh) | 双舍入组合浮点乘法和加法 | |
TWI731892B (zh) | 用於以通道為基礎的跨步儲存操作之指令及邏輯 | |
CN103827815B (zh) | 用于提供利用跨越和掩码功能的向量加载和存储的指令和逻辑 | |
CN104915181B (zh) | 用于条件存储器错误帮助抑制的方法、处理器和处理系统 | |
CN106502624B (zh) | 用于提供向量横向多数表决功能的处理器、设备和处理系统 | |
CN104050077B (zh) | 利用多个测试源来提供测试的处理器、处理系统和方法 | |
TWI743064B (zh) | 用於取得多重向量元素操作之指令及邏輯 | |
CN107209722A (zh) | 用于在安全飞地页面高速缓存中使安全飞地的进程分叉和建立子飞地的指令和逻辑 | |
CN108292215A (zh) | 用于加载-索引和预取-聚集操作的指令和逻辑 | |
CN108351863A (zh) | 用于可编程结构层级结构和高速缓存的指令和逻辑 | |
CN108139905A (zh) | 用于从持久存储器预取信息的指令和逻辑 | |
TWI720056B (zh) | 用於設置多重向量元素操作之指令及邏輯 | |
CN108228960A (zh) | 用于熔丝验证的基于Simon的散列 | |
CN108369509A (zh) | 用于基于通道的跨步分散操作的指令和逻辑 | |
CN108369516A (zh) | 用于加载-索引和预取-分散操作的指令和逻辑 | |
CN108292229A (zh) | 用于重新出现的相邻聚集的指令和逻辑 | |
CN107690618A (zh) | 用于提供向量紧缩直方图功能的方法、装置、指令和逻辑 | |
CN103988173B (zh) | 用于提供掩码寄存器与通用寄存器或存储器之间的转换的指令和逻辑 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |