CN105190540B - 优化用于上下文相关指令的性能 - Google Patents
优化用于上下文相关指令的性能 Download PDFInfo
- Publication number
- CN105190540B CN105190540B CN201480013934.7A CN201480013934A CN105190540B CN 105190540 B CN105190540 B CN 105190540B CN 201480013934 A CN201480013934 A CN 201480013934A CN 105190540 B CN105190540 B CN 105190540B
- Authority
- CN
- China
- Prior art keywords
- instruction
- entry
- currency
- stored
- write
- 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.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 claims abstract description 22
- 238000004140 cleaning Methods 0.000 claims abstract description 5
- 239000013598 vector Substances 0.000 claims description 59
- 238000000034 method Methods 0.000 claims description 49
- 230000008569 process Effects 0.000 claims description 14
- 238000002203 pretreatment Methods 0.000 claims description 4
- 239000000872 buffer Substances 0.000 description 19
- 230000015654 memory Effects 0.000 description 14
- 230000001419 dependent effect Effects 0.000 description 12
- 230000008707 rearrangement Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 230000009471 action Effects 0.000 description 9
- 238000012795 verification Methods 0.000 description 6
- 230000006399 behavior Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000006249 magnetic particle Substances 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000002245 particle Substances 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/30098—Register arrangements
-
- 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/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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/3842—Speculative 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/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种处理器包含用于存储在寄存器字段的当前值的上下文内处理的指令的队列,其中对于一些实施例,所述指令为未定义的或定义的,这取决于处理时的所述寄存器字段。在写入指令(写入到所述寄存器字段的指令)执行之后,搜索所述队列以查找含有取决于所述被执行的写入指令的指令的任何条目。每一此条目存储当处理所述条目中的所述指令时所述寄存器字段的值。如果在所述队列中发现此条目且其所存储的所述寄存器字段的值并不与所述写入指令写入到所述寄存器字段的值匹配,那么所述处理器清洗管线,且以一状态重新开始,以便正确地执行所述指令。
Description
技术领域
本发明涉及微处理器,且更特定言之,当处理操作的行为取决于上下文的指令时,涉及优化微处理器的性能。
背景技术
用于一些现代微处理器架构的指令集包含其行为取决于上下文的指令(例如,浮点向量指令)。向量指令(或操作)在一或多个数据向量上操作以得到结果,其中所述结果还可为向量。向量指令还可称为SIMD(单一指令多个数据)操作。
具有管线化且乱序的执行架构的微处理器需要建构具有高性能的取决于上下文的指令。
发明内容
本发明的实施例涉及用于优化用于向量化浮点指令的性能的系统和方法,且更一般来说用于优化取决于至一或多个寄存器字段的写入指令的指令的性能,其中所述一或多个寄存器字段确定用于所述指令的上下文。
在一个实施例中,方法包含在通过寄存器字段的当前值确定的上下文内处理指令,所述指令取决于写入指令,所述写入指令将配置值写入至所述寄存器字段,在所述写入指令执行之前处理所述指令;在条目中以队列的形式存储所述指令;在所述条目中存储所述寄存器字段的所述当前值;在所述写入指令执行之后,搜索所述队列以查找所述条目;及在所述写入指令执行之后,比较存储在具有所述配置值的所述条目中的所述当前值。
在另一实施例中,处理器包含具有字段的寄存器、队列、管线及控制器。所述控制器经配置以使得所述管线在通过所述寄存器字段的当前值确定的上下文内处理指令,其中所述指令取决于所述写入指令,其中所述写入指令将配置值写入至所述寄存器字段;在条目中以所述队列的形式存储所述向量指令;在所述条目中存储所述寄存器字段的所述当前值;在所述管线执行所述写入指令之后搜索所述队列以查找所述条目;及在所述管线执行所述写入指令之后,比较存储在具有所述配置值的所述条目中的所述当前值。
在另一实施例中,方法包含用于在通过寄存器字段的当前值确定的上下文内处理指令的装置,所述指令取决于写入指令,所述写入指令将配置值写入至所述寄存器字段,在所述写入指令执行之前处理所述指令;用于在条目中以队列的形式存储所述指令的装置;用于在所述条目中存储所述寄存器字段的所述当前值的装置;用于在所述写入指令执行之后搜索所述队列以查找所述条目的装置;及用于在所述写入指令执行之后比较存储在具有所述配置值的所述条目中的所述当前值的装置。
在另一实施例中,非暂时性计算机可读媒体具有其上所存储的指令,当执行所述指令以执行方法时,所述指令使得控制器执行方法,该方法包括:在通过寄存器字段的当前值确定的上下文内处理指令,所述指令取决于写入指令,所述写入指令将配置值写入至所述寄存器字段,在所述写入指令执行之前处理所述指令;在条目中以队列的形式存储所述指令;在条目中存储所述寄存器字段的所述当前值;在所述写入指令执行之后搜索所述队列以查找所述条目;及在所述写入指令执行之后比较存储在具有所述配置值的所述条目中的所述当前值。
附图说明
呈现随附图式以辅助描述本发明的实施例,且提供所述图式仅用于说明实施例而不是对实施例加以限制。
图1为根据实施例的处理器的抽象。
图2A说明根据实施例的校验及修复上下文的方法。
图2B说明根据另一个实施例的校验及修复上下文的方法。
图3说明实施例可应用于的通信系统。
具体实施方式
在针对于本发明的特定实施例的以下描述和相关图式中揭示本发明的方面。可在不脱离本发明的范围的情况下构想出替代实施例。另外,将不详细描述或将省略本发明的众所周知的元件以免混淆本发明的相关细节。
本文中使用词“示例性”意指“充当实例、例子或说明”。本文中描述为“示例性”的任何实施例未必应被解释为比其它实施例优选或有利。同样,术语“本发明的实施例”并不需要本发明的所有实施例包含所论述的特征、优点或操作模式。
本文中所使用的术语仅仅是为了描述特定实施例的目的,且并不希望限制本发明的实施例。如本文中所使用,除非上下文另外清晰地指示,否则单数形式“一”和“所述”也意图包括复数形式。将进一步理解,术语“包括”和/或“包含”在于本文中使用时指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但并不排除一或多个其它特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。
另外,依据待由(例如)计算装置的元件执行的动作的顺序来描述许多实施例。将认识到,可由特定电路(例如,专用集成电路ASIC)、由正由一个或一个以上处理器执行的程序指令或由两者的组合来执行本文中所述的各种动作。此外,可认为本文中所描述的这些动作序列完全体现于任何形式的计算机可读存储媒体内,所述计算机可读存储媒体中已存储一组对应的计算机指令,所述指令在被执行时将致使相关联的处理器执行本文中所描述的功能性。因此,本发明的各种方面可以许多不同形式来体现,所有所述形式均预期在所主张的标的物的范围内。另外,对于本文中所描述的实施例中的每一者,任何这些实施例的对应形式可在本文中被描述为(例如)“经配置以(执行所描述动作)的逻辑”。
为了在描述实施例中促进,参考初次作出至图1中说明的处理器100的抽象,其中为简单起见,在所示处理器中并非所有功能单元都常规地发现。实施例可应用于的处理器100可具有超标量、乱序架构,尽管此非必须。但是,假定图1中说明的处理器100能够推测地执行或处理指令,及恰当地恢复(如果发现推测性执行或处理正确)。举例来说,许多处理器能通过预测分支指令的目标地址而推测地执行分支指令,且恰当地恢复及执行校正指令流(如果随后发现预测的目标地址不正确)。
图1中所示的是管线102,其包括指令提取阶段104、指令解码阶段106、寄存器重命名阶段108及指令队列与分派阶段110。实际上,在管线中可存在较多阶段,例如,在指令提交(收回)时用于将结果写入至存储器位置或架构寄存器的各种阶段,但为简单起见,管线102中仅说明四个阶段。控制器112在管线102中控制动作。(在此,术语提交及收回用作同义词,也就是说,指令提交还可被采用以意指指令收回。)
从存储器存储装置检索指令及数据且将指令及数据写入至存储器存储装置包括各种高速缓冲存储器及可存储器分层结构的一部分的芯片外存储器。标记为114的功能区块提取此存储器分层结构,且为了易于论述一或多个存储器功能单元,可仅仅被称作存储器分层结构114。构成存储器分层结构114的存储器中之一些可通过控制器112或其它功能单元集成的,且可被称为非暂时性计算机可读存储媒体。对于一些实施例,存储器分层结构114可包含所存储的指令,控制器112或其它功能单元可通过所述指令进行本文中所述的各种动作。
图1中说明的其它功能单元为物理寄存器组116、一组执行单元118及重新排序缓冲器120。重新排序缓冲器120便于乱序执行,且对于一些实施例,可实施为循环缓冲器,其中指令在进入指令队列及分派阶段110时进入缓冲器,且指令在提交(收回)时推出重新排序缓冲器120。指令以指令进入重新排序缓冲器120的次序提交。
标记为推测性指令信息队列(SIIQ)122的另一缓冲器用于存储指令,所述指令在推测性预测的上下文内在管线102中,连同各种寄存器值及可能的状态信息较早处理,如果随后发现推测处理的飞行中指令并非校正指令流的部分,那么所述状态信息可恢复处理器100的状态,并且因此不应提交。此缓冲器被称作推测性指令信息队列,且随后更详细论述此缓冲器。
向量处理在许多信号处理应用程序(例如话音或图像处理)中为至关重要的能力。向量处理指令有时被称作SIMD(单一指令多个数据)指令,其中单一指令在多个数据上操作。向量可视为在连续元件之间的具有恒定步幅的存储器位置的范围。另一观点是,向量可视为在连续元件之间的具有恒定步幅的寄存器位置的范围。举例来说,对于物理寄存器,向量可由步幅为二的寄存器位置构成。
在加载存储架构处理器中,在根据向量指令在上操作之前,向量的元件与加载指令载入到寄存器中。举例来说,向量加法指令可将第一组源寄存器中的值增加至第二组源寄存器中的值,且将结果写入至一组目标寄存器。作为一具体实例,第一组源寄存器中的值可增加到第二组源寄存器中的值,结果写入至一组目标寄存器中,其中对于每一,寄存器的值为寄存器及寄存器中的值的总和。在此具体实例中,向量的长度为四,且步幅为一。
在向量处理中利用的源寄存器及目标寄存器组可看作通过功能单元116包含的物理寄存器,或看作在图1中未明确展示的其它物理寄存器组。
由向量指令消耗的向量长度、步幅及各种其它参数存储在一或多个控制寄存器中。此类控制寄存器的实例在图1中标记为124,且被称作FPSCR(浮点状态及控制寄存器)124。将参数写入(复制)到FPSCR 124的指令被插入到依靠所需参数的向量指令之前(以编程次序)的代码块中。因而存在这些向量指令对到FPSCR 124的写入指令的相依性。
特定来说,用于具向量能力的处理器的一些指令集包含写入到FPSCR 124中的一或多个字段的写入指令,所述一或多个字段基于这些字段中的值配置向量指令的行为。步幅或长度字段为可包含在FPSCR124中的示范性字段,但还可包含其它字段。这些一或多个字段在图1中标记为125。为了易于论述,且不损失普遍性的前提下,我们将125称作字段,但其可能横跨一个以上位及FPSCR 124的一个以上字段。
举例来说,写入到字段125的非零值可定义其中向量指令执行为未定义的指令的上下文,从而导致处理器100在尝试向量指令执行的情况下执行中断处理程序。对于一些实施例,如果字段125被设定成非零值,那么仅向量指令集的恰当子集变为未定义的。也就是说,对于一些实施例,可存在忽略FPSCR 124中的字段125的一些向量指令。
为了易于论述,写入指令将指代写入到FPSCR 124中的字段125的指令,且字段125被称作配置字段或配置值。
可能发生的是,当写入指令及相依指令(例如向量指令)都在管线102中时,在写入指令可写入到配置字段125之前,用于向量指令的操作数为可用的。举例来说,写入指令待写入到配置字段125的值可为相依向量指令准备好执行时尚未完成执行的另一指令的结果。为避免相依性风险,一些现有技术的处理器可实施上下文同步,借此直到写入指令提交才执行在写入指令之后(以编程次序)的所有向量指令。一些其它现有技术的处理器可在解码向量指令时引入保持,直到所有先前(以编程次序)的写入指令已提交为止。然而,此类方法可使性能降级且产生管线气泡。
为改进性能,实施例执行推测性处理及相关指令的执行。在此实施例中,相关指令为向量指令,但所属领域的技术人员将理解,其它类型的相关指令是在本发明的范畴内的,包含但不限于具有可配置权限的指令或安全相关性或访问特殊架构寄存器的指令。更特定而言,实施例开始在通过FPSCR 124的当前值确定的上下文内处理向量指令。如果写入指令尚未提交且在飞行中,但后续的(在程序次序中)相关向量指令可用以开始处理,那么随后基于FPSCR 124在其处理时间中的现状处理相关向量指令。
当处理取决于写入指令的向量指令时,可能发生的是,在处理向量指令时FPSCR124的本上下文(也就是配置字段125的值)不是正确的上下文。举例来说,可能的是,本上下文是将向量指令处理为未定义的,但如果当前上下文是正确的,那么实际上应将向量指令处理为定义的。或者,可能发生的是,FPSCR 124的本上下文在处理向量指令时是向量指令为定义的,且当在正确的上下文中处理时,向量指令仍应为未定义的。
因此,如果确定向量指令是在不正确的上下文(此处的上下文是指管线102开始处理向量指令时配置字段125的值)中处理,那么随后实施例应执行恢复步骤,使得最终将在正确的上下文中处理及执行向量指令。
为了促进恢复处理,实施例借助推测性指令信息队列122。队列可具有与分支指令队列(BIQ)相同的结构,且对于一些实施例,推测性指令信息队列122可为BIQ其自身,但其中除分支指令之外,向量指令也排队。对于一些实施例,还可包含状态信息以有助于在恢复处理期间将处理器100放入正确状态中,所述状态信息包含但不限于指令Vopp 127的地址及需要在所需提取地址处恢复执行的任何其它非上下文相关的信息。尽管可通过将功能单元122称作BIQ而描述实施例,但是使用不同术语以便不将结构限于BIQ是有用的,且因此,队列被称作推测性指令信息队列。
在图1中说明的实例实施例中,在重新排序缓冲器120中的标记为126的指令VMSR指示指令以将值写入至FPSCR 124中的配置字段125。(VMSR术语来自ARM指令集,其中其可表示用于从系统寄存器到FPSCR转移内容的指令。此术语仅为方便而借用,且实施例可应用于许多不同架构及指令集中。)标记为127的重新排序缓冲器120中的随后指令Vopp指示取决于指令VMSR 126的向量指令。标记为128的箭头表示此相关性。
当管线102开始处理指令Vopp 127时,其被放入推测性指令信息队列122中。如标记为132的条目所示,标记为130的箭头指示放置到推测性指令信息队列122中。条目132包括两个零件,标记为132a的零件包含向量指令及上下文字段133,且标记为132b的零件包含状态信息。一些实施例可不包含状态信息。对于在条目中存储状态信息的一些实施例,例如条目132,当确定向量指令是在不正确上下文中处理时,状态信息用于在恢复处理期间将处理器100恢复到正确状态。条目132中的上下文字段133指示上下文(用于条目132的相关联的指令Vopp 127于其中处理)。当与条目相关联的向量指令提交或被清洗时,随后从推测性指令信息队列122移除条目。
在写入指令(“写入”是指写入至FPSCR 124)在飞行中的某个时间点,作出关于是否在不正确的上下文中处理任何相关向量指令的确定。举例来说,如果在指令VMSR 126与指令Vopp 127之间不存在介入写入指令,那么随后指令Vopp 127可取决于指令VMSR 126,且应当谨慎以确保在指令Vopp 127收回之前其在正确的上下文中被处理。
对于一些实施例,在写入指令提交时作出用于正确的上下文的确定。继续图1中说明的实例,当指令VMSR 126处于重新排序缓冲器120的顶端(或顶部)时且准备好提交时,将指令VMSR 126写入至配置字段125的值与用于具有相关飞行中向量指令的推测性指令信息队列122中的每一条目的上下文字段进行比较。举例来说,将上下文字段133的值与用于从指令VMSR 126所得的配置字段125的值进行比较以确定条目132中的指令Vopp 127是否在正确的上下文中被处理。如果不存在介入写入指令,那么推测性指令信息队列122中的向量指令取决于指令VMSR 126。
对于一些实施例,在指令VMSR 126准备好提交但发现已在不正确的上下文中处理推测性指令信息队列122中的相关向量指令的情况下,收回指令VMSR 126(暗示在指令VMSR126之前的所有指令也已收回),所有指令从管线及重新排序缓冲器120清洗,且程序计数器134立即将指令的地址随后以程序次序装载至指令VMSR 126。在此情况下,状态信息无需存储在推测性指令信息队列122中,因为当指令VMSR 126收回且程序控制开始于下一按次序指令时,所有架构寄存器都处在正确状态。
在搜索推测性指令信息队列122以查找已在不正确的上下文中被处理的相关向量指令之前,一些实施例可不等待指令VMSR 126到达重新排序缓冲器120的顶端。举例来说,对于一些实施例,当指令VMSR 126执行时(此处,指令VMSR 126的执行意指写入至FPSCR124的值为已知的),搜索推测性指令信息队列122以查找不正确地处理的相关向量指令(即使指令VMSR 126未准备好提交)。
在另一实施例中,当SIIQ 122中的指令(例如指令Vopp 127)准备好收回((例如,或准备好提交或采取未定义的中断方式)时,指令Vopp 127将上下文字段133与配置字段125中的架构上下文相比较。如果上下文字段133与配置字段125匹配,那么指令Vopp 127以常规方式收回。然而,如果上下文字段133与配置字段125并不匹配,那么执行恢复步骤。举例来说,管线及重新排序缓冲器清洗相关指令Vopp 127及跟随相关指令的所有指令,且设定程序计数器134以提取相关指令Vopp 127,且状态信息132b用于恢复正确的状态。
在一些实施方案中,可不必等待直至指令Vopp 127准备好收回以执行所述校验。如果不存在对准备好收回的指令Vopp 127之前的配置字段125的未决的可能更新(无论通过例如指令VMSR 126的指令或以其它方式),那么指令Vopp 127可将配置字段125与上下文字段133进行比较,且视需要无需等待直到指令Vopp 127准备好收回再执行恢复步骤。
推测性指令信息队列122还可用于存储分支指令及相关联的状态信息,使得处理器100可从被不正确地执行的分支指令中恢复。这是图1中包含条目136的原因。(条目136可包括除状态信息以外的其它信息,但为了易于论述,未详细地描述条目136,因为在其在本领域中众所周知。)在此情况下,如先前所论述,推测性指令信息队列122包含BIQ的功能性。然而,实施例可不包含推测性指令信息队列122中的BIQ的功能性,但可使用另一物理缓冲器以用于与用于实施推测性指令信息队列122的物理缓冲器分离的BIQ。
图2A说明通过上文所论述的一或多个实施例使用的方法。如框202所指示,上下文相关指令(例如向量指令)被处理,且被放入推测性指令信息队列122中。尽管先前的(在程序次序中)写入指令尚未被执行,但上下文相关指令被处理,其中写入指令为将值写入至配置字段125的指令。在处理指令时在通过配置字段125的值确定的上下文内处理指令。
指令作为条目的部分存储在推测性指令信息队列122中,其中所述条目还包括具有等于当处理指令时配置字段125的值的值的上下文字段。
在执行写入到配置字段125的写入指令(框204)之后,搜索推测性指令信息队列122以查找具有相依于所述写入指令的指令的条目(框206)。可在写入指令处于重新排序缓冲器120的顶部之前执行此搜索,或可在写入指令到达重新排序缓冲器120的顶部且提交时执行此搜索。
如图2A中的确定208及椭圆形210中所指示,如果未发现此条目,那么不采取特别行动,且管线按常规方式进行。然而,如果发现包含相依于写入指令的指令的条目,那么在确定211中将上下文字段133的值与同写入指令相关联的配置字段值进行比较以确定是否在正确的上下文中处理了指令。如果在正确的上下文中处理了指令,那么处理流程返回到椭圆形210以指示不采取特别行动。
然而,如框212中所指示,如果指令在不正确的上下文中处理,那么采取各种行动以使处理器100从在不正确的上下文中处理指令恰当地恢复。在框212中,从管线102及重新排序缓冲器120清洗所有飞行中指令,且设定程序计数器134,使得紧随着(以编程次序)写入指令的指令被提取。
图2B说明由上文所论述的实施例中的另一者使用的方法。如框202中所指示,上下文相依指令(例如向量指令)被处理,且被放入推测性指令信息队列122中。处理上下文相依指令,但先前的(以编程次序)写入指令尚未被执行,其中写入指令为将值写入到配置字段125的指令。在通过处理指令时配置字段125的值确定的上下文内处理指令。
指令以条目的部分的形式存储在推测性指令信息队列122中,当处理指令时,其中条目也包括具有等于配置字段125之值的值的上下文字段。
可以两种不同方式执行用于是否执行上下文相关的指令的上下文的校验。在框224中的一个实施例中,当上下文相关的指令准备好收回时,方法继续框211以执行校验。在另一实施例中,在框226中,上下文相关的指令校验以确定是否存在对配置值125的任何可能的未决更新(无论通过例如指令VMSR 126的指令或以其它方式)。如果存在可能的未决更新,那么方法返回到框226以等待。如果不存在可能的未决更新,那么方法继续框211以执行校验。
在框211中,将上下文字段133的值与与写入指令相关联的配置字段进行比较以确定是否在正确的上下文中处理指令。如果在正确的上下文中处理指令,那么随后处理流程返回到椭圆形210以指示不采取特别行动。
然而,如框214中所指示,如果指令在不正确的上下文中处理,那么随后采取各种行动以用于处理器100以从处理不正确的上下文中的指令中恰当地恢复。在框214中,指令及紧随着(以程序次序)指令的所有飞行中指令从管线102及重新排序缓冲器120中清洗,且设定程序计数器134使得指令为有待提取的下一指令,且存储在具有指令的条目中的状态信息用于将处理器100的状态恢复到正确状态以用于处理指令。
在一些实施方案中,控制器112可通过执行存储在非暂时性计算机可读媒体(例如存储器分层结构114)中的固件或指令进行图2A或2B的方法。
图3说明实施例可应用于的无线通信系统。图3说明包括基站304A、304B及304C的无线通信网络302。图3展示标记为306的通信设备,其可为移动蜂窝式通信设备(例如所谓的智能手机、平板电脑)或适合于蜂窝电话网络的一些其它种类的通信设备(例如计算机或计算机系统)。通信设备306无需是移动的。在图3的特定实例中,通信设备306位于与基站304C相关联的单元内。箭头308及箭头310以图表示上行链路信道及下行链路信道,对应地,通信设备306通过所述上行链路信道及下行链路信道与基站304C通信。
举例来说,实施例可用于数据处理系统,所述数据处理系统与通信设备306相关联,或与基站304C相关联,或与二者都相关联。图3仅说明多个应用程序中的一个,其中可使用本文所述的实施例。
实施例已在FPSCR 124中的一或多个字段上的向量指令及其相关性的上下文中描述。然而,实施例不限于向量指令,且可应用于取决于用于其上下文的寄存器中的一或多个字段的其它类型的指令。举例来说,实施例可应用于处理器架构中,其中在资源的产生与其相关消耗,对于相关性产生状态相对稀少的更新及对相关性消耗指令的高性能需求之间的管线中可存在大的跨段。因而,所述实施例可看作预测方案的类型,其中预测定义相关指令的上下文的状态以不在通过相关指令消耗状态的时间与相关指令提交的时间之间变化。状态的改变随后产生误预测。这与分支预测技术类似,但不同于分支预测技术,其不同之处在于相关性并不包括条件性或目标,且包括非分支指令。
所属领域的技术人员将了解,可使用多种不同技术及技艺中的任一者来表示信息及信号。举例来说,可由电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在以上描述中始终参考的数据、指令、命令、信息、信号、位、符号及码片。
另外,所属领域的技术人员将了解,结合本文所揭示的实施例而描述的各种说明性逻辑块、模块、电路及算法步骤可实施为电子硬件、计算机软件或两者的组合。为清楚地说明硬件与软件的此可互换性,上文已大体上关于其功能性而描述了各种说明性组件、块、模块、电路和步骤。此功能性是实施为硬件还是软件取决于特定应用和施加于整个系统上的设计约束。所属领域的技术人员可针对每一特定应用以不同方式来实施所描述功能性,但此类实施方案决策不应被解释为会导致脱离本发明的范围。
结合本文所揭示的实施例而描述的方法、序列和/或算法可直接以硬件、以由处理器执行的软件模块或以两者的组合来体现。软件模块可驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可装卸磁盘、CD-ROM,或此项技术中已知的任何其它形式的存储媒体中。示范性存储媒体耦接到处理器,处理器可从存储媒体读取信息,且将信息写入至存储媒体。在替代方案中,存储媒体与处理器成一整体。
因此,本发明的一实施例可包含体现上述包含的计算机可读媒体。因此,本发明不限于所说明的实例,且用于执行本文中所描述的功能性的任何装置包含在本发明的实施例中。
虽然前面的揭示内容展示本发明的说明性实施例,但应注意,在不脱离如所附权利要求书界定的本发明的范围的情况下,可在其中做出各种改变和修改。根据本文所述之本发明的实施例的方法权利要求项的功能、步骤及/或行动无需以任何特定次序执行。此外,尽管本发明的元件可以单数形式描述或要求,但是涵盖多个元件,除非明确表明限于单数。
Claims (35)
1.一种用于处理指令的方法,其包括:
处理具有寄存器字段的配置值的行为的指令,所述指令相依于在编程次序上先于所述指令的写入指令,所述写入指令将所述配置值写入到所述寄存器字段,在所述写入指令执行之前处理的所述指令在基于处理所述指令时的所述寄存器字段的当前值的上下文内执行;
在队列中的条目中存储所述指令;
在所述条目中存储所述寄存器字段的所述当前值;
在所述写入指令执行之后,搜索所述队列以查找所述条目;及
在所述写入指令执行之后,将存储在所述条目中的所述当前值与所述配置值进行比较。
2.根据权利要求1所述的方法,其进一步包括:
假如存储在所述条目中的所述当前值并不与所述配置值匹配,那么清洗所有飞行中指令的管线,且将程序计数器设定到以编程次序在所述写入指令之后的下一指令的地址。
3.根据权利要求2所述的方法,处理所述指令进一步包括:
如果所述当前值为第一值,那么将所述指令处理为定义的;及
如果所述当前值不是所述第一值,那么将所述指令处理为未定义的。
4.根据权利要求1所述的方法,其进一步包括:
假如存储在所述条目中的所述当前值并不与所述配置值匹配,那么清洗所述指令及以编程次序跟随所述指令的所有飞行中指令的管线,且将程序计数器设定到所述指令的地址。
5.根据权利要求4所述的方法,其进一步包括:
在所述条目中存储处理器的状态信息,所述状态信息是当处理所述指令时的状态信息;及
假如存储在所述条目中的所述当前值并不与所述配置值匹配,那么从所述条目检索所述状态信息,且将所述处理器恢复到所述状态信息所指示的状态。
6.根据权利要求1所述的方法,其中所述指令为向量指令。
7.根据权利要求1所述的方法,其中所述寄存器字段包括一个或多个字段。
8.根据权利要求1所述的方法,处理所述指令进一步包括:
如果所述当前值为第一值,那么将所述指令处理为定义的;及
如果所述当前值不是所述第一值,那么将所述指令处理为未定义的。
9.根据权利要求1所述的方法,其进一步包括:
当所述指令提交时,从所述队列移除所述条目。
10.一种处理器,其包括:
寄存器,其具有寄存器字段;
队列;
管线;
控制器,其经配置以:
使得所述管线在通过处理一指令时所述寄存器字段的当前值确定的上下文内处理所述指令,所述指令具有基于所述寄存器字段的配置值的行为,所述指令在所述管线执行在编程次序上先于所述指令的写入指令之前被处理,所述指令相依于所述写入指令,所述写入指令将所述配置值写入到所述寄存器字段;
在所述队列中的条目中存储所述指令;
在所述条目中存储所述寄存器字段的所述当前值;
在所述管线执行所述写入指令之后,搜索所述队列以查找所述条目;及
在所述管线执行所述写入指令之后,将存储在所述条目中的所述当前值与所述配置值进行比较。
11.根据权利要求10所述的处理器,其进一步包括:
程序计数器;
所述控制器进一步经配置以在存储在所述条目中的所述当前值并不与所述配置值匹配的情况下:
清洗所有飞行中指令的所述管线,及
将所述程序计数器设定到以编程次序在所述写入指令之后的下一指令的地址。
12.根据权利要求11所述的处理器,所述控制器进一步经配置以使得所述管线:
在所述当前值为第一值的情况下,将所述指令执行为定义的;及
在所述当前值不是所述第一值的情况下,将所述指令执行为未定义的。
13.根据权利要求10所述的处理器,其进一步包括程序计数器,所述控制器经配置以在存储在所述条目中的所述当前值并不与所述配置值匹配的情况下:
清洗所述指令及以编程次序跟随所述指令的所有飞行中指令的所述管线;及
将所述程序计数器设定到所述指令的地址。
14.根据权利要求13所述的处理器,所述控制器经配置以:
在所述条目中存储所述处理器的状态信息,所述状态信息是当所述管线处理所述指令时的状态信息;
假如存储在所述条目中的所述当前值并不与所述配置值匹配,那么从所述条目检索所述状态信息,且将所述处理器恢复到所述状态信息所指示的状态。
15.根据权利要求13所述的处理器,所述控制器经配置以使得所述管线:
如果所述当前值为第一值,那么将所述指令执行为定义的;及
如果所述当前值不是所述第一值,那么将所述指令执行为未定义的。
16.根据权利要求10所述的处理器,所述控制器进一步经配置以使得所述管线:
如果所述当前值为第一值,那么将所述指令执行为定义的;及
如果所述当前值不是所述第一值,那么将所述指令执行为未定义的。
17.根据权利要求10所述的处理器,所述控制器经配置以当所述管线提交所述指令时从所述队列移除所述条目。
18.根据权利要求10所述的处理器,其中所述指令为向量指令。
19.根据权利要求10所述的处理器,其中所述寄存器字段包括一或多个字段。
20.一种处理器,其包括:
用于在通过执行一指令时寄存器字段的当前值确定的上下文内处理所述指令的装置,所述指令具有基于所述寄存器字段的配置值的行为,所述指令相依于在编程次序上先于所述指令的写入指令,所述写入指令将所述配置值写入到所述寄存器字段,在所述写入指令执行之前处理所述指令;
用于在队列中的条目中存储所述指令的装置;
用于在所述条目中存储所述寄存器字段的所述当前值的装置;
用于在所述写入指令执行之后搜索所述队列以查找所述条目的装置;及
用于在所述写入指令执行之后将存储在所述条目中的所述当前值与所述配置值进行比较的装置。
21.根据权利要求20所述的处理器,其进一步包括:
假如存储在所述条目中的所述当前值并不与所述配置值匹配,用于清洗所有飞行中指令的管线的装置,及用于将程序计数器设定到以编程次序在所述写入指令之后的下一指令的地址的装置。
22.根据权利要求20所述的处理器,其进一步包括:
假如存储在所述条目中的所述当前值并不与所述配置值匹配,用于清洗所述指令及以编程次序跟随所述指令的所有飞行中指令的管线的装置,以及用于将程序计数器设定到所述指令的地址的装置。
23.根据权利要求22所述的处理器,其进一步包括:
用于在所述条目中存储所述处理器的状态信息的装置,所述状态信息是当处理所述指令时的状态信息;及
假如存储在所述条目中的所述当前值并不与所述配置值匹配,用于从所述条目检索所述状态信息的装置,及用于将所述处理器恢复到所述状态信息所指示的状态的装置。
24.根据权利要求20所述的处理器,所述用于处理所述指令的装置进一步包括:
用于在所述当前值为第一值的情况下将所述指令处理为定义的装置;及
用于在所述当前值不是所述第一值的情况下将所述指令处理为未定义的装置。
25.根据权利要求20所述的处理器,其进一步包括:
用于当所述指令提交时从所述队列移除所述条目的装置。
26.根据权利要求20所述的处理器,所述寄存器字段包括一或多个字段。
27.根据权利要求20所述的处理器,其中所述指令为向量指令。
28.一种非暂时性计算机可读媒体,其具有存储于其上的指令以使得控制器执行一种方法,所述方法包括:
在通过处理指令时寄存器字段的当前值确定的上下文内处理所述指令,所述指令具有所述寄存器字段的配置值的行为,所述指令相依于在编程次序上优于所述指令的写入指令,所述写入指令将所述配置值写入到所述寄存器字段,在所述写入指令执行之前处理所述指令;
在队列中的条目中存储所述指令;
在所述条目中存储所述寄存器字段的所述当前值;
在所述写入指令执行之后,搜索所述队列以查找所述条目;及
在所述写入指令执行之后将存储在所述条目中的所述当前值与所述配置值进行比较。
29.根据权利要求28所述的非暂时性计算机可读媒体,所述方法进一步包括:
假如存储在所述条目中的所述当前值并不与所述配置值匹配,那么清洗所有飞行中指令的管线,且将程序计数器设定到以编程次序在所述写入指令之后的下一指令的地址。
30.根据权利要求28所述的非暂时性计算机可读媒体,所述方法进一步包括:
假如存储在所述条目中的所述当前值并不与所述配置值匹配,那么清洗所述指令及以编程次序跟随所述指令的所有飞行中指令的管线,且将程序计数器设定到所述指令的地址。
31.根据权利要求30所述的非暂时性计算机可读媒体,所述方法进一步包括:
在所述条目中存储处理器的状态信息,所述状态信息是当处理所述指令时的状态信息;及
假如存储在所述条目中的所述当前值并不与所述配置值匹配,那么从所述条目检索所述状态信息,且将所述处理器恢复到所述状态信息所指示的状态。
32.根据权利要求28所述的非暂时性计算机可读媒体,处理所述指令进一步包括:
如果所述当前值为第一值,那么将所述指令处理为定义的;及
如果所述当前值不是所述第一值,那么将所述指令处理为未定义的。
33.根据权利要求28所述的非暂时性计算机可读媒体,所述方法进一步包括:
当所述指令提交时,从所述队列移除所述条目。
34.根据权利要求28所述的非暂时性计算机可读媒体,所述寄存器字段包括一或多个字段。
35.根据权利要求28所述的非暂时性计算机可读媒体,其中所述指令为向量指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/841,576 | 2013-03-15 | ||
US13/841,576 US9823929B2 (en) | 2013-03-15 | 2013-03-15 | Optimizing performance for context-dependent instructions |
PCT/US2014/029876 WO2014145160A1 (en) | 2013-03-15 | 2014-03-14 | Optimizing performance for context-dependent instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105190540A CN105190540A (zh) | 2015-12-23 |
CN105190540B true CN105190540B (zh) | 2018-04-03 |
Family
ID=50629006
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480013934.7A Expired - Fee Related CN105190540B (zh) | 2013-03-15 | 2014-03-14 | 优化用于上下文相关指令的性能 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9823929B2 (zh) |
EP (1) | EP2972790A1 (zh) |
JP (1) | JP2016512908A (zh) |
KR (1) | KR20150132242A (zh) |
CN (1) | CN105190540B (zh) |
WO (1) | WO2014145160A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9298456B2 (en) * | 2012-08-21 | 2016-03-29 | Apple Inc. | Mechanism for performing speculative predicated instructions |
US9817663B2 (en) | 2013-03-19 | 2017-11-14 | Apple Inc. | Enhanced Macroscalar predicate operations |
US9348589B2 (en) | 2013-03-19 | 2016-05-24 | Apple Inc. | Enhanced predicate registers having predicates corresponding to element widths |
US10684859B2 (en) * | 2016-09-19 | 2020-06-16 | Qualcomm Incorporated | Providing memory dependence prediction in block-atomic dataflow architectures |
US10592246B2 (en) * | 2017-07-12 | 2020-03-17 | International Business Machines Corporation | Low latency execution of floating-point record form instructions |
US10360036B2 (en) | 2017-07-12 | 2019-07-23 | International Business Machines Corporation | Cracked execution of move-to-FPSCR instructions |
US11068612B2 (en) | 2018-08-01 | 2021-07-20 | International Business Machines Corporation | Microarchitectural techniques to mitigate cache-based data security vulnerabilities |
US12073251B2 (en) * | 2020-12-29 | 2024-08-27 | Advanced Micro Devices, Inc. | Offloading computations from a processor to remote execution logic |
US12050531B2 (en) | 2022-09-26 | 2024-07-30 | Advanced Micro Devices, Inc. | Data compression and decompression for processing in memory |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101776989A (zh) * | 2009-02-11 | 2010-07-14 | 威盛电子股份有限公司 | 乱序执行微处理器及提升效能的方法、执行方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0649086B1 (en) | 1993-10-18 | 2000-07-19 | National Semiconductor Corporation | Microprocessor with speculative execution |
US5742840A (en) * | 1995-08-16 | 1998-04-21 | Microunity Systems Engineering, Inc. | General purpose, multiple precision parallel operation, programmable media processor |
US5854921A (en) | 1995-08-31 | 1998-12-29 | Advanced Micro Devices, Inc. | Stride-based data address prediction structure |
US6405305B1 (en) | 1999-09-10 | 2002-06-11 | Advanced Micro Devices, Inc. | Rapid execution of floating point load control word instructions |
US6983358B2 (en) * | 2001-10-23 | 2006-01-03 | Ip-First, Llc | Method and apparatus for maintaining status coherency between queue-separated functional units |
US7093111B2 (en) | 2003-07-31 | 2006-08-15 | International Business Machines Corporation | Recovery of global history vector in the event of a non-branch flush |
US7249243B2 (en) * | 2003-08-06 | 2007-07-24 | Intel Corporation | Control word prediction and varying recovery upon comparing actual to set of stored words |
US7500087B2 (en) | 2004-03-09 | 2009-03-03 | Intel Corporation | Synchronization of parallel processes using speculative execution of synchronization instructions |
JP5326374B2 (ja) * | 2008-06-19 | 2013-10-30 | 富士通セミコンダクター株式会社 | プロセッサ、性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法 |
JP5526626B2 (ja) * | 2009-06-30 | 2014-06-18 | 富士通株式会社 | 演算処理装置およびアドレス変換方法 |
US20110047358A1 (en) | 2009-08-19 | 2011-02-24 | International Business Machines Corporation | In-Data Path Tracking of Floating Point Exceptions and Store-Based Exception Indication |
US8819397B2 (en) | 2011-03-01 | 2014-08-26 | Advanced Micro Devices, Inc. | Processor with increased efficiency via control word prediction |
-
2013
- 2013-03-15 US US13/841,576 patent/US9823929B2/en not_active Expired - Fee Related
-
2014
- 2014-03-14 EP EP14720845.8A patent/EP2972790A1/en not_active Withdrawn
- 2014-03-14 CN CN201480013934.7A patent/CN105190540B/zh not_active Expired - Fee Related
- 2014-03-14 WO PCT/US2014/029876 patent/WO2014145160A1/en active Application Filing
- 2014-03-14 JP JP2016503240A patent/JP2016512908A/ja active Pending
- 2014-03-14 KR KR1020157027770A patent/KR20150132242A/ko not_active Application Discontinuation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101776989A (zh) * | 2009-02-11 | 2010-07-14 | 威盛电子股份有限公司 | 乱序执行微处理器及提升效能的方法、执行方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20150132242A (ko) | 2015-11-25 |
EP2972790A1 (en) | 2016-01-20 |
CN105190540A (zh) | 2015-12-23 |
JP2016512908A (ja) | 2016-05-09 |
WO2014145160A1 (en) | 2014-09-18 |
US9823929B2 (en) | 2017-11-21 |
US20140281405A1 (en) | 2014-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105190540B (zh) | 优化用于上下文相关指令的性能 | |
US10552163B2 (en) | Method and apparatus for efficient scheduling for asymmetrical execution units | |
CN104346223B (zh) | 基于类型的优先化指令 | |
CN103250131B (zh) | 包括用于早期远分支预测的影子缓存的单周期多分支预测 | |
US12061906B2 (en) | Apparatus and method for performing a splice of vectors based on location and length data | |
EP2613251A1 (en) | Restoring a register renaming map | |
EP3398113B1 (en) | Loop code processor optimizations | |
US20140281116A1 (en) | Method and Apparatus to Speed up the Load Access and Data Return Speed Path Using Early Lower Address Bits | |
US9436476B2 (en) | Method and apparatus for sorting elements in hardware structures | |
CN114675889A (zh) | 用于对函数调用的基于硬件的记忆化的装置和方法 | |
US11803388B2 (en) | Apparatus and method for predicting source operand values and optimized processing of instructions | |
WO2017116923A1 (en) | Efficient instruction processing for sparse data | |
CN107209662A (zh) | 指令的相依性预测 | |
US7269716B2 (en) | Processor to efficiently rename decoded condition codes and instruction control method thereof | |
US9442735B1 (en) | Method and apparatus for processing speculative, out-of-order memory access instructions | |
WO2017116927A1 (en) | Zero cache memory system extension | |
US20240354105A1 (en) | Apparatus and method for performing a splice operation |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180403 |
|
CF01 | Termination of patent right due to non-payment of annual fee |