CN116501385B - 指令处理方法、处理器、芯片及计算机设备 - Google Patents

指令处理方法、处理器、芯片及计算机设备 Download PDF

Info

Publication number
CN116501385B
CN116501385B CN202211623135.4A CN202211623135A CN116501385B CN 116501385 B CN116501385 B CN 116501385B CN 202211623135 A CN202211623135 A CN 202211623135A CN 116501385 B CN116501385 B CN 116501385B
Authority
CN
China
Prior art keywords
instruction
sign bit
register
operation data
source operation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202211623135.4A
Other languages
English (en)
Other versions
CN116501385A (zh
Inventor
林志翔
崔泽汉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202211623135.4A priority Critical patent/CN116501385B/zh
Publication of CN116501385A publication Critical patent/CN116501385A/zh
Application granted granted Critical
Publication of CN116501385B publication Critical patent/CN116501385B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本申请实施例提供一种指令处理方法、处理器、芯片及计算机设备,方法包括:获取译码后的第一指令;检测到第一指令为符号位扩展指令,在寄存器重命名表中,为第一指令的目的架构寄存器与第一物理寄存器建立映射关系,第一物理寄存器为第一指令的源架构寄存器对应的物理寄存器;在建立映射关系后,将第一指令设置为执行完成状态;获取译码后的第二指令,第二指令的源架构寄存器包括第一指令的目的架构寄存器;基于映射关系,从第一物理寄存器中获取第二指令的源操作数据,并对源操作数据执行符号位扩展操作,得到符号位扩展后的源操作数据;根据符号位扩展后的源操作数据,执行第二指令。本申请实施例所提供的技术方案,可以提升处理器性能。

Description

指令处理方法、处理器、芯片及计算机设备
技术领域
本申请实施例涉及处理器技术领域,尤其涉及一种指令处理方法、处理器、芯片及计算机设备。
背景技术
在现代计算机体系结构中,处理器使用逻辑上的架构寄存器与实际的物理寄存器进行映射,以在处理器处理指令的过程中,写入和保存指令的值(例如中间值,结果值等);其中,架构寄存器可以视为是指令集架构上指定的寄存器,同时也是程序员在使用高级程序语言时所能够使用的寄存器;物理寄存器可以视为是处理器在硬件资源层面实际的寄存器。
通常在现代计算机体系结构中,根据不同的计算机系统架构的定义,所能够使用的寄存器的位宽也是不同的;例如,在64位的地址模式下,按照x86计算机系统架构的定义,可以使用64/32/16/8四种位宽的寄存器来进行操作;但是在将寄存器中存储的数据作为进行地址计算的源操作数据时,寄存器中存储的数据需要为64位的数据;从而当寄存器中存储的数据不是64位时,就需要通过符号位扩展指令将寄存器中存储的数据扩展为64位,以进行地址计算因此,在地址计算的程序需求中,符号位扩展指令具有广泛的应用,而在处理器处理的指令中,包含有大量的地址计算,也就是说地址计算是必不可少的;这导致处理器处理的指令中涉及较大比例的符号位扩展指令。
处理器处理的指令中存在较大比例的符号位扩展指令,也就存在空余进行性能优化的空间,因此如何提供技术方案,以降低符号位扩展指令对于处理器的指令处理性能的影响,从而提升处理器性能,成为了本领域技术人员亟需解决的技术问题。
发明内容
本申请实施例解决的技术问题是如何降低符号位扩展指令对于处理器的指令处理性能的影响,从而提升处理器性能。
为解决上述问题,本申请实施例提供一种指令处理方法、处理器、芯片及计算机设备。
第一方面,本申请实施例提供一种指令处理方法,包括:
获取译码后的第一指令;
如果检测所述第一指令为符号位扩展指令,在寄存器重命名表中,为所述第一指令的目的架构寄存器与第一物理寄存器建立映射关系,所述第一物理寄存器为所述第一指令的源架构寄存器对应的物理寄存器;以及,在建立所述映射关系后,将所述第一指令设置为执行完成状态;
获取译码后的第二指令,所述第二指令的源架构寄存器包括第一指令的目的架构寄存器;
基于所述映射关系,从所述第一物理寄存器中获取所述第二指令的源操作数据,并对所述源操作数据执行符号位扩展操作,得到符号位扩展后的源操作数据;
根据符号位扩展后的源操作数据,执行所述第二指令。
第二方面,本申请实施例提供一种处理器,包括:
重命名单元,用于获取译码后的第一指令;如果检测所述第一指令为符号位扩展指令,在寄存器重命名表中,为所述第一指令的目的架构寄存器与第一物理寄存器建立映射关系,所述第一物理寄存器为所述第一指令的源架构寄存器对应的物理寄存器;以及,在建立所述映射关系后,将所述第一指令设置为执行完成状态;
符号位扩展单元,用于获取译码后的第二指令,所述第二指令的源架构寄存器包括第一指令的目的架构寄存器;基于所述映射关系,从所述第一物理寄存器中获取所述第二指令的源操作数据,并对所述源操作数据执行符号位扩展操作,得到符号位扩展后的源操作数据;
指令执行单元,用于根据符号位扩展后的源操作数据,执行所述第二指令。
第三方面,本申请实施例还提供一种芯片,包括如第二方面所述的处理器。
第四方面,本申请实施例还提供一种计算机设备,包括如第三方面所述的芯片。
本申请实施例提供的指令处理方法,可以在重命名阶段获取译码后的第一指令;对第一指令的指令类型进行检测,如果检测所述第一指令为符号位扩展指令,则在寄存器重命名表中,为所述第一指令的目的架构寄存器与第一物理寄存器建立映射关系,所述第一物理寄存器为所述第一指令的源架构寄存器对应的物理寄存器;也就是说,对于符号位扩展指令,本申请实施例在重命名阶段不再为符号位扩展指令的目的架构寄存器分配新的物理寄存器,而是复用第一指令的源架构寄存器对应的物理寄存器,来与目的架构寄存器建立映射关系;在建立上述映射关系后,本申请实施例可将所述第一指令设置为执行完成状态,从而使得符号位扩展指令不用在指令执行阶段进行执行,而是能够直接进入指令提交阶段进行按序提交,避免符号位扩展指令需要在指令执行阶段进行执行的过程,使得后续依赖于符号位扩展的指令能够提前被唤醒,从而降低执行符号位扩展指令对于处理器的指令处理性能的影响。
进一步的,由于符号位扩展指令的目的架构寄存器是复用源架构寄存器的物理寄存器,因此符号位扩展指令的目的架构寄存器中的数值并未实际进行符号位扩展,为使得后续依赖于符号位扩展指令的第二指令能够正常执行,本申请实施例在获取译码后的第二指令后,由于第二指令的源架构寄存器包括第一指令的目的架构寄存器;因此基于寄存器重命名表中为第一指令的目的架构寄存器所建立的映射关系,本申请实施例可从第一指令的目的架构寄存器所映射的第一物理寄存器中,获取到所述第二指令的源操作数据;进而对所述源操作数据执行符号位扩展操作,得到符号位扩展后的源操作数据;根据符号位扩展后的源操作数据,执行所述第二指令。也就是说,本申请实施例可以使得符号位扩展指令在指令执行阶段并不执行,而由后续依赖于符号位扩展指令的指令如所述第二指令,在读取源操作数据时,进行源操作数据的符号位扩展。
可以看出,本申请实施例所提供的指令处理方法中,符号位扩展指令的目的架构寄存器是复用源架构寄存器对应的第一物理寄存器,从而在寄存器重命名表中建立映射关系,并且在建立映射关系后,直接将符号位扩展指令设置为执行完成状态,使得符号位扩展指令不需要在指令执行阶段进行执行,能够避免占用过多的处理器资源来完成符号位扩展指令的执行,且能够节省在指令执行阶段执行符号位扩展指令的执行时间。对于后续依赖符号位扩展指令的第二指令,由于所述第二指令的源架构寄存器包括符号位扩展指令的目的架构寄存器,所述第二指令可基于符号位扩展指令的目的架构寄存器所映射的第一物理寄存器中,获取到还未进行符号位扩展的源操作数据,进而对源操作数据进行符号位扩展操作,得到符号位扩展后的源操作数据,从而保障后续第二指令的顺利执行。本申请实施例可以避免符号位扩展指令在指令执行阶段的执行,从而避免执行较大占比的符号位扩展指令而对处理器的指令处理性能带来的影响,提升处理器指令处理的效率和性能;并且,本申请实施例可以保障后续依赖符号位扩展指令的第二指令能够顺利执行,因此本申请实施例能够提升处理器处理指令的效率,提高处理器的性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1示例性的示出了处理器处理指令的阶段示例图。
图2示例性的示出了处理器的架构框图。
图3示例性的示出了符号位扩展指令在各个不同的程序指令中的占比示意图。
图4是本申请实施例所提供的指令处理方法中寄存器重命名表的一示意图。
图5是本申请实施例所提供的指令处理方法的一流程示意图。
图6为本申请实施例所提供的指令处理方法的另一流程示意图。
图7是本申请实施例所提供的指令处理方法的又一流程示意图。
图8是本申请实施例所提供的处理器的架构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在处理器的流水线作业中,处理器处理指令需要经过取指、译码、分发、寄存器重名、指令执行、提交等阶段。为便于理解,图1示例性的示出了处理器处理指令的阶段示例图;如图1所示,处理器处理指令的过程包括:取指阶段101、译码阶段102、分发阶段103、寄存器重命名阶段104、指令执行阶段105、提交阶段106。
其中,取指阶段101为从处理器的缓存或主存储器中取指出程序运行对应的指令。
译码阶段102为对取指阶段101取出的指令进行译码,以确定指令的操作码和/或地址码等。
分发阶段103为将译码阶段102译码后的指令,分发给重命名单元以进行寄存器重命名过程。
寄存器重命名阶段104为将分发阶段103发送的各个译码后的指令,在重命名单元的寄存器重命名表中,建立各个译码后的指令所包括的目的架构寄存器和对应的物理寄存器之间,以及各个译码后的指令所包括的源架构寄存器和对应的物理寄存器之间的映射关系。
指令执行阶段105为对译码后的指令执行指令操作,实现程序运行。例如,基于寄存器重命名阶段104为译码后的指令建立的映射关系,在指令执行阶段105,处理器可从译码后指令的源架构寄存器的物理寄存器中读取源操作数据;从而根据译码后的指令的操作码对源操作数据进行指令操作,得到目的操作数据,目的操作数据可写入译码后的指令的目的架构寄存器对应的物理寄存器中。
提交阶段106为将指令执行阶段105执行完成的各个指令,按程序的具体
执行顺序依次提交。
需要进一步说明的是,由于指令中存在改变程序流程的分支指令,为解决在处理分支指令时,处理器需等待分支指令的执行结果来确定下一步取指而导致的流水线延迟,处理器处理指令的流水线的前端还可设置分支预测单元,以实现指令的分支预测。
基于图1示例的处理器处理指令的示例阶段,图2示例性的示出了处理器的架构框图,参照图2,处理器可以包括:取指单元201、译码器组202、分发单元203、重命名单元204、指令执行单元205、提交单元206。
取指单元201即为执行上述所述的取指阶段101的内容,以从处理器的缓存或主存储器中取指出程序运行对应的指令。
译码器组202即为执行上述所述的译码阶段102的内容,以对取指单元201取出的指令进行译码,以确定指令的操作码和/或地址码等
分发单元203即为执行上述所述的分发阶段103的内容,以将译码器组202译码后的指令,分发给重命名单元以进行寄存器重命名过程。
重命名单元204即为执行上述所述的寄存器重命名阶段104的内容,以将分发单元203发送的各个译码后的指令,在重命名单元的寄存器重命名表中,建立各个译码后的指令所包括的目的架构寄存器和对应的物理寄存器之间,以及各个译码后的指令所包括的源架构寄存器和对应的物理寄存器之间的映射关系
指令执行单元205即为执行上述所述的指令执行阶段105的内容,以对译码后的指令执行指令操作,实现程序运行。
提交单元206即为执行上述所述的提交阶段106的内容,以将指令执行单元205执行完成的各个指令,按程序的具体执行顺序依次提交。
在处理器处理指令的过程中,处理器处理的指令中涉及较大比例的符号位扩展指令;符号位扩展指令的功能是,对符号位扩展指令的源操作数据进行符号位扩展,从而使得符号位扩展指令的目的操作数据的位数得到扩展,以满足程序的64位等目标位的地址模式。
为便于理解,以64位的地址模式为例,根据x86指令集定义,在64位的地址模式中,如果使用的是SIB(Scale Index Base,刻度索引基)地址索引模式(SIB.index),那么其中的索引(Index)寄存器和基地址(Base)寄存器一定要使用的是64位的寄存器。如果Index寄存器或者Base寄存器对应的架构寄存器在之前当做了非64位的寄存器来写入结果(即写入的值是非64位的数据),那么在进行SIB地址索引之前,必须先使用符号位扩展指令对Index寄存器或Base寄存器中的值进行符号位扩展。扩展成64位的值以后,才能作为AGU(AddressGeneration Unit,地址生成单元)的输入参与后续的SIB地址计算。
可见,符号位扩展指令在64位等目标位的程序中具有广泛的应用,为进一步便于理解,图3示例性的示出了符号位扩展指令在各个不同的程序指令中的占比示例图。
结合图3所示,通过对SPEC CPU(Standard Performance EvaluationCorporation CPU,CPU子系统评估软件)测试程序的测试结果进行分析,发现符号位扩展指令在SPEC CPU 2006和SPEC CPU 2017x86版本的各个程序中占据很大一部分的比例(为了方便说明,图3中仅示出了部分程序的分析结果)。
可以看到,图3中测试的416.gamess_gradient、416.gamess_triazolium、416.gamess_cytosine、410.bwaves、641.leela、644.nab_3j1n、526.blender、541.leela、464.h264ref_foremanabseline程序中,对应的符号位扩展指令所占全部指令数量的比例分别为11.27%、8.68%、6.95%、7.62%、6.84%、4.92%、9.74%、7.02%、8.84%,对于程序中包括的全部指令数量来说,符号位扩展指令的数量所占比例是很大的。
其中,gamess实现了广泛的量子化学计算;gradient、triazolium、cytosine是gamess所针对不同处理类型的具体应用;410.bwaves数值模拟了三维跨音速瞬变层流粘性流中的爆炸波;641.leela是基于蒙特卡洛的位置估计、基于上置信区间的选择性树搜索和基于Elo评级的走棋估值的围棋引擎;在这些例举的程序中均包含有大量的符号位扩展指令,因此符号位扩展指令的优化对于处理。
性能的提升是非常有必要的。
需要说明的是,图3所示的movsxd是符号位扩展指令的一种形式,其对应的指令功能是将源架构寄存器的物理寄存器中存储的32位源操作数据进行符号位扩展,得到64位的目的操作数据,64位的目的操作数据存储于对应的64位的物理寄存器中。
通过图3所示的符号位扩展指令的占比结果,可以看出符号位扩展指令的数量在各个程序中均占据了相当大的一部分,因此通过对符号位扩展指令的优化能够对处理器性能产生一定的影响。
对符号位扩展指令进行优化的一种方式是,在编译器对符号位扩展指令进行优化,将部分符号位扩展指令进行移除。这种方式虽然可以减少符号位扩展指令的处理时间,但是针对于一些被后面程序所需要的符号位扩展指令来说,就不能够通过上述方式来进行优化。因此使用编译器来优化符号位扩展指令具有很大的局限性,能优化的符号位扩展指令的数目也很有限;因此非符号位扩展指令就不能够获取到需要的符号位扩展数据,此时就会出现非符号位扩展指令执行错误的情况。例如,在执行非符号位扩展指令时,执行的非符号位扩展指令需要使用经过符号位扩展后的64位的数据,基于前述内容,架构寄存器所对应的物理寄存器中存储的数据为32位的数据,想要获取64位的数据,就要通过符号位扩展指令,进行符号位扩展操作。但是由于编译器已经将符号位扩展指令删除了,所述非符号位扩展指令就不能够正常执行,而且对于这种情况下编译器本身是无法利用任何优化技术来替代符号位扩展指令的操作。
此外,对编译器进行任何优化的这一方式本身还存在着一定的缺陷。例如当一项新的编译器技术得到应用以后,想要对应用程序真正起到效果,就需要使用新的编译器对想要优化的程序进行一次重新的编译,这需要耗费很大的资源。并且对于软件的源码已丢失,只留有可执行文件的情况,编译器的优化方式也无法适用。如果是在硬件层面对符号位扩展的问题进行解决,只需要在硬件上做调整,不需要重新编译程序,就能解决前面提到的两个问题。
因此,本申请提出一种指令处理方法,通过硬件层面的处理,使得指令优化过程能覆盖到所有使用到符号位扩展指令的场景,能够避免程序中的所有符号位扩展指令在指令执行阶段进行执行,且根据符号位扩展指令和非符号位扩展指令的依赖关系,能够满足后续获取的非符号位扩展指令的正常执行,提高处理器性能。
本申请实施例所提供的指令处理方法中,首先,译码阶段的处理过程包括:
译码单元对当前获取到的指令进行译码并且对指令类型进行识别,如果检测到当前译码的指令是符号位扩展的指令,译码单元就对这条指令进行特殊处理。例如,为译码后指令携带一个符号位扩展标记,符号位扩展标记表示译码后指令将进行符号位扩展的操作,为符号位扩展指令,方便后续指令处理阶段对符号位扩展指令进行优化操作。在分发阶段,携带符号位扩展标记的译码后指令和其他指令一样正常进行分发。
由于在硬件设备上,每一组数据都对应有传输该组数据信息的硬件数据通路,因此,所述译码单元对取指单元获取的指令进行处理的方法可以为,在符号位扩展指令对应的原始硬件数据通路中增加一组硬件数据通路,用于存储和传输符号位扩展标记。例如,译码单元获取到的指令由8根原始硬件数据通路来传输,可以表示2的8次方种Opcode类型,现在再增加一根硬件数据通路,专门用来存储和传输符号位扩展标记,以指示译码单元获取到的指令为符号位扩展指令。
其中,不同的Opcode对应着不同的指令执行操作,比如0x00代表加法,0x01代表减法,0x10代表符号位扩展。
进一步的,重命名阶段的处理过程可以包括:
重命名单元会对经译码单元译码后的每一条指令,检测是否携带译码单元设置的符号位扩展标记。
对于不携带符号位扩展标记的译码后指令,若该译码后指令为需要写回结果到目的架构寄存器中的写回指令时,重命名单元从当前物理寄存器空闲队列中分配一个物理寄存器号(每一个物理寄存器号对应一个硬件上的物理寄存器),同时在寄存器重命名表中新创建一项重命名表项,将该写回指令的目的架构寄存器号(每一个目的架构寄存器号即为软件上对应的一个目的架构寄存器)和新分配的空闲的物理寄存器号进行对应,即建立目的架构寄存器和物理寄存器之间的映射关系。
这样,后续执行单元在执行该写回指令的指令操作以后,就会将执行结果写回到映射关系所指示的目的架构寄存器对应的物理寄存器中。同时后续依赖于这条写回指令的执行结果的其他指令,也是通过读取该寄存器重命名表中的映射关系,获取到被依赖指令(如上述所述写回指令)的目的架构寄存器对应的物理寄存器号,然后使用该物理寄存器号去物理寄存器堆中读取源操作数据。
因为符号位扩展指令可以看做一条先执行搬移数据操作,然后进行符号位扩展操作的指令(符号位扩展指令本身就相当于一条搬移数据的指令),所以在本申请所提供的指令处理方法中,本申请实施例将符号位扩展的操作从符号位扩展指令的执行阶段转移到,依赖符号位扩展指令的其他指令读取寄存器的阶段。
在一个示例中,寄存器重命名表可以参考图4,图4是本申请实施例所提供的指令处理方法中寄存器重命名表的一示意图。
可以看到,在寄存器重命名表所记录的各个映射关系中,每一个目的架构寄存器号都有对应的物理寄存器号,符号位扩展标记则表示该映射关系对应的译码后指令是否需要进行符号位扩展,其中“是”表示该译码后的指令携带有符号位扩展标记,且该译码后的指令为符号位扩展指令,“否”表示该译码后的指令未携带有符号位扩展标记,正常处理即可;在一些实施例中,可以使用一个比特位bit来进行表示,例如,用0表示“是”,用1表示“否”。
这样,当重命名单元识别到译码后指令携带有符号位扩展标记之后,则可确认该译码后指令为符号位扩展指令,从而在寄存器重命名表中新增映射关系时,并不需要从物理寄存器空闲队列中分配一个物理寄存器号,而是读取符号位扩展指令的源架构寄存器对应的物理寄存器号,然后建立该符号位扩展指令的目的架构寄存器与源架构寄存器的物理寄存器之间的映射关系。
例如对于指令movsxd r3,r2,该指令用于表示将r2架构寄存器中的源操作数据进行符号位扩展,并将符号位扩展后的源操作数据存储至r3架构寄存器中,此时,r2架构寄存器即为源架构寄存器,r3架构寄存器即为目的架构寄存器。重命名阶段读取到r2架构寄存器对应的物理寄存器号为15,因此把r3架构寄存器对应的架构寄存器号也映射到物理寄存器号15上,此时对r2架构寄存器和r3架构寄存器的读取都是获取物理寄存器号15中保存的值,相当于实现了数据搬移。
为进一步理解本申请所述的指令处理方法的实现,请参考图5,图5是本申请实施例所提供的指令处理方法的一流程示意图。
如图中所示,该流程可以包括以下步骤:
步骤S01,获取译码后的第一指令。
所述第一指令即为重命名单元接收到的经过译码单元译码之后的指令。
步骤S02,检测所述第一指令是否为符号位扩展指令,如果是,则执行步骤S03,如果否,则执行步骤S08。
第一指令可能为符号位扩展指令,也可能不为符号位扩展指令,重命名单元在获取译码后的第一指令时,可检测第一指令是否为符号位扩展指令。
作为可选实现,为了能够使得重命名单元快速的检测所述第一指令是否为需要特殊处理的符号位扩展指令,在一种实施方式中,步骤S01可以包括:
检测译码后的第一指令是否携带符号位扩展标记,如果所述第一指令携带符号位扩展标记,则确定所述第一指令为符号位扩展指令;其中,指令在译码阶段如果被识别为符号位扩展指令,则译码后的指令设置有符号位扩展标记。
需要说明的是,上述所述符号位扩展标记即为前述所述译码单元设置的符号位扩展标记。
通过译码单元已经设置好的符号位扩展标记,可以快速识别出第一指令的指令类型,方便后续的指令优化和处理。通过重命名单元对第一指令进行检测,可以快速判断是否需要对该译码后的指令进行特殊处理,方便后续的指令优化和处理。
为了设置所述符号位扩展标记,在一种实施方式中,所述符号位扩展标记可以通过新增硬件数据通路进行设置,本申请实施例可确定所述第一指令的原始硬件数据通路;在所述原始硬件数据通路的基础上,设置新增硬件数据通路,所述新增硬件数据通路用于存储所述符号位扩展标记。
所述新增硬件数据通路为译码阶段在对取指阶段获取到的各个指令进行译码时,根据获取到的指令的类型在硬件设置上新增的一条数据线,这样,当译码单元完成译码阶段的处理后,通过分发单元向重命名单元分发译码后指令,可以依赖于新增硬件数据通路,对符号位扩展指令进行符号位扩展标记。
步骤S03,在寄存器重命名表中,为所述第一指令的目的架构寄存器与第一物理寄存器建立映射关系,所述第一物理寄存器为所述第一指令的源架构寄存器对应的物理寄存器。
通过建立映射关系,可以在后续执行与第一指令相关的其他指令时,直接根据映射关系找到需要的数据。例如,当需要执行的后续指令中,后续指令的源架构寄存器是第一指令的目的架构寄存器时,就可以根据步骤S03中建立好的第一指令的映射关系,直接从第一指令的第一物理寄存器中,获取第一物理寄存器所存储的数据作为后续指令的源操作数据。
为了使得依赖符号位扩展指令的后续指令,在基于第一指令的目的架构寄存器对应的第一物理寄存器读取源操作数据时,能够识别到所读取的源操作数据还未经过符号位扩展,本申请实施例可在第一指令的映射关系中相应的增加符号位扩展标记,可选的,在一种实施方式中,步骤S03可以包括:
在寄存器重命名表新建第一重命名表项,在所述第一重命名表项中记录所述第一指令的目的架构寄存器与第一物理寄存器的映射关系,并在所述第一重命名表项中设置符号位扩展标记。
作为一个示例,结合图4所示,每建立一个映射关系,就在寄存器重命名表中新增一个重命名表项,用于记录新建立的所述映射关系,从而在后续执行指令时,当后续指令中的源架构寄存器和寄存器重命名表中已经建立的映射关系中的目的架构寄存器一致时,可以依赖于重命名表项中记载的映射关系,快速找到后续指令的源架构寄存器对应的第一物理寄存器,进而可以直接从第一物理寄存器中获取存储的数据,作为后续指令的源操作数据,顺利完成指令的执行。
步骤S04,在建立所述映射关系后,将所述第一指令设置为执行完成状态。
将第一指令设置为在执行完成状态,从而可以将第一指令认为是已完成执行的指令,从而可以在指令执行阶段不执行第一指令的符号位扩展操作,优化第一指令的处理过程。
如图所示,在步骤S04之后,还可以包括以下步骤:
步骤S040,在指令提交阶段,对设置为执行完成状态的第一指令,执行按序提交操作。
在重命名单元执行完上述的步骤以后,符号位扩展指令不需要再经过执行阶段,去占用指令执行单元和对物理寄存器队列的写端口,重命名单元可以直接把符号位扩展指令的执行状态设置为已完成,等待最后在指令的提交阶段按序提交即可。
这样,通过重命名单元的操作,既符合指令执行的正常编译顺序,又可以优化对于符号位扩展指令的处理,从而提高处理器的整体性能。
步骤S05,获取译码后的第二指令,所述第二指令的源架构寄存器包括第一指令的目的架构寄存器。
所述第二指令的源架构寄存器包括第一指令的目的架构寄存器,则表示第二指令的执行依赖于第一指令;例如,第一指令为movsxd r3,r2,表示将r2中存储的数据进行符号位扩展后存储于r3中;其中,r3为第一指令的目的架构寄存器,r2为第一指令的源架构寄存器;第二指令为add r1,r1,r3,表示计算r1中的数据与r3中的数据和,并将数据和存储于r1中,其中,r3表示第二指令的源架构寄存器,r1表示第二指令的目的架构寄存器。
可以看到,第二指令的源架构寄存器r3与第一指令的目的架构寄存器r3的寄存器编号一致,也就是说,在执行第二指令时,源操作数据是从r3中获取的,也就是第一指令的目的架构寄存器对应的第一物理寄存器中存储的数据,即为上述所述的第二指令的执行依赖于第一指令的执行。
步骤S06,基于所述映射关系,从所述第一物理寄存器中获取所述第二指令的源操作数据,并对所述源操作数据执行符号位扩展操作,得到符号位扩展后的源操作数据。
继续以上述第一指令为movsxd r3,r2,第二指令为add r1,r1,r3,为例进行说明。
在执行第二指令时从源架构寄存器r3对应的物理寄存器中获取存储的源操作数据,由于第二指令的源架构寄存器r3和第一指令的目的架构寄存器r3相同,因此可以根据建立好的第一指令的映射关系,直接获取到第一指令的目的架构寄存器对应的第一物理寄存器中存储的数据,作为第二指令的源操作数据。
由于在建立所述第一指令的映射关系后,已经将所述第一指令设置为执行完成状态,即第一指令的第一物理寄存器中存储的数据是未进行符号位扩展的数据,因此,在执行第二指令时,根据映射关系从第一物理寄存器中获取到源操作数据之后,进一步的对源操作数据进行符号位扩展操作,得到符号位扩展后的源操作数据,从而可以顺利执行第二指令。
这样,可以在执行与第一指令相关的第二指令时,第二指令可基于符号位扩展指令的目的架构寄存器所映射的第一物理寄存器中,获取到还未进行符号位扩展的源操作数据,进而对源操作数据进行符号位扩展操作,得到符号位扩展后的源操作数据,保障后续第二指令的顺利执行,从而避免执行较大占比的符号位扩展指令而对处理器的指令处理性能带来的影响,提升处理器指令处理的效率和性能;并且,可以保障后续依赖符号位扩展指令的后续第二指令能够顺利执行,以提升处理器处理指令的效率,提高处理器的性能。
在一种实施方式中,步骤S06的实现过程可以参考图6所示,图6为本申请实施例所提供的指令处理方法的另一流程示意图,如图所示,该流程可以包括以下步骤:
步骤S060,在寄存器重命名表新建第一重命名表项,在所述第一重命名表项中记录所述第一指令的目的架构寄存器与第一物理寄存器的映射关系,并在所述第一重命名表项中设置符号位扩展标记。
步骤S060的内容可以参考步骤S03的内容,在此不再赘述。
步骤S061,基于所述第二指令的源架构寄存器包括第一指令的目的架构寄存器,以及所述第一重命名表项记录的映射关系,确定所述第二指令的源操作数据存储在所述第一物理寄存器中,并从所确定的第一物理寄存器中,读取所述第二指令的源操作数据。
步骤S062,基于所述第一重命名表项中设置的符号位扩展标记,对所读取的所述第二指令的源操作数据进行符号位扩展操作,得到符号位扩展后的源操作数据。
由于在建立所述第一指令的映射关系后,已经将所述第一指令设置为执行完成状态,即第一指令的第一物理寄存器中存储的数据是未进行符号位扩展的数据。因此,在执行第二指令时,根据映射关系从第一物理寄存器中获取到源操作数据之后,进一步的根据符号位扩展标记对源操作数据进行符号位扩展操作,得到符号位扩展后的源操作数据,从而可以顺利执行第二指令。
为了能够顺利执行源操作数据的符号位扩展操作,在一种实施方式中,步骤S062可以包括:
对所述源操作数据对应的符号位进行判断,在确定所述符号位为1时,对所述源操作数据的高位补1;
在确定所述符号位为0时,对所述源操作数的高位补0,得到所述符号位扩展后的源操作数据。
需要说明的是,根据计算机对于有符号数的存储定义,所存储数据的最高位代表符号位,例如以获取的所述源操作数据为32位有符号数,则第32位就是符号位。
其中符号位为1表示该源操作数据为负数,符号位为0表示该源操作数据为正数。因为在重命名单元处理的过程中,是无法读取到物理寄存器中真正存储的源操作数据的,所以重命名单元并不知道物理寄存器的源操作数据对应的符号位是0还是1,也就无法确定物理寄存器存储的源操作数据是如何进行符号位扩展的。因此重命名单元只能依据译码单元在译码过程中设置的符号位扩展标记,在获取到物理寄存器中存储的源操作数据以后,判断对应源操作数据的符号位是1还是0之后,决定对源操作数据的高位补上全1还是全0。
为方便理解,继续以上述的源操作数据为32位为例,如果32位源操作数据的符号位为0即该源操作数据是正数,进行扩展操作时高位补0即可,如果32位源操作数据的符号位为1即该源操作数据为负数,进行扩展操作时需要高位补1。
在执行第二指令时,获取到第一物理寄存器中存储的源操作数据之后,可以根据符号位扩展标记,对源操作数据进行对应的符号位扩展操作,得到扩展后的源操作数据,使得第二指令能够正常执行。
步骤S07,根据符号位扩展后的源操作数据,执行所述第二指令。
可以看出,本申请实施例所提供的指令处理方法中,符号位扩展指令的目的架构寄存器是复用源架构寄存器对应的第一物理寄存器,从而在寄存器重命名表中建立映射关系,并且在对第一指令建立映射关系后,直接将符号位扩展指令设置为执行完成状态,使得符号位扩展指令不需要在指令执行阶段进行执行,能够避免占用过多的处理器资源来完成符号位扩展指令的执行,且能够节省在指令执行阶段执行符号位扩展指令的执行时间。对于后续依赖符号位扩展指令的后续第二指令,由于所述第二指令的源架构寄存器包括符号位扩展指令的目的架构寄存器,所述第二指令可基于符号位扩展指令的目的架构寄存器所映射的第一物理寄存器中,获取到还未进行符号位扩展的源操作数据,进而对源操作数据进行符号位扩展操作,得到符号位扩展后的源操作数据,从而保障第二指令的顺利执行。本申请实施例可以避免符号位扩展指令在指令执行阶段的执行,以提升处理器处理指令的效率,提高处理器的性能。
如果检测的第一指令为非符号位扩展指令时,则进行正常的指令处理即可,请参考图5所示,该流程还可以包括:
步骤S08,在寄存器重命名表中,为所述非符号位扩展指令的目的架构寄存器和空闲的物理寄存器建立映射关系。
对于非符号位扩展指令,则直接根据重命名单元的正常指令处理过程,在寄存器重命名表中,建立非符号位扩展指令的目的架构寄存器和物理寄存器之间的映射关系。这样,在执行非符号位扩展指令时,可以根据映射关系,从对应的物理寄存器中获取所需数据,完成非符号位扩展指令的执行。
由于物理寄存器存在无可使用状态的情况,即物理寄存器队列中的各个物理寄存器都存有数据,因此,在一种实施方式中,为非符号位扩展指令建立映射关系时,还需要先判断物理寄存器中是否存在空闲可使用的物理寄存器,具体的,请参考图7,图7是本申请实施例所提供的指令处理方法的又一流程示意图。
如图中所示,步骤S08可以包括:
步骤S080,获取非符号位扩展指令。
步骤S081,确定物理寄存器队列中是否存在空闲的物理寄存器。如果是,则执行步骤S082,如果否,则执行步骤S083。
步骤S082,为所述非符号位扩展指令分配所述空闲的物理寄存器,在寄存器重命名表中,为所述非符号位扩展指令的目的架构寄存器和空闲的物理寄存器建立映射关系。
当物理寄存器队列中没有空闲的物理寄存器时,则需要等待某一个物理寄存器中存储的数据释放后,再为所述非符号位扩展指令分配该空闲的物理寄存器。
步骤S083,等待其他指令释放物理寄存器中存储的数据后,得到空闲的物理寄存器。
执行步骤S083后,物理寄存器队列存在有空闲的物理寄存器,则可以为非符号位扩展指令进行分配,从而执行步骤S082。这样,就完成了非符号位扩展指令的重命名单元的处理。
当然,需要说明的是,当获取到的译码后的指令为符号位扩展指令时,在重命名阶段也需要为符号位扩展指令分配物理寄存器来建立映射关系,因此也可能会遇到没有空闲的物理寄存器的情况;此时,同样需要在重命名阶段确定是否有空闲的物理寄存器,当没有空闲物理寄存器时,则等待其他指令释放物理寄存器中存储的数据后,得到空闲的物理寄存器;最后将空闲的物理寄存器分配给符号位扩展指令,并建立映射关系。
为方便理解本申请所提供的指令处理方法,这里继续以前述第一指令为movsxdr3,r2,第二指令为add r1,r1,r3,为例进行说明。
首先,译码单元获取取指单元获取到的第一指令,并确定第一指令为符号位扩展指令movsxd r3,r2,所述符号位扩展指令表示将r2中存储的数据进行符号位扩展后存储于r3中;其中,r3为第一指令的目的架构寄存器,r2为第一指令的源架构寄存器;
译码单元对符号位扩展指令设置符号位扩展标记,并在分发单元进行分发时,通过使用新增硬件数据通路将符号位扩展标记一并传输至重命名单元。
重命名单元接收到第一指令之后,根据符号位扩展标记,识别出第一指令为符号位扩展指令,此时,重命名单元在寄存器重命名表中,不再为第一指令的目的架构寄存器获取新的物理寄存器以建立映射关系,而是复用第一指令即符号位扩展指令:movsxd r3,r2中,源架构寄存器r2对应的第一物理寄存器,建立与符号位扩展指令的目的架构寄存器r3之间的映射关系,并同时在映射关系中增加符号位扩展标记的表项。
建立好映射关系之后,将符号位扩展指令设置为执行完成状态,从而可以在指令执行阶段不需要执行符号位扩展指令。
当获取到第二指令add r1,r1,r3,表示计算r1中的数据与r3中的数据和,并将数据和存储于r3中,其中,r3表示第二指令的源架构寄存器,r1表示第二指令的目的架构寄存器,确定第二指令的源架构寄存器r3和上述符号位扩展指令的目的架构寄存器r3一致时,则说明第二指令与第一指令具有相关性。
基于前述建立好的第一指令的映射关系,在执行第二指令时,从第一物理寄存器中获取存储的源操作数据,由于第一指令在建立好映射关系后,设置为执行完成状态,因此,此时获取到的源操作数据是未经过符号位扩展的数据,是不能够直接用于第二指令的执行的,进一步的,根据映射关系中的符号位扩展标记,对获取到的源操作数据进行符号位扩展操作,得到符号位扩展后的源操作数据。
根据符号位扩展后的源操作数据,执行所述第二指令。
可以看出,本申请实施例可以避免符号位扩展指令在指令执行阶段的执行,从而避免执行较大占比的符号位扩展指令而对处理器的指令处理性能带来的影响,提升处理器指令处理的效率和性能;并且,本申请实施例可以保障后续依赖符号位扩展指令的第二指令能够顺利执行,因此本申请实施例能够提升处理器处理指令的效率,提高处理器的性能。
本申请实施例还提供一种处理器,可以认为是执行上述实施例所述的指令处理方法的一可选架构。
可选地,所述处理器可以结合图2参考图8,图8是本申请实施例所提供的处理器的架构示意图。
如图所示,该处理器可以包括:
重命名单元204,用于获取译码后的第一指令;如果检测所述第一指令为符号位扩展指令,在寄存器重命名表中,为所述第一指令的目的架构寄存器与第一物理寄存器建立映射关系,所述第一物理寄存器为所述第一指令的源架构寄存器对应的物理寄存器;以及,在建立所述映射关系后,将所述第一指令设置为执行完成状态;
符号位扩展单元300,用于获取译码后的第二指令,所述第二指令的源架构寄存器包括第一指令的目的架构寄存器;基于所述映射关系,从所述第一物理寄存器中获取所述第二指令的源操作数据,并对所述源操作数据执行符号位扩展操作,得到符号位扩展后的源操作数据;
指令执行单元205,用于根据符号位扩展后的源操作数据,执行所述第二指令。
在一种实施方式中,所述重命名单元204,用于检测所述第一指令为符号位扩展指令,包括:
检测译码后的第一指令是否携带符号位扩展标记;如果所述第一指令携带符号位扩展标记,则确定所述第一指令为符号位扩展指令;
其中,指令在译码阶段如果被识别为符号位扩展指令,则译码后的指令设置有符号位扩展标记。
在一种实施方式中,所述重命名单元204,用于在寄存器重命名表中,为所述第一指令的目的架构寄存器与第一物理寄存器建立映射关系,包括:
在寄存器重命名表新建第一重名表项,在所述第一重名表项中记录所述第一指令的目的架构寄存器与第一物理寄存器的映射关系,并在所述第一重名表项中设置符号位扩展标记。
在一种实施方式中,所述符号位扩展单元300,用于基于所述映射关系,从所述第一物理寄存器中获取所述第二指令的源操作数据,并对所述源操作数据执行符号位扩展操作,得到符号位扩展后的源操作数据,包括:
基于所述第二指令的源架构寄存器包括第一指令的目的架构寄存器,以及所述第一重名表项记录的映射关系,确定所述第二指令的源操作数据存储在所述第一物理寄存器中,并从所确定的第一物理寄存器中,读取所述第二指令的源操作数据;
以及,基于所述第一重名表项中设置的符号位扩展标记,对所读取的所述第二指令的源操作数据进行符号位扩展操作,得到符号位扩展后的源操作数据。
在一种实施方式中,所述符号位扩展单元300,用于对所读取的所述第二指令的源操作数据进行符号位扩展操作,得到符号位扩展后的源操作数据,包括:
检测所述源操作数据的符号位数值;
如果所述源操作数据的符号位数值为1,在所述源操作数据的高位补1,以使得高位补1后的源操作数据的位数与目标位相对应;
如果所述源操作数据的符号位数值为0,在所述源操作数据的高位补0,以使得高位补0后的源操作数据的位数与目标位相对应。
在一种实施方式中,所述处理器在第一指令的原始硬件数据通路的基础上,设置有新增数据通路,所述新增数据通路用于存储所述符号位扩展标记。可选实现方式可以为:确定所述第一指令的原始硬件数据通路;在所述原始硬件数据通路的基础上,设置新增硬件数据通路,所述新增硬件数据通路用于存储所述符号位扩展标记。
在一种实施方式中,所述重命名单元204,还用于:
如果检测所述第一指令为非符号位扩展指令,确定空闲物理寄存器,并在寄存器重命名表中,为所述非符号位扩展指令的目的架构寄存器和空闲的物理寄存器建立映射关系。
在一种实施方式中,所述处理器还可以包括:
提交单元206,用于在指令提交阶段,对设置为执行完成状态的第一指令,执行按序提交操作。
可以看出,本申请实施例所提供的处理器中,在对第一指令建立映射关系后,直接将第一指令设置为执行完成状态,从而在对第一指令进行重命名的过程中,不需要执行第一指令的源架构寄存器对应的第一物理寄存器中,存储的源操作数据的符号位扩展操作,而是在后续获取到译码后的第二指令时,由于第二指令的源架构寄存器包括第一指令的目的架构寄存器,因此可以直接根据寄存器重命名表中建立好的映射关系,从第一物理寄存器中获取第二指令的源操作数据,然后在此时对未进行符号位扩展的源操作数据进行符号位扩展操作,得到符号位扩展后的源操作数据,并完成第二指令。这样,可以避免在对第一指令建立映射关系的同时执行符号位扩展操作,且由于第二指令的源架构寄存器包括第一指令的目的架构寄存器,因此可以在执行第二指令的时候,再执行符号位扩展操作,方便对第一指令的处理的同时不会影响后续第二指令的执行,从而可以提升指令处理的整体效率,提高处理器的性能。
本申请实施例还提供一种芯片,包括如前述任一项实施例所述的处理器。
本申请实施例还提供一种计算机设备,包括如上述所述的芯片。
虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。

Claims (18)

1.一种指令处理方法,其特征在于,包括:
获取译码后的第一指令;
如果检测所述第一指令为符号位扩展指令,在寄存器重命名表中,为所述第一指令的目的架构寄存器与第一物理寄存器建立映射关系,所述第一物理寄存器为所述第一指令的源架构寄存器对应的物理寄存器;以及,在建立所述映射关系后,将所述第一指令设置为执行完成状态;其中,所述符号位扩展指令用于对符号位拓展指令的源操作数据进行符号位扩展;
获取译码后的第二指令,所述第二指令的源架构寄存器包括第一指令的目的架构寄存器;
基于所述映射关系,从所述第一物理寄存器中获取所述第二指令的源操作数据,并对所述源操作数据执行符号位扩展操作,得到符号位扩展后的源操作数据;
根据符号位扩展后的源操作数据,执行所述第二指令。
2.如权利要求1所述的指令处理方法,其特征在于,所述检测所述第一指令为符号位扩展指令,包括:
检测译码后的第一指令是否携带符号位扩展标记;如果所述第一指令携带符号位扩展标记,则确定所述第一指令为符号位扩展指令;
其中,指令在译码阶段如果被识别为符号位扩展指令,则译码后的指令设置有符号位扩展标记。
3.如权利要求2所述的指令处理方法,其特征在于,所述在寄存器重命名表中,为所述第一指令的目的架构寄存器与第一物理寄存器建立映射关系,包括:
在寄存器重命名表新建第一重命名表项,在所述第一重命名表项中记录所述第一指令的目的架构寄存器与第一物理寄存器的映射关系,并在所述第一重命名表项中设置符号位扩展标记。
4.如权利要求3所述的指令处理方法,其特征在于,所述基于所述映射关系,从所述第一物理寄存器中获取所述第二指令的源操作数据,并对所述源操作数据执行符号位扩展操作,得到符号位扩展后的源操作数据,包括:
基于所述第二指令的源架构寄存器包括第一指令的目的架构寄存器,以及所述第一重命名表项记录的映射关系,确定所述第二指令的源操作数据存储在所述第一物理寄存器中,并从所确定的第一物理寄存器中,读取所述第二指令的源操作数据;
以及,基于所述第一重命名表项中设置的符号位扩展标记,对所读取的所述第二指令的源操作数据进行符号位扩展操作,得到符号位扩展后的源操作数据。
5.如权利要求4所述的指令处理方法,其特征在于,所述对所读取的所述第二指令的源操作数据进行符号位扩展操作,得到符号位扩展后的源操作数据,包括:
检测所述源操作数据的符号位数值;
如果所述源操作数据的符号位数值为1,在所述源操作数据的高位补1,以使得高位补1后的源操作数据的位数与目标位相对应;
如果所述源操作数据的符号位数值为0,在所述源操作数据的高位补0,以使得高位补0后的源操作数据的位数与目标位相对应。
6.如权利要求2所述的指令处理方法,其特征在于,还包括:
确定所述第一指令的原始硬件数据通路;
在所述原始硬件数据通路的基础上,设置新增硬件数据通路,所述新增硬件数据通路用于存储所述符号位扩展标记。
7.如权利要求1所述的指令处理方法,其特征在于,还包括:
如果检测所述第一指令为非符号位扩展指令,确定空闲物理寄存器,并在寄存器重命名表中,为所述非符号位扩展指令的目的架构寄存器和空闲物理寄存器建立映射关系。
8.如权利要求1所述的指令处理方法,其特征在于,还包括:
在指令提交阶段,对设置为执行完成状态的第一指令,执行按序提交操作。
9.一种处理器,其特征在于,包括:
重命名单元,用于获取译码后的第一指令;如果检测所述第一指令为符号位扩展指令,在寄存器重命名表中,为所述第一指令的目的架构寄存器与第一物理寄存器建立映射关系,所述第一物理寄存器为所述第一指令的源架构寄存器对应的物理寄存器;以及,在建立所述映射关系后,将所述第一指令设置为执行完成状态;其中,所述符号位扩展指令用于对符号位拓展指令的源操作数据进行符号位扩展;
符号位扩展单元,用于获取译码后的第二指令,所述第二指令的源架构寄存器包括第一指令的目的架构寄存器;基于所述映射关系,从所述第一物理寄存器中获取所述第二指令的源操作数据,并对所述源操作数据执行符号位扩展操作,得到符号位扩展后的源操作数据;
指令执行单元,用于根据符号位扩展后的源操作数据,执行所述第二指令。
10.如权利要求9所述的处理器,其特征在于,所述重命名单元,用于检测所述第一指令为符号位扩展指令,包括:
检测译码后的第一指令是否携带符号位扩展标记;如果所述第一指令携带符号位扩展标记,则确定所述第一指令为符号位扩展指令;
其中,指令在译码阶段如果被识别为符号位扩展指令,则译码后的指令设置有符号位扩展标记。
11.如权利要求10所述的处理器,其特征在于,所述重命名单元,用于在寄存器重命名表中,为所述第一指令的目的架构寄存器与第一物理寄存器建立映射关系,包括:
在寄存器重命名表新建第一重名表项,在所述第一重名表项中记录所述第一指令的目的架构寄存器与第一物理寄存器的映射关系,并在所述第一重名表项中设置符号位扩展标记。
12.如权利要求11所述的处理器,其特征在于,所述符号位扩展单元,用于基于所述映射关系,从所述第一物理寄存器中获取所述第二指令的源操作数据,并对所述源操作数据执行符号位扩展操作,得到符号位扩展后的源操作数据,包括:
基于所述第二指令的源架构寄存器包括第一指令的目的架构寄存器,以及所述第一重名表项记录的映射关系,确定所述第二指令的源操作数据存储在所述第一物理寄存器中,并从所确定的第一物理寄存器中,读取所述第二指令的源操作数据;
以及,基于所述第一重名表项中设置的符号位扩展标记,对所读取的所述第二指令的源操作数据进行符号位扩展操作,得到符号位扩展后的源操作数据。
13.如权利要求12所述的处理器,其特征在于,所述符号位扩展单元,用于对所读取的所述第二指令的源操作数据进行符号位扩展操作,得到符号位扩展后的源操作数据,包括:
检测所述源操作数据的符号位数值;
如果所述源操作数据的符号位数值为1,在所述源操作数据的高位补1,以使得高位补1后的源操作数据的位数与目标位相对应;
如果所述源操作数据的符号位数值为0,在所述源操作数据的高位补0,以使得高位补0后的源操作数据的位数与目标位相对应。
14.如权利要求10所述的处理器,其特征在于,所述处理器在第一指令的原始硬件数据通路的基础上,设置有新增数据通路,所述新增数据通路用于存储所述符号位扩展标记。
15.如权利要求9所述的处理器,其特征在于,所述重命名单元,还用于:
如果检测所述第一指令为非符号位扩展指令,确定空闲物理寄存器,并在寄存器重命名表中,为所述非符号位扩展指令的目的架构寄存器和空闲物理寄存器建立映射关系。
16.如权利要求9所述的处理器,其特征在于,还包括:
提交单元,用于在指令提交阶段,对设置为执行完成状态的第一指令,执行按序提交操作。
17.一种芯片,其特征在于,包括如权利要求9-16任一项所述的处理器。
18.一种计算机设备,其特征在于,包括如权利要求17所述的芯片。
CN202211623135.4A 2022-12-16 2022-12-16 指令处理方法、处理器、芯片及计算机设备 Active CN116501385B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211623135.4A CN116501385B (zh) 2022-12-16 2022-12-16 指令处理方法、处理器、芯片及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211623135.4A CN116501385B (zh) 2022-12-16 2022-12-16 指令处理方法、处理器、芯片及计算机设备

Publications (2)

Publication Number Publication Date
CN116501385A CN116501385A (zh) 2023-07-28
CN116501385B true CN116501385B (zh) 2024-04-09

Family

ID=87323675

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211623135.4A Active CN116501385B (zh) 2022-12-16 2022-12-16 指令处理方法、处理器、芯片及计算机设备

Country Status (1)

Country Link
CN (1) CN116501385B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106990941A (zh) * 2015-12-24 2017-07-28 Arm 有限公司 使用寄存器重命名处理移动指令
CN109947471A (zh) * 2017-12-21 2019-06-28 英特尔公司 用于将多组紧缩字节相乘、求和以及累加的装置和方法
CN114579312A (zh) * 2022-03-04 2022-06-03 海光信息技术股份有限公司 一种指令处理方法、处理器、芯片和电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10558462B2 (en) * 2018-05-23 2020-02-11 Arm Limited Apparatus and method for storing source operands for operations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106990941A (zh) * 2015-12-24 2017-07-28 Arm 有限公司 使用寄存器重命名处理移动指令
CN109947471A (zh) * 2017-12-21 2019-06-28 英特尔公司 用于将多组紧缩字节相乘、求和以及累加的装置和方法
CN114579312A (zh) * 2022-03-04 2022-06-03 海光信息技术股份有限公司 一种指令处理方法、处理器、芯片和电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于基地址寄存器映射的数据缓存研究;沈秀红;赵朝君;孟建熠;项晓燕;;计算机工程;20130515(第05期);79-83 *

Also Published As

Publication number Publication date
CN116501385A (zh) 2023-07-28

Similar Documents

Publication Publication Date Title
US10649746B2 (en) Instruction and logic to perform dynamic binary translation
US9262161B2 (en) Tracking multiple conditions in a general purpose register and instruction therefor
US9424037B2 (en) Instructions and functions for evaluating program defined conditions
KR100616722B1 (ko) 수퍼스칼라프로세서내의파이프라인명령디스패치유닛
KR101655713B1 (ko) 이동 제거 연산들에서의 플래그 트래킹을 위한 시스템들 및 방법들
US9354874B2 (en) Scalable decode-time instruction sequence optimization of dependent instructions
US10430191B2 (en) Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture to enable speculative execution and avoid data corruption
Shen Using term rewriting systems to design and verify processors
CN114579312A (zh) 一种指令处理方法、处理器、芯片和电子设备
US20150227371A1 (en) Processors with Support for Compact Branch Instructions & Methods
JPH09152973A (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
CN108027736B (zh) 使用通过对物理寄存器预分配的乱序重命名的运行时代码并行化
US6704861B1 (en) Mechanism for executing computer instructions in parallel
CN116501385B (zh) 指令处理方法、处理器、芯片及计算机设备
US6959377B2 (en) Method and system for managing registers
KR20240025019A (ko) 니어 메모리 컴퓨팅을 사용한 복합 연산에 대한 원자성 제공
CN114968364B (zh) 一种条件语句的处理方法、装置及存储介质
US11775297B2 (en) Transaction nesting depth testing instruction
Shah et al. SPSIM: SuperScalar Processor SIMulater CS305 Project Report
CN114217856A (zh) 面向AArch64架构的CPU指令微基准测试方法及系统
CN115080121A (zh) 指令处理方法、装置、电子设备及计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant