首页> 中国专利> 提供分支指令与相关目标指令至指令缓冲区的装置及方法

提供分支指令与相关目标指令至指令缓冲区的装置及方法

摘要

一种位于微处理器中的分支控制装置。缓存器接收来自于指令快取区响应于撷取地址所提供包含分支指令的第一快取线。撷取地址于分支目标地址快取区的命令中提供了分支指令的目标地址。分支目标地址快取区也提供了在分支指令之后的指令的一个偏移信息。根据此偏移信息,分支指令之后的指令群被视为无效。多任务逻辑仅将有效指令群挤入一个直接耦接于指令格式化逻辑的字节宽度指令缓冲区。指令快取区响应该目标地址提供包含目标指令的第二快取线给此缓存器。目标指令之前的指令群会根据目标地址的较低位而被视为无效。多任务逻辑仅将有效的目标指令群以紧邻分支指令字节群的方式挤入指令缓冲区内。

著录项

  • 公开/公告号CN1375767A

    专利类型发明专利

  • 公开/公告日2002-10-23

    原文格式PDF

  • 申请/专利权人 智权第一公司;

    申请/专利号CN02107107.1

  • 发明设计人 葛林G·亨利;汤玛斯C·麦当劳;

    申请日2002-03-07

  • 分类号G06F9/42;G06F12/02;

  • 代理机构北京集佳专利商标事务所;

  • 代理人王学强

  • 地址 美国加州

  • 入库时间 2023-12-17 14:27:51

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-03-25

    专利权有效期届满 IPC(主分类):G06F 9/42 专利号:ZL021071071 申请日:20020307 授权公告日:20060405

    专利权的终止

  • 2006-04-05

    授权

    授权

  • 2004-07-28

    实质审查的生效

    实质审查的生效

  • 2002-10-23

    公开

    公开

说明书

技术领域

本发明是有关于一种位于使用管线化(pipelined)微处理器中的分支目标地址快取区,且特别是有关于一种当因分支目标地址快取区的命中引起微处理器分支时,提供正确指令流给指令缓冲区的方法及装置。

背景技术

管线化微处理器包括多个管线化阶层,每个阶层完成在程序指令执行里所必要的不同功能。典型的管线化阶层功能为指令撷取、指令译码、指令执行、内存存取以及结果写回。

指令撷取阶层撷取在目前执行的方程式里的下一个指令。此下一个指令通常为具有下一个连续的内存地址的指令。然而,在一个分支指令产生的情况下,此下一个指令为在由此分支指令所特定的内存地址上的指令,此内存地址通常被称为分支目标地址。此指令撷取阶层从指令快取区撷取指令。如果这些指令不被此指令快取区所提供,它们会被从机器的内存阶层中较高的内存,如较高阶的高速缓存或系统内存,撷取至指令快取区中。此被撷取的指令被提供至指令译码阶层。

此指令译码阶层包括指令译码逻辑,而此指令译码逻辑为用以对从指令撷取阶层接收的指令字节译码。在支持多变长度指令的微处理从指令撷取阶层接收的指令字节译码。在支持多变长度指令的微处理器,如X86架构的微处理器,的情况下,指令译码阶层的一个功能就是将指令字节串流格式化成分离的指令。格式化指令字节串流包括决定每个指令的长度。也就是,指令格式化逻辑接收来自于指令快取区的无差别的指令字节串流,并将此指令字节串流格式化或剖析成分离的字节群群组。每组字节群是一个指令,而这些指令组群组成处理器所执行的程序。指令译码阶层也包括转换宏指令(macro-instruction),如X86指令,为剩余管线所能执行的微指令。

此执行阶层包括执行逻辑以执行接收于指令译码阶层的被格式化且被译码的指令群。此执行逻辑根据撷取于处理器以及/或内存中的一个缓存器组中的资料以进行操作。写回阶层将执行逻辑所产生的结果储存至处理器缓存器组中。

在管线化处理器的操作中,重要的一点是维持处理器每个阶层都能忙碌于当初所设计执行的操作上。尤其是当指令译码阶层准备译码下一个指令,而指令撷取阶层却不能提供指令字节群时,处理器的运作将会受到影响。为了预防指令译码阶层空乏,指令缓冲区一般会放置在指令快取区与指令格式化逻辑之间。且指令撷取阶层会试着维持由字节所组成的几个指令以提供给指令译码阶层译码,而不至于空乏。

通常来说,指令快取区在一时间内会提供一条快取线的指令字节群,通常为16个或32个字节群。指令撷取阶层撷取指令快取区中的指令字节群中的一条或多条快取线且储存这些快取线至指令缓冲区中。当指令译码阶层准备要译码一个指令时,此指令译码阶层会存取在指令缓冲区中的指令字节,而不是在指令快取区中等待。

指令快取区提供指令字节群中的一条快取线,且凭借指令撷取层将一个撷取地址提供给指令快取区以选择此快取线。在正常操作期间,既然程序指令群被连续地执行是可以预期的,因此撷取地址便根据一条快取线的容量而单纯地被增加。被增加后的撷取地址被当作为下一个连续撷取地址。然而,当分支指令被指令译码逻辑译码而被取得(或是之前被取得)时,此撷取地址被更新为分支指令的目标地址(按此快取区线尺寸),而不是被更新为下一个连续的撷取地址。

