CN1270234C - 处理涵盖跨越指令高速缓存线的分支目标地址高速区的分支的装置及方法 - Google Patents

处理涵盖跨越指令高速缓存线的分支目标地址高速区的分支的装置及方法 Download PDF

Info

Publication number
CN1270234C
CN1270234C CN 02107138 CN02107138A CN1270234C CN 1270234 C CN1270234 C CN 1270234C CN 02107138 CN02107138 CN 02107138 CN 02107138 A CN02107138 A CN 02107138A CN 1270234 C CN1270234 C CN 1270234C
Authority
CN
China
Prior art keywords
instruction
address
cache
branch
cache line
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 - Lifetime
Application number
CN 02107138
Other languages
English (en)
Other versions
CN1369780A (zh
Inventor
布兰特
比恩
G·葛兰
亨利
汤玛斯C·麦当劳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhiquan No1 Co
IP First LLC
Original Assignee
Zhiquan No1 Co
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US09/906,381 external-priority patent/US7203824B2/en
Application filed by Zhiquan No1 Co filed Critical Zhiquan No1 Co
Publication of CN1369780A publication Critical patent/CN1369780A/zh
Application granted granted Critical
Publication of CN1270234C publication Critical patent/CN1270234C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Abstract

一种在微处理器中的分支控制装置。此装置包括分支目标地址高速缓存,用以高速高速缓存(快取)多个指示,该多个指示分别表示是否涵盖跨越两条高速缓存线。当含有分支指令的第一部份的第一高速缓存线的指令高速缓存提取地址命中分支目标地址高速缓存时,分支目标地址高速缓存会输出分支指令的目标地址及表示出涵盖状况。目标地址储存于缓存器中。下个循序提取地址会选择含有分支指令的第二部份的第二高速缓存线。在提取含有分支指令的两条高速缓存线之后,为了提取含有分支的目标指令的第三高速缓存线,会将来自缓存器的目标地址送到指令高速缓存。三条高速缓存线依次储存于指令缓冲器中,用以译码。

Description

处理涵盖跨越指令高速缓存线的分支目标地址高速区 的分支的装置及方法
技术领域
本发明是有关于微处理器中的分支目标地址高速区的领域,且特别是有关于一种涵盖跨越指令高速缓存线的分支指令。
背景技术
微处理器包括多个管线(pipeline)阶段,而每个阶段完成程序指令的执行中的不同的功能需求。管线阶段的功能通常为指令提取、指令译码、指令执行、存储器存取及结果写回(write-back)。
指令提取阶段是提取目前执行程序中的下个指令。下个指令通常为具有下个连续存储器地址的指令。然而,就执行(taken)的分支指令而言,下个指令为通过此分支指令所指定的存储器地址的指令,通常是做为分支目标地址的参考。指令提取阶段是提取自指令高速缓存(cache)的指令。如果指令不存在于指令高速缓存中,则会从存储器组织阶层中的较高阶层(如从较高阶的高速缓存或从系统存储器)提取指令至高速缓存。所提取的指令用于指令译码阶段。
指令译码阶段包括用以译码自指令提取阶段所接收到的指令字节的指令译码逻辑。就可支持可变长度指令的处理器(如x86结构的处理器)而言,指令译码阶段的功能之一就是将指令字节流(stream)格式化成分离的指令。格式化指令流包括决定每个指令的长度。也就是,指令格式化逻辑是接收自指令提取阶段的未区分的指令流,并且将指令字节流格式化(或符合语法)成各自的字节的群组。每个字节的群组为一个指令,此指令是组成通过处理器所执行的程序。指令译码阶段也可能包括将宏指令(如x86指令)转换成可通过其余的管线所能执行的微指令。
执行阶段包括用以执行自指令译码阶段所接收到的已格式化及已译码的指令的执行逻辑。执行逻辑是运作来自处理器的缓存器组及/或来自存储器的数据。写回阶段是将通过执行逻辑所产生的结果储存至处理器的缓存器组。
管线处理器的效能的一个重要的方面就是保持处理器的每个阶段都忙碌的执行其设计用来执行的功能。特别是,如果当指令译码阶段已准备好提取下个指令而指令提取阶段未提供指令,则处理器的效能将变差。为了避免指令译码阶段的匮乏,指令缓冲器通常置于指令高速缓存及指令格式化逻辑之间。指令提取阶段会试图保持拥有指令字节的多个指令于指令缓冲器中,以使得指令译码阶段将有指令字节可以译码,而不会匮乏。
通常,指令高速缓存提供高速缓存线的指令字节,通常一次为16或32字节。指令提取阶段自指令高速缓存提取一条或多条高速缓存线的指令字节至指令缓冲器。当指令译码阶段已准备好译码指令时,其会存取指令字节于指令缓冲器中,而不用等待指令高速缓存。
指令高速缓存提供用于指令提取阶段的指令高速缓存的提取地址所选择到的高速缓存线的指令字节。在正常的程序运作期间,因为预先使程序指令循序的执行,所以提取地址只会经由高速缓存线的大小而增加。所增加的提取地址是做为下个循序提取地址的参考。然而,如果分支指令是经由指令译码逻辑来译码及分支指令执行被执行(或预测执行),则更新的提取地址会送至分支指令的目标地址(以高速缓存线的大小为模(modulo)),而下个循序提取地址不会更新。
然而,到将更新提取地址送至分支目标地址的时候,在分支指令之后,指令缓冲器可能已含有下个循序指令的指令字节。因为分支已发生,在分支指令之后的指令必需不被译码及执行。也就是,正确的程序执行需要在分支目标地址时的指令来执行,而不是在分支指令之后的下个循序指令。在指令缓冲器中,以程序中的循序指令流程的较通常预期状况所预取的指令是错误的。为了修正此错误,处理器必须清除(flush)在分支指令后的所有的指令,其中包括指令缓冲器中的指令字节。
在执行分支指令后,立即清除指令缓冲器的代价是很高的,这是因为此时的指令译码阶段在指令缓冲器从指令高速缓存再获得之前,都是匮乏的。此问题的一个解决方案就是在译码分支指令前做分支。此可通过使用分支目标地址高速缓存(branch target address cache,简称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是根据本发明的包含涵盖跨越二条高速缓存线的分支指令的二条高速缓存线的表格;
图4是根据本发明图2中的分支控制装置的运作的流程图;
图5、图6、以及图7是根据本发明的依照图4的流程图的图2中的分支控制装置的运作例子的时序图;
图8是根据本发明一变化实施例的图2中的分支控制装置的运作的流程图;以及
图9是根据本发明的依照图8的流程图的图2中的分支控制装置的运作例子的时序图。
100:管线处理器               101:C阶段
102:I阶段                    104:B阶段
106:U阶段                    108:V阶段
112:F阶段                    114:X阶段
116:R阶段                    118:A阶段
122:D阶段                    126:E阶段
128:S阶段                    132:W阶段
142:指令缓冲器               144:F阶段指令队列
146:X阶段指令队列            152:推测的分支目标地址
154:非推测的分支目标地址     156:可分辨的目标地址
162:提取地址                 202:指令高速缓存
204:MISS信号                 206:BIU
208:响应缓冲器               212、242、244、266:数据总线
214:指令格式化逻辑           216:BTAC
218:多任务器                 222:控制逻辑
224:增加器                   226:储存多任务器
228:储存缓存器               232:旗标缓存器
234:HIT信号                  236:SBI
238:RBRDY信号                246:FULL信号
248:指令长度信号             262:下个循序提取地址
268,276:控制信号            274:备份提取地址
282:提取地址缓存器组        284:储存的目标地址
286:WRAP信号                302:高速缓存线A
304:高速缓存线B
402、404、406、412、414、416、422、424、426、428、432、436、438、442、444、448、452、454:方框
408、434、446、418:判断方框
具体实施方式
现在参照图1,其是根据本发明的具有管线的微处理器100的方框图。微处理器100包括从101到132的多个阶段。在一实施例中,微处理器100包括x86结构的处理器。
管线处理器100的第一阶段为指令高速缓存(instruction cache)产生阶段或简称为C阶段101。C阶段101产生用以选择指令高速缓存202(见图2)中的高速缓存线的提取地址162。
下个阶段为I阶段102,或指令预取(instruction fetch)阶段。为了提取指令给到管线处理器100执行,I阶段102为管线处理器100提供提取地址162至指令高速缓存202(见图2)的阶段。指令高速缓存202将配合图2做更详细的叙述。在一实施例中,指令高速缓存202为二个周期(two-cycle)的高速缓存。B阶段104为指令高速缓存202存取的第二阶段。指令高速缓存202提供其数据至U阶段106,在此的数据会被栓锁住。U阶段106提供指令高速缓存数据至V阶段108。
在本发明中,管线处理器100更包括推测(speculative)的分支目标地址缓冲分支目标地址高速缓存(BTAC)216(见图2),将详细叙述如下。在使用指令高速缓存202的提取地址162的I阶段102中,推测的存取BTAC 216与指令高速缓存202,因此,可相当快速的分支,以降低分支的效能损失。BTAC 216提供用于I阶段102的推测的分支目标地址152。管线处理器100可选择推测的分支目标地址152当做指令高速缓存202的提取地址162,以达成推测的目标地址152的分支。
由图1可知,本发明的优点是,在U阶段106中的由BTAC 216所提供的推测的分支目标地址152,可使管线处理器100在管线处理器100中相当早就能做分支,其只引起二个周期的指令泡影(bubble)。也就是,当管线处理器100分支至推测的目标地址152时,只必须清除具有二个阶段的指令。换句话说,在通常的情况中,在二个周期内,在U阶段106的分支的目标指令为可用的。也就是目标指令存在于指令高速缓存202中。
在大部分的情况中,本发明的二个周期的指令泡影足够小,而使得指令缓冲器142、F阶段指令队列144及/或X阶段指令队列146(底下将叙述)可吸收此泡影,对提高效能也是有好处的。因此,在大部分的情况中,推测的BTAC 216可使管线处理器100达成零损失(zero-penalty)分支。
V阶段108是将指令写入至指令缓冲器142的阶段。指令缓冲器142暂存用于F阶段112的指令。指令缓冲器142包括用以储存来自指令高速缓存202所接收到的指令字节的多个阶段或缓存器。在一实施例中,指令缓冲器142相似于称为“APPARATUS AND METHODFOR SELECTIVELY ACCESSING DISPARATE INSTRUNCTIONBUFFER STAGES BASED ON BRANCH TARGET ADDRESSCACHE HIT AND INSTRUNCTION STAGE WRAP”的美国专利申请案中所叙述的指令缓冲器,以上将并入做为参考。V阶段108也包括译码逻辑,用以提供关于指令字节到指令缓冲器142的信息(如x86的前置(prefix)及模数(mod)R/M信息),以及指令字节是否为分支运作码(opcode)值。
F阶段112(或指令格式化(instruction format)阶段112)包括用以格式化指令的指令格式化逻辑214(见图2)。微处理器100最好是在其指令集中,允许可变长度指令的x86处理器。指令格式化逻辑214是接收来自指令缓冲器142的指令字节流及将符合语法的此流送至构成x86指令的字节的离散群组,以及特别是提供每个指令的长度。
F阶段112也包括用以产生非推测的分支目标地址154的分支指令目标地址计算逻辑。而非推测的分支目标地址154是以指令译码为基准,而不是以推测的指令高速缓存202的提取地址为基准(如在I阶段102中的BTAC 216)。F阶段112的非推测的分支目标地址154用于I阶段102。微处理器100选择F阶段112的非推测的分支目标地址154当做指令高速缓存202的提取地址,以完成非推测的分支目标地址154的分支。
F阶段指令队列144接收格式化的指令。由F阶段指令队列144所提供的格式化的指令送至X阶段114中的指令转换器中。
X阶段114(或转换(translation)阶段114)的指令转换器是将x86的宏指令转换成可由其余的管线阶段所能执行的微指令。由X阶段114所提供的转换的微指令送至X阶段指令队列146。
X阶段指令队列146提供转换的微指令至R阶段116(或缓存器阶段116)。R阶段116包括使用者可见的x86缓存器组,除此之外还包括非使用者可见的缓存器。用于储存于R阶段116的缓存器中的转换的微指令的指令操作数,用以执行微处理器100的接下来的阶段的微指令。
A阶段118(或地址(address)阶段118)包括地址产生逻辑,用以接收来自R阶段116的操作数及微指令,并且产生微指令所需的地址,如用于加载/储存的存储器地址。
D阶段122(或数据(data)阶段122)包括用以存取通过A阶段118所产生的地址的指定的数据的逻辑。特别是,D阶段122包括在微处理器100内,用以高速来自系统存储器的数据的数据高速缓存。在一实施例中,数据高速缓存为二周期的高速缓存。D阶段122提供数据高速缓存的数据至E阶段126。
E阶段126(或执行(execution)阶段126)包括执行逻辑(如算术逻辑单元),用以执行来自先前阶段所提供的数据及操作数为基准的微指令。特别是,E阶段126会产生全部分支指令的可分辨的目标地址156。也就是,所知之E阶段126的可分辨的目标地址156为全部分支指令的正确的目标地址,其必须与全部预测的目标地址一致。除此之外,E阶段126会产生用于全部分支指令的可分辨的方向,也就是是否分支要执行或不要执行。
S阶段128(或储存(store)阶段128)用以将来自E阶段126所接到的微指令执行的结果储存至存储器。除此之外,在E阶段126所计算得出的分支指令的可分辨的目标地址156用于来自S阶段128的I阶段102中的指令高速缓存202。此外,自S阶段128所更新的I阶段102的BTAC 216具有用于BTAC 216中的高速的经由微处理器100所执行的分支指令的可分辨的目标地址156。除此之外,来自S阶段128的其它的平行整数分支信息(speculative branch information,简称SBI)236(见图2)是在BTAC 216中被更新。SBI 236包括分支指令长度、在分支指令的指令高速缓存202线内的位置、是否分支指令涵盖过多条指令高速缓存202线、是否分支为呼叫或返回指令、以及用于预测分支指令方向的信息。
W阶段132(或写回(write-back)阶段132)是将来自S阶段128的结果写回至R阶段116,因此更新了微处理器100的状态。
在其它的情形中,指令缓冲器142、F阶段指令队列144、以及X阶段指令队列146是用以使分支对于微处理器100的每个指令值时脉的影响减至最小。
现在参照图2,其是根据本发明图1中的包括分支控制装置的微处理器部分的方框图。
微处理器100包括用以高速指令字节的指令高速缓存202。指令高速缓存202包括用以储存指令字节的高速缓存线的阵列。高速缓存线的阵列是由图1的提取地址162来索引。也就是,提取地址162会选择阵列中的一条高速缓存线。指令高速缓存202是通过数据总线242,而将选到的指令字节的高速缓存线送到指令缓冲器142。
在一实施例中,指令高速缓存202包括每向具有32字节的高速缓存线的64K字节的4向集组合高速缓存(4-way set associativecache)。在一实施例中,指令高速缓存202一次送出选到的指令字节的高速缓存线的一半,也就是在每个分离周期的期间,送出16字节。
在一实施例中,指令高速缓存202相似于具有共同让渡人的美国专利申请案序号09/849,736的称为“SPECULATIVE BRANCHTARGET ADDRESS CACHE”(文件编号CNTR:2021)中所述的指令高速缓存,其全部的目的在此并入做为参考。当在指令高速缓存202中,提取地址162误失(miss)时,指令高速缓存202会使MISS信号204产生真(true)值。
微处理器100也包括总线接口单元(bus interface unit,简称BIU)206,是通过数据总线266而从存储器提取高速缓存线。特别是,当指令高速缓存202使MISS信号204产生真值时,BIU 206会从存储器提取高速缓存线。指令高速缓存202也提供MISS信号204至BIU 206。
微处理器100也包括响应缓冲器208。响应缓冲器208接收来自BIU 206的高速缓存线。响应缓冲器208也通过数据总线212而接收来自第2阶高速的高速缓存线。响应缓冲器208是通过数据总线244而将指令字节的高速缓存线送到指令缓冲器142。当响应缓冲器208将指令字节的高速缓存线送到指令缓冲器142时,响应缓冲器208会对RBRDY信号238产生真实的信号。
当不是来自于指令高速缓存202,就是来自于响应缓冲器208的高速缓存线存入指令缓冲器142时,会使得指令缓冲器142变成占满(full),而指令缓冲器142会使FULL信号246产生真值,以表示目前不能接受指令字节。
微处理器100也包括指令格式化逻辑214。指令格式化逻辑214接收来自指令缓冲器142的指令字节。指令格式化逻辑214会将所接收到的指令字节格式化(或符合语法)成指令。特别是,指令格式化逻辑214会决定出指令的字节的大小。指令格式化逻辑214会通过指令长度信号而送出目前格式化指令的长度。指令格式化逻辑214会将格式化指令送到微处理器100的其余部分,以进一步的译码及执行。在一实施例中,指令格式化逻辑214在每个微处理器100时脉周期,可格式化多个指令。
微处理器100也包括BTAC 216。BTAC 216也接收指令高速缓存202的提取地址162。BTAC 216包括储存元件的阵列,用以高速先前所执行的分支指令的提取地址及其相关的分支目标地址。储存元件也储存其它的平行整数分支信息,有关于用以高速目标地址的分支指令。特别是,所储存的储存元件是表示是否多个字节分支指令涵盖跨越二条指令高速缓存线。提取地址162索引BTAC 216中的储存元件的阵列,以选择储存元件中的一个。
BTAC 216输出图1的推测的分支目标地址152及来自通过提取地址162所选择的储存元件的分支推测数据SBI 236。在一实施例中,SBI 236包括分支指令长度、在高速缓存线中的分支指令的位置、是否分支为呼叫及返回指令、以及是否分支指令将要执行或不要执行的预测。
BTAC 216也输出HIT信号234,是表示是否提取地址162击中BTAC 216。在一实施例中,BTAC 216相似于美国专利申请案的称为“SPECULATIVE BRANCH TARGET ADDRESS CACHE”中所叙述的BTAC,以上将并入作为参考。在一实施例中,BTAC 216为平行的BTAC,这是因为在经由高速高速缓存202所送出的指令高速缓存线被译码之前,微处理器100会分支成经由BTAC 216所送出的推测的分支目标地址152,用以知道是否分支指令刚好存在于经由提取地址所选择到的高速缓存线中。也就是,即使没有分支指令存在于经由提取地址命中BTAC 216而选择到的高速缓存线中的可能性存在,微处理器100仍会以平行整数的方式来分支。
BTAC 216也输出WRAP信号286,指出是否分支指令涵盖(wrap)跨越二条高速缓存线。在分支指令执行后,在BTAC 216中的WRAP信号286的值会伴随分支指令目标地址被高速。
现在参照图3,其是包含涵盖跨越二条高速缓存线的分支指令的二条高速缓存线的表格。此表格显示出以高速缓存线A 302所代表的第一高速缓存线,其最后的指令字节包含用于x86 JCC(条件跳跃)指令的操作码字节。此表格也显示出以高速缓存线B 304所代表的第二高速缓存线,其第一指令字节包含用于JCC(条件跳跃)指令的符号位移字节。每当微处理器100执行分支指令及高速含有BTAC中的分支指令与分支指令的目标地址的高速缓存线的提取地址时,也会高速是否分支指令涵盖跨越二条高速缓存线的指针,如图3的JCC指令。当提取地址循序命中BTAC 216,BTAC 216会提供WRAP信号286的高速涵盖指针。为了获得用于分支指令的全部的指令字节,涵盖指针会使分支控制装置知道必须送至指令高速缓存202的二条高速缓存线的提取地址。
再次参照图2,微处理器100也包括控制逻辑222。HIT信号234、SBI 236、WRAP信号286、MISS信号204、FULL信号246、RBRDY信号238、以及指令长度信号248全部都当做控制逻辑222的输入。控制逻辑222的运作将于底下做更详细的叙述。
微处理器100也包括多任务器218。多任务器218接收至少六个地址当做输入,以及响应控制逻辑222所产生的控制信号268,而选择输入中的一个当做提取地址162,送到指令高速缓存202。多任务器218接收来自BTAC 216的推测的分支目标地址152。多任务器218也接收下个循序提取地址262。下个循序提取地址262为先前的提取地址通过增加器224,而以指令高速缓存202的高速缓存线的大小增加而得出的。增加器224会接收提取地址162及将下个循序提取地址262送到多任务器218。
多任务器218也接收图1中的可分辨的目标地址156。可分辨的目标地址156是由微处理器100中的执行逻辑所送出。执行逻辑计算以分支指令的执行为基准的可分辨的目标地址156。当在分支成由BTAC 216所送出的推测的分支目标地址152之后,微处理器100稍后会决定出此分支是错误的,微处理器100会通过清除管线及分支成不是可分辨的目标地址156,就是分支成包括接着分支指令的指令的高速缓存线的提取地址,而修正错误。在一实施例中,当微处理器100决定出没有分支指令存在于如假设的高速缓存线中时,微处理器100会通过清除管线及分支成包括分支指令本身的高速缓存线的提取地址,而修正错误。错误修正如具有共同让渡人的美国专利申请案序号09/849,658的称为“APPARATUS,SYSTEM AND METHOD FORDETECTING AND CORRECTING ERRONEOUS SPECULATIVEBRANCH TARGET ADDRESS CACHE BRANCHES”(文件编号CNTR:2022)所述,其全部的目的在此并入做为参考。
在一实施例中,多任务器218也接收图1中的非推测的分支目标地址154。非推测的分支目标地址154是由其它的分支预测元件而产生,如呼叫/返回堆栈及分支目标缓冲器(branch target buffer,简称BTB),是用以高速以分支指令指针为基准之间接分支指令的目标地址。多任务器218会优先选择由BTAC 216所送出的推测的分支目标地址152与非推测的分支目标地址154,如具有共同让渡人的美国专利申请案序号09/849,799的称为“SPECULATIVE BRANCH TARGETADDRESS CACHE WITH SELECTIVE OVERRIDE BYSECONDARY PREDICTOR BASED ON BRANCH INSTRUNCTIONTYPE”(文件编号CNTR:2052)所述,以及其全部的目的在此并入做为参考。
多任务器218也接收备份提取地址274。微处理器100包括提取地址缓存器组282,用以将备份提取地址274送到多任务器218。在微处理器100的一实施例中,从C阶段101到V阶段108不能停止(stall)。也就是,在每个时脉周期,全部的状态不会存于这些阶段。因此,当高速缓存线送到指令缓冲器142且指令缓冲器142已占满时,此高速缓存线会漏失。当指令缓冲器142相当大时,会因为在微处理器100中没有状态储存逻辑而有助于降低复杂度及节省空间。
虽然微处理器100的上面的阶段或许不会停止,但是由于占满的指令缓冲器142而漏失的高速缓存线的提取地址会储存于提取地址缓存器组282及送到多任务器218当做备份提取地址274。当高速缓存线送到微处理器100的预先译码的管线阶段时,由多任务器218所送出的相对应的推测的分支目标地址152会送到提取地址缓存器组282。备份提取地址274的使用将配合其余的图而于底下做详细的叙述。
多任务器218也接收储存的目标地址284。储存的目标地址284为由BTAC 216所输出的推测的分支目标地址152的先前值。储存的目标地址284储存于储存缓存器228中。储存缓存器228接收储存多任务器226的输出。储存多任务器226接收BTAC 216中的推测的分支目标地址152。储存多任务器226也接收储存缓存器228的输出,用以保持储存的目标地址284的值。储存多任务器226是由控制逻辑222所产生的控制信号276来控制。
微处理器100也包括旗标缓存器232。每当涵盖的BTAC 216的分支指令延后时,控制逻辑222会将旗标缓存器232设定成真值。也就是,旗标缓存器232表示储存缓存器228目前所储存的用于涵盖跨越二条高速缓存线的分支指令的推测的分支目标地址152。
现在参照图4,其是根据本发明图2中的分支控制装置的运作的流程图。在图4的接下来的叙述中,有关于高速缓存线A的提取地址的提取地址A至少包含分支指令的第一部份,如图3的高速缓存线A 302。有关于高速缓存线B的提取地址的提取地址B包含涵盖的分支指令的第二部份,如图3的高速缓存线B 304。有关于高速缓存线的高速缓存线T包含分支指令的一个或更多的目标指令,是由分支指令的目标地址来选择。为清楚及简化起见,图4的流程图假设高速缓存线A及高速缓存线T都命中图2中的指令高速缓存202。图4的流程图具体说明出当高速缓存线B命中指令高速缓存202时的运作及具体说明出当高速缓存线B没有命中指令高速缓存202时的运作。流程从方框402开始。
在方框402,图2中的多任务器218会将如提取地址162的送至图2中的指令高速缓存202及BTAC 216。在通常的情况中,程序的流程会循序地执行,因此多任务器218会选择图2中的下个循序提取地址262当做提取地址A。流程会从方块402到方框404执行。
在方框404,指令高速缓存202响应于在步骤402期间的所使用的提取地址A,而送出图2中的数据总线242上的线A。线A至少包含分支指令的第一部份,并且提取地址A于BTAC 216中被高速。是否高速缓存线A包含全部或部分的分支指令将取决于底下所述的判断方框408。BTAC 216响应提取地址A,而送出用于高速分支指令的图1中的推测的分支目标地址152。流程会从方框404到方框406执行。
在方框406,在步骤404期间的由BTAC 216所送出的推测的分支目标地址152储存于图2中的储存缓存器228。因为BTAC 216的击中已发生(如图2的HIT信号所表示),控制逻辑222会控制图2中的储存多任务器226,而选择来自BTAC 216的推测的分支目标地址152,并储存于储存缓存器228中。在将推测的分支目标地址152存入储存缓存器228后,控制逻辑222会立即将旗标缓存器232设定成真值。流程会从方框406到判断方框408执行。
在判断方框408,图2中的控制逻辑222会决定出是否分支指令涵盖超过高速缓存线A,也就是跨越二条高速缓存线。特别是,控制逻辑222会检查WRAP信号,以决定出是否其为真值。如果不是,则分支指令完全包含于高速缓存线A中,并且会执行方框412的流程。否则,分支指令的第一部份会包含于高速缓存线A中,而分支指令的第二部份会包含于高速缓存线B中,并且会执行方框428的流程。
在方框412,在步骤404期间的由BTAC 216所送出的推测的分支目标地址152会被多任务器218选择到,并且当做提取地址162,而送到指令高速缓存202。如果流程到达方框412,则BTAC 216分支指令不是涵盖的分支指令。因此,在提取地址A之后会使用到推测的分支目标地址152,这是因为将提取地址B送至指令高速缓存202是不正确的,以及因为全部的分支指令包含于高速缓存线A中。流程会从方框412到方框414执行。
在方框414,高速缓存线A储存于指令缓冲器142中,流程会从方框414到方框416执行。
在方框416,指令高速缓存202会送出高速缓存线T,其包含分支指令的目标指令,指令高速缓存202会响应在步骤412期间的用于指令高速缓存202的推测的分支目标地址152,而送出高速缓存线T。流程会从方框416到判断方框418执行。
在判断方框418,控制逻辑222会决定出是否指令缓冲器142为占满。特别是,控制逻辑222会检查由指令缓冲器142所产生的图2中的FULL信号246的值,以知道是否其为正。如果不是,会执行方框422的流程。否则,会执行方框424的流程。
在方框422,高速缓存线T储存于指令缓冲器142中。此时,分支指令及其目标指令会储存于指令缓冲器142中,以使得它们可经由图2中的指令格式化逻辑214来格式化。在将高速缓存线T存入指令缓冲器142后,控制逻辑222会立即将旗标缓存器232设定成伪(false)值。如果分支指令为非涵盖的分支,也就是如果执行的流程为从判断方框408到方框412,则指令缓冲器142会包含含有全部分支指令的高速缓存线A,以及含有目标指令的高速缓存线T。然而,如果分支指令为涵盖的分支,也就是如果执行的流程为从判断方框408到方框428,则指令缓冲器142将包含含有分支指令的第一部份的高速缓存线A、含有分支指令的第二部份的高速缓存线B、以及含有目标指令的高速缓存线T,如底下所述。流程会在方框422结束。
在方框424,控制逻辑222会等待指令缓冲器142变成未占满。也就是,控制逻辑222会检查FULL信号246,直到其变成伪的。当控制逻辑222正等待FULL信号246变成伪时,储存的目标地址284会继续保持于储存缓存器228中。流程会从方框424到方框426执行。
在方框426,多任务器218会选择由储存缓存器228所送出的储存的目标地址284及使用储存的目标地址284当做提取地址162,而送到指令高速缓存202。储存的目标地址284储存于在步骤406期间的储存缓存器228中。如果从底下所述的方框454到达方框426的流程,则BTAC 216分支指令为涵盖的分支指令。在此情况中,在提取地址B之后,会使用到推测的分支目标地址152,以使得在指令缓冲器142中所储存的全部分支指令会优先于在指令缓冲器142中所储存的高速缓存线T中的分支目标指令。流程会从方框426到方框416执行。
在方框428,高速缓存线A储存于指令缓冲器142中。在此情况中,高速缓存线A只包含涵盖的分支指令的第一部份,而没有包含全部分支指令。流程会从方框428到方框432执行。
在方框432,多任务器218会选择由图2中的增加器224所送出的下个循序提取地址262,其将为提取地址B,以及使用提取地址B当做提取地址162,而送至指令高速缓存202。为了获得高速缓存线B,使用提取地址B是必须的,其包含涵盖的分支指令的第二部分,以使得分支指令的全部指令字节都可储存于用于译码的指令缓冲器中。流程会从方框432到判断方框434执行。
在判断方框434,图2中的控制逻辑222及BIU 206会决定是否提取地址B会命中指令高速缓存202。特别是,控制逻辑222及BIU206会检查经由指令高速缓存202所产生的图2中的MISS信号204,以决定是否为真值。如果不是,会执行方框436的流程。否则,会执行方框444的流程。
在方框436,不是BIU 206自存储器提取的高速缓存线B,就是由第二阶高速缓存送出高速缓存线B。当高速缓存线B到达图2的响应缓冲器208时,响应缓冲器208会对RBRDY信号238产生真值,以通知控制逻辑222,高速缓存线B为可用的。流程会从方框436到方框438执行。
在方框438,来自响应缓冲器208的高速缓存线B储存于指令缓冲器142中。流程会从方框438到判断方框442执行。
在方框442,多任务器218会选择由增加器224所送出的下个循序提取地址262,以及使用下个循序提取地址262当做提取地址162,而送至指令高速缓存202。也就是,当高速缓存线B不存在于指令高速缓存202中时,此状况视为BTAC 216的误失。当图1中的E阶段126稍后决定分支值令要执行时,测误的预测会经由分支成可分辨的目标地址156而修正。图4的实施例比图8的实施例(底下所述的处理涵盖的BTAC 216分支的情况,其第二高速缓存线会于指令高速缓存202中误失)具有需要较少控制逻辑的优点。在微处理器100中,分支指令会涵盖及产生对于其第二部分的指令高速缓存202的误失的可能性非常的低。因为分支指令所需的复杂度较小,所以图4的实施例是有助益的。流程会在方框422结束。
在方框444,指令高速缓存202会响应在步骤412期间所使用的提取地址B,而送出数据总线242上的高速缓存线B。高速缓存线B包含分支指令的第二部分。流程会从方框444到判断方框446执行。
在判断方框446,控制逻辑222经由检查FULL信号246的值是否为真,而决定出是否指令缓冲器142为占满。也就是,控制逻辑222会决定在步骤428期间的储存至指令缓冲器142的高速缓存线A是否会填满指令缓冲器142。如果是,会执行方框448的流程。如果不是,会执行方框454的流程。
在方框448,控制逻辑222会等待指令缓冲器142变成没有占满。也就是,控制逻辑222会检查FULL信号246,直到其变成伪。流程会从方框448到方框452执行。
在方框452,多任务器218会选择由图2中的提取地址缓存器组282所送出的图2中的备份提取地址274,其会当做提取地址B,并且使用提取地址B当做提取地址162,而送至指令高速缓存202。为了获得高速缓存线B,使用提取地址B是必需的,其包含涵盖的分支指令的第二部分。从方框448到方框452所执行的流程是用来决定是否所使用的备份提取地址B会命中指令高速缓存202。
在方框454,高速缓存线B储存于指令缓冲器142中。高速缓存线B包含涵盖的分支指令的第二部分。从方框454到方框426所执行的流程是用以将得到的高速缓存线T(其包含分支目标指令)送至指令缓冲器142。
由图4的流程图可知,本发明对于只将全部涵盖的BTAC 216分支视为BTAC 216误失所产生的BTAC 216分支问题,提供一个改良方案。涵盖BTAC 216分支的机率是不可以忽略的,并且本发明提供一种分支的装置,而不是没有分支且必须修正的装置,因此可省去许多时脉周期。此装置特别对于阶段的数目相当大的微处理器100有帮助。
现在总括参照图5、图6、图7、以及图9,其是根据本发明的图2中的分支控制装置的运作例子的时序图。图5、图6、以及图7显示出依照图4的流程图来运作,而图9显示出依照底下所述的图8的变化实施例的流程图来运作。时序图包括具有7列及33行的存储单元(cell)的矩阵。第一行,由第二列开始,分别表示C、I、B、U、V、以及F,相对应于图1中的C阶段101、I阶段102、B阶段104、U阶段106、V阶段108、以及F阶段112。第一列,由第二行开始,分别表示从1到32,相对应于微处理器100的32个时脉周期。
在矩阵中的每个存储单元具体表示出在指定的时脉周期期间的指定阶段的内容。为清楚及简化起见,每个存储单元在此以(s,c)来表示,其中s为阶段,以及c为时脉周期。例如,存储单元(V,5)表示在时脉周期5期间的V阶段108的内容。存储单元不是空的,就是具有A、B、C、或T四个字母中的一个。字母A标示图4中的不是提取地址A,就是高速缓存线A,或者是两者,取决于阶段的内容。同样地,字母B标示图4中的不是提取地址B,就是高速缓存线B,或者是两者,以及字母T标示图4中的不是分支指令的BTAC 216目标地址,就是高速缓存线T,或者是两者。字母C标示不是在提取地址B之后的下个循序提取地址,就是在高速缓存线B之后的下个循序高速缓存线,或者是两者。例如,在图5中,相对应于在时脉周期2期间的I阶段102的内容的存储单元(以(I,2)表示)包含A,指出在时脉周期2期间的I阶段102会接收到提取地址A。也就是,使用地址A当做图1中的提取地址162,而送至如关于图4的方框402所述的图2中的指令高速缓存202。
除此之外,在矩阵之下,所显示的是在32个时脉周期中的每一个期间的WRAP信号286、FULL信号246、MISS信号204、以及RBRDY信号238。为了说明的目的,会选择一种极性常规,而使得如果信号为低时,则此值为伪。例如,当FULL信号246为低时,此值为伪,也就是图1中的指令缓冲器142为没有占满的;反之,当FULL信号246为高时,此值为真,也就是图1中的指令缓冲器142为占满的。然而,此发明可使用任一种极性常规。而至于方框号码(如方框412),用于图4的流程图的方框。
现在参考图5,其是,依照图4的流程图的在非涵盖的BTAC 216分支的情况中的图1中的微处理器100的运作的例子的时序图,其中当高速缓存线T开始准备好存入指令缓冲器142时,指令缓冲器142为占满。因此,在图5的从头到尾的时脉周期中,WRAP信号286、MISS信号204、以及RBRDY信号238都是伪的,以及在时脉周期的一部份期间(特别是从6到10的时脉周期),FULL信号246为真。
在存储单元(C,1)中,图2中的多任务器218会选择提取地址A当做提取地址162。在存储单元(I,2)中,I阶段102会依照方框402,而将提取地址A送到指令高速缓存202及BTAC 216。在存储单元(B,3)中,指令高速缓存202会选择到在其第二存取周期期间的高速缓存线A。在存储单元(U,4)中,指令高速缓存202会依照方框404,而送出高速缓存线A。
在存储单元(V,5)中,会依照方框414,而将高速缓存线A写到指令缓冲器142。在图5的例子中,将高速缓存线A存于指令缓冲器142中,会使得指令缓冲器142变成占满。因此,在时脉6的期间,FULL信号246为真。在图5的例子中,FULL信号246直到时脉11都保持为真。
在存储单元(C,4)中,多任务器218会选择在方框404期间的由BTAC 216所送出的推测的分支目标地址152,来当做提取地址162。在存储单元(I,5)中,因为此例中的WRAP信号286是伪的,所以会依照方框412,而将推测的分支目标地址152送到指令高速缓存202。
在从(V,6)到(V,11)的存储单元中,高速缓存线A会保持于指令缓冲器142中且不会送到指令格式化逻辑214,这是因为指令格式化逻辑214正在格式化在高速缓存线A之前的其它指令。会使指令缓冲器142保持占满持续数个时脉周期的一个例子是,在此有需要多个时脉周期才能执行的一个或更多的指令(如浮点除法)于在管线中被执行。这些指令会使在执行阶段126之上的微处理器100中的阶段暂停。
在存储单元(B,6)中,指令高速缓存202在其第二存取周期期间,会选择到高速缓存线T。在存储单元(U,7)中,指令高速缓存202会依照方框416,而送出高速缓存线T。然而,在时脉周期7的期间,指令缓冲器142为占满,如在方框418期间所决定的。因此,在时脉周期8的期间,因为指令缓冲器142不能接受高速缓存线T(这是因为指令缓冲器142为占满),所以高速缓存线T会漏失。图2中的控制逻辑222会依照方框424而等待,直到FULL信号246是伪的。
在存储单元(C,11)中,多任务器218会选择储存缓存器228所送出的储存的目标地址284,来当做提取地址162,这是因为控制逻辑222已确定在时脉周期11中,此时的FULL信号246是伪的。在存储单元(I,12)中,储存的目标地址284会依照方框426,而送到指令高速缓存202。在存储单元(B,13)中,指令高速缓存202在其第二存取周期期间,会选择到高速缓存线T。在存储单元(U,14)中,指令高速缓存202会依照方框416,而送出高速缓存线T。
在存储单元(F,15)中,高速缓存线A会送到用来格式化分支指令的指令格式化逻辑214。在存储单元(V,15)中,会依照方框422而将高速缓存线T写到指令缓冲器142,这是因为指令缓冲器142不再是占满,如在方框418期间所决定的。在存储单元(F,16)中,高速缓存线T会送到用来格式化分支目标指令的指令格式化逻辑214。
现在参考图6,与图5相似,其是根据本发明的依照图4的流程图的图2中的分支控制装置的运作的第二个例子的时序图。图6是依照图4的流程图的涵盖的BTAC 216分支的情况中的图1中的微处理器100的运作的例子的时序图,其中包含于高速缓存线B中的分支指令的第二部分会误失于指令高速缓存202中。因此,在图6的从头到尾的时脉周期中,FULL信号246是伪的,以及在时脉周期的一部份期间(特别是在各自的时脉周期4、5、以及24),WRAP信号286、MISS信号204、以及RBRDY信号238为真。
存储单元(C,1)、(I,2)、(B,3)、(U,4)、以及(V,5)相似于图5的相对应的存储单元,具有沿着微处理器100管线的较高的阶段执行的提取地址A及高速缓存线A。在时脉周期4的期间,WRAP信号286为真,指出表示分支指令的BTAC 216会涵盖跨越高速缓存线A及B。在存储单元(F,6)中,高速缓存线A会送到F阶段112执行。
在存储单元(C,2)中,多任务器218会选择下个循序提取地址262(其为提取地址B)当做提取地址162,这是因为控制逻辑222会依照方框408,而确定分支指令为涵盖的BTAC 216分支。在存储单元(I,3)中,因为此例中的WRAP信号286为真,所以会依照方框432,而将提取地址B送到指令高速缓存202。在存储单元(B,4)中,指令高速缓存202在其第二存取周期期间,会选择到高速缓存线B。然而,在时脉5的期间,指令高速缓存202会决定提取地址B为误失,以及相对应的使MISS信号204致能。因此,指令高速缓存202不能送出高速缓存线B。
在从时脉周期7到23的期间,微处理器100会依照方框436,而等待自存储器提取高速缓存线B,并送至响应缓冲器208。在时脉24的期间,当高速缓存线B到达时,图2中的响应缓冲器208会使RBRDY信号致能。在存储单元(V,24)中,来自响应缓冲器208的高速缓存线B会依照方框438,而储存到指令缓冲器142。在存储单元(F,25)中,高速缓存线B会送到F阶段112执行。
在存储器单元((C,25)中,多任务器218会依照方框442,而选择下个循序提取地址262(其为提取地址C)当做提取地址162,这是因为控制逻辑222已确定高速缓存线B误失于指令高速缓存202中。因此,微处理器100通过不要分支成BTAC 216所送出的推测的分支目标地址152,而取代为所提取的下个循序地址,而将图6中的情况视为BTAC 216误失。在存储单元(I,26)中,I阶段102会将提取地址C送到指令高速缓存202。在存储单元(B,27)中,指令高速缓存202在其第二存取周期期间,会选择到高速缓存线C。在存储单元(U,28)中,指令高速缓存202会送出高速缓存线C。在存储单元(V,29)中,会将高速缓存线C写入指令缓冲器142。在存储单元(F,30)中,高速缓存线C会送到F阶段112执行。
现在参考图7,与图5相似,其是根据本发明的依照图4的流程图的图2中的分支控制装置的运作的第三个例子的时序图。图7是依照图4的流程图的涵盖的BTAC 216分支的情况中的图1中的微处理器100的运作的例子的时序图,其中高速缓存线A会填满指令缓冲器142。因此,在图7的从头到尾的时脉周期中,MISS信号204及RBRDY信号238是伪的,以及在时脉周期的一部份期间,WRAP信号286及FULL信号246为真。特别是,在时脉周期4的期间,WRAP信号286为真,以及在时脉周期从4到6的期间,FULL信号246为真。
存储单元(C,1)、(I,2)、(B,3)、(U,4)、(V,5)到(V,14)、以及(F,15)相似于图5的相对应的存储单元,具有沿着微处理器100管线的较高的阶段到F阶段112执行的提取地址A及高速缓存线A。在时脉周期4的期间,WRAP信号286为真,指出表示分支指令的BTAC 216会涵盖跨越高速缓存线A及B。
存储单元(C,2)、(I,3)、以及(B,4)相似于图6的相对应的存储单元,具有沿着微处理器100管线的C、I、以及B阶段执行的提取地址B及高速缓存线B。在存储单元(U,5)中,因为提取地址B命中指令高速缓存202,所以指令高速缓存202会依照方框444而送出高速缓存线B。
然而,在时脉周期6的期间,因为高速缓存线A已填满指令缓冲器142,所以指令缓冲器142会使FULL信号246致能。因此,控制逻辑222会依照方框448,而等待FULL信号246变成伪,其发生于时脉周期11中。
在存储单元(C,11)中,多任务器218会响应FULL信号246变成伪,而选择来自提取地址缓存器组282的备分提取地址274(其为提取地址B)。在存储单元(I,12)中,会依照方框452,而将提取地址B送到指令高速缓存202。在存储单元(B,13)中,指令高速缓存202在其第二存取周期期间,会选择到高速缓存线B。在存储单元(U,14)中,因为提取地址B命中指令高速缓存202,所以指令高速缓存202会依照方框444而送出高速缓存线B。在存储单元(V,15)中,因为指令缓冲器142没有占满,所以会依照方框454而将高速缓存线B写入指令缓冲器142。在存储单元(F,16)中,高速缓存线B会送到F阶段112执行。
在存储单元(C,12)中,多任务器218会选择来自储存缓存器228的储存的目标地址284。在存储单元(I,13)中,会依照方框426,而将储存的目标地址284送到指令高速缓存202。在存储单元(B,14)中,指令高速缓存202在其第二存取周期期间,会选择到高速缓存线B。在存储单元(U,15)中,指令高速缓存202会依照方框416而送出高速缓存线T。在存储单元(V,16)中,因为指令缓冲器142没有占满,所以会依照方框422而将高速缓存线T写入指令缓冲器142。在存储单元(F,17)中,高速缓存线T会送到F阶段112执行。
现在参照图8,其是根据本发明变化的实施例的图2中的分支控制装置的运作的流程图。除了图8没有包括方框438及442之外,图8的流程图与图4的流程图是相同的。而取代为从方框436到判断方框446的执行流程。也就是,图8的实施例会处理此状况,而不是将指令高速缓存202中的提取地址B的误失视为BTAC 216误失。在指令缓冲器142不再是占满之后,此实施例会经由备份至提取地址B而处理此状况,以及接下来会使用储存的目标地址284,以获得高速缓存线T,如参照图9所示。
现在参照图9,与图6相似,其是根据本发明图8的流程图的图2中的分支控制装置的运作的例子的流程图。图9是依照图8的流程图的涵盖的BTAC 216分支的情况中的图1中的微处理器100的运作的例子,其中包含分支指令的第二部分的高速缓存线B会误失于指令高速缓存202中,并且高速缓存线A会填满指令缓冲器142。除了在图9中的时脉周期从6到25的期间,FULL信号246为真外,图9中的时脉周期从1到23与相对应的图6中的那些相同。
当在时脉周期24的期间,高速缓存线B到达响应缓冲器208时,指令缓冲器142为占满,如根据方框446所决定。因此,不会将高速缓存线B写到指令缓冲器142,而是写到指令高速缓存202。
在此例中,在时脉周期26的期间,FULL信号246会变成伪,如在方框448的期间所决定。因此,在存储单元(C,26)中,多任务器218会选择备份提取地址274当做提取地址162。在存储单元(I,27)中,会依照方框452而将备份提取地址274送到指令高速缓存202。在存储单元(B,28)中,指令高速缓存202在其第二存取周期期间,会选择到高速缓存线B。在存储单元(U,29)中,指令高速缓存202会依照方框444而送出高速缓存线B。在时脉周期25的期间,来自响应缓冲器208的高速缓存线B会先写入指令高速缓存202。在存储单元(V,30)中,因为指令缓冲器142没有占满,所以会依照方框454而将高速缓存线B写入指令缓冲器142。在存储单元(F,31)中,高速缓存线B会送到F阶段112执行。
在存储单元(C,27)中,多任务器218会选择储存的目标地址284当做提取地址162。在存储单元(I,28)中,会依照方框426而将储存的目标地址284送到指令高速缓存202。在存储单元(B,29)中,指令高速缓存202在其第二存取周期期间,会选择到高速缓存线T。在存储单元(U,30)中,指令高速缓存202会依照方框416而送出高速缓存线T。在存储单元(V,31)中,因为指令缓冲器142没有占满,所以会依照方框422而将高速缓存线T写入指令缓冲器142。在存储单元(F,32)中,高速缓存线B会送到F阶段112执行。
如自图8,图9可知,变化的实施例不会带来具有相关于修正错误预测的使用分支的额外的时脉周期,也就是因为其涵盖及包含有分支的第二部分的第二高速缓存线会误失于指令高速缓存202中,所以BTAC 216击中会将BTAC 216视为误失。更确切的说,如图9可知,在提取地址B之后的最早的可用时脉周期,会将BTAC 216的推测的分支目标地址152送到指令高速缓存202。
虽然本发明及其目的、特征、以及优点已详细叙述,但是可经由本发明所包含的其它实施例。例如,在管线中阶段的数目的安排可以变化。BTAC、指令高速缓存、或指令缓冲器的大小及结构可以变化。高速缓存线的大小可以变化。

Claims (36)

1.一种在具有指令高速缓存的微处理器中的分支控制装置,耦接至一地址总线,用以将多个高速缓存线送至一指令缓冲器,其特征是,该装置包括:
一分支目标地址高速缓存,送出一分支指令之一目标地址及一涵盖信号,其中该涵盖信号表示该分支指令是否涵盖跨越一第一高速缓存线及一第二高速缓存线;
一地址缓存器,耦接至该分支目标地址高速缓存,用以储存该目标地址;
其中当该涵盖信号表示该分支指令涵盖跨越该第一高速缓存线及该第二高速缓存线时,该地址缓存器会将该地址总线上的该目标地址送到该指令高速缓存,用以选择一第三高速缓存线,该第三高速缓存线包含该分支指令的一目标指令。
2.如权利要求1所述的在具有指令高速缓存的微处理器中的分支控制装置,其特征是,在用于该第二高速缓存线的一提取地址送到该地址总线上之后,该地址缓存器会送出该地址总线上的该目标指令。
3.如权利要求2所述的在具有指令高速缓存的微处理器中的分支控制装置,其特征是,该分支目标地址高速缓存耦接至该地址总线,其中该分支目标地址高速缓存响应于该地址总线上所送出的一提取地址,而送出该目标地址。
4.如权利要求3所述的在具有指令高速缓存的微处理器中的分支控制装置,其特征是,该分支目标地址高速缓存响应于该第一高速缓存线的一提取地址,而送出该目标地址。
5.如权利要求4所述的在具有指令高速缓存的微处理器中的分支控制装置,其特征是,该第一高速缓存线包含该分支指令的一第一部份。
6.如权利要求2所述的在具有指令高速缓存的微处理器中的分支控制装置,其特征是,该指令缓冲器产生一占满信号,由该占满信号表示该指令缓冲器是否占满。
7.如权利要求6所述的在具有指令高速缓存的微处理器中的分支控制装置,其特征是,只有当该占满信号表示该指令缓冲器不为占满时,该地址缓存器才会将该目标地址送到该指令高速缓存。
8.如权利要求6所述的在具有指令高速缓存的微处理器中的分支控制装置,更包括:
一备份缓存器,耦接至该地址总线,当该指令高速缓存送出储存于该指令缓冲器中的该第二高速缓存线时,如果该占满信号表示该指令缓冲器为占满,用以储存该第二高速缓存线的该提取地址。
9.如权利要求8所述的在具有指令高速缓存的微处理器中的分支控制装置,其特征是,如果该占满信号表示该指令缓冲器不再为占满,该备份缓存器会送出该地址总线上的该第二高速缓存线的该提取地址。
10.如权利要求1所述的在具有指令高速缓存的微处理器中的分支控制装置,其特征是,当该第二高速缓存线的一提取地址误失于该指令高速缓存中时,在该第二高速缓存线储存于该指令缓冲器之后,该地址缓存器会将该目标地址送到该指令高速缓存。
11.如权利要求1所述的在具有指令高速缓存的微处理器中的分支控制装置,其特征是,当该第二高速缓存线的一提取地址命中该指令高速缓存中时,该地址缓存器会将该目标地址送到该指令高速缓存。
12.一种具有管线的微处理器,其特征是,包括:
一指令高速缓存,耦接至一地址总线,用以接收用于选择一第一高速缓存线的一第一提取地址;
一分支目标地址高速缓存,耦接至该地址总线,用以送出用于表示一分支指令是否涵盖超过该第一高速缓存线的一涵盖指针;
一地址缓存器,耦接至该分支目标地址高速缓存,用以储存该分支指令的一目标地址,该目标地址由该分支目标地址高速缓存所送出;
一多任务器,耦接至该分支目标地址高速缓存,当该涵盖指针为真时,用以选择用于该地址总线上的一第二提取地址,该第二提取地址选择包含涵盖超过该第一高速缓存线的该分支指令的一部份的一第二高速缓存线;
其中在选择用于该地址总线上的该第二提取地址之后,该多任务器会自该地址缓存器选择用于该地址总线上的该目标地址。
13.如权利要求12所述的具有管线的微处理器,其特征是,该多任务器在选择该第一提取地址之后,会选择该第二提取地址。
14.如权利要求12所述的具有管线的微处理器,其特征是,该分支目标地址高速缓存响应于该地址总线上所接收的该第一提取地址,而送出该目标地址。
15.如权利要求14所述的具有管线的微处理器,其特征是,该分支目标地址高速缓存所送出的该目标地址与该指令高速缓存所送出的该第一高速缓存线大体上为同时。
16.如权利要求12所述的具有管线的微处理器,其特征是,该第二提取地址为送至该第一提取地址的一下个循序提取地址。
17.如权利要求12所述的具有管线的微处理器,其特征是,该多任务器选择用于选择该指令高速缓存中的一第三高速缓存线的该目标地址,该第三高速缓存线包含该分支指令的一目标指令。
18.如权利要求17所述的具有管线的微处理器,其特征是,该多任务器选择该第一提取地址、该第二提取地址及该目标地址,该第一提取地址、该第二提取地址及该目标地址用以使该第一高速缓存线、该第二高速缓存线及该第三高速缓存线依次储存于一指令缓冲器中。
19.一种在微处理器中的分支控制装置,其特征是,包括:
一分支目标地址高速缓存,用以高速缓存多个指示,其中,所述多个指示分别表示先前执行的分支指令是否涵盖跨越两条高速缓存线;
一缓存器,耦接至该分支目标地址高速缓存,用以接收来自该分支目标地址高速缓存的储存于其中的所述多个先前执行的分支指令中的一个的一目标地址;以及
一控制逻辑电路,耦接至该分支目标地址高速缓存,用以接收该些指示中的一个,所接收的指示相对应于该些先前执行的分支指令中的一个;
其中当所接收的指示表示出该些先前执行的分支指令中的一个涵盖跨越两条高速缓存线时,在提取含有该些先前执行的分支指令中的一个的该两条高速缓存线之后,该控制逻辑电路会使该微处理器分支至该目标地址。
20.如权利要求19所述的在微处理器中的分支控制装置,其特征是,该控制逻辑电路用以自一指令高速缓存中提取含有该些先前执行的分支指令中的一个的一部份的该两条高速缓存线中的一第一条。
21.如权利要求20所述的在微处理器中的分支控制装置,其特征是,该控制逻辑电路用以接收来自该指令高速缓存的一误失指针。
22.如权利要求21所述的在微处理器中的分支控制装置,其特征是,当该误失指针显示出该两条高速缓存线中的一第二条正误失于该指令高速缓存时,该控制逻辑电路用以自一内存中,而不是自该指令高速缓存中,提取含有该些先前执行的分支指令中的一个的一部份的该两条高速缓存线中的该第二条。
23.如权利要求22所述的在微处理器中的分支控制装置,其特征是,该控制逻辑电路在该两条高速缓存线中的该第二条之后,自该指令高速缓存中提取一第三高速缓存线,其中该第三高速缓存线含有该些先前执行的分支指令中的一个的一目标指令。
24.如权利要求23所述的在微处理器中的分支控制装置,其特征是,自该指令高速缓存中所提取的该第三高速缓存线使用储存于该缓存器中的该目标地址。
25.一种微处理器分支控制装置,其特征是,包括:
一增加器,耦接至一指令高速缓存地址总线,用以送出该地址总线上的一第一提取地址,该第一提取地址选择含有一分支指令的一第一部份的一第一高速缓存线;
一分支目标地址高速缓存,耦接至该地址总线,用以响应于该第一提取地址,而送出该分支指令的一目标地址;
一地址缓存器,耦接至该分支目标地址高速缓存,当该分支目标地址高速缓存表示该分支指令涵盖超过该第一高速缓存线时,用以储存该目标地址;
其中该增加器会送出该地址总线上的一第二提取地址,该第二提取地址选择含有该分支指令的一第二部份的一第二高速缓存线;
其中该地址缓存器会送出该地址总线上的该目标地址,该目标地址选择含有该分支指令的一目标指令的一第三高速缓存线。
26.如权利要求25项所述的微处理器分支控制装置,其特征是,更包括:
一旗标缓存器,用以储存该地址缓存器存有涵盖超过该第一高速缓存线的该目标地址的一指示。
27.如权利要求26项所述的微处理器分支控制装置,其特征是,当该旗标缓存器表示该地址缓存器存有涵盖超过该第一高速缓存线的该目标地址时,以及当该第二提取地址误失于耦接至该地址总线一指令高速缓存中时,该增加器会将一第三提取地址循序的送到该地址总线上的该第二提取地址,以及该地址缓存器不会送出该地址总线上的该目标地址。
28.一种具有指令高速缓存的微处理器的执行方法,其特征是,该方法包括:
将一第一提取地址用于该指令高速缓存,用以选择至少含有一分支指令的一部份的一第一高速缓存线;
响应于该第一提取地址而送出该分支指令的一目标地址;
决定该分支指令是否涵盖超过该第一高速缓存线;
当该分支指令涵盖超过该第一高速缓存线时,将该目标地址储存于一缓存器中,并且将一第二提取地址用于该指令高速缓存,用以选择含有该分支指令的一其余部分的一第二高速缓存线;
将来自该缓存器的该目标地址送到该指令高速缓存,用以选择含有该分支指令的一目标指令的一第三高速缓存线。
29.如权利要求28所述的具有指令高速缓存的微处理器的执行方法,更包括:
在执行该分支指令之后及在该使用该第一提取地址之前,会高速缓存一指示,该指示表示该分支指令是否涵盖超过该第一高速缓存线。
30.如权利要求29所述的具有指令高速缓存的微处理器的执行方法,其特征是,决定该分支指令是否涵盖超过该第一高速缓存线包括检查该指示。
31.如权利要求28所述的具有指令高速缓存的微处理器的执行方法,其特征是,更包括:
在先前的执行该分支指令之后及该响应于该第一提取地址而送出该分支指令的该目标地址之前,会高速缓存该分支指令的该目标地址。
32.如权利要求28所述的具有指令高速缓存的微处理器的执行方法,其特征是,更包括:
决定该第二提取地址是否误失于该指令高速缓存中。
33.如权利要求32所述的具有指令高速缓存的微处理器的执行方法,其特征是,更包括:
当该第二提取地址误失于该指令高速缓存中时,会自一内存中,而不是自该指令高速缓存中,获得该第二高速缓存线。
34.如权利要求33所述的具有指令高速缓存的微处理器的执行方法,其特征是,在该自一内存中,而不是自该指令高速缓存中,获得该第二高速缓存线之后,会执行该将来自该缓存器的该目标地址送到该指令高速缓存。
35.如权利要求28所述的具有指令高速缓存的微处理器的执行方法,其特征是,更包括:储存该第一高速缓存线、该第二高速缓存线及该第三高速缓存线于一指令缓冲器中。
36.如权利要求35所述的具有指令高速缓存的微处理器的执行方法,其特征是,该储存该第一高速缓存线、该第二高速缓存线及该第三高速缓存线于该指令缓冲器中包括依次储存该第一高速缓存线、该第二高速缓存线及该第三高速缓存线于该指令缓冲器中。
CN 02107138 2001-07-16 2002-03-11 处理涵盖跨越指令高速缓存线的分支目标地址高速区的分支的装置及方法 Expired - Lifetime CN1270234C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/906,381 US7203824B2 (en) 2001-07-03 2001-07-16 Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US09/906,381 2001-07-16

Publications (2)

Publication Number Publication Date
CN1369780A CN1369780A (zh) 2002-09-18
CN1270234C true CN1270234C (zh) 2006-08-16

Family

ID=25422343

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 02107138 Expired - Lifetime CN1270234C (zh) 2001-07-16 2002-03-11 处理涵盖跨越指令高速缓存线的分支目标地址高速区的分支的装置及方法

Country Status (2)

Country Link
CN (1) CN1270234C (zh)
TW (1) TW564369B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI242744B (en) * 2003-01-14 2005-11-01 Ip First Llc Apparatus, pipeline microprocessor and method for avoiding deadlock condition and storage media with a program for avoiding deadlock condition
US7640422B2 (en) * 2006-08-16 2009-12-29 Qualcomm Incorporated System for reducing number of lookups in a branch target address cache by storing retrieved BTAC addresses into instruction cache
US8205068B2 (en) * 2008-07-29 2012-06-19 Freescale Semiconductor, Inc. Branch target buffer allocation

Also Published As

Publication number Publication date
CN1369780A (zh) 2002-09-18
TW564369B (en) 2003-12-01

Similar Documents

Publication Publication Date Title
CN1279442C (zh) 选择性存取不同指令缓冲阶层的装置及方法
US7203824B2 (en) Apparatus and method for handling BTAC branches that wrap across instruction cache lines
CN1123826C (zh) 预取由转移历史引导的指令/数据的方法和装置
CN1147794C (zh) 具有静态转移预测支持的去耦取指令-执行引擎
US7234045B2 (en) Apparatus and method for handling BTAC branches that wrap across instruction cache lines
JP5384344B2 (ja) 可変長の命令セット実行モードを有するプロセッサにおけるbhtの有効な利用
US6249862B1 (en) Dependency table for reducing dependency checking hardware
US7010648B2 (en) Method and apparatus for avoiding cache pollution due to speculative memory load operations in a microprocessor
CN1196060C (zh) 用于在一个多线程处理器内进行线程切换的方法和装置
EP1974255B1 (en) Translation lookaside buffer manipulation
CN1864131A (zh) 处置在基于跟踪缓存的处理器中的异常指令的系统及方法
JP5815596B2 (ja) プロシージャリターンシーケンスを加速するための方法およびシステム
US9753732B2 (en) Embedded branch prediction unit
CN107885530A (zh) 提交高速缓存行的方法和指令高速缓存
US7984280B2 (en) Storing branch information in an address table of a processor
US6446143B1 (en) Methods and apparatus for minimizing the impact of excessive instruction retrieval
CN1270234C (zh) 处理涵盖跨越指令高速缓存线的分支目标地址高速区的分支的装置及方法
JP2001527233A (ja) 復帰選択ビットを用いて分岐予測のタイプを分類する分岐予測
CN1304944C (zh) 预先读取脱序执行指令的方法及处理器
US9507600B2 (en) Processor loop buffer
US7447885B2 (en) Reading prediction outcomes within a branch prediction mechanism
US20080065870A1 (en) Information processing apparatus
WO1999008185A1 (en) A dependency table for reducing dependency checking hardware
US20140019722A1 (en) Processor and instruction processing method of processor
CN1558326A (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
CX01 Expiry of patent term

Granted publication date: 20060816