一种乱序高性能处理器的寄存器重命名方法及系统与流程

文档序号:20945910发布日期:2020-06-02 19:52阅读:243来源:国知局
一种乱序高性能处理器的寄存器重命名方法及系统与流程

本发明涉及计算机处理器技术领域,具体涉及一种乱序高性能处理器的寄存器重命名方法及系统。



背景技术:

随着科学技术的不断发展,处理器应用领域越来越广泛,同时对处理器的性能需求也在不断提高。处理器性能提升的方法主要有:提升处理器主频、提高指令级并行性。近年来已经不再刻意通过提升主频来提升处理器性能,而提高指令级并行性已成为提升处理器性能的主要手段。指令并行执行受限的主要因素包括:数据相关、控制相关和名相关。寄存器重命名机制可以消除名相关。在保持指令间依赖关系的同时,深入挖掘指令间潜在的并行性,可提升处理器的性能。

现有处理器技术中通过rob进行寄存器重命名时,一个操作数在其生命周期中会存储于两个地方,操作数读取结构的复杂度也会增加。当通过重命名缓冲器或者混合寄存器文件进行寄存器重命名时,若有指令被重命名,但若没有空闲的重命名缓存,则该指令及其之后的所有指令都要停顿,直到有空闲的重命名缓存释放出来为止。



技术实现要素:

为此,本发明实施例提供一种乱序高性能处理器的寄存器重命名方法及系统,可以提升处理器性能。

为实现上述目的,本发明实施例提供如下技术方案:

根据本发明实施例的第一方面,提供了一种乱序高性能处理器的寄存器重命名方法,所述方法包括:

基于高层次语言构建电子系统级esl的参数化处理器模型,通过硬件生成器将处理器核心部件转换为实际电路,所述核心部件包括指令信息分类器和优化重排序缓存器结构的寄存器重命名部件;

通过一个或多个硬件计数器组成的性能监测部件,实时分析实际处理器性能并确定所述核心部件的相关参数;所述性能监测部件用于统计处理器的分支预测器部件、所述指令信息分类器、重排序缓存器、重命名缓存器和指令分配部件的性能数据。

可选地,所述指令信息分类器用于对指令译码部件解析出来的指令进行分类,分类结果包括指令类型instr_type1、指令类型instr_type2、指令类型instr_type3和指令类型instr_type4;其中所述指令类型instr_type1包括alu和mul指令,所述指令类型instr_type2包括branch、jump和st指令,所述指令类型instr_type3包括div指令,所述指令类型instr_type4包括特殊指令。

可选地,所述指令类型instr_type1不占用重排序缓存器、重命名映射表和重命名缓存器的硬件资源;所述指令类型instr_type2不占用重命名缓存器的硬件资源;所述指令类型instr_type3占用重排序缓存器、重命名映射表和重命名缓存器的硬件资源。

可选地,所述指令信息分类器分类过程包括:

顺序读取重排序缓存器队列的头部指令,针对每一条头部指令执行:解析所述头部指令,对解析后的指令进行指令信息分类,将分类标志位添加在每一条头部指令;

所述缓存器重命名部件用于根据每条头部指令的分类标志位,执行所述分类标志位对应的退休机制。

可选地,若指令类型为instr_type1,则在指令译码级退休;若指令类型为instr_type2的st指令,则在执行单元第一级流水线确认无异常时退休;若指令类型为instr_type2的branch指令,则在执行单元执行分支预测确认后退休;若指令类型为instr_type3,则在则在执行单元第一级流水线确认无异常时退休。

根据本申请实施例的第二方面,本发明实施例提供了一种乱序高性能处理器的寄存器重命名系统,所述系统包括:

esl参数化建模部件,用于基于高层次语言构建esl的参数化处理器模型,通过硬件生成器将处理器核心部件转换为实际电路,所述核心部件包括指令信息分类器和优化重排序缓存器结构的寄存器重命名部件;

处理器性能监测部件,用于实时分析实际处理器性能并确定所述核心部件的相关参数,还用于统计处理器的分支预测器部件、所述指令信息分类器、重排序缓存器、重命名缓存器和指令分配部件的性能数据;所述性能监测部件是通过一个或多个硬件计数器组成。

可选地,所述指令信息分类器用于对指令译码部件解析出来的指令进行分类,分类结果包括指令类型instr_type1、指令类型instr_type2、指令类型instr_type3和指令类型instr_type4;其中所述指令类型instr_type1包括alu和mul指令,所述指令类型instr_type2包括branch、jump和st指令,所述指令类型instr_type3包括div指令,所述指令类型instr_type4包括特殊指令。

