首页> 中国专利> 处理器核、处理器、装置和指令处理方法

处理器核、处理器、装置和指令处理方法

摘要

公开了一种处理器核、处理器、装置和指令处理方法。所述处理器核,包括:取指单元,取指单元包括投机执行预测器,投机执行预测器将访存指令的程序指针和其内存储的表项进行比对,并标记访存指令;调度单元,用于调整标记后的访存指令的发送顺序,据此发送;执行单元,用于以发送顺序执行访存指令。在取指单元,根据投机执行预测结果标记访存指令,在调度单元,根据标记后的访存指令确定访存指令的发送顺序并发送,在执行单元,以发送顺序执行访存指令,以此避免因访存指令的地址相关性造成需要重新执行访存指令,进而避免需在指令流水线中加入空拍以及必须通过刷流水线操作清除投机错误的访存指令的问题。

著录项

  • 公开/公告号CN112540794A

    专利类型发明专利

  • 公开/公告日2021-03-23

    原文格式PDF

  • 申请/专利权人 阿里巴巴集团控股有限公司;

    申请/专利号CN201910892195.8

  • 申请日2019-09-20

  • 分类号G06F9/38(20060101);

  • 代理机构11449 北京成创同维知识产权代理有限公司;

  • 代理人刘静

  • 地址 英属开曼群岛大开曼资本大厦一座四层847号

  • 入库时间 2023-06-19 10:22:47

说明书

技术领域

本发明涉及芯片制造领域,更具体而言,涉及一种处理器核、处理器、装置和指令处理方法。

背景技术

处理器架构的改进是非常困难的任务。研发人员为此付出大量劳动,期望在哪怕最微小环节方面取得进步。在高性能处理器的设计中,为了性能考虑,通常会引入投机执行的概念,即因相关性导致当前指令无法按顺序发送时,将后续没有相关性的指令提前发送执行的行为。

相关技术中,通常指令的相关性仅指寄存器相关性,即后续指令的源寄存器是前述指令的目的寄存器。但对于访存指令来说,相关性还包括地址相关性,即内存读写地址具有相关性。由于访存指令在指令发送阶段的时候只能检测寄存器的相关性,无法检测地址相关性,只有在访存指令执阶段才会通过计算地址发现地址存在相关性,因此投机执行可能导致具有地址相关性的载入指令(load指令)提前于存储指令(store指令)执行,这会导致载入指令(load指令)所载入的数据是错误的。在碰到该情况时,需要在存储指令(store指令)执行结束后重新执行载入指令(load指令)。这增大了指令流水线上的空拍数,降低了程序的执行效率以及处理器的执行效率。另外,虽然可以在投机失败后,通过刷流水线操作清除投机错误的访存指令,但是由于判断投机失败时访存指令执行已经结束,所以刷流水线操作将会造成一定的性能损失,且流水线越深,性能损失越大。

发明内容

有鉴于此,本方案针对提出了一种处理器核、处理器、装置和指令处理方法,以解决上述问题。

为了达到这个目的,根据本发明的第一方面,本发明提供一种处理器核,包括:

取指单元,所述取指单元包括投机执行预测器,所述投机执行预测器将访存指令的程序指针和其内存储的表项进行比对,并据此标记所述访存指令,所述访存指令为载入指令或存储指令,所述表项为具有地址相关性的载入指令和存储指令的程序指针;

调度单元,用于调整标记后的访存指令的发送顺序,并发送给执行单元;

执行单元,用于以所述发送顺序执行所述标记后的访存指令。

在一些实施例中,所述取指单元包括寄存器组,用于存储所述表项。

在一些实施例中,所述投机执行预测器还包括:

根据所述访存指令的投机执行预测结果更新所述投机预测器内的表项。

在一些实施例中,所述寄存器组还包括:多组寄存器,所述每组寄存器包括一个饱和计数器以及用于存储一个表项的一个或两个PC寄存器。