然而,随着此撷取地址被更新为分支目标地址的时间,此地址缓冲区有可能被植入在分支指令之后的接下来的连续指令群中的指令字节群。因为一个分支已经发生,分支指令之后的指令群必须不被译码且必须不被执行。也就是,适当程序的执行会要求执行在分支目标地址上的指令群,而不是在分支指令后的接下来的连续指令群。程序中,可以预见连续指令串流较常见的情况为:指令缓冲区中的指令字节群被错误地预先撷取。为了补救此错误,处理器必需在清除分支指令后的所有指令字节群,这些指令字节群包括在指令缓冲区中的指令字节群。

既然现在此指令译码阶层在指令缓冲区由指令快取区再被植入之前为空乏状况,因此根据分支指令而清除指令缓冲区势必付出很大的代价。此问题的一个解决方法为,在译码分支指令之前先作分支。此方法可凭借使用一个分支目标地址快取区(branch target addresscash,以下简称BTAC),快取包括预先被执行的分支指令群的指令快取线的撷取地址以及与其相关的目标地址群来实现。

指令快取撷取地址被应用在BTAC上时,实质上相似于撷取地址对于指令快取区的应用。在包含分支指令的快取线的指令快取撷取地址的情况中,此快取取线被提供给指令缓冲区。除此之外,如果在撷取地址命中于BTAC,此BTAC会提供一个相关的分支目标地址。如果此分支指令命中于BTAC为预期发生时,指令快取撷取地址会被更新为由BTAC所提供的目标地址。

因此指令快取区在一时间内会提供指令群中的一条快取线给指令缓冲区,快取线中应存在有在分支指令之后的指令字节群。此在分支指令之后的指令字节不应被执行。更确切的说,在指令缓冲区中且在分支指令之后的指令字节群应该从指令字节串流被提供至指令译码阶层中被舍弃。然而,既然仍有被忽略且尚未译码的指令存于指令缓冲区中,因此指令缓冲区不会一次全被清除(如上述,在没有BTAC的处理器中会被清除掉)。特别是此分支指令本身(以及任何其它在快取线中且在分支指令之前的指令字节群)必须被译码以及执行。

然而,当分支指令仍存于指令缓冲区中且尚未格式化时,指令缓冲区中随着分支指令之后的指令群地址并不会被知道。这是由于分支指令在格式化之前,其位于快取线中的长度以及位置并不被知道,随之发生地,位于指令缓冲区中的分支指令的位置也并不被知道。据此,随着分支指令之后的指令的地址也不会被知道。

最后,可变指令长度的处理器中的指令译码阶层包括几个部分以格式化相关的部分指令群。举例来说,格式化逻辑的一部分用以格式化指令的操作码字节,通常为第一个字节,而格式化逻辑的其它部分则用以格式化指令的其它部分。指令字节串流的正确部分必须提供给指令格式化逻辑的正确部分。

通常来说,设计管线化的处理器中的指令格式化逻辑能具有在处理器周期时间内执行指令格式化功能是一件困难的工作。此优点在于尽可能提供足够的周期时间以格式化指令字节,而不是花一部分时间在控制指令字节至格式化逻辑的适当部分。且此优点在于采用一个直接耦接至指令译码阶层内的指令格式化逻辑的指令缓冲区。也就是,此优点为排除逻辑被要求去操纵从指令缓冲区至指令格式化逻辑适当部分的指令字节。

管线化处理器中所需要的是,具有凭借使用以指令快取撷取地址群为基础的BTAC,使得指令缓冲区直接被耦接于处理器中的指令格式化逻辑的能力的一个分支控制装置,以增加可利用于指令格式化时的处理器周期时间。

发明内容

有鉴于此,本发明提供一种具有凭借相关连的一个指令快取撷取地址群的BTAC的使用,使得指令缓冲区直接被耦接于处理器中的指令格式化逻辑的能力的管线化处理器中的分支控制装置。因此,为了达到上述目的,本发明的特征在于提供位于微处理器中的分支控制装置。此装置包括:指令快取区、指令缓冲区、分支目标地址快取区以及选择逻辑。其中,指令快取区用以输出由一个撷取地址所选择的指令字节群中的一条线。指令缓冲区耦接指令快取区且用以缓冲指令字节群中的此线。分支目标地址快取区(BTAC)耦接撷取地址群且用以提供有关于指令字节中的此线中的分支指令的一个位置的补偿信息。选择逻辑耦接分支目标地址快取区且用以根据补偿信息使得部分的指令字节群以不被提供至指令缓冲区。

在其它方面,本发明的特征在于提供一种位于微处理器中的预先译码阶层。此预先译码阶层包括:指令缓冲区、选择逻辑以及分支目标地址快取区。其中,指令缓冲区用以缓冲指令资料以提供给指令格式化逻辑。选择逻辑耦接指令缓冲区且用以接收来自于指令快取区且凭借撷取地址所选择的第一指令数据,其中第一指令数据包括分支指令。分支目标地址快取区(BTAC)耦接选择逻辑且用以提供分支指令的目标地址作为下一个撷取地址给指令快取区。此外,选择逻辑被配置为接收凭借来自于指令快取区且凭借目标地址所选择的第二指令数据,且第二指令数据包括分支指令的一目标指令。而选择逻辑被配置为将分支指令以及目标指令以相互紧邻的方式写入指令缓冲区中。

