CN117931293A - 指令处理方法、装置、设备及存储介质 - Google Patents

指令处理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN117931293A
CN117931293A CN202410331306.9A CN202410331306A CN117931293A CN 117931293 A CN117931293 A CN 117931293A CN 202410331306 A CN202410331306 A CN 202410331306A CN 117931293 A CN117931293 A CN 117931293A
Authority
CN
China
Prior art keywords
instruction
decoded
queue
register
target
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.)
Pending
Application number
CN202410331306.9A
Other languages
English (en)
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.)
Shin Lai Zhirong Semiconductor Technology Shanghai Co ltd
Original Assignee
Shin Lai Zhirong Semiconductor Technology Shanghai 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 Shin Lai Zhirong Semiconductor Technology Shanghai Co ltd filed Critical Shin Lai Zhirong Semiconductor Technology Shanghai Co ltd
Priority to CN202410331306.9A priority Critical patent/CN117931293A/zh
Publication of CN117931293A publication Critical patent/CN117931293A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

本申请实施例中提供了一种操作指令处理方法、装置、设备及存储介质,涉及计算机技术领域,该方法包括:获取多个待执行指令数据;对所述多个待执行指令数据进行切分处理,得到多个目标指令;对所述目标指令进行缓存、预解码处理,得到预解码后的指令,并将所述预解码后的指令放置至寄存器中;对所述预解码后的指令进行解码、物理寄存器重命名、标签分配和分类存储至相应的指令队列;将所述指令队列进行缓存、指令异常检测、操作数缓存和执行指令处理,得到指令结果并将所述指令结果进行写回处理。该方案能够减少WAW和WAR数据相关性导致的依赖关系,从而降低了流水线中常见的因等待指令操作数而产生的卡顿,缩短了指令执行时间,提高了指令执行效率。

Description