在一些实施例中,所述投机执行预测器在所述饱和计数器的值大于第一设定数值时启动执行投机预测,在所述饱和计数器的值小于第二设定数值时,停止执行投机预测,所述第一设定数值大于所述第二设定数值。

在一些实施例中,所述投机执行预测器,对于同一对存储指令和载入指令,在未启动执行投机预测之前,根据投机预测错误增加所述饱和计数器的值,在启动执行投机预测之后,根据投机预测错误减少所述饱和计数器的值。

在一些实施例中,所述取指单元还包括:预译码单元,用于对区分通常指令和访存指令,并将所述通常指令发送给所述调度单元,将所述访存指令发送给所述投机执行预测器。

在一些实施例中,所述投机执行预测器只标记预期投机执行失败的载入指令。

在一些实施例中,所述投机执行预测器只标记预期投机执行失败的存储指令。

在一些实施例中,所述调度单元在标记后的存储指令发送之后发送标记后的载入指令。

在一些实施例中,所述调度单元包括:指令发送队列和阻塞发送执行模块,

所述指令发送队列,用于缓存接收到的所有指令;

所述阻塞发送执行模块,用于阻塞标记后的载入指令,在标记后的存储指令发送之后发送所述标记后的载入指令。

在一些实施例中,还包括:引退单元,所述引退单元包括:预测结果汇总模块,所述预测结果汇总模块用于汇总投机预测结果,并向所述投机执行预测器提供所述访存指令的投机执行预测结果。

根据本发明的第二方面,提供一种处理器,包括如上所述任一项所述的处理器核。

根据本发明的第三方面,提供一种片上系统,包括如权利要求1至11任一项所述的处理器核。

根据本发明的第四方面,提供一种装置,包括经由总线耦接的存储器和上述的处理器。

根据本发明的第五方面,提供一种指令处理方法,包括:

获取指令包;

对所述指令包进行预译码,以区分指令包内的访存指令和通常指令,所述访存指令为载入指令或存储指令,所述通常指令为指令集内所述访存指令之外的指令;

对指令包内的访存指令对进行投机预测,并据此标记所述访存指令;

调整标记后的访存指令的发送顺序,并据此发送;

按照发送顺序执行所述访存指令。

在一些实施例中,所述调整标记后的访存指令和所述通常指令的发送顺序,并据此发送包括:

在标记后的存储指令发送之后发送标记后的载入指令。

本发明实施例和现有技术相比,优势在于:

取指单元对访存指令进行投机预测,并根据预测结果标记访存指令,调度单元根据标记后的访存指令调整访存指令的发送顺序,执行单元根据发送顺序执行访存指令,以此避免因访存指令的地址相关性造成需要重新执行访存指令的情况,进而避免需在指令流水线中加入空拍以及必须通过刷流水线操作清除投机错误的访存指令的问题,使得处理器的性能不会受到影响。

附图说明

通过参考以下附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:

图1是根据本发明实施例的系统的结构示意图;

图2是根据本发明实施例的处理器的结构示意图;

图3是根据本发明实施例的处理器核的结构示意图;

图4是和图3所示的结构示意图对应的流程图。

具体实施方式

以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。

在本文中使用以下术语。

程序PC,程序指针。

指令流水线,指令流水线是为提高处理器执行指令的效率,把一条指令的操作分成多个细小的步骤,每个步骤由专门的电路完成的方式。目前主流的指令流水线的技术有三级、四级、五级、七级和超级指令流水线,等等。例如教课书示例的五级指令流水线包括取指级、译码级、执行级、访存级和写回级。在本文中,将取指级、译码级、执行级、访存级和写回级又称为取指单元、译码单元、执行单元、访存单元和引退单元。将实现指令流水线的软件硬件组合称为指令流水线结构。

指令包,指处理器从指令高速缓中或外部总线上获取、固定长度的二进制段。

