在分支预测失败时使用rob恢复rat内容的系统和方法

文档序号:6340054阅读:436来源:国知局
专利名称:在分支预测失败时使用rob恢复rat内容的系统和方法
技术领域
本发明涉及微处理器体系结构技术领域,特别涉及一种在分支预测失败时使用重排序缓冲器(Reorder Buffer,简称为ROB)恢复寄存器别名表(Register Alias Table, 简称为RAT)内容的系统。
背景技术
现代的微处理器体系结构,大多采用了超标量(Super kale)技术,通过在一个周期同时执行多条指令的方法来提高程序执行性能。要想在一个周期内能执行多条指令,就需要解决指令间的相关性问题。指令的相关性分为控制相关和数据相关。其中数据相关又分为写后读(RAW)相关(又称真数据相关),读后写(WAR)相关(又称伪相关)和写后写(WAW) 相关(又称结构相关)三种。寄存器重命名(Register Renaming)技术通过将同一个逻辑寄存器映射到多个物理寄存器的方式,解决了程序运行中的读后写(WAR)和写写(WAW)数据相关,大大提高了指令的并行性。一般来说,为逻辑寄存器分配用于重命名的物理寄存器是通过寄存器别名表RAT (Register Alias Table)来实现。RAT中保留了当前时刻逻辑寄存器和物理寄存器的最新映射关系,RAT用逻辑寄存器地址来寻址,它存储的数据(即,RAT表项的内容)是逻辑寄存器对应的物理寄存器地址。就是说,在微处理器运行的任意时刻,都有一个逻辑寄存器到物理寄存器的映射关系,而RAT就是保存这个映射关系的模块。通过使用逻辑寄存器地址查找 RAT就可以知道当前是哪个物理寄存器代表这个逻辑寄存器,使用这个逻辑寄存器为源操作数的指令就要从这个物理寄存器中读取数据;而使用这个逻辑寄存器为目标操作数的指令会获得一个空闲的物理寄存器用来保存这个目标操作数,同时要修改这个逻辑寄存器在 RAT中的对应表项,将它对应的物理寄存器地址改为该指令获得的空闲物理寄存器地址,在该指令之后的指令如果要读取这个逻辑寄存器,就会从修改后的物理寄存器地址中读取。为了保证微处理器可以进行精确的异常返回,采用乱序执行技术的微处理器使用重排序缓冲器ROB(ReOrder Buffer)按照指令执行的顺序保存正在执行的指令的信息,并对执行完成的指令按照指令执行的顺序进行提交。所谓的提交是表示确认指令和该指令之前的指令都已经执行完成,乱序执行的微处理器与顺序执行的编程模型的执行结果在提交阶段达成了一致。重排序缓冲器ROB是用于乱序执行后恢复指令原来顺序的一种硬件结构,以达到指令结果顺序提交的目的。可以把重排序缓冲器看作是一个包含头指针和尾指针的堆栈FIFO。每条指令进入流水线的时候,按照程序的最先顺序都在重排序缓冲器中依次占据了一列条目,等指令执行完毕,按照先入先出的顺序依次提交指令。当发生中断或者异常行为时,也能恢复原来的执行顺序。寄存器重命名有两种主要的实现方式,一种是把物理寄存器分为体系结构寄存器和重命名寄存器两种。其中体系结构寄存器与逻辑寄存器是一一对应的,表示的是指令提交后逻辑寄存器的状态;重命名寄存器与逻辑寄存器可以是多对一的映射关系,在指令提交前临时保存指令的执行结果。指令的目标逻辑寄存器在寄存器重命名时被分配一个重命名寄存器,而执行完成后目标操作数会被从重命名寄存器中写回到体系结构寄存器中,而重命名寄存器会被释放。在这种方式下,每个逻辑寄存器和它所对应的RAT表项虽然可以对应多个重命名寄存器,但是只有一个体系结构寄存器与它对应,当微处理器复位时,各个 RAT表项的内容就被复位成与其对应的体系结构寄存器的地址。另一种实现方式是不将物理寄存器固定地划分为体系结构寄存器和重命名寄存器,而在RAT之外再加入一个体系结构寄存器映射表保存物理寄存器与体系结构寄存器的映射关系。指令在寄存器重命名时被分配一个空闲的物理寄存器用来保存目标操作数,而在提交时这个物理寄存器地址会被写入体系结构寄存器映射表而被确认为体系结构寄存器。被认为是体系结构寄存器的物理寄存器不能用于寄存器重命名直到它被别的物理寄存器替换出体系结构寄存器映射表,此时该物理寄存器又成了一个空闲的重命名寄存器。在这种方式下,每个逻辑寄存器在微处理器运行时可以和任何一个物理寄存器建立对应关系,但是每个逻辑寄存器还是有一个对应的物理寄存器作为它的默认体系结构寄存器,当微处理器复位时,各个RAT表项的内容就被复位成与逻辑寄存器相对应的默认体系结构寄存器的地址。这两种实现方式下文还会提到,为了表述简化,把上述第一种方式称为重命名实现方式A,而把上述第2种方式称为重命名实现方式B。现代的微处理器同时还使用了分支预测(Branch Predict)技术和推测执行 (Speculation Execution)技术,使得未确定分支的指令可以提前被微处理器加载和执行, 由此解决指令的控制相关。但是这产生了一个问题如果分支预测错误,则推测执行的指令也要被取消,在寄存器重命名时为他们分配的物理寄存器要被收回,因此在RAT中保存的逻辑寄存器和物理寄存器的映射关系要被恢复到推测执行错误的指令执行之前的状态。一种简单的方法是等到分支指令到达提交阶段再判断预测是否正确,因为指令的提交代表微处理器的状态已经确认,如果此时发现指令的分支预测错误,可以直接取消指令中正在执行的所有指令。对于上述的第一种寄存器重命名实现方式,即重命名方式A,RAT 将被恢复到微处理器复位后的状态,即RAT的所有表项都是指向与它们一一对应的体系结构寄存器。而对于上述的第二种寄存器重命名实现方式,即重命名方式B,将体系结构寄存器映射表的内容直接拷到RAT中就可实现对RAT的恢复。这种方法的实现十分简单,但是在乱序执行的微处理器中,从指令执行完毕到指令提交可能需要很多个周期,如果把对分支预测错误的纠正放在提交阶段进行,则在分支指令执行之后到提交之前这段时间,微处理器一直在从错误的地址取值,而这些指令是要被取消的,这相当于这段时间被浪费了,降低了处理器的性能。常用的恢复RAT的方法是为每个基本块设置一个单独的RAT,基本块内的指令地址是连续的,且分支指令是基本块的最后一条指令(如果微处理器有分支延迟槽,那么延迟槽内的指令就是基本块内的最后一条指令),在分支指令的目标地址处(不论分支是否发生)的指令与该分支指令处于不同的基本块中,基本块切换时RAT也会切换。这样为微处理器中的每个基本块保留了一个RAT,当微处理器发现分支预测错误时,会切换回预测错误的那条分支指令目标所在基本块所对应的RAT,逻辑寄存器的映射关系就返回到了预测错误的分支指令(对于某些体系结构来说,还包括延迟槽中的指令)被重命名之后的状态。这种方法需要设置多个RAT,并且每遇到一条分支指令就要进行RAT的切换,而预测错误时还要进行切换。RAT由时序单元组成,需要有时钟并且时刻处于通电(power on)状态,增加了功耗。而在寄存器重命名时需要选择使用哪个RAT的结果和将重命名后的状态写回哪个RAT中,也增加了重命名时的时序开销。