在另一其它方面,本发明的特征还在于提供一种提供分支指令与分支指令的目标指令至指令缓冲区的方法,此方法包括接收来自于指令快取区的包括分支指令的第一快取线,以及接收来自于分支目标地址快取区(BTAC)的第一快取线中的紧随于分支指令之后的指令字节群的偏移信息。此方法也包括接收来自于指令快取区的包括目标指令的第二快取线。且此第二快取线为凭借分支目标地址快取区所提供的分支指令的目标地址所选择。本方法也包括舍弃在第一快取线中的分支指令之后的指令,以及舍弃第一快取线中目标指令之前的指令。且维持在每个舍弃步骤后提供一部分的第一以及第二快取线给指令缓冲区。

综合上述,本发明具有凭借相关连的一个预先指令缓冲的使用,使用一个字节宽度的指令缓冲区可以直接耦接于指令格式化逻辑。换句话说,在指令缓冲区与指令格式化逻辑之间不需要任何多任务器来选取正确指令字节给正确格式化部分。虽然字节宽度的指令缓冲区通常会小于非字节宽度的指令缓冲区,指令缓冲区与指令格式化逻辑间的直接耦合使得指令格式化逻辑在本质上减少了限制格式化逻辑的时脉。此时脉限制为凭借覆盖掉格式化指令时而增加的处理器时脉周期时间所减少,而不是耗费时间去控制指令字节群由指令缓冲区至指令格式化逻辑的适当部分。此直接的耦合是可能的,其原因在于本发明仅将有效字节放入指令缓冲区内。本发明将因分支指令而被视为无效的指令字节群,在其被提供至指令缓冲区前,将其舍弃。

为让本发明的上述和其它目的、特征、和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明。

附图说明

图1绘示的是根据本发明较佳实施例中的包括一个分支控制装置的管线化处理器的部分方块图;

图2绘示的是根据图1的指令缓冲区对指令格式化逻辑的耦合;

图3绘示的是根据图1中的多任务逻辑的方块图;

图4绘示的是根据图1中的分支控制装置的操作流程说明图;

图5绘示的是根据图1中的分支控制器的方块图。标号说明

100:微处理器           102:指令快取区

142,144,148,166:数据总线

152,162:撷取地址      116:分支目标地址快取区

BEG值:138              命中信号:134

SB1:136                118:多任务器

156,168,172,174:控制信号

122:控制逻辑           124:加法器

142:快取线             106:有效位

108:多任务逻辑

104,104A,104B:字节选择缓存器

112,112A,112B,112C:指令缓冲区

114:指令格式化逻辑     302:罩覆多任务器

304:排整多任务器       306:维持/加载多任务器

402~424:分支控制装置的操作流程步骤

具体实施方式

请参考图1,其绘示的是根据本发明的包括一个分支控制装置的管线化处理器100的部分方块图。在一个实施例中,微处理器100包含一个x86架构的处理器。在一个实施例中,此微处理器100具有13阶层的管线,其中包括:一个指令撷取阶层、多个指令快取存取阶层、一个指令格式化阶层、一个指令译码或是转换阶层、一个暂存存取阶层、一个地址计算阶层、多个资料快取存取阶层、多个执行阶层、一个储存阶层以及一个写回阶层。

微处理器100包括了一个快取指令字节群的指令快取区102。此指令字节群为从内存经过数据总线166而被接收。指令快取区102包括了储存指令字节群的一个数组的快取线。此数组的快取线凭借一个撷取地址152所索引。因此,撷取地址152选择了此数组中的一条快取线。指令快取区102经过数据总线142输出指令字节群中的被选择的快取线。

在一个实施例中,指令快取区102包括了一个64KB、4信道组的关联快取区,而每个信道则具有32字节的快取线群。在一个实施例中,在指令字节群中被选择的快取线中,一半为凭借指令快取区102在一时间内所提供。换言之,在每两个分离的周期内提供16个字节。在一个实施例中,指令快取区102类似于美国专利说明书序号为09/849,736,标题为不确定分支目标地址快取区(SPECULATIVEBRANCH TARGET ADDRESS CACHE),(卷标号码为CNTR:2021)中所叙述。

微处理器100也包括了一个分支目标地址快取区(branch targetaddress cache,以下简称为BTAC)116。BTAC 116也接收指令快取区102的撷取地址152。BTAC 116储存了先前被执行的分支指令群的撷取地址群。BTAC 116包括了一个储存被微处理器100执行的分支指令之后的分支指令目标地址的储存组件。此储存组件亦储存有关于分支指令的目标地址被快取时的其它不确定分支的信息。特别是此储存组件储存随着快取线中的分支指令之后的指令的位置信息。撷取地址152索引在BTAC 116中数组的储存组件以选择其中一个储存组件。

BTAC 116凭借撷取地址152选择由储存组件输出一个目标地址132以及不确定分支信息(speculative branch inforation,以下简称SBI)136。在一个实施例中,SBI 136包含分支指令长度,不论此分支指令为由多个指令快取线变形而成,亦不论是分支为一个呼叫或是一个返回指令或是一个用来预测分支指令方向的信息。上述可参考先前提到标题为「不确定分支目标地址快取区」的美国专利说明书。

