CN109032665B - 微处理器中指令输出处理方法及装置 - Google Patents
微处理器中指令输出处理方法及装置 Download PDFInfo
- Publication number
- CN109032665B CN109032665B CN201710433164.7A CN201710433164A CN109032665B CN 109032665 B CN109032665 B CN 109032665B CN 201710433164 A CN201710433164 A CN 201710433164A CN 109032665 B CN109032665 B CN 109032665B
- Authority
- CN
- China
- Prior art keywords
- instruction
- loop
- microprocessor
- output
- register
- 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
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000004590 computer program Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 16
- 238000004364 calculation method Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 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
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
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)
Abstract
本发明提供一种微处理器中指令输出处理方法及装置,该方法包括:确定第一指令的循环状态信息,所述循环状态信息包括循环标识以及循环次数,所述循环标识用于标识所述第一指令是否为循环指令,所述循环次数用于标识在处理到所述第一指令时,所述第一指令所在的循环体的循环迭代次数;根据所述第一指令的循环状态信息,确定是否输出所述第一指令。该方法基于指令是否为循环指令,以及指令对应的循环次数,即指令在微处理器中的等待时间,来合理安排指令的输出顺序,从而避免执行时间长的指令一直无法输出,进而避免了微处理器的资源占用时间过程的问题,保证了微处理器的性能。
Description
技术领域
本发明涉及计算机技术,尤其涉及一种微处理器中指令输出处理方法及装置。
背景技术
目前的微处理器多采用超量标的多流水级方案,一般包含取指、预译码、译码、寄存器重命名、调度、发射、读寄存器、执行、写回提交等流水阶段。其中,在执行阶段,由微处理器中的多个执行部件(定点执行部件,浮点执行部件,访存执行部件等)并行执行相关指令,并将执行结果输出到输出总线。其中,定点执行部件中的各执行单元分别执行一类指令。微处理器中的输出总线数量小于执行单元的数量,因此,多个执行单元需要共享一组输出总线,因此,当多个执行单元需要同时向输出总线输出结果时,需要通过一定的算法来控制多个执行单元的运算结果的输出顺序。
现有技术中,提出了一种短指令优先的输出调度算法,该算法根据指令的执行时间长短作为提交指令的权重优先级,执行时间短的指令先输出运算结果。
但是,现有技术所提供的方法,在处理循环指令时可能导致微处理器中资源占用时间过长,影响微处理器的性能。
发明内容
本发明提供一种微处理器中指令输出处理方法及装置,用于解决现有技术中处理循环指令时所导致的微处理器中资源占用过长的问题。
本发明第一方面提供一种微处理器中指令输出处理方法,包括:
确定第一指令的循环状态信息,所述循环状态信息包括循环标识以及循环次数,所述循环标识用于标识所述第一指令是否为循环指令,所述循环次数用于标识在处理到所述第一指令时,所述第一指令所在的循环体的循环迭代次数;
根据所述第一指令的循环状态信息,确定是否输出所述第一指令。
进一步地,所述微处理器中包括多个执行单元,每个执行单元用于执行一种类型的指令;所述根据所述第一指令的循环状态信息,确定是否输出所述第一指令,包括:
若所述第一指令已执行完成,并且所述第一指令的循环标识为真,并且N个第二指令中每个第二指令的循环次数和所述第一指令的循环次数满足输出条件,则确定输出所述第一指令;
其中,所述第二指令为微处理器中除执行所述第一指令的执行单元之外的执行单元中已执行完成的指令,N为所述微处理器的执行单元数量与所述微处理器的输出总线数量的差值。
进一步地,所述根据所述第一指令的循环状态信息,确定是否输出所述第一指令,包括:
若所述第一指令的循环标识为假,则根据执行所述第一指令的执行单元的优先级确定是否输出所述第一指令;或者,
若N个第二指令中每个第二指令的循环次数和所述第一指令的循环次数不满足输出条件,,则根据执行所述第一指令的执行单元的优先级确定是否输出所述第一指令;
其中,所述第二指令为微处理器中除执行所述第一指令的执行单元之外的执行单元中已执行完成的指令,N为所述微处理器的执行单元数量与所述微处理器的输出总线数量的差值。
进一步地,所述第一指令的循环次数以及执行所述第一指令的执行单元的优先级通过由预设字节组成的数据单元来表示,其中,所述数据单元中从最高比特位开始的预设数量比特位用于表示所述第一指令的循环次数,所述数据单元中除用于表示循环次数的比特位之外的比特位用于表示执行所述第一指令的执行单元的优先级。
进一步地,所述微处理器中包括循环次数寄存器以及循环状态寄存器,所述循环次数寄存器与所述循环状态寄存器连接,所述循环次数寄存器用于保存所述循环次数,所述循环状态寄存器用于保存所述循环标识;所述确定第一指令的循环状态信息,包括:
判断所述第一指令所在指令队列的首条指令标识是否等于所述第一指令所在的循环体的首条指令标识,若是,则:
将所述循环次数寄存器中的值与1相加,将相加结果作为所述循环次数寄存器的新值;以及,
将所述循环状态寄存器的值更新为真;以及,
将所述循环次数寄存器的所述新值作为所述第一指令对应的循环次数,将所述循环状态寄存器的值作为所述第一指令对应的循环标识。
进一步地,所述确定第一指令的循环状态信息,包括:
若所述循环状态寄存器的值为真,并且所述第一指令所在指令队列的首条指令标识不等于所述第一指令所在的循环体的首条指令标识,则:
将所述循环次数寄存器的值作为所述第一指令对应的循环次数;以及,
将所述循环状态寄存器的值作为所述第一指令对应的循环标识。
本发明第二方面提供一种微处理器中指令输出处理装置,包括:
第一确定模块,用于确定第一指令的循环状态信息,所述循环状态信息包括循环标识以及循环次数,所述循环标识用于标识所述第一指令是否为循环指令,所述循环次数用于标识在处理到所述第一指令时,所述第一指令所在的循环体的循环迭代次数;
第二确定模块,用于根据所述第一指令的循环状态信息,确定是否输出所述第一指令。
进一步地,所述微处理器中包括多个执行单元,每个执行单元用于执行一种类型的指令;所述第二确定模块包括:
输出单元,用于在所述第一指令已执行完成,并且所述第一指令的循环标识为真,并且N个第二指令中每个第二指令的循环次数和所述第一指令的循环次数满足输出条件时,输出所述第一指令;
其中,所述第二指令为微处理器中除执行所述第一指令的执行单元之外的执行单元中已执行完成的指令,N为所述微处理器的执行单元数量与所述微处理器的输出总线数量的差值。
进一步地,所述第二确定模块还包括:
确定单元,用于在所述第一指令的循环标识为假时,根据执行所述第一指令的执行单元的优先级确定是否输出所述第一指令,或者,在所述N个第二指令中每个第二指令的循环次数和所述第一指令的循环次数不满足输出条件时,根据执行所述第一指令的执行单元的优先级确定是否输出所述第一指令;
其中,所述第二指令为微处理器中除执行所述第一指令的执行单元之外的执行单元中已执行完成的指令,N为所述微处理器的执行单元数量与所述微处理器的输出总线数量的差值。。
进一步地,所述第一指令的循环次数以及执行所述第一指令的执行单元的优先级通过由预设字节组成的数据单元来表示,其中,所述数据单元中从最高比特位开始的预设数量比特位用于表示所述第一指令的循环次数,所述数据单元中除用于表示循环次数的比特位之外的比特位用于表示执行所述第一指令的执行单元的优先级。
进一步地,所述微处理器中包括循环次数寄存器以及循环状态寄存器,所述循环次数寄存器与所述循环状态寄存器连接,所述循环次数寄存器用于保存所述循环次数,所述循环状态寄存器用于保存所述循环标识;所述第一确定模块包括:
判断单元,用于判断所述第一指令所在指令队列的首条指令标识是否等于所述第一指令所在的循环体的首条指令标识;
相加单元,用于在判断单元的判断结果为是时,将所述循环次数寄存器中的值与1相加,将相加结果作为所述循环次数寄存器的新值;
更新单元,用于在判断单元的判断结果为是时,将所述循环状态寄存器的值更新为真;
第一处理单元,用于在判断单元的判断结果为是时,将所述循环次数寄存器的所述新值作为所述第一指令对应的循环次数,将所述循环状态寄存器的值作为所述第一指令对应的循环标识。
进一步地,所述第一确定模块还包括:
第二处理单元,用于在所述循环状态寄存器的值为真,并且所述第一指令所在指令队列的首条指令标识不等于所述第一指令所在的循环体的首条指令标识时,将所述循环次数寄存器的值作为所述第一指令对应的循环次数,以及,将所述循环状态寄存器的值作为所述第一指令对应的循环标识。
本发明第三方面提供一种计算机存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述第一方面的方法。
本发明提供的微处理器中指令输出处理方法及装置,微处理器首先确定第一指令的循环状态信息,进而根据第一指令的循环状态信息确定是否输出第一指令,即基于指令是否为循环指令,以及指令对应的循环次数,即指令在微处理器中的等待时间,来合理安排指令的输出顺序,从而避免执行时间长的指令一直无法输出,进而避免了微处理器的资源占用时间过程的问题,保证了微处理器的性能。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的微处理器中指令输出处理方法实施例一的流程示意图;
图2为一种微处理器的流水级部件示意图;
图3为循环状态信息传递的示意图;
图4为本发明提供的微处理器中指令输出处理方法实施例二的流程示意图;
图5为本发明提供的微处理器中指令输出处理方法实施例三的流程示意图;
图6为本发明提供的微处理器中指令输出处理装置实施例一的模块结构图;
图7为本发明提供的微处理器中指令输出处理装置实施例二的模块结构图;
图8为本发明提供的微处理器中指令输出处理装置实施例三的模块结构图;
图9为本发明提供的微处理器中指令输出处理装置实施例四的模块结构图;
图10为本发明提供的微处理器中指令输出处理装置实施例五的模块结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中提出的短指令优先的输出调度算法,可以使得在更短的时间内将更多的指令输出到输出总线上,从而提升单个执行单元的吞吐率。但是,从微处理器的整体角度来看,当微处理器中处理的指令包括循环指令时,就会导致资源占用过长。具体地,微处理器的定点执行部件中包括了多个执行单元,假设微处理器中执行加法指令的算数逻辑单元(Arithmetic Logic Unit,简称ALU)执行单元执行的指令为循环指令,在同一时刻,ALU执行单元和执行乘法指令的乘法执行单元都有结果输出,则根据短指令优先的原则,ALU执行单元中的结果优先输出到输出总线,乘法指令结果等待。而由于ALU执行单元中执行的是循环指令,因此,ALU执行单元中不断产生加法指令执行结果,根据短指令优先原则,这些加法指令执行结果都会先于正在等待的乘法指令结果来输出,乘法指令结果一直等待,从而导致微处理器中位于执行部件前端的重命名寄存器中的物理寄存器耗尽,进而导致重命名寄存器前端的译码模块无法取得有效的物理寄存器,译码模块停顿,无法处理输入指令,影响微处理器的性能。
本发明所提供的方法,旨在解决上述技术问题。
本发明实施例的整体思路为:执行时间短的指令先输出计算结果;并且记录指令在执行部件中执行完成后的等待时间;如果指令执行完成后在执行部件中等待的时间太长,为了防止和该指令相关的,在该指令的执行时间之后的指令没法提交而占据资源,这个执行时间长,效率相对低的执行部件向总线输出数据结果。
图1为本发明提供的微处理器中指令输出处理方法实施例一的流程示意图,该方法的执行主体为微处理器,如图1所示,该方法包括:
S101、确定第一指令的循环状态信息,循环状态信息包括循环标识以及循环次数,循环标识用于标识第一指令是否为循环指令,循环次数用于标识在处理到第一指令时,第一指令所在的循环体的循环迭代次数。
图2为一种微处理器的流水级部件示意图,如图2所示,当微处理器接收到外部模块输入的指令后,依次可以经过取指模块、指令队列、译码模块、重命名模块、待发射指令队列、执行部件对应的指令队列、执行部件。其中,执行部件可以包括定点执行部件、浮点执行部件以及访存执行部件,定点执行部件需要执行的指令预先进入定点指令队列,浮点执行部件需要执行的指令预先进入浮点指令队列,访存执行部件需要执行的指令预先进入访存指令队列。另外,对于定点执行部件,其具体可以包括ALU执行单元、乘法执行单元、除法执行单元以及数字信号处理(Digital Signal Processing,简称DSP)执行单元。
本步骤中,具体是在译码模块进行译码处理时确定第一指令的循环信息。
具体地,在进行译码处理时,当处理到第一指令时,微处理器根据当前的运行信息,确定该第一指令是否是循环指令,以及该第一指令的循环次数。其中,循环次数用于标识在处理到第一指令时,第一指令所在的循环体的循环迭代次数。例如,假设执行到第一指令时,第一指令的循环体已经循环到第3次,则第一指令的循环次数即为3,即,第一指令的循环次数可以表示第一指令在微处理器中的等待时间,循环次数越小,说明第一指令是越早被进行译码处理的指令,循环次数越大,说明第一指令是越晚被进行译码处理的指令。
需要说明的是,图2示出的一种可选的微处理器部件示意图,根据实际需要,微处理器的部件组成可能出现变化,因此,图2所示的部件示意图并不能作为本发明的限制,本发明的上述步骤1也可以在其他的部件组成下在进行译码处理时执行。
S102、根据第一指令的循环状态信息,确定是否输出第一指令。
具体地,以图2所示的流水部件为例,当第一指令在译码模块中执行译码处理时,确定出第一指令的循环状态信息,进而,当第一指令继续向后续模块传递时,第一指令的循环状态信息会被携带在第一指令中进行传递,直至第一指令进入对应的执行单元进行执行。例如,假设第一指令为加法指令,则该加法指令的循环状态信息会携带在该加法指令中传递到ALU执行单元中,ALU执行单元执行完该加法指令后,再根据该加法指令的循环状态信息来确定是否输出该加法指令。图3为循环状态信息传递的示意图,如图3所示,循环状态信息随着第一指令从译码模块传递到定点执行部件中,并在定点执行部件中作为第一指令是否输出的依据。
本实施例中,微处理器首先确定第一指令的循环状态信息,进而根据第一指令的循环状态信息确定是否输出第一指令,即基于指令是否为循环指令,以及指令对应的循环次数,即指令在微处理器中的等待时间,来合理安排指令的输出顺序,从而避免执行时间长的指令一直无法输出,进而避免了微处理器的资源占用时间过程的问题,保证了微处理器的性能。
在上述实施例的基础上,本实施例涉及微处理器根据第一指令的循环状态信息,确定是否输出第一指令的具体方法。即,上述步骤S102具体为:
若第一指令已执行完成,并且第一指令的循环标识为真,并且N个第二指令中每个第二指令的循环次数减去第一指令的循环次数的差值大于预设值,则输出第一指令。
若第一指令的循环标识为假,则根据执行第一指令的执行单元的优先级确定是否输出第一指令,或者,上述N个第二指令中每个第二指令的循环次数减去所述第一指令的循环次数的差值小于等于预设值,则根据执行第一指令的执行单元的优先级确定是否输出第一指令。
其中,上述第二指令为微处理器中除执行第一指令的执行单元之外的执行单元中已执行完成的指令,N为微处理器的执行单元数量与微处理器的输出总线数量的差值。
具体地,如前所述,微处理器中包括定点执行部件等执行部件,其中,在定点执行部件中包括ALU执行单元、乘法执行单元、除法执行单元、DSP执行单元等,每个执行单元用于执行一种类型的指令,例如,ALU执行单元可以执行加法、减法、比较等单拍指令,即仅一个时钟周期即可执行完成的指令,乘法执行单元用于执行乘法指令,乘法指令为多拍指令,即需要多个时钟周期才能执行完成的指令。
每个执行单元具有对应的优先级,具体地,ALU执行单元的优先级高于乘法执行单元,乘法执行单元的优先级高于除法执行单元,除法执行单元的优先级高于DSP执行单元。本实施例以1表示ALU执行单元的优先级,2表示乘法执行单元的优先级,3表示除法执行单元的优先级,4表示DSP执行单元的优先级。
作为一种可选的实施方式,可以使用一个数据单元来表示第一指令的循环次数以及执行第一指令的执行单元的优先级。具体地,该数据单元由预设字节组成,其中,该数据单元中从最高比特位开始的预设数量比特位用于表示第一指令的循环次数,该数据单元中除用于表示循环次数的比特位之外的比特位用于表示执行第一指令的执行单元的优先级。本实施例以该数据单元由2字节,即16比特组成,并且,该16比特中的高13位表示第一指令的循环次数,低3位表示执行单元的优先级为例来进行说明。
为便于解释本实施例的方案,以下以微处理器中包括上述4种执行单元,并且,微处理器的执行总线数量为2条为例来进行说明。
假设第一指令为除法指令,即执行第一指令的执行单元为除法执行单元,则用于表示第一指令的数据单元的高13位可以表示为PRI_HI_3,用于表示第一指令的数据单元的低3位可以表示为PRI_LO_3,相应地,可以其他第二指令的表示方式,例如,ALU执行单元所要输出的第二指令可以表示为:PRI_HI_1及PRI_LO_1。
是否输出第一指令可以通过下述公式(1)表示:
DIV_OUT_EN=DIV_RES_VALID&&((LOOP_JUDGE_FLAG&&PRI_HI_3_EN)||(~LOOP_JUDGE_FLAG&&PRI_LO_3_EN)) (1)
其中,DIV_RES_VALID表示除法执行部件是否有结果输出,即只有当除法部件有结果输出,即第一指令已经执行完成的前提下,才能进一步判断第一指令是否可以输出。
PRI_HI_3_EN=(PRI_HI_1-PRI_HI_3-1>0&&PRI_HI_2-PRI_HI_3-1>0)||(PRI_HI_2-PRI_HI_3-1>0&&PRI_HI_4-PRI_HI_3-1>0)||(PRI_HI_1-PRI_HI_3-1>0&&PRI_HI_4-PRI_HI_3-1>0) (2)
由于输出总线仅有2条,而执行单元有4个,即每个时刻只可能有2个执行单元可以输出结果,因此,PRI_HI_3_EN,即公式(2)的计算结果用来表示一个中间计算结果,即,需要保证4个执行单元中有2个(4-2=2)执行单元的待输出指令的循环次数都比第一指令的循环次数大,并且差值要大于1,即差距较大,这样才能保证第一指令的输出顺序处于4个单元中的前两位,才能保证第一指令能够输出。具体地,只要4个执行单元中除第一指令对应执行单元外的任意两个执行单元的待输出指令的循环次数都比第一指令循环次数大预设数值(例如1),则PRI_HI_3_EN的结果为真。
LOOP_JUDGE_FLAG=(LOOP_VALID_1+LOOP_VALID_2+LOOP_VALID_3+LOOP_VALID_4>2)&&(PRI_HI_1_EN||PRI_HI_2_EN||PRI_HI_3_EN||PRI_HI_4_EN) (3)
其中,LOOP_VALID_1表示ALU执行单元的待输出指令是否为循环指令,LOOP_VALID_2表示乘法执行单元的待输出指令是否为循环指令,LOOP_VALID_3表示第一指令是否为循环指令,依次类推。公式(3)为站在整体角度上判断各执行单元的待输出指令是否是需要进行竞争输出的条件。具体地,必须保证4个执行单元中至少有两个执行单元的待输出指令为循环指令,并且,至少一个执行单元的待输出指令的次数比其他执行单元的待输出指令小,则LOOP_JUDGE_FLAG的结果为真。
结合上述公式(1)、(2)和(3),当第一指令执行完成,并且第一指令的循环标识为真,并且第一指令的循环次数比其他N个执行单元的待输出指令的循环次数小预设值时,则第一指令可以输出。即,基于指令的循环次数来决定指令的输出顺序。
举例来说,假设在同一时刻ALU执行单元和乘法执行单元中各有一个待输出的指令结果,ALU执行单元的为加法指令A,为循环指令,循环次数为3,而乘法执行单元的为乘法指令B,为循环指令,循环次数为1,则说明该乘法指令B是在译码模块中循环体执行到第1个循环就处理的指令,而加法指令A是在译码模块中循环体执行到第3个循环才处理的指令,即乘法指令处理的早,在微处理器中已经等待了较长时间,则通过上述公式(1)计算之后,乘法指令的循环次数由于比加法指令的循环次数小2,因此,可以使得公式(1)的结果为真,因此,可以使得乘法指令B先于加法指令A而输出,而不会像现有技术那样一直先输出加法指令,从而避免了乘法指令一直无法输出而造成的资源占用时间长的问题。
而在另一种情况下,即不满足公式(1)中的(LOOP_JUDGE_FLAG&&PRI_HI_3_EN),而满足公式(1)中的
(~LOOP_JUDGE_FLAG&&PRI_LO_3_EN))时,说明第一指令不是循环标识,或者,第二指令的循环次数减去第一指令的循环次数的差值不满足预设差值条件,则说明第一指令并不是循环指令,不存在前述的资源占用长的问题,或者,说明第一指令在微处理器中等待的时间还不是很长,也不会造成资源占用长的问题,则在这种情况下,可以根据执行单元的优先级来确定第一指令是否要输出。
其中,公式(1)中的PRI_LO_3_EN表示第一指令的优先级是否为真,具体地,PRI_LO_3_EN可以通过前述PRI_LO_3以及其他第二指令的优先级确定,例如,如果第一指令的PRI_LO_3=3,同时,PRI_LO_1和PRI_LO_1都有效,即ALU执行单元和乘法执行单元都有待输出指令结果,则PRI_LO_3_EN为假,而如果PRI_LO_1或PRI_LO_1无效,即ALU执行单元或乘法执行单元没有待输出指令结果,则PRI_LO_3_EN为真。
即,当第一指令不是循环指令或者第一指令相比第二指令来说在微处理器中等待时间并不长,则可以按照执行单元的优先级来输出结果,从而在不影响微处理器性能的基础上保证微处理器的吞吐量尽可能大。
在上述实施例的基础上,本实施例涉及微处理器确定第一指令的循环状态信息的具体方法,即,图4为本发明提供的微处理器中指令输出处理方法实施例二的流程示意图,如图4所示,上述步骤S101具体包括:
S401、判断第一指令所在指令队列的首条指令标识是否等于第一指令所在的循环体的首条指令标识,若是,则执行S402-S404。,若否,则继续执行下述图5所示的步骤。
S402、将循环次数寄存器中的值与1相加,将相加结果作为循环次数寄存器的新值。
具体地,微处理器中新增两个寄存器,分别为循环次数寄存器以及循环状态寄存器,其中,循环次数寄存器与循环状态寄存器连接,循环次数寄存器用于保存循环次数,循环状态寄存器用于保存循环标识。
需要说明的是,本发明对于循环次数寄存器与循环状态寄存器在微处理器中的位置以及二者与微处理器中其他部件的具体连接关系根据上述两者的作用可以有多种灵活的实现方式,在本实施例中不做具体限定。
S403、将循环状态寄存器的值更新为真。
S404、将循环次数寄存器的新值作为第一指令对应的循环次数,将循环状态寄存器的值作为第一指令对应的循环标识。
具体地,本发明在微处理器中新增两个寄存器,分别为循环次数寄存器以及循环状态寄存器,其中,循环次数寄存器用于保存循环次数,循环状态寄存器用于保存循环标识。循环次数寄存器的初始值为0,循环状态寄存器的初始值为假。
译码模块中的循环体在译码器中循环执行处理,一个循环体中的指令可以分为多个指令队列执行,以指令队列为单位进行译码处理。可以预先通过一个寄存器记录整个循环体的首条指令的标识,假设称为LOOP_ID,进而,当第一指令所在的指令队列执行时,如果该指令队列的首条指令标识等于LOOP_ID,则说明进入了新的一次循环迭代,则将循环次数寄存器的值加1,同时,将循环状态寄存器的值更新为真,需要说明的是,循环状态寄存器的值可以在第一次判断出有循环体时设置,后续可以不再更改。进而,将循环次数寄存器的值以及循环状态寄存器的值作为第一指令的循环状态信息的值。
另一种情况下,当第一指令所在的指令队列不是循环体的首个指令队列时,则处理过程如图5所示,图5为本发明提供的微处理器中指令输出处理方法实施例三的流程示意图,如图5所示,上述步骤S101具体包括:
S501、判断循环状态寄存器的值是否为真,并且第一指令所在指令队列的首条指令标识是否不等于第一指令所在的循环体的首条指令标识,若都满足,则执行S502-S503,否则,按照现有技术的过程执行,此处不再赘述
S502、将循环次数寄存器的值作为第一指令对应的循环次数。
S503、将循环状态寄存器的值作为所述第一指令对应的循环标识。
即,如果循环状态寄存器中的值为真,并且第一指令所在指令队列的首条指令标识不等于LOOP_ID,则说明第一指令是循环指令,并且第一指令所在指令队列并不是循环体中的第一个指令队列,因此不需要更新循环次数寄存器的值,而仅需要将当前循环次数寄存器以及循环状态寄存器中的值作为第一指令的循环状态信息即可。
另外,如果第一指令不是循环指令,则可以将第一指令的循环次数设置为0,循环标识设置为假,当进行是否输出的判断时,微处理器可以根据这些值以及执行单元的优先级确定是否输出第一指令。
图6为本发明提供的微处理器中指令输出处理装置实施例一的模块结构图,如图6所示,该装置包括:
第一确定模块601,用于确定第一指令的循环状态信息,循环状态信息包括循环标识以及循环次数,循环标识用于标识第一指令是否为循环指令,循环次数用于标识在处理到第一指令时,第一指令所在的循环体的循环迭代次数。
第二确定模块602,用于根据第一指令的循环状态信息,确定是否输出第一指令。
该装置用于实现前述方法实施例,其实现原理和技术效果类似,此处不再赘述。
图7为本发明提供的微处理器中指令输出处理装置实施例二的模块结构图,如图7所示,微处理器中包括多个执行单元,每个执行单元用于执行一种类型的指令;第二确定模块602包括:
输出单元6021,用于在所述第一指令已执行完成,并且所述第一指令的循环标识为真,并且N个第二指令中每个第二指令的循环次数和所述第一指令的循环次数满足输出条件时,输出所述第一指令。
其中,第二指令为微处理器中除执行第一指令的执行单元之外的执行单元中已执行完成的指令,N为微处理器的执行单元数量与微处理器的输出总线数量的差值。
图8为本发明提供的微处理器中指令输出处理装置实施例三的模块结构图,如图8所示,第二确定模块602还包括:
确定单元6022,
用于在所述第一指令的循环标识为假时,根据执行所述第一指令的执行单元的优先级确定是否输出所述第一指令,或者,在所述N个第二指令中每个第二指令的循环次数和所述第一指令的循环次数不满足输出条件时,根据执行所述第一指令的执行单元的优先级确定是否输出所述第一指令;
其中,所述第二指令为微处理器中除执行所述第一指令的执行单元之外的执行单元中已执行完成的指令,N为所述微处理器的执行单元数量与所述微处理器的输出总线数量的差值。
另一实施例中,第一指令的循环次数以及执行第一指令的执行单元的优先级通过由预设字节组成的数据单元来表示,其中,数据单元中从最高比特位开始的预设数量比特位用于表示第一指令的循环次数,数据单元中除用于表示循环次数的比特位之外的比特位用于表示执行第一指令的执行单元的优先级。
图9为本发明提供的微处理器中指令输出处理装置实施例四的模块结构图,如图9所示,微处理器中包括循环次数寄存器以及循环状态寄存器,该循环次数寄存器与该循环状态寄存器连接;其中,循环次数寄存器用于保存循环次数,循环状态寄存器用于保存循环标识;第一确定模块601包括:
判断单元6011,用于判断第一指令所在指令队列的首条指令标识是否等于第一指令所在的循环体的首条指令标识。
相加单元6012,用于在判断单元6011的判断结果为是时,将循环次数寄存器中的值与1相加,将相加结果作为循环次数寄存器的新值。
更新单元6013,用于在判断单元6011的判断结果为是时,将循环状态寄存器的值更新为真。
第一处理单元6014,用于在判断单元6011的判断结果为是时,将循环次数寄存器的新值作为第一指令对应的循环次数,将循环状态寄存器的值作为第一指令对应的循环标识。
图10为本发明提供的微处理器中指令输出处理装置实施例五的模块结构图,如图10所示,第一确定模块601还包括:
第二处理单元6015,用于在循环状态寄存器的值为真,并且第一指令所在指令队列的首条指令标识不等于第一指令所在的循环体的首条指令标识时,将循环次数寄存器的值作为第一指令对应的循环次数,以及,将循环状态寄存器的值作为第一指令对应的循环标识。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (11)
1.一种微处理器中指令输出处理方法,其特征在于,包括:
确定第一指令的循环状态信息,所述循环状态信息包括循环标识以及循环次数,所述循环标识用于标识所述第一指令是否为循环指令,所述循环次数用于标识在处理到所述第一指令时,所述第一指令所在的循环体的循环迭代次数;
根据所述第一指令的循环状态信息,确定是否输出所述第一指令;
所述微处理器中包括多个执行单元,每个执行单元用于执行一种类型的指令;
所述根据所述第一指令的循环状态信息,确定是否输出所述第一指令,包括:
若所述第一指令已执行完成,并且所述第一指令的循环标识为真,并且N个第二指令中每个第二指令的循环次数和所述第一指令的循环次数满足输出条件,则确定输出所述第一指令;
其中,所述第二指令为微处理器中除执行所述第一指令的执行单元之外的执行单元中已执行完成的指令,N为所述微处理器的执行单元数量与所述微处理器的输出总线数量的差值。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一指令的循环状态信息,确定是否输出所述第一指令,包括:
若所述第一指令的循环标识为假,则根据执行所述第一指令的执行单元的优先级确定是否输出所述第一指令;或者,
若N个第二指令中每个第二指令的循环次数和所述第一指令的循环次数不满足输出条件,则根据执行所述第一指令的执行单元的优先级确定是否输出所述第一指令;
其中,所述第二指令为微处理器中除执行所述第一指令的执行单元之外的执行单元中已执行完成的指令,N为所述微处理器的执行单元数量与所述微处理器的输出总线数量的差值。
3.根据权利要求2所述的方法,其特征在于,所述第一指令的循环次数以及执行所述第一指令的执行单元的优先级通过由预设字节组成的数据单元来表示,其中,所述数据单元中从最高比特位开始的预设数量比特位用于表示所述第一指令的循环次数,所述数据单元中除用于表示循环次数的比特位之外的比特位用于表示执行所述第一指令的执行单元的优先级。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述微处理器中包括循环次数寄存器以及循环状态寄存器,所述循环次数寄存器与所述循环状态寄存器连接,所述循环次数寄存器用于保存所述循环次数,所述循环状态寄存器用于保存所述循环标识;
所述确定第一指令的循环状态信息,包括:
判断所述第一指令所在指令队列的首条指令标识是否等于所述第一指令所在的循环体的首条指令标识,若是,则:
将所述循环次数寄存器中的值与1相加,将相加结果作为所述循环次数寄存器的新值;以及,
将所述循环状态寄存器的值更新为真;以及,
将所述循环次数寄存器的所述新值作为所述第一指令对应的循环次数,将所述循环状态寄存器的值作为所述第一指令对应的循环标识。
5.根据权利要求4所述的方法,其特征在于,所述确定第一指令的循环状态信息,包括:
若所述循环状态寄存器的值为真,并且所述第一指令所在指令队列的首条指令标识不等于所述第一指令所在的循环体的首条指令标识,则:
将所述循环次数寄存器的值作为所述第一指令对应的循环次数;以及,
将所述循环状态寄存器的值作为所述第一指令对应的循环标识。
6.一种微处理器中指令输出处理装置,其特征在于,包括:
第一确定模块,用于确定第一指令的循环状态信息,所述循环状态信息包括循环标识以及循环次数,所述循环标识用于标识所述第一指令是否为循环指令,所述循环次数用于标识在处理到所述第一指令时,所述第一指令所在的循环体的循环迭代次数;
第二确定模块,用于根据所述第一指令的循环状态信息,确定是否输出所述第一指令;
所述微处理器中包括多个执行单元,每个执行单元用于执行一种类型的指令;所述第二确定模块包括:
输出单元,用于在所述第一指令已执行完成,并且所述第一指令的循环标识为真,并且N个第二指令中每个第二指令的循环次数和所述第一指令的循环次数满足输出条件时,输出所述第一指令;
其中,所述第二指令为微处理器中除执行所述第一指令的执行单元之外的执行单元中已执行完成的指令,N为所述微处理器的执行单元数量与所述微处理器的输出总线数量的差值。
7.根据权利要求6所述的装置,其特征在于,所述第二确定模块还包括:
确定单元,用于在所述第一指令的循环标识为假时,根据执行所述第一指令的执行单元的优先级确定是否输出所述第一指令,或者,在所述N个第二指令中每个第二指令的循环次数和所述第一指令的循环次数不满足输出条件时,根据执行所述第一指令的执行单元的优先级确定是否输出所述第一指令;
其中,所述第二指令为微处理器中除执行所述第一指令的执行单元之外的执行单元中已执行完成的指令,N为所述微处理器的执行单元数量与所述微处理器的输出总线数量的差值。
8.根据权利要求7所述的装置,其特征在于,所述第一指令的循环次数以及执行所述第一指令的执行单元的优先级通过由预设字节组成的数据单元来表示,其中,所述数据单元中从最高比特位开始的预设数量比特位用于表示所述第一指令的循环次数,所述数据单元中除用于表示循环次数的比特位之外的比特位用于表示执行所述第一指令的执行单元的优先级。
9.根据权利要求6-8任一项所述的装置,其特征在于,所述微处理器中包括循环次数寄存器以及循环状态寄存器,所述循环次数寄存器与所述循环状态寄存器连接,所述循环次数寄存器用于保存所述循环次数,所述循环状态寄存器用于保存所述循环标识;所述第一确定模块包括:
判断单元,用于判断所述第一指令所在指令队列的首条指令标识是否等于所述第一指令所在的循环体的首条指令标识;
相加单元,用于在判断单元的判断结果为是时,将所述循环次数寄存器中的值与1相加,将相加结果作为所述循环次数寄存器的新值;
更新单元,用于在判断单元的判断结果为是时,将所述循环状态寄存器的值更新为真;
第一处理单元,用于在判断单元的判断结果为是时,将所述循环次数寄存器的所述新值作为所述第一指令对应的循环次数,将所述循环状态寄存器的值作为所述第一指令对应的循环标识。
10.根据权利要求9所述的装置,其特征在于,所述第一确定模块还包括:
第二处理单元,用于在所述循环状态寄存器的值为真,并且所述第一指令所在指令队列的首条指令标识不等于所述第一指令所在的循环体的首条指令标识时,将所述循环次数寄存器的值作为所述第一指令对应的循环次数,以及,将所述循环状态寄存器的值作为所述第一指令对应的循环标识。
11.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如上述权利要求1-5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710433164.7A CN109032665B (zh) | 2017-06-09 | 2017-06-09 | 微处理器中指令输出处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710433164.7A CN109032665B (zh) | 2017-06-09 | 2017-06-09 | 微处理器中指令输出处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109032665A CN109032665A (zh) | 2018-12-18 |
CN109032665B true CN109032665B (zh) | 2021-01-26 |
Family
ID=64629813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710433164.7A Active CN109032665B (zh) | 2017-06-09 | 2017-06-09 | 微处理器中指令输出处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109032665B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112000370B (zh) | 2020-08-27 | 2022-04-15 | 北京百度网讯科技有限公司 | 循环指令的处理方法、装置、设备和存储介质 |
CN111796869A (zh) * | 2020-09-07 | 2020-10-20 | 华夏芯(北京)通用处理器技术有限公司 | 程序指令块处理方法及装置 |
CN113778528B (zh) * | 2021-09-13 | 2023-03-24 | 北京奕斯伟计算技术股份有限公司 | 指令发送方法、装置、电子设备及存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1307700A (zh) * | 1998-06-30 | 2001-08-08 | 英特尔公司 | 带有重放系统的计算机处理器 |
CN101048731A (zh) * | 2004-10-20 | 2007-10-03 | 英特尔公司 | 用于单指令、多数据执行引擎的循环指令 |
CN101452394A (zh) * | 2007-11-28 | 2009-06-10 | 无锡江南计算技术研究所 | 编译方法和编译器 |
CN101788903A (zh) * | 2008-11-05 | 2010-07-28 | 英特尔公司 | 基于序列检测或与指令相关联的信息来优化指令的性能 |
CN101986263A (zh) * | 2010-11-25 | 2011-03-16 | 中国人民解放军国防科学技术大学 | 支持单指令流与多指令流动态切换执行的方法及微处理器 |
CN102053819A (zh) * | 2009-10-26 | 2011-05-11 | 索尼公司 | 信息处理设备和信息处理设备的指令解码器 |
CN102270112A (zh) * | 2010-06-03 | 2011-12-07 | 边立剑 | Risc微处理器指令译码电路 |
CN103383651A (zh) * | 2012-05-01 | 2013-11-06 | 瑞萨电子株式会社 | 半导体装置 |
CN104714779A (zh) * | 2013-12-12 | 2015-06-17 | 华为技术有限公司 | 指令处理方法及装置 |
CN105653242A (zh) * | 2015-12-28 | 2016-06-08 | 北京经纬恒润科技有限公司 | 一种计时方法及装置 |
CN105677299A (zh) * | 2016-01-05 | 2016-06-15 | 天脉聚源(北京)传媒科技有限公司 | 一种用于标识选择的方法及装置 |
CN106775591A (zh) * | 2016-11-21 | 2017-05-31 | 江苏宏云技术有限公司 | 一种处理器的硬件循环处理方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10318308B2 (en) * | 2012-10-31 | 2019-06-11 | Mobileye Vision Technologies Ltd. | Arithmetic logic unit |
-
2017
- 2017-06-09 CN CN201710433164.7A patent/CN109032665B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1307700A (zh) * | 1998-06-30 | 2001-08-08 | 英特尔公司 | 带有重放系统的计算机处理器 |
CN101048731A (zh) * | 2004-10-20 | 2007-10-03 | 英特尔公司 | 用于单指令、多数据执行引擎的循环指令 |
CN101452394A (zh) * | 2007-11-28 | 2009-06-10 | 无锡江南计算技术研究所 | 编译方法和编译器 |
CN101788903A (zh) * | 2008-11-05 | 2010-07-28 | 英特尔公司 | 基于序列检测或与指令相关联的信息来优化指令的性能 |
CN102053819A (zh) * | 2009-10-26 | 2011-05-11 | 索尼公司 | 信息处理设备和信息处理设备的指令解码器 |
CN102270112A (zh) * | 2010-06-03 | 2011-12-07 | 边立剑 | Risc微处理器指令译码电路 |
CN101986263A (zh) * | 2010-11-25 | 2011-03-16 | 中国人民解放军国防科学技术大学 | 支持单指令流与多指令流动态切换执行的方法及微处理器 |
CN103383651A (zh) * | 2012-05-01 | 2013-11-06 | 瑞萨电子株式会社 | 半导体装置 |
CN104714779A (zh) * | 2013-12-12 | 2015-06-17 | 华为技术有限公司 | 指令处理方法及装置 |
CN105653242A (zh) * | 2015-12-28 | 2016-06-08 | 北京经纬恒润科技有限公司 | 一种计时方法及装置 |
CN105677299A (zh) * | 2016-01-05 | 2016-06-15 | 天脉聚源(北京)传媒科技有限公司 | 一种用于标识选择的方法及装置 |
CN106775591A (zh) * | 2016-11-21 | 2017-05-31 | 江苏宏云技术有限公司 | 一种处理器的硬件循环处理方法和系统 |
Non-Patent Citations (1)
Title |
---|
LS-DSP数字信号处理器总线的低功耗设计;车德亮; 李剑川; 沈绪榜;《LS-DSP数字信号处理器总线的低功耗设计》;20050425;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109032665A (zh) | 2018-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102074961B1 (ko) | 비대칭 실행 유닛들의 효율적인 스케줄링을 위한 방법 및 장치 | |
CN108089883B (zh) | 基于推测度量将资源分配给线程 | |
JP3547482B2 (ja) | 情報処理装置 | |
US11698790B2 (en) | Queues for inter-pipeline data hazard avoidance | |
US20080313444A1 (en) | Microcomputer and dividing circuit | |
US6269440B1 (en) | Accelerating vector processing using plural sequencers to process multiple loop iterations simultaneously | |
CN109032665B (zh) | 微处理器中指令输出处理方法及装置 | |
US10303399B2 (en) | Data processing apparatus and method for controlling vector memory accesses | |
CN115934168A (zh) | 处理器和内存访问方法 | |
US20190391815A1 (en) | Instruction age matrix and logic for queues in a processor | |
US10942748B2 (en) | Method and system for processing interrupts with shadow units in a microcontroller | |
CN114237878A (zh) | 指令控制方法、电路、装置及相关设备 | |
US11714641B2 (en) | Vector generating instruction for generating a vector comprising a sequence of elements that wraps as required | |
US20070028077A1 (en) | Pipeline processor, and method for automatically designing a pipeline processor | |
US20080215859A1 (en) | Computer with high-speed context switching | |
CN111221573B (zh) | 一种寄存器访问时序的管理方法、处理器、电子设备及计算机可读存储介质 | |
CN108628639B (zh) | 处理器和指令调度方法 | |
CN116991480A (zh) | 指令处理方法、装置、电路、发射器、芯片、介质及产品 | |
US9170819B2 (en) | Forwarding condition information from first processing circuitry to second processing circuitry | |
CN114625421A (zh) | Simt指令处理方法及装置 | |
CN112463218A (zh) | 指令发射控制方法及电路、数据处理方法及电路 | |
CN112445587A (zh) | 一种任务处理的方法以及任务处理装置 | |
JP7498166B2 (ja) | プロセッサ命令パイプラインにおいてアドレス生成ハードウェアを選択的にバイパスするシステム及び方法 | |
GB2576457A (en) | Queues for inter-pipeline data hazard avoidance | |
US10884738B2 (en) | Arithmetic processing device and method of controlling arithmetic processing device |
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 | ||
CB02 | Change of applicant information |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant after: Loongson Zhongke Technology Co.,Ltd. Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant before: LOONGSON TECHNOLOGY Corp.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |