带转移模式字段的转移历史表的制作方法

文档序号:6413835阅读:146来源:国知局

专利名称::带转移模式字段的转移历史表的制作方法
技术领域
:本发明一般涉及数字处理器,尤其涉及带转移历史表的处理器,并且此处理器读取多个指令和/或相对于被读取的存储器块具有一任意定位的指令。现代数字处理器,如超标量微处理器,在每一机器周期对多条指令进行译码,调度,并执行。为了对这样的超标量微处理器进行优化设计,有必要在一个机器周期中从存储器读取至少和译码/执行所能处理的一样多的指令。由于所读取的指令字段中可能包括多个转移指令,因此要求设计一个转移历史表地址高速缓冲存储器来预测可能取到的下一个转移指令的位置。为了优化处理器周期,所选择的找出预测转移的方法(即决定那个地址的目标地址)及对那个存储器块的指令读取的初始化必须相对简单。已经提出并实施了一些转移预测装置,他们各有其优缺点。Emma等人在美国专利No.5,353,421上,对其中的一些方法在多预测转移预测装置中的应用进行了描述。如其中所描述的,借助预测一条转移指令的结果,处理器可以保持流水线充满指令,并且如果转移的结果被正确的预测,可避免流水线中断。Emma等人还提供了转移预测机制的简要历史。另外,Levitan在美国专利No.5,367,703中进一步描述了一项技术。它使用不同的预测器,根据从用于读取存储器块的指令读取地址到在存储器块中的转移位置的距离,来预测一个转移的结果。对每一可能的距离,预测器各个位的不同集合反映对那个距离的转移的历史。Veh和Patt,在“ProceedingsoftheNinthAnnualinternationalsynposiumonComputerArchitecture1993”上描述了一套预测器,除根据当前转移指令的历史结果外,它还依据一个或多个以前的(在时间上)转移结果。因此,本发明的一个目的就是简化在一个转移历史表中搜寻和选择适当的转移目标地址的操作,转移历史表可以标识出指令读取块中的多个转移指令。本发明的另一个目的是减少转移历史表选择逻辑的复杂性,并提供一种可扩展至较大规模指令读取块的结构。根据本发明,本发明的上述目的和其他目的通过在转移历史表入口建立一转移模式字段来实现,它指示出在指令读取块中其它转移的存在(没有被当前入口所定义)。一个实现了本发明的超标量微处理器具有一预测未来转移的改进的系统,它根据一个指令块读取的发生,来预测一个未来的转移。微处理器具有一指令读取装置,它读取可能含有大量转移指令的一个存储器块,此读取装置包括带有一个或多个入口的转移历史表,每一个入口存储着指令读取块内包含的一个转移的转移地址和目标地址及在指令读取块内的模式转移。所存储的转移和目标地址及来自转移历史表的转移模式字段在下一个指令块读取发生时被检索。转移模式字段用于保证只有一个转移入口将被预测。一个执行单元执行转移指令,决定其结果和所述的转移指令正确的目标地址。通过下面对本发明的一个优选实施方式的详细描述,并参考附图,上述的和其他的目的、内容及优点可以得到更好的理解。其中图1是一个实现了本发明的超标量微处理器的框图;图2是一个更详细表示出转移历史表的框图;以及图3是一个更详细表示出用于转移历史表更新的转移模式产生器的框图和逻辑图。本发明可以采用两种不同的转移历史表配置。第一种也是最普遍的一种配置为一高速缓冲存储器,由一n-入口,m-路设置相联高速缓冲存储器组成。表一表示出这样一个转移历史表入口给出的字段。表1转移历史表入口字段定义转移地址—通常称为转移地址字段,本字段不包括索引位,那些位用于对转移历史表寻址。它也不包括在指令读取块中识别转移的起始位置的低位字节。同样,转移地址的高位字节可能也不包括在转移地址字段中。这一字段也被称为抗混淆(anti-alias)字段。转移偏移—转移偏移字段识别指令读取块中的转移的起始位置。有效—这是有效入口。转移目标地址—如果转移指令成功(即,被取中),下一条被执行指令的存储器位置。用于读取下一指令块的地址分为四个单独的字段字偏移,索引,抗混淆字段,废弃位。字偏移包括低位地址位,表示在存储器读取块中指令译码开始的位置。索引字段是log2(n)位,用于对转移历史表寻址。从高速缓冲存储器读出m个入口。如果抗混淆字段相等,入口被接受,并作为在被读取的存储器块中的一个转移。(通常同时带有转移历史表讯问)。假设转移历史表入口包含用于预测转移结果的信息。转移结果预测被应用于从高速缓冲存储器读入的m个入口。由于读取了多指令,在指令读取存储器块中可能有多个预测取中的转移被识别。指令译码可以在指令读取块中的任何位置开始。所有字偏移小于指令读取块的字偏移的预测取中转移都被忽略,因为这些指令将不被译码。由于转移历史表的目的是提供一唯一指令读取地址作为下一指令读取地址,所以当预测到多个其字偏移等于或大于指令译码将要进行的地址的字偏移的转移时,则具有较小字偏移的入口被选中。被选择入口的转移目标地址被用于下一指令存储器读取。熟练的技术人员会明白转移历史表入口的字偏移必须和指令读取地址及所有其它入口的字偏移进行比较(a>b)。因此,所需的比较器的的数量为(m2+m)/2。随着指令读取地址的增加,两种因素影响着转移历史表的设计。第一,字偏移字段中的位数增加。第二,增加相关类别以保证在一指令读取块中的多个转移都被识别是必要的。这些因素的共同作用导致为选择正确的转移历史表入口的电路上按几何级数的增加。为减小转移历史表选择逻辑的复杂性,并提供一个可扩展至较大规模指令读取块的结构,转移历史表的每一入口都有一个加到入口上的转移模式字段。除了最右的位,转移模式字段对指令读取块上的指令译码开始的位置有一个二进制位。当一转移历史表入口被更新时,指令读取块上的预测取中转移的模式与特定的转移历史表入口的字偏移结合,从而提供带有与比当前入口所指示的转移指令处在较低地址的,与在指令读取块中任一预测取中转移相一致的位设置的一个字段。在本发明的优选实施方式中,字偏移比较器被取掉了,并以一个简单的2-ANDj-AND3-AND逻辑结构所替代,这里,j是一个大于在转移模式字段中的位数的数。本发明还可以应用于作为一内容访问存储器(CAM)使用的转移历史表。这一实施可以被看作一更普遍的设置关联存储器高速缓冲存储器设计的一个简化,而此处的索引字段位数为零,并且转移历史表的每一入口有其自己的抗混淆字段比较器和命中检测逻辑。转移模式字段解决了由于在每一周期内读取多个指令的计算机系统中使用按内容访问存储器而产生的重大问题。在转移历史表的最普通的实施中,当用一读取地址去搜索一个用于预测转移指令的转移历史表时,转移偏移不被考虑。在指令读取块中可能被预测的不同转移的数目决定于m,m是为了一个命中而检查的入口数。只要m很小,选择距读取地址最近的转移指令作为被预测指令是可行的。但是,当m很大时,例如一个全关联按内容访问存储器,如果没有本发明,不可能允许多抗混淆字段匹配。因此,在每一指令读取块中有多于一个转移的转移历史表中进行预测一般是不可能的。对此不足的一个解决办法是在抗混淆字段比较中包括来自转移偏移字段的位,这已被PowerPCTTM604e微处理器所实施。这一方法允许在一指令读取块中识别多个转移。但这一方法的缺点是一个单独的转移可能需要多个转移历史表入口。实际上,如果转移偏移字段上的j位被包括在抗混淆字段比较中,则转移历史表上的大至2j的入口可能被指定预测一单独转移指令。对一按内容访问存储器,转移模式字段的应用可以在一个每一转移指令仅带一个单独入口的指令读取块中允许多个转移预测。现在参考附图,尤其是参考附图1,图中表示一超标量微处理器系统10的高级框图,它可用以实施本发明的方法和系统。如图所示,微处理器系统10包括一个存储数据、指令等的存储器18。存储在存储器18上的数据和指令用熟练的技术人员熟悉的方法通过高速缓冲存储器/存储器接口20被访问。高速缓冲存储器系统的规模设定和使用在数据处理技术上已被熟知,在本发明中不再赘述。然而,那些熟练的技术人员将会理解依靠使用先进的关联高速缓冲存储器技术,使用暂存在高速缓冲存储器/存储器接口20的数据可以获得存储器访问的大的百分比。来自高速缓冲存储器/存储器接口20的指令一般被装载到最好包括多个队列位置的指令队列22中。在一个超标量微处理器系统的一个典型实施中,指令队列包括8个队列位置,于是,在一个给定的周期内,根据被高速缓冲存储器/存储器接口20传送的有效指令的多少,以及在指令队列22中可用的空间的大小,有0到8个指令可以装载到指令队列22。如同在如此超标量微处理器系统中的典型状况一样,指令队列22用于将指令分配到多个执行单元。如图一所示,微处理器系统10包括一个浮点处理器单元24,一个或多个定点或整数处理器单元26,和一个转移处理器单元28。因此,指令队列22可以在一个单周期内,调度0至3(或更多,决定于特定的微处理器的定点单元和/或其它执行单元的数量)条指令到每个执行单元。除了对来自指令队列22的指令进行顺序调度外,所谓"条件转移指令"可以被装载到指令队列22中以由转移处理器单元28执行。一条条件转移指令是这样一种指令,它在一个应用程序中指定采用一个相关的条件转移以响应执行一条或多条顺序指令所选择的结果。在一流水线处理器系统,例如微处理器系统10中,努力使运行时间延迟极小化,当一个指令块通过作为读取装置一部分的转移历史表被读取到指令队列22时,在指令队列中的一个条件转移的出现被预测,参考读取器30。这个转移历史表将在下面作详细描述。对于那些熟练的技术人员应该很清楚的是,当一个条件转移被预测为"不被取中"时,在指令队列中的顺序指令只是继续沿着当前的路径进行,也不改变指令。但是,如果对转移出现的预测是错误的,则从指令队列必须清除跟在条件转移指令程序后的顺序指令,并且目标指令必须被读取。反之,如果条件转移被预测为"被取中",则目标指令被读取,并在条件转移后使用,只要预测被认为正确。并且当然,如果"取中"的预测是不正确的,目标指令必须被清除,并且在程序顺序上跟在条件转移指令之后的的顺序指令必须被检索。如图所示,微处理器系统10还包括一个条件寄存器32。在微处理器系统10上执行顺序指令时出现的各种比较,其比较结果由条件寄存器32暂时存储。于是,浮点处理器单元24,定点处理器单元26和转移处理器单元28都被耦合至条件寄存器32。在条件寄存器32中的一个特定条件的状态可以被检测并耦合到转移处理器28上以产生目标地址,然后,目标地址被耦合至读取器30。图2更详细的表示出读取器30。目标地址在目标地址确认逻辑206与来自转移队列204的预测目标地址进行比较。如果转移目标被正确预测,不需要任何操作。但是,如果转移没被预测,或者转移目标地址不正确,随后的指令必须清除,正确的目标指令必须被读取。同样,转移历史表201必须以转移地址,正确的目标地址和转移模式进行更新。当一个转移目标地址被引入读取器30,并且目标地址确认失败,则转移目标地址被装载到指令地址寄存器205,并且,转移目标地址和转移地址被装载至转移队列204。指令地址寄存器205中的内容被耦合至高速缓冲存储器/存储器接口20。转移队列204中的内容被耦合至转移历史表201中。使用为熟练的技术人员熟知的任一个最近最少使用的算法(LRU),选中要被替代m入口中的一个。其余的每一个入口被询问以决定那个入口的抗混淆字段和来自转移地址的抗混淆字段是否相匹配。如图3所示,对每一匹配入口的转移偏移字段,及来自转移队列204的转移偏移字段,被编入"多中之一"码。对这些码一起进行“或”处理,如图3所示,以提供在将由转移地址被读取的指令读取块中的预测转移的模式。图3描述一个四路设置关联转移历史表。熟练的技术人员可以很容易的将本设计扩展到任意“路”及任何尺寸的指令读取块。相应于在包含一个预测被取中转移的指令读取块中的每一个位置,本转移模式将包含一个"1"路。在某些实施中,除了所使用的LRU算法已经使在其转移偏移的转移被不同的转移覆盖情形之外,可能有将被预测取中的转移指令。回顾在优选的实施例中,为了更新转移历史表201,一组m入口已被更新,并且那些入口的抗混淆字段已和转移地址的抗混淆字段比较。对于抗混淆字段匹配的m入口的子集,在那些入口的转移模式字段必须被更新以反映加入到转移历史表201中的转移的转移位置。在优选的实施例中,转移模式与那些转移模式入口正被更新的转移历史表入口的转移偏移结合。新的转移模式,我们将称其为入口特定转移模式,通过设定在入口特定转移模式的每一位来产生,它的相应的转移模式位被设定,并且转移模式代表一个小于由转移偏移代表的转移地址的转移地址。这种编码方案的目的是在选中检测逻辑中简化选择“成功的"的转移历史表入口的逻辑。表2表示带有一个包含四个可能的转移偏移的指令读取块的微处理器,入口特定转移模式生成的一个例子。也就是说,在可能包含指令的指令读取块的中四个位置。表2对入口特定转移模式字段的编码</tables>在表2中,可以看出最右边的位总是零,不需要在转移历史表中存储。一条指令读取块地址不论何时与高速缓冲存储器/存储器接口20相耦合,以开始进行指令块读取,指令读取块地址也与转移历史表201在总线208上相耦合。指令读取地址被分为抗混淆字段,索引字段,和读取偏移。索引字段用于选择一个m转移历史表入口的集合。取自指令读取地址的抗混淆字段与取自m个转移历史表入口的抗混淆字段进行比较。在具有一抗混淆字段等于指令读取地址抗混淆字段的集合m中的所有转移历史表入口形成一集合m′,集合m′可能为空,或包含一个单独的入口,或包含多个入口。如果集合m′为空,则对此指令块没有转移预测。如果集合m′包含一单独入口,则那个入口被用作预测一个转移。在集合m′中有多个入口的情况中,指令读取偏移被编码成位集合字段,其位集合对应转移模式的每一位,转移模式代表一比读取偏移较高或相等的偏移指令位置。表3表示对一个包含4个可能的转移偏移的指令读取块的微处理器,指令偏移再编码的生成的例子。表3指令取块再编码</tables>由于每一个转移历史表入口有其入口特定转移模式字段,判定一个入口是用于转移预测的正确入口,按下述进行。一个入口成为正确的入口,要满足如下条件。·转移偏移必须与指令读取地址相符合,或相等。·在指令读取地址和转移偏移之间指令读取块中没有其它的转移。在优选的实施例中,转移偏移在转移历史入口中作为一个译码值表示。也就是,相应于可能包含一个转移指令的指令读取块中的每一个位置,有一个存储位。在入口只有一位被设置,指示出当前入口所表示的转移的位置。为了便于讨论,我们指定这个入口为偏移(offset)。转移历史表入口转移模式指定为模式(pattern)。再编码指令读取地址指定为读取(fetch)。舍去最右位的读取指定为读取!(fetch!)。入口命中(entryhit)的方程为入口命中<={(读取AND偏移)≠0}AND{(读取AND模式)=0}本发明的一个优点是,当对于一个读取要求判定哪一个入口是有效的时,是并行的与抗混淆比较作出的,当入口命中和抗混淆的匹配对一个入口都为真时,转移历史表入口的目标地址字段被耦合至指令地址寄存器205。如果入口命中或抗混淆的匹配对所有m个所选择的转移历史表入口是假,则没有对读取的指令块的转移预测。并且,增量器207的输出耦合至指令地址寄存器208。下一顺序指令块然后被读取。当一个目标地址被耦合到指令寄存器205,目标地址也都被耦合到转移队列204,在那里它被保存,直到预测转移执行。读取器的操作的许多细节在描述中已被省略,因为那些操作细节不受转移模式字段和对转移历史表更改的相应的修改及转移选中检测的影响,一个熟悉现有技术和专业知识的技术人员将可以将省略的细节应用于一特定的应用。尽管本发明是以一个优选的实施方式实施于超标量微处理器进行描述的,熟练的技术人员将会发现本发明可以在所附的权利要求的精神和范围内可以作修改。例如,本发明能应用于包含有转移历史表和读取多于一条单独指令的计算机设备,包括主机和数字信号处理器。权利要求1.一个数字处理器,具有基于一指令块读取操作的出现,预测一个未来转移的改进的系统,包括一个指令读取装置,它取出一个可能包含多条转移指令的一个存储器块;一个具有一个或多个入口的转移历史表,每个入口存储一个包含在指令读取块中的转移的转移地址和目标地址,和一个在所述指令读取块中的转移的转移模式字段;当在下一个指令块读取的出现时,用于从所述的转移历史表中检索所述的存储的转移和目标地址及转移模式字段的检索装置。用于转移模式字段以保证只有一个转移入口被预测的选择装置,及一个执行转移指令,决定其结果和所述转移指令的正确目标地址的执行单元。2.权利要求1的数字处理器,其特征在于进一步包括基于一转移指令结果更新所述转移历史表的更新装置。3.权利要求2所述的数字处理器,其特征在于更新装置运用最近最少使用算法(LRU)来更新一个转移目标地址。4.权利要求2的数字处理器,其特征在于转移历史表的一个入口还包括一抗混淆字段,一索引字段和一读取偏移,索引字段被用于选择m个转移历史表入口集合,来自指令读取地址的抗混淆与m个转移历史表入口的抗混淆字段进行比较,抗混淆字段等于指令读取地址抗混淆字段的全部转移历史表入口组成集合m′,如果集合m′为空,表明对一指令块没有转移预测,但如果集合m′包含一单独入口,这个入口被用于预测一个转移。5.权利要求4所述的数字处理器,其特征在于,如果集合m′包括多个入口,则对应转移模式中的每一位指令读取偏移被编码成一个位集合字段其中转移模式所代表的指令位置与读取偏移一致,或比读取偏移有更高的偏移。6.权利要求5所述的数字处理器,其特征在于存储在转移历史表入口的转移模式是一入口特定转移模式,它通过设置每一位来进行编码,其中相应的位在转移模式中设置,并且此位的位置所代表的转移地址小于由那个入口所代表的一个转移的转移偏移所代表的转移地址。7.权利要求6所述的数字处理器,其特征在于此数字处理器是一个超标量微处理器。全文摘要通过降低转移历史表选择逻辑的复杂性并提供一可扩展至较大规模的指令读取块的指令而简化超标量微处理器中的一个转移历史表中的适当的转移目标地址的检测和选择。这通过向在指令读取块中表示其它转移的存在(没有被当前入口定义的转移)的转移历史表入口引入一转移模式字段来实现。文档编号G06F9/38GK1196522SQ9810533公开日1998年10月21日申请日期1998年2月25日优先权日1997年3月26日发明者罗伯特·M·丁克简,詹姆斯·R·罗宾森申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1