BTAC 116也输出一个BEG值138,其中特定了凭借撷取地址152所选择的指令快取线142中的相关分支指令之后的指令群的偏移信息。此BEG值138单独随着分支指令执行之后的指令目标地址而在BTAC 116中被快取。此BEG值138为凭借增加至分支指令的长度的分支指令的指针所计算。如果微处理器100使得由BTAC 116所提供的目标地址132分支,会使得在分支指令之后的快取线中的所有指令群被视为无效。也就是在分支指令之后的指令字节群将不会被执行,而其原因为分支指令已经被取得。因此,对于特有程序的执行来说,随着分支指令之后的指令字节群在执行前必须被舍弃。

BTAC 116也输出一个命中信号134以指示在BTAC 116中,撷取地址152是否命中。在一个实施例中,BTAC 116类似于一个由先前提及的美国专利说明书标题为不确定分支目标地址快取区(SPECULATIVE BRANCH TARGET ADDRESS CACHE)中所叙述。特别是此BTAC 116是一个不确定的BTAC,其原因在于微处理器100在指令快取区102所提供的指令快取线被译码为甚至存在于撷取地址所选择的快取线中的已知或未知的分支指令之前,将BTAC 116所提供的目标地址132分支。也就是说,既使有可能存在着凭借撷取地址命中于BTAC 116以选择的快取线中没有任何分支指令存在的情况时,微处理器100也会不确定地分支。

微处理器100也包含控制逻辑122、命中信号134、SBI 136以及BEG值138以全部被提供作为控制逻辑122的输入。控制逻辑122的操作,在下列有更详细的描述。

微处理器100也包括了一个多任务器118。多任务器118至少接收三种作为输入的地址且并对应于控制逻辑所输出的控制信号168选择其中一种输入作为撷取地址152输出至指令快取区102。多任务器118接收由BTAC 116所输出的目标地址132。多任务器118也接收下一个连续撷取地址162,并提供此下一个连续撷取地址162至多任务器118。其中,此下一个连续撷取地址162为根据指令快取区102中的快取线尺寸且凭借加法器124接收撷取地址152而增加的预先撷取地址。此决定目标地址为凭借微处理器100中的执行逻辑所提供。

多任务器118也接收一个已剖析的目标地址164。此已剖析的目标地址164为凭借微处理器100中的执行逻辑所提供。此执行逻辑根据一个分支指令的一个全译码以计算出已剖析的目标地址164。如果在对BTAC 116所提供的目标地址132分支之后,且此微处理器100后来决定的分支为错误的分支时,微处理器100会凭借清除管线以及分支其它剖析目标地址164或是包括分支指令之后的指令群的快取线的撷取地址,以正确化此错误。在一个实施例中,假设微处理器100决定为没有分支指令存在于快取线142中时,微处理器100会凭借清除管线以及对包括分支指令本身的快取线的撷取地址群作分支以正确化错误。此错误的修正被描述在序号为09/849,658、标题为侦测且正确化错误不确定分支目标地址快取分支且卷标编号为CNTR2022的美国专利说明书。

在一个实施例中,多任务器118也接收凭借其它分支预测组件所预测的其它目标地址,例如一个呼叫/回堆栈以及分支目标缓冲区(branch target buffer,以下简称BTB),而根据分支指令指针以快取间接分支指令的目标地址。多任务器118凭借呼叫/回堆栈或BTB以选择性覆写BTAC 116提供的目标地址132。其被描述在序号为09/849,799、标题为根据分支形式且凭借第二预测装置以选择性复写的不确定分支目标地址快取区且卷标编号为CNTR2052的美国专利说明书。

微处理器100也包括字节选择缓存器104以接收由指令快取区102经数据总线142所输出的指令字节中的被选择的一条线。在一个实施例中,此字节选择缓存器104为具有16个字节宽度以接收由指令快取区102在一个时间内所输出的16个指令字节。微处理器100也包括对应于字节选择缓存器104中之中的16个字节间的每一个的16个有效位106。有效位106会指示位于选择缓存器中的对应字节,无论微处理器100在作暂存、格式化以及执行时,此对应字节是否为一个有效字节。控制逻辑122根据从BTAC 116所输出的HIT 134、SBI 136以及BEG 138输出一控制信号,以选择重置或是清除有效位106。在字节选择缓存器104中,一个被取得的分支指令之后的指令字节群凭借控制逻辑122被标记为无效。除此之外,在一个分支指令的目标指令之前的指令字节群也被标记为无效。在一实施例中,有效位106被包含于控制逻辑122之中。

微处理器100也包括多任务逻辑108且经过数据总线144接收由字节选择缓存器104输出的字节。多任务逻辑108舍弃由字节选择缓存器104所输出的无效字节。多任务逻辑108以及其操作的叙述,请参考下面相关的图3及图4。

微处理器100也包括了一个指令缓冲区112以接收经数据总线146由多任务逻辑电路108所输出的有效指令字节。其优点在于,多任务逻辑108根据从控制逻辑122输出的控制信号156仅选择性地从字节选择缓存器所输出的字节中,选出有效的字节以提供给指令缓冲区112。在字节选择缓存器104中对应于有效位106且被指示为无效的指令字节群,此无效字节被多任务器108所舍弃,且不被提供至指令缓冲区112。