另外,需要特别指出的是,在本文中所述的“更新投机执行预测器的表项”可以包括以下内容:更改投机执行预测器内已有表项的某个或某些字段;以及在投机执行预测器增加一个新的表项。表项在本文中指一组相关联的数据项。

图1是根据本发明实施例的系统的结构示意图。所述系统例如为一个计算机系统。系统100是“中心”系统架构的示例。该系统100可基于目前市场上各种型号的处理器构建,并由WINDOWSTM操作系统版本、UNIX操作系统、Linux操作系统等操作系统驱动。此外,系统100一般在PC机、台式机、笔记本、服务器中实施。因此,本发明实施例中的系统100不限于硬件电路和软件的任何特定组合。

参考图1所示,系统100包括处理器101。处理器101具有本领域所公知的数据处理能力。它可以是复杂指令集(CISC)架构、精简指令集(RISC)架构、超长指令宇(VLIW)架构的处理器、或者是实现上述指令集组合的处理器、或者是任何为了专用目标构建的处理器设备。

处理器101耦合至系统总线102,系统总线102可以是用于连接处理器101和各种其他组件的互联电路,且互联电路支持可以包括不同需求所需的各种互联协议和接口电路。从而实现处理器101和各个组件之间的通信关系。处理器102还包括根据本发明实施例提供的技术方案进行改进的处理器核1021,其具体细节将在下文提供。

系统100还包括存储器104和显卡107。存储器104可以是动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存或其他存储器。存储器104包括指令存储器105和数据存储器106,通过将由数据信号表示的指令信息和数据信息分开存储,使得处理器101执行指令流水时,可以同时从指令存储器105中取指操作和从数据存储器106中取数据。显卡107包括显示驱动器,用于控制显示信号在显示屏上的正确显示。

系统100还包括存储器控制器中枢(MCH)103,存储器控制器中枢(MCH)103可以耦合至系统总线102、存储器104、显卡107和I/O控制器中枢(ICH)108。处理器101可以经由系统总线102与存储器控制器中枢(MCH)103通信。存储器控制器中枢(MCH)103向存储器104提供高带宽存储器访问路径,用于指令信息和数据信息的存储和读取。同时,存储器控制器中枢(MCH)103和显卡107基于显卡信号输入输出接口以进行显示信号的传输。显卡信号输入输出接口例如为DVI、HDMI等接口类型。

存储器控制器中枢(MCH)103不仅在处理器101、存储器104和显卡107之间传输数字信号,而且,实现了在系统总线102和存储器104以及I/O控制器中枢(ICH)108桥接数字信号。

系统100还包括I/O控制器中枢(ICH)108,通过专用集线器接口总线耦接到存储器控制器中枢(MCH)103,并经由局部I/0总线将一些I/0设备到输入/输出控制中枢(ICH)108上。局部I/0总线用于将外围设备耦接到输入/输出控制中枢(ICH)108,进而耦接到存储器控制器中枢(MCH)103和系统总线102上。外围设备包括但不限于以下设备:硬盘109、光盘驱动器110、声卡111、串行扩展端口112、音频控制器113、键盘114、鼠标115、GPIO接口116、闪存117和网卡118。

当然,不同的计算机系统根据主板,操作系统和指令集架构的不同,其结构图也有所变化。例如目前很多计算机系统将存储器控制器中枢(MCH)103集成到处理器101的内部,这样输入/输出控制中枢(ICH)108会成为和处理器101耦接的控制中枢。

图2是用于实施本发明的片上系统200的结构示意图。其中,系统200作为片上系统,既可以作为一个独立器件生产和销售,也可以和其他组件结合,形成新的器件进行生产和销售。

系统200可以使用目前市场上多种型号的处理器制造,并可由WINDOWS

参考图2所示,系统200包括经由AHB(Advanced High performance Bus,系统总线)总线201耦接的处理器202、静态随机存取存储器205、LCD控制器204和闪存206以及AHB/APB桥207。

