CN1542625A - 有效更新分支目标地址快取的装置与方法 - Google Patents
有效更新分支目标地址快取的装置与方法 Download PDFInfo
- Publication number
- CN1542625A CN1542625A CNA2004100018088A CN200410001808A CN1542625A CN 1542625 A CN1542625 A CN 1542625A CN A2004100018088 A CNA2004100018088 A CN A2004100018088A CN 200410001808 A CN200410001808 A CN 200410001808A CN 1542625 A CN1542625 A CN 1542625A
- Authority
- CN
- China
- Prior art keywords
- instruction
- target address
- branch
- branch target
- address cache
- 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 title claims description 56
- 230000015572 biosynthetic process Effects 0.000 claims description 102
- 239000000872 buffer Substances 0.000 claims description 64
- 230000004044 response Effects 0.000 claims description 14
- 230000000712 assembly Effects 0.000 claims description 9
- 238000000429 assembly Methods 0.000 claims description 9
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000001915 proofreading effect Effects 0.000 claims 1
- 230000003111 delayed effect Effects 0.000 abstract 1
- 230000008569 process Effects 0.000 description 37
- 238000010586 diagram Methods 0.000 description 16
- 230000004913 activation Effects 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 230000002596 correlated effect Effects 0.000 description 4
- 238000010606 normalization Methods 0.000 description 3
- 229920006395 saturated elastomer Polymers 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 101150064138 MAP1 gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Landscapes
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
披露了一种具有一分支目标地址快取(branch target address cache,BTAC)的一写入队列的一微处理器。该BTAC的读取平行于一指令快取以预测所存取的快取线内的一分支指令的一目标地址。在一实施例中,该BTAC为单端口;因此,该单端口必需共享于读与写。当需要更新该BTAC时,比如,当认定一分支目标地址时,该微处理器储存该分支目标地址与相关信息于该写入队列内。因此,该写入队列能让该BTAC的更新延迟至该BTAC未被读取时,比如当该指令快取闲置,该BTAC的误测被更正或该BTAC的预测被取代时。如果该写入队列变成全满,则以任何方式来更新该BTAC。
Description
技术领域
本发明涉及一种微处理器的分支预测(branch prediction),且特别是涉及一种利用预测性分支目标地址快取的分支预测。
背景技术
现代的微处理器都是流水线(pipeline)的微处理器。亦即,在微处理器的不同块或流水线阶段中,可同时操作数个指令。由John L.Hennessy与Dayid A.Patterson在其著作:计算机架构:量化法(Computer Architecture:A Quantitative Approach)(由摩根霍夫曼出版社(加州,旧金山)在1996所出的第二版)中,定义流水线为:”在执行时,多个指示彼此重迭的实施技术(an implementation technique whereby multiple instructions areoverlapped in execution)。其提供流水线的绝佳描述:流水线类似于装配线。在车辆装配线中,有许多步骤,各步骤对车辆的组装做出某些贡献。虽然对于不同车辆,各步骤的操作平行于其它步骤。在计算机流水线中,流水线的各流水线完成指令的一部份。类似于装配线,不同步骤完成了平行的不同指令的不同部份。各步骤称为流水线阶段(pipe stage)或流水线部份(pipesegment)。这些阶段彼此相连以形成流水线,指令从一端进入,经由这些阶段处理,并在另一端中输出,就如同装配线处理车辆一般。
同步微处理器是根据时钟周期而操作。一般而言,在各时钟周期,指令从该微处理器的流水线的一阶段前进至另一阶段。在车辆装配线中,如果因为没有车辆要装配使得在线工作人员处于闲置,则该线的产量或性能会下降。相似的,如果在一时钟周期中,某一微处理器的流水线因为没有指令要操作而处于闲置,通常指此状态为流水线气泡(pipeline bubble),则该微处理器的性能会下降。
造成流水线气泡的可能原因之一是分支指令。当处理分支指令时,处理器必需决定该分支指令的目的地址并开始在该目标地址处而不是在该分支指令后的下一地址处撷取指令。甚至,如果该分支指令是一状况分支指令(亦即,必需根据一特定状况是否存在而决定该分支是否要执行),除了决定该目标地址外,该处理器还必需决定该分支指令是否要执行。因为最后决定该目标地址及/或分支结果(亦即分支是否要执行)的该流水线阶段通常处于指令撷取阶段的下方,可能会产生气泡。
为解决此问题,现代微处理器一般应用分支预测机制以在流水线的早期预测目标地址与分支结果。分支预测机制的一例是分支目标地址快取(branch target address cache,BTAC),其平行于从该微处理器的一指令快取撷取指令而预测该分支结果与目标地址。当微处理器执行分支指令且最后决定要执行该分支与决定其目标地址时,该分支指令的地址与其目标地址写入至该BTAC内。下次从该指令快取撷取该分支指令时,该分支指令地址会命中于该BTAC内且该BTAC可在流水线早期输出该分支指令目标地址。
有效的BTAC可排除或减少要等待分支指令决定的气泡数量,以改善处理器性能。然而,当该BTAC预测错误时,错误撷取指令的流水线的部份必需被放弃,以及必需撷取正确指令,当指令放弃与撷取发生时,会在流水线内造成气泡。当微处理器的流水线更深时,BTAC的有效性更会是影响性能的关键处。
BTAC的有效性主要是BTAC的命中率的作用。影响BTAC命中率的因素之一是其所储存目标地址的不同分支指令数量。储存越多的分支指令目标地址,BTAC越有效。然而,微处理器芯片面积总是有限,因而要尽可能令既定功能块(比如BTAC)的面积变小。影响BTAC的实际面积的一因素是将目标地址与相关信息储存于BTAC内的储存单元(cell)的大小。特别是,单端口单元的面积小于多端口单元的面积。由单端口单元组成的BTAC在一既定时钟周期内只能读或写,无法同时进行读写,但由多端口单元组成的BTAC可在一既定时钟周期内同时进行读写。然而,多端口BTAC的面积大于单端口BTAC。这意味着,假设给定BTAC的被允许实际面积,多端口BTAC可储存的目标地址数量必需小于单端口BTAC可储存的目标地址数量,因而会降低BTAC的有效性。因此,由此观点来看,单端口BTAC是较佳的。
然而,由于单端口BTAC在一既定时钟周期内只能读或写,无法同时进行读写,此事实会因为伪性落空(false miss)而降低BTAC有效性。在BTAC需要被读取的周期中,当单端口BTAC正被写入,比如利用新目标地址来更新BTAC或要使某一目标地址无效时,会发生伪性落空。在此情况下,BTAC必需对该读取产生落空,因为其无法供给可能已存在于BTAC内的该目标地址,因为该BTAC正被写入。
因而,需要一种能降低单端口BTAC内的伪性落空的方法与装置。
可能会降低BTAC有效性的另一现象是BTAC会多次储存分支指令的目标地址。此现象可能发生于多向指令集联合(multi-way set-associative)BTAC内。因为BTAC空间有限,多余的目标地址储存会降低BTAC有效性,因为多余BTAC进入点可储存另一分支指令的目标地址。流水线愈长,亦即阶段数愈大,多余目标地址愈可能会存于BTAC内。
同一分支指令在BTAC内被多次快取的最常见情况是在码的紧凑循环(tight loop)内。第一次执行分支指令且其目标地址是写入至该BTAC,比如写至第二向,因为第二向是最久未用。然而,在目标地址写入至BTAC之前,分支指令再次出现,亦即该BTAC查调落空的该指令快取撷取地址,因为该目标地址尚未写入至该BTAC内。接着,会将目标地址第二次写入至该BTAC。如果在该指令集内插入不同分支指令的BTAC读取造成第二向不再是最久未用,则另一向,比如第一向,会被选择成第二次写入该目标地址。现在,同一分支指令的目标地址二次存在于该BTAC内。这是一种BTAC空间浪费且会降低BTAC有效性,因为第二次写入很可能会覆盖另一分支指令的有效目标地址。
因此,需要一种能避免同一分支指令的目标地址的多余快取所造成的有用BTAC空间浪费的方法与装置。
甚至,相关于BTAC预测性的某些情况的组合会造成微处理内的死结(deadlock)。BTAC的分支预测的组合,横跨指令快取边界线的分支指令,以及处理器总线会交易预测性指令撷取的事实,会造成错误情况,导致某些情况下的死结。
因而,需要一种能避免应用预测性BTAC的微处理器内的死结情况的方法与装置。
发明内容
本发明提供一种写入队列以延迟BTAC的写入,直到该BTAC未读取,因而减少伪性落空率。根据本发明的一个方面,提供一种写入队列,改善一微处理器内的一分支目标地址快取(BTAC)的效率。该写入队列包括一要求输入,接收一要求以更新该BTAC。该要求包括一分支指令目标地址。该写入队列还包括多个储存组件,储存该要求输入端所接收的该要求。该写入队列还包括控制逻辑电路,耦合至这些储存组件,响应于一个或多个既定情况而将存于这些储存组件内的这些要求的一写入至该BTAC。
根据本发明的另一方面,提供一种微处理器。该微处理器包括一指令快取,响应于一指令撷取地址而提供指令字节的一快取线。该微处理器还包括一分支目标地址快取(BTAC),耦合至该指令快取,预测存于该快取线内的一分支指令的一分支目标地址。该微处理器还包括一写入队列,耦合至该BTAC,储存用于更新该BTAC的分支目标地址。
根据本发明的另一方面,提供一种更新一微处理器内的一分支目标地址快取(BTAC)的方法。该方法包括下列步骤:产生一要求以更新该BTAC;储存该要求于一队列;以及在该储存步骤的后,根据该要求而更新该BTAC。
根据本发明的另一方面,提供一种实施于一传输介质内的计算机数据信号,包括计算机可读程序代码,以提供一微处理器。该程序代码包括第一程序代码,提供一指令快取,响应于一指令撷取地址而提供指令字节的一快取线。该程序代码包括第二程序代码,提供一分支目标地址快取(BTAC),耦合至该指令快取,以预测存于该快取线内的一分支指令的一分支目标地址。该程序代码包括第三程序代码,提供一写入队列,耦合至该BTAC,以储存用于更新该BTAC的分支目标地址。
本发明的优点在于,其能减少因BTAC被读取时却要写入至BTAC所造成伪性落空的数量,以增加BTAC的效率。此外,本发明可应用单端口BTAC,而非应用面积较大的多端口BTAC,以减少BTAC的面积。此外,本发明能使得BTAC能储存更多的目标地址,因而更有效率,比起相似尺寸的多端口BTAC。
为使本发明的上述和其它目的、特征、和优点能更明显易懂,下文特举一较佳实施例,并结合附图详细说明如下。
附图说明
图1示出了根据本发明的微处理器的框图。
图2示出了根据本发明的图1的微处理器的部份详细框图。
图3示出了根据本发明的图1的BTAC的部份详细框图。
图4示出了根据本发明的图3的目标地址阵列进入点内容的框图。
图5示出了根据本发明的图3的卷标阵列进入点内容的框图。
图6示出了根据本发明的图3的计数器阵列进入点内容的框图。
图7示出了根据本发明的图1的BTAC写入要求内容的框图。
图8示出了根据本发明的图3的BTAC写入队列的框图。
图9示出了根据本发明的图1的BTAC写入队列的操作流程图。
图10示出了根据本发明的图1的该微处理器内的该BTAC的多余目标地址无效逻辑电路的框图。
图11示出了根据本发明的图10的多余目标地址装置的操作流程图。
图12示出了根据本发明的图1的该微处理器内的死结避免逻辑电路的框图。
图13示出了根据本发明的图12的死结避免逻辑电路的操作流程图。
附图标号说明:
100:微处理器 102:指令撷取器
104:指令快取 106:指令缓冲器
108:指令规格化器 112:规格化指令队列
114:指令转译器 116:转译后指令队列
118:缓存器阶段 122:地址阶段
124:数据阶段 126:执行阶段
128:储存阶段 132:写回阶段
134:加法器 136,148,206:多任务器
138:指令 142:BTAC
144:BTAC写入队列(BWQ) 146:队列深度
152:分支误测信号 154:预测取代信号
156:指令缓冲器全满信号 158:指令快取闲置信号
162:目前撷取地址 164:预测目标地址
166:下一撷取地址 168:目前指令指针
172:正确地址 174:取代预测目标地址
176:BTAC写入要求 178:BTAC写入队列地址
182:地址 202:仲裁器
212:BTAC读取要求信号 214:多余目标地址(TA)要求信号
216:死结要求信号 218:BWQ非空信号
222:BWQ全满信号 234:多余TA地址
236:死结地址 244:多余TA数据信号
246:死结数据信号 248:BWQ数据信号
252,258,262,1204:控制信号
256:数据信号 302:目标地址阵列
304:卷标阵列 306:计数器阵列
312:目标地址阵列进入点 314:卷标阵列进入点
316:计数器阵列进入点 402:分支目标地址
404,708:开始字段 406:横跨位
502:标签 504:A有效位
506:B有效位 508:lru字段
602:预测状态A计数器 604:预测状态B计数器
606:A/Blru位 702:分支指令地址字段
706:目标地址 712:横跨位
714:写入致能A字段 716:写入致能B字段
718:无效A字段 722:无效B字段
724:向字段 802:储存组件
804,1004:有效位 806,1014:控制逻辑电路
1002:标签 1006:匹配信号
1012:比较器 1022:多余TA无效数据缓存器
1024:多余TA标志缓存器 1026:多余TA地址缓存器
1202:F_wrap信号 1206:落空信号
1208:预测信号 1212:执行/不执行(T/NT)信号
1214:B_wrap信号 1222:死结无效数据缓存器
1224:死结标志缓存器 1226:死结地址缓存器
具体实施方式:
现参考图1,示出了根据本发明的一微处理器100的框图。该微处理器100包括一流水线微处理器。
微处理器100包括一指令撷取器102。指令撷取器102从耦合至该微处理器100的一存储器(比如,系统存储器)撷取出指令138。在一实施例中,指令撷取器102从快取线的基本单位(granularity)中的存储器撷取指令。在一实施例中,指令是长度可变式指令。亦即,微处理器100的指令集内的所有指令的长度都不相同。在一实施例中,微处理器100包括指令集本质上兼容于指令长度可变的x86架构指令集的一微处理器。
微处理器100还包括一指令快取104,耦合至指令撷取器102。指令快取104接收指令撷取器102输出的指令字节的快取线并快取该微处理器100后续所用的指令快取线。在一实施例中,指令快取104包括64KB的4向指令集联合L1(level-1)快取。当一指令落空于该指令快取104内时,指令快取104会通知指令撷取器102,其响应地从存储器撷取包括该落空指令的该快取线。一目前撷取地址162输入至指令快取104以选择快取线。在一实施例中,指令快取104内的快取线包括32字节。指令快取104也产生一指令快取闲置信号158。当指令快取104闲置时,指令快取104产生其为真值的指令快取闲置信号158。当指令快取104未被读取时,指令快取104会闲置。在一实施例中,如果指令快取104未被读取,则该微处理器的BTAC142(将于底下详细讨论)也未被读取。
微处理器100还包括一指令缓冲器106,耦合至指令快取104。指令缓冲器106从指令快取104接收指令字节的快取线并暂存这些快取线直到其被规格化成可被微处理器100执行的明确性指令。在一实施例中,指令缓冲器106包括4个进入点(entry)以储存高达4条的快取线。指令缓冲器106产生指令缓冲器全满信号156。当指令缓冲器106全满时,指令缓冲器106产生其为真的指令缓冲器全满信号156。在一实施例中,如果指令缓冲器106全满,则BTAC142不能被读取。
微处理器100还包括一指令规格化器108,耦合至指令缓冲器106。指令规格化器108从指令缓冲器106接收指令字节并从而产生规格化指令。亦即,指令规格化器108检视指令缓冲器106内的一串指令字节,决定哪些字节包括下一指令与其长度,并输出下一指令与其长度。在一实施例中,规格化指令包括本质上兼容于x86架构指令集的指令。
指令规格化器108还包括产生分支目标地址的逻辑电路,称为取代预测目标地址174。在一实施例中,分支目标地址产生逻辑电路包括一加法器,将一相对分支指令的偏差加至分支指令地址以产生取代预测目标地址174。在一实施例中,该逻辑电路包括一分支目标缓冲器以产生间接分支指令的目标地址。在一实施例中,该逻辑电路包括一呼叫/回传堆栈,以产生呼叫与回传指令的目标地址。指令规格化器108还包括一预测取代信号154。指令规格化器108产生其为真的预测取代信号154以取代该微处理器100内的BTAC142所做的分支预测,将在下面详细描述。亦即,如果指令规格化器108内的逻辑电路所产生的目标地址不符合BTAC142所产生目标地址,则指令规格化器108产生为真的预测取代信号154以使得该BTAC142的预测所撷取的指令被放弃并使得微处理器100分支至该取代预测目标地址174。在一实施例中,在指令被放弃且微处理器100分支至该取代预测目标地址174的时间内,BTAC142不能被读取。
微处理器100还包括一规格化指令队列112,耦合至指令规格化器108。规格化指令队列112接收从指令规格化器108输出的规格化指令并暂存这些规格化指令直到其被转译成微指令。在一实施例中,规格化指令队列112包括储存高达12个规格化指令的进入点,虽然图12只显示出4个进入点。
微处理器100还包括一指令转译器114,耦合至规格化指令队列112。指令转译器114将存于该规格化指令队列112内的该规格化指令转译成微指令。在一实施例中,微处理器100包括精简指令集计算机(reducedinstruction set computer,RISC)核心,其执行本身或精简指令集的微指令。
微处理器100还包括一转译后指令队列116,耦合至指令转译器114。转译后指令队列116接收从指令转译器114传来的转译后微指令并暂存这些微指令直到其可被其余微处理器的流水线执行为止。
微处理器100还包括一缓存器阶段118,耦合至转译后指令队列116。缓存器阶段118包括多个缓存器以储存指令运算子与结果。缓存器阶段118包括使用者可视缓存器档案以储存微处理器100的使用者可视状态。
微处理器100还包括一地址阶段122,耦合至缓存器阶段118。地址阶段122包括地址产生逻辑电路,产生存储器存取指令(比如加载或储存指令及分支指令)的存储器地址。
微处理器100还包括一数据阶段124,耦合至地址阶段122。数据阶段124包括从存储器加载数据的逻辑电路及快取从存储器所加载数据的一个或多个快取。
微处理器100还包括一执行阶段126,耦合至数据阶段124。执行阶段126包括执行指令的执行单元,比如执行算数与逻辑指令的算数与逻辑单元。在一实施例中,执行阶段126包括整数执行单元,浮点执行单元,MMX执行单元与SSE执行单元。执行阶段126还包括分支指令决定逻辑电路。特别是,执行阶段126决定分支指令是否要执行及BTAC142先前误测的分支指令是否要执行。此外,执行阶段126决定BTAC142先前预测的分支目标地址是否被BTAC142误测,亦即是否不正确。如果执行阶段126决定先前分支预测是不正确的,执行阶段126产生其为真值的分支误测信号152,以使得由于BTAC142误测所撷取的指令被放弃且使得该微处理器100分支至该正确地址172。在一实施例中,在指令被放弃且使得该微处理器100分支至该正确地址172的期间内,BTAC142不能被读取。
微处理器100还包括一储存阶段128,耦合至执行阶段126。储存阶段128包括响应于储存微指令而将数据存至存储器的逻辑电路。储存阶段128产生一正确地址172。正确地址172包括分支指令的正确分支目标地址。亦即,正确地址172是分支指令的非预测性目标地址。当执行与确定分支指令时,正确地址172也写入至BTAC142,这将在下面详细描述。储存阶段128也产生一BTAC写入要求176以更新BTAC142。BTAC写入要求176将参考图7做详细描述。
微处理器100还包括一写回阶段132,耦合至储存阶段128。写回阶段132包括将指令结果写至缓存器阶段118的逻辑电路。
微处理器100还包括BTAC142。BTAC142包括可快取目标地址与其它分支预测信息的高速缓存。BTAC142响应于从一多任务器148接收的一地址182而产生一预测目标地址164。在一实施例中,BTAC142包括单端口高速缓存,被BTAC142的读取与写入存取所共享,因而使得BTAC142有伪性落空(falsemiss)的机率。BTAC142与多任务器148将在下面详述。
微处理器100还包括一第二多任务器136,耦合至BTAC142。多任务器136选择6个输入之一以输出成一目前撷取地址162。输入之一是由一加法器134所产生的一下一撷取地址166,加法器134对目前撷取地址162加上快取线的大小以产生该下一撷取地址166。在从指令快取104正常撷取一快取线后,多任务器136选择该下一撷取地址166以输出成该目前撷取地址162。另一输入是目前撷取地址162。另一输入是BTAC预测目标地址164,如果BTAC142指示一分枝指令存在于从该指令快取104的该目前撷取地址162所择出的该快取线内且BTAC142预测出该分支指令要被执行,则多任务器136选择BTAC预测目标地址164。另一输入是从储存阶段128接收的正确地址172,多任务器136选择正确地址172以校正一分支误测。另一输入是从指令规格化器108接收的取代预测目标地址174,多任务器136选择该取代预测目标地址174以取代该BTAC测试目标地址164。另一输入是一目前指令指针168,其指向目前正被该指令规格化器108规格化的指令的地址。多任务器136选择该目前指令指针168以避免死结情况,如下所述。
微处理器100还包括一BTAC写入队列(BWQ)144,耦合至BTAC142。BTAC写入队列144包括多个储存组件以暂存BTAC写入要求176,直到其可被写入至BTAC142为止。BTAC写入队列144接收该分支误测信号152,该预测取代信号154,该指令缓冲器全满信号156,与该指令快取闲置信号158。有利的是,BTAC写入队列144能利用BTAC写入要求176来延迟BTAC142的更新,直到输入信号152-158所指示的适当时间,亦即BTAC142未被读取的时间,以增加BTAC142的效率,将在下面详述。
BTAC写入队列144产生一BTAC写入队列地址178,其输入至多任务器148。BTAC写入队列144还包括储存一目前队列深度146的一缓存器。队列深度146指出目前存于BWQ144内的有效BTAC写入要求176的数量。队列深度146的初始值为0。每次将一BTAC写入要求176存至BTAC写入队列144内,队列深度146都会增加。每次将一BTAC写入要求176从BWQ144移走,队列深度146都会减少。BTAC写入队列144将在下面详述。
现参考图2,显示根据本发明的图1的微处理器的部份详细框图。图2显示BTAC写入队列144,BTAC142与图1的多任务器148,另增加一仲裁器202,以及耦合于该BTAC写入队列144与该BTAC142间的3-输入多任务器206。虽然图1的多任务器148只接收2个输入,多任务器148是4-输入多任务器,如图2所示。如图2所示,BTAC142包括一读/写输入,一地址输入与一数据输入。
如图1所示,多任务器148接收该目前撷取地址162与该BWQ地址178。此外,多任务器148也接收一多余TA地址234与一死结地址236,将分别参考图10-11与图12-13做详细描述。多任务器148根据该仲裁器202所产生的一控制信号258而选择其4个输入之一以输出成图1的一地址数据182,该地址数据182是输入至该BTAC142的该地址输入。
该多任务器206接收一多余TA数据信号244与一死结数据信号246,将分别参考图10-11与图12-13做详细描述。多任务器206也接收从该BTAC写入队列144传来的一BWQ数据信号248,其为该目前BTAC写入队列144需要更新该BTAC142的数据。多任务器206根据该仲裁器202所产生的一控制信号262而选择三个输入之一以输出成一数据信号256,其输入至该BTAC142的数据输入。
仲裁器202仲裁对该BTAC142要求存取的多个来源。当BTAC142被读或写时,仲裁器202产生一信号252至该BTAC142的该读/写输入以控制。仲裁器202接收一BTAC读取要求信号212,其代表平行于也利用目前撷取地址162而对指令快取104的读取的利用目前撷取地址162而读取BTAC142的一要求。仲裁器202也接收一多余目标地址(TA)要求信号214,其代表要无效该BTAC142内的该多余TA地址234所选指令集内的相同分支指令的一多余进入点的一要求,将在下面描述。仲裁器202也接收一死结要求信号216,其代表要将误测该死结地址236所选的指令集内的一分支指令未横跨快取边界线的该BTAC142内的一进入点无效化的一要求,将在下面描述。仲裁器202也接收从该BTAC写入队列144输出的一BWQ非空信号218,其代表有待处理的至少一要求以更新该BWQ地址178所选指令集内的该BTAC142内的一进入点,这将在下面描述。仲裁器202也接收从该BTAC写入队列144输出的一BWQ全满信号222,其代表该BTAC写入队列144填满了要更新该BWQ地址178所选指令集内的该BTAC142内的一进入点的待处理要求,将在下面描述。
在一实施例中,仲裁器202指定优先权,如下面的表1所示,其中1代表最高优先权而5代表最低优先权:
1-死结要求216
2-BMQ全满222
3-BTAC读取要求212
4-多余TA要求214
5-BWQ非空218
现参考图3,图3示出了根据本发明的图1的BTAC142的详细框图。如图3所示,该BTAC142包括一目标地址阵列302,一卷标阵列304,与一计数器阵列306。各阵列302,304与306接收图1的地址182。图3的实施例显示4向指令集联合BTAC142高速缓存。在另一实施例中,BTAC142包括2向指令集联合高速缓存。在一实施例中,该目标地址阵列302与该卷标阵列304是单端口,但计数器阵列306是具有一读取端口与一写入端口的双端口,因为计数器阵列306的更新频率高于该目标地址阵列302与该卷标阵列304的更新频率。
该目标地址阵列302包括一储存组件阵列,以储存能快取分支目标地址与相关分支预测信息的目标地址阵列进入点312。目标地址阵列进入点312的内容将参考图4而在下面描述。该卷标阵列304包括一储存组件阵列,以储存可储存地址卷标与相关分支预测信息的卷标阵列进入点314。卷标阵列进入点314的内容将参考图5而在下面描述。该计数器阵列306包括一储存组件阵列,以储存可储存分支结果预测信息的计数器阵列进入点316。计数器阵列进入点316的内容将参考图6而在下面描述。
各目标地址阵列302,卷标阵列304,与计数器阵列306规划成4向,如所示的第0向(way0),第1向(way1),第2向(way2)与第3向(way3)。最好是,目标地址阵列302的各向储存2个进入点或一部份,以快取分支目标地址与预测性分支信息,由A与B代表,使得如果有两个分支指令存在于快取线内,BTAC142可预测出适当的分支指令。
各阵列302-306由图1的地址182做索引。地址182的低位选择各阵列302-306内的快取线。在一实施例中,各阵列302-306包括128个指令集。因此,BTAC142能快取高达1024个目标地址,各指令集的各向(各指令集有4向)有2个地址。最好是,阵列302-306由地址182的位[11:5]做索引以选择BTAC142内的4向指令集。
现参考图4,图4示出了根据本发明的图3的目标地址阵列进入点312的内容。
该目标地址阵列进入点312包括一分支目标地址(TA)402。在一实施例中,目标地址402包括32-位地址,从分支指令的先前执行快取得到。BTAC142提供关于预测TA输出164的目标地址402。
该目标地址阵列进入点312还包括一开始字段404。开始字段404代表响应于该目前撷取地址162而从该指令快取104输出的一快取线内的该分支指令的第一字节的字节偏差(byte offset)。在一实施例中,一快取线包括32字节;因此,开始字段404包括5位。
该目标地址阵列进入点312还包括一横跨(wrap)位406。如果该预测分支指令是横跨指令快取104的两快取线的话,横跨位406为真。BTAC142提供关于B_wrap信号1214的横跨位406,将参考图12在下面讨论。
请参考图5,图5示出了根据本发明的图3的卷标阵列进入点314的内容。
该卷标阵列进入点314包括一卷标502。在一实施例中,卷标502包括该分支指令的地址的高阶20位,该分支指令使该目标地址阵列302内的相关进入点储存一预测目标地址402。如果该进入点为有效的话,BTAC142比较标签502与图1的地址182的高阶20位以决定该进入点是否匹配于地址182,亦即地址182是否命中于BTAC142内。
该卷标阵列进入点314还包括一A有效位504,如果该目标地址阵列302内的相关进入点的A部份内的该目标地址402为有效的话,A有效位504为真。该卷标阵列进入点314还包括一B有效位506,如果该目标地址阵列302内的相关进入点的B部份内的该目标地址402为有效的话,该B有效位506为真。
该卷标阵列进入点314还包括一3-位lru字段508,其指示所选指令集的该4向的哪一向是lru(Least Recently Used,最久未用)。在一实施例中,当执行BTAC分支时,BTAC142只更新该lru字段508。亦即,只有当BTAC142预测一分支指令将被执行且该微处理器100根据预测而分支至该BTAC142所提供的该预测目标地址164时,BTAC142才会更新该lru字段508。当BTAC分支正被执行时,在BTAC142未被读取且不需要使用BTAC写入队列144的期间内,BTAC142会更新lru字段508。
请参考图6,图6示出了根据本发明的图3的计数器阵列进入点316的内容。
计数器阵列进入点316包括一预测状态A计数器602。在一实施例中,该预测状态A计数器602是2-位饱和计数器,每次该微处理器100决定要执行相关分支指令时,其往上计数;每次不执行相关分支指令时,其往下计数。往上计数时,该预测状态A计数器602饱和于b`11的二进制值;往下计数时,该预测状态A计数器602饱和于b`00的二进制值。在一实施例中,如果该预测状态A计数器602的值是b`11或b`10,则BTAC142预测相关于所选目标地址阵列进入点312的A部份的分支指令要被执行;否则,BTAC142预测分支指令不要被执行。计数器阵列进入点316还包括一预测状态B计数器604,其操作相似于该预测状态A计数器602,但其相关于所选目标地址阵列进入点312的B部份。
计数器阵列进入点316还包括一A/Blru位606。A/Blru位606内的b`1的二进制值代表所选目标地址阵列进入点312的A部份是最久未用;否则,则是所选目标地址阵列进入点312的B部份是最久未用。在一实施例中,当分支指令到达会决定分支结果(亦即分支要执行与否)的该储存阶段128时,A/Blru位606连同该预测状态A与B计数器602与604一起被更新。在一实施例中,更新计数器阵列进入点316不需要使用到BTAC写入队列144,因为计数器阵列306包括一读取端口与一写入端口,如图3所示。
现请参考图7,图7示出了根据本发明的图1的BTAC写入要求176的内容。图7显示输入至BTAC写入队列144的BTAC写入要求信号176内的由储存阶段128所产生的用于更新一BTAC142的进入点的信息,其也是存于BTAC写入队列144的进入点内的内容,如图8所示。
BTAC写入要求176包括一分支指令地址字段702,其是要更新该BTAC142的先前执行分支指令的地址。当该写入要求176接着更新BTAC142时,分支指令地址字段702的高阶20位存至图5的卷标阵列进入点314的卷标字段502。分支指令地址字段702的低阶7位[11:5]当成BTAC142的索引。在一实施例中,分支指令地址字段702是32-位字段。
BTAC写入要求176还包括一开始字段708,以储存于图4的开始字段404内。BTAC写入要求176还包括一横跨位712,以储存于图4的横跨位406内。
BTAC写入要求176还包括一写入致能A字段714,其代表是否要利用BTAC写入要求176指定的信息来更新所选目标地址阵列进入点312内的A部份。BTAC写入要求176还包括一写入致能B字段716,其代表是否要利用BTAC写入要求176指定的信息来更新所选目标地址阵列进入点312内的B部份。
BTAC写入要求176还包括一无效A字段718,其代表是否要无效化所选目标地址阵列进入点312内的A部份。无效化所选目标地址阵列进入点312内的A部份系包括:清除图5的该A有效位504。BTAC写入要求176还包括一无效B字段722,其代表是否要无效化所选目标地址阵列进入点312内的B部份。无效化所选目标地址阵列进入点312内的B部份包括:清除图5的该B有效位506。
BTAC写入要求176还包括一4-位向字段724,其指定要更新所选指令集的四向的哪一向。向字段724是全解碼。在一实施例中,当微处理器100读取BTAC142以得到分支预测时,微处理器100决定要放于向字段724内的值并通过流水线阶段而将该值往下送至储存阶段128以包含于该BTAC写入要求176内。如果微处理器100正在更新BTAC142内的一既有进入点,亦即,如果目前撷取地址162命中于BTAC142内,微处理器100将既有进入点的向设于向字段724内。如果微处理器100正在写入新进入点于BTAC142内,比如,新分支指令,微处理器100将所选的BTAC142指令集的最久未用向设于向字段724内。在一实施例中,当微处理器100读取BTAC142以得到分支预测时,微处理器100从图5的lru字段508来决定最久未用向。
现参考图8,图8示出了根据本发明的图3的BTAC写入队列144的框图。
BTAC写入队列144包括复数储存组件802以储存图7的BTAC写入要求176。在一实施例中,BTAC写入队列144包括6个储存组件802以储存6笔BTAC写入要求176,如图所示。
BTAC写入队列144还包括一有效位804,相关于各BTAC写入要求进入点802;如果相关进入点为有效,则有效位804为真;如果相关进入点为无效,则有效位804为假。
BTAC写入队列144还包括控制逻辑电路806,耦合至储存组件802与有效位804。控制逻辑电路806也耦合至队列深度缓存器146。当有一BTAC写入要求176加载至BTAC写入队列144时,控制逻辑电路806增加队列深度146;当BTAC写入要求176从BTAC写入队列144移出时,控制逻辑电路806减少队列深度146。控制逻辑电路806接收从图1的储存阶段128传来的BTAC写入要求信号176并将所接收的要求存于进入点802。控制逻辑电路806也接收图1的分支误测信号152,预测取代信号154,指令缓冲器全满信号156与指令快取闲置信号158。当队列深度146大于0时,控制逻辑电路806产生其为真的图2的BWQ非空信号218。当当队列深度146的值等于进入点802的总数量(在图8的实施例中为8)时,控制逻辑电路806产生其为真的图2的BWQ全满信号222。当控制逻辑电路806产生其为真的BWQ非空信号218时,控制逻辑电路806将BTAC写入队列144的最旧(或最底部)进入点802的分支指令地址702设于图1的BWQ地址信号178内。此外,当控制逻辑电路806产生其为真的MWQ非空信号218时,控制逻辑电路806也将BTAC写入队列144的最旧(或最底部)进入点802的图7的字段706-724设于BWQ数据信号248内。
现参考图9,图9示出了根据本发明的图1的BTAC写入队列144的操作流程图。流程开始于决定块902。
在决定块902,BTAC写入队列144藉由决定图1的队列深度146是否等于BTAC写入队列144内的总进入点数量来决定BTAC写入队列144是否全满。如果全满,流程跳至块918以更新BTAC142;否则,流程跳至决定块904。
在决定块904,BTAC写入队列144藉由检查该指令快取闲置信号158来决定图1的该指令快取104是否闲置。如果闲置,必要时,流程跳至决定块922以更新BTAC142因为BTAC142可能未被读取;否则,流程跳至决定块906。
在决定块906,BTAC写入队列144藉由检查该指令缓冲器全满信号156来决定图1的指令缓冲器106是否全满。如果全满,必要时,流程跳至决定块922以更新BTAC142因为BTAC142可能未被读取;否则,流程跳至决定块908。
在决定块908,BTAC写入队列144藉由检查该预测取代信号154来决定BTAC142分支预测是否已被取代。如果是,必要时,流程跳至决定块922以更新BTAC142因为BTAC142可能未被读取;否则,流程跳至决定块912。
在决定块912,BTAC写入队列144藉由检查该分支误测信号152来决定BTAC142分支预测是否已被校正。如果是,必要时,流程跳至决定块922以更新BTAC142因为BTAC142可能未被读取;否则,流程跳至决定块914。
在决定块914,BTAC写入队列144决定是否已产生该BTAC写入要求176。如果否,流程跳回至决定块902;否则,流程跳至块916。
在决定块916,BTAC写入队列144加载该BTAC写入要求176并增加队列深度146。该BTAC写入要求176被加载至BTAC写入队列144的最顶端的无效进入点,接着该进入点被标示为有效。流程跳回至决定块902。
在决定块918,BTAC写入队列144利用BTAC写入队列144内的最旧或底部进入点来更新BTAC142,并减少队列深度146。BTAC写入队列144接着往下移一个进入点。藉由将最旧进入点的图7的分支指令地址字段702的值设成BWQ地址信号178,以及将最旧BTAC写入要求176的其它部份设于BWQ数据信号248,BTAC写入队列144利用BTAC写入队列144内的最旧进入点来更新BTAC142。此外,BTAC写入队列144发出其为真的BWQ非空信号218至图2的仲裁器202。如果流程从决定块902跳至块918,BTAC写入队列144也发出其为真的BWQ全满信号2228至图2的仲裁器202。流程从块918跳至决定块914。
要注意,如果在BTAC读取要求信号212也在待处理期间内,BTAC写入队列144发出该BWQ全满信号222且该仲裁器202允许BTAC写入队列144存取BTAC142;则BTAC142将会落空,但如果BTAC142所预测的分支指令的有效目标地址存在于BTAC142内的目前撷取地址162所指定的快取线的话,此落空系为伪性落空。然而,有利的是,藉由在大部份情况下将BTAC142的写入延迟到BTAC142未被读取,BTAC写入队列144可降低BTAC142的伪性落空的可能性,如图9所示。
在决定块922,控制逻辑电路806藉由决定队列深度146是否等于0来决定是否BTAC写入队列144为空。如果是,流程跳至决定块914;否则,流程跳至决定块922以更新BTAC142因为BTAC142可能未被读取。
现参考图10,图10示出了根据本发明的图1的该微处理器100内的将该BTAC内多余目标地址无效化的逻辑电路的框图。
图10示出了图3的BTAC142的卷标阵列304接收图1的地址182并响应性产生4个标签,标示为tag01 002A,tag1 1002B,tag2 1002C与tag31002D,总称为标签1002。卷标1002包括从卷标阵列304的4向的各向传来的图5的标签502。此外,卷标阵列304响应性产生8个有效位[7:0],标示为1004,其为从卷标阵列304的4向的各向传来的A有效位504与B有效位506。
微处理器100还包括比较器1012,耦合至卷标阵列304,该比较器1012接收地址182。在图10的实施例中,比较器1012包括4个20-位比较器,各比较器比较地址182的高阶20位与相关卷标1002以产生四个匹配信号,标示为match0 1006A,match1 1006B,match2 1006C与match3 1006D,总称为匹配信号1006。如果地址182匹配于相关卷标1002,则比较器1012产生为真值的匹配信号1006。
微处理器100还包括控制逻辑电路1014,耦合至比较器1012,该电路1014接收匹配信号1006与有效信号1004。如果卷标阵列304的所选指令集的向中有多向具有其为真值的匹配信号1006与至少一个其为真值的有效位1004,则控制逻辑电路1014储存一真值于多余TA标志缓存器1024内,以代表同一分支指令的一个以上的有效目标地址存于BTAC142内。此外,控制逻辑电路1014使得地址182加载至于多余TA地址缓存器1026内。最后,控制逻辑电路1014加载多余TA无效数据至多余TA无效数据缓存器1022内。在一实施例中,存于多余TA无效数据缓存器1022内的数据相似于图7的BTAC写入要求176,除了未储存分支指令地址702外,因为该分支指令的地址是存于多余TA地址缓存器1026内;且也未储存目标地址706,开始位708,与横跨位712,因为其在无效BTAC142进入点内是无关紧要的;因而,当进行多余TA无效化时,目标地址阵列302不会被写入,而只有卷标阵列304被更新以无效该多余BTAC142进入点。该多余TA无效数据缓存器1022的输出包括图2的多余TA无效数据信号244。该多余TA标志缓存器1024的输出包括图2的多余TA要求214。该多余TA地址缓存器1026的输出包括图2的多余TA地址234。在一实施例中,存于该多余TA无效数据缓存器1022与该多余TA标志缓存器1024内的该向值724的产生等式示于下面的表2。在表2中,有效位[3]包括A有效位[3]504与B有效位[3]506的逻辑OR结果;有效位[2]包括A有效位[2]504与B有效位[2]506的逻辑OR结果;有效位[1]包括A有效位[1]504与B有效位[1]506的逻辑OR结果;以及有效位[0]包括A有效位[0]504与B有效位[0]506的逻辑OR结果。
RedundantInvalWay[3]=(valid[3]&match[3])&((valid[0]&match[0])|(valid[1]&match[1])|(valid[2]&match[2]));
RedundantInvalWay[2]=(valid[2]&match[2])&((valid[0]&match[0])|(valid[1]&match[1]));
RedundantInvalWay[1]=(valid[1]&match[1])&(valid[0]&match[0]);RedundantInvalWay[0]=0;/*Way 0永远不会被无效*/
RedundanInAFlag=((valid[3]&match[3])&(valid[2]&match[2]))|
((valid[3]&match[3])&(valid[1]&match[1]))|
((valid[3]&match[3])&(valid[0]&match[0]))|
((valid[2]&match[2])&(valid[1]&match[1]))|
((valid[2]&match[2])&(valid[0]&match[0]))|
((valid[1]&match[1])&(valid[0]&match[0]));
为使图10的多余目标地址无效逻辑电路的适当操作,如图11所示,将一串的指令执行为例做说明,其可在BTAC142内产生同一分支指令的多余目标地址进入点。
图1的第一目前撷取地址162输入至指令快取104与BTAC142。第一目前撷取地址162所选的快取线包括一分支指令,称为分支-A。第一目前撷取地址162选择BTAC142内的一指令集,称为指令集N。指令集N的向内没有一个标签1002匹配于第一目前撷取地址162;因此,BTAC142产生落空。在此例中,lru值508所代表的最久未用向是2。因此,关于分支-A的更新BTAC142的信息系沿着流水线往下送,连同代表向2必需被更新的分支-A。
接着,输入一第二目前撷取地址162至该指令快取104与BTAC142。由第二目前撷取地址162所选的快取线包括一分支指令,称为分支-B。第二目前撷取地址162也选择指令集N且命中于指令集N的3向;接着,BTAC142产生一命中。此外,BTAC142更新指令集N的lru值508为1向。
接着,因为分支-A是码的紧凑循环的一部份,再次输入该第一目前撷取地址162至该指令快取104与BTAC142,并再次选择指令集N。因为分支-A的第一次执行未到达图1的储存阶段128,BTAC142未利用分支-A的目标地址做更新。接着,BTAC142再次产生落空。然而,此次的lru值508所指的最久未用向是1,因为lru508响应于分支-B的命中而被更新。因此,关于分支-A的第二次执行的更新BTAC142的信息是沿着流水线往下送,连同代表向1必需被更新的分支-A的第二次执行。
接着,该第一分支-A到达该储存阶段128并产生一BTAC写入要求176以利用分支-A的目标地址来更新指令集N的向2,这将于后续进行。
接着,该第二分支-A到达该储存阶段128并产生一BTAC写入要求176以利用分支-A的目标地址来更新指令集N的向1,这将于后续进行。因此,同一分支指令,分支-A,的两个有效进入点存在于BTAC142内。这些进入点之一是多余的且造成BTAC142的使用较无效率,因为该多余进入点可以被另一分支指令使用及/或会占去另一分支指令的有效目标地址。
现参考图11,图11示出了根据本发明的图10的多余目标地址装置的操作流程图。流程开始于块1102。
在块1102,仲裁器202允许图2的BTAC读取要求212对BTAC142的存取,造成多任务器148选择目前撷取地址162以设于图1的地址信号182上并产生图2的控制信号252以代表BTAC142的读取。接着,目前撷取地址162的低阶位通过地址182而当成选择BTAC142的指令集的索引。流程接续至块1104。
在块1104,比较器1012比较所选BTAC142的指令集的所有4个向的图10的卷标1002与设于地址信号182上的目前撷取地址162的高阶位以产生图10的匹配信号1006。控制逻辑电路1014接收图10的匹配信号1006与有效位1004。流程接续至块1106。
在块1106,控制逻辑电路1014决定是否发生一个以上的有效标签匹配。亦即,根据有效位1004与匹配信号1006,控制逻辑电路1014决定是否有目前撷取地址162所选的BTAC142的指令集内的2个以上的向有一有效匹配标签1002。如果是,流程接续至块1108;否则,流程结束。
在块1108,控制逻辑电路1014储存一真值于多余TA标志缓存器1024,储存地址182于多余TA地址缓存器1026,以及储存无效数据于多余TA无效数据缓存器1022。特别是,控制逻辑电路1014储存其为真值的写入致能A字段714、写入致能B字段716、无效A字段718与无效B字段722于多余TA无效数据缓存器1022。此外,控制逻辑电路1014将根据图10所描述的表2的向字段724的值存于多余TA无效数据地址缓存器1022。流程接续至块1112。
在块1112,仲裁器202允许图2的多余TA要求214对BTAC142的存取,造成多任务器148选择多余TA地址234以设于地址信号182上且产生图2的控制信号252以指示BTAC142的写入。接着,多余TA地址234的低阶位通过地址182而当成选择BTAC142的指令集的索引。BTAC142接收多余TA数据缓存器1022所输出的多余数据信号244并将所选指令集内的向字段724所指向的这些向无效化。流程结束于块1112。
现参考图12,图12示出了根据本发明的该微处理器100内的死结避免逻辑电路的框图。
图12显示图1的BTAC142,指令快取104,指令缓冲器106,指令规格化器108,规格化后指令队列112与多任务器136,以及图10的控制逻辑电路1014。
如图12,微处理器100还包括一死结无效数据缓存器1222,一死结标志缓存器1224,与一死结地址缓存器1226。
指令规格化器108译码存于该指令缓冲器106内的指令,以及如果指令规格化器108译码出横跨两快取线的分支指令,则产生其为真的F_wrap信号1202。特别是,在指令规格化器1 08译码出横跨两快取线的分支指令时,一旦已译码出存于指令缓冲器106内的一第一快取线内的一横跨分支指令的该第一部份,不论指令规格化器108是否已译码尚未存于指令缓冲器106内的该第二快取线内的该横跨分支指令的其它部份,指令规格化器108产生其为真的F_wrap信号1202。F_wrap信号1202输入至控制逻辑电路1014。
当目前撷取地址162落空时,指令快取104产生为真值的落空信号1206。落空信号1206输入至控制逻辑电路1014。
当输入至指令快取104的目前撷取地址162是预测的,亦即,当目前撷取地址162是一预测性地址时,指令快取104产生其为真值的一预测信号1208,比如当多任务器136选择BTAC预测目标地址164为目前撷取地址162时。预测信号1208输入至指令快取104。在一实施例中,指令快取104将预测信号1208送至图1的指令撷取器102,使得指令撷取器102放弃从存储器的预测存储器地址处撷取落空于指令快取104内的快取线,理由将参考图13而在下面描述。
BTAC142产生一执行/不执行(T/NT)信号1212,其输出至控制逻辑电路1014。其为真值的T/NT信号1212代表地址182命中于BTAC142内,代表BTAC142预测一分支指令包括于响应于目前撷取地址162而由指令快取104提供的快取线内,代表该分支指令要被执行,以及代表BTAC142将分支指令的目标地址设于BTAC预测目标地址信号164上。BTAC142根据图6的预测状态A602或预测状态B604的值而产生T/NT信号1212,取决于该BTAC142在分支预测时是使用A或B部份。
BTAC142也产生B_wrap信号1214,输出至控制逻辑电路1014。所选的BTAC目标地址阵列进入点312的图4的横跨位406的值是设成B_wrap信号1214。因此,B_wrap信号1214的伪值代表,BTAC142预测成该分支指令未横跨于两快取线。在一实施例中,控制逻辑电路1014暂存B_wrap信号1214以维持从先前BTAC142存取所得的B_wrap信号1214的值。
控制逻辑电路1014也产生图1的目前指令指针168。控制逻辑电路1014也产生一控制信号1204,其是多任务器136的输入选择信号。
如果控制逻辑电路1014检测出死结状态(亦即,所暂存的B_wrap信号1214为伪值,与F_wrap信号1202、落空信号1206与预测信号1208为真值),这将在下面详述,则控制逻辑电路1014储存一真值于一死结标志缓存器1224内以代表现在有死结状态,使得造成死结状态的BTAC142内的进入点被无效。此外,控制逻辑电路1014加载死结无效数据至死结无效数据缓存器1222内。在一实施例中,存于死结无效数据缓存器1222内的数据相似于图7的BTAC写入要求176;除了未储存分支指令地址702外,因为该分支指令的地址存于死结地址缓存器1226内;以及未储存目标地址706,开始位708与横跨位712,因为在一无效BTAC142进入点内,这些位是无关紧要的;因而,当执行死结无效化时,目标地址阵列302未被写入,而只有卷标阵列304被更新以将误测的BTAC142的进入点无效化。死结无效数据缓存器1222的输出包括图2的死结数据信号246。死结标志缓存器1224的输出包括图2的死结要求216。死结地址缓存器1226的输出包括图2的死结地址236。存于死结无效数据缓存器1222内的该向值724是由造成该死结状态的该BTAC142的该向填入。
如果控制逻辑电路1014检测出死结状态,则在将误测进入点无效化后,控制逻辑电路1014也产生一值于控制信号1204上以使得该多任务器1306选择该目前指令指针168以造成微处理器100的分支,使得包括该误测分支指令的该快取线可被再次撷取。
现参考图13,图13示出了根据本发明的图12的死结避免逻辑电路的操作流程图。流程开始于块1302。
在块1302,目前撷取地址162是经由地址信号182而输入至指令快取104与输入至BTAC142。在图13中,该目前撷取地址162称为撷取地址A。流程接续至块1304。
在块1304,指令快取104将撷取地址A所指定的快取线(称为快取线A)提供至指令缓冲器106,快取线A包括分支指令的第一部份,但并无包括该分支指令的全部。流程接续至块1306。
在块1306,响应于撷取地址A,BTAC142预测快取线A内的分支指令将被执行并设于T/NT信号1212上,产生为伪值的B_wrap信号1214,并将一预测目标地址设于BTAC预测目标地址164上。流程接续至块1308。
在块1308,控制逻辑电路1014控制多任务器136以选择BTAC预测目标地址164为下一个目前撷取地址162,称为撷取地址B。控制逻辑电路1014也产生为真值的预测信号1208,因为BTAC预测目标地址164是预测性的。流程接续至块1312。
在块1312,指令快取104产生为真值的落空信号1206以代表分支地址B系落空于指令快取104内。正常情况下,指令撷取器102可能从存储器撷取该落空快取线;然而,因为预测信号1208为真,指令规格化器108并不存储器撷取该落空快取线,理由将在下面描述。流程接续至块1314。
在块1314,指令规格化器108译码指令缓冲器106内的快取线A并产生为真值的F_wrap信号1202,因为该分支指令横跨两快取线。指令规格化器108等待要存于指令缓冲器106内的下一快取线,使得其可完成对分支指令的规格化以将的输出至规格化后指令队列112。流程接续至块1316。
在块1316,控制逻辑电路1014决定:所暂存的B_wrap信号1214是否为伪值,F_wrap信号1202是否为真值,落空信号1206是否为真值与预测信号1208是否为真值;这包括了下面所描述的死结状态。如果是,流程接续至块1318;否则,流程结束。
在块1318,控制逻辑电路1014将造成死结状态的该BTAC142进入点无效化,如参考图12所述。接着,当下次将撷取地址A输入至BTAC142时,BTAC142将产生一落空,因为造成死结状态的该进入点现已被无效化。流程接续至块1322。
在块1322,控制逻辑电路1014控制多任务器136以分支至目前指令指针168,如参考图12的描述。此外,当控制逻辑电路1014控制该多任务器136选择目前指令指针168时,控制逻辑电路1014产生其为伪值的预测信号1208,因为目前指令指针168不是预测性存储器地址。很可能目前指令指针168会命中于指令快取104内;然而,如果没命中的话,指令撷取器102将从存储器撷取目前指令指针168所指定的快取线,因为预测信号1208代表目前指令指针168不是预测性。流程结束于块1322。
如果决定块1316为真时,存在有死结状态的理由在于,造成死结的必要情况是存在的。造成死结的第一情况是横跨于两不同快取线的多字节分支指令。亦即,该分支指令字节的第一部份系位于第一快取线的尾端,而该分支指令字节的第二部份系位于下一快取线的开端。因为横跨分支指令的可能性,该BTAC142必需储存预测一分支指令是否横跨快取线的信息,使得控制逻辑电路1014得知是否要撷取下一快取线以在撷取位于目标地址164的快取线之前就取得分支指令字节的下半部。如果BTAC142储存了错误的预测信息,BTAC142可能会错误地预测为该分支指令未横跨,但实际上有横跨。在此例下,该指令规格化器108将利用分支指令的前半部来译码该快取线并检测出已存在有一分支指令,但并非分支指令的全部字节已可用于译码。该指令规格化器108会等待下一快取线。该流水线会一直等待要被规格化的更多指令以将的执行。
造成死结情况的第二情况是,因为该BTAC142预测该分支指令未横跨,该分支控制逻辑电路1014撷取该BTAC142输出的目标地址164所暗指的快取线(并无撷取下一快取线)。然而,该目标地址164落空于该指令快取104内。因此,该指令规格化器108所等待的下一快取线必需从存储器撷取。
造成死结情况的第三情况是,微处理器的芯片组并无预期到会有从某些存储器地址范围内撷取出指令,以及如果该微处理器从未预期的存储器地址范围产生指令撷取时,微处理器的芯片组可能会使得系统闲置或产生其它不良的系统情况。预测性地址,比如BTAC142所输出的目标地址164,可能会从未预期的存储器地址范围造成指令撷取。因而,该微处理器100并无从存储器的一预测性BTAC预测目标地址164撷取一落空快取线。
因此,指令规格化器108与流水线的其它部份等待另一快取线。同时,该指令撷取器102等待该流水线以告知要执行一非预测性撷取。在非死结情况下,比如,如果该目标地址164命中于指令快取104内,指令规格化器108会将分支指令规格化(虽然是利用不正确的字节)与将规格化后的分支指令提供至分支的执行阶段,执行阶段会检测出误测并将BTAC142的误测更正,因而使得该预测信号1208变成伪值。然而,在死结情况下,该执行将永远无法检测出误测,因为指令规格化器108未将规格化后的分支指令提供至分支的执行阶段,因为指令规格化器108仍在等待下一快取线。因此,发生死结情况。然而,图12的死结避免逻辑电路可有效避免死结情况的发生,如图12与图13所述,因而使得微处理器100可适当操作。
虽然已详细描述了本发明与其目的,特征与优点,本发明仍可包括其它实施例。比如,虽然该写入队列相关于单端口BTAC,在某些微处理器架构中,伪性落空也可能发生于多端口BTAC中,尽管频率较低。因此,可应用该写入队列以减少多端口BTAC的伪性落空率。此外,在未读取BTAC的某些微处理器中,可能也有除了在此所描述情况外的其它情况,其中队列于该写入队列内的要求可写入至BTAC。
另外,虽然已详细描述了本发明与其目的,特征与优点,本发明仍可包括其它实施例。除了利用硬件来实施本发明外,本发明也可实施于计算机可用式(比如,可读式)介质内的计算机可读码(比如,计算机可读程序代码,数据等)。计算机码可完成所披露的本发明的功能或制造或两者皆可。比如,可利用一般程序语言(比如,C,C++,JAVA等);GDSII数据库;硬件描述语言(hard description language,HDL),包括Verilog HDL,VHDL,AlteraHDL(AHDL)等;或现有的其它程序及/或电路(亦即概要式)撷取工具。计算机码可加载于包括半导体存储器,磁盘,光盘(比如,CD-ROM,DVD-ROM等)的任意已知计算机可用式(比如,可读式)介质内;以及以计算机数据信号的形式实施于计算机可用式(比如,可读式)传输介质(比如,载波,或包括数字,光学或模拟式介质的其它介质)。因此,计算机码可传输于包括因特网与企业网络(指令tranet)通讯网路上。要知道,本发明可实施于计算机码(比如,IP(智财权)核心的一部份,比如为微处理器核心,或为系统级设计,比如系统单芯片(SOC))与转换成集成电路的部份硬件。另外,本发明可实施成硬件与计算机码的组合。
虽然本发明已以一较佳实施例披露如上,然其并非用以限定本发明,本领域的技术人员在不脱离本发明的精神和范围的前提下,可作若干的更动与润饰,因此本发明的保护范围视后附的权利要求为准。
Claims (28)
1.一种写入队列,改善一微处理器内的一分支目标地址快取的效率,该写入队列包括:
一要求输入,接收一要求以更新该分支目标地址快取,该要求包括一分支指令目标地址;
多个储存组件,储存该要求输入端所接收的这些要求;以及
控制逻辑电路,耦合至这些储存组件,响应于一个或多个既定条件而将存于这些储存组件内的这些要求之一写入至该分支目标地址快取。
2.如权利要求1所述的写入队列,还包括:
一快取闲置输入,耦合至该控制逻辑电路,当平行于该分支目标地址快取而存取的一指令快取为闲置时,指定该分支目标地址快取未被读取的该一个或多个既定条件之一。
3.如权利要求1所述的写入队列,还包括:
一缓冲器全满输入,耦合至该控制逻辑电路,因为一指令缓冲器全满,其指定该分支目标地址快取未被读取的该一个或多个既定情况之一,其中该指令缓冲器从平行于该分支目标地址快取而存取的一指令快取接收指令。
4.如权利要求1所述的写入队列,还包括:
一预测取代输入,耦合至该控制逻辑电路,因为该分支目标地址快取所完成的一第一分支指令预测系被该微处理器内的分支预测逻辑电路所完成的一第二分支指令预测所取代,其指定该分支目标地址快取未被读取的该一个或多个既定情况之一。
5.如权利要求1所述的写入队列,还包括:
一分支误测输入,耦合至该控制逻辑电路,因为检测到该分支目标地址快取完成一分支指令误测,其指定该分支目标地址快取未被读取的该一个或多个既定情况之一。
6.如权利要求1所述的写入队列,还包括:
一队列全满输入,耦合至该控制逻辑电路,指定全部储存组件是正储存待写入至该分支目标地址快取的一要求的该一个或多个既定情况之一。
7.如权利要求1所述的写入队列,还包括:
多个有效位,耦合至该控制逻辑电路,每个有效位指示存于对应的储存组件内的该要求是否为有效。
8.如权利要求1所述的写入队列,其中该要求还包括该分支指令的一存储器地址。
9.如权利要求1所述的写入队列,其中该分支目标地址快取是一N-向指令集联合快取,其中该要求还包括指定该要求是要写入至该分支目标地址快取内的该N向的哪一向的信息。
10.一种微处理器,包括:
一指令快取,响应于一指令撷取地址而提供指令字节的一快取线;
一分支目标地址快取,耦合至该指令快取,预测存于该快取线内的一分支指令的一分支目标地址;以及
一写入队列,耦合至该分支目标地址快取,储存用于更新该分支目标地址快取的分支目标地址。
11.如权利要求10所述的微处理器,其中如果该写入队列不是空的,当该指令快取处于闲置时,则该写入队列利用这些分支目标地址之一来更新该分支目标地址快取。
12.如权利要求10所述的微处理器,还包括:
一指令缓冲器,耦合至该指令快取,储存从该指令快取接收的零或多个快取线。
13.如权利要求12所述的微处理器,其中如果该写入队列不是空的,当该指令缓冲器指示其为满的时,则该写入队列利用这些分支目标地址之一来更新该分支目标地址快取。
14.如权利要求10所述的微处理器,还包括:
分支预测逻辑电路,耦合至该写入队列,其中在该分支目标地址快取完成一分支指令的一第一预测后,该分支预测逻辑电路完成该分支指令的一第二预测,其中该微处理器利用该第二预测来取代该第一预测。
15.如权利要求14所述的微处理器,其中如果该写入队列不是空的,当该微处理器利用该第二预测来取代该第一预测时,则该写入队列利用这些分支目标地址之一来更新该分支目标地址快取。
16.如权利要求10所述的微处理器,还包括:
分支决定逻辑电路,耦合至该写入队列,更正该分支目标地址快取所完成的一分支指令的一误测。
17.如权利要求16所述的微处理器,其中如果该写入队列不是空的,当该微处理器校正该分支目标地址快取所完成的该分支指令的该误测时,该写入队列利用这些分支目标地址之一来更新该分支目标地址快取。
18.如权利要求10所述的微处理器,其中如果该写入队列变成全满,该写入队列利用这些分支目标地址之一来更新该分支目标地址快取。
19.如权利要求10所述的微处理器,其中该写入队列正在写入该分支目标地址快取时,如果该分支目标地址快取被读取,该分支目标地址快取产生一落空。
20.一种更新一微处理器内的一分支目标地址快取的方法,该方法包括下列步骤:
产生一要求以更新该分支目标地址快取;
储存该要求于一队列;以及
在该储存步骤之后,根据该要求而更新该分支目标地址快取。
21.如权利要求20所述的方法,其中更新该分支目标地址快取的步骤是执行于该储存步骤后的该微处理器的一时钟周期内。
22.如权利要求20所述的方法,还包括:
决定该分支目标地址快取是否未被正在读取;
其中如果该分支目标地址快取未被正在读取,则执行该更新步骤。
23.如权利要求22所述的方法,还包括:
因耦合至该分支目标地址快取的一指令快取闲置而决定该分支目标地址快取是否未被正在读取。
24.如权利要求22所述的方法,还包括:
因一指令缓冲器全满而决定该分支目标地址快取是否未被正在读取,其中该指令缓冲器接收从耦合至该分支目标地址快取的一指令快取所输出的指令。
25.如权利要求20所述的方法,还包括:
决定该分支目标地址快取所完成的一第一分支指令预测是否被该微处理器内的其它分支预测逻辑电路所完成的一第二分支指令预测取代;
其中如果该分支目标地址快取所完成的该第一分支指令预测被该第二分支指令预测取代,则执行该更新步骤。
26.如权利要求20所述的方法,还包括:
决定该分支目标地址快取是否已误测一分支指令;
其中如果该分支目标地址快取已误测一分支指令,则执行该更新步骤。
27.如权利要求20所述的方法,还包括:
决定该队列是否已全满;
其中如果该队列已全满,则执行该更新步骤。
28.一种可实施于一传输介质内的计算机数据信号,包括:
计算机可读式程序代码,提供一微处理器,该程序代码包括:
第一程序代码,提供一指令快取,来响应于一指令撷取地址而提供指令字节的一快取线;
第二程序代码,提供一分支目标地址快取,耦合至该指令快取,以预测存于该快取线内的一分支指令的一分支目标地址;以及
第三程序代码,提供一写入队列,耦合至该分支目标地址快取,以储存用于更新该分支目标地址快取的分支目标地址。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US44006503P | 2003-01-14 | 2003-01-14 | |
US60/440,065 | 2003-01-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1542625A true CN1542625A (zh) | 2004-11-03 |
CN1282930C CN1282930C (zh) | 2006-11-01 |
Family
ID=34375165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100018088A Expired - Lifetime CN1282930C (zh) | 2003-01-14 | 2004-01-14 | 有效更新分支目标地址高速缓存的装置与方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN1282930C (zh) |
TW (1) | TWI283827B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103870249A (zh) * | 2014-04-01 | 2014-06-18 | 龙芯中科技术有限公司 | 指令地址获取方法和即时编译器 |
CN106227676A (zh) * | 2016-09-22 | 2016-12-14 | 大唐微电子技术有限公司 | 一种高速缓存以及从高速缓存中读取数据的方法和装置 |
CN111459551A (zh) * | 2020-04-14 | 2020-07-28 | 上海兆芯集成电路有限公司 | 具高度领先分支预测器的微处理器 |
CN111459550A (zh) * | 2020-04-14 | 2020-07-28 | 上海兆芯集成电路有限公司 | 具高度领先分支预测器的微处理器 |
CN112181497A (zh) * | 2020-09-28 | 2021-01-05 | 中国人民解放军国防科技大学 | 一种分支目标预测地址在流水线中的传递方法和装置 |
-
2004
- 2004-01-08 TW TW093100409A patent/TWI283827B/zh not_active IP Right Cessation
- 2004-01-14 CN CNB2004100018088A patent/CN1282930C/zh not_active Expired - Lifetime
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103870249A (zh) * | 2014-04-01 | 2014-06-18 | 龙芯中科技术有限公司 | 指令地址获取方法和即时编译器 |
CN103870249B (zh) * | 2014-04-01 | 2017-08-25 | 龙芯中科技术有限公司 | 指令地址获取方法和即时编译器 |
CN106227676A (zh) * | 2016-09-22 | 2016-12-14 | 大唐微电子技术有限公司 | 一种高速缓存以及从高速缓存中读取数据的方法和装置 |
CN106227676B (zh) * | 2016-09-22 | 2019-04-19 | 大唐微电子技术有限公司 | 一种高速缓存以及从高速缓存中读取数据的方法和装置 |
CN111459551A (zh) * | 2020-04-14 | 2020-07-28 | 上海兆芯集成电路有限公司 | 具高度领先分支预测器的微处理器 |
CN111459550A (zh) * | 2020-04-14 | 2020-07-28 | 上海兆芯集成电路有限公司 | 具高度领先分支预测器的微处理器 |
CN111459551B (zh) * | 2020-04-14 | 2022-08-16 | 上海兆芯集成电路有限公司 | 具高度领先分支预测器的微处理器 |
CN112181497A (zh) * | 2020-09-28 | 2021-01-05 | 中国人民解放军国防科技大学 | 一种分支目标预测地址在流水线中的传递方法和装置 |
CN112181497B (zh) * | 2020-09-28 | 2022-07-19 | 中国人民解放军国防科技大学 | 一种分支目标预测地址在流水线中的传递方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN1282930C (zh) | 2006-11-01 |
TWI283827B (en) | 2007-07-11 |
TW200414034A (en) | 2004-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1632877A (zh) | 可变延滞时间堆栈快取存储器及提供资料的方法 | |
CN1254739C (zh) | 处理器和操作处理器的方法 | |
CN1147794C (zh) | 具有静态转移预测支持的去耦取指令-执行引擎 | |
CN1217262C (zh) | 假想分支目标地址高速缓存中置换目标地址的装置及方法 | |
CN1291311C (zh) | 一种执行非标准呼叫/返回的程序代码的装置及方法 | |
CN100339824C (zh) | 高效执行特长指令字的处理器和方法 | |
CN1141647C (zh) | 赋予高级微处理器内存储器数据别名的方法和装置 | |
CN1934543A (zh) | 高速缓冲存储器及其控制方法 | |
CN1629801A (zh) | 产生早期指令结果的管线式微处理器、装置以及方法 | |
CN1658154A (zh) | 早期修正分支指令预测错误的管线微处理器装置与方法 | |
CN1742257A (zh) | 基于识别寻址模式的双目的寄存器的数据预测机制 | |
CN1227589C (zh) | 用于保存返回状态的数据处理设备和方法 | |
CN1210649C (zh) | 能够发送及重新发送附属链接的排程器、包括该排程器的处理器以及排程方法 | |
CN1217271C (zh) | 假想分支目标地址高速缓存 | |
CN1387641A (zh) | 并行处理器中的多线程执行 | |
CN1387644A (zh) | 并行处理器体系结构的sdram控制器 | |
CN1619511A (zh) | 执行快速推测式加载运算的微处理器及装置 | |
CN1264078A (zh) | 执行多个操作系统的计算机 | |
CN1218222A (zh) | 数据序列产生方法及设备、转换方法及计算机 | |
CN1508709A (zh) | 仲裁电路和数据处理系统 | |
CN1967506A (zh) | 高速缓存存储器处理器中的合并入口 | |
CN1269030C (zh) | 高速缓存的快取线选取目标地址的装置及方法 | |
CN1251185A (zh) | 具有risc结构的八位微控制器 | |
CN1194321C (zh) | 高速信息检索系统 | |
CN1282930C (zh) | 有效更新分支目标地址高速缓存的装置与方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term |
Granted publication date: 20061101 |
|
CX01 | Expiry of patent term |