发明内容
本发明目的在于克服现有技术的在功耗和时序上的不足,利用从发现分支预测错误到重命名单元重新开始工作之间的空闲时间,根据ROB中已保存的信息,使用纯组合逻辑恢复RAT。由于只在分支预测错误时工作,而现代微处理器在大多数情况下分支预测成功率很高(大于95%),纯组合逻辑又没有时钟信号,所以可以减小动态功耗。而由于不需要额外的保存信息,在不工作时这部分电路可以处于shutdown状态,所以也可以减小静态功耗。因为只有一个RAT,在重命名操作时不需要根据基本块进行选择,因此在时序上也有一定提尚。根据本发明的第一方面,提供一种在分支预测失败时使用重排序缓冲器ROB恢复寄存器别名表RAT内容的系统,所有的ROB项按照其地址被分成多个组,每个组包括预定数目的ROB项并且所述预定数目的ROB项互相之间没有重叠,所述系统包括
用于产生指示RAT进行更新操作的更新信号的定时装置; 对应于RAT中每个表项的映射关系恢复模块,其中每个映射关系恢复模块包括 分别对应于每个ROB项的比较器,将保存在每个ROB项中的目标逻辑地址与该映射关系恢复模块所对应的RAT表项所对应的逻辑寄存器地址进行比较并且输出指示二者是否相等的比较结果,其中保存在每个ROB项中的目标逻辑地址与该ROB项所对应的指令的目标逻辑寄存器地址相等;
对应于ROB项的每个组的组内查找装置,其接收每个组内的ROB项所对应的比较器输出的比较结果,在这些比较结果中进行查找并输出查找结果;
用于ROB项的多个组的组间多选器,用于选出ROB项中的ROB尾项所在的组,所述ROB 尾项是发生错误的分支指令所对应的ROB项(对于有分支延迟槽的微处理器来说,是延迟槽中的指令),并输出该ROB尾项所在的组的组内的比较器的比较结果;
特殊组内查找装置,接收所述组间多选器输出的比较结果,并且基于所述组间多选器输出的比较结果对所述ROB尾项所在组内的比较器的比较结果进行查找,并输出查找结果;
全局查找装置,用于基于所述组内查找装置输出的查找结果和所述特殊组内查找装置输出的查找结果输出最终的查找结果,所述最终的查找结果指示在ROB中是否还有其目标逻辑地址与该映射关系恢复模块所对应的RAT表项所对应的逻辑寄存器地址相等的ROB 项,以及在其目标逻辑地址与该映射关系恢复模块所对应的RAT表项所对应的逻辑寄存器地址相等的这些ROB项中对应于应该最晚被执行的其目标寄存器地址与所述目标逻辑地址相等的指令的ROB项的地址;
RAT表项恢复装置,接收全局查找装置输出的最终的查找结果,输出该映射关系恢复模块所对应的RAT表项所保存的物理寄存器地址应该被恢复的内容。根据本发明的系统,其中在对所述ROB项进行分组的过程中,每个组内的ROB项的地址是相邻的,并且所有的ROB项中的每一个都在且只在一个组中。根据本发明的系统,当所述定时装置中的计数器的计数值达到预定的值时,该定时装置发出更新信号以指示RAT根据其各个表项所对应的映射关系恢复模块输出更新各个RAT表项原来所保存的物理寄存器地址,其中所述定时装置的定时时间不超过当发生分支预测错误时微处理器从新地址重新加载指令的时间。根据本发明的系统,其中所述比较器输出的比较结果指示该比较器所对应的ROB 项所存储的目标逻辑地址与该比较器所在的映射关系恢复模块所对应的RAT表项所对应的逻辑寄存器地址是否相等,如果该比较器所对应的ROB项已经被取消,则比较结果指示为不相等。根据本发明的系统,其中所述组内查找装置按照其所对应的组内的ROB项地址由组内最大递减到组内最小的顺序查找是否有ROB项所对应的比较器的比较结果指示为相等,如果有,则输出指示这个ROB项在组内的位置的信号和指示查找成功的信号,如果有多个ROB项所对应的比较器的比较结果指示为相等,输出指示最先找到的那个ROB项在组内的位置的信号和指示查找成功的信号,否则输出指示查找失败的信号。根据本发明的系统,其中所述组间多选器根据修改后的ROB尾指针,从已有的ROB 分组中选择出ROB尾项所在的组。根据本发明的系统,在没有转移延迟槽的微处理器中,修改后的ROB尾指针指向预测错误的分支指令所对应的ROB项;在有转移延迟槽的微处理器中,修改后的ROB尾指针指向延迟槽中的指令所对应的ROB项。根据本发明的系统,其中所述特殊组内查找装置接收组间多选器的输出结果,并以所述ROB尾项为起点,按照ROB项地址由大到小的顺序查找是否有ROB项所对应的比较器的比较结果指示为相等,如果有,则输出指示这个ROB项在组内的位置的信号和指示查找成功的信号,如果有多个ROB项所对应的比较器的比较结果指示为相等,则输出指示最先找到的那个ROB项在组内的位置的信号和指示查找成功的信号,否则输出指示查找失败的信号,其中对应于其地址大于ROB尾项地址的ROB项的比较器的比较结果将不会被查找。根据本发明的系统,其中所述全局查找装置首先根据所述特殊组内查找装置的输出的指示查找是否成功的信号来判断特殊组内查找装置是否找到了比较器的比较结果指示为相等的ROB项,如果找到,就将特殊组内查找装置找到的ROB项的地址作为输出并且输出表示查找成功的信号,如果特殊组内查找装置没有找到比较器的比较结果指示为相等的 ROB项,则按照指令依次进入ROB的方向,判断组间多选器所选择的组的下一个组所对应的组内查找装置是否找到了比较器的比较结果指示为相等的ROB项,如果找到,将这个组内查找装置找到的ROB项的地址作为输出并且输出指示查找成功的信号,如果没有找到,继续判断下一个组内查找装置的结果,直到循环到组间多选器找到的ROB组为止,此时全局查找装置查找组间多选器所选择的ROB组的组内查找装置是否找到比较器比较结果指示为相等的ROB项,如果找到,将这一 ROB项的地址作为输出并且输出指示查找成功的信号, 否则全局查找装置输出指示查找失败的信号,并结束查找。根据本发明的系统,其中如果全局查找装置输出指示查找成功的信号,则所述RAT 表项恢复装置将所述全局查找装置输出的ROB项地址前面再加一位并将此位设为‘1’以作为该RAT表项中所保存的物理寄存器地址应该被恢复的内容;如果全局查找装置输出指示查找失败的信号,则RAT表项恢复装置就将该映射关系恢复模块所对应的RAT表项所对应体系结构寄存器的地址作为该RAT表项中所保存的物理寄存器地址应该被恢复的内容。
根据本发明的系统,其中所述每个映射关系恢复模块的结构是相同的。根据本发明的系统,其中所述的组内查找装置与特殊组内查找装置的区别是,组内查找装置的查找对象是固定的,且与修改后的ROB尾指针无关;而特殊组内查找装置的查找对象是由组间多选器根据修改后的ROB尾指针从所有的已有ROB组中选出的ROB尾项所在的组,且在查找时以ROB尾项为起始点,其地址大于ROB尾项的地址的ROB项不会被查找。在本发明中,每个ROB项所对应的比较器所使用的目标逻辑地址在采用常用的恢复RAT方法的微处理器中也是存在于ROB中的,用于在指令提交时对寄存器重命名进行确认。本发明只是将这些信息又用于RAT恢复上,而没有额外为ROB增加新的硬件保存这些内容。根据本发明的另一方面,提供一种在分支预测失败时使用重排序缓冲器ROB恢复寄存器别名表RAT内容的方法,所有的ROB项按照其地址被分成多个组,每个组包括预定数目的ROB项并且所述预定数目的ROB项互相之间没有重叠,所述方法包括以下步骤
(I)提供用于产生指示RAT进行更新操作的更新信号;
(II)将各个ROB项中保存的目标逻辑地址与要被恢复的RAT表项所对应的逻辑寄存器地址进行比较并且输指示二者是否相等的出比较结果,其中保存在各个ROB项中的目标逻辑地址与各个ROB项所对应的指令的目标逻辑寄存器地址相等;
(III)对ROB项的每个组,对该组内的各个ROB项所对应的比较结果进行查找,并输出查找结果;
(IV)选出ROB项中的ROB尾项所在的组,所述ROB尾项是发生错误的分支指令所对应的ROB项,并输出该ROB尾项所在的组的组内的各个ROB项所对应的比较结果;
(V)基于所述ROB尾项所在的组的组内的各个ROB项所对应的比较结果,对所述ROB尾项所在组内的比较器的比较结果进行查找,并输出查找结果;
(VI)基于步骤(III)中的查找结果和步骤(V)中的查找结果输出最终的查找结果,所述最终的查找结果指示在ROB中是否还有其目标逻辑地址与要被恢复的RAT表项所对应的逻辑寄存器地址相等的ROB项,以及在其目标逻辑地址与要被恢复的RAT表项所对应的逻辑寄存器地址相等的这些ROB项中对应于应该最晚被执行的其目标寄存器地址与所述目标逻辑地址相等的指令的ROB项的地址;
(VII)基于步骤(VI)中的最终的查找结果,根据步骤(I)中的指示RAT进行更新操作的更新信号输出要被恢复的RAT表项所保存的物理寄存器地址应该被恢复的内容。根据本发明的方法,其中在对所述ROB项进行分组的过程中,每个组内的ROB项的地址是相邻的,并且所有的ROB项中的每一个都在且只在一个组中。根据本发明的方法,其中使用定时装置来提供指示RAT进行更新操作的更新信号,当所述定时装置中的计数器的计数值达到预定的值时,该定时装置发出更新信号以指示RAT根据其各个表项所对应的映射关系恢复模块的输出更新各个RAT表项原来所保存的物理寄存器地址,其中所述定时装置的定时时间不超过当发生分支预测错误时微处理器从新地址重新加载指令的时间。根据本发明的方法,其中步骤(II)进一步包括输出指示ROB项所存储的目标逻辑地址与要被恢复的RAT表项所对应的逻辑寄存器地址是否相等的信号,如果ROB项已经被取消,则输出指示比较结果为不相等的信号。根据本发明的方法,其中步骤(III)进一步包括按照ROB项的每个组内的ROB项的地址由组内最大递减到组内最小的顺序查找是否有ROB项所对应的比较结果指示为相等,如果有,则输出指示这个ROB项在组内的位置的信号和指示查找成功的信号,如果有多个ROB项所对应的比较结果指示为相等,输出指示最先找到的那个ROB项在组内的位置的信号和指示查找成功的信号,否则输出指示查找失败的信号。根据本发明的方法,其中步骤(IV)进一步包括根据修改后的ROB尾指针,从已有的ROB分组中选择出ROB尾项所在的组。根据本发明的方法,其中所述修改后的ROB尾指针指向所述ROB尾项,在分支预测错误时根据分支队列对ROB尾指针进行修改,在没有转移延迟槽的微处理器中,修改后的 ROB尾指针指向预测错误的分支指令所对应的ROB项;在有转移延迟槽的微处理器中,修改后的ROB尾指针指向延迟槽中的指令所对应的ROB项。根据本发明的方法,其中步骤(V)进一步包括以所述ROB尾项为起点,按照ROB项地址由大到小的顺序查找ROB尾项所在的组内是否有ROB项所对应的比较器的比较结果指示为相等,如果有,则输出指示这个ROB项在组内的位置的信号和指示查找成功的信号,如果有多个ROB项所对应的比较器的比较结果指示为相等,则输出指示最先找到的那个ROB 项在组内的位置的信号和指示查找成功的信号,其中其地址大于ROB尾项地址的ROB项所对应的比较结果将不会被查找。根据本发明的方法,其中步骤(VI)进一步包括根据在步骤(V)中输出的指示查找是否成功的信号来判断在步骤(V)中是否找到了 ROB项所对应的比较结果指示为相等的 ROB项,如果找到,就将该ROB项所对应的地址作为输出,如果在步骤(V)中没有找到ROB项所对应的比较结果指示为相等的ROB项,则按照指令依次进入ROB的方向,判断ROB尾项所在的组的下一个组内是否找到了 ROB项对应的比较结果指示为相等的ROB项,如果找到,将这个组内最先找到的那个ROB项所对应的地址作为输出并且输出指示查找成功的信号,如果没有找到,继续判断下一个组否找到了 ROB项对应的比较结果指示为相等的ROB项,直到循环到ROB尾项所在的组为止,此时判断ROB尾项所在组内是否找到了 ROB项对应的比较结果指示为相等的ROB项,如果找到,将这个组内最先找到的那个ROB项的地址作为输出并且输出指示查找成功的信号,否则输出指示查找失败的信号,并结束查找。根据本发明的方法,其中如果在步骤(VI)中输出指示查找成功的信号,则将在步骤(VI)中输出的ROB项地址前面在加一位并将此位设为‘1’以作为该RAT表项中所保存的物理寄存器地址应该被恢复的内容;如果在步骤(VI)中输出指示查找失败的信号,则将该RAT表项所对应体系结构寄存器的地址作为该RAT表项中所保存的物理寄存器地址应该被恢复的内容。根据本发明的方法,其中步骤(III)与步骤(V)的区别是,在步骤(III)中的查找对象是固定的,且与修改后的ROB尾指针无关;而在步骤(V)中的查找对象是根据修改后的 ROB尾指针从所有的已有ROB组中选出的ROB尾项所在的组,且在查找时以ROB尾项为起始点,其地址大于ROB尾项的地址的ROB项不会被查找。本发明具有下列优点
1.本发明除了定时装置外,不增加其它的时序逻辑,而是利用了 ROB原有的信息。由于只在分支预测失败时才工作,在不工作时可以将所的输入固定(比如用‘0’与所有信号做与操作),或者把电源关掉,从而降低功耗。2.本发明利用分支预测错误时微处理器从新地址重新加载指令的时间进行RAT 恢复,没有可见的时间开销。而由于只有一个RAT,因此在寄存器重命名时控制逻辑比较简单,时序开销小。