处理器202可以为复杂指令集(CISC)微处理器、精简指令集(RISC)微处理器、超长指令宇(VLIW)微处理器、实现上述指令集组合的微处理器、或任何其它处理器设备中的一种。处理器202还包括根据本发明实施例提供的技术方案进行改进的处理器核2021,其具体细节将在下文提供。

静态随机存取存储器205和闪存206用于存储由数字信号表示的指令信息和/或数据信息。例如,静态随机存取存储器205可以作为各种应用程序的运行空间,为各种应用程序创建堆、栈、存储中间数据等,闪存206可以存储各种应用程序的可执行代码和操作系统的可执行代码。

AHB总线201用于在系统200的高性能模块之间传输数字信号,例如在处理器202和静态随机存取存储器205、处理器202和LCD控制器204、处理器202和闪存206、处理器202和AHB/APB桥207之间传输数字信号。

AHB/APB桥207用于在AHB总线和APB总线之间进行数据传输的桥接,通过锁存来自AHB总线的地址、数据和控制信号,并提供二级译码以产生APB外围设备的选择信号,从而实现AHB协议到APB协议的转换。

系统200还可以包括与APB总线耦接的各种接口。各种接口包括但不限于通过以下接口类型:高容量SD存储卡(SDHC,Secure Digital High Capacity)、I2C总线、串行外设接口(SPI,Serial Peripheral Interface)、通用异步收发传输器(UART,UniversalAsynchronous Receiver/Transmitter)、通用串行总线(USB,Universal Serial Bus)、通用型之输入输出(GPIO,General-purpose input/output)和蓝牙UART。与接口耦接的外围设备例如为USB设备、存储卡、报文收发传输器、蓝牙设备等。

值得指出的是,随着SoC设计复杂性的增加以及处理器处理能力的不断提升,总线结构的性能局限导致总线结构也在更新换代,例如ARM公司在上述AHB总线的基础上又推出更高性能的AXI(Advanced eXtensible Interface)总线,因此可以采用AXI总线取代图上的AHB总线201,而且,本领域的研发人员也可以基于自身的实际需求改进现有总线结构,或者构建新的总线结构。因此,虽然图上示出AHB总线,但是实际上,SoC对于总线的选择可以是多种多样的。

另外,对于图1和图2所示的系统,还应该指出的是,这些系统仅用于示例本发明实施例的一些应用场景,但不作为对本发明实施例的限制。本发明实现的是对现有的处理器或者处理器核的改进,因此理论上可以适用于具有任意处理器架构和指令集架构的系统。

图3是根据本发明实施例的处理器核的结构示意图。在图上,箭头表示两个或者以上的单元之间的耦合关系以及两者之间的数据传输方向。

处理器核300包括流水线结构,流水线结构用于根据封装在处理器核内的指令集对程序代码进行取指、译码、执行等操作。如图3所示,处理器核300包括取指单元301、译码单元302、调度单元303、执行单元304和引退单元305。

在处理器核的流水线结构中,取指单元301可以耦合到处理器核300内部的指令高速缓存(未示出)以根据程序指针(程序PC)从转换检测缓冲区中获取物理地址并据此从指令高速缓存中获取指令包。

在一些实施例中,取指单元301可以进一步包括:预译码模块3011和投机执行预测器3012。对于取指单元301取回的指令包,预译码模块3011对指令包内的指令元字段进行预译码以确定各个指令的指令类型。指令类型可以包括通常指令和访存指令,这里的访存指令包括存储指令(store指令)和载入指令(load指令),通常指令可以是除访存指令之外的其他指令,包括分支指令、数据传送指令等。

当预译码模块3011判定当前指令为通常指令时,将当前指令发送给译码单元302。当预译码模块3011判定指令是访存指令时,将访存指令发送给投机执行预测器3012以执行投机预测。投机执行预测器3012用于根据当前访存指令的程序指针和其内部存储的load指令和/或store指令的程序指针比对,以得到当前访存指令的检索结果,并根据检索结果标记load指令和store指令中的至少一个,并将标记后的指令发送给译码单元302。