在一个实施例中,指令缓冲区112储存13个指令字节。指令缓冲区112包括了一个字节宽度移位缓存器以储存指令字节群。其优点在于,指令缓冲区112移出在一个字节颗粒性基底上的已经被格式化的指令字节,因此,在指令缓冲区底部留住下一个指令的第一个字节以格式化,而下列有更详尽的描述。

微处理器100也包括了指令格式化逻辑114以经数据总线148接收由指令缓冲区112所输出的指令字节群。指令格式化逻辑114检查指令缓冲区112的内容,以及格式化或剖析其所包含的指令字节为几个分离指令。特别是指令格式化逻辑114决定了指令缓冲区112底部的指令的字节尺寸。指令格式化逻辑114提供已格式化的指令给微处理器100剩下的管线以作更多的译码以及执行。其优点在于,指令缓冲区112缓冲指令字节以减少指令格式化逻辑114空乏的机率。

指令格式化逻辑114将指令缓冲区112底部的指令尺寸经过控制信号172提供给控制逻辑122。控制逻辑122使用此控制信号172的指令尺寸以控制指令字节的指令值的移位为经过由控制信号174从指令缓冲区112移出。也就是,控制信号172对于多任务逻辑108以及指令缓冲区112来说,提供了一种移位计数的服务。控制逻辑122也使用控制信号172去控制进入指令缓冲区112的指令字节的加载。控制逻辑122也使用控制信号172以透过控制信号156去控制多任务逻辑108的操作。在一个实施例中,指令格式化逻辑114为具有在每处理器100周期时脉格式化多个指令的能力。

现在请参考图2,其绘示的是图1中指令缓冲区112对指令格式化逻辑114的耦合。指令格式化逻辑114包括几个分离的部分,此几个分离的部分为用于格式化微处理器100中的一个指令的不同的指令字节。在图2所示的实施例中,指令格式化逻辑114包括了一个用以格式化字节0的部分、一个用以格式化字节1的部分、一个用以格式化字节2的部分.....一个用以格式化字节N的部分。相对应地,指令缓冲区112则包括了字节1,2....,N。

格式化逻辑114被配置为格式化指令的字节0的部分经过图1中的数据总线148从指令缓冲区112直接读取字节0。同样地,格式化逻辑114被配置为格式化指令的字节1的部分经过数据总线148从指令缓冲区112直接读取字节1。格式化逻辑114被配置为格式化指令的字节2的部分用经过数据总线148从指令缓冲区112直接读取字节2。以此类推至字节N。

因此,从图2中,可以观察到本发明其优点在于提供指令缓冲区112与指令格式化逻辑114间的一个直接的耦合以致于不需要一个操控逻辑以用于操控指令字节。因此,微处理器100的时脉特性有可能被改善。此优点部分在于因字节宽度指令缓冲区112在一个时间内将一整个指令移出,使得指令缓冲区底部的字节总是为下一个指令的字节0以被指令格式化逻辑所格式化。

本发明优点在于不需要在指令缓冲区112与指令格式化逻辑114间提供一个操控逻辑以操控指令字节至格式化逻辑114的正确部分。一般来说,操控逻辑对于时序会有决定性的影响且因此而增加了微处理器100的时脉周期。然而,凭借本发明的优势,微处理器100的周期时脉在采用一个于此所叙述的BTAC 116时,有可能被缩短。

现在请参考图3,其绘示的是根据本发明图1中多任务逻辑108的方块图。多任务逻辑108包括了一个具有13个16∶1的罩覆多任务器302的装置,而每个罩覆多任务器302接收BSR[15:0],此16个字节为经过数据总线144来自于图1中的字节选择缓存器104。每个罩覆多任务器302选择一个字节。字节凭借罩覆多任务器302被提供在输出M[12:0]上。

罩覆多任务器302为经图1的控制信号156而由控制逻辑122所控制。罩覆多任务器302以互相连接的方式对储存于字节选择缓存器104中的无效指令字节(被有效位106指为)作无罩覆或是舍弃的操作以及仅提供有效指令字节在罩覆多任务器302输出M[12:0]的底部上。也就是在字节选择缓存器104中的第一有效字节将被提供在输出字节M[0]上,第二有效字节在输出字节M[1]上....,以致于当有第13个有效字节存在于字节选择缓存器104中时,此第13个有效字节将会被提供在输出字节M[12]上。因此,举例来说,假设由字节选择缓存器104所输出的字节2(例如BSR[2])为第一个有效字节,而此第一个有效字节将会被输出在M[0]上;假设BSR[3]为有效,其将会输出在M[1]上,以此类推。

多任务逻辑108包括了一个具有24个13:1的排整多任务器304的装置。每个排整多任务器304接收由罩覆多任务器304所输出的13个字节M[12:0]。每个排整多任务器304选择一个字节。被选择的字节被提供在输出A[23:0]上。排整多任务器304经过控制信号156受控制逻辑122所控制。每个排整多任务器304以互相连接的方式排整所接收的来自于罩覆多任务器302的M[12:0]上的有效字节群至在指令缓冲区112中的第一预先移位位置(pre-shift location)。也就是排整多任务器304排整所接收的在M[12:0]上的有效字节群至在指令缓冲区112移出已经被格式化的指令之前的指令字节中的空字节位置。

