CN105706050B - 能量高效的多模式指令发布 - Google Patents
能量高效的多模式指令发布 Download PDFInfo
- Publication number
- CN105706050B CN105706050B CN201480060932.3A CN201480060932A CN105706050B CN 105706050 B CN105706050 B CN 105706050B CN 201480060932 A CN201480060932 A CN 201480060932A CN 105706050 B CN105706050 B CN 105706050B
- Authority
- CN
- China
- Prior art keywords
- instruction
- processor
- logic unit
- release model
- instructions
- 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.)
- Active
Links
- 230000003068 static effect Effects 0.000 claims description 20
- 238000000034 method Methods 0.000 claims description 14
- 238000005265 energy consumption Methods 0.000 abstract description 5
- 230000015654 memory Effects 0.000 description 18
- 238000003860 storage Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 101100018862 Mus musculus Ifnar1 gene Proteins 0.000 description 2
- 230000033228 biological regulation Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 125000002015 acyclic group Chemical group 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008713 feedback mechanism Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- 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 or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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 or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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 or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- 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 or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- 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 or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本文描述了一种处理器,该处理器被配置为:至少部分地基于与多条指令相关联的特性,在该处理器的第一指令发布模式和该处理器的第二指令发布模式之间切换。第一指令发布模式和第二指令发布模式与不同的能耗特性相关联。此外,第一指令发布模式可以是无序指令发布模式,并且第二指令发布模式可以是有序指令发布模式。
Description
背景技术
不同的指令发布模式具有不同的功率和性能折衷。具有实现有序(in-order)指令发布模式的逻辑单元的处理器按照获取指令的顺序来发布指令,从而实现简单、能量高效的流水线。虽然能量高效,但是有序指令发布模式呈现比无序(out-of-order)指令发布模式要低的性能,这是因为有序指令发布模式面对丢失事件(miss event)必须停顿(例如,等待还未写回到操作数缓冲器或还未写入到寄存器堆的操作数)。
具有实现无序指令发布模式的逻辑单元的处理器基于指令的依存关系来执行指令,从而通过容许动态延时而提供较高的性能。然而,无序指令发布模式消耗比有序指令发布模式更多的能量,这是因为实现无序指令发布模式的逻辑单元比实现有序执行发布模式的逻辑单元更复杂。例如,实现无序指令发布模式的逻辑单元必须能够执行动态调度,这消耗额外的功率。
发明内容
本申请描述了一种处理器,所述处理器被配置为:在与不同的能耗特性相关联的指令发布模式之间切换。所述指令发布模式可以包括无序指令发布模式和有序指令发布模式,并且可以由所述处理器的不同逻辑单元来实现。所述处理器的电路可以通过在这些逻辑单元之间切换来在所述指令发布模式之间切换。此外,所述处理器可以被配置为:确定与多条指令(例如,原子指令块(atomic instruction block))相关联的特性,以及至少部分地基于所确定的特性来切换所述指令发布模式。
提供本发明内容以便用简化形式来介绍将在在下面的具体实施方式中进一步详细描述的一些概念的选择。本发明内容并非旨在标识所要求保护的主题的关键特性或必要特性,也不旨在用于限制所要求保护的主题的范围。
附图说明
参照附图来阐述具体实施方式,其中附图标记的最左边的数字标识该附图标记最先出现的附图。在不同的附图中使用相同的附图标记指示相似或相同的项目或特征。
图1是具有处理器的示例性计算设备的框图,其中处理器被配置为:在与不同的能耗特性相关联的指令发布模式之间切换。
图2A至图2D是处理器微架构的一部分的图,其中包括与不同的指令发布模式相关联的逻辑单元以及用于在这些逻辑单元之间切换的电路。
图3是示出了用于至少部分地基于与多条指令相关联的特性而在处理器的第一指令发布模式和处理器的第二指令发布模式之间切换的说明性过程的流程图。
具体实施方式
本公开内容描述了一种处理器,该处理器被配置为:在与不同的能耗特性相关联的指令发布模式之间切换。处理器还可以被配置为:获取指令(例如,原子指令块)并且确定与这些指令相关联的特性。至少部分地基于该特性,处理器可以切换指令发布模式,并且使用所切换到的指令发布模式来从处理器的指令窗中选择指令。在一些实施例中,处理器可以被配置为:在无序指令发布模式和有序指令发布模式之间切换。
在各个实施例中,每个指令发布模式可以与处理器的不同逻辑单元相关联,并且处理器可以包括在逻辑单元之间切换的电路。该电路可以包括例如到逻辑单元中的一个逻辑单元的输入线,该输入线耦合到时钟门(clock gate)。除了用于时钟信号的输入之外,时钟门还可以包括发送对适当的指令发布模式进行指示的信号的输入线。当该线的输入与逻辑单元的指令发布模式匹配时,并且当接收到时钟信号时,逻辑单元被激活。
处理器可以基于所确定的特性来设置对时钟门的输入。在一些实施例中,特性可以包括静态提示,例如与所获取的指令包括在一起的元数据。替代地,可以通过对该静态提示和包括处理器的计算设备的电量状态的逻辑与(logical AND)来确定特性。在另外的实施例中,可以通过处理器的表单来确定特性。该表单可以包括用于指令集(例如,原子指令块)的条目,以及与每个指令集相关联的计数。在此类实施例中,特性可以是指示计数是否达到或超过阈值的二进制值。可以转而基于发生某一事件或某些事件来构建计数。例如,当指令集的指令有序发布时可以递增计数,并且当指令集的指令无序发布时递减计数。在另外的实施例中,可以基于指令窗中的下一指令是否准备好有序发布来设置特性。在此类实施例中,逻辑单元中的一个逻辑单元可以检查指令窗中的指令,基于该检查来向时钟门提供输入(直接地或者通过反相器来提供),时钟门然后可以基于该输入来激活或者不激活其它逻辑单元。
示例性计算设备
图1是具有处理器的示例性计算设备的框图,其中处理器被配置为:在与不同的能耗特性相关联的指令发布模式之间切换。在各个实施例中,计算设备102可以是任何类型的计算设备。例如,计算设备102可以是个人计算机(PC)、膝上型计算机、服务器或服务器群、大型机、平板计算机、工作站、电信设备、个人数字助理(PDA)、媒体播放器、媒体中心设备、个人视频记录器(PVR)、电视机、或者任何其它类型的设备。
如所示出的,计算设备102可以包括一个或多个处理器104。处理器104可以是任何已知的处理器和/或可以包括一个或多个中央处理单元(CPU)或图形处理单元(GPU)。处理器104包括至少一个处理器104,该至少一个处理器104被配置为:在与不同的能耗特性相关联的指令发布模式之间切换。图2A至图2D中示出了该处理器104的微架构的一部分并且下面参照这些附图对其进行更详细的描述。
在一些实施例中,被配置为在指令发布模式之间切换的处理器104可以利用显式数据图执行(EDGE)指令集架构(ISA)。EDGE ISA通过直接表达数据流图(例如,有向非循环图)(编译器在原子指令块中内部地生成该数据流图)来提供编译器和处理器微架构之间更丰富的接口。这样做避免处理器在运行时重新发现数据依存关系。EDGE ISA还支持直接指令传送,其中处理器直接传递生产者(producer)指令的输出作为向消费者(consumer)指令的输入,而不是将输出写入到共享的存储器,例如寄存器堆。
在另外的实施例中,利用EDGE ISA的处理器104可以具有万亿次可靠智能自适应处理系统(TRIPS)架构。TRIPS架构是EDGE ISA的一个实例化方式。具有TRIPS架构的处理器104可以包括L2高速缓存和多个处理器内核。在一些实施例中,所利用的处理器内核的数量在运行时可以是动态的。每个处理器内核转而可以包括执行节点的阵列(array)、指令高速缓存、数据高速缓存、以及到L2高速缓存的端口。每个执行节点可以包括算数逻辑单元(ALU)和指令缓冲器,并且ALU可以是通用的,以适用于整数、浮点数等等。编译器可以将原子指令块的指令映射到执行节点中的一个或多个执行节点,以实现对大量指令的同时执行。在2004年7月IEEE Computer,37(7),pp 44-55,D.Burger,S.W.Keckler,K.S.McKinley等人的“Scaling to the End of Silicon with EDGE Architectures,”中更详细地描述了EDGE ISA和TRIPS架构二者。
存储器106可以存储可在处理器104上加载和执行的程序指令,以及在执行这些程序期间所生成的数据。取决于计算设备的配置和类型,存储器106可以是易失性的(例如,随机存取存储器(RAM))和/或非易失性的(例如,只读存储器(ROM)、闪存等等)。计算设备还可以包括额外的可移动存储装置108和/或不可移动存储装置110,包括但不限于磁存储装置、光盘和/或磁带存储装置。硬盘驱动器及其相关联的计算机可读介质可以提供对计算机可读指令、数据结构、程序模块、以及用于计算设备的其它数据的非易失性存储。在一些实现方式中,存储器106可以包括多个不同类型的存储器,例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或者ROM。
计算机可读介质包括至少两种类型的计算机可读介质,即计算机存储介质和通信介质。
计算机存储介质包括用于存储信息(例如,计算机可读指令、数据结构、程序模块、或者其它数据)的任何方法或技术中所实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于RAM、ROM、可擦除可编程只读存储器(EEPROM)、闪存或其它存储技术、压缩光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其它光学存储装置、盒式磁带、磁带、磁盘存储或其它磁存储设备、或者可以用于存储信息以便由计算设备存取的任何其它非传输介质。
相比之下,通信介质可以体现计算机可读指令、数据结构、程序模块、或者经调制的数据信号中的其它数据,例如载波波形或其它传输机制。如本文所定义的,计算机存储介质不包括通信介质。
转向存储器106的更详细内容,存储器106可以包括操作系统112、应用114和编译器116。操作系统112可以是任何类型的计算设备操作系统,并且应用114均可以表示任何一个或多个模块、应用、进程、线程或函数。
编译器116可以产生EDGE二进制文件(binaries)或TRIPS二进制文件—用于在EDGE/TRIPS处理器上执行的原子指令块。可以以原子方式获取、执行和提交每个原子指令块。这些原子指令块可以例如是一百二十八条指令的超块(hyperblock),并且编译器116可以将原子指令块的这些指令映射到处理器内核的执行节点。为了生成原子指令块,编译器116解析程序代码(例如,应用114的代码)并且从程序代码来构建控制流图。编译器116然后展开循环和内联函数,以产生展开的控制流图。接着,编译器116基于展开的控制流图来形成原子指令块、插入断言(predicate)、生成二进制文件并且分配寄存器。除了以上操作来生成原子指令块之外,编译器116还可以确定给定的原子指令块的指令是否适合于有序执行,并且可以包括指示该确定的静态提示,作为存储在原子指令块的块头(header)中的、用于原子指令块的元数据。在“Scaling to the End of Silicon with EDGEArchitectures”(上面所提供的引证)中更详细地描述了编译器116的例子。
存储器106还可以存储与操作系统112、应用114和编译器116、以及用于执行其它操作的模块相关联并且由其使用的数据。
计算设备102还可以包含通信适配器118,其中通信适配器118允许计算设备102与所存储的数据库、另一个计算设备或服务器、用户终端和/或网络上的其它设备进行通信。计算设备102还可以包括:输入设备120,例如键盘、鼠标、指示笔(stylus)、语音输入设备、触摸输入设备(包括例如触摸感应式显示器)等等;以及输出设备122,例如显示器、扬声器、振动机构、触觉反馈机构、或者用于一个或多个外围设备(例如,耳机、外围扬声器、外围显示器或打印机)的端口。
示例性处理器微架构
图2A至图2D是处理器微架构的一部分的图,其中包括与不同的指令发布模式相关联的逻辑单元以及用于在这些逻辑单元之间切换的电路。处理器微架构部分可以是计算设备102的处理器104中的一个处理器的处理器微架构的一部分。如上面提到的,处理器104可以实现EDGE ISA并且可以具有TRIPS架构。图2A至图2D中所描绘的处理器微架构的部分可以是该TRIPS架构的一部分或者是对EDGE ISA进行实例化的另一个架构的一部分。
如图2A至图2D中所示出的,可以由前端单元208来获取原子指令块202,其中原子指令块202包括多条指令204和元数据206。如上面提到的,可以以原子方式来获取、执行和提交原子指令块202。这些原子指令块可以例如是一百二十八条指令的超块并且可以由EDGE ISA编译器输出。
指令204可以各自是EDGE指令,其包括操作(op)代码(例如,指示与指令相关联的操作(例如,“加”)的代码)以及对一个或多个目标指令的标识。目标指令是指令的输出的消费者并且使用该输出作为操作数。这些指令204不对它们的源操作数进行规定。而是,指令204与操作数缓冲器相关联,其中操作数缓冲器存储指令204的操作数以及用于每个操作数的就绪比特(ready bit),以指示指令204的相应的操作数是否已写入到操作数缓冲器。
如上面还提到的,元数据206可以包括在原子指令块202的块头中,并且可以包括关于原子指令块202的指令204对于有序执行的适合性的静态提示。元数据206可能已由EDGE编译器(例如,编译器116)确定和规定。
在替代的实施例中,前端逻辑单元208可以获取不与任何类型的原子指令块202相关联并且不是EDGE指令的指令。此类指令可以包括任何其它ISA(例如,复杂指令集计算(CISC)ISA或者精简指令集计算(RISC)ISA)的指令。
在各个实施例中,前端逻辑单元208可以包括用于获取、解码和分派指令的逻辑。例如,前端逻辑208可以包括指令获取单元210,其被配置为获取原子指令块202的指令204。指令获取单元210还可以被配置为将所获取的指令204的地址加载到指令获取地址寄存器(还被称为“IFAR”(未示出))中。加载到IFAR中的地址可以是表示来自程序或编译器(例如,编译器116)的地址的有效地址。可以从指令高速缓存(还被称为“I-高速缓存”单元(未示出))来存取与接收到的有效地址相对应的指令204。可以通过总线接口单元(未示出)将指令204从系统存储器(例如,计算设备102的存储器)输入到I-高速缓存单元。
来自I-高速缓存单元的指令204可以输出到前端逻辑单元208的指令分派单元(IDU)212中。IDU 212可以被配置为对这些接收到的指令204进行解码。IDU 212还可以包括指令定序器,其被配置为按照由各个算法确定的顺序来转发经解码的指令204。
这些指令204可以被转发给指令窗214。指令窗214包括已经获取但还未提交的所有指令204。指令窗214中的每条指令204可以包括对指令204是否准备好发布进行指示的比特。已经发布的指令204不会被指示为“准备好发布”。当指令204已经接收到其操作数中的所有操作数时,该比特可以指示该指令204准备好发布。在一些实施例中,并非与各自指令204相关联的单个比特,逻辑单元可以通过针对指令204执行对在存储器(例如,I-高速缓存)中与该指令204的每个操作数和断言相关联的就绪比特的逻辑与(AND),来确定指令窗214中的哪些指令204准备好发布。指令窗214可以包括原子指令块202的指令204的所有指令或某个子集。例如,如果原子指令块202包括一百二十八条指令204,则指令窗214可以包括一百二十八条指令204。
在各个实施例中,如图2A至图2D中所示出的,处理器微架构可以包括用于从指令窗214中选择要发布的指令204的多个逻辑单元,例如下一指令逻辑单元218和选择逻辑单元220。下一指令逻辑单元218可以是实现有序指令发布模式的逻辑单元。该下一指令逻辑单元218可以按照线性顺序从指令窗214中选择指令204。如果要发布的指令204中的一条或多条指令未准备好(例如,还未接收到它们的操作数),则下一指令逻辑单元218会停顿,直到指令204准备好为止,并且然后将发布这些指令204。下一指令逻辑单元218可以选择多条指令204以用于一次发布。例如,下一指令逻辑单元218可以选择下两条未发布的指令204作为要发布的指令204。下一指令逻辑单元218然后通过复用器(MUX)222将这些发布的指令204路由到执行单元224。下一指令逻辑单元218由于其简单的逻辑而会相对能量高效,但是可能具有相对差的性能,这是因为在等待未准备好的指令204变得准备好时下一逻辑单元218会停顿。
在一些实施例中,选择逻辑单元220可以是实现无序指令发布模式的逻辑单元。该选择逻辑单元220可以从指令窗214中选择下一准备好的指令204来发布,这通常引起脱离指令204的线性顺序来对其进行选择。为了选择下一准备好的指令214,选择逻辑单元220可以被配置为:在指令窗214上搜索下一准备好的指令204,以及选择这些指令204来发布。选择逻辑单元220可以选择多条指令204以用于一次发布。例如,选择逻辑单元220可以选择下两条准备好的、未发布的指令204作为要发布的指令204。选择逻辑单元220然后通过MUX222将这些发布的指令204路由到执行单元224。选择逻辑单元220可以具有相对良好的性能,因为其避免了面对未准备好的指令204的停顿,但是选择逻辑单元220可能具有相对差的能量效率,这是由于从指令窗214进入大量的信号来实现在指令窗214上的搜索以及由于选择逻辑单元220的速度关键性。
处理器微架构可以包括与每个时钟周期所发布的指令204的数量相同数量的MUX222。继续上面的例子,如果每个时钟周期发布两条指令204,则处理器微架构可以包括MUX222。MUX 222中的每个MUX具有两根输入线,两根输入线中的各个输入线耦合到下一指令逻辑单元218和选择逻辑单元220中的不同的单元。每个MUX 222还可以具有控制线,该控制线指示会从下一指令逻辑单元218和选择逻辑单元220中的哪个单元接收输入。该控制线可以是提供对指令窗214中的下一指令204是否适合于有序执行进行指示的输入的同一根线。MUX 222然后将它们接收到的发布的指令204发送给执行单元224。
在各个实施例中,执行单元224可以包括ALU 226和一个或多个其它执行单元228,例如定点单元、加载/存储单元、以及浮点单元。每个执行单元224可以执行从MUX 222接收到的指令204中的一条或多条指令。AL U226可以是通用ALU,其能够执行具有整数操作数、浮点操作数等等的指令。执行单元224可以从操作数缓冲器或寄存器检索用于指令204的源操作数,并且将指令204的结果输出到操作数缓冲器(例如,输出到用于正在被执行的指令204的目标/消费者指令的操作数字段)或者输出到寄存器堆。
在另外的实施例中,处理器微架构包括电路,该电路对选择逻辑单元220进行时钟门控(clock gating),使得当时钟门230在时钟输入线232上接收到时钟信号并且在另一根输入线上接收到另一输入时,选择逻辑单元220仅看到时钟信号(即,被激活)。另一个输入可以指示指令窗214中的下一指令204是否适合于有序执行。由于仅当指令窗214中的下一指令204不适合于有序执行时才应激活选择逻辑单元220,因此另一根线可以通过反相器耦合到时钟门230。
图2A、图2B、图2C和图2D中的每幅图示出了到时钟门230的另一根输入线的另一输入的不同的源。虽然这些被示出为单独的、可选的处理器微架构,但是要理解的是,这些处理器微架构中的任何或所有处理器微架构可以组合到一个处理器微架构中,其中与多个源相关联的多根线通过或门(OR gate)耦合,其中,或门继而耦合到时钟门230。
在图2A中,另一根输入线234基于静态提示(例如,原子指令块块头中的元数据206)来指示指令204是否适合于有序执行。如上面提到的,该静态提示可能已由编译器116规定并且可以简单地是二进制值,不过该静态提示也可以是其它值类型。另一根输入线234可以利用‘1’来指示指令204适合于有序执行并且利用‘0’来指示指令204不适合于有序执行(或者反之亦然),其中‘1’或‘0’与元数据206中所包括的二进制值相对应。
在图2B中,另一根输入线236基于对计算设备的电量状态238和静态提示240(其基于元数据206)的逻辑与来指示指令204是否适合于有序执行。基于元数据206的静态提示240可以是上面针对图2A所描述的相同的静态提示。当正在使用计算设备102的电池时,电量状态238可以被设置为‘1’。因此,当静态提示240指示指令204适合于有序执行并且同时正在使用计算设备102的电池时,另一根输入线可以利用‘1’来指示指令204适合于有序执行。在替代的实施例中,可以使用其它逻辑,例如用于使得另一根输入线进行以下操作的逻辑:当静态提示240提示指令204适合于有序执行或者正在使用计算设备102的电池时,利用‘1’来指示指令204适合于有序执行。
在图2C中,另一根输入线242基于处理器微架构的表单244的内容来指示指令204是否适合于有序执行。可以动态地构建表单244,从而调整对于每个原子指令块202有序发布指令的次数的计数。表单244可以将原子指令块202的标识符(例如,原子指令块202的地址)与这些计数进行关联。每次原子指令块202的指令204有序发布,针对该原子指令块202的计数就递增。每次原子指令块202的指令204无序发布,针对该原子指令块202的计数就递减。可以对计数应用阈值,其中达到或超多阈值的计数指示指令窗214中的下一指令204适合于有序执行。
在图2A至图2C中,检查元数据206、电量状态238和表单244并且构建表单244的逻辑单元可以是处理器微架构的任何一个或多个逻辑单元。逻辑单元可以是专用于检查元数据206、电量状态238和表单244并且构建表单244的检测器逻辑单元,或者可以是还用于其它目的的另一个逻辑单元(例如,前端单元208)。
在图2D中,下一指令逻辑单元218可以确定指令窗214中的下一指令204是否适合于有序执行,并且可以相应地设置向另一根输入线246的输入。下一指令逻辑单元218可以被配置为:确定指令窗214中按照线性顺序的下一未发布指令204是否准备好发布,并且基于该确定来提供输出,其中该输出用作为另一根输入线246的输入。
示例性操作
图3是示出了用于至少部分地基于与多条指令相关联的特性,在处理器的第一指令发布模式和处理器的第二指令发布模式之间切换的说明性过程的流程图。在单独的框中示出了过程的操作并且参照这些框对其进行概述。这些过程被示出为逻辑流图,其中这些过程中的每个操作可以表示能够在硬件、软件或者其组合中实现的一组操作。在软件的上下文中,操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,其中当该计算机可执行指令由一个或多个处理器执行时,执行所记载的操作。通常,计算机可执行指令包括执行特定功能或实现特定的抽象数据类型的例程、程序、对象、组件、数据结构等等。描述操作的顺序并非旨在被解释为限制,并且可以按照任何顺序和/或并行地组合所描述的操作中的任意数量的操作以实现该过程。
如在框302处所示出的,处理器可以获取原子指令块。可以由处理器的指令获取单元来获取原子指令块。此外,原子指令块可以包括多条指令,例如规定目标指令(该目标指令会将指令结果作为操作数来消耗)的EDGE指令。原子指令块还可以包括具有由编译器规定的元数据的块头。该元数据可以包括静态提示,该静态提示指示指令是否适合于有序执行。
在框304处,处理器可以对原子指令块的指令进行解码,并且在框306处,处理器可以将原子指令块的指令中的经解码的一条或多条指令提供给处理器的指令窗。可以由处理器的指令分派单元来执行解码和提供。
在框308处,处理器可以确定与原子指令块的指令相关联的特性。可以由处理器的任何一个或多个单元来进行该确定。在310处,确定特性可以包括:确定原子指令块的元数据包括对指令是否适合于有序执行进行指示的静态提示。在312处,确定特性可以包括:执行对包括在块头中的静态提示和包括处理器的计算设备的电量状态的逻辑与。
在314处,处理器可以通过以下操作来构建表单:当原子指令块的指令有序发布时,递增与原子指令块的标识符相关联的计数,并且当指令块的指令无序发布时,递减与原子指令块的该标识符相关联的计数。计数可以基于阈值与指令发布模式相关联。在316处,确定特性可以包括:对表单进行查阅,并且确定计数或者与计数以及原子指令块的标识符相关联的指令发布模式。
在318处,处理器的逻辑单元中的一个逻辑单元可以确定指令窗中的下一指令是否准备好有序发布。逻辑单元可以是处理器的实现有序指令发布模式的逻辑单元。在320处,确定特性可以包括:基于确定下一指令准备好有序发布来设置特性。
在322处,处理器可以至少部分地基于所确定的特性,在第一指令发布模式和第二指令发布模式之间切换。第一指令发布模式和第二指令发布模式可以与不同的能耗特性相关联。此外,指令发布模式中的一个指令发布模式可以是无序指令发布模式,并且另一个指令发布模式可以是有序指令发布模式。可以由处理器的不同逻辑单元来实现有序指令发布模式和无序指令发布模式中的各个指令发布模式,并且处理器可以包括用于在这些逻辑单元之间切换的电路。在一些实施例中,电路可以包括耦合到逻辑单元中的一个逻辑单元(例如,实现无序指令发布模式的逻辑单元)的线,该线利用指示所确定的特性的输入来激活该逻辑单元。在324处,切换可以包括:对实现无序指令发布模式的逻辑单元进行时钟门控。在此类实施例中,耦合到实现无序指令发布模式的逻辑单元的线可以耦合到时钟门,其中时钟门具有用于接收处理器的时钟信号以及用于接收指示所确定的特性的输入的输入线。在一些实施例中,用于接收指示所确定的特性的输入的线可以通过反相器耦合到时钟门。
在326处,处理器中激活的所切换到的逻辑单元可以根据该逻辑单元所实现的指令发布模式,从指令窗发布指令。然后可以将指令提供给另一个单元,例如ALU或者加载和/或存储队列。
虽然以特定于结构特征和/或方法动作的语言来描述了主题,但是要理解的是,所附权利要求中所限定的主题不一定受限于所描述的特定特征或动作。相反,这些特定特征和动作被公开为实现权利要求的示例性形式。
Claims (4)
1.一种处理器实现的方法,包括:
接收包括多条指令的原子指令块;
至少部分地基于由编译器设置的所述原子指令块的元数据和包括用于执行所述多条指令中的至少一部分的处理器的计算设备的电量状态,确定所述原子指令块的特性;以及
至少部分地基于所述特性,在所述处理器的无序指令发布模式和所述处理器的有序指令发布模式之间切换,其中,所述无序指令发布模式和所述有序指令发布模式与不同的能耗特性相关联。
2.根据权利要求1所述的处理器实现的方法,其中,所述切换包括:由所述处理器的逻辑单元进行时钟门控,其中,所述逻辑单元用于以所述无序指令发布模式选择所述原子指令块的指令。
3.根据权利要求1所述的处理器实现的方法,
其中,所述元数据包括静态提示,所述静态提示指示所述多条指令是否适合于有序执行。
4.一种处理器,包括:
第一逻辑单元,用于以无序指令发布模式从指令窗中选择指令;
第二逻辑单元,用于以有序指令发布模式从所述指令窗中选择所述指令;以及
电路,用于在所述第一逻辑单元和所述第二逻辑单元之间切换,所述电路包括耦合到所述第一逻辑单元的线,所述线基于向所述线的输入来激活所述第一逻辑单元,所述输入至少部分地基于指示所述指令是否适合于有序执行的静态提示以及包括所述处理器的计算设备的电量状态。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/074,566 US9547496B2 (en) | 2013-11-07 | 2013-11-07 | Energy efficient multi-modal instruction issue |
US14/074,566 | 2013-11-07 | ||
PCT/US2014/063613 WO2015069583A1 (en) | 2013-11-07 | 2014-11-03 | Energy efficient multi-modal instruction issue |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105706050A CN105706050A (zh) | 2016-06-22 |
CN105706050B true CN105706050B (zh) | 2018-12-25 |
Family
ID=51897486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480060932.3A Active CN105706050B (zh) | 2013-11-07 | 2014-11-03 | 能量高效的多模式指令发布 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9547496B2 (zh) |
EP (1) | EP3066561B1 (zh) |
CN (1) | CN105706050B (zh) |
WO (1) | WO2015069583A1 (zh) |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10698859B2 (en) | 2009-09-18 | 2020-06-30 | The Board Of Regents Of The University Of Texas System | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
US9792252B2 (en) | 2013-05-31 | 2017-10-17 | Microsoft Technology Licensing, Llc | Incorporating a spatial array into one or more programmable processor cores |
JP6428488B2 (ja) * | 2015-05-28 | 2018-11-28 | 富士通株式会社 | 加減算器及び加減算器の制御方法 |
GB2539038B (en) * | 2015-06-05 | 2020-12-23 | Advanced Risc Mach Ltd | Processing pipeline with first and second processing modes having different performance or energy consumption characteristics |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
US9720693B2 (en) * | 2015-06-26 | 2017-08-01 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
US10346168B2 (en) * | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US9940136B2 (en) | 2015-06-26 | 2018-04-10 | Microsoft Technology Licensing, Llc | Reuse of decoded instructions |
US10175988B2 (en) * | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
US9946548B2 (en) * | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US11755484B2 (en) | 2015-06-26 | 2023-09-12 | Microsoft Technology Licensing, Llc | Instruction block allocation |
US10169044B2 (en) | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US11977891B2 (en) | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
US20170083341A1 (en) * | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Segmented instruction block |
US11126433B2 (en) * | 2015-09-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Block-based processor core composition register |
US10719321B2 (en) | 2015-09-19 | 2020-07-21 | Microsoft Technology Licensing, Llc | Prefetching instruction blocks |
US20170083318A1 (en) * | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Configuring modes of processor operation |
US10768936B2 (en) | 2015-09-19 | 2020-09-08 | Microsoft Technology Licensing, Llc | Block-based processor including topology and control registers to indicate resource sharing and size of logical processor |
US10776115B2 (en) | 2015-09-19 | 2020-09-15 | Microsoft Technology Licensing, Llc | Debug support for block-based processor |
US10180840B2 (en) | 2015-09-19 | 2019-01-15 | Microsoft Technology Licensing, Llc | Dynamic generation of null instructions |
US10936316B2 (en) | 2015-09-19 | 2021-03-02 | Microsoft Technology Licensing, Llc | Dense read encoding for dataflow ISA |
US10198263B2 (en) | 2015-09-19 | 2019-02-05 | Microsoft Technology Licensing, Llc | Write nullification |
US10452399B2 (en) | 2015-09-19 | 2019-10-22 | Microsoft Technology Licensing, Llc | Broadcast channel architectures for block-based processors |
WO2017048647A1 (en) * | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Implicit program order |
US10061584B2 (en) | 2015-09-19 | 2018-08-28 | Microsoft Technology Licensing, Llc | Store nullification in the target field |
US10678544B2 (en) | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US11016770B2 (en) | 2015-09-19 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distinct system registers for logical processors |
US10095519B2 (en) | 2015-09-19 | 2018-10-09 | Microsoft Technology Licensing, Llc | Instruction block address register |
US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US10031756B2 (en) | 2015-09-19 | 2018-07-24 | Microsoft Technology Licensing, Llc | Multi-nullification |
US10871967B2 (en) | 2015-09-19 | 2020-12-22 | Microsoft Technology Licensing, Llc | Register read/write ordering |
US9570159B1 (en) * | 2015-10-15 | 2017-02-14 | Intel Corporation | Methods and apparatus to preserve data of a solid state drive during a power loss event |
US10191748B2 (en) * | 2015-11-30 | 2019-01-29 | Intel IP Corporation | Instruction and logic for in-order handling in an out-of-order processor |
US11106467B2 (en) * | 2016-04-28 | 2021-08-31 | Microsoft Technology Licensing, Llc | Incremental scheduler for out-of-order block ISA processors |
US10552152B2 (en) * | 2016-05-27 | 2020-02-04 | Arm Limited | Method and apparatus for scheduling in a non-uniform compute device |
US10795815B2 (en) | 2016-05-27 | 2020-10-06 | Arm Limited | Method and apparatus for maintaining data coherence in a non-uniform compute device |
US10445094B2 (en) * | 2016-05-27 | 2019-10-15 | Arm Limited | Method and apparatus for reordering in a non-uniform compute device |
US20180032344A1 (en) * | 2016-07-31 | 2018-02-01 | Microsoft Technology Licensing, Llc | Out-of-order block-based processor |
US10324727B2 (en) * | 2016-08-17 | 2019-06-18 | Arm Limited | Memory dependence prediction |
US10496409B2 (en) * | 2016-11-22 | 2019-12-03 | The Arizona Board Of Regents | Method and system for managing control of instruction and process execution in a programmable computing system |
US11531552B2 (en) * | 2017-02-06 | 2022-12-20 | Microsoft Technology Licensing, Llc | Executing multiple programs simultaneously on a processor core |
US20180341488A1 (en) * | 2017-05-26 | 2018-11-29 | Microsoft Technology Licensing, Llc | Microprocessor instruction predispatch before block commit |
US11989555B2 (en) * | 2017-06-29 | 2024-05-21 | Intel Corporation | Instructions for remote atomic operations |
US10592246B2 (en) * | 2017-07-12 | 2020-03-17 | International Business Machines Corporation | Low latency execution of floating-point record form instructions |
US20190087184A1 (en) * | 2017-09-15 | 2019-03-21 | Qualcomm Incorporated | Select in-order instruction pick using an out of order instruction picker |
US10963379B2 (en) | 2018-01-30 | 2021-03-30 | Microsoft Technology Licensing, Llc | Coupling wide memory interface to wide write back paths |
US20190377577A1 (en) * | 2018-06-06 | 2019-12-12 | International Business Machines Corporation | Dynamic adjustment of issue-to-issue delay between dependent instructions |
US10824429B2 (en) | 2018-09-19 | 2020-11-03 | Microsoft Technology Licensing, Llc | Commit logic and precise exceptions in explicit dataflow graph execution architectures |
US10956162B2 (en) * | 2019-06-28 | 2021-03-23 | Microsoft Technology Licensing, Llc | Operand-based reach explicit dataflow processors, and related methods and computer-readable media |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101281460A (zh) * | 2007-04-04 | 2008-10-08 | 国际商业机器公司 | 处理多个线程的方法和系统 |
CN101414252A (zh) * | 2007-10-19 | 2009-04-22 | 株式会社瑞萨科技 | 数据处理装置 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6622218B2 (en) * | 2000-06-10 | 2003-09-16 | Hewlett-Packard Development Company, Lp. | Cache coherence protocol engine and method for efficient processing of interleaved memory transactions in a multiprocessor system |
JP3896087B2 (ja) * | 2003-01-28 | 2007-03-22 | 松下電器産業株式会社 | コンパイラ装置およびコンパイル方法 |
US20070186081A1 (en) * | 2006-02-06 | 2007-08-09 | Shailender Chaudhry | Supporting out-of-order issue in an execute-ahead processor |
JP4439491B2 (ja) | 2006-05-24 | 2010-03-24 | 株式会社ソニー・コンピュータエンタテインメント | マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法 |
US7464253B2 (en) | 2006-10-02 | 2008-12-09 | The Regents Of The University Of California | Tracking multiple dependent instructions with instruction queue pointer mapping table linked to a multiple wakeup table by a pointer |
US9311085B2 (en) | 2007-12-30 | 2016-04-12 | Intel Corporation | Compiler assisted low power and high performance load handling based on load types |
US8037366B2 (en) | 2009-03-24 | 2011-10-11 | International Business Machines Corporation | Issuing instructions in-order in an out-of-order processor using false dependencies |
US20110320766A1 (en) | 2010-06-29 | 2011-12-29 | Youfeng Wu | Apparatus, method, and system for improving power, performance efficiency by coupling a first core type with a second core type |
US9740494B2 (en) | 2011-04-29 | 2017-08-22 | Arizona Board Of Regents For And On Behalf Of Arizona State University | Low complexity out-of-order issue logic using static circuits |
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 |
US20120185714A1 (en) * | 2011-12-15 | 2012-07-19 | Jaewoong Chung | Method, apparatus, and system for energy efficiency and energy conservation including code recirculation techniques |
US20130297910A1 (en) * | 2012-05-03 | 2013-11-07 | Jared C. Smolens | Mitigation of thread hogs on a threaded processor using a general load/store timeout counter |
US9354884B2 (en) * | 2013-03-13 | 2016-05-31 | International Business Machines Corporation | Processor with hybrid pipeline capable of operating in out-of-order and in-order modes |
JP6115394B2 (ja) * | 2013-08-13 | 2017-04-19 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
-
2013
- 2013-11-07 US US14/074,566 patent/US9547496B2/en active Active
-
2014
- 2014-11-03 WO PCT/US2014/063613 patent/WO2015069583A1/en active Application Filing
- 2014-11-03 EP EP14796993.5A patent/EP3066561B1/en active Active
- 2014-11-03 CN CN201480060932.3A patent/CN105706050B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101281460A (zh) * | 2007-04-04 | 2008-10-08 | 国际商业机器公司 | 处理多个线程的方法和系统 |
CN101414252A (zh) * | 2007-10-19 | 2009-04-22 | 株式会社瑞萨科技 | 数据处理装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105706050A (zh) | 2016-06-22 |
US20150127928A1 (en) | 2015-05-07 |
US9547496B2 (en) | 2017-01-17 |
EP3066561A1 (en) | 2016-09-14 |
WO2015069583A1 (en) | 2015-05-14 |
EP3066561B1 (en) | 2019-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105706050B (zh) | 能量高效的多模式指令发布 | |
CN104951281B (zh) | 用于实现动态无序处理器流水线的方法和装置 | |
KR101559090B1 (ko) | 이종 코어를 위한 자동 커널 마이그레이션 | |
CN108027769A (zh) | 使用寄存器访问指令发起指令块执行 | |
KR101594090B1 (ko) | 공유 메모리에 대한 액세스들의 동기화를 완화하기 위한 프로세서들, 방법들 및 시스템들 | |
CN108027767A (zh) | 寄存器读取/写入排序 | |
CN107810479A (zh) | 用于处理器控制传送的目标位置的确定 | |
CN109074260A (zh) | 乱序的基于块的处理器和指令调度器 | |
US10198263B2 (en) | Write nullification | |
CN108027731A (zh) | 针对基于块的处理器的调试支持 | |
KR20180021812A (ko) | 연속하는 블록을 병렬 실행하는 블록 기반의 아키텍쳐 | |
CN108027772A (zh) | 用于逻辑处理器的不同的系统寄存器 | |
CN108027770A (zh) | 用于数据流isa的密集读取编码 | |
WO2017048662A1 (en) | Predicated read instructions | |
CN108027729A (zh) | 分段式指令块 | |
CN108027750A (zh) | 乱序提交 | |
CN110249302A (zh) | 在处理器核上同时执行多个程序 | |
CN107810477A (zh) | 解码的指令的重复使用 | |
WO2012155010A1 (en) | Automatic load balancing for heterogeneous cores | |
US10031756B2 (en) | Multi-nullification | |
CN109564508A (zh) | 处理器的事务寄存器文件 | |
CN108027768A (zh) | 指令块地址寄存器 | |
CN103513964A (zh) | 循环缓冲器打包 | |
CN108027733A (zh) | 在目标字段中存储无效 | |
EP3345088A1 (en) | Dynamic generation of null instructions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |