混合式寄存器别名表恢复结构和方法与流程

文档序号:23051891发布日期:2020-11-25 17:27阅读:115来源:国知局
本发明涉及混合式寄存器别名表恢复
技术领域
:,具体为混合式寄存器别名表恢复结构和方法。
背景技术
::现代处理器普遍使用了寄存器重命名技术来解决程序中的资源冲突和伪相关,以增加指令乱序执行的灵活性。寄存器别名表(registeraliastable,简称rat)是实现寄存器重命名的关键部件,它记录了逻辑寄存器地址与物理寄存器地址之间的对应关系。当指令需要写寄存器时,将新分配的物理地址根据寄存器的逻辑地址写入到寄存器别名表中,使得后继依赖这个结果的指令可以获取保存这个结果的物理寄存器地址;当指令要需要读取寄存器时,根据寄存器的逻辑地址索引寄存器别名表,读出当前对应的物理地址替换原来的逻辑地址。寄存器别名表主要的设计难度在于当出现分支预测错误或者异常时需要取消未完成的指令,而这些指令有些已经经过了寄存器重命名,如果它们需要写结果到寄存器,那么就会更新寄存器别名表的内容,即用新分配的寄存器物理地址替换掉原来的值。由于这些指令被取消,因此这些物理寄存器的内容是无效的,保存在寄存器别名表中的寄存器逻辑地址到物理地址的对应关系必须被恢复到这些指令进行重命名之前的有效状态。由于可能有很多指令被同时取消,这些被取消的指令有可能多次改写寄存器别名表的同一位置,因此在进行对寄存器别名表的恢复操作时,必须区分哪些改写操作是有效的,哪些是无效需要被撤销的。对寄存器别名表的恢复有两种传统方法:(1)通过检查点进行恢复:每遇到一条分支指令,就保存一份当前的寄存器别名表的镜像,保存的镜像称为检查点(checkpoint),当需要对寄存器别名表进行恢复时,根据当前最新的分支指令,将对应的检查点的内容复制到寄存器别名表中完成恢复操作。(2)通过扫描进行恢复:因为需要更新体系结构寄存器,所以对寄存器别名表的改写在rob中或者其他模块中留有记录,通过对这个记录的扫描来获得各个寄存器逻辑地址与物理地址的最新映射关系。对于使用检查点的方法,如果处理器允许更多的指令乱序执行,往往也伴随着其中有更多的分支指令,这就导致需要保存的检查点的数量增加,进而造成芯片面积增长以及随之而来的连线过长对时序的影响。对于扫描的方法,处理器允许更多的指令乱序执行导致对寄存器别名表的改写记录也变的更长,导致扫描过程变长,同样带来面积和时序的问题。技术实现要素:本发明的目的在于提供混合式寄存器别名表恢复结构和方法,以解决上述
背景技术
:中提出的问题。根据本发明的第一方面,提供混合式寄存器别名表恢复结构,包括重命名记录表、区间记录器、重命名记录扫描器、区间多选器、部分检查点和待恢复列表;重命名记录表:按照程序顺序记录未提交的每一条对寄存器别名表的改写记录,当对寄存器别名表进行恢复时为扫描的对象;区间记录器:将重命名记录表按照程序顺序平均分成多个区间,每个区间有一个记录器记录寄存器别名表的每一个表现是否在这个区间内被改写;重命名记录扫描器:对重命名记录表进行扫描;区间多选器:区间多选器负责把待扫描的重命名记录表送入重命名记录扫描器;部分检查点:根据分支指令保存对应的寄存器别名表的备份;待恢复列表:记录本次恢复过程需要恢复寄存器别名表的项目。优选的,所述重命名记录表在由分支预测错误或异常引起的指令取消完成后,被取消指令所对应的项目会被设为无效。优选的,所述重命名记录表内设有一个尾指针用来指示下一条寄存器别名表的改写记录存放位置,在指令取消完成后尾指针会被指向当前第一个无效项目。优选的,所述重命名记录扫描器在进行扫描的过程中,当扫描到寄存器别名表的某一项的改写记录,则会用这项的内容更新当前的寄存器别名表,当扫描到寄存器别名表的某一项有多个改写记录,则使用其中程序顺序最新的那一项更新寄存器别名表。根据本发明的另一方面,提供混合式寄存器别名表恢复方法,包括以下的技术流程:第一步,在指令取消完成后,判断重命名记录表中哪些项被无效;第二步,根据被无效的项,判断出无效操作发生在重命名记录表中的具体区间;第三步,将发生无效操作的区间的区间记录器的内容进行统计,得到待恢复列表;第四步,根据待恢复列表的有效项检索各个部分检查点和使用重命名记录扫描器对重命名记录表进行扫描。优选的,第四步的具体操作方法为,在对各个部分检查点检索的过程中,当待恢复列表的有效项命中了部分检查点记录的逻辑地址,且要恢复的备份保存在部分检查点中,则该项使用部分检查点恢复,当待恢复列表的有效项没有命中部分检查点或部分检查点没有保存需要恢复的备份,则使用扫描的方法恢复。与现有技术相比,本发明的有益效果是:本发明中的区间记录器可以在寄存器别名表的恢复过程开始前过滤掉不需要恢复的项目,发明中的部分检查点只针对寄存器别名表中的部分项目保存部分备份,因此实现所需的资源比单纯的检查点恢复技术小的多;由于区间记录器过滤掉不需要恢复的项目,部分检查点也可以帮助恢复部分项目,所以重命名扫描器的工作负担比单纯的扫描恢复技术小的多,如果是同样的恢复周期占用的资源更少,或者占用同样的资源扫描周期更短。附图说明图1为本发明的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。请参阅图1,本发明提供一种技术方案:混合式寄存器别名表恢复结构,包括重命名记录表、区间记录器、重命名记录扫描器、区间多选器、部分检查点和待恢复列表;重命名记录表:按照程序顺序记录未提交的每一条对寄存器别名表的改写记录,当对寄存器别名表进行恢复时为扫描的对象,在由分支预测错误或异常引起的指令取消完成后,被取消指令所对应的项目会被设为无效。区间记录器:将重命名记录表按照程序顺序平均分成多个区间,每个区间有一个记录器记录寄存器别名表的每一个表现是否在这个区间内被改写。重命名记录扫描器:对重命名记录表进行扫描,当扫描到寄存器别名表的某一项的改写记录,则会用这项的内容更新当前的寄存器别名表,当扫描到寄存器别名表的某一项有多个改写记录,则使用其中程序顺序最新的那一项更新寄存器别名表。区间多选器:区间多选器负责把待扫描的重命名记录表送入重命名记录扫描器。部分检查点:根据分支指令保存对应的寄存器别名表的备份,选择记录的项目可以根据修改寄存器别名表的顺序,只记录最早修改的几项,选择记录针对分支指令可以只保存最新的若干条分支指令的备份。与传统的检查点技术不同的是:传统的检查点保存整张寄存器别名表对应所有分支指令的备份,而部分检查点只保存寄存器别名表中某几项对应于几个分支指令的备份,因此实现部分检查点所需要的硬件资源远远小于传统的检查点。待恢复列表:记录本次恢复过程需要恢复寄存器别名表的项目。重命名记录扫描器在进行扫描的过程中。混合式寄存器别名表恢复方法,包括以下的技术流程:第一步,在指令取消完成后,判断重命名记录表中哪些项被无效,重命名记录表内设有一个尾指针用来指示下一条寄存器别名表的改写记录存放位置,在指令取消完成后尾指针会被指向当前第一个无效项目,因此通过指令取消前后的尾指针变化可以得出哪些项被无效。第二步,根据被无效的项,判断出无效操作发生在重命名记录表中的具体区间。第三步,将发生无效操作的区间的区间记录器的内容进行统计,得到待恢复列表,其中待恢复列表内的有效项就是寄存器别名表需要恢复的项目。第四步,根据待恢复列表的有效项检索各个部分检查点和使用重命名记录扫描器对重命名记录表进行扫描,在对各个部分检查点检索的过程中,当待恢复列表的有效项命中了部分检查点记录的逻辑地址,且要恢复的备份保存在部分检查点中,则该项使用部分检查点恢复,当待恢复列表的有效项没有命中部分检查点或部分检查点没有保存需要恢复的备份,则使用扫描的方法恢复。对寄存器别名表的恢复过程所需的时钟周期可以是动态变化的,这取决于有多少项目需要恢复以及恢复的方式。在寄存器别名表的恢复过程没有全部完成前,允许进行新的重命名操作,如果重命名操作要改写寄存器别名表,而被改写的项在待恢复列表上且还未完成恢复,则该项可以视为已经恢复完成,因为有了比恢复的结果更新的修改覆盖了这一项;如果重命名操作要读取寄存器别名表,而被读取的项在待恢复列表上且还未完成恢复,则寄存器重命名操作会被暂停直到该项恢复完成为止。对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1