在一些实施例中,投机执行预测器3012可以进一步包括:寄存器组30121和预测执行单元30124。寄存器组30121和引退单元305的预测结果汇总模块3051耦合,并接收从预测结果汇总模块3051传回的投机执行预测结果(包括预测结果错误和/或预测结果正确)。

寄存器组30121存储具有地址相关性的Load指令和store指令的程序指针的表项。寄存器组30121可以进一步包括多个寄存器组,每个寄存器组包括一个饱和计数器30122以及一个或两个PC寄存器30123。其中,一个或两个PC寄存器30123用于存储一个具有地址相关性的Load指令和store指令的程序指针的表项。投机执行预测器3012根据饱和计数器30122的值启动或停止投机预测。具体地,初始阶段,寄存器内没有存储某个具有地址相关性的load指令和store指令的表项,因此,当该load指令和store指令被执行后,会返回一个预测结果错误给投机执行预测器3012,投机执行预测器3012在一个或两个PC寄存器30123增加一个该load指令和该store指令的表项,并将饱和计数器30122的值设为1,当该对load指令和该store指令又出现了投机失败,让饱和计数器的值加1,第三次时,由于计数器的值≥2了,则开启投机预测,对该load/store指令进行标记,当投机预测错误时,计数值减1。也即,只有当饱和计数器30122的计数值大于或等于2时,才启动执行对访存指令的预测,当计数值小于1时,停止对访存指令进行预测。且当饱和计数器30122的值为0时,释放对应的表项,由此可以重新往该表项对应的寄存器内添加新的表项,从而使得寄存器组30121内的空间可以循环利用。寄存器组30122内存储的都是最新的具有地址相关性的Load指令和/或store指令的程序指针的表项,如此有助于提升投机预测准确性。

在一些实施例中,预测执行单元30124仅标记预测会在执行单元304投机执行失败的载入指令(load指令)。在另一些实施例中,预测执行单元30124仅标记预测会在执行单元304投机执行失败的存储指令(store指令)。

译码单元302根据指令集架构提取当前指令的操作码、源寄存器、目的寄存器和立即数。指令集架构由处理器的生产厂商决定,当程序被编译为可执行的形式时,编译器仅使用指令集架构中定义的指令组织可执行代码。如果编译器使用了未经定义的指令,则译码单元302无法理解该指令试图表达的含义,使得指令译码失败。

调度单元303用于调整接收到的多条指令的发送顺序并按照发送顺序发送到执行单元304。调度单元303的多条指令可以来自取指单元301一次取到的指令包,也可以来自多次取到的指令包。调度单元303可以按照多种方式调整发送顺序。例如,针对标记为一对的存储指令和载入指令,将该存储指令在该载入指令之前发送。再例如,将所有标记的存储指令在载入指令之前发送。

在一些实施例中,调度单元303可以进一步包括:指令发送队列3031和阻塞发送执行模块3032。调度单元303接收译码后的当前指令并将其顺序存入指令发送队列3031,但乱序发送发送指令发送队列3031中的源操作数准备就绪的当前指令。举例说明。指令I3和指令I4是寄存器相关的指令,在指令发送队列3031中,指令I3是指令I4之后发送的指令,且指令I3的源寄存器是指令I4的目的寄存器。指令发送队列3031先发送指令I4再发送指令I3,以避免因发生寄存器相关性造成的投机执行失败而引起的处理器核性能损失。如果当前待发送的指令I6为被标记的载入指令(load指令)、指令发送队列3031中指令I2和指令I5是被标记的存储指令(store指令)、指令I1是未被标记的存储指令(store指令)。阻塞发送执行模块3032阻塞发送指令I6,待指令I2和指令I5都发送完之后再发送指令I6。

