CN112000370A - 循环指令的处理方法、装置、设备和存储介质 - Google Patents

循环指令的处理方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN112000370A
CN112000370A CN202010878243.0A CN202010878243A CN112000370A CN 112000370 A CN112000370 A CN 112000370A CN 202010878243 A CN202010878243 A CN 202010878243A CN 112000370 A CN112000370 A CN 112000370A
Authority
CN
China
Prior art keywords
loop
instruction
register
cycle
computer
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.)
Granted
Application number
CN202010878243.0A
Other languages
English (en)
Other versions
CN112000370B (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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202010878243.0A priority Critical patent/CN112000370B/zh
Publication of CN112000370A publication Critical patent/CN112000370A/zh
Priority to KR1020210036835A priority patent/KR102483299B1/ko
Priority to US17/210,046 priority patent/US11340903B2/en
Priority to EP21164607.0A priority patent/EP3872628A3/en
Priority to JP2021052374A priority patent/JP7241121B2/ja
Application granted granted Critical
Publication of CN112000370B publication Critical patent/CN112000370B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Abstract

本申请公开了循环指令的处理方法、装置、设备和存储介质,涉及语音、芯片领域。具体实现方案为:获取计算机程序,计算机程序包括第一循环体,第一循环体根据待编译软件代码中的第二循环体生成,第一循环体包括多条第一循环指令,多条第一循环指令能够被计算机设备的硬件结构识别;在检测到第一循环体的情况下,根据多条第一循环指令,确定第一循环体的循环参数;根据第一循环体的循环参数,获取多条第一循环指令;执行多条第一循环指令。本申请实施例中第一循环体根据待编译软件代码中的第二循环体生成,且第一循环体包括的第一循环指令能够被计算机设备的硬件结构识别,因此硬件结构可以直接根据第一循环指令准确地确定循环参数。

Description

循环指令的处理方法、装置、设备和存储介质
技术领域
本申请实施例涉及计算机技术中的语音技术、芯片技术,尤其涉及一种循环指令的处理方法、装置、设备和存储介质。
背景技术
在计算机中,经常会用到使用高级语言编写的循环语句,例如语音信号处理场景中,经常需要对语音数据数组进行数字信号处理,那么对数组的遍历就会用到for循环(fori=0;i<N;i++)语句,for循环语句在通过编译器编译之后,通常会编译成若干条加法指令和条件分支跳转指令。具体实现过程中,是判断循环次数是否为0,若不为0,则需要使用条件分支跳转指令返回继续执行加法指令,从而达到循环的效果。
目前,在上述计算循环次数和判断循环结束的过程中,是根据程序的状态来预测循环次数和判断循环结束,如此就会存在预测不准确的问题。
发明内容
本申请提供了一种用于提高循环次数、循环开始地址和结束地址等循环参数的获取准确度的循环指令的处理方法、装置、设备和存储介质。
根据本申请的第一方面,提供了一种循环指令的处理方法,包括:获取计算机程序,所述计算机程序包括第一循环体,所述第一循环体是根据待编译的软件代码中的第二循环体生成的,所述第一循环体包括多条第一循环指令,所述多条第一循环指令是能够被计算机设备的硬件结构识别的指令;在检测到所述第一循环体的情况下,根据所述多条第一循环指令,确定所述第一循环体的循环参数;根据所述第一循环体的循环参数,获取所述多条第一循环指令;执行所述多条第一循环指令。
可选的,所述计算机程序包括多条计算机指令;所述循环参数包括循环的结束地址和循环次数N,N为大于或等于0的正整数,所述循环次数是根据所述第一循环体确定的;所述硬件结构包括结束地址寄存器、缓冲寄存器和长循环标志寄存器;所述在检测到所述第一循环体的情况下,根据所述多条第一循环指令,确定所述第一循环体的循环参数,包括:若检测到所述计算机指令为第一循环指令,且所述缓冲寄存器的剩余存储空间不为0,则将所述计算机指令存储至所述缓冲寄存器,将所述计算机指令对应的地址存储至所述结束地址寄存器,并将所述长循环标志寄存器的标志位设置为短循环标识,所述短循环标识用于标识所述缓冲寄存器中当前存储的第一循环指令所占用的存储空间小于或等于所述缓冲寄存器的总存储空间;根据所述结束地址寄存器中存储的结束地址,确定所述循环的结束地址。
可选的,所述硬件结构包括起始地址寄存器,所述方法还包括:若检测到所述计算机指令为第一循环指令,且所述缓冲寄存器的剩余存储空间为0,则将所述计算机指令对应的地址存储至所述起始地址寄存器,将所述长循环标志寄存器的标志位设置为长循环标识;所述长循环标识用于标识所述缓冲寄存器中当前存储的第一循环指令所占用的存储空间大于所述缓冲寄存器的总存储空间;在之后获取的计算机指令为第一循环指令的情况下,将之后获取的计算机指令对应的地址存储至所述结束地址寄存器,直至将全部的计算机指令获取完。
可选的,所述根据所述第一循环体的循环参数,获取所述多条第一循环指令,包括:若所述长循环标志寄存器的标志位为短循环标识,则执行N次从所述缓冲寄存器获取所有的第一循环指令的操作。
可选的,所述若检测到所述计算机指令为第一循环指令之后,所述方法还包括:执行所述第一循环指令;所述根据所述第一循环体的循环参数,获取所述多条第一循环指令,包括:若所述长循环标志寄存器的标志位为短循环标识,则执行N-1次从所述缓冲寄存器获取所有的第一循环指令的操作。
可选的,所述根据所述第一循环体的循环参数,获取所述多条第一循环指令,包括:若所述长循环标志寄存器的标志位为长循环标识,则执行N次从所述缓冲寄存器获取所有的第一循环指令的操作;以及,执行N次从所述起始寄存器记录的起始地址处开始,从所述计算机设备的程序存储器中获取对应的所述第一循环指令,直至获取到所述结束地址对应的第一循环指令的操作。
可选的,所述若检测到所述计算机指令为第一循环指令之后,所述方法还包括:执行所述第一循环指令;所述根据所述第一循环体的循环参数,获取所述多条第一循环指令,包括:若所述长循环标志寄存器的标志位为长循环标识,则执行N-1次从所述缓冲寄存器获取所有的第一循环指令的操作;以及,执行N-1次从所述起始寄存器记录的起始地址处开始,从所述计算机设备的程序存储器中获取对应的所述第一循环指令,直至获取到所述结束地址对应的第一循环指令的操作。
可选的,所述计算机程序包括多条计算机指令;所述循环参数包括循环的起始地址、结束地址和循环次数,所述循环次数为N,N为大于0的整数,所述循环次数是根据所述第一循环体确定的;所述硬件结构包括起始地址寄存器和结束地址寄存器;所述在检测到所述第一循环体的情况下,根据所述多条第一循环指令,确定所述第一循环体的循环参数,包括:若首次检测到所述计算机指令为第一循环指令,则将所述计算机指令对应的地址存储至所述起始地址寄存器;若非首次检测到所述计算机指令为第一循环指令,则将所述计算机指令对应的地址存储至所述结束地址寄存器,直至将全部的计算机指令获取完,其中,最后一次检测到的第一循环指令对应的地址为所述结束地址。
可选的,所述根据所述第一循环体的循环参数,获取所述多条第一循环指令,包括:执行N次从所述起始寄存器记录的起始地址处开始,从所述计算机设备的程序存储器中获取对应的所述第一循环指令,直至获取到所述结束地址对应的第一循环指令的操作。
可选的,所述方法还包括:执行每次检测到的第一循环指令;所述根据所述第一循环体的循环参数,获取所述多条第一循环指令,包括:执行N-1次从所述起始寄存器记录的起始地址处开始,从所述计算机设备的程序存储器中获取对应的所述第一循环指令,直至获取到所述结束地址对应的第一循环指令的操作。
可选的,所述第一循环指令包括loop循环指令;所述第二循环指令包括for循环指令。
可选的,所述第一循环体包括一对loop循环指令,所述一对loop循环指令分别用于指示loop循环的起始和结束。
可选的,所述方法还包括:将所述循环次数存储至所述计算机设备的通用寄存器。
可选的,所述硬件结构还包括:循环次数计数器;所述在检测到所述第一循环体的情况下,根据所述多条第一循环指令,确定所述第一循环体的循环参数,还包括:从所述通用寄存器中获取所述循环次数;将所述循环次数存储至所述循环次数计数器。
根据本申请的第二方面,提供了一种循环指令的处理装置,包括:取指单元,用于获取计算机程序,所述计算机程序包括第一循环体,所述第一循环体是根据待编译的软件代码中的第二循环体生成的,所述第一循环体包括多条第一循环指令,所述多条第一循环指令是能够被计算机设备的硬件结构识别的指令;硬件结构,用于在检测到所述第一循环体的情况下,根据所述多条第一循环指令,确定所述第一循环体的循环参数;所述取指单元,还用于根据所述第一循环体的循环参数,获取所述多条第一循环指令;处理单元,用于执行所述多条第一循环指令。
可选的,所述计算机程序包括多条计算机指令;所述循环参数包括循环的结束地址和循环次数N,N为大于或等于0的正整数,所述循环次数是根据所述第一循环体确定的;所述硬件结构包括检测单元、结束地址寄存器、缓冲寄存器和长循环标志寄存器;所述检测单元,用于检测所述计算机指令是否为第一循环指令,以及在检测到所述计算机指令为第一循环指令,且所述缓冲寄存器的剩余存储空间不为0的情况下,将所述计算机指令发送至所述缓冲寄存器,将所述计算机指令对应的地址发送至所述结束地址寄存器,以及发送设置短循环标识的指令至所述长循环标志寄存器,所述短循环标识用于标识所述缓冲寄存器中当前存储的第一循环指令所占用的存储空间小于或等于所述缓冲寄存器的总存储空间;所述缓冲寄存器,用于存储所述计算机指令;所述结束地址寄存器,用于存储所述计算机指令对应的地址;所述长循环标志寄存器,用于将所述长循环标志寄存器的标志位设置为短循环标识;所述取指单元,还用于根据所述结束地址寄存器中存储的结束地址,确定所述循环的结束地址。
可选的,所述硬件结构还包括起始地址寄存器;所述检测单元,还用于在检测到所述计算机指令为第一循环指令,且所述缓冲寄存器的剩余存储空间为0的情况下,将所述计算机指令对应的地址发送至所述起始地址寄存器,和发送设置长循环标识的指令至所述长循环标志寄存器;所述长循环标识用于标识所述缓冲寄存器中当前存储的第一循环指令所占用的存储空间大于所述缓冲寄存器的总存储空间;所述起始地址寄存器,用于存储所述计算机指令对应的地址;所述长循环标志寄存器,用于将所述长循环标志寄存器的标志位设置为长循环标识;所述检测单元,还用于在之后获取的计算机指令为第一循环指令的情况下,将之后获取的计算机指令对应的地址发送至所述结束地址寄存器,直至将全部的计算机指令获取完;所述结束地址寄存器,还用于存储所述之后获取的计算机指令对应的地址。
可选的,所述取指单元,还用于若所述长循环标志寄存器的标志位为短循环标识,则执行N次从所述缓冲寄存器获取所有的第一循环指令的操作。
可选的,所述处理单元,还用于若检测到所述计算机指令为第一循环指令,执行所述第一循环指令;所述取指单元,还用于若所述长循环标志寄存器的标志位为短循环标识,则执行N-1次从所述缓冲寄存器获取所有的第一循环指令的操作。
可选的,所述取指单元,还用于若所述长循环标志寄存器的标志位为长循环标识,则执行N次从所述缓冲寄存器获取所有的第一循环指令的操作;以及,执行N次从所述起始寄存器记录的起始地址处开始,从所述计算机设备的程序存储器中获取对应的所述第一循环指令,直至获取到所述结束地址对应的第一循环指令的操作。
可选的,所述处理单元,还用于若检测到所述计算机指令为第一循环指令,执行所述第一循环指令;所述取指单元,还用于:若所述长循环标志寄存器的标志位为长循环标识,则执行N-1次从所述缓冲寄存器获取所有的第一循环指令的操作;以及,执行N-1次从所述起始寄存器记录的起始地址处开始,从所述计算机设备的程序存储器中获取对应的所述第一循环指令,直至获取到所述结束地址对应的第一循环指令的操作。
可选的,所述计算机程序包括多条计算机指令;所述循环参数包括循环的起始地址、结束地址和循环次数,所述循环次数为N,N为大于0的整数,所述循环次数是根据所述第一循环体确定的;所述硬件结构包括起始地址寄存器和结束地址寄存器;所述检测单元,还用于若首次检测到所述计算机指令为第一循环指令,则将所述计算机指令对应的地址发送至所述起始地址寄存器;以及,若非首次检测到所述计算机指令为第一循环指令,则将所述计算机指令对应的地址发送至所述结束地址寄存器,直至将全部的计算机指令获取完,其中,最后一次检测到的第一循环指令对应的地址为所述结束地址;所述起始地址寄存器,用于将所述计算机指令对应的地址作为所述循环的起始地址并存储;所述结束地址寄存器,用于将所述计算机指令对应的地址作为所述循环的结束地址并存储。
可选的,所述取指单元,还用于执行N次从所述起始寄存器记录的起始地址处开始,从所述计算机设备的程序存储器中获取对应的所述第一循环指令,直至获取到所述结束地址对应的第一循环指令的操作。
可选的,所述处理单元,还用于执行每次检测到的第一循环指令;所述取指单元,还用于执行N-1次从所述起始寄存器记录的起始地址处开始,从所述计算机设备的程序存储器中获取对应的所述第一循环指令,直至获取到所述结束地址对应的第一循环指令的操作。
可选的,所述第一循环指令包括loop循环指令;所述第二循环指令包括for循环指令。
可选的,所述第一循环体包括一对loop循环指令,所述一对loop循环指令分别用于指示loop循环的起始和结束。
可选的,所述计算机设备还包括:通用寄存器,用于存储所述循环次数。
可选的,所述硬件结构还包括:循环次数计数器;所述检测单元,还用于从所述通用寄存器中获取所述循环次数,并发送至所述循环次数计数器;所述循环次数计数器,用于存储所述循环次数,并在所述取指单元每获取一次所述第一循环体中的所有第一循环指令,将所述循环次数进行减一操作。
根据本申请的第三方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行第一方面所述的方法。
根据本申请的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行第一方面所述的方法。
根据本申请的技术解决了根据程序的状态预测循环次数和判断循环结束带来的预测不准确的问题。
应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1为现有技术的计算机设备的架构图;
图2为本申请实施例提供的循环指令的处理方法流程图;
图3为本申请实施例提供的计算机设备的架构图;
图4为本申请另一实施例提供的计算机设备的架构图;
图5为本申请实施例提供的循环指令的处理方法的信令图;
图6为本申请实施例提供的结束地址寄存器中存储结束地址的示意图;
图7为本申请另一实施例提供的结束地址寄存器中存储结束地址的示意图;
图8为本申请另一实施例提供的计算机设备的架构图;
图9为本申请另一实施例提供的计算机设备的架构图;
图10是用来实现本申请实施例的循环指令的处理方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1为现有技术的计算机设备的架构图。如图1所示,该计算机设备10包括:编译器11、程序存储器12和处理器13;其中,编译器11,是设置在计算机设备10上的软件程序,用于将程序员使用高级语言编写的程序(以下简称为软件代码)编译为计算机能够执行的机器语言(以下简称为计算机程序);程序存储器12,用于存储计算机程序,计算机程序包括多条计算机指令;处理器13,用于执行计算机指令。
在一个示例中,处理器13可以是中央处理器(CPU,central processing unit)。中央处理器包括:取指单元131、译码单元132、执行单元133、访存单元134和写回单元135;其中,取指单元131连接至程序存储器12,取指单元131用于从程序存储器12中获取计算机指令;译码单元132,用于对取指单元131获取的计算机指令进行解析,得到与该计算机指令对应的控制信号;执行单元133,用于执行控制信号;访存单元134,用于根据计算机指令的需要,读取操作数,该操作数用于控制信号的执行过程;写回单元135,用于将执行结果写回到CPU内部的寄存器中。
以上为一条计算机指令在CPU中的执行流程,在该流程中,处理器13在遇到循环语句时,通常是将循环次数放入通用寄存器当中,然后从程序存储器中取出循环指令,并且每循环一次,通用寄存器当中的循环次数会进行减一操作,直至通用寄存器当中的循环次数为0,循环结束。在这一过程中,处理器在每次执行循环指令之前,需要判断循环次数是否为0,然后再决定是否需要继续取循环指令,这对处理器来说,既要做判断还要取循环指令,无疑会造成很大的开销。于是,有人提出了根据程序的状态来预测循环次数和循环结束判断,例如,硬件在检测到程序连续多次检测到同一目的地址的话,就推测其是一个循环,推测的方式会导致预测不准确的问题。
针对上述技术问题,本申请对编译器的编译过程进行相应改进,将for语句、while语句这类计算机设备的硬件结构无法识别的语句编译成计算机的硬件结构能够识别的指令,再由硬件结构根据编译后的指令识别循环的起始地址、结束地址和循环次数等循环参数,由于编译后的指令能够被硬件结构识别,因此硬件结构可以直接根据编译后的指令确定循环的起始地址、结束地址和循环次数等循环参数,不再需要根据程序的状态来推测循环的起始地址、结束地址和循环次数,如此,处理器就能够准确获取循环参数,进而根据循环参数准确获取循环指令。
本申请提供一种循环指令的处理方法、装置、设备和存储介质,应用于计算机技术中的语音、芯片技术,以达到准确获取循环次数、循环开始地址和结束地址的效果。本申请实施例适用于数据处理过程中,涉及到对数组做重复运算的场景,例如,语音信号处理场景中,经常需要对语音数据数组进行数字信号处理,那么对数组的遍历就会用到for循环、while循环这种重复运算。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图2为本申请实施例提供的循环指令的处理方法流程图。本申请实施例针对现有技术的如上技术问题,提供了循环指令的处理方法,如图2所示,该方法具体步骤如下:
步骤S201、获取计算机程序。
其中,计算机程序包括第一循环体,第一循环体是根据待编译的软件代码中的第二循环体生成的,第一循环体包括多条第一循环指令,多条第一循环指令是能够被计算机设备的硬件结构识别的指令。
本申请实施例提供的循环指令的处理方法,适用于图3所示的计算机设备的架构图。如图3所示,该计算机设备30包括:编译器31、程序存储器32、处理器33和硬件结构34;其中,编译器31是设置在计算机设备30上的软件程序,程序存储器32、处理器33和硬件结构34都是属于计算机设备的硬件结构。相较于图1的计算机设备而言,本实施例中的程序存储器32、处理器33与图1所示的程序存储器12、处理器13的结构和功能相同,其不同之处在于,对编译器31的功能进行了改进,以及增加了硬件结构34。
在本实施例中,编译器31接收采用高级语言编写的软件代码,并将软件代码编译为计算机设备能够识别的语言(计算机程序)。该软件代码中包括第二循环体,第二循环体是无法被计算机设备的硬件结构识别的循环语言。本实施例的编译器31首先将软件代码中的第二循环体编译为硬件结构能够识别的循环语言。
编译器31在编译得到计算机程序后,将计算机程序存储至程序存储器32中,之后,处理器33中的取指单元331从程序存储器32中获取计算机程序。
步骤S202、在检测到第一循环体的情况下,根据多条第一循环指令,确定第一循环体的循环参数。
硬件结构34在检测到计算机程序中的第一循环体时,会将第一循环体的一些相关参数存储至硬件结构,之后,硬件结构可以根据存储的相关参数确定第一循环体的循环参数。
步骤S203、根据第一循环体的循环参数,获取多条第一循环指令。
取指单元331从硬件结构获取第一循环体的循环参数,并根据第一循环体的循环参数,从程序存储器获取多条第一循环指令。
步骤S204、执行多条第一循环指令。
本步骤中,取指单元331获取的第一循环指令会发送至处理单元332,由处理单元332执行多条第一循环指令。其中,处理单元332执行多条第一循环指令,包括:译码单元3321对取指单元331获取的计算机指令进行解析,得到与该计算机指令对应的控制信号;执行单元3322执行控制信号;访存单元3323根据计算机指令的需要,读取用于控制信号的执行过程的操作数,并发送至执行单元3322以使执行单元3322根据操作数执行控制信号;写回单元3324将执行结果写回到处理器内部的通用寄存器中。
可选的,处理单元332在执行多条第一循环指令的过程中,可以是每获取一条第一循环指令,就执行一次第一循环指令,也可以是获取至少两条第一循环指令,再执行至少两条第一循环指令。具体的执行过程可以根据实际需求来确定,本实施例对此不作具体限定。
本申请实施例通过获取计算机程序,其中,计算机程序包括第一循环体,第一循环体是根据待编译的软件代码中的第二循环体生成的,第一循环体包括多条第一循环指令,多条第一循环指令是能够被硬件结构识别的指令;在检测到第一循环体的情况下,根据多条第一循环指令,确定第一循环体的循环参数;之后再根据第一循环体的循环参数,获取多条第一循环指令;以及执行多条第一循环指令。由于第一循环体是根据待编译的软件代码中的第二循环体生成的能够被硬件结构识别的循环语句,因此,硬件结构可以直接根据第一循环体准确地确定循环的循环参数,不再需要根据第二循环体来推测循环参数,避免了预测不准确的问题。另外,本申请将循环参数的确定过程由硬件结构来完成,处理器不需要判断循环结束条件等操作,因此,对于处理器来说,能够在实现零开销循环的过程中,准确获取到循环参数,保证程序正常运行。
图4是适用于本申请另一实施例的计算机设备的架构图。如图4所示,在图3的基础上,硬件结构34包括检测单元340、结束地址寄存器341、缓冲寄存器342和长循环标志寄存器343;其中,结束地址寄存器341用于存储第一循环体中第一循环指令的结束地址,缓冲寄存器342用于存储第一循环体中的第一循环指令,长循环标志寄存器343用于标识第一循环体是长循环还是短循环。其中,长循环是指第一循环体中包括的第一循环指令的数量大于缓冲寄存器342的深度(缓冲寄存器342的总存储空间),短循环是指第一循环体中包括的第一循环指令的数量小于或等于缓冲寄存器342的深度(缓冲寄存器342的总存储空间),其中,缓冲寄存器的深度可以理解为缓冲寄存器能够存储的指令的最大数量。
其中,计算机程序包括多条计算机指令,循环参数包括循环的结束地址和循环次数,循环次数记为N,N为大于0的整数;循环次数是根据第一循环体确定的,即编译器在根据第二循环体编译得到第一循环体之后,就可以得到循环次数,之后会将循环次数存储至计算机设备的通用寄存器当中。
在图4的基础上,在检测到第一循环体的情况下,根据多条第一循环指令,确定第一循环体的循环参数,包括:
步骤a1、若检测到计算机指令为第一循环指令,且缓冲寄存器的剩余存储空间不为0,则将计算机指令存储至缓冲寄存器,将计算机指令对应的地址存储至结束地址寄存器,并将长循环标志寄存器的标志位设置为短循环标识,短循环标识用于标识缓冲寄存器中当前存储的第一循环指令所占用的存储空间小于或等于缓冲寄存器的总存储空间。
步骤a2、根据结束地址寄存器中存储的结束地址,确定循环的结束地址。
本实施例中,计算机程序在程序存储器中是以一条一条的计算机指令存储的,且在程序存储器中对应有存储地址,其具体形式可以参见如下表1:
存储地址 计算机程序
存储地址1 计算机指令1
存储地址2 计算机指令2
…… ……
存储地址n 计算机指令n
其中,n为大于0的整数。
示例性地,如图5所示,取指单元从程序存储器中每次取出一条计算机指令,并将该计算机指令发送至检测单元,检测单元就会检测该计算机指令是否为第一循环指令,以及确认缓冲寄存器的剩余存储空间是否为0,若检测到计算机指令为第一循环指令,且缓冲寄存器的剩余存储空间不为0,则直接将检测到的第一循环指令存储至缓冲寄存器。其中,第一循环指令在缓冲寄存器中也对应有缓存地址,其具体形式可以参见如下表2:
缓存地址 第一循环指令
缓存地址1 第一循环指令1
缓存地址2 第一循环指令2
…… ……
缓存地址m 第一循环指令m
其中,m为小于或等于n的整数。
检测单元在将检测到的第一循环指令存储至缓冲寄存器之后,还需要将第一循环指令对应的存储地址存储至结束地址寄存器,并将长循环标志寄存器的标志位设置为短循环标识,短循环标识用于标识缓冲寄存器中当前存储的第一循环指令所占用的存储空间小于或等于缓冲寄存器的总存储空间。
可选的,检测单元在将计算机指令对应的存储地址存储至结束地址寄存器,包括如下两种实施方式:
在一种可选的实施方式中,如图6所示,将每一条第一循环指令对应的存储地址按照取指顺序存储至结束地址寄存器。如此,在将全部的计算机指令获取并检测完之后,结束地址寄存器当中记录的最后一条第一循环指令的存储地址就是结束地址。
在另一种可选的实施方式中,如图7所示,在每次检测到第一循环指令时,使用当前检测到的第一循环指令的存储地址覆盖掉前一次记录的存储地址,可以看到,结束地址寄存器中始终保存一个结束地址,如此就可以节省结束地址寄存器的存储空间,且在之后查找结束地址的过程中,可以缩短查找时间,提高查找效率。
在一个可选的实施方式中,检测计算机指令是否为第一循环指令,包括:根据第一循环指令的编程特征检测计算机指令是否为第一循环指令。举例来说,若第一循环指令为loop循环指令,则检测计算机指令中是否包括loop指令的编码,若计算机指令中包括loop指令的编码,则确定该计算机指令为第一循环指令,若计算机指令中不包括loop指令的编码,则确定该计算机指令不是第一循环指令。其中,loop指令的编码是预定的二进制编码,例如,loop指令在编译为二进制编码后为“10101”,则检测单元检测到“10101”,就认为该计算机指令是loop指令。应当理解,此处的二进制编码“10101”仅为示例性说明,并不限定loop指令的编码形式和编码长度。
在图4所示实施例的基础上,根据第一循环体的循环参数,获取多条第一循环指令,可以包括如下两种实施方式:
在第一种可选的实施方式中,若长循环标志寄存器的标志位为短循环标识,则执行N次从缓冲寄存器获取所有的第一循环指令的操作。示例性地,取指单元执行N次从缓冲寄存器获取所有的第一循环指令的操作。
在第二种可选的实施方式中,若检测到计算机指令为第一循环指令之后,本实施例的方法还包括:执行第一循环指令;则根据第一循环体的循环参数,获取多条第一循环指令,包括:若长循环标志寄存器的标志位为短循环标识,则执行N-1次从缓冲寄存器获取所有的第一循环指令的操作。
在第二种可选的实施方式中,是在执行步骤a1的同时,还对第一循环指令进行了相应处理,如此,步骤a1相当于第一轮循环,在第一轮循环过程中,取指单元从程序存储器中获取第一循环指令,不仅将第一循环指令发送给了处理单元来进行处理,还将第一循环指令发送给了硬件结构来确定循环参数。因此,可以节省一个循环周期,减少处理器的功耗。
其中,若长循环标志寄存器的标志位为短循环标识,则表示计算机程序中的所有第一循环指令所需要的缓存空间小于缓冲寄存器的总存储空间,也就是说计算机程序中的所有第一循环指令都能够存储在缓冲寄存器中。那么取指单元就可以直接从缓冲寄存器中挨个获取第一循环指令,在进行完一轮的获取所有第一循环指令的过程之后,循环次数N进行减一操作,直至循环次数为0,获取N次所有第一循环指令。其中,对于循环次数的计数,可以是每获取一次所有的第一循环指令进行减一操作,直至循环次数为0,也可以是每获取一次所有的第一循环指令进行加一操作,直至循环次数达到N次。
可选的,短循环标识和长循环标识可以采用0和1来标识,也就是说,若长循环标识寄存器的标志位置位为0,则代表第一循环体为短循环。若长循环标识寄存器的标志位置位为1,则代表第一循环体为长循环。应当理解,对于短循环标识和长循环标识采用0和1标识仅为示例性说明,并不对本申请进行具体限定。
图8是本申请另一实施例提供的计算机设备的架构图。如图8所示,在图4的基础上,硬件结构34还包括起始地址寄存器344。则在检测到第一循环体的情况下,根据多条第一循环指令,确定第一循环体的循环参数,还包括:
步骤b、若检测到计算机指令为第一循环指令,且缓冲寄存器的剩余存储空间为0,则将计算机指令对应的地址存储至起始地址寄存器,将长循环标志寄存器的标志位设置为长循环标识;并在之后获取的计算机指令为第一循环指令的情况下,将之后获取的计算机指令对应的地址存储至结束地址寄存器,直至将全部的计算机指令获取完。其中,长循环标识用于标识缓冲寄存器中当前存储的第一循环指令所占用的存储空间大于缓冲寄存器的总存储空间。
本实施例中,起始地址寄存器中记录的地址是从程序存储器当中获取的第一循环指令的存储地址。举例来说,若计算机程序包括n条第一循环指令,缓冲寄存器的最大存储空间为存储m条第一循环指令,n大于m,那么在检测到第m+1条第一循环指令之后,由于缓冲寄存器的存储空间已满,则本实施例将第m+1条第一循环指令的存储地址存储至起始地址寄存器。
本实施例针对计算机程序包括的第一循环指令所需要的存储空间大于缓冲寄存器的总存储空间的情况,优先将取出的第一循环指令存储至缓冲寄存器,待缓冲寄存器存满之后,再开始记录取出的第一循环指令的存储地址,并根据记录的存储地址确定要从程序存储器取指的开始地址和结束地址。之后,在获取第一循环指令的过程中,就可以首先从缓冲寄存器获取存储的第一循环指令,再根据记录的起始地址和结束地址从程序存储器中获取其余的第一循环指令,这对于长循环而言,由于处理器与程序存储器的交互次数可以减少,因此可以降低一部分处理器的功耗。
在图8所示实施例的基础上,根据第一循环体的循环参数,获取多条第一循环指令,仍然有如下两种不同的实施方式:
在第一种可选的实施方式中,根据第一循环体的循环参数,获取多条第一循环指令,包括:若长循环标志寄存器的标志位为长循环标识,则执行N次从缓冲寄存器获取所有的第一循环指令的操作;以及,执行N次从起始寄存器记录的起始地址处开始,从计算机设备的程序存储器中获取对应的第一循环指令,直至获取到结束地址对应的第一循环指令的操作。
在第二种可选的实施方式中,若检测到计算机指令为第一循环指令之后,本实施例的方法还包括:执行第一循环指令;
其中,根据第一循环体的循环参数,获取多条第一循环指令,包括:若长循环标志寄存器的标志位为长循环标识,则执行N-1次从缓冲寄存器获取所有的第一循环指令的操作;以及,执行N-1次从起始寄存器记录的起始地址处开始,从计算机设备的程序存储器中获取对应的第一循环指令,直至获取到结束地址对应的第一循环指令的操作。
在第二种可选的实施方式中,是在执行步骤b的同时,还对第一循环指令进行了相应处理,如此,步骤b相当于第一轮循环,在第一轮循环过程中,取指单元从程序存储器中获取第一循环指令,不仅将第一循环指令发送给了处理单元来进行处理,还将第一循环指令发送给了硬件结构来确定循环参数。因此,可以节省一个循环周期,减少处理器的功耗。
本实施例在获取第一循环指令的过程中,首先从缓冲寄存器获取存储的第一循环指令,再根据记录的起始地址和结束地址从程序存储器中获取其余的第一循环指令,这对于长循环而言,由于处理器与程序存储器的交互次数可以减少,因此可以降低一部分处理器的功耗。
图9是本申请另一实施例提供的计算机设备的架构图。如图9所示,在图3的基础上,硬件结构34包括起始地址寄存器341和结束地址寄存器344;则在检测到第一循环体的情况下,根据多条第一循环指令,确定第一循环体的循环参数,包括:
步骤c1、若首次检测到计算机指令为第一循环指令,则将当前获取的计算机指令对应的地址存储至起始地址寄存器。
步骤c2、若非首次检测到计算机指令为第一循环指令,则将当前获取的计算机指令对应的地址存储至结束地址寄存器,直至将全部的计算机指令获取完,其中,最后一次检测到的第一循环指令对应的地址为结束地址。
步骤c3、将第一循环体中包括的循环次数存储至通用寄存器。
本实施例相较于图4和图5所示实施例的区别在于,本实施例的硬件结构不包括缓冲寄存器,本实施例是采用起始地址寄存器记录第一条第一循环指令在程序存储器中的存储地址,以及采用结束地址寄存器记录最后一条第一循环指令在程序存储器中的存储地址。本实施例相较于图4和图5所示实施例的好处在于,能够简化硬件结构,减少硬件开销。
在图9所示实施例的基础上,根据第一循环体的循环参数,获取多条第一循环指令,仍然可以有如下两种不同的实施方式:
在第一种可选的实施方式中,根据第一循环体的循环参数,获取多条第一循环指令,包括:执行N次从起始寄存器记录的起始地址处开始,从计算机设备的程序存储器中获取对应的第一循环指令,直至获取到结束地址对应的第一循环指令的操作。
在第二种可选的实施方式中,是在步骤c1和步骤c2中每次检测到第一循环指令时,就执行第一循环指令;则根据第一循环体的循环参数,获取多条第一循环指令,包括:执行N-1次从起始寄存器记录的起始地址处开始,从计算机设备的程序存储器中获取对应的第一循环指令,直至获取到结束地址对应的第一循环指令的操作。
举例来说,若第一循环指令在程序存储器中的存储地址如下表所示:
存储地址 第一循环指令
存储地址x 第一循环指令1
存储地址x+1 第一循环指令2
…… ……
存储地址x+m-1 第一循环指令m
则本实施例中,起始地址寄存器中记录的起始地址为存储地址x,结束地址为存储地址x+m-1,则取指单元会从存储地址x处开始,挨个取出存储地址x至存储地址x+m-1之间的所有第一循环指令(第一循环指令1至第一循环指令m),并且每执行一次从存储地址x处开始,挨个取出存储地址x至存储地址x+m-1之间的所有第一循环指令的操作,循环次数就会进行减一,当循环次数减为0时,代表循环操作的取指结束。或者,循环次数加一,当循环次数的计数达到第一循环体中包括的总循环次数时,循环操作的取指结束。
在一个可选的示例中,第一循环体可以是loop循环体,第二循环体可以是for循环体、while循环体,for循环体是包括for循环语句的循环体,while循环体是包括while循环语句的循环体,loop循环体是包括loop循环语句的循环体。应当理解,第一循环体是loop循环体,第二循环体是for循环体、while循环体,仅为示例性说明,此处不对第一循环体和第二循环体的具体形式进行限定,凡是能够将计算机设备的硬件设备无法识别的指令转换为计算机设备能够识别的指令,都在本申请的范围之内。
可选的,第一循环体包括一对loop循环指令,该一对loop循环指令分别用于指示loop循环的起始和结束。举例来说,for语句的书写形式如:for(i=0;i<LOOP_NUM;i++),其中,i代表变量,LOOP_NUM代表总循环次数。本实施例将上述for语句编译后,可以得到如下的计算机程序:
Figure BDA0002653298690000181
上述计算机程序中,mov GPRn,LOOP_NUM代表将循环次数LOOP_NUM存储至通用寄存器GPRn中,一对LOOP指令中的第一个LOOP代表LOOP循环的开始(loop start),第二个LOOP代表LOOP循环的结束(last loop instruction),LOOP_OP1、LOOP_OP2、…LOOP_OPn是第一循环指令,其中,LOOP_OP1是LOOP循环中的第一条LOOP指令(first loopinstruction),LOOP_OPn是LOOP循环中的最后一条LOOP指令(last loop instruction),LOOP_OP1、LOOP_OP2、…LOOP_OPn对应for循环语句要处理的程序。NORMAL_OP是LOOP循环之后的正常操作。
相较于现有技术而言,现有技术中需要两条LOOP指令来实现LOOP循环的开始和结束的标识,即采用LOOP START标识LOOP循环的开始,采用LOOP END标识LOOP循环的结束,而本实施例通过一对LOOP指令来实现LOOP循环的开始和结束的标识,能够节省一条指令代码。另外,在第一轮循环之后,取指单元只需要直接获取LOOP_OP1、LOOP_OP2、…LOOP_OPn等第一循环指令即可,不再需要读取程序中的一对LOOP指令,可以节省处理时间。
在一个可选的示例中,上述实施例中的循环次数可以存储在通用寄存器中,也可以存储在循环次数计数器中。而在将循环次数存储在循环次数计数器的实施方式中,可以是直接将循环次数存储至循环次数计数器,还可以是将通用寄存器中存储的循环次数赋值给循环次数计数器。相较于将循环次数存储在通用寄存器中而言,将循环次数存储在循环次数计数器当中,编译器的指令格式相对来说会简单一些,编译器不需要指定是将循环次数放在哪个寄存器,另外,因为通用寄存器是每条指令都可能用到的,若占用了通用寄存器,那么可用的寄存器就少了一个,可能会影响别的计算机指令的执行。此外,循环计数器自身就能够计数,如果采用通用寄存器,每个寄存器都需要有计数功能,需要比较大的额外硬件开销。因此,将循环次数存储至循环次数计数器,不仅能够简化编译器的指令格式,而且不会占用通用寄存器,不会影响其他计算机指令的执行,此外,还可以减少额外的硬件开销。
其中,将通用寄存器中存储的循环次数赋值给循环次数计数器,是由取指单元在第一次检测到第一循环指令的情况下,从通用寄存器当中获取循环次数,并将循环次数赋值给循环次数计数器。
请继续参阅图3,本申请的实施例还提供了一种循环指令的处理装置,包括:取指单元331、硬件结构34、处理单元332;其中,取指单元331,用于获取计算机程序,计算机程序包括第一循环体,第一循环体是根据待编译的软件代码中的第二循环体生成的,第一循环体包括多条第一循环指令,多条第一循环指令是能够被计算机设备的硬件结构识别的指令;硬件结构34,用于在检测到第一循环体的情况下,根据多条第一循环指令,确定第一循环体的循环参数;取指单元331,还用于根据第一循环体的循环参数,获取多条第一循环指令;处理单元332,用于执行多条第一循环指令。
其中,计算机程序包括多条计算机指令;循环参数包括循环的结束地址和循环次数N,N为大于或等于0的正整数,循环次数是根据第一循环体确定的;请继续参阅图4,硬件结构34包括检测单元340、结束地址寄存器341、缓冲寄存器342和长循环标志寄存器343;检测单元340,用于检测计算机指令是否为第一循环指令,以及在检测到计算机指令为第一循环指令,且缓冲寄存器的剩余存储空间不为0的情况下,将计算机指令发送至缓冲寄存器,将计算机指令对应的地址发送至结束地址寄存器,以及发送设置短循环标识的指令至长循环标志寄存器,短循环标识用于标识缓冲寄存器中当前存储的第一循环指令所占用的存储空间小于或等于缓冲寄存器的总存储空间;缓冲寄存器342,用于存储计算机指令;结束地址寄存器341,用于存储计算机指令对应的地址;长循环标志寄存器342,用于将长循环标志寄存器的标志位设置为短循环标识;取指单元331,还用于根据结束地址寄存器中存储的结束地址,确定循环的结束地址。
请继续参阅图8,硬件结构34还包括起始地址寄存器344;检测单元340,还用于在检测到计算机指令为第一循环指令,且缓冲寄存器的剩余存储空间为0的情况下,将计算机指令对应的地址发送至起始地址寄存器,和发送设置长循环标识的指令至长循环标志寄存器;长循环标识用于标识缓冲寄存器中当前存储的第一循环指令所占用的存储空间大于缓冲寄存器的总存储空间;起始地址寄存器344,用于存储计算机指令对应的地址;长循环标志寄存器343,用于将长循环标志寄存器的标志位设置为长循环标识;检测单元340,还用于在之后获取的计算机指令为第一循环指令的情况下,将之后获取的计算机指令对应的地址发送至结束地址寄存器,直至将全部的计算机指令获取完;结束地址寄存器341,还用于存储之后获取的计算机指令对应的地址。
可选的,取指单元331,还用于若长循环标志寄存器的标志位为短循环标识,则执行N次从缓冲寄存器获取所有的第一循环指令的操作。
可选的,处理单元332,还用于若检测到计算机指令为第一循环指令,执行第一循环指令;取指单元331,还用于若长循环标志寄存器的标志位为短循环标识,则执行N-1次从缓冲寄存器获取所有的第一循环指令的操作。
可选的,取指单元331,还用于若长循环标志寄存器的标志位为长循环标识,则执行N次从缓冲寄存器获取所有的第一循环指令的操作;以及,执行N次从起始寄存器记录的起始地址处开始,从计算机设备的程序存储器中获取对应的第一循环指令,直至获取到结束地址对应的第一循环指令的操作。
可选的,处理单元332,还用于若检测到计算机指令为第一循环指令,执行第一循环指令;取指单元331,还用于:若长循环标志寄存器的标志位为长循环标识,则执行N-1次从缓冲寄存器获取所有的第一循环指令的操作;以及,执行N-1次从起始寄存器记录的起始地址处开始,从计算机设备的程序存储器中获取对应的第一循环指令,直至获取到结束地址对应的第一循环指令的操作。
可选的,计算机程序包括多条计算机指令;循环参数包括循环的起始地址、结束地址和循环次数,循环次数为N,N为大于0的整数,循环次数是根据第一循环体确定的;请继续参阅图9,硬件结构包括起始地址寄存器344和结束地址寄存器341;检测单元340,还用于若首次检测到计算机指令为第一循环指令,将计算机指令对应的地址发送至起始地址寄存器;以及,若非首次检测到计算机指令为第一循环指令,将计算机指令对应的地址发送至结束地址寄存器,直至将全部的计算机指令获取完,其中,最后一次检测到的第一循环指令对应的地址为结束地址;起始地址寄存器344,用于将计算机指令对应的地址作为循环的起始地址并存储;结束地址寄存器341,用于将计算机指令对应的地址作为循环的结束地址并存储。
可选的,取指单元331,还用于执行N次从起始寄存器记录的起始地址处开始,从计算机设备的程序存储器中获取对应的第一循环指令,直至获取到结束地址对应的第一循环指令的操作。
可选的,处理单元332,还用于执行每次检测到的第一循环指令;取指单元331,还用于执行N-1次从起始寄存器记录的起始地址处开始,从计算机设备的程序存储器中获取对应的第一循环指令,直至获取到结束地址对应的第一循环指令的操作。
可选的,第一循环指令包括loop循环指令;第二循环指令包括for循环指令。
可选的,第一循环体包括一对loop循环指令,一对loop循环指令分别用于指示loop循环的起始和结束。
可选的,计算机设备还包括:通用寄存器,用于存储循环次数。
可选的,硬件结构34还包括:循环次数计数器(图中未示出);检测单元340,还用于从通用寄存器中获取循环次数,并发送至循环次数计数器;循环次数计数器,用于存储循环次数,并在取指单元每获取一次第一循环体中的所有第一循环指令,将循环次数进行减一操作。
本申请实施例提供的一种循环指令的处理装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
如图10所示,是根据本申请实施例的循环指令的处理方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图10所示,该电子设备包括:一个或多个处理器1001、存储器1002,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示图形用户界面(Graphical User Interface,GUI)的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图10中以一个处理器1001为例。
存储器1002即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的循环指令的处理方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的循环指令的处理方法。
存储器1002作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块、单元,如本申请实施例中的循环指令的处理方法对应的程序指令/模块、单元(例如,附图4、附图8中所示的检测单元340、结束地址寄存器341、缓冲寄存器342、长循环标志寄存器343、起始地址寄存器344)。处理器1001通过运行存储在存储器1002中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的循环指令的处理方法。
存储器1002可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据循环指令的处理方法的电子设备的使用所创建的数据等。此外,存储器1002可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器1002可选包括相对于处理器1001远程设置的存储器,这些远程存储器可以通过网络连接至执行循环指令的处理方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
循环指令的处理方法的电子设备还可以包括:输入装置1003和输出装置1004。处理器1001、存储器1002、输入装置1003和输出装置1004可以通过总线或者其他方式连接,图10中以通过总线连接为例。
输入装置1003可接收输入的数字或字符信息,以及产生与循环指令的处理方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置1004可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算机程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算机程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务(“Virtual Private Server”",或简称“VPS”"")中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (30)

1.一种循环指令的处理方法,包括:
获取计算机程序,所述计算机程序包括第一循环体,所述第一循环体是根据待编译的软件代码中的第二循环体生成的,所述第一循环体包括多条第一循环指令,所述多条第一循环指令是能够被计算机设备的硬件结构识别的指令;
在检测到所述第一循环体的情况下,根据所述多条第一循环指令,确定所述第一循环体的循环参数;
根据所述第一循环体的循环参数,获取所述多条第一循环指令;
执行所述多条第一循环指令。
2.根据权利要求1所述的方法,所述计算机程序包括多条计算机指令;所述循环参数包括循环的结束地址和循环次数N,N为大于或等于0的正整数,所述循环次数是根据所述第一循环体确定的;所述硬件结构包括结束地址寄存器、缓冲寄存器和长循环标志寄存器;
所述在检测到所述第一循环体的情况下,根据所述多条第一循环指令,确定所述第一循环体的循环参数,包括:
若检测到所述计算机指令为第一循环指令,且所述缓冲寄存器的剩余存储空间不为0,则将所述计算机指令存储至所述缓冲寄存器,将所述计算机指令对应的地址存储至所述结束地址寄存器,并将所述长循环标志寄存器的标志位设置为短循环标识,所述短循环标识用于标识所述缓冲寄存器中当前存储的第一循环指令所占用的存储空间小于或等于所述缓冲寄存器的总存储空间;
根据所述结束地址寄存器中存储的结束地址,确定所述循环的结束地址。
3.根据权利要求2所述的方法,所述硬件结构包括起始地址寄存器,所述方法还包括:
若检测到所述计算机指令为第一循环指令,且所述缓冲寄存器的剩余存储空间为0,则将所述计算机指令对应的地址存储至所述起始地址寄存器,将所述长循环标志寄存器的标志位设置为长循环标识;所述长循环标识用于标识所述缓冲寄存器中当前存储的第一循环指令所占用的存储空间大于所述缓冲寄存器的总存储空间;
在之后获取的计算机指令为第一循环指令的情况下,将之后获取的计算机指令对应的地址存储至所述结束地址寄存器,直至将全部的计算机指令获取完。
4.根据权利要求2所述的方法,所述根据所述第一循环体的循环参数,获取所述多条第一循环指令,包括:
若所述长循环标志寄存器的标志位为短循环标识,则执行N次从所述缓冲寄存器获取所有的第一循环指令的操作。
5.根据权利要求2所述的方法,所述若检测到所述计算机指令为第一循环指令之后,所述方法还包括:
执行所述第一循环指令;
所述根据所述第一循环体的循环参数,获取所述多条第一循环指令,包括:
若所述长循环标志寄存器的标志位为短循环标识,则执行N-1次从所述缓冲寄存器获取所有的第一循环指令的操作。
6.根据权利要求3所述的方法,所述根据所述第一循环体的循环参数,获取所述多条第一循环指令,包括:
若所述长循环标志寄存器的标志位为长循环标识,则执行N次从所述缓冲寄存器获取所有的第一循环指令的操作;
以及,执行N次从所述起始寄存器记录的起始地址处开始,从所述计算机设备的程序存储器中获取对应的所述第一循环指令,直至获取到所述结束地址对应的第一循环指令的操作。
7.根据权利要求3所述的方法,所述若检测到所述计算机指令为第一循环指令之后,所述方法还包括:
执行所述第一循环指令;
所述根据所述第一循环体的循环参数,获取所述多条第一循环指令,包括:
若所述长循环标志寄存器的标志位为长循环标识,则执行N-1次从所述缓冲寄存器获取所有的第一循环指令的操作;
以及,执行N-1次从所述起始寄存器记录的起始地址处开始,从所述计算机设备的程序存储器中获取对应的所述第一循环指令,直至获取到所述结束地址对应的第一循环指令的操作。
8.根据权利要求1所述的方法,所述计算机程序包括多条计算机指令;所述循环参数包括循环的起始地址、结束地址和循环次数,所述循环次数为N,N为大于0的整数,所述循环次数是根据所述第一循环体确定的;所述硬件结构包括起始地址寄存器和结束地址寄存器;
所述在检测到所述第一循环体的情况下,根据所述多条第一循环指令,确定所述第一循环体的循环参数,包括:
若首次检测到所述计算机指令为第一循环指令,则将所述计算机指令对应的地址存储至所述起始地址寄存器;
若非首次检测到所述计算机指令为第一循环指令,则将所述计算机指令对应的地址存储至所述结束地址寄存器,直至将全部的计算机指令获取完,其中,最后一次检测到的第一循环指令对应的地址为所述结束地址。
9.根据权利要求8所述的方法,所述根据所述第一循环体的循环参数,获取所述多条第一循环指令,包括:
执行N次从所述起始寄存器记录的起始地址处开始,从所述计算机设备的程序存储器中获取对应的所述第一循环指令,直至获取到所述结束地址对应的第一循环指令的操作。
10.根据权利要求8所述的方法,还包括:
执行每次检测到的第一循环指令;
所述根据所述第一循环体的循环参数,获取所述多条第一循环指令,包括:
执行N-1次从所述起始寄存器记录的起始地址处开始,从所述计算机设备的程序存储器中获取对应的所述第一循环指令,直至获取到所述结束地址对应的第一循环指令的操作。
11.根据权利要求1-10任一项所述的方法,其中,所述第一循环指令包括loop循环指令;所述第二循环指令包括for循环指令。
12.根据权利要求11所述的方法,其中,所述第一循环体包括一对loop循环指令,所述一对loop循环指令分别用于指示loop循环的起始和结束。
13.根据权利要求2-10任一项所述的方法,还包括:
将所述循环次数存储至所述计算机设备的通用寄存器。
14.根据权利要求13所述的方法,所述硬件结构还包括:循环次数计数器;
所述在检测到所述第一循环体的情况下,根据所述多条第一循环指令,确定所述第一循环体的循环参数,还包括:
从所述通用寄存器中获取所述循环次数;
将所述循环次数存储至所述循环次数计数器。
15.一种循环指令的处理装置,包括:
取指单元,用于获取计算机程序,所述计算机程序包括第一循环体,所述第一循环体是根据待编译的软件代码中的第二循环体生成的,所述第一循环体包括多条第一循环指令,所述多条第一循环指令是能够被计算机设备的硬件结构识别的指令;
硬件结构,用于在检测到所述第一循环体的情况下,根据所述多条第一循环指令,确定所述第一循环体的循环参数;
所述取指单元,还用于根据所述第一循环体的循环参数,获取所述多条第一循环指令;
处理单元,用于执行所述多条第一循环指令。
16.根据权利要求15所述的装置,所述计算机程序包括多条计算机指令;所述循环参数包括循环的结束地址和循环次数N,N为大于或等于0的正整数,所述循环次数是根据所述第一循环体确定的;所述硬件结构包括检测单元、结束地址寄存器、缓冲寄存器和长循环标志寄存器;
所述检测单元,用于检测所述计算机指令是否为第一循环指令,以及在检测到所述计算机指令为第一循环指令,且所述缓冲寄存器的剩余存储空间不为0的情况下,将所述计算机指令发送至所述缓冲寄存器,将所述计算机指令对应的地址发送至所述结束地址寄存器,以及发送设置短循环标识的指令至所述长循环标志寄存器,所述短循环标识用于标识所述缓冲寄存器中当前存储的第一循环指令所占用的存储空间小于或等于所述缓冲寄存器的总存储空间;
所述缓冲寄存器,用于存储所述计算机指令;
所述结束地址寄存器,用于存储所述计算机指令对应的地址;
所述长循环标志寄存器,用于将所述长循环标志寄存器的标志位设置为短循环标识;
所述取指单元,还用于根据所述结束地址寄存器中存储的结束地址,确定所述循环的结束地址。
17.根据权利要求16所述的装置,所述硬件结构还包括起始地址寄存器;
所述检测单元,还用于在检测到所述计算机指令为第一循环指令,且所述缓冲寄存器的剩余存储空间为0的情况下,将所述计算机指令对应的地址发送至所述起始地址寄存器,和发送设置长循环标识的指令至所述长循环标志寄存器;所述长循环标识用于标识所述缓冲寄存器中当前存储的第一循环指令所占用的存储空间大于所述缓冲寄存器的总存储空间;
所述起始地址寄存器,用于存储所述计算机指令对应的地址;
所述长循环标志寄存器,用于将所述长循环标志寄存器的标志位设置为长循环标识;
所述检测单元,还用于在之后获取的计算机指令为第一循环指令的情况下,将之后获取的计算机指令对应的地址发送至所述结束地址寄存器,直至将全部的计算机指令获取完;
所述结束地址寄存器,还用于存储所述之后获取的计算机指令对应的地址。
18.根据权利要求16所述的装置,所述取指单元,还用于若所述长循环标志寄存器的标志位为短循环标识,则执行N次从所述缓冲寄存器获取所有的第一循环指令的操作。
19.根据权利要求16所述的装置,所述处理单元,还用于若检测到所述计算机指令为第一循环指令,执行所述第一循环指令;
所述取指单元,还用于若所述长循环标志寄存器的标志位为短循环标识,则执行N-1次从所述缓冲寄存器获取所有的第一循环指令的操作。
20.根据权利要求17所述的装置,所述取指单元,还用于若所述长循环标志寄存器的标志位为长循环标识,则执行N次从所述缓冲寄存器获取所有的第一循环指令的操作;
以及,执行N次从所述起始寄存器记录的起始地址处开始,从所述计算机设备的程序存储器中获取对应的所述第一循环指令,直至获取到所述结束地址对应的第一循环指令的操作。
21.根据权利要求17所述的装置,所述处理单元,还用于若检测到所述计算机指令为第一循环指令,执行所述第一循环指令;
所述取指单元,还用于:
若所述长循环标志寄存器的标志位为长循环标识,则执行N-1次从所述缓冲寄存器获取所有的第一循环指令的操作;
以及,执行N-1次从所述起始寄存器记录的起始地址处开始,从所述计算机设备的程序存储器中获取对应的所述第一循环指令,直至获取到所述结束地址对应的第一循环指令的操作。
22.根据权利要求15所述的装置,所述计算机程序包括多条计算机指令;所述循环参数包括循环的起始地址、结束地址和循环次数,所述循环次数为N,N为大于0的整数,所述循环次数是根据所述第一循环体确定的;所述硬件结构包括起始地址寄存器和结束地址寄存器;
所述检测单元,还用于若首次检测到所述计算机指令为第一循环指令,则将所述计算机指令对应的地址发送至所述起始地址寄存器;以及,若非首次检测到所述计算机指令为第一循环指令,则将所述计算机指令对应的地址发送至所述结束地址寄存器,直至将全部的计算机指令获取完,其中,最后一次检测到的第一循环指令对应的地址为所述结束地址;
所述起始地址寄存器,用于将所述计算机指令对应的地址作为所述循环的起始地址并存储;
所述结束地址寄存器,用于将所述计算机指令对应的地址作为所述循环的结束地址并存储。
23.根据权利要求22所述的装置,所述取指单元,还用于执行N次从所述起始寄存器记录的起始地址处开始,从所述计算机设备的程序存储器中获取对应的所述第一循环指令,直至获取到所述结束地址对应的第一循环指令的操作。
24.根据权利要求22所述的装置,所述处理单元,还用于执行每次检测到的第一循环指令;
所述取指单元,还用于执行N-1次从所述起始寄存器记录的起始地址处开始,从所述计算机设备的程序存储器中获取对应的所述第一循环指令,直至获取到所述结束地址对应的第一循环指令的操作。
25.根据权利要求15-24任一项所述的装置,其中,所述第一循环指令包括loop循环指令;所述第二循环指令包括for循环指令。
26.根据权利要求25所述的装置,其中,所述第一循环体包括一对loop循环指令,所述一对loop循环指令分别用于指示loop循环的起始和结束。
27.根据权利要求16-24任一项所述的装置,所述计算机设备还包括:
通用寄存器,用于存储所述循环次数。
28.根据权利要求27所述的装置,所述硬件结构还包括:循环次数计数器;
所述检测单元,还用于从所述通用寄存器中获取所述循环次数,并发送至所述循环次数计数器;
所述循环次数计数器,用于存储所述循环次数,并在所述取指单元每获取一次所述第一循环体中的所有第一循环指令,将所述循环次数进行减一操作。
29.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-14中任一项所述的方法。
30.一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行权利要求1-14中任一项所述的方法。
CN202010878243.0A 2020-08-27 2020-08-27 循环指令的处理方法、装置、设备和存储介质 Active CN112000370B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN202010878243.0A CN112000370B (zh) 2020-08-27 2020-08-27 循环指令的处理方法、装置、设备和存储介质
KR1020210036835A KR102483299B1 (ko) 2020-08-27 2021-03-22 순환 명령의 처리 방법, 장치, 기기와 저장매체
US17/210,046 US11340903B2 (en) 2020-08-27 2021-03-23 Processing method, device, equipment and storage medium of loop instruction
EP21164607.0A EP3872628A3 (en) 2020-08-27 2021-03-24 Processing method, device, equipment and storage medium of loop instruction
JP2021052374A JP7241121B2 (ja) 2020-08-27 2021-03-25 循環命令の処理方法、電子機器、コンピュータ可読記憶媒体及びコンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010878243.0A CN112000370B (zh) 2020-08-27 2020-08-27 循环指令的处理方法、装置、设备和存储介质

Publications (2)

Publication Number Publication Date
CN112000370A true CN112000370A (zh) 2020-11-27
CN112000370B CN112000370B (zh) 2022-04-15

Family

ID=73472019

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010878243.0A Active CN112000370B (zh) 2020-08-27 2020-08-27 循环指令的处理方法、装置、设备和存储介质

Country Status (5)

Country Link
US (1) US11340903B2 (zh)
EP (1) EP3872628A3 (zh)
JP (1) JP7241121B2 (zh)
KR (1) KR102483299B1 (zh)
CN (1) CN112000370B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112817664A (zh) * 2021-04-19 2021-05-18 北京燧原智能科技有限公司 一种数据处理系统、方法及芯片
CN113946539A (zh) * 2021-10-09 2022-01-18 深圳市创成微电子有限公司 一种dsp处理器及其循环跳转指令的处理方法
CN114138334A (zh) * 2021-10-29 2022-03-04 北京中科昊芯科技有限公司 一种循环程序执行方法、装置以及处理器
CN114138341A (zh) * 2021-12-01 2022-03-04 海光信息技术股份有限公司 微指令缓存资源的调度方法、装置、程序产品以及芯片
CN115049532A (zh) * 2022-08-15 2022-09-13 南京砺算科技有限公司 图形处理器、纹理坐标采样方法、编译方法及装置、介质
CN116755779A (zh) * 2023-08-18 2023-09-15 腾讯科技(深圳)有限公司 循环间隔的确定方法、装置、设备、存储介质及芯片
CN116841564A (zh) * 2023-08-29 2023-10-03 腾讯科技(深圳)有限公司 一种数据处理方法、装置、设备以及计算机可读存储介质
WO2024041081A1 (zh) * 2022-08-22 2024-02-29 腾讯科技(深圳)有限公司 数据处理方法、装置、设备及可读存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1372190A (zh) * 2001-01-31 2002-10-02 斯罗扬有限公司 对处理器中循环的处理
US20060084459A1 (en) * 2004-10-13 2006-04-20 Vinh Phan Outer loop power control of user equipment in wireless communication
US20090222124A1 (en) * 2008-02-29 2009-09-03 Fisher Controls International Llc Estimation of process control parameters over predefined travel segments
CN102043886A (zh) * 2010-12-31 2011-05-04 北京大学深圳研究生院 集成电路下层硬件映射方法、数据控制流时序约束方法及装置
CN102508635A (zh) * 2011-10-19 2012-06-20 中国科学院声学研究所 一种处理器装置及其循环处理方法
CN108780397A (zh) * 2016-03-23 2018-11-09 Arm有限公司 程序循环控制
CN109032665A (zh) * 2017-06-09 2018-12-18 龙芯中科技术有限公司 微处理器中指令输出处理方法及装置
CN111522584A (zh) * 2020-04-10 2020-08-11 深圳优矽科技有限公司 一种硬件循环加速处理器及其执行的硬件循环加速方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3062892B2 (ja) * 1991-03-18 2000-07-12 富士通株式会社 演算処理装置
JPH07160585A (ja) 1993-12-13 1995-06-23 Hitachi Ltd 低電力データ処理装置
JP3317825B2 (ja) * 1995-09-28 2002-08-26 富士通株式会社 ループ最適化翻訳処理方法
US5958048A (en) * 1996-08-07 1999-09-28 Elbrus International Ltd. Architectural support for software pipelining of nested loops
US6192515B1 (en) * 1998-07-17 2001-02-20 Intel Corporation Method for software pipelining nested loops
EP0992894A1 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. Apparatus and method for loop execution
US6820250B2 (en) * 1999-06-07 2004-11-16 Intel Corporation Mechanism for software pipelining loop nests
US6598155B1 (en) * 2000-01-31 2003-07-22 Intel Corporation Method and apparatus for loop buffering digital signal processing instructions
JP4354990B2 (ja) 2005-04-08 2009-10-28 パナソニック株式会社 プロセッサ
KR101756820B1 (ko) * 2010-10-21 2017-07-12 삼성전자주식회사 중첩 루프를 처리하기 위한 재구성 가능 프로세서 및 방법
US9524011B2 (en) 2014-04-11 2016-12-20 Apple Inc. Instruction loop buffer with tiered power savings
US9760356B2 (en) * 2014-09-23 2017-09-12 Intel Corporation Loop nest parallelization without loop linearization
US10180839B2 (en) 2016-03-04 2019-01-15 Silicon Laboratories Inc. Apparatus for information processing with loop cache and associated methods
US10732945B1 (en) * 2019-05-24 2020-08-04 Texas Instruments Incorporated Nested loop control

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1372190A (zh) * 2001-01-31 2002-10-02 斯罗扬有限公司 对处理器中循环的处理
US20060084459A1 (en) * 2004-10-13 2006-04-20 Vinh Phan Outer loop power control of user equipment in wireless communication
US20090222124A1 (en) * 2008-02-29 2009-09-03 Fisher Controls International Llc Estimation of process control parameters over predefined travel segments
CN102043886A (zh) * 2010-12-31 2011-05-04 北京大学深圳研究生院 集成电路下层硬件映射方法、数据控制流时序约束方法及装置
CN102508635A (zh) * 2011-10-19 2012-06-20 中国科学院声学研究所 一种处理器装置及其循环处理方法
CN108780397A (zh) * 2016-03-23 2018-11-09 Arm有限公司 程序循环控制
CN109032665A (zh) * 2017-06-09 2018-12-18 龙芯中科技术有限公司 微处理器中指令输出处理方法及装置
CN111522584A (zh) * 2020-04-10 2020-08-11 深圳优矽科技有限公司 一种硬件循环加速处理器及其执行的硬件循环加速方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112817664A (zh) * 2021-04-19 2021-05-18 北京燧原智能科技有限公司 一种数据处理系统、方法及芯片
CN113946539A (zh) * 2021-10-09 2022-01-18 深圳市创成微电子有限公司 一种dsp处理器及其循环跳转指令的处理方法
CN113946539B (zh) * 2021-10-09 2024-02-13 深圳市创成微电子有限公司 一种dsp处理器及其循环跳转指令的处理方法
CN114138334A (zh) * 2021-10-29 2022-03-04 北京中科昊芯科技有限公司 一种循环程序执行方法、装置以及处理器
CN114138341A (zh) * 2021-12-01 2022-03-04 海光信息技术股份有限公司 微指令缓存资源的调度方法、装置、程序产品以及芯片
CN115049532A (zh) * 2022-08-15 2022-09-13 南京砺算科技有限公司 图形处理器、纹理坐标采样方法、编译方法及装置、介质
CN115049532B (zh) * 2022-08-15 2022-11-22 南京砺算科技有限公司 图形处理器、纹理坐标采样方法、编译方法及装置、介质
WO2024041081A1 (zh) * 2022-08-22 2024-02-29 腾讯科技(深圳)有限公司 数据处理方法、装置、设备及可读存储介质
CN116755779A (zh) * 2023-08-18 2023-09-15 腾讯科技(深圳)有限公司 循环间隔的确定方法、装置、设备、存储介质及芯片
CN116755779B (zh) * 2023-08-18 2023-12-05 腾讯科技(深圳)有限公司 循环间隔的确定方法、装置、设备、存储介质及芯片
CN116841564A (zh) * 2023-08-29 2023-10-03 腾讯科技(深圳)有限公司 一种数据处理方法、装置、设备以及计算机可读存储介质
CN116841564B (zh) * 2023-08-29 2023-11-14 腾讯科技(深圳)有限公司 一种数据处理方法、装置、设备以及计算机可读存储介质

Also Published As

Publication number Publication date
KR102483299B1 (ko) 2022-12-29
US20210208891A1 (en) 2021-07-08
JP7241121B2 (ja) 2023-03-16
JP2021103577A (ja) 2021-07-15
CN112000370B (zh) 2022-04-15
KR20210039358A (ko) 2021-04-09
US11340903B2 (en) 2022-05-24
EP3872628A2 (en) 2021-09-01
EP3872628A3 (en) 2021-09-22

Similar Documents

Publication Publication Date Title
CN112000370B (zh) 循环指令的处理方法、装置、设备和存储介质
US9256428B2 (en) Load latency speculation in an out-of-order computer processor
CN106547587B (zh) 用于生成目标程序的配置文件的装置和方法
US20170192760A1 (en) Behavior based code recompilation triggering scheme
JP7232331B2 (ja) ループ終了予測器
US9652245B2 (en) Branch prediction for indirect jumps by hashing current and previous branch instruction addresses
US10884899B2 (en) Optimized trampoline design for fast software tracing
US10891130B2 (en) Implementing a received add program counter immediate shift (ADDPCIS) instruction using a micro-coded or cracked sequence
US9081895B2 (en) Identifying and tagging breakpoint instructions for facilitation of software debug
US20200159538A1 (en) Adaptive Utilization Mechanism for a First-Line Defense Branch Predictor
CN112559040B (zh) 指令执行方法、装置、电子设备和存储介质
US9928068B2 (en) Hardware managed dynamic thread fetch rate control
CN111857825A (zh) 指令执行方法、装置、电子设备和计算机可读存储介质
CN112905237A (zh) 指令预取方法、装置、设备和介质
US11907724B2 (en) In-memory trace with overlapping processing and logout
CN115454693B (zh) 写后读异常的检测方法、装置、控制器、处理器及介质
US20230222066A1 (en) Prefetch unit filter for microprocessor
CN117608664A (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