假想分支目标地址高速缓存中置换目标地址的装置及方法制造方法及图纸

技术编号:2879027 阅读:142 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种用于流水线化微处理器的装置及方法,用以置换一分支目标地址高速缓存(BTAC)快取线中两个目标地址其中之一。若两个项目中只有一个是无效的,该无效的项目就被置换。若两个项目皆为有效,则最近最少被使用的项目被置换。若两个项目皆无效,则被置换的是,BTAC中并非最后以一无效项目写入的一边所对应的项目,其中该边由一全域状态缓存器(global status register)指出。在一具体实施例中,只有当两个项目皆无效时,在一边被写入的情况下,才更新全域状态。在另一具体实施例中,BTAC于每条快取线储存N个项目,其中N大于1。状态缓存器保存着用于确定N个边中哪一边为最近最少被写入的数据。最近最少被写入的一边则被选择用来置换。(*该技术在2022年保护过期,可自由使用*)

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及微处理器(microprocessor)的分支预测(branchprediction)的
,尤指分支目标地址(branch target address)的快取技术,特别涉及。
技术介绍
计算机指令一般都储存于内存内可寻址的相连位置。中央处理单(Central Processing Unit,CPU)或处理器由相连的内存位置提取这些指令,并加以执行。CPU从内存每提取一个指令,其内的程序计数器(program counter,简称PC)或指令指针(instruction pointer,简称IP)就会递增,使其内含序列(sequence)中下个指令的地址,此即为下个循序指令指针(next sequential instruction pointer,简称NSIP)。指令的提取、程序计数器的递增以及指令的执行便通过内存呈线性持续进行,直到遇到程控指令(program control instruction)为止。程控指令也称为分支指令(branch instruction),在执行时会改变程序计数器内的地址,并改变控制的流程。换言之,分支指令指定了改变程序计数器内容的条件。因执行一分支指令使程序计数器的值改变,会导致指令执行顺序的中断。这是数字计算机的一项重要特征,因为它提供对程序执行流程的控制,以及分支至程序的不同部分的能力。程控指令的例子包括跳转(jump)、条件跳转(conditional jump)、调用(call)以及返回(return)。跳转指令使CPU无条件地将程序计数器的内容改变至一特定值,这个值就是程序要继续执行的指令所在的目标地址。条件跳转指令使CPU去测试一状态缓存器(status register)的内容,或者可能比较两个值,而后基于测试或比较的结果,不是继续循序执行就是跳转至一新地址,称为目标地址。调用指令使CPU无条件地跳转至一新目标地址,而且储存程序计数器的值以使CPU可返回至先前离开的程序位置。返回指令使CPU去撷取程序计数器于前次调用指令执行时所存的值,并使程序流程返回至所撷取的指令地址。对早期的微处理器而言,程控指令的执行并不会造成处理上显著的延迟,因为这些微处理器被设计为一次只执行一个指令。如果所执行的指令是程控指令,在执行完毕之前,微处理器会知道它是否要分支,而如果是的话,它会知道分支的目标地址为何。因此,不论下个指令是循序的,或是分支的结果,皆会被提取和执行。现代的微处理器则非如此单纯。相反地,对现代的微处理器来说,在微处理器的不同区块或流水线阶段(pipeline stage)内同时处理数个指令乃很平常的事。Hennessy与Patterson将流水线化(pipelining)定义为“一种多个指令得以重叠执行的实作技术。”(引述自Computer ArchitectureA Quantitative Approach,2nd edition,by John L.Hennessy and David A.Patterson,Morgan KaufmannPublishers,San Francisco,CA,1996)作者接着对流水线化做了下列精彩的说明“一个流水线就像是条装配线。在汽车的装配线上,有许多步骤,每个步骤对汽车的制造都有所贡献。每个步骤与其它步骤同时并行,然而是在不同的汽车上进行。在一计算机流水线中,每个步骤完成一个指令的部分,就像装配线,不同的步骤并行地完成不同指令的不同部分。每个这些步骤称为一管道阶段(pipe stage)或管道区段(pipe segment)。这些阶段一个连接着下一个,形成一个管道——指令从一端进入,历经这些阶段,然后从另一端出去,就像汽车在装配线上一样。”因此,当指令被提取时,就被导入流水线的一端。指令于微处理器中历史流水线阶段,直到执行完毕。在这种流水线化的微处理器中,一分支指令是否会改变程序流程,通常都得等它到达流水线之后期阶段才能得知。然而在这之前,微处理器已经提取了其它指令,且正于流水线的早期阶段执行。如果一分支指令改变了程序流程,所有在这分支指令之后进入流水线的指令都必须被丢弃。此外,则必须提取此分支指令的目标地址上的指令。丢弃已在执行中的指令及提取目标地址上的指令,会造成微处理器在处理上的延迟,称为分支惩罚(branch penalty)。为减轻这种延迟问题,许多流水线化的微处理器在流水线的一早期阶段使用分支预测机制来预测分支指令。分支预测机制预测分支指令的结果或方向,即是否要进行分支。分支预测机制也预测分支指令的分支目标地址,即分支指令所要分支到的指令的地址。处理器接着就分支至所预测的分支目标地址,即依据分支预测提取后续的指令,这会比没有分支预测时来得早,因而若确定要进行分支,因此便降低了惩罚的可能性。这种用来快取先前所执行分支指令的目标地址的分支预测机制,称为分支目标地址高速缓存(branch target address cache,简称BTAC)或者分支目标缓冲器(branch target buffer,简称BTB)。在一简单的BTAC或BTB中,当处理器对一分支指令进行译码后,处理器便提供分支指令的地址给BTAC。若该地址命中BTAC且预测分支会进行,处理器就可以利用BTAC中的快取目标地址开始提取目标地址的指令,而非下个循序(sequential)地址的指令。相较于只预测是否采用分支的预测装置,像是分支历史表(branch history table,简称BHT),BTAC的好处是除了确定是否遇到一分支指令所需的时间外,它节省了计算目标地址所需的时间。典型的做法是分支预测数据(例如被采用/不被采用(taken/not taken))随着目标地址皆储存于BTAC。BTAC运用于流水线的指令译码阶段,这是因为处理器必须先判断分支指令是否存在。处理器使用BTB的一个例子是Intel Pentium II与PentiumIII处理器。现请参阅图1,其绘示Pentium II/III处理器100相关部分的方块图。处理器100包括一BTB134,用来快取分支目标地址。处理器100从一指令高速缓存(instruction cache)102提取指令,该指令高速缓存102快取了指令108与前译码(pre-decoded)分支预测数据104。前译码分支预测数据104可能包括像是指令类型或指令长度这样的讯息。指令从指令高速缓存102提取,并送到指令译码逻辑(instructiondecode logic)132,由其来译码或解译指令。一般是从下个循序提取地址112来提取指令。该下个循序提取地址112是由递增装置(incrementer)118将现行指令高速缓存102的提取地址122直接加上一指令高速缓存102的快取线的大小所得。然而,如果一分支指令已由指令译码逻辑132译码,接着控制逻辑(controllogic)114便选择性地控制一多工器(multiplexer)116选取BTB134所提供的分支目标地址,作为指令高速缓存102的提取地址122,而非选取下个循序提取地址112。控制逻辑114根据指令高速缓存102提供之前译码数据104以及BTB134预测该分支指令是否会被采用(本文档来自技高网...

【技术保护点】
一种装置,用以在一被采用的分支指令(branch instruction)执行时,将该被采用分支指令的一目标地址写入一分支目标地址高速缓存(BTAC),其特征在于,该BTAC具有数个储存组件,用于快取数个已执行分支指令的数个目标地址,每一该数个储存组件包括第一与第二项目以储存一目标地址,该装置包括: 一全域指示器(global indicator),在BTAC数个储存组件的第一与第二项目中指定一全域项目; 一分支控制逻辑,对应至该全域指示器,依据全域指示器选取该第一与第二项目其中之一,以写入该被采用分支指令的目标地址。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:汤玛斯麦当劳泰瑞派克斯
申请(专利权)人:智慧第一公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1