在另一些实施例中,调度单元303可以选择性地对标记后的存储指令进行投机执行。例如,在某些情况下,调度单元303接收译码后的当前指令(包括标记后的存储指令)并将其顺序存储到指令发送队列3032中,然后发送指令发送队列3031中的源操作数准备就绪的当前指令,也即,调度单元303放弃对存储指令的投机执行。是否投机执行例如可以取决于对于调度单元303是否存在阻塞的判断。可选地,将指令发送队列3032中的指令数量作为调度单元303中是否存在阻塞的判断条件,当指令数量大于或者等于设定值时,停止对标记后的存储指令的投机执行。当然,本发明不局限于此。指令流水线结构可以任意条件选择启动或者放弃投机执行。

执行单元304可以包括:多个执行模块3041(用于通常指令的执行)和访存指令执行模块3042。对于上述示例的指令I6,在访存指令执行模块3042根据指令I6执行相应载入操作并且根据指令I6的执行结果信息判断取指单元301对指令I6的投机执行预测结果是否正确。在引退单元305中,执行单元304接收指令I5,在访存指令执行模块3042根据指令I5执行相应存储操作并且根据指令I5的执行结果信息判断取指单元301对指令I5的投机执行预测结果是否正确。执行单元304接收指令I4,指令I4可以是通常指令,在多个执行模块3041根据指令I4执行各种算数运算。

引退单元305将相关内容写到存储器中。在一些实施例中,引退单元305可以包括预测结果汇总模块3051,预测结果汇总模块3051根据访存指令执行模块3042对访存指令的判断结果信息,当访存指令执行模块3042判断取指单元301对访存指令的投机预测失败时,向投机执行预测器3012返回投机预测错误。

应该理解,虽然图上采用取指单元、译码单元、调度单元、执行单元和引退单元表示指令流水线结构,但是本发明不局限于此,本领域的技术人员可以采用其他指令流水线实施本实施例,例如采用教科书示例的标准五级流水线结构实现本实施例。

表1为一个示例性的指令流。为了更直观说明本方案的处理器核处理指令流的过程,以表1所示的指令流作为例子说明:

表1 指令流

如表1所示指令流,由于存储指令(store指令)和载入指令(load指令)的寄存器不同,所以没有寄存器相关性,但二者的读写内存使用的地址相同,因此,存储指令(图上的st指令)和载入指令(图上的ld指令)存在地址相关性。

表2是不包含投机执行预测的情况下表1所示的指令流的执行时序。对于存储指令(store指令)来说,其需要等待前序除法指令(div指令)执行结束后才能执行,而除法执行可能需要多拍才能执行结束,因此其将会阻塞在指令发送队列中。而后续的载入指令(load指令)由于不存在寄存器的相关性问题,将会被提前发送到访存指令执行模块3042中,该后续的载入指令投机执行引起了读写的书写错误。其指令行为如表2所示。在第10周期存储指令(store指令)引退后,将重新执行载入指令(load指令),造成了处理器核执行指令的空刷流水线行为,降低了处理器核的执行效率。

表2 不包含投机执行预测的情况下指令流的执行时序

表3是包含投机执行预测的情况下表1所示的指令流的执行时序。若增加投机执行预测器,则指令流的执行情况如表3所示。通过投机执行预测器将存储指令(store指令)和载入指令(load指令)打上标记,在指令发送队列中,存储指令(store指令)未发送时,载入指令(load指令)将无法超前于存储指令(store指令)发送,从而在第10周期时,所有指令序列都已执行并引退。

表3 包含投机执行预测的情况下指令流的执行时序

图4是和图3所示的结构示意图对应的流程图。如流程图所示,该操作的流程如下描述。

在步骤S400中,取指单元获取指令,预译码模块预译码该指令确定指令类型。

在步骤S401中,判断当前指令是否为访存指令。如果是,则执行步骤S402,如果否,则执行步骤S406。