较上面的排整多任务器304不必全都是13:1的多任务器。在一个实施例中,对于字节23来说,排整多任务器304为仅接收作为输入的M[12]的一个1:1多任务器、对于字节22来说,排整多任务器304为仅接收作为输入的M[12:11]的一个2:1多任务器、对于字节21来说,排整多任务器304为仅接收作为输入的M[12:10]的一个3:1的多任务器以及向下类推至对于字节12来说,排整多任务器304为仅接收作为输入的M[12:1]的一个12:1的多任务器。

在一个实施例中,罩覆多任务器302以及排整多任务器304可组合至一个具有多个多任务器的单一装置中以操作以上图3所描述的组合功能。

多任务逻辑108为包括了一组具有13个2:1的维持/加载(hold/loading)多任务器的装置306,而每个维持/加载多任务器306接收两个输入的字节。其中一个为输入排整多任务器304对应的输出A[n]。对于字节0来说,维持/加载多任务器306由排整多任务器304接收一个作为输入的A[0],对于字节1来说,维持/加载多任务器306由排整多任务器304接收一个作为输入的A[1],以此类推至对于字节12来说,维持/加载多任务器306由排整多任务器304接收一个作为输入的A[12]。对于维持/加载多任务器306来说,第二个输入为为图1中指令缓冲区112提供在总线148上的对应输出IB[12:0]中的一个。也就是对于字节0来说,维持/加载多任务器306由指令缓冲区112接收第二个作为输入的IB[0]、对于字节1来说,维持/加载多任务器306由指令缓冲区112接收第二个作为输入的IB[1],以此类推至对于字节12来说,维持/加载多任务器306由指令缓冲区112接收第二个作为输入的IB[12]。

维持/加载多任务器306会依据在指令缓冲区112中的是否为有效的对应字节,而在两个输入中选择一个。控制逻辑122经过控制信号156控制维持/加载多任务器306。因此,举例来说,假设在指令缓冲区112中的字节5为有效,对于字节5来说,对应的维持/加载多任务器306选择IB[5]输入,以维持在指令缓冲区112中之值,而不是由字节选择缓存器112所接收一个指令字节。相反地,假设在指令缓冲区112中的字节5为无效(例如:字节5在指令缓冲区112中的位置是空的)时,对应的维持/加载多任务器306对于字节5来说,选择A[5]输入以由字节选择缓存器104接收一个指令字节,而不是维持住IB[5]的值。维持/加载多任务器306提供了在输出X[12:0]上的被选择的输入。

多任务逻辑108包括了一组具有13个移位多任务器308的装置,而每个移位多任务器308接收包括了由排整多任务器304的输出(A[23:0])与维持/加载多任务器306的输出(X[12:0])间不同组合所组成的12个输入字节。对于字节0来说,移位多任务器308接收X[11:0],对于字节1来说,移位多任务器308接收X[12:1],对于字节2来说,移位多任务器308接收A[13]以及X[12:2],对于字节3来说,移位多任务器308接收A[14:13]以及X[12:3],以此类推至对于字节12来说,移位多任务器308接收A[23:13]以及X[12]。

移位多任务器308移下由罩覆多任务器302、排整多任务器304以及维持/加载多任务器306根据指令字节被移出指令缓冲区112的数目所选择的字节。也就是当指令格式化逻辑114格式化一个指令时,会由指令缓冲区112读取以及决定被格式化指令的字节尺寸,且此尺寸决定了将由指令缓冲区112移出的字节数目。被格式化指令的尺寸为图1中的移位计数172,且控制逻辑122使用此移位计数172并经过控制信号156控制移位多任务器308选择适当的输入以产生移位。

移位多任务器308的输出为被提供至指令缓冲区112中的一个对应字节位置以加载被罩覆、被排整、被维持/加载以及被移位的指令字节群。指令缓冲区112的加载为经控制信号174由控制逻辑122所控制。

因此,可以观察到图3的多任务逻辑108其优点在于仅将从字节选择缓存器104输出的有效指令字节密集地挤入指令缓冲区112中,且在下列的图标当中,有更详尽的描述。

现在请参考图4,其绘示的是根据本发明图1中分支控制装置的操作说明流程图。流程开始于方块402。

在方块402中,图1中的撷取地址152被提供至图1中的指令快取区102以从指令快取区102中选择指令字节群中的一条线。除此之外,撷取地址152为被提供至图1中的BTAC 116,且此撷取地址152的目标地址4储存在BTAC 116中时,此撷取地址152会在BTAC 116中产生一个命中。接下来的步骤由方块402至方块404。

在方块404中,在步骤402中已被选取的指令群(亦包括分支指令)中的快取线被加载至图1中的字节选择缓存器104中。除此之外,因为包含分支指令的快取线中的撷取地址152在BTAC 116中被快取,因此控制逻辑122会侦测在BTAC 116中的撷取地址152命中。步骤406以及步骤414以下的流程在本质上为同时操作。先被描述的流程包括方块406、408以及412。

在方块406中,控制逻辑122由BTAC 116得到BEG值138,此特定出步骤402中所选出的在快取线中的分支指令之后的指令字节群的偏移信息。因为字节选择缓存器104与一条快取线的尺寸相同,且快取线包含分支指令的快取线在步骤404中被加载至字节选择缓存器104,因此,此BEG值138为在字节选择缓存器104中的分支指令之后的指令群的偏移信息。举例来说,假设分支指令开始于字节3且为2个位组长度,在分支指令之后的指令群将开始于字节选择缓存器中的字节5之前,由BTAC 116所提供的BEG值138将会为5。接下来的步骤由方块406到方块408。