可选地,所述指令类型instr_type1不占用重排序缓存器、重命名映射表和重命名缓存器的硬件资源;所述指令类型instr_type2不占用重命名缓存器的硬件资源;所述指令类型instr_type3占用重排序缓存器、重命名映射表和重命名缓存器的硬件资源。

可选地,所述指令信息分类器分类过程包括:

顺序读取重排序缓存器队列的头部指令,针对每一条头部指令执行:解析所述头部指令,对解析后的指令进行指令信息分类,将分类标志位添加在每一条头部指令;

所述缓存器重命名部件用于根据每条头部指令的分类标志位,执行所述分类标志位对应的退休机制。

可选地,若指令类型为instr_type1,则在指令译码级退休;若指令类型为instr_type2的st指令,则在执行单元第一级流水线确认无异常时退休;若指令类型为instr_type2的branch指令,则在执行单元执行分支预测确认后退休;若指令类型为instr_type3,则在则在执行单元第一级流水线确认无异常时退休。

综上所述,本发明实施例提供的一种乱序高性能处理器的寄存器重命名方法及系统,基于高层次语言构建电子系统级esl的参数化处理器模型,通过硬件生成器将处理器核心部件转换为实际电路,所述核心部件包括指令信息分类器和优化重排序缓存器结构的寄存器重命名部件;通过一个或多个硬件计数器组成的性能监测部件,实时分析实际处理器性能并确定所述核心部件的相关参数;所述性能监测部件用于统计处理器的分支预测器部件、所述指令信息分类器、重排序缓存器、重命名缓存器和指令分配部件的性能数据。此外,基于优化后的寄存器重命名结构,实现细颗粒度的指令提前退休机制,可以进一步地提升处理器性能。

附图说明

为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。

本说明书所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容能涵盖的范围内。

图1为本发明实施例提供的一种乱序高性能处理器的寄存器重命名方法流程示意图;

图2为本发明实施例提供的基于oohls及硬件计数器的乱序高性能核参数化性能评估流程示意图;

图3为本发明实施例提供的重排序缓存器优化结构示意图;

图4为本发明实施例提供的基于重排序缓存器优化结构的寄存器重命名机制示意图;

图5为本发明实施例提供的基于细颗粒度寄存器重命名结构的指令提前退休机制示意图;

图6为本发明实施例提供的一种乱序高性能处理器的寄存器重命名系统框图。

具体实施方式

以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在现有技术中通过重排序缓存(re-orderbuffer,rob)进行寄存器重命名时,寄存器值会被存储于体系结构寄存器文件和重排序缓存中,重排序缓存存储还没有提交的指令的结果,而体系结构寄存器文件存储已经提交,并且要写入体系结构寄存器中的值。为了记录每一个体系结构寄存器与rob以及体系结构寄存器文件之间最新的映射关系,需要一个重命名映射表。为了便于在rob中读取操作数,重命名映射表增加了一个域,用来显示操作数在rob中的存储位置。在一条指令处于执行状态时,它的值会被存储在rob中。当其在后继过程中完成提交,其值会从rob复制到体系结构寄存器文件,这样一个操作数在其生命周期中会存储于两个地方,操作数读取结构的复杂度会因此而增加。

在现有技术中通过重命名缓冲进行寄存器重命名时,此方案和前面的方案只有微小的变化,改进依据是很大比例的指令并不产生寄存器结果。在前面的寄存器重命名方案中,rob的每一项中都有一个域用来存储寄存器结果,这意味着该域有很大比例的存储空间是浪费的。因此理想的寄存器重命名方案是给出一个独立的存储部件,用来存储流水线中所有指令的结果,且只有那些存在目的寄存器的指令才会占据这个存储部件中的空间,此空间即为重命名缓冲。

当一条指令被重命名时,会去索引寄存器重命名映射表,以找到其源寄存器对应的物理寄存器标识符。同时,如果这条指令存在有效的目的寄存器,就需要从重命名寄存器空闲列表中,选择一个空闲的重命名寄存器分配给它。如果没有空闲的重命名寄存器,指令重命名的操作将会被停顿,直到有老的指令提交并释放一个重命名寄存器。这个空闲的重命名寄存器将分配给目的寄存器,同时为了反映最新的映射关系,需要对寄存器重命名映射表进行更新。

当一个物理寄存器不再被它后面的指令使用时,这个物理寄存器就可以变为空闲状态了,理论上在最后一条使用这个物理寄存器的指令提交后,这个物理寄存器就可以变为空闲状态。但是处理器很难识别出最后一次使用它的指令。保守的做法是当一条指令和其后继的某条指令都写到同一个目的寄存器时,在后面的指令提交的时候,前面指令对应的物理寄存器就变成空闲状态。

