CN117193861B - 指令处理方法、装置、计算机设备和存储介质 - Google Patents
指令处理方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN117193861B CN117193861B CN202311466281.5A CN202311466281A CN117193861B CN 117193861 B CN117193861 B CN 117193861B CN 202311466281 A CN202311466281 A CN 202311466281A CN 117193861 B CN117193861 B CN 117193861B
- Authority
- CN
- China
- Prior art keywords
- instruction
- execution
- performance critical
- instructions
- performance
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 24
- 238000003860 storage Methods 0.000 title claims abstract description 14
- 238000000034 method Methods 0.000 claims description 30
- 238000004590 computer program Methods 0.000 claims description 21
- 238000004458 analytical method Methods 0.000 claims description 2
- 230000001143 conditioned effect Effects 0.000 claims description 2
- 230000000903 blocking effect Effects 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 101710130550 Class E basic helix-loop-helix protein 40 Proteins 0.000 description 2
- 102100025314 Deleted in esophageal cancer 1 Human genes 0.000 description 2
- 101000912352 Homo sapiens Putative uncharacterized protein DANCR Proteins 0.000 description 2
- 102100026242 Putative uncharacterized protein DANCR Human genes 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Landscapes
- Advance Control (AREA)
Abstract
本申请实施例提供一种指令处理方法、装置、计算机设备和存储介质,涉及处理器领域。该指令处理方法包括:从存储器中读取指令;对读取的指令进行解析;对性能关键性指令进行第一次执行,或者对访存指令进行第一次执行;对访存指令进行第二次执行;对性能关键性指令进行第二次执行;异常处理;对性能关键性指令进行第三次执行。该指令处理方法可以减少流水线的卡顿。
Description
技术领域
本申请涉及处理器技术领域,具体地,涉及一种指令处理方法、装置、计算机设备和存储介质。
背景技术
现代处理器技术,为了尽可能提高工作频率和性能,常常会采用流水线技术。例如五级流水线技术。其中,五级流水线技术中的各级负责执行一条指令的部分内容。
然而,在经典的五级流水线架构中,所有任务都集中在运算级来处理,导致性能关键性任务需要同复杂任务抢占执行单元,这种等待会造成流水线卡顿,影响流水线的执行效率。
发明内容
本申请实施例中提供了一种指令处理方法、装置、计算机设备和存储介质。
本申请实施例的第一个方面,提供了一种指令处理方法,所述方法包括:从存储器中读取指令;对读取的指令进行解析;对性能关键性指令进行第一次执行,或者对访存指令进行第一次执行;对访存指令进行第二次执行;对性能关键性指令进行第二次执行;异常处理;对性能关键性指令进行第三次执行。
在本申请一个可选的实施例中,所述对性能关键性指令进行第一次执行的条件为:所述性能关键性指令在第一次执行点没有数据依赖关系。
在本申请一个可选的实施例中,在所述性能关键性指令在所述第一次执行点存在所述数据依赖关系时,所述性能关键性指令流向下一级。
在本申请一个可选的实施例中,所述对性能关键性指令进行第二次执行的条件为:所述性能关键性指令在第二次执行点没有数据依赖关系。
在本申请一个可选的实施例中,所述性能关键性指令在所述第二次执行点存在数据依赖关系时,所述性能关键性指令流向下一级。
在本申请一个可选的实施例中,所述对性能关键性指令进行第三次执行的条件为:所述性能关键性指令在第三次执行点没有数据依赖关系。
在本申请一个可选的实施例中,所述从存储器中读取指令包括:对指令执行预取;将指令对齐;对指令执行预解码。
在本申请一个可选的实施例中,所述对读取的指令进行解析,包括:对指令进行全解码,以解析出完整的指令信息。
在本申请一个可选的实施例中,在对性能关键性指令进行第二次执行的执行点,还用于执行系统状态寄存器访问指令。
在本申请一个可选的实施例中,在对性能关键性指令进行第三次执行的执行点,还用于执行浮点运算指令和单指令多数据指令。
在本申请一个可选的实施例中,所述性能关键性指令包括通用运算指令和跳转指令。
本申请实施例的第二个方面,提供了一种指令处理装置,包括:读取模块,用于从存储器中读取指令;解析模块,用于对读取的指令进行解析;第一执行模块,用于对性能关键性指令进行第一次执行,或者对访存指令进行第一次执行;第二执行模块,用于对访存指令进行第二次执行;第三执行模块,用于对性能关键性指令进行第二次执行;第四执行模块,用于异常处理;第五执行模块,用于对性能关键性指令进行第三次执行。
本申请实施例的第三个方面,提供了一种计算机设备,包括:包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现如上任一项方法的步骤。
本申请实施例的第四个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,计算机程序被处理器执行时实现如上任一项的方法的步骤。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一个实施例提供的经典五级流水线的架构示意图;
图2为本申请一个实施例提供的指令处理方法的流程图;
图3为本申请一个实施例提供的指令处理方法对应的流水线架构;
图4为本申请一个实施例提供的指令处理方法对应的另一种流水线架构;
图5为本申请一个实施例提供的指令处理装置结构示意图;
图6为本申请一个实施例提供的计算机设备结构示意图。
具体实施方式
在实现本申请的过程中,发明人发现,目前的经典五级流水线如图1所示,包括IF(Instruction Fetch)指令取指模块、ID(Instruction Decode)指令译码模块、EX(Instruction Execute)指令执行模块、MEM(Memory Access)访存模块和WB(Write Back)写回模块,其中,IF是指将指令从存储器中读取出来的过程;ID是指将存储器中取出的指令进行翻译的过程,经过译码之后得到指令需要的操作数寄存器索引,可以使用此索引从通用寄存器组中将操作数读出;EX是指对指令进行真正运算的过程,比如,如果指令是一条加法运算指令,则对操作数进行加法操作,如果指令是一条减法运算指令,则对操作数进行减法操作;MEM是指存储器访问指令将数据从存储器中读出,或者写入存储器的过程;WB是指指令执行的结果写回通用寄存器组的过程,如果是普通运算指令,该结果值来自于“执行”阶段计算的结果;如果是存储器读指令,该结果来自于“访存”阶段从存储器中读取出来的数据。
上述是一条经典的五级流水线的工作流程,部分指令的生命周期都会经历上述五级流水线,或者五级中的四级(有些指令不需要WB,有些指令不需要MEM)。
然而,上述经典流水线存在明显的不足:首先,由于流水线的级数有限,导致每一级都有大量的组合逻辑电路执行相关操作,尤其是EX流水线级,对于性能关键性指令和复杂指令同等对待,导致单级流水线处理任务过重,依据电路知识,越重的处理任务意味着大量的逻辑资源消耗,也就意味着电信号需要通过更长的路径,这直接影响着电信号的频率。因此单级流水线任务过重会从根本上限制处理器的工作频率,从而进一步限制其性能。
其次,由于指令的运算执行单元只有一次执行机会,当某些运算指令执行时,另一些运算指令就只能等待。经典五级流水线架构中,所有任务集中在EX这一级,导致性能关键性任务需要同复杂任务(往往耗时较长)抢占执行单元。这种等待的原因称之为相关性,等待会造成流水线卡顿,这种卡顿称之为空泡。相关性与空泡是影响处理器性能的关键因素,需要尽可能避免或者至少应该尽快处理。
针对上述问题,本申请实施例中提供了一种指令处理方法。通过将五级流水线划分成更多级的流水线,可以将性能关键性指令分散到各个流水线级中,允许这些指令在流水线中分布式地执行,降低了这些指令因数据依赖关系造成的卡顿,从而提升处理器的整体性能;更长的流水线带来更大的执行缓冲周期,当某些指令与其他指令存在数据依赖关系时,可以不用卡住流水线而继续流动,增加这些指令获取转发数据的时间,从而进一步减少因数据依赖关系造成的卡顿,进一步提高处理器执行性能;采用更多级流水线,使得碎片化的指令任务均匀分布在各个不同的流水线级,相对于将所有执行逻辑集中在一个流水线级的经典架构,本方案各级之间的逻辑电路更简单,因此工作频率更高。
本申请实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。
为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
请参见图2,本申请实施例提供的指令处理方法包括如下步骤:
步骤201、从存储器中读取指令。
通常情况下,指令是程序的基本元素,可以告诉处理器应该执行那些操作。在对一条指令进行处理之前,需要将指令从存储器中读取出来。本申请实施例中,将从存储器中读取指令细分为三个流水线级,分别是:
IF0:对指令执行预取;
IF1:将指令对齐;
IF2:对指令执行预解码。
其中,IF0是执行指令预取,相当于从存储器中获取指令,在实际获取过程中,一次可以获取多条指令。IF1是按指令长度切分出完整的指令。IF2是指令预解码,为分支跳转指令预测提供信息。
本申请实施例中,通过将经典五级流水线中的IF级细分为IF0、IF1和IF2三级流水线,可以将从存储器中读取指令进行细化,减少每一级处理的复杂度,提高处理器的工作频率。
步骤202、对读取的指令进行解析。
通常情况下,处理器在执行指令之前会对其进行解码,指令解码是将指令中携带的信息提取出来,处理器使用这些信息来控制后续的流水线执行这条指令,并且确定需要执行的操作和相关的数据,这个过程需要一定的时间,并且可能成为性能瓶颈。
本申请实施例中,对读取的指令进行解析是在上述的对指令执行预解码的基础上的,简称DE(DEcode,解码),因此,步骤202在具体解析过程中主要是指令的全解码,以解析出完整的指令信息,供后续的执行用。指令预解码是提前解析或解码即将执行的指令,当处理器执行指令时预先解码的指令可以减少处理器在执行指令时的等待时间,可以减少在执行指令时花费的时间,减少不必要的延迟,提高程序的运行速度。
预解码也是一种部分解码,指令的全解码是对指令的完全解码,在预解码阶段,指令被解码成一种中间格式,也被称为微操作(micro-operations,简称μops)。这些微操作可以与CPU的各个部分进行更有效的交互。在完全解码阶段,这些微操作被完全解码成可以在CPU上执行的特定操作。这个阶段通常包括确定操作数、寻址模式、操作类型等。
步骤203、对性能关键性指令进行第一次执行,或者对访存指令进行第一次执行。
在将指令进行完全解码之后,根据指令的不同类型进入到执行阶段。对应到本申请实施例中的如图3所示的流水线架构中,该步骤203的执行由EX0模块来完成。在EX0模块中,其执行单元包括:算术逻辑单元(ALU,Arithmetic Logic Unit)、分支跳转单元(BJP,Branch JumP )和地址生成单元(AGU,Address Generation Unit)。其中,ALU是计算机的核心组成部分之一,主要用于执行算术运算和逻辑运算,它通常包括一个或多个加法器、减法器、乘法器和除法器等算术运算单元,以及一些逻辑运算单元,如AND、OR、NOT等。ALU根据指令中的操作码来执行相应的操作。例如,如果指令要求执行两个数的加法操作,ALU中的加法器就会将这两个数相加并输出结果;如果指令要求执行逻辑与操作,ALU中的AND逻辑门就会对输入的信号进行与操作并输出结果。除了执行算术和逻辑运算外,ALU还负责处理溢出、进位等信息,并根据需要将结果存储在寄存器或内存中。
分支跳转单元BJP用于实现程序中的跳转功能,在计算机科学中,程序通常是由一系列指令组成的,每个指令都会按照一定的顺序执行。然而,有时候程序需要跳过一些指令,而直接执行其他指令。例如,当程序遇到一个条件语句(如if语句)时,它需要根据条件的真假来决定是否跳过一些指令。是用于处理这种跳转的硬件或软件组件。它可以根据特定的条件或指令,将程序的执行转移到不同的位置。在硬件上,分支跳转单元通常由一些门电路(gate circuits)和触发器(flip-flops)组成,用于检测特定条件并控制程序计数器(program counter),以实现程序的跳转。在软件中,跳转逻辑通常由指令集中的跳转指令实现,例如“jump”、“branch”等指令。这些指令会改变程序计数器的值,以将程序的执行转移到指定的地址,从而跳过一些不必要的指令。跳转指令通常在遇到条件语句、循环语句等情况下使用。
访存操作由地址生成单元进行管理,内存访问是计算机处理器执行指令时读取或写入数据的过程。AGU的主要任务是为内存访问操作生成相应的地址,这个过程涉及到对基址寄存器、索引寄存器和比例因子的计算。在复杂的内存模型如分段内存模型中,硬件还需要将逻辑地址转换为线性地址。在执行访存微指令时,AGU会从定点物理寄存器堆中读取地址数据,并执行虚拟地址计算。计算结果(即虚拟地址)会被发送给访存单元,然后进行后续的访存操作。
在实际应用中,性能关键性指令包括通用运算指令和跳转指令。本申请实施例中,EX0模块包括ALU1,第一个算术逻辑单元,用于对性能关键性指令进行第一次执行,主要是对通用运算指令执行第一次操作。EX0模块还包括BJP1,即第一个分支跳转单元,也是对性能关键性指令进行第一次执行,重点是对跳转指令执行第一次操作。另外,EX0模块还包括AGU1,即第一个访存操作单元,以对访存指令进行第一次执行。
在具体的指令执行过程中,需要满足执行条件,例如,如果通用运算指令满足执行条件,则在EX0模块对通用运算指令进行执行;如果跳转指令满足执行条件,则在EX0模块对跳转指令进行执行;如果访存指令满足执行条件,则在EX0模块对访存指令进行执行。
在实际应用中,上述指令满足执行条件可以是没有数据依赖关系,即需要执行的操作数据都处于备齐的状态,此时对上述指令才进行执行。也就是说,对性能关键性指令进行第一次执行的条件为:性能关键性指令在第一次执行点没有数据依赖关系。在性能关键性指令在第一次执行点存在所述数据依赖关系时,性能关键性指令流向下一级。
本申请实施例中,对获取的指令进行解码之后,如果解码后的指令是通用运算指令,并且此时获取到所有的执行需要的操作数据,那么就由ALU1单元在EX0模块对该通用运算指令进行运算执行,后续模块就不再处理该通用运算指令;然而,如果解码后的指令是通用运算指令,但在此步骤中未获取到足够的操作数据,那么在此步骤该通用运算指令不进行执行,由后续步骤进行执行,也就是说该通用运算指令流向下一级。
如果解码后的指令是跳转指令,并且此时在该步骤中获取到执行该指令所需要的操作数据,那么就由BJP1单元在EX0模块对该跳转指令进行执行,后续步骤就不再处理该跳转指令;然而,如果该跳转指令对应的操作数据未准备齐全,那么在此步骤该跳转指令不进行执行,由后续步骤在操作数据备齐之后进行执行。也就是说,该跳转指令流向下一级。
同样的,如果解码后的指令是访存指令,并且此时在该步骤中获取到执行该指令的所有操作数据,那么就由AGU1单元在EX0模块对该访存指令进行执行,后续步骤不再处理该访存指令。然而,如果该访存指令对应的操作数据未备齐,由于访存指令的访存地址有多种不同的属性,因此在继续执行其他操作时必须将地址数据备齐,当EX0模块未备齐所有数据时,需要在此继续等待,直到备齐可以执行为止。
步骤204、对访存指令进行第二次执行。
在实际应用中,由步骤202解码出指令后,如果所解码的是访存指令,并且在步骤203中没有满足执行该访存指令的条件,也就是在EX0模块没有执行该访存指令,那么,该访存指令会流转到下一步骤,即步骤204,在步骤204中其对应有EX1模块,EX1模块中含有地址生成单元AGU2,在执行条件满足的情况下,也就是有足够的操作数的情况下,在该步骤中由AGU2单元对访存指令进行执行;如果执行条件不满足,那么该访存指令继续流转到下一步骤,由后续的步骤在操作数据备齐的情况下进行执行。
步骤205、对性能关键性指令进行第二次执行。
本申请实施例中,由步骤202解码出指令后,如果所解码的是性能关键性指令,并且在步骤203中没有满足执行该性能关键性指令的条件,也就是在EX0模块没有执行该指令,那么,该性能关键性指令会继续流转,直到流转到有执行单元的模块对应的步骤,即步骤205。步骤205对应的EX2模块中包含有算术逻辑单元ALU2、分支跳转单元BJP2,由这两个单元在执行条件满足的情况下,对性能关键性指令进行执行。然而,如果执行条件不满足,该性能关键性指令继续流转到后续步骤,由后续步骤在执行条件满足的情况下执行。
也就是说,对性能关键性指令进行第二次执行的条件是性能关键性指令在第二次执行点没有数据依赖关系;如果性能关键性指令在第二次执行点存在数据依赖关系,则性能关键性指令流向下一级。
本申请实施例中,在对性能关键性指令进行第二次执行的执行点,还用于执行系统状态寄存器访问指令。对应的EX2模块还包括用于存储和控制计算机系统状态的低级寄存器(CSR,Control and Status Register),系统状态寄存器访问指令就是用于对CSR进行访问,在EX2存在CSR且满足访问CSR的条件时,步骤202解析的系统状态寄存器访问指令可以在此步骤205进行执行。
如果在实际应用中,解析后的系统状态寄存器访问指令流转到步骤205时,不具备访问CSR的条件时,该系统状态寄存器访问指令需要继续等待,直到所需条件满足,也就是没有数据依赖关系为止。
步骤206、异常处理。
通常情况下,异常处理包括同步异常处理和异步异常处理,其中,同步异常指的是由于执行程序指令流或者试图执行程序指令流而造成的异常。这种异常的原因能精确定位到具体的指令,例如程序流中的非法指令。这种异常在同样的环境下无论执行多少次都能精确地重复出来。而异步异常是指那些异常原因无法被精确定位于某条指令的异常。这种异常在同样的环境下执行时每次发生异常时的指令都可能不一样。例如外部中断。
可见,无论是同步异常还是异步异常,其处理的情况都非常多,相对比较复杂。因此,本申请实施例单独分配一个周期作为异常处理,以提高电路工作频率。
异常处理的执行对应EX3模块,该模块中包括EXCP(EXCPtion,异常单元),EXCP异常处理是指当程序运行过程中出现异常情况时,如何进行处理的过程。异常是指在程序运行过程中出现的不正常情况,例如除以零、数组越界、空指针引用等等。在程序中,当出现异常时,会触发异常处理机制。这个机制会根据异常的类型和情况,执行相应的异常处理代码。本申请实施例中,程序运行过程中出现异常时调用EX3模块的EXCP单元进行异常处理。
步骤207、对性能关键性指令进行第三次执行。
本申请实施例中,如果性能关键性指令在前面两个步骤,即步骤203和步骤205中均为执行,那么到步骤207时,在执行条件满足的情况下,也就是获取到足够的执行数据时,就可以对性能关键性指令进行执行了。
本申请相当于给性能关键性指令设置了三次执行的机会,只要执行条件满足,性能关键性指令可以在任意一次执行机会中进行执行,这样可以避免在执行条件不满足时,性能关键性指令卡住流水线,减少了因数据依赖关系产生的流水线卡顿。同时由于流水线较深,即使存在依赖关系,也会有更多的缓冲时间用于接收数据转发,在这个过程中并不会阻塞流水线。因此相对于经典流水线中对于数据依赖关系与资源依赖造成的卡顿,本架构的卡顿明显减少,因此处理器执行效率更高。
在实际应用中,为了执行性能关键性指令,在对应的EX4模块设置了ALU3单元和BJP3单元,其中,ALU3用于通用运算指令的执行,BJP3用于跳转指令的执行。
另外,本申请实施例中,在对性能关键性指令进行第三次执行的执行点,还用于执行浮点运算指令和单指令多数据指令。相应的,在EX4模块中,还设置了MUL(MULtiplication,乘法单元)和DIV(DIVsion,除法单元),其中,MUL单元用于执行浮点运算指令,DIV单元用于执行单指令多数据指令。
需要说明的是,本申请实施例提供的指令处理方法还可以由多条流水线来执行,即通过多条流水线对多个性能关键性指令进行第一次执行,或者通过多条流水线对多个访存指令进行第一次执行,由于有多条流水线,可以在一次执行指令时,同时对多条指令进行执行,提高了指令的并发性,实现了处理器性能的翻倍。
虽然有多条流水线,但每条流水线可执行全部指令,因此,在后续步骤中,还可以通过多条流水线对多个访存指令进行第二次执行,通过多条流水线对多个性能关键性指令进行第二次执行,通过多条流水线对多个性能关键性指令进行第三次执行。
本申请实施例中,以两条流水线为例对并发执行的架构进行简要说明,参照图4所示,在DE模块可以包含两个执行单元,一个是DEC0第一解码单元,另一个是DEC1第二解码单元,通过两个解码单元同时可以解码两条指令供后续模块使用。相应的,在EX0模块,包含有两个ALU单元,分别是ALU1_0和ALU1_1,通过这两个算术逻辑单元,可以用于对两条性能关键性指令同时进行第一次执行,即对两条通用运算指令同时执行第一次操作,并且两条指令的执行互不干扰。
另外,在EX0模块,还包括两个BJP单元,分别是BJP1_0和BJP1_1,也就是通过这两个分支跳转单元可以对两个性能关键性指令同时进行第一次执行,即对两条跳转指令同时执行第一次操作,并且两条指令的执行互不干扰。
同样的,在EX0模块,还可以包括两个AGU单元,分别是AGU1_0和AGU1_1,也就是通过这两个地址生成单元可以对两个访存指令同时进行第一次执行,并且两条指令的执行互不干扰。
本申请实施例中,在EX1模块中含有两个地址生成单元AGU2_0和AGU2_1,可以用于对两个访存指令同时进行第二次执行,并且两条指令的执行是并行的,互不干扰。
同样的,在EX2模块,包含有两个ALU单元,分别是ALU2_0和ALU2_1,通过这两个算术逻辑单元,可以用于对两条性能关键性指令同时进行第二次执行,即对两条通用运算指令同时执行第二次操作,并且两条指令的执行互不干扰。另外,在EX2模块,还包含有两个BJP单元,分别是BJP2_0和BJP2_1,也就是通过这两个分支跳转单元可以对两个性能关键性指令同时进行第二次执行,即对两条跳转指令同时执行第二次操作,并且两条指令的执行互不干扰。
同样的,在EX4模块,也包含有两个ALU单元,分别是ALU3_0和ALU3_1,通过这两个算术逻辑单元,可以用于对两条性能关键性指令同时进行第三次执行,即对两条通用运算指令同时执行第三次操作,并且两条指令的执行互不干扰。另外,在EX4模块,还包含有两个BJP单元,分别是BJP3_0和BJP3_1,也就是通过这两个分支跳转单元可以对两个性能关键性指令同时进行第三次执行,即对两条跳转指令同时执行第三次操作,并且两条指令的执行互不干扰。
如图4中所示,第一条流水线包括DEC0、ALU1_0、AGU2_0、ALU2_0和ALU3_0,而第二条流水线包括DEC1、ALU1_1、AGU2_1、ALU2_1和ALU3_1,两条流水线分别对指令进行执行互不干扰,且同时提高了执行指令的并发性,实现处理器性能的翻倍。也就是说,在同一时刻,处理器可以执行完两条指令,这种并发的微架构可以提高指令流的执行速度。
应该理解的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
请参见图5,本申请一个实施例提供了一种指令处理装置500,包括:读取模块501、解析模块502、第一执行模块503、第二执行模块504、第三执行模块505、第四执行模块506和第五执行模块507;其中,
读取模块501用于从存储器中读取指令;解析模块502用于对读取的指令进行解析;第一执行模块503用于对性能关键性指令进行第一次执行,或者对访存指令进行第一次执行;第二执行模块504用于对访存指令进行第二次执行;第三执行模块505用于对性能关键性指令进行第二次执行;第四执行模块506用于异常处理;第五执行模块507用于对性能关键性指令进行第三次执行。
关于上述指令处理装置的具体限定可以参见上文中对于指令处理方法的限定,在此不再赘述。上述指令处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备的内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现如上的一种指令处理方法。包括:包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现如上指令处理方法中的任一步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时可以实现如上指令处理方法中的任一步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (14)
1.一种指令处理方法,其特征在于,所述方法包括:
从存储器中读取指令;
对读取的指令进行解析;
对性能关键性指令进行第一次执行,或者对访存指令进行第一次执行;其中,所述性能关键性指令包括通用运算指令和跳转指令;所述对性能关键性指令进行第一次执行,或者对访存指令进行第一次执行,包括:如果所述通用运算指令满足执行条件,则基于第一个算术逻辑单元ALU1对所述通用运算指令执行第一次操作;如果所述跳转指令满足执行条件,则基于第一个分支跳转单元 BJP1对所述跳转指令执行第一次操作;如果所述访存指令满足执行条件,则基于第一个访存操作单元AGU1对所述访存指令进行第一次执行;
对访存指令进行第二次执行,包括:如果执行条件满足,由第二个访存操作单元AGU2对所述访存指令进行执行;如果执行条件不满足,所述访存指令继续流转到下一步骤;
对性能关键性指令进行第二次执行,包括:如果在所述对读取的指令进行解析中所解码的是所述性能关键性指令,并且在所述对性能关键性指令进行第一次执行中没有满足执行所述性能关键性指令的条件,将所述性能关键性指令会继续流转到有执行单元的模块;
异常处理;
若对所述性能关键性指令未执行所述第一次执行和所述第二次执行,且获取到足够的执行数据时,则对所述性能关键性指令进行第三次执行。
2.根据权利要求1所述的指令处理方法,其特征在于,所述对性能关键性指令进行第一次执行的条件为:所述性能关键性指令在第一次执行点没有数据依赖关系。
3.根据权利要求2所述的指令处理方法,其特征在于,在所述性能关键性指令在所述第一次执行点存在所述数据依赖关系时,所述性能关键性指令流向下一级。
4.根据权利要求1所述的指令处理方法,其特征在于,所述对性能关键性指令进行第二次执行的条件为:所述性能关键性指令在第二次执行点没有数据依赖关系。
5.根据权利要求4所述的指令处理方法,其特征在于,所述性能关键性指令在所述第二次执行点存在数据依赖关系时,所述性能关键性指令流向下一级。
6.根据权利要求1所述的指令处理方法,其特征在于,所述对性能关键性指令进行第三次执行的条件为:所述性能关键性指令在第三次执行点没有数据依赖关系。
7.根据权利要求1所述的指令处理方法,其特征在于,所述从存储器中读取指令包括:
对指令执行预取;
将指令对齐;
对指令执行预解码。
8.根据权利要求1所述的指令处理方法,其特征在于,所述对读取的指令进行解析,包括:
对指令进行全解码,以解析出完整的指令信息。
9.根据权利要求1所述的指令处理方法,其特征在于,在对性能关键性指令进行第二次执行的执行点,还用于执行系统状态寄存器访问指令。
10.根据权利要求1所述的指令处理方法,其特征在于,在对性能关键性指令进行第三次执行的执行点,还用于执行浮点运算指令和单指令多数据指令。
11.根据权利要求1所述的指令处理方法,其特征在于,所述性能关键性指令包括通用运算指令和跳转指令。
12.一种指令处理装置,其特征在于,包括:
读取模块,用于从存储器中读取指令;
解析模块,用于对读取的指令进行解析;
第一执行模块,用于对性能关键性指令进行第一次执行,或者对访存指令进行第一次执行;其中,所述性能关键性指令包括通用运算指令和跳转指令;所述对性能关键性指令进行第一次执行,或者对访存指令进行第一次执行,包括:如果所述通用运算指令满足执行条件,则基于第一个算术逻辑单元ALU1对所述通用运算指令执行第一次操作;如果所述跳转指令满足执行条件,则基于第一个分支跳转单元 BJP1对所述跳转指令执行第一次操作;如果所述访存指令满足执行条件,则基于第一个访存操作单元AGU1对所述访存指令进行第一次执行;
第二执行模块,用于对访存指令进行第二次执行,包括:如果执行条件满足,由第二个访存操作单元AGU2对所述访存指令进行执行;如果执行条件不满足,所述访存指令继续流转到下一步骤;
第三执行模块,用于对性能关键性指令进行第二次执行,包括:如果在所述对读取的指令进行解析中所解码的是所述性能关键性指令,并且在所述对性能关键性指令进行第一次执行中没有满足执行所述性能关键性指令的条件,将所述性能关键性指令会继续流转到有执行单元的模块;
第四执行模块,用于异常处理;
第五执行模块,用于若对所述性能关键性指令未执行所述第一次执行和所述第二次执行,且获取到足够的执行数据时,则对所述性能关键性指令进行第三次执行。
13.一种计算机设备,包括:包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11中任一项所述方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311466281.5A CN117193861B (zh) | 2023-11-07 | 2023-11-07 | 指令处理方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311466281.5A CN117193861B (zh) | 2023-11-07 | 2023-11-07 | 指令处理方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117193861A CN117193861A (zh) | 2023-12-08 |
CN117193861B true CN117193861B (zh) | 2024-03-15 |
Family
ID=89002012
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311466281.5A Active CN117193861B (zh) | 2023-11-07 | 2023-11-07 | 指令处理方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117193861B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117931294A (zh) * | 2024-03-22 | 2024-04-26 | 芯来智融半导体科技(上海)有限公司 | 指令处理设备和处理系统 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6532530B1 (en) * | 1999-02-27 | 2003-03-11 | Samsung Electronics Co., Ltd. | Data processing system and method for performing enhanced pipelined operations on instructions for normal and specific functions |
CN1902582A (zh) * | 2003-11-17 | 2007-01-24 | 模拟设备股份有限公司 | 具有优化的存储器访问的数字信号处理器架构 |
CN101002169A (zh) * | 2004-05-19 | 2007-07-18 | Arc国际(英国)公司 | 微处理器架构 |
CN102866982A (zh) * | 2012-09-14 | 2013-01-09 | 复旦大学 | 基于fpga的8位复杂指令集中央处理器 |
CN104731719A (zh) * | 2013-12-24 | 2015-06-24 | 上海芯豪微电子有限公司 | 一种缓存系统和方法 |
CN105426160A (zh) * | 2015-11-10 | 2016-03-23 | 北京时代民芯科技有限公司 | 基于sprac v8指令集的指令分类多发射方法 |
CN110928577A (zh) * | 2019-11-14 | 2020-03-27 | 中国人民解放军国防科技大学 | 一种带异常返回的向量存储指令的执行方法 |
US11016769B1 (en) * | 2019-12-31 | 2021-05-25 | Baidu Online Network Technology (Beijing) Co., Ltd. | Method and apparatus for processing information |
CN113703845A (zh) * | 2021-08-17 | 2021-11-26 | 山东大学 | 一种基于risc-v的可重构嵌入式处理器微架构及其工作方法 |
CN114003289A (zh) * | 2021-11-02 | 2022-02-01 | 武汉深之度科技有限公司 | 一种应用程序运行方法、计算设备及存储介质 |
CN114840256A (zh) * | 2021-01-30 | 2022-08-02 | 华为技术有限公司 | 一种程序数据级并行分析方法、装置及相关设备 |
CN115688640A (zh) * | 2022-09-24 | 2023-02-03 | 复旦大学 | 基于超标量risc-v处理器流水线的协处理器访存接口 |
CN116724291A (zh) * | 2021-01-15 | 2023-09-08 | Arm有限公司 | 加载区块指令和存储区块指令 |
CN116821975A (zh) * | 2023-05-19 | 2023-09-29 | 复旦大学 | 基于加载指令依赖链的risc-v处理器防御幽灵攻击方法 |
CN116974633A (zh) * | 2023-07-27 | 2023-10-31 | 中科南京智能技术研究院 | 一种用于risc-v处理器的三级流水线微架构 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9886277B2 (en) * | 2013-03-15 | 2018-02-06 | Intel Corporation | Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources |
US9524170B2 (en) * | 2013-12-23 | 2016-12-20 | Intel Corporation | Instruction and logic for memory disambiguation in an out-of-order processor |
-
2023
- 2023-11-07 CN CN202311466281.5A patent/CN117193861B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6532530B1 (en) * | 1999-02-27 | 2003-03-11 | Samsung Electronics Co., Ltd. | Data processing system and method for performing enhanced pipelined operations on instructions for normal and specific functions |
CN1902582A (zh) * | 2003-11-17 | 2007-01-24 | 模拟设备股份有限公司 | 具有优化的存储器访问的数字信号处理器架构 |
CN101002169A (zh) * | 2004-05-19 | 2007-07-18 | Arc国际(英国)公司 | 微处理器架构 |
CN102866982A (zh) * | 2012-09-14 | 2013-01-09 | 复旦大学 | 基于fpga的8位复杂指令集中央处理器 |
CN104731719A (zh) * | 2013-12-24 | 2015-06-24 | 上海芯豪微电子有限公司 | 一种缓存系统和方法 |
CN105426160A (zh) * | 2015-11-10 | 2016-03-23 | 北京时代民芯科技有限公司 | 基于sprac v8指令集的指令分类多发射方法 |
CN110928577A (zh) * | 2019-11-14 | 2020-03-27 | 中国人民解放军国防科技大学 | 一种带异常返回的向量存储指令的执行方法 |
US11016769B1 (en) * | 2019-12-31 | 2021-05-25 | Baidu Online Network Technology (Beijing) Co., Ltd. | Method and apparatus for processing information |
CN116724291A (zh) * | 2021-01-15 | 2023-09-08 | Arm有限公司 | 加载区块指令和存储区块指令 |
CN114840256A (zh) * | 2021-01-30 | 2022-08-02 | 华为技术有限公司 | 一种程序数据级并行分析方法、装置及相关设备 |
CN113703845A (zh) * | 2021-08-17 | 2021-11-26 | 山东大学 | 一种基于risc-v的可重构嵌入式处理器微架构及其工作方法 |
CN114003289A (zh) * | 2021-11-02 | 2022-02-01 | 武汉深之度科技有限公司 | 一种应用程序运行方法、计算设备及存储介质 |
CN115688640A (zh) * | 2022-09-24 | 2023-02-03 | 复旦大学 | 基于超标量risc-v处理器流水线的协处理器访存接口 |
CN116821975A (zh) * | 2023-05-19 | 2023-09-29 | 复旦大学 | 基于加载指令依赖链的risc-v处理器防御幽灵攻击方法 |
CN116974633A (zh) * | 2023-07-27 | 2023-10-31 | 中科南京智能技术研究院 | 一种用于risc-v处理器的三级流水线微架构 |
Non-Patent Citations (1)
Title |
---|
低代价锁步EDDI:处理器瞬时故障检测机制;王超;傅忠传;陈红松;崔刚;;计算机学报(12) * |
Also Published As
Publication number | Publication date |
---|---|
CN117193861A (zh) | 2023-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8200987B2 (en) | Dynamic object-level code translation for improved performance of a computer processor | |
US5404552A (en) | Pipeline risc processing unit with improved efficiency when handling data dependency | |
US5627985A (en) | Speculative and committed resource files in an out-of-order processor | |
KR100616722B1 (ko) | 수퍼스칼라프로세서내의파이프라인명령디스패치유닛 | |
US8762444B2 (en) | Fast condition code generation for arithmetic logic unit | |
CN117193861B (zh) | 指令处理方法、装置、计算机设备和存储介质 | |
WO2011138180A1 (en) | Managing variable length instructions | |
CN110825437B (zh) | 用于处理数据的方法和装置 | |
JP2006313422A (ja) | 演算処理装置及びデータ転送処理の実行方法 | |
GB2287108A (en) | Method and apparatus for avoiding writeback conflicts between execution units sharing a common writeback path | |
JP3813157B2 (ja) | スーパースカラ・プロセッサにおける複合命令のマルチパイプ・ディスパッチおよび実行 | |
KR100983135B1 (ko) | 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법 | |
KR100986375B1 (ko) | 피연산자의 빠른 조건부 선택 | |
CN116662255A (zh) | 结合超越函数硬件加速器的risc-v处理器实现方法及系统 | |
CN112182999B (zh) | 一种基于mips32指令系统的三级流水线cpu设计方法 | |
US11481223B2 (en) | Reducing operations of sum-of-multiply-accumulate (SOMAC) instructions | |
US7437544B2 (en) | Data processing apparatus and method for executing a sequence of instructions including a multiple iteration instruction | |
EP1194835A2 (en) | Method and apparatus for loose register encoding within a pipelined processor | |
US5713012A (en) | Microprocessor | |
CN117806712A (zh) | 指令处理方法、装置、计算机设备和存储介质 | |
WO2004092950A2 (en) | Support for conditional operations in time-stationary processors | |
JP2004508607A (ja) | 例外ルーチンを有するプロセッサのレジスタライトトラフィックを減じる装置及び方法 | |
EP4254177A1 (en) | Synchronous microthreading | |
US20230315455A1 (en) | Synchronous microthreading | |
WO2024029174A1 (ja) | ジャンプ命令に基づくパイプライン処理を制御するプロセッサ及びプログラム記録媒体 |
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 |