在方块408中,控制逻辑122根据步骤406中从BTAC 116所得的BEG值138,罩覆掉用于字节选择缓存器104中所有在分支指令之后的指令群的有效位群。因此,在字节选择缓存器104中所有被标记为无效的指令字节群将会接着被舍弃,且不被提供至图1的指令缓冲区112中。例如假设BEG值138为5,在字节选择缓存器104中的字节5到15将会标记为无效。接下来的步骤由方块408到方块412。

在方块412中,在字节选择缓存器104中且在步骤408中被标记为有效的指令字节,为凭借控制逻辑122而被加载至指令缓冲区122中。相反地,在字节选择缓存器104中且在步骤408中被标记为无效的指令字节则不被加载至指令缓冲区112。假设在指令缓冲区112之中有已经被格式化的指令字节群时,这些被格式化的指令字节群在有效字节由字节选择缓存器104加载前,被移出指令缓冲区112。从字节选择缓存器104进入指令缓冲区112的有效字节数量为被格式化指令群移出后,指令缓冲区112中的空字节位置数量所限制。

根据图3的以上所述为,此来自于字节选择缓存器104的有效字节在指令缓冲区中的最后一个有效且非被格式化的指令字节之后,直接加载至指令缓冲区112。举例来说,假设位于字节选择缓存器104中有15个字节为有效,且在被格式化字节被移出后,在指令缓冲区112中有9个字节是空的情况下,只有前9个来自于字节选择缓存器104的有效字节会被加载至指令缓冲区112。

下面所叙述的是另一同时发生的步骤流程,包括方块414、416以及418。

在方块414中,分支指令的目标地址为由BTAC 116所得到且被提供至图1中的多任务器118。由BTAC 116所得的目标地址132相当于与在步骤406中由BTAC 116所得到的BEG值138。接下来步骤为方块414到方块416。

在方块416中,多任务器118选择由BTAC 116所提供的目标地址作为指令快取线102的下一个撷取地址152。目标地址132的选择将会引起微处理器100不确定地对在步骤402中被选择快取线中所包含的分支指令的被快取的目标地址132作分支。也就是目标地址132将被作为下一个撷取地址152以选择来自于指令快取区102的包含分支目标指令的快取线。接下来的步骤为方块416到方块418。

在方块418中,一条包含分支指令的目标指令的指令字节群中的快取线被加载至字节选择缓存器104中。在步骤418中,加载包括目标指令字节的快取线至字节选择缓存器104与在步骤412中,将包括分支指令的有效字节由字节选择缓存器104加载至指令缓冲区102的操作在本质上为同时。接下来为将方块412以及方块418合并且进行412,418到方块422的流程。

在方块422中,控制逻辑122罩覆掉有效位群,且此有效字节群为用于在步骤414中根据目标地址132由BTAC 116所得的目标指令之前的所有字节选择缓存器104中的指令字节群。因此,所有在字节选择缓存器104中被标记为无效的指令字节本身将会接着被舍弃且并不被提供至指令缓冲区112。举例来说,假设目标地址132的最不重要位(1east significant bits)为0×7,在字节选择缓存器104中的字节0到字节6将会被标记为无效。接下来的步骤为方块422到方块424。

在方块424中,在分支指令的最后一个字节之后的现在包含目标指令的有效指令字节,由字节选择缓存器104直接被加载至指令缓冲区112中。上述分支控制装置的操作实例可依据图5来作描述。

现在请参考图5,其绘示的是根据本发明在图1中的分支控制器的一个实施例的方块图。图5显示了字节选择缓存器104在图4中两个不同阶层的内容,其标注为104A以及104B。图5也显示了指令缓冲区112在图4中的三个不同阶层的内容,其被标注为112A、112B以及112C。

指令缓冲区112A显示了指令缓冲区112在此实施例中的起始内容。指令缓冲区112A包含了7个有效字节以及6个空的(或无效)字节位置。因此,在此实施例中,每一个指令缓冲区112A中的字节位置0到6包含了一个指令字节,其标注为A到G。

字节选择缓存器104A显示了字节选择缓存器104在被加载在图4中步骤404中所包含得分支指令之后,且在图4中步骤408中根据由在步骤406 BTAC 116所接收的偏移信息而使得有效位被罩覆掉之后的字节选择缓存器104内容。

在字节选择缓存器104A中,字节0包含了一个被标注为Q的指令字节。字节1包含了一个被标注为R的指令字节。字节2包含了一个两字节分支指令的第一个字节,其被标注为″JCC″且为x86传统跳线指令的操作字节。字节3包括了此JCC指令的第二个字节,且代表作为一个替代,故标注为″disp″。

在此实施例中,在分支指令之后的指令字节群的字节偏移为4之前,在图4的步骤406中,被控制逻辑122由BTAC 116所得的BEG值138为4。因此,在图4的步骤408中,控制逻辑122使得字节0到3为有效而4到15为无效。

指令缓冲区112B显示了在此实施例中指令缓冲区112在移出5个被格式化指令字节(例如指令字节A到E)之后且由字节选择缓存器104A加载4个有效指令字节(例如Q、R、JCC以及disp)之后的内容。也就是指令缓冲区112B显示了在图4中步骤412执行后的内容。在分支指令后且占据在字节选择缓存器104A中字节4到15位置的无效指令字节被图3中的罩覆多任务器302舍弃且不被加载至指令缓冲区112中。

