经由分支校正进行预解码错误处理的制作方法

文档序号:6553573阅读:169来源:国知局

专利名称::经由分支校正进行预解码错误处理的制作方法
技术领域
:本发明大体上涉及处理器领域,且具体来说涉及通过以指令的目标地址强制进行分支校正程序来校正与指令相关联的经错误预解码的数据的方法。
背景技术
:微处理器在各种应用中执行计算任务。几乎一直需要改进的处理器性能,以允许通过软件变动实现更快的操作和/或增加的功能性。在许多嵌入式应用中(例如,便携式电子装置),节约功率在处理器设计和实施中也是一个重要的目标。许多现代处理器可使用管线结构,其中连续的指令在执行中经重叠以增加处理器总处理量。通过管线来维持顺畅的执行对于实现高性能是关键的。许多现代处理器还使用层级存储器,其中快速的、芯片上高速缓冲存储器存储最近存取的数据和指令的本地副本。此项技术中已知的一种管线优化技术是预解码指令。也就是说,当从存储器读取指令时检查所述指令,对其进行部分预解码,且将关于指令的某些信息(称为预解码信息)连同相关联的指令一起存储在高速缓冲存储器中。当稍后从高速缓冲存储器中提取指令时,还提取预解码信息,且使用预解码信息来辅助对指令进行完全解码。有时,预解码信息含有错误。可在管线中的解码阶段期间检测到这些错误。当发现错误时,发生异常,且必须冲洗(flush)管线,且必须重取包含经错误预解码的指令在内的所有指令。这个过程导致性能和功率管理显著降级。
发明内容本发明在一个实施例中涉及一种校正未经正确预解码的指令的方法。检测到预解码错误。响应于检测到所述错误,以未经正确预解码的指令的目标地址强制进行分支校正程序。本发明在另一实施例中涉及一种处理器。所述处理器包含插在指令提取路径中的预解码器,所述预解码器产生与特定指令相关联的预解码信息。所述处理器还包含预解码错误检测器和校正器,其检测与所述指令相关联的不正确的预解码信息,且以指令的地址为分支目标地址而强制所述指令作为错误预测分支来执行。图l是处理器的功能方框图。图2是存储器、预解码器、指令高速缓冲存储器和处理器管线的一部分的功能方框图。图3是分支校正逻辑的功能方框图。具体实施例方式管线处理器架构通过使多个连续指令的执行重叠来开发并行度,每一连续指令具有多个执行步骤。典型的指令步骤包含指令提取、解码、执行和回写。通过一个或一个以上管级在管线中执行每一步骤,管级包括逻辑和例如锁存器或寄存器的存储器元件。管级连接在一起以形成管线。指令进入管线并通过所述级被连续处理。在先前的指令完成执行之前,额外的指令进入管线,因此,可在任何给定的时间在管线内处理多个指令。这种在连续指令流中的指令之间开发并行度的能力对于改进处理器性能具有显著帮助。在理想的条件下,且在在一个周期内完成每一管级的处理器中,在填充管线的短暂起始过程之后,指令可在每一周期内完成执行。许多现实的约束使得不能维持此理想的条件然而,保持管线完全且顺畅地流动是处理器设计的共同目标。现代处理器通常还使用存储器层级架构,其将少量快速、昂贵的存储器放置在处理器附近,以大量较慢的、廉价的存储器作为后备。典型的处理器存储器层级架构可在顶层处理器中包括寄存器;一个或一个以上芯片上高速缓冲存储器(例如,SRAM)作为后备;可能包括芯片外高速缓冲存储器,称作层2或L2高速缓冲存储器(例如,SRAM);主存储器(通常为DRAM);磁盘存储装置(磁性媒介);和最低层的磁带或CD(磁性或光学媒介)。在嵌入式应用中(例如,便携式电子装置),可能存在有限的磁盘存储装置(如果存在的话),且因此主存储器(通常大小受到限制)可以是存储器层级架构中的最低层。图1描绘代表性处理器10的功能方框图,处理器10使用管线架构和层级存储器结构两者。所述处理器IO根据控制逻辑14执行指令执行管线12中的指令。所述管线包含组织在管级中的各种寄存器或锁存器16,以及一个或一个以上算术逻辑单元(ALU)18。通用寄存器(GPR)文件20提供包括存储器层级架构顶部的寄存器。管线从指令高速缓冲存储器22提取指令,由指令侧翻译后备缓冲器(Instruction-sideTranslationLookasideBuffer,ITLB)24管理存储器定址和许可,且由预解码器21执行指令的某些初始解码。从数据高速缓冲存储器26存取数据,由主翻译后备缓冲器(TLB)28管理存储器定址和许可。在各种实施例中,ITLB可包括TLB的一部分的副本。或者,ITLB与TLB可集成。类似地,在处理器IO的各种实施例中,I高速缓冲存储器22与D高速缓冲存储器26可集成或统一化。在存储器接口30的控制下,不存在于I高速缓冲存储器22和/或D高速缓冲存储器26中的存取(遗漏)导致对主(芯片外)存储器32的存取。处理器10可包含输入/输出(I/O)接口34,其控制对各种外围装置36的存取。所属领域的技术人员将认识到,处理器IO可能存在许多变化形式。举例来说,处理器IO可包含用作I和D高速缓冲存储器中任一者或两者的二层(L2)高速缓冲存储器。另外,在特定实施例中可省略处理器10中所描绘的功能方框中的一者或一者以上。一种已知的用于改进处理器性能并减少功率消耗的技术称为预解码。预解码器21包括插在主存储器32与指令高速缓冲存储器22之间的路径中的逻辑。可对从存储器中提取的指令中的某些指令进行预解码,产生预解码信息,并将其连同指令一起写入到I高速缓冲存储器22。当从高速缓冲存储器提取指令以用于执行时,预解码信息可辅助一个或一个以上解码管级对所述指令进行解码。举例来说,预解码器可确定可变长度指令的长度,且将预解码信息写入到高速缓冲存储器中,所述高速缓冲存储器辅助解码管级检索所述可变长度指令的正确数目的位。可对多种信息进行预解码,且将其存储在I高速缓冲存储器22中。通过从一个或一个以上解码管级移除逻辑,允许较早使用所述逻辑且可能实现较短的机器循环时间而改进了预解码器21的性能。预解码器21还通过一次执行预解码操作来减少功率消耗。由于1高速缓冲存储器22的命中率通常高达90%,所以因不需要每次从I高速缓冲存储器22中执行指令时均执行逻辑运算而可实现相当可观的功率节省。有时,预解码器21发生错误。举例来说,如果例如参数或中间值等数据连同指令一起被存储在存储器中,那么通过从高速缓冲存储器线的开始对字节简单地进行计数来确定指令长度的预解码操作可能会将一个或一个以上所述参数或中间值的字节错误地识别为进一步沿着所述线向下的指令。可能存在其它类型的错误,包含预解码器21中或I高速缓冲存储器22中的随机位错误。应在一个或一个以上解码管级中发现这些错误,且这些错误通常将导致异常,从而要求冲洗并重启管线,借此造成性能和功率消耗损失。存在多种不需要引起异常和对管线12的相关联冲洗的校正预解码错误的方式。图2是描绘处理器10和管线12的若干部分的功能方框图。图2还描绘指令高速缓冲存储器地址寄存器(ICAR)48,其为I高速缓冲存储器22编索引。由下一提取地址计算电路46产生和/或选择载入到ICAR48中的地址。当从存储器32(或L2高速缓冲存储器)提取指令时,预解码器21对指令进行预解码,且预解码信息23连同相应的指令一起被存储在指令高速缓冲存储器22中。在管线12中,从I高速缓冲存储器22提取指令和相关联的预解码信息23,其由解码逻辑40至少部分解码,且结果存储在DCD1管级锁存器42中。在许多处理器10中,DCD1管级包含分支预测器。在分支预测器预测将采取一分支的情况下,管级可计算分支目标地址,并沿着分支预测地址路径44将其提供给下一提取地址计算逻辑46。这是从管级到下一提取地址计算逻辑46的地址路径的一个实例(预测为不采取的分支将简单地允许继续进行连续指令提取)。在一个示范性实施例中,所提取和经部分解码的指令接着流动到管级DCD2,管级DCD2包含不正确预解码检测和校正逻辑50。如果检测到预解码信息中的错误,那么DCD2管级可发信号指示异常,并冲洗管线12,如上文所论述。或者,可通过从存储器32中重取指令来校正预解码错误。实现此目的的一个方式是在高速缓冲存储器22中使指令无效,并沿着路径54将指令地址提供给下一提取地址电路46。此地址接着将被载入到ICAR48中。因为在高速缓冲存储器22中使指令无效,所以高速缓冲存储器存取将遗漏,从而导致对主存储器32的存取。接着将由预解码器21对从主存储器32提取的指令正确地进行预解码,并将指令放回到指令高速缓冲存储器22中。接着可从高速缓冲存储器22中重取所述指令,连同正确的预解码信息23。下一提取地址计算逻辑46通常位于大多数处理器数据流的关键路径上,且因此限制了机器循环时间。添加用于与不正确的预解码相关联的指令地址的路径54将会向下一提取地址计算46添加逻辑,从而增加机器循环时间并降低性能。考虑到经预解码的信息23很少会不正确,所以此性能打击尤其惊人。以一般情况为代价优化罕见情况下的性能通常会降低处理器总体性能。根据本发明的一个实施例,消除到达下一提取地址计算器46的不正确预解码路径54(如图2中的虚线所指示)。不正确预解码检测和校正逻辑50促使管线12将未经正确预解码的指令评估为分支指令,而不是向下一提取地址计算器46提供专用路径。预解码校正逻辑50可将未经正确预解码的指令的语义改变为分支指令的语义,或者,作为替代,可设定通过管线载运的旗标,所述旗标向执行管级指示,所述指令将被看待为分支。具体来说,未经正确预解码的指令被评估为预测为不采取但评估为采取的分支,且分支目标地址是未经正确预解码指令的地址。在沿着管线12向下的某点处(取决于实施方案细节),通过评估"分支采取"条件并产生分支目标地址的执行管级56来评估指令。沿着分支校正路径58将分支目标地址提供给下一提取地址计算器46。分支条件评估逻辑、分支目标地址产生逻辑以及分支校正路径58和下一提取地址计算器46中的相关联的控制逻辑已存在于预测分支行为的每一管线处理器10中。图3是分支校正逻辑的一个可能的实施方案的功能图。EXE管级锁存器56内的是预测为采取的分支(BPT)位60,和分支条件评估(COND)位62。如果分支预测器早先在管线12中预测将采取分支,那么BPT位60为1,且如果预测不采取分支,那么BPT位60为0。如果分支评估为采取,那么COND位62为l,且如果分支评估为不采取,那么COND位62为0。这两个位可经异或(XOR)操作,如门66所指示,以产生提供给下一提取地址计算器46的多路复用器选择或类似的控制信号,从而指示分支校正路径58应被选择作为下一提取地址。以下表1描绘XOR66的真值表。<table>tableseeoriginaldocumentpage8</column></row><table>表l:分支预测解析真值表条件评估位62可另外用作对多路复用器68的选择输入,其在连续地址与所计算的分支目标地址64之间进行选择以产生放置在分支校正路径58上的地址。根据本发明的一个实施例,为了处理未经正确预解码的指令,可将BPT位60设定或强制为0,且可将COND位62设定或强制为1,以强制"分支错误预测为不采取"的情形。在这种情况下,所计算的分支目标地址64将经由分支校正路径58被引导到下一地址提取电路46。根据本发明的一个实施例,未经正确预解码的指令被评估为PC相关分支指令,其中分支位移栏为0。当在EXE管级56中评估此指令时,所计算的分支目标地址将包括被错误预解码的指令的地址(偏移量为0),在本发明的另一实施例中,将未经正确预解码的指令评估为寄存器分支指令,且另外,分支目标地址寄存器将加载有未经正确预解码的指令的地址。在通过算术运算加载分支目标地址寄存器的情况下,可加载操作数寄存器以产生未经正确预解码的指令地址。所属领域的技术人员将容易了解用于将未经正确预解码的指令评估为具有指令本身的目标地址的错误预测为不采取的分支指令的许多其它方法,且所述方法均包含在本发明的范围内。再次参看图2,在EXE级56处执行强制的错误预测为不采取的分支指令,且将包括未经正确预解码的指令的地址的分支目标地址放置在分支校正路径58上。此地址由下一提取地址计算器46选择,被加载到ICAR48中,且在I高速缓冲存储器22中执行指令提取。由于不正确预解码检测和校正逻辑50使含有未经正确预解码的指令的高速缓冲存储器线无效,所以I高速缓冲存储器22存取将遗漏,从而强制从存储器32(或L2高速缓冲存储器)提取指令。接着所述指令将由预解码器21正确地进行预解码,且连同正确预解码信息23—起放入I高速缓冲存储器22中。接着可从I高速缓冲存储器22中重取指令和预解码信息23,对指令和预解码信息23正确地进行解码,且在管线12中正确执行指令和预解码信息23。在预解码器21中不会再次发生由于(例如)数据与指令交替散置而引起的偏移错误,因为存储器存取是针对指令的准确地址,而不是高速缓冲存储器线的开始。应注意,上文对存储器存取的描述是概念性的。在任何给定实施方案中,对存储器32的存取可与I高速缓冲存储器22存取并行地进行;可预测I高速缓冲存储器22遗漏,且因此避免了I高速缓冲存储器22存取;存储器32存取结果可直接进入管线12中,并行地被写入到I高速缓冲存储器22中;等等。大体上来说,本发明涵盖在操作上可能与以上描述存在偏差的所有存储器和/或高速缓冲存储器性能优化。尽管本文己相对于本发明的特定特征、方面和实施例描述了本发明,但将了解,在本发明的广泛范围内可能存在许多变化、修改和其它实施例,且因此,可将所有变化、修改和实施例认为是处于本发明的范围内。因此,所提供的实施例在所有方面均应被理解为说明性的,而不是限制性的,且期望所有处于所附权利要求书的含义和等效范围内的改变均包容在其中。权利要求1.一种校正未经正确预解码的指令的方法,其包括检测预解码错误;以及响应于检测到所述错误,以所述未经正确预解码的指令的目标地址强制分支校正程序。2.根据权利要求l所述的方法,其进一步包括在强制所述分支校正程序之前,在高速缓冲存储器中使所述未经正确预解码的指令无效。3.根据权利要求2所述的方法,其进一步包括响应于所述分支校正程序,从存储器提取所述指令。4.根据权利要求3所述的方法,其进一步包括对所述指令进行预解码,以及将所述指令和与所述指令相关联的预解码信息存储在所述高速缓冲存储器中。5.根据权利要求1所述的方法,其中强制分支校正程序包括强制分支条件"真"和强制分支预测"假"。6.根据权利要求1所述的方法,其中以所述未经正确预解码的指令的所述目标地址强制分支校正程序包括将所述地址存储在目标地址寄存器中和强制寄存器分支指令校正。7.根据权利要求6所述的方法,其中将所述地址存储在目标地址寄存器中包括在所述目标地址寄存器加载有对两个操作数寄存器的内容进行的算术运算结果的情况下,将所计算的值存储在所述操作数寄存器中,所述值经计算以从所述算术运算中产生所述地址。8.根据权利要求1所述的方法,其中以所述未经正确预解码的指令的所述目标地址强制进行分支校正程序包括强制进行分支位移为零的PC相关分支指令校正。9.一种处理器,其包括预解码器,其插在指令提取路径中,所述预解码器产生与指令相关联的预解码信息;以及预解码错误检测器和校正器,其检测与所述指令相关联的不正确的预解码信息,且以所述指令的地址为分支目标地址而强制所述指令作为错误预测的分支来执行。10.根据权利要求9所述的处理器,其进一步包括高速缓冲存储器,其存储所述指令和所述预解码信息,且其中所述预解码错误检测器和校正器进一步在检测到所述预解码错误时在所述高速缓冲存储器中使所述指令无效。11.根据权利要求9所述的处理器,其进一步包括分支预测器和分支校正路径,所述分支校正路径响应于曾预测不采取但评估为采取的有条件分支来为指令提取提供经校正的分支目标地址。12.根据权利要求11所述的处理器,其中所述预解码错误检测器和校正器利用所述分支校正路径来强制所述未经正确预解码的指令作为错误预测为不采取的分支指令来执行。13.—种校正未经正确预解码的指令的方法,其包括检测预解码错误;以及响应于检测到所述错误,通过从存储器中提取所述指令并对所述指令进行预解码来校正所述预解码错误。14.根据权利要求13所述的方法,其中从存储器中提取所述指令包括-在高速缓冲存储器中使所述指令无效;以及在使所述指令无效之后,尝试从所述高速缓冲存储器中提取所述指令。15.根据权利要求13所述的方法,其中从存储器中提取所述指令包括将所述指令评估为分支,其中所述指令的地址作为分支目标地址。16.根据权利要求15所述的方法,其中将所述指令评估为分支包括将所述指令评估为错误预测为不采取的分支。全文摘要在其中指令在被存储在高速缓冲存储器中之前经预解码的管线处理器中,在管线中执行期间检测未经正确预解码的指令。在所述高速缓冲存储器中使相应的指令无效,且强制所述指令评估为分支指令。明确地说,所述分支指令被评估为“错误预测为不采取的”,其中以所述未经正确预解码的指令的地址为分支目标地址。因所述无效的高速缓冲存储器线,这样会导致以准确的地址从存储器中重取所述未经正确预解码的指令。所述重取的指令接着被正确预解码,写入到所述高速缓冲存储器,并执行。文档编号G06F9/318GK101103333SQ200580046735公开日2008年1月9日申请日期2005年11月18日优先权日2004年11月22日发明者布赖恩·迈克尔·斯坦普尔,托马斯·安德鲁·萨托里乌斯,杰弗里·托德·布里奇斯,罗德尼·韦恩·史密斯,詹姆斯·诺里斯·迪芬德尔费尔申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1