通过分析上述现有技术中的缺陷,本发明基于oohls及硬件计数器的乱序高性能核参数化性能评估,提出了重排序缓冲器优化结构的寄存器重命名机制和基于细颗粒度寄存器重命名结构的指令提前退休机制。本发明实施例提供了一种乱序高性能处理器的寄存器重命名方法,所述方法包括:

步骤101:基于高层次语言构建电子系统级esl的参数化处理器模型,通过硬件生成器将处理器核心部件转换为实际电路,所述核心部件包括指令信息分类器和优化重排序缓存器结构的寄存器重命名部件。

步骤102:通过一个或多个硬件计数器组成的性能监测部件,实时分析实际处理器性能并确定所述核心部件的相关参数;所述性能监测部件用于统计处理器的分支预测器部件、所述指令信息分类器、重排序缓存器、重命名缓存器和指令分配部件的性能数据。

下面结合图2~图5对本申请实施例提供的乱序高性能处理器的寄存器重命名方法进行详细说明。本发明实施例的处理器可以是基于risc-v的处理器。

处理器模型的准确性及仿真速度是cpu性能分析的关键,图2示出了本申请实施例提供的基于oohls及硬件计数器的乱序高性能核参数化性能评估流程示意图,首先通过高层次语言实现处理器esl参数化建模,并经oohls硬件生成器转换为rtl代码;进一步地,将高性能核的rtl代码作为处理器性能分析部件,在高性能核的外部添加一个由若干硬件计数器实现的处理器专用性能监测部件,实现微体系结构级的处理器性能分析;因此,通过性能监测单元统计处理器的取指令部件、预解码部件、分支预测器部件、指令解码部件、重排序缓存器、寄存器重命名部件、指令分配部件等一系列行为的事件,进一步将统计结果输出至关键数据汇总部件,实现关键数据datapath性能分析的闭环反馈。

随着乱序高性能处理器中流水线级数的加深和超标量处理器发射宽度的加大,rob的数目也要跟着增大,而且rob的一个条目包含的信息比较多,所以rob数目会受到面积、功耗和成本的约束,其数量将无法充分发挥流水线的效率。rob的数量很大程度上影响着处理器的性能。

传统的处理器架构中指令要等到执行完成才允许从rob中退休,一些长延时的指令,如存储器加载和跳转指令,需要若干个周期才能执行完成。由于要顺序退休,它们后面的指令即使执行完成也不能从rob中退休,导致rob的堵塞,引发流水线停顿。所以对rob退休机制进行改进,提高rob中指令的退休速度显得尤为重要。

寄存器重命名机制的实现和处理器要处理的数据类型密切相关,在risc-v高性能乱序超标量处理器中存在64位整数、64位浮点等多种数据类型。每种数据都拥有自己的体系结构寄存器文件,不同类型的寄存器采用不同的寄存器映射表。

在传统的实现方式中,处理器指令在进入到重命名部件后,对于源寄存器,依据其类型信息索引相应的重命名映射表,获得对应的重命名寄存器标识符;对于目的寄存器查找空闲列表获得空闲的重命名寄存器,然后把新的映射关系更新到相应的重命名映射表中。但是,如果没有足够的空闲重命名寄存器,那么会发生重命名阻塞。此外,指令重命名或提交时会相应更新空闲列表。

传统的处理器架构中的指令要等到执行完成才允许从rob中退休,一些长延时的指令,如存储器加载、跳转指令、异常检测指令等,需要若干个周期才能执行完成。并且相关指令往往需要顺序退休,导致后续指令即使提前执行完成也不能从rob中退休,容易出现因rob的堵塞引发流水线停顿。

图3示出了本发明实施例提供的重排序缓存器优化结构。处理器乱序执行的核心部件包括指令信息分类器、重排序缓存器、重命名映射表及重命名缓存器等部件。其中,指令信息分类器对指令译码部件解析出来的指令分为以下四种类型:

类型1:指令类型instr_type1,包括但不限于alu、mul指令;

类型2:指令类型instr_type2,包括但不限于branch、jump、st指令;

类型3:指令类型instr_type3,包括但不限于div指令;

类型4:指令类型instr_type4,如特殊指令等。

针对上述四种指令类型的不同特点,本发明实施例提出一种基于重排序缓存器优化结构的寄存器重命名机制,如图4所示。

对于指令类型instr_type1,由于在执行过程中不会出现异常,无需占用重排序缓存器、重命名映射表、重命名缓存器的硬件资源。

对于指令类型instr_type2,可能出现mis-predict或tlb异常,需进入重排序缓存器部件,但这类指令没有目的寄存器,无需占用重命名缓存器的硬件资源。

对于指令类型instr_type3,由于指令执行过程中既可能出现异常,又包含目的寄存器,需要占用重排序缓存器、重命名映射表、重命名缓存器等硬件资源。