指令处理方法、装置、设备及存储介质
技术领域
本申请涉及计算机技术领域,具体地,涉及一种指令处理方法、装置、设备及存储介质。
背景技术
随着计算机设备的快速发展,中央处理器(CPU,Central Processing Unit)作为一台计算机设备的运算和控制核心,其功能主要是完成对计算机指令的执行和对数据的处理,在计算复杂度不断增大的过程中,CPU的性能也变得越来越重要。其中,计算机设备上运行的计算机程序的本质是指令的执行过程,为了提高计算机设备中CPU的工作效率和性能,如何对计算机指令进行处理的研究显得尤为重要。
目前,相关技术中采用经典的五级流水线的处理器架构,该架构中每级流水线依次包含IF、ID、EX、MEM和WB共五个指令处理单元,因此每级流水线用于处理一条指令执行过程中的不同任务。然而,该方案只有一条流水线,因此单周期内只能执行一条指令,处理器性能有限,并且由于只有一条流水线,当某些运算指令执行时,其参与运算的数据与之前指令具有数据相关性,造成该指令执行需要等待之前指令执行完成,造成流水线卡顿,且执行时间过长,导致指令处理效率较低。
发明内容
本申请实施例中提供了一种指令处理方法、装置、设备及存储介质。
本申请实施例的第一个方面,提供了一种操作指令处理方法,包括:
获取多个待执行指令数据;
对所述多个待执行指令数据进行切分处理,得到多个目标指令码;
对所述目标指令进行缓存、预解码处理,得到预解码后的指令信息,并将所述预解码后的指令放置至寄存器中;
对所述预解码后的指令进行解码、物理寄存器重命名、标签分配和存储处理至指令队列;
将所述指令队列进行缓存、指令异常检测、操作数缓存和指令执行处理,得到指令结果并将所述指令结果进行写回处理。
在本申请一个可选的实施例中,将所述预解码后的指令放置至寄存器中,包括:
将所述预解码后的指令放置至与执行模块接口对应的指令寄存器中;
并将所述预解码后的指令对应的程序放置至与执行模块接口对应的程序寄存器中。
在本申请一个可选的实施例中,对所述预解码后的指令进行解码、物理寄存器重命名、标签分配和分类存储至相应的指令队列,包括:
对所述预解码后的指令进行解码处理,得到解码后的指令信息;
基于物理寄存器列表,对所述解码后的指令信息建立寄存器重命名映射关系并存储至计分板,并基于标签队列,为所述解码后的指令信息分配目标标签;
将所述解码后的指令信息按照指令功能进行分类处理,得到指令类型;
将所述解码后的指令信息存储至与所述指令类型对应的指令队列。
在本申请一个可选的实施例中,基于物理寄存器列表,对所述解码后的指令信息建立寄存器重命名映射关系并存储至计分板,并基于标签队列,为所述解码后的指令信息分配目标标签,包括:
从所述物理寄存器列表中查找处于空闲状态的目标物理寄存器;
根据所述目标物理寄存器,对所述解码后的指令信息进行寄存器重命名处理,建立所述目标物理寄存器与所述解码后的指令信息之间的寄存器重命名映射关系并存储至计分板;
从所述标签队列中查找处于处于未使用状态的目标标签;
根据所述目标标签,为所述解码后的指令信息分配所述目标标签。
在本申请一个可选的实施例中,将所述指令队列缓存、指令异常检测、操作数缓存和执行指令处理,得到指令结果并将所述指令结果进行写回处理,包括:
将所述指令队列进行缓存处理;
将所述指令队列的操作数进行缓存处理;
检测所述指令队列中的指令信息是否出现异常,得到异常检测结果;所述异常检测结果用于表征所述指令信息是否出现异常;
当所述异常检测结果用于表征所述指令信息未出现异常时,执行所述指令队列中的指令信息,得到指令结果并将所述指令结果进行写回至所述目标物理寄存器。
在本申请一个可选的实施例中,在检测所述指令队列中的指令信息是否出现异常,得到异常检测结果之后,所述方法还包括:
当所述异常检测结果用于表征所述指令信息出现异常时,确定异常指令信息并生成异常信号;
将所述异常信号进行广播,停止对所述异常指令信息的交付、执行和写回操作。
在本申请一个可选的实施例中,在执行所述指令队列中的指令信息之前,所述方法还包括:
获取包括所述操作数的指令信息;
对所述包括所述操作数的指令信息进行交付处理。
本申请实施例的第二个方面,提供了一种指令处理装置,包括:
依次连接的第一取指单元、第二取指单元、第三取指单元、第四取指单元、第五取指单元,第一执行单元、第二执行单元、第三执行单元和第四执行单元;
所述第一取指单元,用于获取多个待执行指令数据;
所述第二取指单元,用于对所述多个待执行指令数据进行切分处理,得到目标指令;
所述第三取指单元,用于对所述目标指令进行缓存处理;
所述第四取指单元,用于对所述目标指令进行预解码处理,得到预解码后的指令;
所述第五取指单元,用于对并将所述预解码后的指令放置至寄存器中;
所述第一执行单元,用于对所述预解码后的指令进行解码、物理寄存器重命名、标签分配和分类存储至相应的指令队列;所述第二执行单元,用于将所述指令队列进行缓存处理,所述第三执行单元,用于进行指令异常检测和操作数缓存处理,所述第四执行单元用于指令执行处理,得到指令结果并将所述指令结果进行写回处理。
本申请实施例的第三个方面,提供了一种计算机设备,包括:包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现如上任一项方法的步骤。
本申请实施例的第四个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,计算机程序被处理器执行时实现如上任一项的方法的步骤。
本申请实施例中通过获取多个待执行指令数据,并对多个待执行指令数据进行切分处理,得到多个目标指令,然后对目标指令进行缓存、预解码处理,得到预解码后的指令,并将预解码后的指令放置至寄存器中,并对预解码后的指令进行解码、物理寄存器重命名、标签分配和分类存储至相应的指令队列,最后将指令队列进行缓存、指令异常检测、操作数缓存和执行指令处理,得到指令结果并将指令结果进行写回处理。本申请中的技术方案一方面,通过对获取的待执行指令数据切分处理,得到多个目标指令,以在后续对多个指令进行并行处理,能够采用指令多发射的结构,在单周期内处理更多的指令,通过对目标指令进行缓存、预解码处理,得到解码后的指令,并将预解码后的指令放置至寄存器中,能够极大地减少WAW和WAR数据相关性导致的依赖关系,从而降低了流水线中常见的因等待指令操作数而产生的卡顿。另一方面,通过对预解码后的指令进行解码、物理寄存器重命名、标签分配和存储处理至指令队列,以及将指令队列进行缓存、指令异常检测、操作数缓存和执行指令处理,得到指令结果并写回指令结果,能够采用九级流水线,使得碎片化的指令任务均匀的分布在各个不同的流水线级,不会出现单级流水线任务量过重而限制工作频率的情况,缩短了执行时间,提高了数据处理效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请提供的现有技术中经典五级流水线的结构图;
图2为本申请一个实施例提供的计算机设备的应用场景示意图;
图3为本申请一个实施例提供的操作指令处理方法的流程图;
图4为本申请一个实施例提供的对预解码后的指令进行解码、物理寄存器重命名、标签分配和存储处理至指令队列方法的流程图;
图5为本申请一个实施例提供的处理器的结构示意图。
具体实施方式
在实现本申请的过程中,发明人发现,目前在进行指令执行需要等待之前指令执行完成,造成流水线卡顿,且执行时间过长,导致数据处理效率较低。
可以理解的是,请参见图1所示,相关技术的处理器CPU采用流水线技术,例如经典的五级流水线。每级流水线依次包含IF、ID、EX、MEM和WB共五个指令处理单元。其中,IF单元用于负责从存储器中读取指令,ID单元用于负责指令的解码,即识别指令类型,获取指令相关信息,EX单元用于负责指令的执行,得到运算结果,MEM单元用于存储器访问操作,可以是从内部或者外部存储器中读取数据,或者将指令结果写入存储器里,WB单元用于指令执行的结果写入处理器的寄存器堆里,方便下次快速取用。其中,也可以是采用四级流水线(例如有些流水线不需要WB单元,或者有些流水线不需要MEM单元)。
然而,该方案由于只有一条流水线,因此单周期内最多只能执行一条指令,使得处理器性能极其有限;并且该流水线的级数有限,导致每一级流水线都有大量的组合逻辑电路执行相关操作,使得单级流水线处理任务过重;并且由于只有一条流水线,当某些运算指令执行时,其参与运算的数据恰好是之前指令的运算结果,将其称为数据相关性,然而该指令在执行时需要等待之前指令执行完成,否则就必须等待,在指令等待过程中就会造成流水线卡顿,这种卡顿可以称为空泡,且执行时间过长,导致数据处理效率较低。
针对上述问题,本申请实施例中提供了处理器处理方法、装置、设备及存储介质,通过对获取的待执行指令数据切分处理,得到多个目标指令,以在后续对多个指令进行并行处理,能够采用指令多发射的结构,在单周期内处理更多的指令,通过对目标指令进行缓存、预解码处理,得到解码后的指令,并将预解码后的指令放置至寄存器中,能够极大地减少WAW和WAR数据相关性导致的依赖关系,从而降低了流水线中常见的因等待指令操作数而产生的卡顿。另一方面,通过对预解码后的指令进行解码、物理寄存器重命名、标签分配和分类存储至相应的指令队列,以及将指令队列进行缓存、指令异常检测、操作数缓存和执行指令处理,得到指令结果并写回指令结果,能够采用九级流水线,使得碎片化的指令任务均匀的分布在各个不同的流水线级,不会出现单级流水线任务量过重而限制工作频率的情况,缩短了执行时间,提高了数据处理效率。
本申请实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。
为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
以下对本申请实施例提供的操作指令处理方法的应用环境作简要说明:
请参见图2,本申请实施例提供的一例计算机设备的结构示意图。该计算机设备可以是终端。如图2所示,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质例如可以为磁盘。非易失性存储介质中存储有文件(可以为待处理的文件,也可以为处理后的文件)、操作系统和计算机程序等。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种操作指令处理方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
请参见图3,以下实施例以上述计算机设备为执行主体,将本申请实施例提供的操作指令处理方法应用于上述计算机设备来进行指令处理为例进行具体说明。本申请实施例提供的操作指令处理方法包括如下步骤201-步骤205:
步骤201、获取多个待执行指令数据。
需要说明的是,上述待执行指令数据是需要进行处理的指令数据,该待执行指令数据可以是从存储器中获取的,该待执行指令数据是原始的未进行切分处理的数据,例如可以是一整段指令数据,其包括多个指令数据,该多个指令数据可以是不同指令类型的指令数据,也可以是相同指令类型的指令数据。
可选的,在获取到多个待执行指令数据的过程中,该待执行指令数据可以是通过云端下载获取的,也可以是其他外部设备导入的,还可以是通过数据库或区块链上获取的,本实施例对此不作限定。
步骤202、对多个待执行指令数据进行切分处理,得到多个目标指令。
在获取到多个待执行指令数据之后,可以对待执行指令数据进行指令对齐处理,按照预设的指令长度对多个待执行指令数据进行切分处理,得到多个目标指令。预设的指令长度可以是根据实际指令数据进行整理得到的,可以自定义设置。
其中,上述目标指令为完整的指令数据,每个目标指令对应有一种指令类型,例如可以为运算指令、跳转指令或访存指令等。该目标指令数量可以有三个,或四个,也可以是其他任意数量个。
本实施例中通过对多个待执行指令数据进行切分处理,能够精准地获取到多个目标指令,提高了指令获取的准确度。
步骤203、对目标指令进行缓存、预解码处理,得到预解码后的指令,并将预解码后的指令放置至寄存器中。
需要说明的是,上述预解码后的指令为经过预解码处理后的指令。
具体地,在获取到目标指令后,可以从目标指令中确定出有效指令,然后对有效指令进行缓存处理,防止时序恶化,在经过缓存处理之后,可以对目标指令进行预解码处理,得到预解码后的指令。
在获取到预解码后的指令后,在每个时钟周期,可以将预解码后的指令,放置于与执行模块(EXU模块)接口的指令寄存器中(IR,Instruction Register)中,并将这些指令的PC值也会被放置于和EXU模块接口的PC寄存器中。执行模块(EXU模块)会使用IR和PC进行后续的执行操作。
本步骤中通过对目标指令进行预解码处理,得到预解码后的指令,能够为后续分支跳转指令预测提供数据指导信息。
步骤204、对预解码后的指令进行解码、物理寄存器重命名、标签分配和分类存储至相应的指令队列。
步骤205、将指令队列进行缓存、指令异常检测、操作数缓存和执行指令处理,得到指令结果并将指令结果进行写回处理。
在获取到预解码后的指令后,可以对预解码后的指令进行解码处理,得到解码后的指令信息,并进行物理寄存器重命名,建立物理寄存器与解码后的指令信息之间的映射关系,然后为解码后的指令信息进行标签分配,以分配唯一对应的标签(itag),并确定该解码后的指令信息的指令类型,根据指令类型将解码后的信息存储至指令队列中。
在将解码后的信息存储至指令队列之后,可以对指令队列进行缓存处理,然后对指令队列中的指令信息进行指令异常检测处理,查找出有效指令信息,并对有效指令信息进行操作数缓存,进而执行该指令信息,得到指令结果并将指令结果进行写回至物理寄存器中。
本申请实施例中通过获取多个待执行指令数据,并对多个待执行指令数据进行切分处理,得到多个目标指令,然后对目标指令进行缓存、预解码处理,得到预解码后的指令,并将预解码后的指令放置至寄存器中,并对预解码后的指令进行解码、物理寄存器重命名、标签分配和分类存储至相应的指令队列,最后将指令队列进行缓存、指令异常检测、操作数缓存和执行指令处理,得到指令结果并将指令结果进行写回处理。本申请中的技术方案一方面,通过对获取的待执行指令数据切分处理,得到多个目标指令,以在后续对多个指令进行并行处理,能够采用指令多发射的结构,在单周期内处理更多的指令,通过对目标指令进行缓存、预解码处理,得到解码后的指令,并将预解码后的指令放置至寄存器中,能够极大地减少WAW和WAR数据相关性导致的依赖关系,从而降低了流水线中常见的因等待指令操作数而产生的卡顿。另一方面,通过对预解码后的指令进行解码、物理寄存器重命名、标签分配和分类存储至相应的指令队列,以及将指令队列进行缓存、指令异常检测、操作数缓存和执行指令处理,得到指令结果并写回指令结果,能够采用九级流水线,使得碎片化的指令任务均匀的分布在各个不同的流水线级,不会出现单级流水线任务量过重而限制工作频率的情况,缩短了执行时间,提高了数据处理效率。
在本申请一个可选实施例中,上述将预解码后的指令放置至寄存器中,可以包括如下方法步骤:
将预解码后的指令放置至与执行模块接口对应的指令寄存器中。并将预解码后的指令对应的程序放置至与执行模块接口对应的程序寄存器中。
示例性地,当获取的预解码后的指令为四个时,可以将该四个预解码后的指令放置于与执行模块接口对应的指令寄存器(IR)中,用于保存当前正在执行的一条指令,并将预解码后的指令对应的程序(PC)放置至与执行模块接口对应的程序PC寄存器中,以存放指令的地址。
需要说明的是,程序寄存器又称PC寄存器,用于存放指令的地址,为了保证程序(在操作系统中理解为进程)能够连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址。当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称为“取指令”。与此同时,PC中的地址或自自动加1或由转移指针给出下一条指令的地址,此后经过分析指令,执行指令,完成第一条指令的执行,而后根据PC取出第二条指令的地址,如此循环,执行每一条指令。
指令寄存器用于保存当前正在执行的一条指令,是是临时放置从内存里面取得的程序指令的寄存器,用于存放当前从主存储器读出的正在执行的一条指令。当执行一条指令时,先把它从内存取到数据寄存器(DR,Data Register)中,然后再传送至IR(指令寄存器)。指令划分为操作码和地址码字段,由二进制数字组成。为了执行任何给定的指令,必须对操作码进行测试,以便识别所要求的操作。指令译码器就是做这项工作的。指令寄存器中操作码字段的输出就是指令译码器的输入。操作码一经译码后,即可向操作控制器发出具体操作的特定信号。
本实施例中通过将预解码后的指令放置至与执行模块接口对应的指令寄存器中,并将预解码后的指令对应的程序放置至与执行模块接口对应的程序寄存器中,由于获取多个待执行指令数据,能够采用指令多发射的结构,在单周期内处理更多的指令。
在本申请一个可选实施例中,请参见图4所示,上述步骤S204、对预解码后的指令进行解码、物理寄存器重命名、标签分配和分类存储至相应的指令队列,包括如下方法步骤:
步骤301、对预解码后的指令进行解码处理,得到解码后的指令信息。
步骤302、基于物理寄存器列表,对解码后的指令信息建立寄存器重命名映射关系并存储至计分板,并基于标签队列,为解码后的指令信息分配目标标签。
步骤303、将解码后的指令信息按照指令功能进行分类处理,得到指令类型。
步骤304、将解码后的指令信息存储至与指令类型对应的指令队列。
可以理解的是,上述解码后的指令信息为进行解码处理后的指令信息。物理寄存器列表可以是预先根据实际需求自定义建立的列表,可以包括多个物理寄存器和每个物理寄存器的属性信息,该物理寄存器的属性信息可以包括物理寄存器标识、物理寄存器状态信息。其中,物理寄存器标识用于唯一表征物理寄存器的身份信息,物理寄存器状态信息用于表征物理寄存器当前的状态信息,可以为使用状态和空闲状态。计分板用于记录寄存器重命名映射关系,该寄存器重命名映射关系用于表征物理寄存器与解码后的指令信息之间的对应关系。每个指令信息对应有一种指令类型,该指令类型可以是运算类型、访存类型和跳转类型等。目标标签为标签队列中处于未使用状态的标签。
以解码后的指令信息为四条为例,在将四条解码后的指令信息放置于EXU模块接口的指令寄存器(IR)中。这些指令的PC也会放置于和EXU模块接口的PC寄存器后,然后对四条预解码后的指令进行全部解码处理,得到解码后的指令信息,例如可以采用与编码算法对应的解码算法,然后从物理寄存器列表中查找到空闲的目标物理寄存器,并建立目标物理寄存器与四条解码后的指令信息之间的寄存器重命名映射关系,进而将该寄存器重命名映射关系存储至计分板,并从标签队列中查找出未使用的标签,然后为解码后的指令信息分配目标标签。最后将解码后的指令信息,按指令功能进行分类处理,可以分为通用运算指令、跳转指令和访存指令,然后根据指令类型,将该解码后的指令信息派遣给指令队列模块(IQ)。
可选的,每个指令队列都是按照顺序进入,但是根据指令类型的不同,存在两种出队列情况,分别包括顺序出队列和乱序出队列两种情况。当指令类型对应的指令信息支持顺序出队列时,则指令出队列的顺序必须与指令进队列的顺序保持一致。当指令类型对应的指令信息支持乱序出队列时,指令出队列的顺序不受限制,只要对应的指令队列缓存模块(IQBUF)可以接受该类型的指令,该指令便可以出指令队列。
本实施例中通过对预解码后的指令进行解码处理,得到解码后的指令信息,并基于物理寄存器列表,对解码后的指令信息建立寄存器重命名映射关系并存储至计分板,并基于标签队列,为解码后的指令信息分配目标标签,然后将解码后的指令信息按照指令功能进行分类处理,得到指令类型,将解码后的指令信息存储至与指令类型对应的指令队列,并且能够采用物理寄存器重命名、Replay机制和指令乱序交付特性,其中,通过设置物理寄存器重命名,能够极大地减少WAW数据和WAR数据相关性导致的依赖关系,从而降低了流水线中常见的因等待指令操作数而产生的卡顿,以及由于采用Replay机制能够对提前从指令队列出去的指令,如果在特定时间内,仍旧没有解除因数据相关性导致的依赖关系。该指令不会像现有技术中的经典流水线那样阻塞在执行单元,而是会回到指令队列中,等待依赖关系解除后继续执行,不会影响该执行单元,执行其他指令。并且由于支持指令乱序交付,指令在经过译码以后,当旧指令的操作数未准备就绪,新指令成功获取到操作数的情况下,新指令可以提前交付,减少了流水线卡顿。指令交付以后,本架构通过指令标签(itag)、计分板(scoreboard),来保证指令流的指令结果,不会因乱序交付而受到影响。通过乱序交付,减少了流水线卡顿,提高了处理器性能。并且采用多发射的架构,使得处理器可以在同一时刻,最多并行执行多条指令,高并发的微架构,可以显著地提高指令流的执行速度。
在本申请一个可选实施例中,上述步骤S302、基于物理寄存器列表,对解码后的指令信息建立寄存器重命名映射关系并存储至计分板,并基于标签队列,为解码后的指令信息分配目标标签,包括如下方法步骤:
从物理寄存器列表中查找处于空闲状态的目标物理寄存器;根据目标物理寄存器,对解码后的指令信息进行寄存器重命名处理,建立目标物理寄存器与解码后的指令信息之间的寄存器重命名映射关系并存储至计分板;从标签队列中查找处于处于未使用状态的目标标签;根据目标标签,为解码后的指令信息分配目标标签。
需要说明的是,上述解码后的执行信息可以包括指令类型和当前物理寄存器信息。目标标签为标签队列中处于未使用状态的标签。目标物理寄存器为物理寄存器列表中处于空闲状态的物理寄存器。
在对预解码后的指令进行解码处理,得到解码后的指令信息后,可以获取物理寄存器列表(physical regfile list),然后从物理寄存器列表(physical regfile list)中查找到处于空闲状态的目标物理寄存器,根据目标物理寄存器,该目标物理寄存器的数量可以为多个,并对解码后的指令信息进行寄存器重命名处理,建立目标物理寄存器与解码后的指令信息之间的寄存器重命名映射关系,并将该映射关系存储至计分板(scoreboard)。
上述标签队列中包括多个标签,每个标签对应的状态信息不同,有的标签已经被使用,有的标签未使用。可以获取标签队列(itag queue)中查找到处于未使用状态的目标标签,然后为解码后的指令信息分配目标标签。
示例性地,以预解码后的指令为四个为例,物理寄存器列表中包括六个物理寄存器,其物理寄存器标识分别为01、02、03、04、05、06。在对预解码后的指令进行解码处理,得到解码后的指令信息,该解码后的指令信息包括当前物理寄存器标识,然后从物理寄存器中查找到处于空闲状态的目标物理寄存器,例如其目标物理寄存器标识分别为01、02、03、04,然后对解码后的指令信息进行寄存器重命名处理,建立目标物理寄存器与解码后的指令信息之间的寄存器重命名映射关系,例如第一个指令信息对应的目标物理寄存器标识为01,第二个指令信息对应的目标物理寄存器标识为02,第三个指令信息对应的目标物理寄存器标识为03,第四个指令信息对应的目标物理寄存器标识为04。并将该寄存器重命名映射关系存储至计分板。
进一步地,可以获取标签队列中的所有标签,确定出处于未使用状态的目标标签,例如该目标标签对应的标签标识为0a、0b、0c、0d,可以为解码后的指令信息分配标签标识为0a、0b、0c、0d的目标标签(itag)。
本实施例中通过采用物理寄存器重命名,每次会从物理寄存器列表中找出空闲的寄存器,提供给指令来使用;指令使用的寄存器索引值与物理寄存器列表的映射关系,记录在计分板中;极大地减少WAW和WAR数据相关性导致的依赖关系,从而降低了流水线中常见的因等待指令操作数而产生的卡顿,并且由于将寄存器重命名映射关系记录至计分板,能够当遇到流水线被冲刷的情况时,可以通过计分板记录的信息来恢复现场。通过为解码后的指令信息分配目标标签,能够便于后续判断RAW依赖关系。
在本申请一个可选实施例中,上述将指令队列缓存、指令异常检测、操作数缓存和执行指令处理,得到指令结果并将所述指令结果进行写回处理,包括如下方法步骤:
指令队列进行缓存处理;将指令队列的操作数进行缓存处理;检测指令队列中的指令信息是否出现异常,得到异常检测结果;异常检测结果用于表征指令信息是否出现异常;当异常检测结果用于表征指令信息未出现异常时,执行指令队列中的指令信息,得到指令结果并将指令结果进行写回至目标物理寄存器。
需要说明的是,在将所述解码后的指令信息存储至与指令类型对应的指令队列后,可以将指令队列进行缓存处理,存储至指令队列缓存单元(IQBUF),例如不同指令类型的指令可以对应有一个指令队列缓存模块,可以是将不同类型的指令信息缓存至与该指令类型对应的指令队列缓存单元(IQBUF)。并且可以通过指令操作数缓存模块(OPBUF)对指令队列的操作数进行缓存处理,然后检测指令队列中的指令信息是否出现异常,得到异常检测结果,该异常检测结果用于表征指令信息是否出现异常。
当异常检测结果用于表征指令信息未出现异常时,执行指令队列中的指令信息,得到指令结果并将指令结果进行写回至目标物理寄存器。
本实施例中与现有技术相比而言,增加了流水线数量,采用九级流水线,从而可以让处理器有足够的时间分解指令中的的任务量,让碎片化的指令任务均匀的分配到不同的流水线级。通过分解流水线中任务量最重的级别,从而达到提升整个架构的工作频率的效果。
在本申请一个可选实施例中,本申请实施例检测指令队列中的指令信息是否出现异常,得到异常检测结果之后,进行处理的具体实现方式,包括如下方法步骤:
当异常检测结果用于表征指令信息出现异常时,确定异常指令信息并生成异常信号;将异常信号进行广播,停止对异常指令信息的交付、执行和写回操作。
具体地,在检测指令队列中的指令信息是否出现异常的过程中,可以检测指令信息中的字段,判断该字段是否符合是否出现异常的异常检测条件,当该字段符合出现异常的异常检测条件时,则表示该指令信息为出现异常;当字段不符合出现异常的异常检测条件时,则表示该指令信息未出现异常。
当异常检测结果用于表征指令信息出现异常时,确定异常指令信息,并对该异常指令信息进行封装处理生成异常信号,对该异常信号进行广播处至该模块的上一传输模块或下一传输模块,停止对该异常指令信息的交付、执行和写回操作,并冲刷流水线。还可以会准备操作数,这里会读取物理寄存器或接收来自下一模块中写回单元的转发数据;如果指令在这里没有拿到转发数据,会继续等预设时间,之后如果还没有等到数据,则会停止准备操作数,回到指令队列中继续等待。其中,该预设时间可以是根据实际需求自定义设置的,例如可以是5分钟。
本实施例中当异常检测结果用于表征指令信息出现异常时,确定异常指令信息并生成异常信号,然后将异常信号进行广播,停止对异常指令信息的交付、执行和写回操作,能够及时检测异常指令,以对有效指令进行后续执行和写回操作,提高了指令处理的准确度。
在本申请一个可选实施例中,在执行指令队列中的指令信息之前,还包括如下方法:
获取包括操作数的指令信息,并对包括操作数的指令信息进行交付处理。
需要说明的是,上述流水线中的指令被交付,是指该指令不再是预测执行状态。他被判定为可以真正地在处理器中被执行,可以对处理器状态产生影响。与交付相反的为取消,表示该指令最后被判定为需要取消。
可选的,上述对指令信息进行交付处理可以是按照顺序执行,例如当前一条指令完成了交付之后,才会轮到后一条指令的交付。其中,可以是在指令操作数缓存模块(OPBUF)中成功拿到操作数的指令,进行交付(CMT)处理。只有交付过的指令,可以确定未预测执行状态,才可以被执行。
上述指令信息在执行的过程中,可以是通过执行模块进行执行,该执行模块而可以包括4个通用运算指令(ALU)执行单元、1个跳转指令(BJP)和1个访存(LSU)、CSR指令共用执行单元,对于不同类型的指令信息,可以通过与该指令类型对应的执行单元,分类并行进行执行,在指令执行完成后,会根据指令类型和数据依赖情况,将指令结果写回到目标物理寄存器。
本实施例中通过将不同类型的指令通过对应的执行单元进行分类执行,能够使得处理器在单个时钟周期内,并行执行多条指令,从而显著地提高了指令流的执行速度,并且通过对执行信息进行交付处理,能够及时确定指令信息的执行状态,便于有效地进行指令执行,提高了指令处理效率。
请参见图5所示,图5为本申请实施例提供的处理器的结构示意图,该处理器包括取指模块(IFU)和执行模块(EXU),取指模块(IFU)包括依次连接的第一取指单元(IF1)、第二取指单元(IF2)、第三取指单元(IF3)、第四取指单元(IF4)和第五取指单元(IF5)。
第一取指单元(IF1)用于获取多个待执行指令数据;第二取指(IF2)用于对多个待执行指令数据进行切分处理,得到目标指令;第三取指单元(IF3)用于对所述目标指令进行缓存处理;第四取指单元(IF4)用于对目标指令进行预解码处理,得到预解码后的指令;第五取指单元(IF5)用于将预解码后的指令存储至寄存器中;第一执行单元(EX0)用于对预解码后的指令进行解码、物理寄存器重命名、标签分配和分类存储至相应的指令队列;第二执行单元(EX1)用于将所述指令队列进行缓存处理;第三执行单元(EX2)用于进行指令异常检测和操作数缓存处理;第四执行单元(EX3)用于执行指令处理,得到指令结果并将指令结果进行写回处理。
具体的,第五取指单元(IF5)用于将预解码后的指令存储至与执行模块接口对应的指令寄存器中;以及用于将预解码后的指令对应的程序存储至与执行模块接口对应的程序寄存器中。
第一执行单元(EX0)包括解码单元(DEC)、物理寄存器(physical regfile)、标签队列单元(itag queue)、计分板(scoreboard)、指令队列单元(IQ);该解码单元(DEC)可以为四个,分别为(DEC0)、(DEC1)、(DEC2)、(DEC3)。
解码单元(DEC)用于对预解码后的指令进行解码处理,得到解码后的指令信息;第一执行单元还用于基于物理寄存器列表(physical regfile list),对解码后的指令信息建立寄存器重命名映射关系并存储至计分板(scoreboard),并基于标签队列单元(itagqueue)中的标签队列单元,为解码后的指令信息分配目标标签;第一执行单元还用于将解码后的指令信息按照指令功能进行分类处理,得到指令类型,并将解码后的指令信息存储至与指令类型对应的指令队列单元(IQ)。可选的,上述指令类型可以包括四个运算单元(ALU)、跳转指令类型(BJP)、访存指令类型(LSU),与指令类型对应的指令队列单元分别为(ALU4 IQ)、(BJP IQ)、(LSU IQ),可以将解码后的信息存储至与指令类型对应的指令队列单元(IQ)。
第二执行单元(EX1)包括指令队列缓存单元(IQBUF)和交付单元(CMT)。
第二执行单元(EX1)用于接收指令队列单元传输的指令信息,并存储至指令队列缓存单元(IQBUF),该指令队列缓存单元(IQBUF)根据指令类型进行分类,包括(ALU4IQBUF)、(BJP IQBUF)、(LSU IQBUF);交付单元(CMT)用于获取包括操作数的指令信息,并对包括操作数的指令信息进行交付处理。
第三执行单元(EX2)包括操作数缓存单元(OPBUF)和异常检测单元,第三执行单元(EX2)与第二执行单元(EX1)连接;操作数缓存单元(OPBUF)可以根据指令类型进行分类,包括(ALU4 OPBUF)、(BJP OPBUF)、(LSU OPBUF),操作数缓存单元(OPBUF)用于将指令队列的操作数进行缓存处理;异常检测单元用于检测指令队列中的指令信息是否出现异常,得到异常检测结果;该异常检测结果用于表征指令信息是否出现异常。
第四执行单元(EX3)可以包括执行单元和写回单元(WBCK),该执行单元根据指令类型进行分类,包括ALU4、BJP、访存LSU、CSR,其中访存LSU和状态寄存器指令CSR单元共用一个执行单元,通过EX1传输过来的不同类型的指令信息,会通过与该指令类型对应的执行单元,分类并行执行;因此处理器在单个时钟周期内,最多可以并行执行多条指令,执行完成后,可以根据执行类型和数据依赖情况,通过写回单元(WBCK)将指令结果写回到物理寄存器。
本实施例中采用指令多发射的结构,能够在单周期内处理更多的指令,并且采用物理寄存器重命名和Replay机制和乱序交付的架构,使得常见指令无需因为等待操作数而造成流水线卡顿。并且由于采用了九级流水线,使得碎片化的指令任务均匀的分布在各个不同的流水线级,不会出现单级流水线任务量过重而限制工作频率的情况,很大程度上提高了工作效率。
应该理解的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
关于上述指令处理装置的具体限定可以参见上文中对于操作指令处理方法的限定,在此不再赘述。上述指令处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备的内部结构图可以如图2所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现如上的一种操作指令处理方法。包括:包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现如上操作指令处理方法中的任一步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时可以实现如上操作指令处理方法中的任一步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种指令处理方法,其特征在于,包括:
获取多个待执行指令数据;
对所述多个待执行指令数据进行切分处理,得到多个目标指令;
对所述目标指令进行缓存、预解码处理,得到预解码后的指令,并将所述预解码后的指令放置至寄存器中;
对所述预解码后的指令进行解码、物理寄存器重命名、标签分配和分类存储至相应的指令队列;
将所述指令队列进行缓存、指令异常检测、操作数缓存和指令执行处理,得到指令结果并将所述指令结果进行写回处理。
2.根据权利要求1所述的方法,其特征在于,将所述预解码后的指令放置至寄存器中,包括:
将所述预解码后的指令放置至与执行模块接口对应的指令寄存器中;
并将所述预解码后的指令对应的程序放置至与执行模块接口对应的程序寄存器中。
3.根据权利要求1所述的方法,其特征在于,对所述预解码后的指令进行解码、物理寄存器重命名、标签分配和存储处理至指令队列,包括:
对所述预解码后的指令进行解码处理,得到解码后的指令信息;
基于物理寄存器列表,对所述解码后的指令信息建立寄存器重命名映射关系并存储至计分板,并基于标签队列为所述解码后的指令信息分配目标标签;
将所述解码后的指令信息按照指令功能进行分类处理,得到指令类型;
将所述解码后的指令信息存储至与所述指令类型对应的指令队列。
4.根据权利要求3所述的方法,其特征在于,基于物理寄存器列表,对所述解码后的指令信息建立寄存器重命名映射关系并存储至计分板,并基于标签队列为所述解码后的指令信息分配目标标签,包括:
从所述物理寄存器列表中查找处于空闲状态的目标物理寄存器;
根据所述目标物理寄存器,对所述解码后的指令信息进行寄存器重命名处理,建立所述目标物理寄存器与所述解码后的指令信息之间的寄存器重命名映射关系并存储至计分板;
从所述标签队列中查找处于处于未使用状态的目标标签;
根据所述目标标签,为所述解码后的指令信息分配所述目标标签。
5.根据权利要求4所述的方法,其特征在于,将所述指令队列缓存、指令异常检测、操作数缓存和执行指令处理,得到指令结果并将所述指令结果进行写回处理,包括:
将所述指令队列进行缓存处理;
将所述指令队列的操作数进行缓存处理;
检测所述指令队列中的指令信息是否出现异常,得到异常检测结果;所述异常检测结果用于表征所述指令信息是否出现异常;
当所述异常检测结果用于表征所述指令信息未出现异常时,执行所述指令队列中的指令信息,得到指令结果并将所述指令结果进行写回至所述目标物理寄存器。
6.根据权利要求5所述的方法,其特征在于,在检测所述指令队列中的指令信息是否出现异常,得到异常检测结果之后,所述方法还包括:
当所述异常检测结果用于表征所述指令信息出现异常时,确定异常指令信息并生成异常信号;
将所述异常信号进行广播,停止对所述异常指令信息的交付、执行和写回操作。
7.根据权利要求5所述的方法,其特征在于,在执行所述指令队列中的指令信息之前,所述方法还包括:
获取包括所述操作数的指令信息;
对所述包括所述操作数的指令信息进行交付处理。
8.一种指令处理装置,其特征在于,包括:依次连接的第一取指单元、第二取指单元、第三取指单元、第四取指单元、第五取指单元,第一执行单元、第二执行单元、第三执行单元和第四执行单元;
所述第一取指单元,用于获取多个待执行指令数据;
所述第二取指单元,用于对所述多个待执行指令数据进行切分处理,得到目标指令;
所述第三取指单元,用于对所述目标指令进行缓存处理;
所述第四取指单元,用于对所述目标指令进行预解码处理,得到预解码后的指令;
所述第五取指单元,用于对并将所述预解码后的指令放置至寄存器中;
所述第一执行单元,用于对所述预解码后的指令进行解码、物理寄存器重命名、标签分配和分类存储至相应的指令队列;所述第二执行单元,用于将所述指令队列进行缓存处理,所述第三执行单元,用于进行指令异常检测和操作数缓存处理,所述第四执行单元用于指令执行处理,得到指令结果并将所述指令结果进行写回处理。
9.一种计算机设备,包括:存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN202410331306.9A 2024-03-22 2024-03-22 指令处理方法、装置、设备及存储介质 Pending CN117931293A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410331306.9A CN117931293A (zh) 2024-03-22 2024-03-22 指令处理方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410331306.9A CN117931293A (zh) 2024-03-22 2024-03-22 指令处理方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN117931293A true CN117931293A (zh) 2024-04-26

