CN114443142A - 循环指令处理方法、装置、芯片、电子设备及存储介质 - Google Patents
循环指令处理方法、装置、芯片、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114443142A CN114443142A CN202210113076.XA CN202210113076A CN114443142A CN 114443142 A CN114443142 A CN 114443142A CN 202210113076 A CN202210113076 A CN 202210113076A CN 114443142 A CN114443142 A CN 114443142A
- Authority
- CN
- China
- Prior art keywords
- loop
- instruction
- layer
- instructions
- cycle
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 92
- 238000012545 processing Methods 0.000 title claims abstract description 25
- 230000008569 process Effects 0.000 claims abstract description 51
- 238000004364 calculation method Methods 0.000 claims description 20
- 238000003672 processing method Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 12
- 230000009191 jumping Effects 0.000 claims description 8
- 230000006870 function Effects 0.000 description 9
- 101100394003 Butyrivibrio fibrisolvens end1 gene Proteins 0.000 description 8
- 238000012423 maintenance Methods 0.000 description 7
- 101100072652 Xenopus laevis ins-b gene Proteins 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011895 specific detection Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30069—Instruction skipping instructions, e.g. SKIP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本公开提供了一种循环指令处理方法、装置、芯片、电子设备及存储介质,其中,该方法包括:获取多层循环指令;所述多层循环指令包含多层嵌套的循环指令;在所述处理器的参数寄存器中获取所述多层循环指令的各层循环指令的循环参数;在所述多层循环指令的执行过程中,基于所述各层循环指令的状态信息和所述各层循环指令的循环参数确定所述各层循环指令中循环体的执行逻辑;所述状态信息用于指示该对应层循环指令的实时执行状态;基于所述执行逻辑控制执行所述各层循环指令中的循环体。
Description
技术领域
本公开涉及计算机的技术领域,具体而言,涉及一种循环指令处理方法、装置、芯片、电子设备及存储介质。
背景技术
在现有计算机语言中,循环语句为经常会使用的程序语言。例如,针对一个for循环(for i=0;i<N;i++)语句,该for循环语句在经过编译器编译之后可以编译得到数据运算分支和条件判断分支。
在现有for循环语句执行过程中,通常通过编译结果中的条件判断分支来控制for循环语句的执行过程。当一个for循环语句内包含多层嵌套内循环时,该for循环中的每一条语句将被编译成对应的指令。当for循环语句结构复杂时,该for循环语句将被编译成更加复杂的指令,从而影响了处理器的处理效率。
发明内容
本公开实施例至少提供一种循环指令处理方法、装置、芯片、电子设备及存储介质。
第一方面,本公开实施例提供了一种循环指令处理方法,应用于处理器,包括:获取多层循环指令;所述多层循环指令包含多层嵌套的循环指令;在所述处理器的参数寄存器中获取所述多层循环指令的各层循环指令的循环参数;在所述多层循环指令的执行过程中,基于所述各层循环指令的状态信息和所述各层循环指令的循环参数确定所述各层循环指令中循环体的执行逻辑;所述状态信息用于指示该对应层循环指令的实时执行状态;基于所述执行逻辑控制执行所述各层循环指令中的循环体。
在本公开实施例中,通过维护循环参数和状态信息控制执行各层循环指令中循环体的执行逻辑,可以实现通过执行每层循环指令的循环体来实现多层循环指令的指令功能,从而可以实现省略执行for语句,简化了指令周期,进而提高了处理器的执行效率,实现处理器的高效执行。
一种可选的实施方式中,所述基于所述各层循环指令的状态信息和所述各层循环指令的循环参数确定所述各层循环指令中循环体的执行逻辑,包括:获取每层循环指令的实时循环次数;将所述实时循环次数与所述循环参数中对应层循环指令的循环结束参数进行比对,得到比对结果;根据所述比对结果确定每层循环指令中循环体的执行逻辑。
通过上述描述可知,在本公开实施例中,通过每层循环指令的实时循环次数,可以控制每层循环指令中循环体的跳转逻辑,通过该处理方式,可以省略for循环的执行步骤,从而可以简化指令周期,进而提高了处理器的执行效率,实现处理器的高效执行。
一种可选的实施方式中,所述方法还包括:检测所述各层循环指令中满足更新条件的循环指令;所述更新条件为更新对应循环指令的实时循环次数的条件;更新所述满足更新条件的循环指令的实时循环次数。
上述实施方式中,通过处理器中的状态寄存器维护每层循环指令的实时循环次数,可以实现通过处理器中的硬件设备控制每层循环指令的循环体的循环次数,可以实现每层循环指令的实时执行状态的动态自维护,从而可以实现循环指令的高效实现。
一种可选的实施方式中,所述检测所述各层循环指令中满足更新条件的循环指令,包括:获取所述各层循环指令中目标循环指令的循环跳转信号;其中,所述循环跳转信号用于指示是否跳转执行目标循环指令的起始PC指针所指示的指令,所述目标循环指令为所述多层循环指令中除最内层循环指令之外的其他循环指令;获取所述目标循环指令内嵌套的循环指令的执行信息;在确定所述循环跳转信号为回跳信号,以及所述执行信息为执行完成的情况下,确定所述目标循环指令为所述满足更新条件的循环指令。
一种可选的实施方式中,所述确定所述循环跳转信号为回跳信号,包括:在检测到PC指针指向所述目标循环指令的目标指令,且检测到所述目标循环指令未执行最后一次循环计算的情况下,确定所述目标循环指令的循环跳转信号为回跳信号;其中,所述目标指令为所述目标循环指令的最后一个指令。
上述实施方式中,通过状态寄存器维护循环跳转信号和完成指示信号,可以实现通过处理器中的硬件设备确定实时循环次数的更新条件,从而实现每层循环指令的实时执行状态的动态自维护,从而可以实现循环指令的高效实现。
一种可选的实施方式中,所述基于所述各层循环指令的状态信息和所述各层循环指令的循环参数确定所述各层循环指令中循环体的执行逻辑,包括:检测所述各层循环指令的指令结束信号;基于检测到的所述指令结束信号和所述循环参数,确定所述各层循环指令中循环体的执行逻辑。
一种可选的实施方式中,所述检测所述各层循环指令的指令结束信号,包括:在检测到所述各层循环指令执行至该层循环指令的最后一次循环过程的最后一条指令的情况下,确定检测到该层循环指令的指令结束信号。
通过上述描述可知,在本公开实施例中,通过每层循环指令的指令结束信号,可以控制每层循环指令中循环体的执行逻辑,通过该处理方式,可以省略for循环的执行步骤,从而可以简化指令周期,进而提高了处理器的执行效率,实现处理器的高效执行。
一种可选的实施方式中,所述检测到所述各层循环指令执行至该层循环指令的最后一次循环过程的最后一条指令,包括:获取当前时刻PC指针所指向循环指令的下一个指令周期,得到第一指令周期;在确定出所述第一指令周期大于目标数值,且该PC指针所指向循环指令的内嵌循环指令执行完成,以及所述循环指令执行最后一次循环过程的情况下,确定执行至该循环指令的最后一次循环过程的最后一条指令;所述目标数值为该循环指令的起始指针和该循环指令的循环体内所包含指令数量之和。
一种可选的实施方式中,在获取多层循环指令之后,所述方法包括:在所述多层循环指令的各层循环指令中确定第一循环指令;其中,所述第一循环指令为待分配指令标识的循环指令;在预设循环标识中确定处于空闲状态的空闲循环标识;基于所述空闲循环标识确定所述第一循环指令的循环标识;其中,所述第一循环指令的循环标识用于指示该第一循环指令的循环层数;基于所述第一循环指令的循环标识在所述参数寄存器存储所述第一循环指令的循环参数。
一种可选的实施方式中,所述方法还包括:在所述预设循环标识中不包含空闲循环标识的情况下,在所述多层循环指令中检测第二循环指令;所述第二循环指令为循环结束循环的指令;基于所述第二循环指令的循环标识确定所述第一循环指令的循环标识。
一种可选的实施方式中,所述在所述多层循环指令中检测第二循环指令,包括:获取所述各层循环指令的指令工作状态;基于所述指令工作状态在所述多层循环指令中确定指令执行结束的循环指令,并基于所述指令执行结束的循环指令确定所述第二循环指令。
上述实施方式中,通过为多层循环指令中的每层循环指令动态分配循环标识的方式,可以实现每层循环指令的循环层数的自维护,从而可以提高处理器对多层循环指令的兼容性。
一种可选的实施方式中,所述基于所述执行逻辑控制执行所述各层循环指令中的循环体,包括:在所述执行逻辑为跳转至所述多层循环指令中多个循环指令的起始PC指针所指向指令的情况下,确定所述多个循环指令中位于最内层的循环指令为待跳转指令;跳转至所述待跳转指令的起始PC指针处执行所述待跳转指令。
上述实施方式中,通过为多层循环指令中的每层循环指令动态分配循环标识的方式,可以实现每层循环指令的循环层数的自维护,从而可以提高处理器对多层循环指令的兼容性。
第二方面,本公开实施例提供了一种循环指令处理装置,包括:控制器、参数寄存器、以及运算器;所述控制器,用于获取多层循环指令;所述多层循环指令包含多层嵌套的循环指令;以及在所述参数寄存器中获取所述多层循环指令的各层循环指令的循环参数;以及在所述多层循环指令的执行过程中,基于所述各层循环指令的状态信息和所述各层循环指令的循环参数确定所述各层循环指令中循环体的执行逻辑;所述状态信息用于指示该对应层循环指令的实时执行状态;运算器,用于基于所述执行逻辑控制执行所述各层循环指令中的循环体。
第三方面,本公开实施例还提供一种芯片,其特征在于,包括:如第二方面中任一项所述的指令处理装置。
第四方面,本公开实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤;或者包括如第三方面所述的芯片。
第五方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种循环指令处理方法的流程图;
图2示出了本公开实施例所提供的一种循环指令处理方法中,基于所述各层循环指令的状态信息和所述各层循环指令的循环参数确定所述各层循环指令中循环体的执行逻辑的具体方法的流程图;
图3示出了本公开实施例所提供的一种循环指令处理方法中,检测所述各层循环指令中满足更新条件的循环指令的具体方法的流程图;
图4示出了本公开实施例所提供的一种循环指令处理方法中,基于所述各层循环指令的状态信息和所述各层循环指令的循环参数确定所述各层循环指令中循环体的执行逻辑的具体方法的流程图;
图5示出了本公开实施例所提供的一种循环指令处理装置的示意图;
图6示出了本公开实施例所提供的一种电子设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
经研究发现,人工智能作为新一轮科技革命和产业变革的核心驱动力,正快速催生新产品、新服务、新业态,重塑着经济社会运行模式,改变人类生产和生活方式。神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型,是由大量处理单元互联组成的非线性、自适应信息处理系统。神经网络的研究能促进或者加快人工智能的发展。
卷积计算是神经网络中需要实现的最主要功能之一,在卷积的计算过程中将遍历图像矩阵及卷积核进行重复的点积运算,对图像和卷积核的遍历就会用到for循环(for i=0;i<N;i++)语句;对于多维图像及卷积核通常会用到多重循环语句。在边缘计算等应用场景下通常对计算的速度有着较高的要求,因此循环指令这类控制信息的高效执行是十分必要。
在现有for循环语句执行过程中,通常通过编译结果中的条件判断分支来控制for循环语句的执行过程。当一个for循环语句内包含多层嵌套内循环时,该for循环中的每一条语句将被编译成对应的指令。当for循环语句结构复杂时,该for循环语句将被编译成更加复杂的指令,从而影响了处理器的处理效率。
基于上述研究,本公开提供了一种循环指令处理方法、装置、电子设备及存储介质。在本公开实施例中,在获取到多层循环指令之后,可以在处理器的参数寄存器中获取多层循环指令的各层循环指令的循环参数,并在多层循环指令的执行过程中,基于各层循环指令的状态信息和各层循环指令的循环参数确定各层循环指令中循环体的执行逻辑;其中,状态信息用于指示该对应层循环指令的实时执行状态;进而基于执行逻辑控制执行所述各层循环指令中的循环体。在本公开实施例中,通过维护循环参数和状态信息控制执行各层循环指令中循环体的执行逻辑,可以实现通过执行每层循环指令的循环体来实现多层循环指令的指令功能,从而可以实现省略执行for语句,简化了指令周期,进而提高了处理器的执行效率,实现处理器的高效执行。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种循环指令处理方法进行详细介绍,本公开实施例所提供的循环指令处理方法的执行主体一般为具有一定计算能力的电子设备。
参见图1所示,为本公开实施例提供的一种循环指令处理方法的流程图,所述方法包括步骤S101~S107,其中:
S101:获取多层循环指令;所述多层循环指令包含多层嵌套的循环指令。
在本公开实施例中,多层循环指令可以为包含N层嵌套的循环指令,其中,N为大于1的正整数。例如,多层循环指令可以为2层循环指令,3层循环指令,本公开对多层循环指令的指令层数不作具体限定。
举例来说,多层循环指令可以为以下for循环指令:
for(i=0;i<3;i++)
{a=a+1};
for(j=0;j<3;j++)
{b=b+1};
这里,for(i=0;i<3;i++)可以标记为for1,表示为外循环,for(j=0;j<3;j++)可以标记为for2,表示为外循环for1内嵌套的循环指令。
针对外循环for1来说,该外循环for1的循环内容包括:“{a=a+1}”、“for(j=0;j<3;j++)”和“{b=b+1}”;针对内循环for2来说,该内循环for2的循环内容包括:“{b=b+1}”。
S103:在所述处理器的参数寄存器中获取所述多层循环指令的各层循环指令的循环参数。
在本公开实施例中,可以预先在处理器中为每层循环指令确定一个或者多个参数寄存器。这里,参数寄存器用于存储对应层循环指令的循环参数。
在本公开实施例中,每层循环指令的循环参数可以包含以下参数:循环指令起始PC指针、循环体的指令数量、循环步长、循环结束参数(例如,循环次数)等信息。
针对每个参数寄存器包含对应的层数信息,该层数信息为该参数寄存器所对应循环指令在多层循环指令中的循环层数。
S105:在所述多层循环指令的执行过程中,基于所述各层循环指令的状态信息和所述各层循环指令的循环参数确定所述各层循环指令中循环体的执行逻辑;所述状态信息用于指示该对应层循环指令的实时执行状态。
举例来说,多层循环指令可以为以下for循环指令:
for(i=0;i<3;i++)
{a=a+1};
for(j=0;j<3;j++)
{b=b+1};
上述for循环指令中,{a=a+1}为外循环for1中的循环体,{b=b+1}为内循环for2中的循环体。
通过上述描述可知,在本公开实施例中,在通过各层循环指令的循环参数控制多层循环指令的执行过程中,可以执行每层循环指令中的循环体,从而省略执行每层循环指令中的条件判断分支所对应的指令,例如for(i=0;i<3;i++)和for(j=0;j<3;j++)所对应的指令。通过该处理方式,可以简化指令周期,从而实现处理器的高效执行。
这里,每层循环指令中循环体的执行逻辑可以理解为每层循环指令中循环体的跳转逻辑。
例如,上述for循环指令,该执行逻辑可以理解为每层循环指令中循环体{a=a+1}和{b=b+1}之间的跳转逻辑。在循环参数的控制下,可以通过执行循环体{a=a+1}和{b=b+1}来实现多层循环指令的指令功能,从而省略执行for(i=0;i<3;i++)和for(j=0;j<3;j++)所对应的指令。
S107:基于所述执行逻辑控制执行所述各层循环指令中的循环体。
在本公开实施例中,在获取到多层循环指令之后,可以在处理器的参数寄存器中获取多层循环指令的各层循环指令的循环参数,并在多层循环指令的执行过程中,基于各层循环指令的状态信息和各层循环指令的循环参数确定各层循环指令中循环体的执行逻辑;其中,状态信息用于指示该对应层循环指令的实时执行状态;进而基于执行逻辑控制执行所述各层循环指令中的循环体。在本公开实施例中,通过维护循环参数和状态信息控制执行各层循环指令中循环体的执行逻辑,可以实现通过执行每层循环指令的循环体来实现多层循环指令的指令功能,从而可以实现省略执行for语句,简化了指令周期,进而提高了处理器的执行效率,实现处理器的高效执行。
下面将结合具体实施例描述上述循环指令处理方法。
在本公开实施例中,在获取到上述多层循环指令之后,可以解析得到每层循环指令的循环参数,并将解析到的循环参数存储至对应的参数寄存器中。
在执行该多层循环指令的过程中,可以在处理器的参数寄存器中获取多层循环指令的循环参数。以及在执行该多层循环指令的过程中,获取处理器中状态寄存器中的状态信息,该状态信息用于指示该对应层循环指令的实时执行状态。
这里,实时执行状态可以对应多个维度的执行状态,针对每层循环指令的每个维度下的执行状态,可以分别设置不同的状态寄存器。
之后,就可以基于各层循环指令的状态信息和所述各层循环指令的循环参数确定所述各层循环指令中循环体的执行逻辑。
在一个可选的实施方式中,如图2所示,上述步骤S105:基于所述各层循环指令的状态信息和所述各层循环指令的循环参数确定所述各层循环指令中循环体的执行逻辑,具体包括如下步骤:
步骤S201:获取每层循环指令的实时循环次数;
步骤S202:将所述实时循环次数与所述循环参数中对应层循环指令的循环结束参数进行比对,得到比对结果;
步骤S203:根据所述比对结果确定每层循环指令中循环体的执行逻辑。
在本公开实施例中,在执行每层循环指令时,可以获取该层循环指令的实时循环次数,从而根据该实时循环次数和该层循环指令的循环结束参数进行比对,从而得到比对结果。
在本公开实施例中,可以从第一状态寄存器中获取每层循环指令的实时循环次数。这里,第一状态寄存器为处理器的状态寄存器中用于存储对应层循环指令的实时循环次数的寄存器。
这里,循环结束参数可以理解为该层循环指令的最大循环次数。此时,可以将实时循环次数与最大循环次数进行比对,从而得到比对结果。例如,该比对结果可以为实时循环次数等于最大循环次数,或者实时循环次数小于最大循环次数。
在得到比对结果之后,就可以根据该比对结果确定该层循环指令中循环体的执行逻辑,例如,回跳继续执行该循环指令,或者,执行下一个循环指令。
具体实施时,针对多层循环指令的每层循环指令,在每层循环指令执行到该循环指令的循环体的最后时,可以将该层循环指令的实时循环次数与该层循环指令的最大循环次数进行比对,从而根据比对结果确定是回跳继续该层循环指令,还是继续执行下一个循环指令。
通过上述描述可知,在本公开实施例中,通过每层循环指令的实时循环次数,可以控制每层循环指令中循环体的跳转逻辑,通过该处理方式,可以省略for循环的执行步骤,从而可以简化指令周期,进而提高了处理器的执行效率,实现处理器的高效执行。
通过上述描述可知,可以从第一状态寄存器中获取对应层循环指令的实时循环次数。针对第一状态寄存器中存储的实时循环次数,需要实时进行更新,具体更新方法描述如下:
(1)、检测所述各层循环指令中满足更新条件的循环指令;所述更新条件为更新对应循环指令的实时循环次数的条件;
(2)、更新所述满足更新条件的循环指令的实时循环次数。
在本公开实施例中,可以在每层循环指令的执行过程中,检测各层循环指令是否满足更新条件。如果检测到满足该更新条件的循环指令,则可以更新该满足更新条件的循环指令的实时循环次数。
具体实施时,可以确定满足更新条件的循环指令的层数信息,进而根据该层数信息在状态寄存器中确定与该层循环指令相匹配的用于存储该层循环指令的实时循环次数的第一状态寄存器,从而对该第一状态寄存器(记为寄存器R1)中存储的实时循环次数进行更新。
上述实施方式中,通过处理器中的状态寄存器维护每层循环指令的实时循环次数,可以实现通过处理器中的硬件设备控制每层循环指令的循环体的循环次数,可以实现每层循环指令的实时执行状态的动态自维护,从而可以实现循环指令的高效实现。
在一个可选的实施方式中,如图3所示,上述步骤:检测所述各层循环指令中满足更新条件的循环指令,具体包括如下步骤:
步骤S301:获取所述各层循环指令中目标循环指令的循环跳转信号;其中,所述循环跳转信号用于指示是否跳转执行目标循环指令的起始PC指针所指示的指令,所述目标循环指令为所述多层循环指令中除最内层循环指令之外的其他循环指令;
步骤S302:获取所述目标循环指令内嵌套的循环指令的执行信息;
步骤S303:在确定所述循环跳转信号为回跳信号,以及所述执行信息为执行完成的情况下,确定所述目标循环指令为所述满足更新条件的循环指令。
在本公开实施例中,针对多层循环指令中的每层循环指令,均维护了一个循环跳转信号loop_jump,其中,该循环跳转信号用于指示是否跳转执行对应循环指令的起始PC指针所指示的指令。
具体实施时,可以获取目标循环指令的循环跳转信号,并获取该目标循环指令内嵌套的循环指令的执行信息,例如,循环执行完成或者循环执行未完成。
在本公开实施例中,可以在每层循环指令的执行过程中,从状态寄存器的第二状态寄存器(记为寄存器R2)中获取每层循环指令的循环跳转信号loop_jump。这里,第二状态寄存器为处理器的状态寄存器中用于存储对应层循环指令的循环跳转信号loop_jump的寄存器。
在每层循环指令的执行过程中,还可以从状态寄存器的第三状态寄存器(记为寄存器R3)中获取目标循环指令内嵌套的循环指令的执行信息。这里,第三状态寄存器(寄存器R3)为处理器的状态寄存器中用于存储对应循环指令的内层循环指令的完成指示信号loop_lower_done的寄存器。其中,目标循环指令内嵌套的循环指令的执行信息可以理解为目标循环指令的内层循环指令的完成指示信号loop_lower_done。
在获取到循环跳转信号和执行信息之后,就可以基于该循环跳转信号和执行信息确定该目标循环指令是否满足更新条件。
具体实施时,如果该循环跳转信号loop_jump拉高,且完成指示信号loop_lower_done拉高,则确定该目标循环指令满足更新条件,此时,可以在目标循环指令所对应的第一状态寄存器中更新该目标循环指令的实时循环次数,例如,实时循环次数加1。
这里,循环跳转信号loop_jump拉高可以理解为循环跳转信号为回跳信号,表示跳转执行目标循环指令的起始PC指针所指示的指令;完成指示信号loop_lower_done拉高表示目标循环指令的内层循环全部执行完成。
在一个可选的实施方式中,上述步骤S303中:确定所述循环跳转信号为回跳信号,具体包括如下步骤:
在检测到PC指针指向所述目标循环指令的目标指令,且检测到所述目标循环指令未执行最后一次循环计算的情况下,确定所述目标循环指令的循环跳转信号为回跳信号;其中,所述目标指令为所述目标循环指令内的最后一个指令。
通过上述描述可知,在本公开实施例中,循环跳转信号loop_jump用于确定在执行该层循环指令的循环体的最后是否回跳至该层循环指令的起始PC指针处继续执行该循环指令。
这里,确定循环跳转信号为回跳信号(或者循环跳转信号loop_jump拉高)的条件包括:
条件1:PC指针到达目标循环指令的目标指令,其中,目标指令为所述目标循环指令内的最后一个指令;
条件2:目标循环指令还未执行最后一次循环计算。
在确定出目标循环指令满足上述条件1和条件2的情况下,确定目标循环指令的循环跳转信号为回跳信号,也即(循环跳转信号loop_jump拉高)。
举例来说,多层循环指令可以为以下for循环指令:
for(i=1;i<3;i++)
{a=a+1};
for(j=1;j<3;j++)
{b=b+1};
上述外循环for1的循环体和内循环for2的循环体的执行过程可以描述为:
1:a=a+1;外循环for1的第一圈循环;
2:b=b+1;内循环for2的第一圈循环;
3:b=b+1;内循环for2的第二圈循环;
4:a=a+1;外循环for1的第二圈循环;
5:b=b+1;内循环for2的第一圈循环;
6:b=b+1;内循环for2的第二圈循环。
在执行上述指令1至指令6的过程中,外循环for1和内循环for2的循环跳转信号loop_jump的具体变化过程描述如下,其中,外循环for1的循环跳转信号loop_jump记为loop_jump1,内循环for2的循环跳转信号loop_jump记为loop_jump2:
(1)指令1(a=a+1):loop_jump1拉低,且loop_jump2拉低。
在执行指令1时,指令1不是外循环for1的最后一条指令,因此,loop_jump1拉低;且指令1不是内循环for2的指令,因此,loop_jump2拉低。
此时,可以在外循环for1所对应的寄存器R2中写入处于拉低状态的循环跳转信号loop_jump1,并在内循环for2所对应的寄存器R2中写入处于拉低状态的循环跳转信号loop_jump2。
(2)指令2(b=b+1):loop_jump1拉低,loop_jump2拉高。
在执行指令2时,内循环for2执行到该层循环的最后一条指令,且还未执行最后一次循环计算,因此,loop_jump2拉高;此时,虽然外循环for1未执行最后一次循环计算,但是指令2不是外循环for1的最后一条指令,因此,loop_jump1拉低。
此时,外循环for1所对应的寄存器R2中写入的循环跳转信号loop_jump1保持不变;将内循环for2所对应的寄存器R2中写入的处于拉低状态的循环跳转信号loop_jump2修改为处于拉高状态的循环跳转信号loop_jump2。
(3)指令2(b=b+1):loop_jump1拉高,且loop_jump2拉低。
在执行指令3时,内循环for2执行到该层循环的最后一条指令,且为最后一次循环计算,因此,loop_jump2拉低;此时,外循环for1还未执行最后一次循环计算,且指令3是外循环for1的最后一条指令,因此,loop_jump1拉高。
在该指令周期中,将外循环for1所对应的寄存器R2中写入的处于拉低状态的循环跳转信号loop_jump1修改为处于拉高状态的循环跳转信号loop_jump1;将内循环for2所对应的寄存器R2中写入的处于拉高状态的循环跳转信号loop_jump2修改为处于拉低状态的循环跳转信号loop_jump2。
(4)指令4(a=a+1):loop_jump1拉低,且loop_jump2拉低。
在执行指令4时,指令4不是外循环for1的最后一条指令,但是为外循环for1的最后一次循环计算,因此,loop_jump1拉低;且指令4不是内循环for2的指令,因此,loop_jump2拉低。
在该指令周期中,将外循环for1所对应的寄存器R2中写入的处于拉高状态的循环跳转信号loop_jump1修改为处于拉低状态的循环跳转信号loop_jump1;内循环for2所对应的寄存器R2中写入的循环跳转信号loop_jump2保持不变。
(5)指令5(b=b+1):loop_jump1拉低,且loop_jump2拉高。
在执行指令5时,指令5为外循环for1的最后一次循环计算中的指令,因此,loop_jump1拉低;此时,内循环for2执行到该层循环的最后一条指令,则还未执行最后一次循环计算,因此,loop_jump2拉高。
在该指令周期中,外循环for1所对应的寄存器R2中写入的循环跳转信号loop_jump1保持不变;将内循环for2所对应的寄存器R2中写入的处于拉低状态的循环跳转信号loop_jump2修改为处于拉高状态的循环跳转信号loop_jump2。
(6)指令6(b=b+1):loop_jump1拉低,且loop_jump2拉低。
在执行指令6时,指令6为外循环for1的最后一次循环计算中的指令,因此,loop_jump1拉低;此时,内循环for2执行到该层循环的最后一条指令,且为最后一次循环计算,因此,loop_jump2拉低。
在该指令周期中,外循环for1所对应的寄存器R2中写入的循环跳转信号loop_jump1保持不变;将内循环for2所对应的寄存器R2中写入的处于拉高状态的循环跳转信号loop_jump2修改为处于拉低状态的循环跳转信号loop_jump2。
通过上述描述可知,当指令执行至3:b=b+1时,则确定该多层循环指令所对应计算机程序的PC指针当前时刻指向外循环for1的最后一条指令(也即,目标指令),且检测到外循环for1还未执行最后一轮循环,且外循环for1的第一轮循环中内嵌循环指令执行结束。此时,可以确定满足实时循环次数的更新条件,执行实时循环次数加1的操作。在执行后续指令之前,可以读取外循环for1的第一状态寄存器中所存储的实时循环次数(例如,1),并根据该实时循环次数确定该外循环for1还未执行最后一次循环计算。且确定出外循环for1的循环跳转信号为回跳信号(即,循环跳转信号loop_jump拉高)。此时,表明需要回跳至该外循环for1的起始PC指针所指示的指令处继续执行该外循环for1,即执行上述4、5和6所描述的指令。
在一个可选的实施方式中,上述步骤S303中:确定目标循环指令内嵌套的循环指令的执行信息为执行完成,具体包括如下步骤:
目标循环指令内嵌套的所有内循环指令的循环跳转信号loop_jump均为不回跳,即,目标循环指令内嵌套的所有内循环指令的循环跳转信号loop_jump均拉低,表示为:loop_jump[loop_id-N:0]=0。其中,loop_id-N:0表示为目标循环指令中层数N至0的内循环的loop_jump均拉低。
在本公开实施例中,在确定出目标循环指令内嵌套的所有内循环指令的循环跳转信号loop_jump均拉低的情况下,可以确定目标循环指令的完成指示信号loop_lower_done拉高,即目标循环指令内嵌套的循环指令的执行信息为执行完成。
以上述指令1至指令6为例来进行说明,假设,目标循环指令为外循环for1,目标循环指令内嵌套的所有内循环指令为内循环for2。针对外循环for1,在执行指令3和指令6时,目标循环指令内嵌套的所有内循环指令的循环跳转信号loop_jump均拉低。
结合各个指令周期内外循环for1的循环跳转信号,内循环for2的循环跳转信号,以及内循环for2的执行信息可知:
在指令2和指令5所对应的指令周期内,内循环for2的循环跳转信号拉高,且该内循环for2不包含内嵌循环指令,此时,内循环for2的实时循环次数执行“+1”的操作,即:可以对内循环for2的第一状态寄存器中的实时循环次数执行“+1”的操作。
在指令3所对应的指令周期内,外循环for1的循环跳转信号拉高,且外循环for1的内存循环指令(即内循环for2)的执行完成(即,内循环for2的循环跳转信号拉低),此时,外循环for1的实时循环次数执行“+1”的操作,即:可以对外循环for1的第一状态寄存器中的实时循环次数执行“+1”的操作。
下面将继续以上述指令1至指令6为例,对第一状态寄存器至第三状态寄存器中所存储数据的变化过程进行描述。假设,第一状态寄存器包括:寄存器R11和寄存器R12,第二状态寄存器包括:寄存器R21和寄存器R22,第三状态寄存器包括:寄存器R31。
其中,寄存器R11用于存储外循环for1的实时循环次数,寄存器R21用于存储外循环for1的循环跳转信号loop_jump1,寄存器R31用于存储外循环for1的完成指示信号loop_lower_done1。
寄存器R12用于存储内循环for2的实时循环次数,寄存器R22用于存储内循环for2的循环跳转信号loop_jump2。由于内循环for2无内层循环,因此,未设置内循环for2的第三状态寄存器。
(1)指令1(a=a+1):loop_jump1拉低,且loop_jump2拉低。
寄存器R11:不更新;寄存器R12:不更新;
寄存器R21:写入loop_jump1拉低;寄存器R22:写入loop_jump2拉低;
寄存器R31:写入loop_lower_done1拉低。
(2)指令2(b=b+1):loop_jump1拉低,且loop_jump2拉高。
寄存器R11:不更新;寄存器R12:实时循环次数+1;
寄存器R21:不更新;寄存器R22:更新为loop_jump2拉高;
寄存器R31:不更新。
(3)指令3(b=b+1):loop_jump1拉高,且loop_jump2拉低。
寄存器R11:实时循环次数+1;寄存器R12:不更新;
寄存器R21:更新为loop_jump1拉高;寄存器R22:更新为loop_jump2拉低;
寄存器R31:更新为loop_lower_done1拉高。
(4)指令4(a=a+1):loop_jump1拉低,且loop_jump2拉低。
寄存器R11:不更新;寄存器R12:不更新;
寄存器R21:更新为loop_jump1拉低;寄存器R22:不更新;
寄存器R31:更新为loop_lower_done1拉低。
(5)指令5(b=b+1):loop_jump1拉低,且loop_jump2拉高。
寄存器R11:不更新;寄存器R12:实时循环次数+1;
寄存器R21:不更新;寄存器R22:更新为loop_jump2拉高;
寄存器R31:不更新。
(6)指令6(b=b+1):loop_jump1拉低,且loop_jump2拉低。
寄存器R11:不更新;寄存器R12:不更新;
寄存器R21:不更新;寄存器R22:更新为loop_jump2拉低;
寄存器R31:更新为loop_lower_done1拉高。
在本公开实施例中,在执行每层循环指令之前,可以从与该层循环指令所对应的第一状态寄存器中读取对应的实时循环次数,从而将该实时循环次数与循环结束参数进行比对,从而根据比对结果确定是否该层循环指令。
上述实施方式中,通过状态寄存器维护循环跳转信号和完成指示信号,可以实现通过处理器中的硬件设备确定实时循环次数的更新条件,从而实现每层循环指令的实时执行状态的动态自维护,从而可以实现循环指令的高效实现。
在一个可选的实施方式中,如图4所示,上述步骤S105:基于所述各层循环指令的状态信息和所述各层循环指令的循环参数确定所述各层循环指令中循环体的执行逻辑,具体包括如下步骤:
步骤S401:检测所述各层循环指令的指令结束信号;
步骤S402:基于检测到的所述指令结束信号和所述循环参数,确定所述各层循环指令中循环体的执行逻辑。
在本公开实施例中,除了按照上述所描述的实时循环次数确定各层循环指令中循环体的执行逻辑之外,还可以基于各层循环指令的指示结束信号loop_end,确定各层循环指令中循环体的执行逻辑。
在图2所描述实施例的基础上,上述过程还可以描述为以下过程:
在本公开实施例中,在执行每层循环指令之前,可以从该层循环指令所对应的第四状态寄存器(记为寄存器R4)中读取该层循环指令的指令结束信号loop_end。如果检测到该指令结束信号loop_end拉高,则确定该层循环指令执行结束。如果检测到该指令结束信号loop_end拉低,且检测到该层循环指令的实时循环次数小于循环结束参数,则继续执行该层循环指令。
在本公开实施例中,在检测到所述各层循环指令执行至该层循环指令的最后一次循环过程的最后一条指令的情况下,确定检测到该层循环指令的指令结束信号。
这里,针对每层循环指令均维护了一个指令结束信号loop_end,该指令结束信号loop_end可以存储在状态寄存器的第四状态寄存器中。针对每层循环指令,均可以对应分配一个第四状态寄存器,该第四状态寄存器用于存储对应循环指令的指令结束信号loop_end。
举例来说,多层循环指令可以为以下for循环指令:
for(i=0;i<3;i++)
{a=a+1};
for(j=0;j<3;j++)
{b=b+1};
上述外循环for1的循环体和内循环for2的循环体的执行过程可以描述为:
1:a=a+1;外循环for1的第一圈循环;
2:b=b+1;内循环for2的第一圈循环;
3:b=b+1;内循环for2的第二圈循环;
4:a=a+1;外循环for1的第二圈循环;
5:b=b+1;内循环for2的第一圈循环;
6:b=b+1;内循环for2的第二圈循环。
当执行至第3条指令时,内循环for2循环结束,此时,内循环for2的指令结束信号loop_end2拉高。
当执行至第6条指令时,内循环for2循环结束,此时,内循环for2的指令结束信号loop_end2拉高;且外循环for1循环结束,此时,外循环for1的指令结束信号loop_end2拉高。
在一个可选的实施方式中,上述步骤:检测到所述各层循环指令执行至该层循环指令的每次循环过程的最后一条指令,具体包括如下步骤:
步骤S11:获取当前时刻PC指针所指向循环指令的下一个指令周期,得到第一指令周期;
步骤S12:在确定出所述第一指令周期大于目标数值,且该PC指针所指向循环指令的内嵌循环指令执行完成,以及所述循环指令执行最后一次循环过程的情况下,确定执行至该循环指令的最后一次循环过程的最后一条指令;所述目标数值为该循环指令的起始指针和该循环指令的循环体内所包含指令数量之和。
在本公开实施例中,以上述外循环for1的循环体和内循环for2的循环体的执行过程为例来进行说明。
举例来说,多层循环指令可以为以下for循环指令:
(1):for(i=1;i<3;i++)
(2): {a=a+1};
(3): for(j=1;j<3;j++)
(4): {b=b+1};
(5):c=c+1;
假设,当前时刻PC指针所指向的循环指令为(4)“{b=b+1}”,此时,可以确定出当前时刻PC指针所指向循环指令的下一个指令周期为(5):c=c+1。针对循环指令(4)“{b=b+1}”来说,该循环指令的起始指针(也即,起始PC指针)所指向的数值为(3):for(j=0;j<3;j++),且循环指令为(4)“b=b+1”的循环体内所包含指令数量为1,此时,起始指针和指令数量之和为3+1=4,其中,第一指令周期5大于3+1=4。
通过上述计算过程可以确定当前时刻所执行的循环指令为外循环for1的内嵌循环指令(for2)。如果外循环for1的内嵌循环指令(即内循环for2)执行完成,则确定检测到该循环指令执行至该循环指令的最后一条指令。此时,该层循环指令到达最后一条指令的指令指示信号loop_last_ins拉高。
在本公开实施例中,可以在第五状态寄存器中维护上述指令指示信号loop_last_ins,针对每层循环指令,均可以维护一个第五状态寄存器。
在本公开实施例中,上述描述的“该循环指令的内嵌循环指令执行完成”可以理解为该循环指令的完成指示信号loop_lower_done拉高,其中,该完成指示信号loop_lower_done可以存储在于该循环指令对应的第三状态寄存器中。
这里,当该循环指令内嵌套的所有内循环指令的循环跳转信号loop_jump均拉低,则确定该循环指令的完成指示信号loop_lower_done拉高。
下面以上述指令1至指令6为例来进行举例说明:
1:a=a+1;外循环for1的第一圈循环;
2:b=b+1;内循环for2的第一圈循环;
3:b=b+1;内循环for2的第二圈循环;
4:a=a+1;外循环for1的第二圈循环;
5:b=b+1;内循环for2的第一圈循环;
6:b=b+1;内循环for2的第二圈循环。
其中,1、2和3为外循环for1的第一圈循环,4、5和6为外循环for1的第二圈循环。
针对第一圈循环,如果当前时刻PC指针所指向的循环指令为(4)“{b=b+1}”,则表明当前时刻所执行的指令为第一圈循环中的指令2和3。如果第一圈循环执行至指令3,则表明外循环for1内嵌循环指令完成,此时,可以确定出外循环for1执行至第一圈循环的最后一条指令。在此情况下,外循环for1的指令指示信号loop_last_ins拉高,由于当前不是外循环for1的最后一圈,因此,外循环for1的指令结束信号loop_end拉低。
针对第二圈循环,如果当前时刻PC指针所指向的循环指令为(4)“{b=b+1}”,则表明当前时刻所执行的指令为第一圈循环中的指令5和6。如果第一圈循环执行至指令6,则表明外循环for1内嵌循环指令完成,此时,可以确定出外循环for1执行至第二圈循环的最后一条指令;且可以确定出外循环for1所执行的第二圈循环为该层循环指令最后一次循环过程,则可以确定出外循环for1执行至最后一次循环过程的最后一条指令。在此情况下,外循环for1的指令指示信号loop_last_ins拉高,由于当前为外循环for1的最后一圈,因此,外循环for1的指令结束信号loop_end拉高。
通过上述描述可知,在本公开实施例中,通过每层循环指令的指令结束信号,可以控制每层循环指令中循环体的执行逻辑,通过该处理方式,可以省略for循环的执行步骤,从而可以简化指令周期,进而提高了处理器的执行效率,实现处理器的高效执行。
在一个可选的实施方式中,在获取多层循环指令之后,该方法还包括如下步骤:
步骤S21:在所述多层循环指令的各层循环指令中确定第一循环指令;其中,所述第一循环指令为待分配指令标识的循环指令;
步骤S22:在预设循环标识中确定处于空闲状态的空闲循环标识;
步骤S23:基于所述空闲循环标识确定所述第一循环指令的循环标识;其中,所述第一循环指令的循环标识用于指示该第一循环指令的循环层数;
步骤S24:基于所述第一循环指令的循环标识在所述参数寄存器存储所述第一循环指令的循环参数。
在本公开实施例中,可以预选设置多个循环标识loop_id(预设循环标识),进而为多层循环指令中的每层循环指令动态分配循环标识loop_id。
具体实施时,在确定出待分配指令标识的循环指令(即,第一循环指令)之后,可以优先在预设循环标识中确定处于空闲状态的空闲循环标识;并在空闲循环标识中确定第一循环指令的循环标识。
在确定出第一循环指令的循环标识之后,就可以将该循环标识确定为该第一循环指令的层数信息(也即,上述循环层数)。之后,就可以基于该层数信息将该第一循环指令的循环参数存储至参数寄存器中。
具体实施时,可以在处理器的多个寄存器中为该第一循环指令确定至少一个参数寄存器,并为这至少一个参数寄存器设置对应的索引,该索引即为第一循环指令的层数信息,以表示该至少一个参数寄存器为对应存储该层数的循环指令的循环参数的参数寄存器。
在本公开实施例中,该方法还包括如下步骤:
(1)、在所述预设循环标识中不包含空闲循环标识的情况下,在所述多层循环指令中检测第二循环指令;所述第二循环指令为循环结束循环的指令;
(2)、基于所述第二循环指令的循环标识确定所述第一循环指令的循环标识。
在本公开实施例中,如果预设循环标识中不包含空闲循环标识,此时,可以在多层循环指令中检测第二循环指令,这里,第二循环指令为循环结束循环的指令,具体检测过程描述如下:
首先,获取所述各层循环指令的指令工作状态;然后,基于所述指令工作状态在所述多层循环指令中确定指令执行结束的循环指令,并基于所述指令执行结束的循环指令确定所述第二循环指令。
具体实施时,可以在状态寄存器的第六状态寄存器中获取各层循环指令的指令工作状态loop_en。可以在状态寄存器为每层循环指令均配置一个第六状态寄存器,该第六状态寄存器用于维护对应循环指令的指令工作状态loop_en。
当来临一条循环指令时,该循环指令的指令工作状态loop_en拉高;当该层循环结束工作时,该循环指令的指令工作状态loop_en拉低。
以上述外循环for1的循环体和内循环for2的循环体的执行过程可以描述为例来进行说明:
1:a=a+1;外循环for1的第一圈循环;
2:b=b+1;内循环for2的第一圈循环;
3:b=b+1;内循环for2的第二圈循环;
4:a=a+1;外循环for1的第二圈循环;
5:b=b+1;内循环for2的第一圈循环;
6:b=b+1;内循环for2的第二圈循环。
当执行第一条指令“a=a+1”时,外循环for1的指令工作状态loop_en一直拉高,直至上述第一条指令至第六条指令全部执行完成,该外循环for1的指令工作状态loop_en一直拉低。
此时,可以理解为在上述多层循环指令循环至第六条指令时,为外循环for1分配的循环标识loop_id可以被释放,此时,外循环for1即为上述第二循环指令。
当执行第2条指令、第3条指令、第5条指令和第6条指令时,内循环for2的指令工作状态loop_en拉高。
此时,可以理解为在上述多层循环指令循环至第2条指令、第3条指令、第5条指令和第6条指令时,为内循环for2分配的循环标识loop_id可以被释放,此时,内循环for2即为上述第二循环指令。
在本公开实施例中,可以通过上述所描述的方式在多层循环指令中确定指令执行结束的循环指令,并基于指令执行结束的循环指令确定所述第二循环指令。
具体地,针对第二循环指令的循环标识loop_id,当第二循环指令执行结束之后,第二循环指令的循环标识loop_id被释放,此时,可以将循环标识loop_id进行复位。复位时将可以根据第一循环指令的循环层数设置loop_id的数值,例如,如果第一循环指令为第二循环指令的上一层循环指令,且第二循环指令的循环层数为N,那么可以将loop_id置为LOOP_N-1,在第一循环指令到来时,loop_id-1。
上述实施方式中,通过为多层循环指令中的每层循环指令动态分配循环标识的方式,可以实现每层循环指令的循环层数的自维护,从而可以提高处理器对多层循环指令的兼容性。
在本公开实施例中,在按照上述所描述的方式确定出执行逻辑之后,就可以基于所述执行逻辑控制执行所述各层循环指令中的循环体,具体包括如下步骤:
(1)、在所述执行逻辑为跳转至所述多层循环指令中多个循环指令的起始PC指针所指向指令的情况下,确定所述多个循环指令中位于最内层的循环指令为待跳转指令;
(2)、跳转至所述待跳转指令的起始PC指针处执行所述待跳转指令。
在本公开实施例中,如果基于该执行逻辑确定出需要回跳至多个循环指令的起始PC指针所指向指令(即,多个循环指令的循环跳转信号loop_jump拉高)的情况下,可以确定多个循环指令中位于最内层的循环指令为待跳转指令,并跳转至所述待跳转指令的起始PC指针处执行所述待跳转指。
上述实施方式中,在多个循环指令的循环跳转信号拉高情况下,通过将多个循环指令中位于最内层的循环指令为待跳转指令的方式,可以保证多层循环指令的正常稳定运行。
下面以下述多层循环指令为例,对本公开实施例中循环指令处理方法进行举例说明:
for(i=1;i<3;i++)
{a=a+1};
for(j=1;j<3;j++)
{b=b+1};
通过上述描述可知,针对上述for循环指令,该执行逻辑可以理解为每层循环指令中循环体{a=a+1}和{b=b+1}之间的跳转逻辑。在循环参数的控制下,可以通过执行循环体{a=a+1}和{b=b+1}来实现多层循环指令的指令功能,从而省略执行for(i=0;i<3;i++)和for(j=0;j<3;j++)所对应的指令。
(1):进入到外循环for1的第一轮循环过程,并执行指令1:a=a+1。
这里,在进入到上述多层循环指令之后,就可以执行for1中的一个循环体a=a+1。
在执行该指令过程中,针对外循环for1和内循环for2:
寄存器R11:实时循环次数不更新;寄存器R12:实时循环次数不更新;
寄存器R21:循环跳转信号loop_jump1拉低;寄存器R22:循环跳转信号loop_jump2拉低;
寄存器R31:完成指示信号loop_lower_done1拉低;
寄存器R41:指令结束信号loop_end1拉低;寄存器R42:指令结束信号loop_end2拉低;
寄存器R51:指令指示信号loop_last_ins1拉低;寄存器R52:指令指示信号loop_last_ins2拉低;
寄存器R61:指令工作状态loop_en1拉高;寄存器R62:指令工作状态loop_en2拉低。
(2):继续执行外循环for1的第一轮循环过程,并执行指令2:b=b+1。
这里,在进入到上述多层循环指令之后,就可以执行for1中的另一个循环体b=b+1。
在执行该指令过程中,针对外循环for1和内循环for2:
寄存器R11:实时循环次数不更新;寄存器R12:实时循环次数+1;
寄存器R21:循环跳转信号loop_jump1拉低;寄存器R22:循环跳转信号loop_jump2拉高;
寄存器R31:完成指示信号loop_lower_done1继续拉低;
寄存器R41:指令结束信号loop_end1拉低;寄存器R42:指令结束信号loop_end2拉低;
寄存器R51:指令指示信号loop_last_ins1拉低;寄存器R52:指令指示信号loop_last_ins2拉高;
寄存器R61:指令工作状态loop_en1拉高;寄存器R62:指令工作状态loop_en2拉高。
在执行指令2之后,通过寄存器R52判断可知,虽然执行至内循环的每轮循环的最后一条指令,但是通过寄存器R12可知,还未执行到内循环的最后一轮。且通过寄存器R12可知,内循环的实时循环次数小于1,且通过寄存器R22可知,循环跳转信号loop_jump2拉高,因此需要继续执行循环体b=b+1,即继续执行下述(3)。
(3):继续执行外循环for1的第一轮循环过程,并执行指令3:b=b+1。
这里,在进入到上述多层循环指令之后,由于循环体b=b+1还未执行到最后一轮的最后一条指令,因此,需要回跳继续执行该循环体b=b+1。
在执行该指令过程中,针对外循环for1和内循环for2:
寄存器R11:实时循环次数+1;寄存器R12:实时循环次数不更新;
寄存器R21:循环跳转信号loop_jump1拉高;寄存器R22:循环跳转信号loop_jump2拉低;
寄存器R31:完成指示信号loop_lower_done1更新为拉高;
寄存器R41:指令结束信号loop_end1拉低;寄存器R42:指令结束信号loop_end2拉高;
寄存器R51:指令指示信号loop_last_ins1拉高;寄存器R52:指令指示信号loop_last_ins2拉高;
寄存器R61:指令工作状态loop_en1拉高;寄存器R62:指令工作状态loop_en2拉高。
在执行指令3之后,通过寄存器R52判断可知,当前时刻已经执行至内循环的每轮循环的最后一条指令,且通过寄存器R21可知,已经执行到内循环的最后一轮。因此,需要为内循环for2生成拉高的指令结束信号,进一步地,通过寄存器R22可知,循环跳转信号loop_jump2拉低,表明不再继续执行循环体b=b+1。
在执行指令3之后,通过寄存器R51判断可知,虽然执行至外循环的每轮循环的最后一条指令,但是通过寄存器R11可知,还未执行到外循环的最后一轮,因此,外循环的指令结束信号loop_end1拉低,表明不结束外循环。且通过寄存器R21可知,循环跳转信号loop_jump1拉高,且通过寄存器R11可知,实时循环次数小于2,因此需要继续执行循环体a=a+1,即继续执行下述(4)。
(4):进入到外循环for1的第二轮循环过程,并执行指令1:a=a+1。
这里,在进入到上述多层循环指令的第二轮循环过程之后,就可以执行for1中的一个循环体a=a+1。
在执行该指令过程中,针对外循环for1和内循环for2:
寄存器R11:实时循环次数不更新;寄存器R12:实时循环次数不更新;
寄存器R21:循环跳转信号loop_jump1拉低;寄存器R22:循环跳转信号loop_jump2拉低;
寄存器R31:完成指示信号loop_lower_done1拉低;
寄存器R41:指令结束信号loop_end1拉低;寄存器R42:指令结束信号loop_end2拉低;
寄存器R51:指令指示信号loop_last_ins1拉低;寄存器R52:指令指示信号loop_last_ins2拉低;
寄存器R61:指令工作状态loop_en1拉高;寄存器R62:指令工作状态loop_en2拉低。
(5):继续执行外循环for1的第二轮循环过程,并执行指令5:b=b+1。
这里,在进入到上述多层循环指令的第二轮循环过程之后,就可以执行for1中的另一个循环体b=b+1。
在执行该指令过程中,针对外循环for1和内循环for2:
寄存器R11:实时循环次数不更新;寄存器R12:实时循环次数+1;
寄存器R21:循环跳转信号loop_jump1拉低;寄存器R22:循环跳转信号loop_jump2拉高;
寄存器R31:完成指示信号loop_lower_done1继续拉低;
寄存器R41:指令结束信号loop_end1拉低;寄存器R42:指令结束信号loop_end2拉低;
寄存器R51:指令指示信号loop_last_ins1拉低;寄存器R52:指令指示信号loop_last_ins2拉高;
寄存器R61:指令工作状态loop_en1拉高;寄存器R62:指令工作状态loop_en2拉高。
在执行指令5之后,通过寄存器R52判断可知,虽然执行至内循环的每轮循环的最后一条指令,但是通过寄存器R12可知,还未执行到内循环的最后一轮。且通过寄存器R22可知,循环跳转信号loop_jump2拉高,因此需要继续执行循环体b=b+1,即继续执行下述(6)。
(6):继续执行外循环for1的第二轮循环过程,并执行指令6:b=b+1。
这里,在进入到上述多层循环指令之后,由于循环体b=b+1还未执行到最后一轮的最后一条指令,因此,需要回跳继续执行该循环体b=b+1。
在执行该指令过程中,针对外循环for1和内循环for2:
寄存器R11:实时循环次数不更新;寄存器R12:实时循环次数不更新;
寄存器R21:循环跳转信号loop_jump1拉低;寄存器R22:循环跳转信号loop_jump2拉低;
寄存器R31:完成指示信号loop_lower_done1更新为拉高;
寄存器R41:指令结束信号loop_end1拉低;寄存器R42:指令结束信号loop_end2拉高;
寄存器R51:指令指示信号loop_last_ins1拉高;寄存器R52:指令指示信号loop_last_ins2拉高;
寄存器R61:指令工作状态loop_en1拉高;寄存器R62:指令工作状态loop_en2拉高。
在执行指令6之后,通过寄存器R52判断可知,当前时刻已经执行至内循环的每轮循环的最后一条指令,且通过寄存器R21可知,已经执行到内循环的最后一轮。因此,需要为内循环for2生成拉高的指令结束信号,进一步地,通过寄存器R22可知,循环跳转信号loop_jump2拉低,表明不再继续执行循环体b=b+1。
在执行指令6之后,通过寄存器R51判断可知,当前时刻已经执行至外循环的每轮循环的最后一条指令,但是通过寄存器R11可知,已经执行到外循环的最后一轮,因此,外循环的指令结束信号loop_end1拉高,表明不结束外循环。且通过寄存器R21可知,循环跳转信号loop_jump1拉低,表明不再继续执行循环体a=a+1,即完成全部循环过程。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与循环指令处理方法对应的循环指令处理装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述循环指令处理方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图5所示,为本公开实施例提供的一种循环指令处理装置的示意图,所述装置包括:控制器10、参数寄存器20、以及运算器30;其中,
所述控制器10,用于获取多层循环指令;所述多层循环指令包含多层嵌套的循环指令;以及在所述参数寄存器20中获取所述多层循环指令的各层循环指令的循环参数;以及在所述多层循环指令的执行过程中,基于所述各层循环指令的状态信息和所述各层循环指令的循环参数确定所述各层循环指令中循环体的执行逻辑;所述状态信息用于指示该对应层循环指令的实时执行状态;
运算器30,用于基于所述执行逻辑控制执行所述各层循环指令中的循环体。
在本公开实施例中,在获取到多层循环指令之后,可以在处理器的参数寄存器中获取多层循环指令的各层循环指令的循环参数,并在多层循环指令的执行过程中,基于各层循环指令的状态信息和各层循环指令的循环参数确定各层循环指令中循环体的执行逻辑;其中,状态信息用于指示该对应层循环指令的实时执行状态;进而基于执行逻辑控制执行所述各层循环指令中的循环体。在本公开实施例中,通过维护循环参数和状态信息控制执行各层循环指令中循环体的执行逻辑,可以实现通过执行每层循环指令的循环体来实现多层循环指令的指令功能,从而可以实现省略执行for语句,简化了指令周期,进而提高了处理器的执行效率,实现处理器的高效执行。
一种可能的实施方式中,控制器10,还用于:获取每层循环指令的实时循环次数;将所述实时循环次数与所述循环参数中对应层循环指令的循环结束参数进行比对,得到比对结果;根据所述比对结果确定每层循环指令中循环体的执行逻辑。
一种可能的实施方式中,该装置还用于:检测所述各层循环指令中满足更新条件的循环指令;所述更新条件为更新对应循环指令的实时循环次数的条件;更新所述满足更新条件的循环指令的实时循环次数。
一种可能的实施方式中,该装置还用于:获取所述各层循环指令中目标循环指令的循环跳转信号;其中,所述循环跳转信号用于指示是否跳转执行目标循环指令的起始PC指针所指示的指令,所述目标循环指令为所述多层循环指令中除最内层循环指令之外的其他循环指令;获取所述目标循环指令内嵌套的循环指令的执行信息;在确定所述循环跳转信号为回跳信号,以及所述执行信息为执行完成的情况下,确定所述目标循环指令为所述满足更新条件的循环指令。
一种可能的实施方式中,该装置还用于:在检测到PC指针指向所述目标循环指令的目标指令,且检测到所述目标循环指令未执行最后一次循环计算的情况下,确定所述目标循环指令的循环跳转信号为回跳信号;其中,所述目标指令为所述目标循环指令的最后一个指令。
一种可能的实施方式中,控制器10,还用于:检测所述各层循环指令的指令结束信号;基于检测到的所述指令结束信号和所述循环参数,确定所述各层循环指令中循环体的执行逻辑。
一种可能的实施方式中,控制器10,还用于:在检测到所述各层循环指令执行至该层循环指令的最后一次循环过程的最后一条指令的情况下,确定检测到该层循环指令的指令结束信号。
一种可能的实施方式中,控制器10,还用于:获取当前时刻PC指针所指向循环指令的下一个指令周期,得到第一指令周期;在确定出所述第一指令周期大于目标数值,且该PC指针所指向循环指令的内嵌循环指令执行完成,以及所述循环指令执行最后一次循环过程的情况下,确定执行至该循环指令的最后一次循环过程的最后一条指令;所述目标数值为该循环指令的起始指针和该循环指令的循环体内所包含指令数量之和。
一种可能的实施方式中,该装置还用于:在获取多层循环指令之后,在所述多层循环指令的各层循环指令中确定第一循环指令;其中,所述第一循环指令为待分配指令标识的循环指令;在预设循环标识中确定处于空闲状态的空闲循环标识;基于所述空闲循环标识确定所述第一循环指令的循环标识;其中,所述第一循环指令的循环标识用于指示该第一循环指令的循环层数;基于所述第一循环指令的循环标识在所述参数寄存器存储所述第一循环指令的循环参数。
一种可能的实施方式中,该装置还用于:在所述预设循环标识中不包含空闲循环标识的情况下,在所述多层循环指令中检测第二循环指令;所述第二循环指令为循环结束循环的指令;基于所述第二循环指令的循环标识确定所述第一循环指令的循环标识。
一种可能的实施方式中,该装置还用于:获取所述各层循环指令的指令工作状态;基于所述指令工作状态在所述多层循环指令中确定指令执行结束的循环指令,并基于所述指令执行结束的循环指令确定所述第二循环指令。
一种可能的实施方式中,运算器30,还用于:在所述执行逻辑为跳转至所述多层循环指令中多个循环指令的起始PC指针所指向指令的情况下,确定所述多个循环指令中位于最内层的循环指令为待跳转指令;跳转至所述待跳转指令的起始PC指针处执行所述待跳转指令。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
对应于图1中的循环指令处理方法,本公开实施例还提供了一种电子设备600,如图6所示,为本公开实施例提供的电子设备600结构示意图,包括:
处理器61、存储器62、和总线63;存储器62用于存储执行指令,包括内存621和外部存储器622;这里的内存621也称内存储器,用于暂时存放处理器61中的运算数据,以及与硬盘等外部存储器622交换的数据,处理器61通过内存621与外部存储器622进行数据交换,当所述电子设备600运行时,所述处理器61与所述存储器62之间通过总线63通信,使得所述处理器61执行以下指令:
获取多层循环指令;所述多层循环指令包含多层嵌套的循环指令;
在所述处理器的参数寄存器中获取所述多层循环指令的各层循环指令的循环参数;
在所述多层循环指令的执行过程中,基于所述各层循环指令的状态信息和所述各层循环指令的循环参数确定所述各层循环指令中循环体的执行逻辑;所述状态信息用于指示该对应层循环指令的实时执行状态;
基于所述执行逻辑控制执行所述各层循环指令中的循环体。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的循环指令处理方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的循环指令处理方法的步骤,具体可参见上述方法实施例,在此不再赘述。
本公开实施例还提供一种芯片,包括上述实施例中任一项所述的指令处理装置,具体可参见上述装置实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
Claims (16)
1.一种指令处理方法,其特征在于,应用于处理器,包括:
获取多层循环指令;所述多层循环指令包含多层嵌套的循环指令;
在所述处理器的参数寄存器中获取所述多层循环指令的各层循环指令的循环参数;
在所述多层循环指令的执行过程中,基于所述各层循环指令的状态信息和所述各层循环指令的循环参数确定所述各层循环指令中循环体的执行逻辑;所述状态信息用于指示该对应层循环指令的实时执行状态;
基于所述执行逻辑控制执行所述各层循环指令中的循环体。
2.根据权利要求1所述的方法,其特征在于,所述基于所述各层循环指令的状态信息和所述各层循环指令的循环参数确定所述各层循环指令中循环体的执行逻辑,包括:
获取每层循环指令的实时循环次数;
将所述实时循环次数与所述循环参数中对应层循环指令的循环结束参数进行比对,得到比对结果;
根据所述比对结果确定每层循环指令中循环体的执行逻辑。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
检测所述各层循环指令中满足更新条件的循环指令;所述更新条件为更新对应循环指令的实时循环次数的条件;
更新所述满足更新条件的循环指令的实时循环次数。
4.根据权利要求3所述的方法,其特征在于,所述检测所述各层循环指令中满足更新条件的循环指令,包括:
获取所述各层循环指令中目标循环指令的循环跳转信号;其中,所述循环跳转信号用于指示是否跳转执行目标循环指令的起始PC指针所指示的指令,所述目标循环指令为所述多层循环指令中除最内层循环指令之外的其他循环指令;
获取所述目标循环指令内嵌套的循环指令的执行信息;
在确定所述循环跳转信号为回跳信号,以及所述执行信息为执行完成的情况下,确定所述目标循环指令为所述满足更新条件的循环指令。
5.根据权利要求4所述的方法,其特征在于,所述确定所述循环跳转信号为回跳信号,包括:
在检测到PC指针指向所述目标循环指令的目标指令,且检测到所述目标循环指令未执行最后一次循环计算的情况下,确定所述目标循环指令的循环跳转信号为回跳信号;其中,所述目标指令为所述目标循环指令的最后一个指令。
6.根据权利要求1所述的方法,其特征在于,所述基于所述各层循环指令的状态信息和所述各层循环指令的循环参数确定所述各层循环指令中循环体的执行逻辑,包括:
检测所述各层循环指令的指令结束信号;
基于检测到的所述指令结束信号和所述循环参数,确定所述各层循环指令中循环体的执行逻辑。
7.根据权利要求6所述的方法,其特征在于,所述检测所述各层循环指令的指令结束信号,包括:
在检测到所述各层循环指令执行至该层循环指令的最后一次循环过程的最后一条指令的情况下,确定检测到该层循环指令的指令结束信号。
8.根据权利要求7所述的方法,其特征在于,所述检测到所述各层循环指令执行至该层循环指令的最后一次循环过程的最后一条指令,包括:
获取当前时刻PC指针所指向循环指令的下一个指令周期,得到第一指令周期;
在确定出所述第一指令周期大于目标数值,且该PC指针所指向循环指令的内嵌循环指令执行完成,以及所述循环指令执行最后一次循环过程的情况下,确定执行至该循环指令的最后一次循环过程的最后一条指令;所述目标数值为该循环指令的起始指针和该循环指令的循环体内所包含指令数量之和。
9.根据权利要求1所述的方法,其特征在于,在获取多层循环指令之后,所述方法包括:
在所述多层循环指令的各层循环指令中确定第一循环指令;其中,所述第一循环指令为待分配指令标识的循环指令;
在预设循环标识中确定处于空闲状态的空闲循环标识;
基于所述空闲循环标识确定所述第一循环指令的循环标识;其中,所述第一循环指令的循环标识用于指示该第一循环指令的循环层数;
基于所述第一循环指令的循环标识在所述参数寄存器存储所述第一循环指令的循环参数。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
在所述预设循环标识中不包含空闲循环标识的情况下,在所述多层循环指令中检测第二循环指令;所述第二循环指令为循环结束循环的指令;
基于所述第二循环指令的循环标识确定所述第一循环指令的循环标识。
11.根据权利要求10所述的方法,其特征在于,所述在所述多层循环指令中检测第二循环指令,包括:
获取所述各层循环指令的指令工作状态;
基于所述指令工作状态在所述多层循环指令中确定指令执行结束的循环指令,并基于所述指令执行结束的循环指令确定所述第二循环指令。
12.根据权利要求1所述的方法,其特征在于,所述基于所述执行逻辑控制执行所述各层循环指令中的循环体,包括:
在所述执行逻辑为跳转至所述多层循环指令中多个循环指令的起始PC指针所指向指令的情况下,确定所述多个循环指令中位于最内层的循环指令为待跳转指令;
跳转至所述待跳转指令的起始PC指针处执行所述待跳转指令。
13.一种指令处理装置,其特征在于,包括:控制器、参数寄存器、以及运算器;
所述控制器,用于获取多层循环指令;所述多层循环指令包含多层嵌套的循环指令;以及在所述参数寄存器中获取所述多层循环指令的各层循环指令的循环参数;以及在所述多层循环指令的执行过程中,基于所述各层循环指令的状态信息和所述各层循环指令的循环参数确定所述各层循环指令中循环体的执行逻辑;所述状态信息用于指示该对应层循环指令的实时执行状态;
运算器,用于基于所述执行逻辑控制执行所述各层循环指令中的循环体。
14.一种芯片,其特征在于,包括:如权利要求13所述的指令处理装置。
15.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至12任一所述的循环指令处理方法的步骤;或者包括如权利要求14所述的芯片。
16.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至12任一所述的循环指令处理方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210113076.XA CN114443142A (zh) | 2022-01-29 | 2022-01-29 | 循环指令处理方法、装置、芯片、电子设备及存储介质 |
PCT/CN2022/120852 WO2023142502A1 (zh) | 2022-01-29 | 2022-09-23 | 循环指令处理方法、装置、芯片、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210113076.XA CN114443142A (zh) | 2022-01-29 | 2022-01-29 | 循环指令处理方法、装置、芯片、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114443142A true CN114443142A (zh) | 2022-05-06 |
Family
ID=81372379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210113076.XA Pending CN114443142A (zh) | 2022-01-29 | 2022-01-29 | 循环指令处理方法、装置、芯片、电子设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114443142A (zh) |
WO (1) | WO2023142502A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115113934A (zh) * | 2022-08-31 | 2022-09-27 | 腾讯科技(深圳)有限公司 | 指令处理方法、装置、程序产品、计算机设备和介质 |
WO2023142502A1 (zh) * | 2022-01-29 | 2023-08-03 | 上海商汤智能科技有限公司 | 循环指令处理方法、装置、芯片、电子设备及存储介质 |
CN116893850A (zh) * | 2023-07-10 | 2023-10-17 | 北京辉羲智能科技有限公司 | 一种硬件循环指令转换方法及编译器 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117707619A (zh) * | 2023-11-02 | 2024-03-15 | 上海攸化技术管理咨询有限公司 | 指令的编码方式、运算单元、运算模块及运算方法 |
CN117908967B (zh) * | 2024-03-15 | 2024-05-31 | 北京壁仞科技开发有限公司 | 支持动态形状的计算的方法、装置、介质和程序产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615412A (zh) * | 2015-02-10 | 2015-05-13 | 清华大学 | 基于触发指令结构的执行控制流的方法及系统 |
CN105786368A (zh) * | 2014-12-22 | 2016-07-20 | 厦门幻世网络科技有限公司 | 一种基于可交互式屏幕的信息指令输入方法及其装置 |
CN112148367A (zh) * | 2019-06-26 | 2020-12-29 | 北京百度网讯科技有限公司 | 用于处理循环指令集合的方法、装置、设备和介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729054B (zh) * | 2017-10-18 | 2020-07-24 | 珠海市杰理科技股份有限公司 | 实现处理器对循环体执行的方法及装置 |
CN114443142A (zh) * | 2022-01-29 | 2022-05-06 | 上海阵量智能科技有限公司 | 循环指令处理方法、装置、芯片、电子设备及存储介质 |
-
2022
- 2022-01-29 CN CN202210113076.XA patent/CN114443142A/zh active Pending
- 2022-09-23 WO PCT/CN2022/120852 patent/WO2023142502A1/zh unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105786368A (zh) * | 2014-12-22 | 2016-07-20 | 厦门幻世网络科技有限公司 | 一种基于可交互式屏幕的信息指令输入方法及其装置 |
CN104615412A (zh) * | 2015-02-10 | 2015-05-13 | 清华大学 | 基于触发指令结构的执行控制流的方法及系统 |
CN112148367A (zh) * | 2019-06-26 | 2020-12-29 | 北京百度网讯科技有限公司 | 用于处理循环指令集合的方法、装置、设备和介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023142502A1 (zh) * | 2022-01-29 | 2023-08-03 | 上海商汤智能科技有限公司 | 循环指令处理方法、装置、芯片、电子设备及存储介质 |
CN115113934A (zh) * | 2022-08-31 | 2022-09-27 | 腾讯科技(深圳)有限公司 | 指令处理方法、装置、程序产品、计算机设备和介质 |
CN115113934B (zh) * | 2022-08-31 | 2022-11-11 | 腾讯科技(深圳)有限公司 | 指令处理方法、装置、程序产品、计算机设备和介质 |
CN116893850A (zh) * | 2023-07-10 | 2023-10-17 | 北京辉羲智能科技有限公司 | 一种硬件循环指令转换方法及编译器 |
CN116893850B (zh) * | 2023-07-10 | 2024-05-24 | 北京辉羲智能科技有限公司 | 一种硬件循环指令转换方法及编译器 |
Also Published As
Publication number | Publication date |
---|---|
WO2023142502A1 (zh) | 2023-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114443142A (zh) | 循环指令处理方法、装置、芯片、电子设备及存储介质 | |
CN109154886B (zh) | 用于处理数据的方法和设备 | |
US7617384B1 (en) | Structured programming control flow using a disable mask in a SIMD architecture | |
US9043805B2 (en) | Reconfigurable processor and method | |
US20150052331A1 (en) | Efficient Directed Acyclic Graph Pattern Matching To Enable Code Partitioning and Execution On Heterogeneous Processor Cores | |
US20150268940A1 (en) | Automatic loop vectorization using hardware transactional memory | |
CN107810477A (zh) | 解码的指令的重复使用 | |
CN104050032A (zh) | 用于有条件的屏障和急迫的屏障的硬件调度的系统和方法 | |
CN104750459A (zh) | 带有事务功能以及报告事务操作的日志记录电路的处理器 | |
US11556757B1 (en) | System and method of executing deep tensor columns in neural networks | |
CN103853527A (zh) | 切换多线程程序中的对象锁定模式的方法和系统 | |
KR20150101870A (ko) | 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치 | |
CN103970511A (zh) | 能够支持多模式的处理器及其多模式支持方法 | |
WO2024198748A1 (zh) | 数据处理方法、系统、芯片及终端 | |
CN111258950B (zh) | 原子访存方法、存储介质、计算机设备、装置和系统 | |
CN108021563B (zh) | 一种指令间数据依赖的检测方法和装置 | |
US12033053B1 (en) | System and method of determining and executing deep tensor columns in neural networks | |
CN111737166A (zh) | 数据对象的处理方法、装置及设备 | |
US20170255467A1 (en) | Apparatus for Information Processing with Loop Cache and Associated Methods | |
CN110969259B (zh) | 具有数据关联自适应舍入的处理核心 | |
CN112882753A (zh) | 程序运行方法及装置 | |
Li et al. | An application-oblivious memory scheduling system for DNN accelerators | |
JP2022535736A (ja) | Gpuでのソフトウェア制御の可変ウェーブフロントサイズの実行 | |
CN109669778A (zh) | 一种用于为运行单元确定并行进程数量的方法及系统 | |
CN118118444B (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40065993 Country of ref document: HK |