在步骤S400-S401中,取指单元从指令高速缓存中获取指令包,对指令包进行预译码,以区分访存指令和通常指令,若当前指令为访存指令,则执行步骤S402,若该指令是通常指令时,则执行步骤S406。

在步骤S402中,利用访存指令的程序PC访问多个表项。

在一些实施例中,该多个表项可以由PC寄存器组成,PC寄存器中存储具有地址相关性的多个访存指令的程序PC。饱和计数器可以是一个2bits的饱和计数器。饱和计数器计数该多个表项中每个访存指令的程序PC,新增表项时增加1,接收到投机预测错误时减1。

在步骤S403中,将访存指令的程序PC和已存储的表项比较,以确定是否具有地址相关性。

在步骤S404中,判断是否具有地址相关性,如果是,则执行步骤S405,否则执行步骤S406。

在步骤S405中,标记访存指令并将标记后的访存指令发送给译码单元。

在步骤S406中,译码单元进行译码,即根据指令集架构提取指令的操作码、源寄存器、目的寄存器和立即数。

在步骤S407中,接收译码后的指令并将其顺序存入指令发送队列,对于指令发送对列中的每个待发送指令,判断其是否为被标记的载入指令(load指令),如果是,则执行步骤S408,如果否,则执行步骤S409。

在步骤S408中,判断在指令发送队列中被标记的存储指令(store指令)是否都发送完,如果是,则执行步骤S409,如果否,则执行步骤S410。

在步骤S409中,将指令发送给执行单元。

在步骤S410中,阻塞发送被标记的载入指令(load指令),待指令发送队列中被标记的存储指令(store指令)都发送完之后再发送被标记的载入指令(load指令)。

在步骤S411中,利用各种执行模块执行当前指令。其中,访存指令执行模块根据访存指令执行对应的存储或者载入操作,并且根据执行结果信息判断访存指令的投机执行预测结果是否正确。

在步骤S412中,当前执行完毕的信息从指令流水线中写回到寄存器时,预测结果汇总模块根据判断结果信息,在对访存指令的投机预测错误时,向饱和计数器提供反馈信息。

在步骤S413中,更新投机执行预测器内存储的表项。其中饱和计数器将访存指令对应的饱和计数器的计数值减1。投机执行预测器在访存指令对应的饱和计数器的计数值小于2时,停止对访存指令的投机执行结果进行预测。

在本发明实施例中,取指单元对访存指令进行投机预测,并根据预测结果标记访存指令,调度单元根据标记后的访存指令调整访存指令的发送顺序,执行单元以发送顺序执行访存指令,以此避免因访存指令的地址相关性造成需要重新执行访存指令的情况,进而避免需在指令流水线中加入空拍以及必须通过刷流水线操作清除投机错误的访存指令的问题,使得处理器的性能不会受到影响。

进一步地,根据投机预测结果更新投机执行预测器内的表项,使得其内部存储的表项是最新的地址相关性的表项,如此可以进一步提高投机预测的准确性。

进一步地,通过饱和计数器反映投机执行预测器的置信度,饱和计数器小于设定数值时,不再使用投机执行预测器进行投机预测,也避免使用投机执行预测器进行无效工作。

对于本发明,可以在硬件或专用电路、软件、逻辑或其任何组合中实现上述处理单元、处理系统和电子设备。举例来说,可以在硬件中实现一些方面,而可以在可由控制器、微处理器或其它计算设备执行的固件或软件中实现其它方面,尽管本发明并不限于此。虽然可以将本发明的各个方面说明和描述为框图、流程图或使用一些其它的图形表示来说明和描述本发明的各个方面,但是很好理解的是,作为非限制性例子,可以以硬件、软件、回件、专用电路或逻辑、通用硬件或控制器或其它计算设备,或者其某种组合来实现文中所描述的这些块、装置、系统、技术或方法。如果涉及的话,可以在诸如集成电路模块的各种组件中实施本发明的电路设计。

以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号