图1是本发明的实施例的ROB和RAT示意图。图2是本发明的实施例的总体结构图。图3是本发明的实施例中所述的映射关系恢复模块示意图。图4是根据本发明实施例的在发生分支预测错误时取消指令后的ROB状态示意图。图5是根据本发明实施例的在发生分支预测错误时取消指令后的ROB状态示意图。图6是根据本发明的用于在分支预测失败时使用重排序缓冲器ROB恢复寄存器别名表RAT内容的方法的流程图。
具体实施例方式下面结合附图和具体实施方式
对本发明作进一步详细描述
在本实施例中,微处理器共有32个逻辑寄存器(Logical Register,以后简称为LR), 编号分别为LRO LR31。其中LRO为只读寄存器,它的值恒为0,在实际应用中,不需要对 LRO做重命名操作,所以实际要进行重命名操作的是LRl LR31这31个逻辑寄存器。RAT包含31个表项,分别对应于LRl LR31这31个逻辑寄存器的地址,表项的内容是当前LRl LR31这31个逻辑寄存器所对应的物理寄存器的地址。本实施例采用重命名实现方式A,体系结构寄存器(Architectural Register,以后简称为AR)有31个,编号为ARl AR31,分别对应于LRl LR31这31个逻辑寄存器,而重命名寄存器(Rename Register,以后简称RR)与ROB项——对应,ROB共有32项,相对的有32个重命名寄存器,编号为RRO RR31,分别对应于ROBO R0B31这32个ROB项。物理寄存器地址共有6位,其中最高位表示该物理寄存器是属于体系结构寄存器还是重命名寄存器,当最高位为0时,表示这个物理寄存器是体系结构寄存器,而当最高位为1时,表示这个寄存器是重命名寄存器,物理寄存器地址的后面5位是该物理寄存器在体系结构寄存器组或重命名寄存器组中的编号。具体来说,物理寄存器地址000001 011111分别对应于体系结构寄存器ARl AR31,物理寄存器地址100000 111111分别对应于重命名寄存器 RRO RR31,而因为逻辑寄存器LRO没有对应的物理寄存器,所以物理寄存器地址000000 是空地址,不对应于任何物理寄存器。在ROB项中有一个专门的区域保存该ROB项中的指令的目标操作数所对应的逻辑寄存器地址,逻辑寄存器地址共有5位,其中00001 11111 分别对应LRl LR31,由于LRO的值恒为0,所以LRO作为目标操作数没有意义,因此保存在ROB项中的逻辑寄存器地址00000也是个空地址,表示该项中的指令不会写回目标操作数到物理寄存器中,当微处理器复位时,所有ROB项中的逻辑寄存器地址都被设为00000,而当ROB项中的指令被取消或被提交时,该项的逻辑寄存器地址也被设为00000。图1是本实施例在没有发生分支预测失败时ROB和RAT的状态示意图,其中左侧为ROB中的逻辑寄存器地址,右侧为RAT的内容。ROB12 R0B20为有效的ROB项,而RATI RAT31分别代表了 LRl LR31与物理寄存器的映射关系。以LR6为例,ROB12和R0B16的目标逻辑寄存器地址都是LR6,则RAT6中保留的是LR6最新的映射关系即RR14(表示R0B14 所对应的物理寄存器)。而没有被ROB队列中的指令所使用到的逻辑寄存器所对应的RAT表项的内容就是该逻辑寄存器所对应的体系结构寄存器的地址,比如RAT5的内容就是AR5。 而没有目标逻辑寄存器的指令所在的ROB项,比如ROBlSjn ROB队列之外目前没有被使用的ROB项,比如ROBl 1,它们的逻辑寄存器地址都是00000。在本实施例中,映射关系恢复模块按照ROB项的地址把ROB分为8组,第0组对应于ROB的第0 3项,其地址为00000 00011 ;第1组对应于ROB的第4 7项,其地址为00100 00111 ;第2组对应于ROB的第8 11项,其地址为01000 01011 ;第3组对应于ROB的第12 15项,其地址为01100 01111 ;第4组对应于ROB的第16 19项,其地址为10000 10011 ;第5组对应于ROB的第20 23项,其地址为10100 10111 ;第6 组对应于ROB的第M 27项,其地址为11000 11011 ;第7组对应于ROB的第28 31 项,其地址为11100 11111。从上面的描述可以看到,ROB项地址的第4 2位就是组的编号,而ROB项地址的第1 0位可以作为组内编号。比如R0B7,地址为00111,第4 2 位为001,第1 0位为11,即第1组第3项。而R0B29,地址为11101,第4 2位为111, 第1 0位为01,即第7组第1项。从上述的分组方式可以看出,每个组内的ROB项的地址是相邻的,并且所有的ROB项中的每一个都在且只在一个组中。图2是当分支预测失败时本实施例的工作过程(为了表示简单,图2中没有画出所有映射关系恢复模块与ROB项的关系,但是所有ROB项的逻辑寄存器写回地址都要进入到所有的映射关系恢复模块中),分支队列判断出分支预测错误后,修改ROB尾项到发生错误的分支指令所对应的ROB项,并使定时装置开始工作和各个映射关系恢复模块同时开始工作,每个映射关系恢复模块从各个ROB项得到它们要写回的逻辑寄存器地址,经过一定时间的操作后,输出各个RAT表项的更新内容,当定时器达到预定值时(当这个值不大于从分支预测失败到新地址的指令进入流水线的重命名阶段之前的周期数时,本实施例的延迟被隐藏,不会影响性能),发出更新信号,RAT中的各个表项各自把自己的内容更新成与其对应的映射关系恢复模块的输出。图3是映射关系恢复模块的内部结构,对应于每个RAT项的每个映射关系恢复模块的结构都是相同的,此处以RAT7对应的映射关系恢复模块为例,每个映射关系恢复模块由以下部分组成
对应于每个ROB项的比较器,用于判断该ROB项要写回的逻辑寄存器地址是否与该映射关系恢复模块对应的RAT表项所对应的逻辑寄存器地址相等(在图3中就是LR7),如果相等,输出‘1’,否则输出‘0’。如果该比较器所对应的ROB项已经被取消,则比较结果输出 ‘0,。针对ROB项分组,每个组都有一个组内查找装置与其对应,组内查找装置按照组内的ROB项地址由大到小的顺序,依次检查与组内的ROB项对应的比较器的比较结果,将最先发现输出为‘1’的比较器所对应的ROB项地址的第1 0位(即组内编号)输出,同时将查找成功信号设为‘1’,表示在组内找到了输出为‘1’的比较器。如果组内查找装置遍历了组内的所有ROB项仍没有找到输出为‘1’的比较器,则将查找成功信号设为‘0’,表示查找失败。 针对ROB分组,根据修改后的ROB尾指针找到ROB尾项所在的组,如所公知的,在发生分支预测错误时,ROB尾指针被恢复为指向发生错误的分支指令所对应的ROB项的下一项。根据本发明,将该ROB尾指针修改为使其指向发生错误的分支指令所对应的ROB项 (即,ROB尾项),在没有转移延迟槽的微处理器中,修改后的ROB尾指针指向预测错误的分支指令所对应的ROB项;在有转移延迟槽的微处理器中,修改后的ROB尾指针指向延迟槽中的指令所对应的ROB项。组间多选器根据修改后的ROB尾指针所指向的ROB尾项的二进制ROB 地址的第4 2位判断ROB尾项在哪个组中,在图2中,ROB尾项是R0B18,地址为10010, 其中第4 2位为100,所以ROB尾项就在第4组中。组间多选器将ROB尾项所在的组选出后,输出这组的ROB项对应的比较器的比较结果作为自己的输出。特殊组建查找装置接受组间多选器的结果和ROB尾项二进制ROB地址的第1 0 位,先根据ROB尾项地址的第1 0位在组间多选器的结果中找到ROB尾项所对应的比较器结果,从这个结果开始按照ROB项地址由大到小的顺序依次判断比较器的比较结果,判断的范围是从ROB尾项到该组的第0项,而组内编号大于ROB尾项的ROB项的比较结果不会被判断。特殊组内查找装置将找到的第一个输出为‘1’的比较器所对应的ROB项地址的第1 0位输出,同时将查找成功信号设为‘1’,表示在组内找到了输出为‘1’的比较器。 如果特殊组内查找装置一直找到了组内的第0项仍没有找到输出为‘1’的比较器,则将查找成功信号设为‘0’,表示查找失败。全局查找装置根据8个组内查找装置,1个特殊组内查找装置和ROB尾项的地址来查找出针对某一 RAT表项被用来恢复其内容的ROB项的地址。全局查找装置先判断特殊组内查找装置的查找结果,如果特殊组内查找装置的查找成功信号为‘1’,则将特殊组内查找装置所查找的组编号(也就是ROB尾项的地址的第4 2位)与特殊组内查找装置输出的组内编号(ROB项地址的第1 0位)拼起来,作为全局查找装置的输出,同时把全局查找装置的查找成功信号设为‘1’,如果特殊组内查找装置的查找成功信号为‘0’,则将ROB尾项的地址的第4 2位减1后作为组编号,判断该组所对应的组内查找装置的查找成功信号是否为‘1’,如果为‘1’,则将该组的组编号与该组所对应的组内查找装置输出的组内编号拼起来,作为全局查找装置的输出,同时把全局查找装置的查找成功信号设为‘1’,如果为 ‘0’,则继续将该组编号减1后作为组编号,判断下一组所对应的组内查找装置的查找成功信号……直到找到查找成功的组内查找装置或判断完所有的组内查找装置的结果为止(最后一个被判断的组内查找装置和特殊组内查找装置查找的是同一组),其中如果组编号已经为0而仍需继续查找,则组编号会被回绕回7 ;如果所有的组内查找装置的查找成功信号都为‘0’,表示此时写回这一逻辑寄存器地址的所有指令都已不在执行状态中,全局查找装置把它的查找成功信号设为‘0’。注意此处拼接的含义为将所查找到的组编号(也就是ROB 尾项的地址的第4 2位)与所查找到的组内编号(ROB项地址的第1 0位)按照由高位到低位的顺序加以排列,例如,如果查找到的组编号为AAA,而查找到的组内编号为BB,这拼接后的结果为AAABB。基于上述描述可以看出,本发明的组内查找装置与特殊组内查找装置的区别是,组内查找装置的查找对象是固定的,且与修改后的ROB尾指针无关,即,组内查找装置只是查找自己组内的ROB项所对应的比较器输出的比较结果;而特殊组内查找装置的查找对象是由组间多选器根据修改后的ROB尾指针从所有的已有ROB组中选出的ROB尾项所在的组,且在查找时以ROB尾项为起始点,其地址大于ROB尾项的地址的ROB项不会被查找。在本实施例中,ROB的分组是按照均勻分组的原则,把32个ROB项平均分成8组, 每组4项。这种分组方法考虑了实现的简单高效,因为此时可以使用ROB项的地址的不同位作为组的编号和组内编号,由此可以通过对组的编号和组内编号进行拼接的方式得到最后输出的查找结果。但是ROB的分组方式并不只限于这一种分组方式,ROB的分组方式可以根据具体情况而改变,也不一定每一组所包含的项数都是相等的,把ROB进行分组的目的是各组并行查找缩短查找时间,具体的分组方式要看实际情况而定,在ROB项数很少或者可以用于查找的时间很长的情况下,甚至可以不分组。此时虽然不能直接使用ROB项的地址的不同位作为组的编号和组内编号,但是本领域的技术人员可以想到使用类似的方式来得到与本发明所举例说明的实施例相同的结果。诸如对于每个组包括不等项数的ROB项的分组方法,可以先根据ROB项地址进行不均等分组,此后在后续处理中对得到的ROB项地址采取加减地址偏移的方法获得相应的组编号和组内编号,从而最后得到拼接后的结果。对于不对ROB进行分组的情况,可以根据各个ROB项地址直接得到最后查找到的结果的ROB 项地址。此类方法很多,因此不在这里具体描述。总之,本发明并不限于32个ROB项并且将这32个ROB项分成8组,每组4个ROB项的实施例,其它的数目的ROB项和其它分组方式也适应于本发明。本文使用具有32项的ROB举例说明了本发明的实施例是为了更好地对本发明加以描述,由此帮助本领域的技术人员更好地理解本发明。RAT表项恢复装置接受全局查找装置的输出,如果全局查找装置的查找成功信号为‘ 1’,则RAT表项恢复装置则将全局查找装置输出的ROB项地址前面再加1位并将此位设为‘1’以作为该RAT表项中保存的物理寄存器地址应该被恢复的内容。如前所述,由于首位为‘1’的物理寄存器地址对应于重命名寄存器,因此对RAT表项中保存的物理寄存器地址的上述修改就表示目前该RAT表项所对应的物理寄存器是重命名寄存器;如果全局查找装置的查找成功信号为‘0’,则RAT表项恢复装置就将该映射关系恢复模块所对应的RAT 表项所对应的体系结构寄存器的地址作为该RAT中保存的物理寄存器地址应该被恢复的内容,这表示目前该RAT表项所对应的物理寄存器是与该表项所对应的逻辑寄存器所对应的体系结构寄存器。以上述图2中的情况为例,如果全局查找装置的查找成功信号为‘1’, 则RAT表项恢复装置则将全局查找装置输出的ROB项地址(例如XXXXX)前面在加1位并将此位设为‘1’(此地址因此变为1XXXXX),然后将RAT7中存储的物理寄存器的地址修改为 1XXXXX,由于该物理寄存器地址的首位为1,因此表示目前该RAT表项所对应的物理寄存器是重命名寄存器。如果全局查找装置的查找成功信号为‘0’,则RAT表项恢复装置就将该映射关系恢复模块所对应的RAT表项所对应的体系结构寄存器的地址,正如前所述,虽然每个逻辑寄存器和它所对应的RAT表项虽然可以对应多个重命名寄存器,但是只有一个体系结构寄存器与它对应,比如与RAT7对应的体系结构寄存器就是AR7,在任何时候都是AR7, 尽管RAT7的内容不一定总是AR7,但是决不会是其它的体系结构寄存器。因此,RAT表项恢复装置就将RAT7的地址作为该RAT表项应该被恢复的内容,即将该RAT表项的内容修改成 AR7的地址(000111),此时表示目前该RAT表项所对应的物理寄存器是体系寄存器。
根据本发明,还包括用于产生指示RAT进行更新操作的更新信号的定时装置(参见图2),可以将该定时装置设计为当所述定时装置中的计数器的计数值达到预定的值时, 该定时装置发出更新信号以指示RAT根据其各个表项所对应的映射关系恢复模块输出更新各个RAT表项原来所保存的物理寄存器地址,其中所述定时装置的定时时间不超过当发生分支预测错误时微处理器从新地址重新加载指令的时间,因此,没有可见的时间开销。而由于只有一个RAT,因此在寄存器重命名时控制逻辑比较简单,时序开销小。本实施例是针对重命名实现方式A的,但是其实只要在RAT表项恢复装置上做修改就可以适用于重命名实现方式B。修改的方法是相对于重命名方式A,重命名方式B会在ROB项中额外保存目标逻辑寄存器所对应的物理寄存器地址,RAT表项恢复装置从各个 ROB项中读出各自的物理地址,如果全局查找装置的查找成功信号为‘ 1’,则根据全局查找装置输出的ROB地址选择与其对应的目标物理寄存器地址作为RAT表项的恢复数据;如果全局查找装置的查找成功信号为‘0’,则从体系结构寄存器映射表中读出相应表项的内容作为对应RAT表项的恢复数据。下面列举两个具体的例子来具体说明本发明的工作方式,由于RAT的每个表项都对应于同样的恢复逻辑,所以下面的例子只以对RAT中的一个表项的恢复过程加以说明
例1.如图4所示,在发生分支预测错误时,指令取消后ROB中还有4个针对逻辑寄存器LR15的重命名操作,分别处于ROB的第13、17、24J6项中,指令取消后ROB的头指针位于第12项,而修改后的尾指针在第2项,属于映射关系恢复模块对ROB分组的第0组,所以第0组也是要送到特殊组内查找装置的特殊组。对LR15的4个操作分别位于第3、第4和第6组中,其中第6组包含两个对LR15的操作。对应于LR15的映射关系恢复模块内的所有组内查找装置和特殊组内查找装置各自搜索对LR15的操作,在本例中,第3、第4和第6 组的组内查找装置找到了对LR15的操作,其中第6组找到的是ROB的第沈项,因为从时间上来说,它比同组的第M项新。全局查找装置首先判断特殊组内查找装置的结果,特殊组内查找装置没有找到有要写回LR15的ROB项,全局查找装置接下来判断第7组的结果,还是没有找到,紧跟着是第6组,第6组找到了保存的目标逻辑寄存器地址是LR15的ROB项, 于是全局查找装置将第6组的搜索结果也即ROB的第沈项作为自己的输出送给RAT表项恢复装置得出与LR15相对应的RAT表项的恢复数据。例2.这是一种比较极端的情况,也是本系统中为什么要设置特殊组内查找装置的原因,如图5所示,在发生分支预测错误时,指令取消后只有两个ROB项是空着的,而修改后的ROB队列尾项所在的块有两个ROB项写回LR15,分别是第8项和第11项,虽然它们属于一个块,但是在逻辑上分处有效ROB队列的两端,第11项是最早使用LR15的块,而第8项是最后使用LR15的块。如果用普通的组内编码器来做判断,应该选择第11项,可实际上第 8项才是现有的对LR15的最新重命名结果。特殊组内查找装置由于是从修改后的ROB队列尾项开始查找,所以特殊组内查找装置的查找结果将是第8项,而在特殊组内查找装置找到结果的情况下,全局编码器将优先使用特殊组内查找装置的结果。参照图6,描述了根据本发明的方法。所述方法从提供用于产生指示RAT进行更新操作的更新信号步骤601开始,在步骤602,将各个ROB项中保存的目标逻辑地址与要被恢复的RAT表项所对应的逻辑寄存器地址进行比较并且输出指示二者是否相等的比较结果; 在步骤602输出的比较结果被提供给步骤603和604,在步骤603,对ROB项的每个组,对该组内的各个ROB项所对应的比较结果进行查找,并输出查找结果;在步骤604,选出ROB项中的ROB尾项所在的组并输出该ROB尾项所在的组的组内各个ROB项所对应的比较结果; 步骤604输出的比较结果被提供给步骤605,在步骤605中,基于所述ROB尾项所在的组的组内的各个ROB项所对应的比较结果,对所述ROB尾项所在组内的比较器的比较结果进行查找,并输出查找结果;步骤603和步骤605中输出的查找结果被提供给步骤606,在步骤 606中,基于在步骤603和605中的查找结果,输出最终的查找结果,所述最终的查找结果指示在ROB中是否还有其目标逻辑地址与要被恢复的RAT表项所对应的逻辑寄存器地址相等的ROB项,以及在其目标逻辑地址与要被恢复的RAT表项所对应的逻辑寄存器地址相等的这些ROB项中对应于应该最晚被执行的其目标寄存器地址与所述目标逻辑地址相等的指令的ROB项的地址;步骤606中的最终查找结果被提供给步骤607,在步骤607中,基于最终的查找结果,根据在步骤601中的指示RAT进行更新操作的更新信号输出要被恢复的 RAT表项所保存的物理寄存器地址应该被恢复的内容。 最后应说明的是以上实施例仅用以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。
权利要求
1.一种在分支预测失败时使用重排序缓冲器ROB恢复寄存器别名表RAT内容的系统, 所有的ROB项按照其地址被分成多个组,每个组包括预定数目的ROB项并且所述预定数目的ROB项互相之间没有重叠,所述系统包括用于产生指示RAT进行更新操作的更新信号的定时装置;对应于RAT中每个表项的映射关系恢复模块,其中每个映射关系恢复模块包括分别对应于每个ROB项的比较器,将保存在每个ROB项中的目标逻辑地址与该映射关系恢复模块所对应的RAT表项所对应的逻辑寄存器地址进行比较并且输出指示二者是否相等的比较结果,其中保存在每个ROB项中的目标逻辑地址与该ROB项所对应的指令的目标逻辑寄存器地址相等;对应于ROB项的每个组的组内查找装置,其接收每个组内的ROB项所对应的比较器输出的比较结果,在这些比较结果中进行查找并输出查找结果;用于ROB项的多个组的组间多选器,用于选出ROB项中的ROB尾项所在的组,所述ROB 尾项是发生错误的分支指令所对应的ROB项,并输出该ROB尾项所在的组的组内的比较器的比较结果;特殊组内查找装置,接收所述组间多选器输出的比较结果,并且基于所述组间多选器输出的比较结果对所述ROB尾项所在组内的比较器的比较结果进行查找,并输出查找结果;全局查找装置,用于基于所述组内查找装置输出的查找结果和所述特殊组内查找装置输出的查找结果输出最终的查找结果,所述最终的查找结果指示在ROB中是否还有其目标逻辑地址与该映射关系恢复模块所对应的RAT表项所对应的逻辑寄存器地址相等的ROB 项,以及在其目标逻辑地址与该映射关系恢复模块所对应的RAT表项所对应的逻辑寄存器地址相等的这些ROB项中对应于应该最晚被执行的其目标寄存器地址与所述目标逻辑地址相等的指令的ROB项的地址;RAT表项恢复装置,接收全局查找装置输出的最终的查找结果,输出该映射关系恢复模块所对应的RAT表项所保存的物理寄存器地址应该被恢复的内容。
2.如权利要求1所述的系统,当所述定时装置中的计数器的计数值达到预定的值时, 该定时装置发出更新信号以指示RAT根据其各个表项所对应的映射关系恢复模块输出更新各个RAT表项原来所保存的物理寄存器地址,其中所述定时装置的定时时间不超过当发生分支预测错误时微处理器从新地址重新加载指令的时间。
3.如权利要求1所述的系统,其中所述组内查找装置按照其所对应的组内的ROB项地址由组内最大递减到组内最小的顺序查找是否有ROB项所对应的比较器的比较结果指示为相等,如果有,则输出指示这个ROB项在组内的位置的信号和指示查找成功的信号,如果有多个ROB项所对应的比较器的比较结果指示为相等,输出指示最先找到的那个ROB项在组内的位置的信号和指示查找成功的信号,否则输出指示查找失败的信号。
4.如权利要求1所述的系统,其中所述特殊组内查找装置接收组间多选器的输出结果,并以所述ROB尾项为起点,按照ROB项地址由大到小的顺序查找是否有ROB项所对应的比较器的比较结果指示为相等,如果有,则输出指示这个ROB项在组内的位置的信号和指示查找成功的信号,如果有多个ROB项所对应的比较器的比较结果指示为相等,则输出指示最先找到的那个ROB项在组内的位置的信号和指示查找成功的信号,否则输出指示查找失败的信号,其中对应于其地址大于ROB尾项地址的ROB项的比较器的比较结果将不会被查找。
5.如权利要求4所述的系统,其中所述全局查找装置首先根据所述特殊组内查找装置的输出的指示查找是否成功的信号来判断特殊组内查找装置是否找到了比较器的比较结果指示为相等的ROB项,如果找到,就将特殊组内查找装置找到的ROB项的地址作为输出并且输出表示查找成功的信号,如果特殊组内查找装置没有找到比较器的比较结果指示为相等的ROB项,则按照指令依次进入ROB的方向,判断组间多选器所选择的组的下一个组所对应的组内查找装置是否找到了比较器的比较结果指示为相等的ROB项,如果找到,将这个组内查找装置找到的ROB项的地址作为输出并且输出指示查找成功的信号,如果没有找到,继续判断下一个组内查找装置的结果,直到循环到组间多选器找到的ROB组为止,此时全局查找装置查找组间多选器所选择的ROB组的组内查找装置是否找到比较器比较结果指示为相等的ROB项,如果找到,将这一 ROB项的地址作为输出并且输出指示查找成功的信号,否则全局查找装置输出指示查找失败的信号,并结束查找。
6.如权利要求5所述的系统,其中如果全局查找装置输出指示查找成功的信号,则所述RAT表项恢复装置将所述全局查找装置输出的ROB项地址前面在加一位并将此位设为 ‘1’以作为该RAT表项中所保存的物理寄存器地址应该被恢复的内容;如果全局查找装置输出指示查找失败的信号,则RAT表项恢复装置就将该映射关系恢复模块所对应的RAT表项所对应体系结构寄存器的地址作为该RAT表项中所保存的物理寄存器地址应该被恢复的内容。
7.—种在分支预测失败时使用重排序缓冲器ROB恢复寄存器别名表RAT内容的方法, 所有的ROB项按照其地址被分成多个组,每个组包括预定数目的ROB项并且所述预定数目的ROB项互相之间没有重叠,所述方法包括以下步骤(I)提供用于产生指示RAT进行更新操作的更新信号;(II)将各个ROB项中保存的目标逻辑地址与要被恢复的RAT表项所对应的逻辑寄存器地址进行比较并且输出指示二者是否相等的比较结果,其中保存在各个ROB项中的目标逻辑地址与各个ROB项所对应的指令的目标逻辑寄存器地址相等;(III)对ROB项的每个组,对该组内的各个ROB项所对应的比较结果进行查找,并输出查找结果;(IV)选出ROB项中的ROB尾项所在的组,所述ROB尾项是发生错误的分支指令所对应的ROB项,并输出该ROB尾项所在的组的组内的各个ROB项所对应的比较结果;(V)基于所述ROB尾项所在的组的组内的各个ROB项所对应的比较结果,对所述ROB尾项所在组内的比较器的比较结果进行查找,并输出查找结果;(VI)基于步骤(III)中的查找结果和步骤(V)中的查找结果输出最终的查找结果,所述最终的查找结果指示在ROB中是否还有其目标逻辑地址与要被恢复的RAT表项所对应的逻辑寄存器地址相等的ROB项,以及在其目标逻辑地址与要被恢复的RAT表项所对应的逻辑寄存器地址相等的这些ROB项中对应于应该最晚被执行的其目标寄存器地址与所述目标逻辑地址相等的指令的ROB项的地址;(VII)基于步骤(VI)中的最终的查找结果,根据步骤(I)中的指示RAT进行更新操作的更新信号输出要被恢复的RAT表项所保存的物理寄存器地址应该被恢复的内容。
8.如权利要求7所述的方法,其中使用定时装置来提供指示RAT进行更新操作的更新信号,当所述定时装置中的计数器的计数值达到预定的值时,该定时装置发出更新信号以指示RAT根据其各个表项所对应的映射关系恢复模块的输出更新各个RAT表项原来所保存的物理寄存器地址,其中所述定时装置的定时时间不超过当发生分支预测错误时微处理器从新地址重新加载指令的时间。
9.如权利要求7所述的方法,其中步骤(III)进一步包括按照ROB项的每个组内的ROB 项的地址由组内最大递减到组内最小的顺序查找是否有ROB项所对应的比较结果指示为相等,如果有,则输出指示这个ROB项在组内的位置的信号和指示查找成功的信号,如果有多个ROB项所对应的比较结果指示为相等,输出指示最先找到的那个ROB项在组内的位置的信号和指示查找成功的信号,否则输出指示查找失败的信号。
10.如权利要求7所述的方法,其中步骤(V)进一步包括以所述ROB尾项为起点,按照 ROB项地址由大到小的顺序查找ROB尾项所在的组内是否有ROB项所对应的比较器的比较结果指示为相等,如果有,则输出指示这个ROB项在组内的位置的信号和指示查找成功的信号,如果有多个ROB项所对应的比较器的比较结果指示为相等,则输出指示最先找到的那个ROB项在组内的位置的信号和指示查找成功的信号,其中其地址大于ROB尾项地址的 ROB项所对应的比较结果将不会被查找。
11.如权利要求10所述的方法,其中步骤(VI)进一步包括根据在步骤(V)中输出的指示查找是否成功的信号来判断在步骤(V)中是否找到了 ROB项所对应的比较结果指示为相等的ROB项,如果找到,就将该ROB项所对应的地址作为输出,如果在步骤(V)中没有找到 ROB项所对应的比较结果指示为相等的ROB项,则按照指令依次进入ROB的方向,判断ROB 尾项所在的组的下一个组内是否找到了 ROB项对应的比较结果指示为相等的ROB项,如果找到,将这个组内最先找到的那个ROB项所对应的地址作为输出并且输出指示查找成功的信号,如果没有找到,继续判断下一个组否找到了 ROB项对应的比较结果指示为相等的ROB 项,直到循环到ROB尾项所在的组为止,此时判断ROB尾项所在组内是否找到了 ROB项对应的比较结果指示为相等的ROB项,如果找到,将这个组内最先找到的那个ROB项的地址作为输出并且输出指示查找成功的信号,否则输出指示查找失败的信号,并结束查找。
12.如权利要求11所述的方法,其中如果在步骤(VI)中输出指示查找成功的信号,则将在步骤(VI)中输出的ROB项地址前面在加一位并将此位设为‘1’以作为该RAT表项中所保存的物理寄存器地址应该被恢复的内容;如果在步骤(VI)中输出指示查找失败的信号,则将该RAT表项所对应体系结构寄存器的地址作为该RAT表项中所保存的物理寄存器地址应该被恢复的内容。
全文摘要
本发明涉及在分支预测失败时使用ROB恢复RAT内容的系统和方法。提出了一种在分支预测失败时使用重排序缓冲器ROB恢复寄存器别名表RAT内容的系统,所述系统包括用于产生指示RAT进行更新操作的更新信号的定时装置和对应于RAT中每个表项的映射关系恢复模块。其中每个映射关系恢复模块包括分别对应于每个ROB项的比较器;对应于ROB项的每个组的组内查找装置;用于ROB项的多个组的组间多选器;特殊组内查找装置;全局查找装置和RAT项恢复装置。根据本发明的系统,可以有效地对行RAT进行恢复。还提出了一种在分支预测失败时使用重排序缓冲器ROB恢复寄存器别名表RAT内容的方法。
文档编号G06F11/14GK102567137SQ20101060721
公开日2012年7月11日 申请日期2010年12月27日 优先权日2010年12月27日
发明者杨思博 申请人:北京国睿中数科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1