传统的处理器实现方案中,指令一般需要在流水线后端的执行阶段才能退休,因此造成一定程度的性能损失。本发明实施例在上述重排序缓存器优化结构的寄存器重命名机制的基础上,结合指令信息分类器中四类指令的特点,提出一种基于细颗粒度寄存器重命名结构的指令快速退休机制,如图5所示。

在图6中,首先顺序读取重排序缓存器队列中的头部指令,判断所述头部指令是否为提前退休指令;若是,则更新重命名缓存器相关条目的标志位;若不是,则待重命名缓存器中的指令完成退休,在这过程中判断是否存在异常,若存在,则执行异常服务程序,若不存在异常,则取下一条指令。

具体地,对于指令类型instr_type1,由于在instructiondecode之后的流水线级不发生异常,因此可以在instructiondecode级提前退休;对于指令类型instr_type2中的st指令,需在执行单元第一级确认没发生tlb异常后才能提前退休;而指令类型instr_type2中的branch指令,需要在执行单元的branchunit进行分支预测确认后才能提前退休;对于指令类型instr_type3,需在执行单元第一级确认没发生异常后才能提前退休。

相比传统方案中等到执行完成指令才能退休的做法,本发明实施例的策略使大部分指令在instructiondecode指令译码阶段或者执行单元第一级流水线阶段就可以提前退休,极大地降低了重排序缓存器堵塞的概率。通过指令提前退休机制,减少了rob的占用时间,提高了rob的利用率,进而提升了处理器的性能。

综上所述,本发明实施例提供的一种乱序高性能处理器的寄存器重命名方法及系统,基于高层次语言构建电子系统级esl的参数化处理器模型,通过硬件生成器将处理器核心部件转换为实际电路,所述核心部件包括指令信息分类器和优化重排序缓存器结构的寄存器重命名部件;通过一个或多个硬件计数器组成的性能监测部件,分析实际处理器性能并确定所述核心部件的相关参数;所述性能监测部件用于统计处理器的分支预测器部件、所述指令信息分类器、重排序缓存器、重命名缓存器和指令分配部件的性能数据。此外,基于优化后的寄存器重命名结构,实现细颗粒度的指令提前退休机制,可以进一步提升处理器性能。

基于相同的技术构思,本发明实施例还提供了一种乱序高性能处理器的寄存器重命名系统,如图6所示,所述系统包括:

esl参数化建模部件601,用于基于高层次语言构建esl的参数化处理器模型,通过硬件生成器将处理器核心部件转换为实际电路,所述核心部件包括指令信息分类器和优化重排序缓存器结构的寄存器重命名部件。

处理器性能监测部件602,用于分析实际处理器性能并确定所述核心部件的相关参数,还用于统计处理器的分支预测器部件、所述指令信息分类器、重排序缓存器、重命名缓存器和指令分配部件的性能数据;所述性能监测部件通过一个或多个硬件计数器组成。

在一种可能的实施方式中,所述指令信息分类器用于对指令译码部件解析出来的指令进行分类,分类结果包括指令类型instr_type1、指令类型instr_type2、指令类型instr_type3和指令类型instr_type4;其中所述指令类型instr_type1包括alu和mul等指令,所述指令类型instr_type2包括branch、jump和st等指令,所述指令类型instr_type3包括div等指令,所述指令类型instr_type4包括特殊指令。

在一种可能的实施方式中,所述指令类型instr_type1不占用重排序缓存器、重命名映射表和重命名缓存器的硬件资源;所述指令类型instr_type2不占用重命名缓存器的硬件资源;所述指令类型instr_type3占用重排序缓存器、重命名映射表和重命名缓存器的硬件资源。

在一种可能的实施方式中,所述指令信息分类器分类过程包括:顺序读取重排序缓存器队列的头部指令,针对每一条头部指令执行:解析所述头部指令,对解析后的指令进行指令信息分类,将分类标志位添加在每一条头部指令;所述缓存器重命名部件用于根据每条头部指令的分类标志位,执行所述分类标志位对应的退休机制。

在一种可能的实施方式中,若指令类型为instr_type1,则在指令译码级退休;若指令类型为instr_type2的st指令,则在执行单元第一级流水线确认无异常时退休;若指令类型为instr_type2的branch指令,则在执行单元执行分支预测确认后退休;若指令类型为instr_type3,则在则在执行单元第一级流水线确认无异常时退休。

本说明书中上述方法的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。相关之处参见方法实施例的部分说明即可。

需要说明的是,尽管在附图中以特定顺序描述了本发明方法的操作,但这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

虽然本申请提供了如实施例或流程图的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。

上述实施例阐明的单元、装置或模块等,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。

以上所述的具体实施例,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施例而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1