CN117667220B - 指令处理方法、装置、计算机设备和存储介质 - Google Patents
指令处理方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN117667220B CN117667220B CN202410123133.1A CN202410123133A CN117667220B CN 117667220 B CN117667220 B CN 117667220B CN 202410123133 A CN202410123133 A CN 202410123133A CN 117667220 B CN117667220 B CN 117667220B
- Authority
- CN
- China
- Prior art keywords
- vpu
- instruction
- pipeline
- instructions
- group
- 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
- 238000003860 storage Methods 0.000 title claims abstract description 14
- 238000003672 processing method Methods 0.000 title abstract description 17
- 238000000034 method Methods 0.000 claims abstract description 30
- 238000002360 preparation method Methods 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 21
- 230000008878 coupling Effects 0.000 abstract 1
- 238000010168 coupling process Methods 0.000 abstract 1
- 238000005859 coupling reaction Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 230000007062 hydrolysis Effects 0.000 description 2
- 238000006460 hydrolysis reaction Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- 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
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
本申请实施例提供一种指令处理方法及装置、设备及存储介质,所述方法包括:主流水线的译码模块接收VPU指令,生成与VPU指令对应的空指令,将空指令依次发送至主流水线的执行模块、访存模块和写回模块,将VPU指令发送至VPU处理器;主流水线的写回模块接收空指令,向VPU处理器发送广播信号;VPU处理器接收VPU指令,将VPU指令分配至VPU流水线进行处理,并基于接收到的广播信号,将处理结果写回到对应的寄存器,使得VPU指令在主流水和VPU流水线均执行完成,与主流水线松耦合的VPU处理器,作为协处理器弱化与主处理器的耦合关系,同时弱化自身的流水线等级。
Description
技术领域
本申请涉及中央处理器技术领域,具体地,涉及一种指令处理方法、装置、计算机设备和存储介质。
背景技术
协处理器作为主处理器的从机,一般负责处理重运算应用。相当于主处理器的副手,对于特定的指令都交由协处理器处理。例如,VPU(Video Processing Unit,视频处理单元)指令,是一种应用于音视频处理领域的专用指令集。对于这些指令,一般会耗费较长时间处理大量的运算任务,如果交由主处理器处理,会阻塞其他指令的运行。因此,出现“专人办专事”的协处理器。然而,现有的协处理器通常会采用如下方案:
参见图1所示的五级流水线主处理器架构,五级流水线各自负责执行一条指令的部分内容对其分述如下:取指单元:负责从存储器中读取指令;译码单元:负责指令的解码,即识别指令类型;执行单元:负责指令的运算,运算指令会在此得到运算的结果;访存单元:存储器访问,从内部或者外部存储器中读取数据,或者将执行结果写到存储器里;写回单元:结果写回,将指令执行的结果写回到处理器的寄存器堆里,方便下次快速取用。
上述流水线用于处理所有处理器指令。所有指令依次经过所有流水线级,在执行阶段,根据其指令类型(普通运算指令,分支跳转指令,乘除法指令,其他系统指令)将其分配到不同的执行单元,待其返回执行结果后,继续进入流水线下一级直至最终将结果写回到相应寄存器。如此一条指令的生命周期完成。在此架构中,VPU指令和其他类型指令一样随流水线流动执行,没有进行特殊处理。
上述方案是实现VPU指令最经典的方案,该方案基本能满足需求,但是忽视了VPU指令的特点。VPU指令是一类需要操作大量数据的指令,常见于处理音频视频数据。这类应用场景中,指令的运算负载相当大,往往一条指令需要计算几百甚至几千比特的数据。因此处理速度较慢。而在上述经典方案中,只有当指令走到写回单元时,才能安全地将VPU指令发送到其执行单元,意味着VPU指令最早在此时与主流水解耦。在VPU指令执行完并将结果送回主流水线以前,不允许任何新的指令进入。即当前正在执行的VPU指令阻塞了整个流水线。只有当前VPU指令执行完,并将其执行结果返回给主流水后,下一条新的指令才能继续执行。因此,该方案尽管能满足基本功能需求,但是效率极其低下。
在数字电路中,各种组合逻辑会对信号的传输产生阻碍,这就意味着两个相同的信号,在经过不同的逻辑路径到达相同的终点时所消耗的时间并不相同。这个时间就是电路的工作周期,其倒数也就是工作频率。显然,如果信号经过的逻辑越复杂,两个寄存器之间的信号通路越长,那么该信号受到的实际阻碍也就越大,整个电路的工作频率也就越低。在经典架构中,将负责大量运算的VPU处理器放在一个流水线级,会使得该级流水线的硬件实现电路非常大,因此,限制该级流水线的工作频率,使其成为整个架构的频率瓶颈。
发明内容
本申请实施例中提供了一种指令处理方法、装置、计算机设备和存储介质。
本申请实施例的第一个方面,提供了一种指令处理方法,包括:
主流水线的译码模块接收VPU指令,生成与VPU指令对应的空指令,将空指令依次发送至主流水线的执行模块、访存模块和写回模块,并将VPU指令发送至VPU处理器;
主流水线的写回模块接收空指令,向VPU处理器发送广播信号,其中,所述广播信号包括与空指令对应的VPU指令在主流水线上已执行完成的信息;
VPU处理器接收VPU指令,将VPU指令分配至VPU流水线进行处理,并基于接收到的广播信号,将处理结果写回到对应的寄存器,使得VPU指令在主流水和VPU流水线均执行完成。
在本申请一个可选的实施例中,所述方法还包括:
在将VPU指令分配至VPU流水线进行处理之前,按照指令类型对VPU指令分组。
在本申请一个可选的实施例中,所述按照指令类型对VPU指令分组,包括:
在VPU指令属于访存指令的情况下,确定VPU指令属于第一组;
在VPU指令属于运算指令的情况下,确定乘法和加法运算指令属于第二组,乘法和加法运算指令以外的运算指令属于第三组,
所述将VPU指令分配至VPU流水线进行处理,包括:
将第一组、第二组和第三组的VPU指令分别分配至第一VPU流水线、第二VPU流水线和第三VPU流水线,其中,第二VPU流水线和第三VPU流水线均用于对VPU指令进行指令缓存、数据准备、译码、运算执行和写回至寄存器,第一流水线用于对VPU指令进行指令缓存、数据准备和写回至寄存器。
在本申请一个可选的实施例中,所述按照指令类型对VPU指令分组,包括:
在VPU指令属于访存指令的情况下,确定VPU指令属于第四组;
在VPU指令属于运算指令的情况下,确定乘法和加法运算指令属于第五组,
所述将VPU指令分配至VPU流水线进行处理,包括:
将第四组和第五组的VPU指令分别分配至第四VPU流水线和第五VPU流水线,其中,第五VPU流水线均用于对VPU指令进行缓存、数据准备、译码、运算执行和写回至寄存器,第四流水线用于对VPU指令进行指令缓存、数据准备和写回至寄存器。
在本申请一个可选的实施例中,所述按照指令类型对VPU指令分组,包括:
在VPU指令属于访存指令的情况下,确定VPU指令属于第六组;
在VPU指令属于运算指令的情况下,确定乘法运算指令属于第七组,加法运算指令属于第八组,乘法和加法运算指令以外的运算指令属于第九组,
所述将VPU指令分配至VPU流水线进行处理,包括:
将第六组、第七组、第八组和第九组的VPU指令分别分配至第六VPU流水线、第七VPU流水线、第八VPU流水线和第九VPU流水线,其中,第七VPU流水线、第八VPU流水线和第九VPU流水线均用于对VPU指令进行指令缓存、数据准备、译码、运算执行和写回至寄存器,第六VPU流水线用于对VPU指令进行指令缓存、数据准备和写回至寄存器。
在本申请一个可选的实施例中,所述第二VPU流水线对VPU指令进行缓存的缓存深度大于所述第三VPU流水线,第三VPU流水线对VPU指令进行缓存的缓存深度大于所述第一VPU流水线。
在本申请一个可选的实施例中,所述基于接收到的广播信号,将处理结果写回到对应的寄存器,包括:
在将VPU指令分配至VPU流水线进行处理完成后,在接收到广播信号的情况下,将处理结果写回到对应的寄存器。
本申请实施例的第二个方面,提供了一种指令处理装置,包括主流水线的译码模块、执行模块、访存模块和写回模块以及VPU处理器,其中,
主流水线的译码模块,用于接收VPU指令,生成与VPU指令对应的空指令,将空指令依次发送至主流水线的执行模块、访存模块和写回模块,并将VPU指令发送至VPU处理器;
主流水线的写回模块,用于接收空指令,向VPU处理器发送广播信号,其中,所述广播信号包括与空指令对应的VPU指令在主流水线上已执行完成的信息;
VPU处理器,用于接收VPU指令,将VPU指令分配至VPU流水线进行处理,并基于接收到的广播信号,将处理结果写回到对应的寄存器,使得VPU指令在主流水和VPU流水线均执行完成。
本申请实施例的第三个方面,提供了一种计算机设备,包括:包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现如上任一项方法的步骤。
本申请实施例的第四个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,计算机程序被处理器执行时实现如上任一项的方法的步骤。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为现有技术中中央处理器流水线工作过程示意图;
图2为本申请一个实施例提供的指令处理方法的流程图;
图3为本申请一个实施例提供的中央处理器流水线工作过程示意图;
图4为本申请一个实施例提供的指令处理装置结构示意图;
图5为本申请一个实施例提供的计算机设备结构示意图。
具体实施方式
在实现本申请的过程中,发明人发现,目前的VPU指令与主流水线紧密耦合,VPU指令随着主流水线一起流动,当VPU指令因运算负载重而无法进入下一级流水时,主流水也被卡主,无法接收新的其他指令,使得处理器效率低下。
针对上述问题,本申请实施例中提供了指令处理方法,主流水线的译码模块接收VPU指令,生成与VPU指令对应的空指令,将空指令依次发送至主流水线的执行模块、访存模块和写回模块,并将VPU指令发送至VPU处理器;主流水线的写回模块接收空指令,向VPU处理器发送广播信号,其中,所述广播信号包括与空指令对应的VPU指令在主流水线上已执行完成的信息; VPU处理器接收VPU指令,将VPU指令分配至VPU流水线进行处理,并基于接收到的广播信号,将处理结果写回到对应的寄存器,使得VPU指令在主流水和VPU流水线均执行完成,与主流水线松耦合的VPU处理器,作为协处理器弱化与主处理器的耦合关系,同时弱化自身的流水线等级,将全部VPU指令分为若干组,各组指令之间互不干涉独立执行,组内指令又严格按照顺序执行,既有顺序处理器的简单,又保留乱序处理器的高性能。
本申请实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。
为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
请参见图2,本申请实施例提供的指令处理方法,包括:
S1,主流水线的译码模块接收VPU指令,生成与VPU指令对应的空指令,将空指令依次发送至主流水线的执行模块、访存模块和写回模块,并将VPU指令发送至VPU处理器。
在本申请一个可选的实施例中,主流水线包括取指模块、译码模块、执行模块、访存模块和写回模块。VPU指令为应用于音视频处理的指令集。空指令不执行操作,但占一个程序步。
S2,主流水线的写回模块接收空指令,向VPU处理器发送广播信号,其中,所述广播信号包括与空指令对应的VPU指令在主流水线上已执行完成的信息。
在本申请一个可选的实施例中,在空指令从主流水线的译码模块、经由执行模块和访存模块走到写回模块时,向VPU处理器发送广播信号。
S3,VPU处理器接收VPU指令,将VPU指令分配至VPU流水线进行处理,并基于接收到的广播信号,将处理结果写回到对应的寄存器,使得VPU指令在主流水和VPU流水线均执行完成。
在本申请一个可选的实施例中,VPU流水线至少包括VPU指令缓存模块、数据准备模块、VPU指令译码模块、VPU运算执行模块和VPU写回模块。
在本申请一个可选的实施例中,所述将VPU指令分配至VPU流水线进行处理,包括:
对VPU指令中的运算指令执行缓存、访存、译码、运算执行和写回至寄存器的步骤;
对VPU指令中的访存指令执行缓存、访存和写回至寄存器的步骤。
在本申请一个可选实施例中,步骤S3,所述基于接收到的广播信号,将处理结果写回到对应的寄存器,包括:
在将VPU指令分配至VPU流水线进行处理完成后,在接收到广播信号的情况下,将处理结果写回到对应的寄存器。
本公开的指令处理方法,主流水线的译码模块接收到VPU指令,即译码阶段时,根据指令类型将VPU指令分配至VPU流水线,此时,VPU指令就和主流水解绑了,只有当空指令在主流水线中走完写回模块流水时,向VPU流水线发送广播信号,通知正在执行或者还未执行的VPU指令,当前指令已经安全地执行完成,只需要将执行结果写回到对应的寄存器,即在所有流水线(包括主流水线和VPU流水线)中执行完成,VPU指令在经过主流水的译码阶段之后,即可专门处理数据计算,当计算完成时,从主流水线中获取其是否安全执行完成的信息,再决定是否将结果写回到相应的寄存器,因此,主流水线和VPU流水线仅需要少量的广播信息用于VPU指令派遣和写回,除此之外,二者互不相干,各自独立运行,能够从根本上避免VPU指令阻塞主流水线的问题。
在本申请一个可选的实施例中,所述方法还包括:
在将VPU指令分配至VPU流水线进行处理之前,按照指令类型对VPU指令分组。
在本申请一个可选的实施例中,参见图3,所述按照指令类型对VPU指令分组,包括:
S31,在VPU指令属于访存指令的情况下,确定VPU指令属于第一组;
S32,在VPU指令属于运算指令的情况下,确定乘法和加法运算指令属于第二组,乘法和加法运算指令以外的运算指令属于第三组,其中,第二组的运算指令影响VPU处理器性能,需要快速处理,第三组的运算指令不影响VPU处理器性能,可以稍慢处理,
所述将VPU指令分配至VPU流水线进行处理,包括:
将第一组、第二组和第三组的VPU指令分别分配至第一VPU流水线、第二VPU流水线和第三VPU流水线,其中,第二VPU流水线和第三VPU流水线均用于对VPU指令进行指令缓存、数据准备、译码、运算执行和写回至寄存器,第一流水线用于对VPU指令进行指令缓存、数据准备和写回至寄存器。
在本申请一个可选的实施例中,所述按照指令类型对VPU指令分组,包括:
在VPU指令属于访存指令的情况下,确定VPU指令属于第四组;
在VPU指令属于运算指令的情况下,确定乘法和加法运算指令属于第五组,
所述将VPU指令分配至VPU流水线进行处理,包括:
将第四组和第五组的VPU指令分别分配至第四VPU流水线和第五VPU流水线,其中,第五VPU流水线均用于对VPU指令进行指令缓存、数据准备、译码、运算执行和写回至寄存器,第四流水线用于对VPU指令进行指令缓存、数据准备和写回至寄存器。
在本申请一个可选的实施例中,所述按照指令类型对VPU指令分组,包括:
在VPU指令属于访存指令的情况下,确定VPU指令属于第六组;
在VPU指令属于运算指令的情况下,确定乘法运算指令属于第七组,加法运算指令属于第八组,乘法和加法运算指令以外的运算指令属于第九组,
所述将VPU指令分配至VPU流水线进行处理,包括:
将第六组、第七组、第八组和第九组的VPU指令分别分配至第六VPU流水线、第七VPU流水线、第八VPU流水线和第九VPU流水线,其中,第七VPU流水线、第八VPU流水线和第九VPU流水线均用于对VPU指令进行指令缓存、数据准备、译码、运算执行和写回至寄存器,第六VPU流水线用于对VPU指令进行指令缓存、数据准备和写回至寄存器。
在本申请一个可选的实施例中,按照指令类型对VPU指令分组,分组数量包括但不限于上述的两组、三组和四组,只要对每一组VPU指令均设置对应的VPU流水线即可。
本公开的指令处理方法,对于VPU指令中的所有访存指令,单独分配一个VPU流水线,提升其处理速度,使得整个VPU流水线在同一时刻可以同时处理至少2条VPU指令,还不会阻塞主流线,实现VPU指令和其他通用指令的高效处理,能够显著的提升主处理器的性能,并且可以运行在更高的主频。
本公开的指令处理方法,按对VPU处理器性能影响程度对VPU指令进行分组,每组指令都有独立的流水线,各组之间互不干扰,独立运行,能够进一步提高VPU处理器性能。
本公开的指令处理方法,考虑到VPU指令都是处理大量运算数据,根据是否影响VPU处理器的性能,将所有VPU指令分为两组、三组或者四组甚至更多组,每一组都有独立的VPU流水线,采取不同的运算处理方案,各组之间互不干扰,对VPU流水线分级,将VPU指令执行与控制分布在各个流水线,能够提升VPU协处理器运行主频。
在本申请一个可选实施例中,参见图4,VPU处理器包括:
VPU指令派遣模块,用于将VPU指令按指令类型分组,并根据分组将其分配到不同的VPU流水线;
VPU指令缓存模块,用于将派遣过来的指令缓存,以便派遣模块派遣更多的VPU指令,每组流水线都有,但深度不同,所述第二VPU流水线最深,所述第三VPU流水线次之,所述第一VPU流水线最浅;
数据准备模块,用于为运算指令准备待运算的数据等,为访存指令准备指令访存地址等;
VPU指令译码模块,用于获取VPU指令详细的信息,并根据信息将指令分配到具体的执行单元,仅支持运算指令,即仅在第二VPU流水线和第三VPU流水线;
VPU运算执行模块,仅支持运算指令,即仅在第二VPU流水线和第三VPU流水线;
VPU写回模块,用于执行结果写回到寄存器,各组指令都有。
在本申请一个可选实施例中,各个VPU流水线适配对应组的VPU指令,对于相应组的指令,需要完整走完所有流水线才算执行完成。以下为VPU指令具体的执行流程:
由于所有指令都要经过主流水线的5级流水才算执行完成,因此,VPU指令也要经过主流水线的5级流水。但是经过主流水线的译码模块流水之后的VPU指令在主流水线中可以视为一种空指令,并不会阻塞任何后续指令的执行。只有当空指令在主流水线中走完写回模块流水时,向VPU流水线发送广播信号,通知VPU流水线中正在执行或者还未执行的VPU指令,当前指令已经在水流水线中安全地执行完成,只需要在VPU流水线中将执行结果写回到对应的寄存器,即在所有流水线(包括主流水线和VPU流水线)中执行完成。
在本公开的指令处理方法中,VPU指令在经过主流水的译码阶段之后,即可专门处理数据计算,当计算完成时,从主流水线中获取其是否安全执行完成的信息,再决定是否将结果写回到相应的寄存器,主流水线和VPU流水线仅需要少量的广播信息用于VPU指令派遣和写回,除此之外,二者互不相干,各自独立运行,能够从根本上避免VPU指令阻塞主流水线的问题。
本公开的指令处理方法,在主流水的译码阶段通过VPU处理器将主流水线与VPU指令解绑,让VPU指令在执行运算时,主流水可以接收并执行新的其他类型指令甚至是VPU指令,使得VPU执行单元与主流水线之间仅需要极少量的同步信息即可安全执行,大大提升整个处理器的性能。
在本申请一个可选实施例中,所述第二VPU流水线通过并行处理方式或者串行处理方式进行运算执行,其中,所述第二VPU流水线中,对于影响性能的加法指令,可以采取并行处理方式提高处理速度,如两个32位数据相加,可以用四个8位数据,用4个加法器在1个周期内并行处理,也可以采取串行处理方式,如两个32位数据相加,可以用四个8位数据,用1个加法器在4个周期内串行处理,所述第二VPU流水线根据性能需求选择并行处理方式或者串行处理方式。
在本申请一个可选实施例中,所述第三VPU流水线通过串行处理方式进行运算执行,其中,所述第三VPU流水线中,采取串行处理方式降低资源消耗,如移动一个32位数据到另一个寄存器,可以用1个8位移位模块,分4次,在4个周期内完成。
应该理解的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
请参见图4,本申请一个实施例提供了一种指令处理装置,包括:主流水线的译码模块、执行模块、访存模块和写回模块以及VPU处理器,其中,
主流水线的译码模块,用于接收VPU指令,生成与VPU指令对应的空指令,将空指令依次发送至主流水线的执行模块、访存模块和写回模块,并将VPU指令发送至VPU处理器;
主流水线的写回模块,用于接收空指令,向VPU处理器发送广播信号,其中,所述广播信号包括与空指令对应的VPU指令在主流水线上已执行完成的信息;
VPU处理器,用于接收VPU指令,将VPU指令分配至VPU流水线进行处理,并基于接收到的广播信号,将处理结果写回到对应的寄存器,使得VPU指令在主流水和VPU流水线均执行完成。
本公开的指令处理装置,通过VPU处理器接收在主流水的译码模块发送的VPU指令,在主流水的执行模块、访存模块和写回模块走空指令,并在VPU处理器执行VPU指令,接收主流水写回模块发送的广播信号,仅与主流水的译码模块和写回模块接收VPU指令和广播信号,使得VPU处理器与主流水线松耦合,通过VPU处理器独立的VPU流水线,当VPU指令执行时不会阻塞主流水线,能够提升主处理器性能。
关于上述指令处理装置的具体限定可以参见上文中对于指令处理方法的限定,在此不再赘述。上述指令处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备的内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现如上的一种指令处理方法。包括:包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现如上指令处理方法中的任一步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时可以实现如上指令处理方法中的任一步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (6)
1.一种指令处理方法,其特征在于,包括:
主流水线的译码模块接收VPU指令,生成与VPU指令对应的空指令,将空指令依次发送至主流水线的执行模块、访存模块和写回模块,并将VPU指令发送至VPU处理器;
主流水线的写回模块接收空指令,向VPU处理器发送广播信号,其中,所述广播信号包括与空指令对应的VPU指令在主流水线上已执行完成的信息;
VPU处理器接收VPU指令,将VPU指令分配至VPU流水线进行处理,并基于接收到的广播信号,将处理结果写回到对应的寄存器,使得VPU指令在主流水和VPU流水线均执行完成,
其中,所述方法还包括:
在将VPU指令分配至VPU流水线进行处理之前,按照指令类型对VPU指令分组,
其中,所述按照指令类型对VPU指令分组,按照以下三种方式中的任意一种执行:
第一种,所述按照指令类型对VPU指令分组,包括:
在VPU指令属于访存指令的情况下,确定VPU指令属于第一组;
在VPU指令属于运算指令的情况下,确定乘法和加法运算指令属于第二组,乘法和加法运算指令以外的运算指令属于第三组,
所述将VPU指令分配至VPU流水线进行处理,包括:
将第一组、第二组和第三组的VPU指令分别分配至第一VPU流水线、第二VPU流水线和第三VPU流水线,其中,第二VPU流水线和第三VPU流水线均用于对VPU指令进行指令缓存、数据准备、译码、运算执行和写回至寄存器,第一流水线用于对VPU指令进行指令缓存、数据准备和写回至寄存器,
第二种,所述按照指令类型对VPU指令分组,包括:
在VPU指令属于访存指令的情况下,确定VPU指令属于第四组;
在VPU指令属于运算指令的情况下,确定乘法和加法运算指令属于第五组,
所述将VPU指令分配至VPU流水线进行处理,包括:
将第四组和第五组的VPU指令分别分配至第四VPU流水线和第五VPU流水线,其中,第五VPU流水线均用于对VPU指令进行指令缓存、数据准备、译码、运算执行和写回至寄存器,第四流水线用于对VPU指令进行指令缓存、数据准备和写回至寄存器,
第三种,所述按照指令类型对VPU指令分组,包括:
在VPU指令属于访存指令的情况下,确定VPU指令属于第六组;
在VPU指令属于运算指令的情况下,确定乘法运算指令属于第七组,加法运算指令属于第八组,乘法和加法运算指令以外的运算指令属于第九组,
所述将VPU指令分配至VPU流水线进行处理,包括:
将第六组、第七组、第八组和第九组的VPU指令分别分配至第六VPU流水线、第七VPU流水线、第八VPU流水线和第九VPU流水线,其中,第七VPU流水线、第八VPU流水线和第九VPU流水线均用于对VPU指令进行指令缓存、数据准备、译码、运算执行和写回至寄存器,第六VPU流水线用于对VPU指令进行指令缓存、数据准备和写回至寄存器。
2.根据权利要求1所述的方法,其特征在于,所述第二VPU流水线对VPU指令进行缓存的缓存深度大于所述第三VPU流水线,第三VPU流水线对VPU指令进行缓存的缓存深度大于所述第一VPU流水线。
3.根据权利要求1所述的方法,其特征在于,所述基于接收到的广播信号,将处理结果写回到对应的寄存器,包括:
在将VPU指令分配至VPU流水线进行处理完成后,在接收到广播信号的情况下,将处理结果写回到对应的寄存器。
4.一种指令处理装置,其特征在于,包括主流水线的译码模块、执行模块、访存模块和写回模块以及VPU处理器,其中,
主流水线的译码模块,用于接收VPU指令,生成与VPU指令对应的空指令,将空指令依次发送至主流水线的执行模块、访存模块和写回模块,并将VPU指令发送至VPU处理器;
主流水线的写回模块,用于接收空指令,向VPU处理器发送广播信号,其中,所述广播信号包括与空指令对应的VPU指令在主流水线上已执行完成的信息;
VPU处理器,用于接收VPU指令,将VPU指令分配至VPU流水线进行处理,并基于接收到的广播信号,将处理结果写回到对应的寄存器,使得VPU指令在主流水和VPU流水线均执行完成,
其中,在将VPU指令分配至VPU流水线进行处理之前,按照指令类型对VPU指令分组,
所述按照指令类型对VPU指令分组,包括:
在VPU指令属于访存指令的情况下,确定VPU指令属于第一组;
在VPU指令属于运算指令的情况下,确定乘法和加法运算指令属于第二组,乘法和加法运算指令以外的运算指令属于第三组,
所述将VPU指令分配至VPU流水线进行处理,包括:
将第一组、第二组和第三组的VPU指令分别分配至第一VPU流水线、第二VPU流水线和第三VPU流水线,其中,第二VPU流水线和第三VPU流水线均用于对VPU指令进行指令缓存、数据准备、译码、运算执行和写回至寄存器,第一流水线用于对VPU指令进行指令缓存、数据准备和写回至寄存器。
5.一种计算机设备,包括:包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至3中任一项所述方法的步骤。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至3中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410123133.1A CN117667220B (zh) | 2024-01-30 | 2024-01-30 | 指令处理方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410123133.1A CN117667220B (zh) | 2024-01-30 | 2024-01-30 | 指令处理方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117667220A CN117667220A (zh) | 2024-03-08 |
CN117667220B true CN117667220B (zh) | 2024-05-17 |
Family
ID=90064382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410123133.1A Active CN117667220B (zh) | 2024-01-30 | 2024-01-30 | 指令处理方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117667220B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1140857A (zh) * | 1995-04-28 | 1997-01-22 | 松下电器产业株式会社 | 装有高效利用主处理器中的寄存器数据的协处理器的信息处理装置 |
CN107077717A (zh) * | 2014-12-18 | 2017-08-18 | 英特尔公司 | 促进计算设备上的图形处理单元上的工作负荷执行的动态流水线化 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006082091A2 (en) * | 2005-02-07 | 2006-08-10 | Pact Xpp Technologies Ag | Low latency massive parallel data processing device |
US8054314B2 (en) * | 2005-05-27 | 2011-11-08 | Ati Technologies, Inc. | Applying non-homogeneous properties to multiple video processing units (VPUs) |
US11061682B2 (en) * | 2014-12-15 | 2021-07-13 | Hyperion Core, Inc. | Advanced processor architecture |
US10310860B2 (en) * | 2016-07-29 | 2019-06-04 | International Business Machines Corporation | Starting and stopping instruction dispatch to execution unit queues in a multi-pipeline processor |
-
2024
- 2024-01-30 CN CN202410123133.1A patent/CN117667220B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1140857A (zh) * | 1995-04-28 | 1997-01-22 | 松下电器产业株式会社 | 装有高效利用主处理器中的寄存器数据的协处理器的信息处理装置 |
CN107077717A (zh) * | 2014-12-18 | 2017-08-18 | 英特尔公司 | 促进计算设备上的图形处理单元上的工作负荷执行的动态流水线化 |
Non-Patent Citations (1)
Title |
---|
DSP上视频编码器的计算效率优化技术研究;王中元;胡瑞敏;朱荣;常军;;信号处理;20090125(第01期);149-154 * |
Also Published As
Publication number | Publication date |
---|---|
CN117667220A (zh) | 2024-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11900113B2 (en) | Data flow processing method and related device | |
JP2011096254A (ja) | 乗累算演算を実行するための装置および方法 | |
US10430191B2 (en) | Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture to enable speculative execution and avoid data corruption | |
CN110865814B (zh) | 一种支持异构计算核架构的编译器实现方法和系统 | |
US11816061B2 (en) | Dynamic allocation of arithmetic logic units for vectorized operations | |
US20230195526A1 (en) | Graph computing apparatus, processing method, and related device | |
US8959501B2 (en) | Type and length abstraction for data types | |
CN114968373A (zh) | 指令分派方法、装置、电子设备及计算机可读存储介质 | |
CN103870335A (zh) | 用于信号流编程的数字信号处理器代码的高效资源管理的系统和方法 | |
CN103593221A (zh) | 用于动态数据配置的方法和设备 | |
CN117827284B (zh) | 向量处理器访存指令处理方法、系统、设备及存储介质 | |
CN117193861A (zh) | 指令处理方法、装置、计算机设备和存储介质 | |
CN117348929A (zh) | 指令执行方法、系统控制器及相关产品 | |
CN117667220B (zh) | 指令处理方法、装置、计算机设备和存储介质 | |
US20230367604A1 (en) | Method of interleaved processing on a general-purpose computing core | |
CN116737241B (zh) | 一种指令融合方法、处理器核、处理器和计算机系统 | |
CN114610395B (zh) | 指令分派方法、装置、电子设备及计算机可存储介质 | |
CN106951304B (zh) | 并发调用方法及装置 | |
EP1387266A1 (en) | Software pipelining for branching control flow | |
CN114528248A (zh) | 阵列重构方法、装置、设备及存储介质 | |
CN113867709A (zh) | 区块链智能合约读写集构建方法及装置 | |
CN109213529A (zh) | 流水线处理器调度指令的方法、装置及流水线处理器 | |
CN116932050A (zh) | 指令处理装置、微处理器以及设备 | |
Anand et al. | Synthesizing and verifying multicore parallelism in categories of nested code graphs | |
CN118171711B (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 |