Family

ID=90752344

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410331306.9A Pending CN117931293A (zh) 2024-03-22 2024-03-22 指令处理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN117931293A (zh)

Similar Documents

Publication Publication Date Title
JP3580657B2 (ja) 並列マルチタスキングの方法及びシステム
US5694565A (en) Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
US9256433B2 (en) Systems and methods for move elimination with bypass multiple instantiation table
TWI497412B (zh) 用於使用相依矩陣追蹤解除配置之載入指令之方法、處理器及裝置
US9292288B2 (en) Systems and methods for flag tracking in move elimination operations
US10007521B1 (en) Banked physical register data flow architecture in out-of-order processors
US9378022B2 (en) Performing predecode-time optimized instructions in conjunction with predecode time optimized instruction sequence caching
US6247117B1 (en) Apparatus and method for using checking instructions in a floating-point execution unit
US9483409B2 (en) Store forwarding cache
US11900120B2 (en) Issuing instructions based on resource conflict constraints in microprocessor
US9223577B2 (en) Processing multi-destination instruction in pipeline by splitting for single destination operations stage and merging for opcode execution operations stage
CN110825437A (zh) 用于处理数据的方法和装置
CN116302106A (zh) 用于促进分支预测单元的改善的带宽的设备、方法和系统
US6425074B1 (en) Method and apparatus for rapid execution of FCOM and FSTSW
US11392386B2 (en) Program counter (PC)-relative load and store addressing for fused instructions
US11249757B1 (en) Handling and fusing load instructions in a processor
WO2002057908A2 (en) A superscalar processor having content addressable memory structures for determining dependencies
CN114514505A (zh) 退役队列压缩
US20220413849A1 (en) Providing atomicity for complex operations using near-memory computing
US11314510B2 (en) Tracking load and store instructions and addresses in an out-of-order processor
US5850563A (en) Processor and method for out-of-order completion of floating-point operations during load/store multiple operations
CN117931293A (zh) 指令处理方法、装置、设备及存储介质
CN117931294A (zh) 指令处理设备和处理系统
KR100861701B1 (ko) 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍시스템 및 방법
US7065635B1 (en) Method for handling condition code modifiers in an out-of-order multi-issue multi-stranded processor

Legal Events

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