指令缓冲区112B的字节0包含了由指令缓冲区112A的字节5偏移下来的指令字节F。指令缓冲区112B的字节1包含了由指令缓冲区112A的字节6偏移下来的指令字节G。也就是说,指令缓冲区112B的字节0以及字节1被维持/加载多任务器306所维持。

指令缓冲区112B的字节2中,包括了由字节选择缓存器104A的字节0通过多任务逻辑108而被加载指令缓冲区112B中且根据图4中的步骤412紧邻于写入告示移位(post-shift)指令缓冲区112B中的最高有效字节的指令字节Q。同样地,指令缓冲区112B的字节3中,包括了由字节选择缓存器104A的字节1通过多任务逻辑108且被加载指令缓冲区112B的字节3中的指令字节R。同样地,指令缓冲区112B的字节4中,包含了由字节选择缓存器104A的字节2通过多任务逻辑108且被加载指令缓冲区112B的字节4中的JCC操作码指令字节。同样地,指令缓冲区112B的字节5包含了由字节选择缓存器104A的字节3通过多任务逻辑108且被加载指令缓冲区112B的字节5中的JCC指令的替代字节。字节选择缓存器104B显示了字节选择缓存器104于图4步骤418中被加载包含分支目标指令的快取线的内容。在此实施例中,置于字节选择缓存器104B的字节13到15中的分支目标指令被标注为X、Y以及Z。字节X、Y以及Z根据其指令长度建构一个或两个或三个指令。因为在此实施例中,目标指令的第一个字节被置于字节选择缓存器104B的字节13中,因此控制逻辑122必须凭借清除相关有效位106以将字节0到12标记为无效。故字节选择缓存器104B的字节0到12将凭借罩覆多任务器302而被舍弃且不被提供至112指令缓冲区。

指令缓冲区112C显示了指令缓冲区112C在不移出任何已格式化的指令字节且加载来自于字节选择缓存器104B的目标指令的三个有效指令字节(如X、Y以及Z)之后的内容。换句话说,指令缓冲区112C显示了在图4中步骤424执行后的内容。占据在字节选择缓存器104B的字节0到12且在目标指令之前的无效指令字节为凭借罩覆多任务器302而被舍弃且不被提供至指令缓冲区112。

在没有任何移出发生之前,指令缓冲区112C的字节0到5包含了与指令缓冲区112B的字节0到5相同之值。其原因在于图1中的指令格式化逻辑114在先前的周期时脉内不能格式化指令。而其原因的一个例子为:在微处理器100管线中指令格式化逻辑114不能格式化一个为字段的指令(例如由一个浮点指令或是先前分支指令的执行所产生,这些都需要耗费许多时脉周器来完成)。

指令缓冲区112C的字节6包含了由字节选择缓存器104B的字节13通过多任务逻辑108且根据步骤424而被加载指令缓冲区112C的字节6中的指令字节X。指令字节X被加载指令缓冲区112C中,且紧邻于分支指令的最后一个字节(例如相邻于指令缓冲区112C中的disp字节)。同样地,指令缓冲区112C的字节7包含了由字节选择缓存器104B的字节14通过多任务逻辑108且根据步骤424而被加载指令缓冲区112C的字节7中的指令字节Y。同样地,指令缓冲区112C的字节8包含了由字节选择缓存器104B的字节15通过通过多任务逻辑108且根据步骤424而被加载指令缓冲区112C的字节8中的指令字节Z。

值得注意的是,分支指令也许会包括在两个不同的指令快取102线中。在一个实施例中,BTAC 116会指派与第一快取线(例如与包含分支指令第一部分的快取线)的撷取地址152相关的命中信号134。在一个替换的实施例中,BTAC 116会指派与第二快取线(例如与包含分支指令第二部分的快取线)的撷取地址152相关的命中信号134。换句话说,BTAC 116快取分支指令第二部分的撷取地址152,而不是第一部分。

从舍弃的例子来看,第1图中的分支控制装置的操作为仅密集将有效指令字节挤入字节宽度指令缓冲区112,移出已格式化的指令字节,且将非格式化的指令字节储存于指令缓冲区112的底部。如第2图所示,指令缓冲区直接耦接指令格式化逻辑114,以致于在指令缓冲区112底部的有效指令字节在没有增加操控逻辑的需求下直接被提供至指令格式化逻辑114。此指令字节由指令缓冲区112至指令格式化逻辑114间的直接供应,本发明优点在于增加指令格式化时间的可利用性且高于在指令缓冲区112与指令格式化逻辑114间需要操控逻辑的架构下,指令格式化时间的可利用性。

而本发明的另一个优点在于,分支控制装置运作时具有字节宽度,且直接耦接于指令缓冲区以在分支指令被指令译码逻辑译码前,根据BTAC所预测的分支预测控制被操作的分支。

虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,例如指令缓冲区在尺寸上也许会有变动,可以较上述实施例中储存更多或更少的指令字节。此外,字节选择缓存器以及指令快取线在尺寸上的变动亦是。因此,任何熟习此技艺者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰,因此本发明的保护范围当视后附的申请专利范围所界定者为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号