CN113220347A - 基于多级流水线的指令处理方法、浮点型dsp以及音频设备 - Google Patents
基于多级流水线的指令处理方法、浮点型dsp以及音频设备 Download PDFInfo
- Publication number
- CN113220347A CN113220347A CN202110339839.8A CN202110339839A CN113220347A CN 113220347 A CN113220347 A CN 113220347A CN 202110339839 A CN202110339839 A CN 202110339839A CN 113220347 A CN113220347 A CN 113220347A
- Authority
- CN
- China
- Prior art keywords
- instruction
- assembler
- instructions
- program
- execution
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 19
- 238000000034 method Methods 0.000 claims abstract description 40
- 238000012545 processing Methods 0.000 claims abstract description 38
- 230000008569 process Effects 0.000 claims abstract description 31
- 238000010586 diagram Methods 0.000 description 10
- 230000000712 assembly Effects 0.000 description 9
- 238000000429 assembly Methods 0.000 description 9
- 238000005457 optimization Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及基于多级流水线的指令处理方法、浮点型DSP以及音频设备。指令处理时,在任一汇编程序中存在数据相关性的两条指令间插入有另一汇编程序的指令,同时处理两个汇编程序的指令,从根本上解决了数据相关性的问题,无需再浪费一个时钟周期进行等待。同时,为了保证同时处理两个汇编程序的指令不会出错,对跳转指令进行了特殊的伪跳转处理。本发明的方案,一方面通过同时执行两个程序的指令,解决了程序指令处理时存在的数据相关性问题,提高了指令的执行效率,另一方面通过对跳转指令的伪跳转处理,可以保证多个程序的指令同时执行时不出错,这样在确保指令执行效率的同时,也确保了指令执行的灵活性和准确性,使得汇编程序指令的执行可控制。
Description
技术领域
本发明涉及数字处理领域,尤其涉及基于多级流水线的指令处理方法、浮点型数字信号处理器(Digital Signal Processor,数字信号处理器)以及音频设备。
背景技术
DSP处理器特别是音频DSP处理器中通常包含乘加运算单元用以执行乘法、加法运算。对于高性能的音频DSP处理器,在工艺受限的情况下,为了提高频率通常是通过增加乘加运算单元的流水线的方式进行,而浮点乘加运算单元采用2个时钟周期的流水线,即两级流水线是比较常见的选择。但是,如果采用两级流水线的浮点乘加运算单元,则必然会遇到数据相关性的问题,如图1,指令I1和I2之间存在数据相关性,因为I1指令的目的寄存器R2,在I2指令中作为源寄存器,I1指令的结果,需要在计算完成后写到R2寄存器中,而I2指令的源数据,需要在计算前,从R2寄存中读取,由于浮点乘加运算单元为两级流水线,所以I1指令是没办法在一个周期内完成,因此在下一个周期I2指令是没办法读取R2的值的,而需要等待一个周期,例如,在I1和I2间插入一个空指令,同样I3和I4也存在数据相关性。而音频DSP中许多的算法程序的指令间都会存在数据相关性,比如FIR算法程序,所以采用两级流水的浮点乘加单元必然导致DSP芯片的指令执行效率大大降低,采用多核设计可以提高指令的执行效率,但是这会带来面积的加倍和成本的提高。
因此,如何在不增加硬件资源的情况下提高采用两级浮点乘加单元的DSP的指令执行效率是亟待解决的问题。
发明内容
基于上述现状,本发明的主要目的在于提供一种基于多级流水线的指令处理方法、处理器以及音频设备,通过对多个汇编程序的指令进行优化合成一个程序汇编,并采用特别设计的跳转指令,可以通过同时执行两段汇编程序,在解决了解决指令间的数据相关性,也大大提高了DSP处理器的指令执行效率。
为实现上述目的,本发明采用的技术方案如下:
一种基于多级流水线的指令处理方法,应用于浮点型数字信号处理器,所述浮点型数字信号处理器采用多级流水线方式进行指令处理,所述多级流水线至少包括取指阶段、解码阶段、执行阶段和回写阶段,所述执行阶段占用两级流水线,所述方法包括以下步骤:
S100,从指令存储器中读取目标汇编程序的指令;其中,所述目标汇编程序由至少两个汇编程序编译而成,所述目标汇编程序中,任一汇编程序中存在数据相关性的两条指令间插入有另一汇编程序的指令;
S200,对读取的指令进行译码处理得到译码后的指令;
执行阶段以及回写阶段:
S300,判断译码后的所述指令是否为跳转指令,若不是,则执行步骤S400,若是,则执行步骤S500;
S400,执行所述译码后的指令得到执行结果后进行回写操作,完成所述译码后的指令的处理;
S500,确定所述跳转指令指向的下一待处理指令,进入步骤S600;
S600,依次执行所述跳转指令和所述待处理指令间的所有指令,其中,对于与所述伪跳转指令属于同一汇编程序的指令,跳过所述回写阶段,不进行回写操作,其他指令则将执行结果进行回写操作。
优选地,至少两个汇编程序包括第一汇编程序和第二汇编程序,所述浮点型数字信号处理器包括寄存器组,所述步骤S100之前,所述方法还包括:
S010,将所述寄存器组分为第一寄存器组和第二寄存器组,第一寄存器组分配给所述第一汇编程序作为指令的目的寄存器,第二寄存器组分配给所述第二汇编程序作为指令的目的寄存器。
优选地,至少两个汇编程序包括第一汇编程序和第二汇编程序,所述目标汇编程序由编译器编译得到后写入所述指令存储器中,所述编译过程包括:
获取所述第一汇编程序的指令和所述第二汇编程序的指令;
在所述第一汇编程序的执行顺序相邻的每两个指令之间,插入所述第二汇编程序的指令以得到所述目标汇编程序。
优选地,至少两个汇编程序包括第一汇编程序和第二汇编程序,所述目标汇编程序由编译器编译得到后写入所述指令存储器中,所述编译过程包括:
获取所述第一汇编程序的指令和所述第二汇编程序剩余的指令;
对所述第一汇编程序中执行顺序相邻每两个指令的数据相关性进行判断,若前一指令与后一指令间存在数据相关性,则在前一指令和后一指令插入所述第二汇编程序的指令,否则继续编译所述第一汇编程序的下一个指令。
优选地,至少两个汇编程序还包括第三汇编程序,所述编译过程还包括:
当所述第一汇编程序的所有指令已经编译完而所述第二汇编程序的指令还未编译完时,获取第三汇编程序的指令和所述第二汇编程序剩余的指令;
在所述第三汇编程序中执行顺序相邻的每两个指令之间,插入所述第二汇编程序的指令以得到所述目标汇编程序。
优选地,至少两个汇编程序还包括第三汇编程序,所述编译过程还包括:
当所述第一汇编程序的所有指令已经编译完而所述第二汇编程序的指令还未编译完时,获取第三汇编程序的指令和所述第二汇编程序的指令;
对所述第三汇编程序的执行顺序相邻的两个指令的数据相关性进行判断,若前一指令与后一指令间存在数据相关性,则在前一指令和后一指令插入所述第二汇编程序的指令,否则继续编译所述第三汇编程序的下一个指令。
优选地,至少两个汇编程序还包括第四汇编程序,所述编译过程还包括:
当所述第一汇编程序的所有指令还未编译完而所述第二汇编程序的指已经编译完时,获取所述第一汇编程序剩余的指令和所述第四汇编程序的指令;
在所述第一汇编程序剩余的指令中,当需要插入指令时,将插入指令改为所述第四汇编程序的指令。
优选地,当所述至少两个汇编程序的数量大于2时,所述步骤S010还包括:
所述目标汇编程序中任一汇编程序的指令完毕后,该执行完毕的汇编程序对应的目的寄存器被释放并分配给下一汇编程序作为指令的目的寄存器。
优选地,所述步骤S600包括步骤:
S601,对所述跳转指令和所述待处理指令间的所有指令,依次进入执行阶段开始执行;
S602,对于每一个指令,在进行回写操作前,判断当前指令的目的寄存器是否为分配给所述跳转指令所属的汇编程序的寄存器组中的任一个,若是,执行步骤S603,若否,执行步骤S604;
S603,忽略当前指令的回写操作,结束对当前指令的处理;
S604,进行回写操作,将当前指令的执行结果写回数据存储器。
本发明还提供一种浮点型数字信号处理器,所述浮点型数字信号处理器包括一个或多个DSP内核、指令存储器、数据存储器,其中,每个所述DSP内核包括取指单元、解码单元、浮点执行单元以及回写单元,所述取指单元、所述解码单元、所述浮点执行单元以及所述回写单元形成多级流水线,所述DSP内核执行如前所述的指令处理方法以处理所述指令存储器中的指令。
本发明还提供一种音频处理设备,用于处理音频数据,所述音频设备包括如前所述的浮点型数字信号处理器。
有益效果:
本发明的基于多级流水线的指令处理方法,可用于包括取指阶段、解码阶段、执行阶段以及回写阶段的多级流水线的浮点型数字信号处理器,执行阶段占用两级流水线。指令处理时,在任一汇编程序中存在数据相关性的两条指令间插入有另一汇编程序的指令,同时处理两个汇编程序的指令,从根本上解决了数据相关性的问题,无需再浪费一个时钟周期进行等待。同时,为了保证同时处理两个汇编程序的指令不会出错,对跳转指令进行了特殊的伪跳转处理:依次执行跳转指令以及其指向的下一待处理指令间的所有指令,对于与跳转指令属于同一汇编程序的指令,跳过所述回写阶段,不进行回写操作,其他指令则将执行结果进行回写操作,写回数据存储器中。本发明的方案,一方面通过同时执行两个程序的指令,解决了程序指令处理时存在的数据相关性问题,提高了指令的执行效率,另一方面通过对跳转指令的伪跳转处理,可以保证多个程序的指令同时执行时不出错,这样在确保指令执行效率的同时,也确保了指令执行的灵活性和准确性,使得汇编程序指令的执行可控制。
本发明的其他有益效果,将在具体实施方式中通过具体技术特征和技术方案的介绍来阐述,本领域技术人员通过这些技术特征和技术方案的介绍,应能理解所述技术特征和技术方案带来的有益技术效果。
附图说明
以下将参照附图对根据本发明的优选实施方式进行描述。图中:
图1所示是现有技术中本发明第一实施例中存在数据相关性的程序指令示意图;
图2所示是本发明中多级流水线的示意图;
图3所示是本发明一种实施方式中基于多级流水线的指令处理方法的流程示意图;
图4所示是本发明一种实施方式中将两个汇编程序优化为目标汇编程序的示意图;
图5所示是本发明一种实施方式对汇编程序1和汇编程序2进行合并后的一段指令示意图;
图6是对图5中合并后的汇编程序采用DJUMP指令后的目标汇编程序示意图;
图7所示是本发明一种实施方式中的浮点型数字信号处理器的架构示意图。
具体实施方式
为了对本发明的技术方案进行更详细的说明,以促进对本发明的进一步理解,下面结合附图描述本发明的具体实施方式。但应当理解,所有示意性实施例及其说明用于解释本发明,并不构成对本发明的唯一限定。
本发明中,“第一”、“第二”、“第三”、“第四”等仅仅用于描述目的,并不能理解为指示或暗示相对重要性。
本发明中,浮点数字信号处理器可以是音频DSP,包括但不限于单精度DSP、双精度DSP、单核DSP、双核DSP等。
现有技术中,数字信号处理器内进行指令处理时通常采用流水线机制来并行执行多条指令,在流水线机制中,每条指令的执行过程都分成多级,通常每一级成为一个流水线阶段,例如,一般指令都会经过取指阶段、解码阶段、执行阶段以及回写阶段等流水线阶段,每个阶段占用固定的时间,通常是一个时钟周期,。本发明中所提及的浮点数字信号处理器,其内部的浮点执行单元支持浮点运算,采用两个时钟周期的流水线,即执行阶段占用两级流水线,而其他阶段仍旧为一级流水线,占用一个时钟周期。因此,为叙述方便,本发明中统一用执行1和执行2代表执行阶段的两级流水线。如图2所示,本发明中的多级流水线至少包括取指阶段、解码阶段、执行阶段(执行1和执行2)以及回写阶段。
可以理解,多级流水线的阶段划分并不表示多级流水线只能包含这几个阶段,本发明的对多级流水线的阶段划分和归类命名只是示例性的,在实际应用中,对应到各个不同的应用场景中,每个阶段可以包含多个操作或是细分阶段,也可以再调整或细化,多级流水线的阶段划分也会有所变化。例如,取指阶段可以包括预取指操作和取指操作,因此也可以根据需要再细分为预取指阶段和取指阶段。又例如,执行阶段可以包括对数据存储器的访问以及对指令的具体执行,因此也可以根据需要再划分为访存阶段和执行阶段。
首先请参考图3,其中示出了本发明的一种实施方式的基于多级流水线的指令处理方法的流程示意图。该方法应用于前述的浮点型数字信号处理器,包括:
在取指阶段,执行步骤:
S100,从指令存储器中读取目标汇编程序的指令;其中,所述目标汇编程序由至少两个汇编程序编译而成,所述目标汇编程序中,任一汇编程序中存在数据相关性的两条指令间插入有另一汇编程序的指令;
在解码阶段,执行步骤:
S200,对读取的指令进行译码处理得到译码后的指令;
在执行阶段以及回写阶段,执行如下步骤:
S300,判断译码后的所述指令是否为跳转指令,若不是,则执行步骤S400,若是,则执行步骤S500;
S400,执行所述译码后的指令得到执行结果后进行回写操作,完成所述译码后的指令的处理;
S500,确定所述跳转指令指向的下一待处理指令,进入步骤S600;
S600,依次执行所述跳转指令和所述待处理指令间的所有指令,其中,对于与所述跳转指令属于同一汇编程序的指令,跳过所述回写阶段,不进行回写操作,其他指令则将执行结果进行回写操作。
具体而言,处理器开始处理指令后,首先由取指单元依次从指令存储器中读取指令,每读取完一条指令后,便进入解码阶段,将读取到的指令送到解码单元,由解码单元对指令进行译码处理。
通常,用以实现不同功能的每个汇编程序都以指令形式存储在指令存储器中。在本实施例中,指令存储器中的目标汇编程序是经过优化后的复合程序,由至少两个汇编程序合并优化后编译而成,目标汇编程序的指令由至少两个汇编程序的所有指令的集合而成,合并的基本原则为:保证一个汇编程序中存在数据相关性的两条指令间,必然插入有另一汇编程序的一条指令。当目标汇编程序由两个汇编程序编译而成时,则第一汇编程序中存在数据相关性的两条指令间插入有第二汇编程序的一条指令,第二汇编程序中存在数据相关性的两条指令间也必然插入有第一汇编程序的一条指令。
可以理解,指令插入的方式可以是只在一个汇编程序中存在数据相关性的两条指令间插入另一个汇编程序的指令,也可以是在一个汇编程序中每两条指令间就插入另一个汇编程序的指令,或者是能够保证上述合并基本原则的其他方式,本发明对插入方式不做限制。
如图4所示为将两个汇编程序优化为目标汇编程序的示意图。假设处理器需要有用以实现功能1的汇编程序1和用以实现功能2的汇编程序2,目标汇编程序由汇编程序1和汇编程序2合并优化而成,将汇编程序2的指令插入到汇编程序1的指令中,则合并优化目标汇编程序中,汇编程序1中存在数据相关性的两条指令间,必然插入有汇编程序2的一条指令,而对于汇编程序2而言,由于其指令都插入在汇编程序1的指令中,因此,汇编程序2中存在数据相关性的前后两条指令,也必然插入有汇编程序1的指令。如图3a和3b所示,汇编程序1中IA1指令和IA2指令间存在数据相关性,IA2指令和IA3指令存在数据相关性,如果不进行任何优化按图2所示多级流水线进行处理,则存在数据相关性的前后两条指令的处理是连续的,前一条指令在当前时钟周期开始处理,则下一个时钟周期就开始处理后一条指令。以IA2指令与IA1指令为例,在执行阶段IA2指令需要从R0寄存器读取源操作数时,此时,IA1指令执行阶段还没结束,R0寄存器中的数据还没更新。汇编程序2中的三个指令中,前后指令也都具有数据相关性,存在同样的问题。通过本实施例的优化方式对汇编程序1和汇编程序2进行合并优化后的目标汇编程序如图3c所示,IA1指令和IA2指令间插入了IB1指令,IA2指令和IA3指令插入了IB2指令,这样,存在数据相关性的前后两条指令,后一条指令会比前一条指令晚两个时钟周期处理。仍旧以IA2指令与IA1指令为例,IA2指令会在比IA1指令开始处理后的两个时钟周期才开始处理,到执行1阶段开始时,IA1指令的执行1和执行2阶段都已结束,此时,IA2从R0寄存器中读取的源数据是正确的。
不同的指令,在执行阶段通常会进行不同的操作。处理器处理的指令类型多种多样,例如包括运算指令如加法运算指令、减法运算指令等、存储器访问指令如数据读取指令、输入写入指令等、跳转指令等。对于目标汇编程序中的不是跳转指令的非跳转指令,可以正常执行后进入回写阶段,进行回写操作。对于跳转指令,现有跳转方式是从该跳转指令直接跳转到跳转指令指向的下一指令/指令地址,对于下一指令和跳转指令间其他指令,则直接忽略不执行。在同一个汇编程序中,上述跳转是正常的,而对于目标汇编程序中的跳转指令,由于在一个程序中插入了另一个程序的指令,如果依旧这样进行跳转,则可能出现将另一个程序需要执行的指令也一同忽略。如图5所示是对汇编程序1和汇编程序2进行合并后的一段指令示意图,如图所示,假设JUMP Label是汇编程序1的跳转指令JUMP,如果按现有跳转指令进行处理,则JUMP Label后将直接跳转到Label处,中间的IA1-IA3指令,IB1-IB3都不会被执行,而对于汇编程序1和汇编程序2而言,实际的执行应该是,跳过IA1-IA3指令,但执行IB1-IB3。
为了避免优化后的目标汇编程序在执行过程中出现上述问题,本发明中对于跳转指令进行了特殊的伪跳转处理,为了描述方便,我们将本发明中采用了伪跳转处理的跳转指令称为伪跳转指令DJUMP,本发明采用伪跳转指令DJUMP替代现有的跳转指令JUMP,处理器在执行伪跳转指令DJUMP时,对于DJUMP指令和DJUMP指令指向的下一待处理指令之间的所有指令,在执行阶段仍旧会进行依次正常执行,但是,对于和DJUMP指令属于同一汇编程序的所有指令,都直接跳过回写阶段,不进行回写,对于和DJUMP指令不属于同一汇编程序的其他指令,则正常进入回写结果,对执行结果进行回写操作。如图6所示为对图5采用DJUMP指令后的目标汇编程序示意图,如图6所示,处理器在处理到DJUMP指令时,并不立刻跳转到DJUMP所指向的Label处,而是继续依序执行中间的IA1-IA3指令和IB1-IB3指令,其中,IA1-IA3指令和DJUMP Label都是汇编程序1的指令,因此,IA1-IA3指令都不会进入回写阶段进行回写操作,而IB1-IB3指令则在执行后继续回写操作,这样,IA1-IA3指令的执行结果没有进行回写,对外相当于并未实际执行,而汇编程序2的指令都正常执行。
本发明中,可以在目标汇编程序的每条指令中都加入一个标识符,用以标识每条指令属于哪个功能的汇编程序,这样,在执行伪DJUMP指令时可以准确判断哪些指令与DJUMP指令属于同一个汇编程序。
本发明中,对多个汇编程序的指令进行了合并处理,这样,在指令处理时可以同时处理两个汇编程序的指令,在任一汇编程序中存在数据相关性的两条指令间必定插入有另一汇编程序的指令,从根本上解决了数据相关性的问题,无需在浪费一个时钟周期进行等待,让硬件单位处于空闲状态。这样,既解决了浮点运算时数据相关性的问题,又避免了硬件资源的浪费和空置,同时,多个功能的汇编程序同时执行,指令执行效率得到有效提升。
同时,为了保证同时处理两个汇编程序的指令不会出错,本发明对跳转指令进行了特殊的伪跳转处理:依次执行跳转指令以及其指向的下一待处理指令间的所有指令,对于与跳转指令属于同一汇编程序的指令,跳过所述回写阶段,不进行回写操作,其他指令则将执行结果进行回写操作,写回数据存储器中。
本发明的方案,一方面通过同时执行两个程序的指令,解决了程序指令处理时存在的数据相关性问题,提高了指令的执行效率,另一方面通过对跳转指令的伪跳转处理,可以保证多个程序的指令同时执行时不出错,,这样在确保指令执行效率的同时,也确保了指令执行的灵活性和准确性,使得汇编程序指令的执行可控制。
在本发明中,至少两个汇编程序的数量为两个或两个以上。每个汇编程序之间相互独立,经合并编译后,可同时并行执行两段汇编程序。例如,汇编程序1和汇编程序2同时执行,汇编程序1的指令还未执行完,而汇编程序2的指令已经指令完,此时,可以接着执行汇编程序3的指令,也就是汇编程序1的指令先后和汇编程序2和3同时执行。
本发明的实施例中,处理指令时,需要为每个指令分配目的寄存器,在步骤S100之前,所述方法还包括:
S010,将所述寄存器组分为第一寄存器组和第二寄存器组,第一寄存器组分配给所述第一汇编程序作为指令的目的寄存器,第二寄存器组分配给所述第二汇编程序作为指令的目的寄存器。
浮点数字信号处理器中的寄存器组中,寄存器的数量有限,由于同一时间同时执行的有两段汇编程序,因此,可以将寄存器组的寄存器分为两组寄存器,再分别分配给两段汇编程序使用。例如,浮点数字信号处理器中的寄存器组包括R0~R31共32个寄存器,则可以将R0~R15作为第一寄存器组分配给第一汇编程序,将R16~R31作为第二寄存器组分配给第二汇编程序。
在一优选实施例中,如果目标汇编程序中合并的汇编程序数量不止两个时,S010还包括:
所述目标汇编程序中任一汇编程序的指令完毕后,该执行完毕的汇编程序对应的目的寄存器被释放并分配给下一汇编程序作为指令的目的寄存器。
例如,第一汇编程序和第二汇编程序同时执行,第一汇编程序的指令还未执行完,而第二汇编程序的指令已经指令完,开始执行第三汇编程序的指令,则可以将第二汇编程序的寄存器R16~R31释放,并分配给第三汇编程序作为目的寄存器。
在本发明中,目标汇编程序由编译器编译得到后写入所述指令存储器中。
在一优选实施例中,至少两个汇编程序包括第一汇编程序和第二汇编程序,所述编译过程包括:
获取所述第一汇编程序的指令和所述第二汇编程序的指令;
在所述第一汇编程序的执行顺序相邻的每两个指令之间,插入所述第二汇编程序的指令以得到所述目标汇编程序。
编译器在合并编译两段汇编程序时,可以在第一汇编程序的每两个指令间都直接插入第二汇编程序的指令,这样,可以不必判断前后指令间数据相关性,而是直接插入,并且,可以同时保证两个汇编程序的每两个指令间都插入有另一个汇编程序的指令,合并优化和编译过程可以快速完成,并且,由于插入的并不是空指令而是第二汇编程序原本就需要执行的指令,因此,执行时,指令执行效率依旧可以得到保证。
在一优选实施例中,至少两个汇编程序包括第一汇编程序和第二汇编程序,所述编译过程包括:
获取所述第一汇编程序的指令和所述第二汇编程序剩余的指令;
对所述第一汇编程序中执行顺序相邻的每两个指令的数据相关性进行判断,若前一指令与后一指令间存在数据相关性,则在前一指令和后一指令插入所述第二汇编程序的指令,否则继续编译所述第一汇编程序的下一个指令。
在合并两段汇编程序时,也可以只在第一汇编程序中存在数据性关系的两个指令间插入第二汇编程序的指令,而对于第二汇编程序而言,由于其每一条指令都被插入到第一汇编程序中,也同时保证了第二汇编程序的执行顺序相邻的每两个指令间必然存在有第一汇编程序的指令,这样的编译方式,虽然合并优化和编译过程中需要对其中一个编程序前后指令间数据相关性进行判断,但是,在处理器对不同段的汇编程序进行处理时,可以保证单一段汇编程序可以在解决数据相关性问题的前提下,最快被执行完毕,可以在解决数据相关性问题的前提下,尽量保证单一功能的完成速度。
在一优选实施例中,如果目标汇编程序中合并的汇编程序数量不止两个时,例如,还包括第三汇编程序,则编译过程还包括:
当所述第一汇编程序的所有指令已经编译完而所述第二汇编程序的指令还未编译完时,获取第三汇编程序的指令和所述第二汇编程序剩余的指令;
在所述第三汇编程序中执行顺序相邻的每两个指令之间,插入所述第二汇编程序的指令以得到所述目标汇编程序。
由于是两个汇编程序同时优化编译,因此,任一汇编程序的指令都可能先编译完成,此时,可以继续编译新的汇编程序。在本优选实施例中,如果指令用来插入的第二汇编程序的指令还未编译完,而第一汇编程序的指令已经都编译结束,则可以开始继续编译第三汇编程序,编译方式与第一汇编程序相同,不必判断指令间的数据相关性,直接在第三汇编程序中执行顺序相邻的每两个指令之间插入第二汇编程序的指令,插入方式与插入到第一汇编程序中时相同。
在一优选实施例中,如果目标汇编程序中合并的汇编程序数量不止两个时,例如,还包括第三汇编程序,则编译过程还包括:
当所述第一汇编程序的所有指令已经编译完而所述第二汇编程序的指令还未编译完时,获取第三汇编程序的指令和所述第二汇编程序剩余的指令;
对所述第三汇编程序的执行顺序相邻的两个指令的数据相关性进行判断,若前一指令与后一指令间存在数据相关性,则在前一指令和后一指令插入所述第二汇编程序的指令,否则继续编译所述第三汇编程序的下一个指令。
本实施例中,插编译方式与编译第一汇编程序相同,只在第三汇编程序中存在数据性关系的两个指令间插入第二汇编程序的指令,以在解决数据相关性问题的前提下,尽量保证单一功能的完成速度。
在一优选实施例中,如果目标汇编程序中合并的汇编程序数量不止两个时,例如,还包括第四汇编程序,则编译过程还包括:
当所述第一汇编程序的所有指令还未编译完而所述第二汇编程序的指已经编译完时,获取所述第一汇编程序剩余的指令和所述第四汇编程序的指令;
在所述第一汇编程序剩余的指令中,当需要插入指令时,将插入指令改为所述第四汇编程序的指令。
由于是两个汇编程序同时优化编译,因此,任一汇编程序的指令都可能先编译完成,此时,可以继续编译新的汇编程序。在本优选实施例中,如果是指令用来插入的第二汇编程序的指令优先编译完,则可以开始继续编译第四指令,当需要在第一汇编程序剩余的指令中继续插入指令时,插入第四汇编程序的指令。
在一优选实施例中,S600包括:
S601,对所述跳转指令和所述待处理指令间的所有指令,依次进入执行阶段开始执行;
S602,对于每一个指令,在进行回写操作前,判断当前指令的目的寄存器是否为分配给所述跳转指令所属的汇编程序的寄存器组中的任一个,若是,执行步骤S603,若否,执行步骤S604;
S603,忽略当前指令的回写操作,结束对当前指令的处理;
S604,进行回写操作,将当前指令的执行结果写回数据存储器
对DJUMP指令和待处理指令间的其他指令,在执行时可以通过为其分配的寄存器来判断其归属哪个汇编程序,此时,可以在进行回写操作前,判断当前指令加载到流水线中的目的寄存器是不是分配给DJUMP指令所属的汇编程序的寄存器组中的任一个,如果是,则不进行回写操作。仍以图6为例,DJUMP指令是第一汇编程序的指令,分配给第一汇编程序的寄存器组为R0~R15,在执行IA1-IA3指令后,其目的寄存器R0、R4、R6是第一汇编程序的寄存器组R0~R15中的,因此这三个指令不进行回写操作,实际相当于未执行。IB1-IB3指令后,其目的寄存器R16、R17、R18不是第一汇编程序的寄存器组R0~R15中的,因此这三个指令会按正常流水线处理,进行回写操作。
可以理解,在其他实施例中,也可以通过每个指令的标识直接判断指令是不是与DJUMP指令属于同一汇编程序,从而决定是否进行回写操作。
请参考图7,所示是本发明的一种优选实施方式的浮点型数字信号处理器的架构示意图,如图所示,浮点型数字信号处理器700包括DSP内核、指令存储器、和数据存储器,其中,DSP内核包括取指单元、解码单元、浮点执行单元以及回写单元,至少所述取指单元、所述解码单元、所述浮点执行单元以及所述回写单元形成多级流水线,分别在取指阶段、解码阶段、执行阶段以及回写阶段完成对应阶段的指令操作,数据存储器用于存储指令处理前后的数据。寄存器组中的寄存器可以分配给各个汇编程序作为目的寄存器,图7中所示数量仅为示意性,实际寄存器的数量也可以是其他,例如,8个,32个等,本发明对此不做限定。
以上实施例中,DSP内核通过如前所述的指令处理方式处理指令存储器中的指令,具体过程请参考本发明前文中的描述。
本发明还提供了一种浮点型数字信号处理器。在本实施例中,该浮点型数字信号处理器为多核处理器,包括多个DSP内核、指令存储器和数据存储器,每个DSP内核包括取指单元、解码单元、浮点执行单元以及回写单元,至少所述取指单元、所述解码单元、所述浮点执行单元以及所述回写单元形成多级流水线,分别在取指阶段、解码阶段、执行阶段以及回写阶段完成对应阶段的指令操作,数据存储器用于存储指令处理前后的数据。寄存器组中的寄存器可以分配给各个汇编程序作为目的寄存器,图7中所示数量仅为示意性,实际寄存器的数量也可以是其他,例如,8个,32个等,本发明对此不做限定。
可以理解,数据存储器以及指令存储器的数量可以是各有一个,供多个DSP内核共用,也可以是由多个,每个DSP内核对应有一个。
以上实施例中,每个DSP内核通过如前所述的指令处理方式处理指令存储器中的指令,具体过程请参考本发明前文中的描述。
本发明还提供一种音频处理设备,用于处理音频数据,所述音频设备包括如第三实施例或第四实施例中所述的浮点型数字信号处理器。
本领域的技术人员能够理解的是,在不冲突的前提下,上述各优选方案可以自由地组合、叠加。
应当理解,上述的实施方式仅是示例性的,而非限制性的,在不偏离本发明的基本原理的情况下,本领域的技术人员可以针对上述细节做出的各种明显的或等同的修改或替换,都将包含于本发明的权利要求范围内。
Claims (11)
1.一种基于多级流水线的指令处理方法,应用于浮点型数字信号处理器,所述浮点型数字信号处理器采用多级流水线方式进行指令处理,所述多级流水线至少包括取指阶段、解码阶段、执行阶段和回写阶段,所述执行阶段占用两级流水线,其特征在于,所述方法包括以下步骤:
S100,从指令存储器中读取目标汇编程序的指令;其中,所述目标汇编程序由至少两个汇编程序编译而成,所述目标汇编程序中,任一汇编程序中存在数据相关性的两条指令间插入有另一汇编程序的指令;
S200,对读取的指令进行译码处理得到译码后的指令;
S300,判断译码后的指令是否为跳转指令,若不是,则执行步骤S400,若是,则执行步骤S500;
S400,执行所述译码后的指令得到执行结果后进行回写操作,完成所述译码后的指令的处理;
S500,确定所述跳转指令指向的下一待处理指令,进入步骤S600;
S600,依次执行所述跳转指令和所述待处理指令间的所有指令,其中,对于与所述跳转指令属于同一汇编程序的指令,跳过所述回写阶段,不进行回写操作,其他指令则将执行结果进行回写操作。
2.根据权利要求1所述的指令处理方法,其特征在于,至少两个汇编程序包括第一汇编程序和第二汇编程序,所述浮点型数字信号处理器包括寄存器组,所述步骤S100之前,所述方法还包括:
S010,将所述寄存器组分为第一寄存器组和第二寄存器组,第一寄存器组分配给所述第一汇编程序作为指令的目的寄存器,第二寄存器组分配给所述第二汇编程序作为指令的目的寄存器。
3.根据权利要求1所述的指令处理方法,其特征在于,至少两个汇编程序包括第一汇编程序和第二汇编程序,所述目标汇编程序由编译器编译得到后写入所述指令存储器中,所述编译过程包括:
获取所述第一汇编程序的指令和所述第二汇编程序的指令;
在所述第一汇编程序的执行顺序相邻的每两个指令之间,插入所述第二汇编程序的指令以得到所述目标汇编程序。
4.根据权利要求1所述的指令处理方法,其特征在于,至少两个汇编程序包括第一汇编程序和第二汇编程序,所述目标汇编程序由编译器编译得到后写入所述指令存储器中,所述编译过程包括:
获取所述第一汇编程序的指令和所述第二汇编程序剩余的指令;
对所述第一汇编程序中执行顺序相邻的每两个指令的数据相关性进行判断,若所述相邻的两个指令间存在数据相关性,则在所述相邻的两个指令之间插入所述第二汇编程序的指令,否则继续编译所述第一汇编程序的下一个指令。
5.根据权利要求3所述的指令处理方法,其特征在于,至少两个汇编程序还包括第三汇编程序,所述编译过程还包括:
当所述第一汇编程序的所有指令已经编译完而所述第二汇编程序的指令还未编译完时,获取第三汇编程序的指令和所述第二汇编程序剩余的指令;
在所述第三汇编程序中执行顺序相邻的每两个指令之间,插入所述第二汇编程序的指令以得到所述目标汇编程序。
6.根据权利要求4所述的指令处理方法,其特征在于,至少两个汇编程序还包括第三汇编程序,所述编译过程还包括:
当所述第一汇编程序的所有指令已经编译完而所述第二汇编程序的指令还未编译完时,获取第三汇编程序的指令和所述第二汇编程序的指令;
对所述第三汇编程序的执行顺序相邻的两个指令的数据相关性进行判断,若所述相邻的两个指令间存在数据相关性,则在所述相邻的两个指令插入所述第二汇编程序的指令,否则继续编译所述第三汇编程序的下一个指令。
7.根据权利要求3或4所述的指令处理方法,其特征在于,至少两个汇编程序还包括第四汇编程序,所述编译过程还包括:
当所述第一汇编程序的所有指令还未编译完而所述第二汇编程序的指已经编译完时,获取所述第一汇编程序剩余的指令和所述第四汇编程序的指令;
在所述第一汇编程序剩余的指令中,当需要插入指令时,将插入指令改为所述第四汇编程序的指令。
8.根据权利要求2所述的指令处理方法,其特征在于,当所述至少两个汇编程序的数量大于2时,所述步骤S010还包括:
所述目标汇编程序中任一汇编程序的指令完毕后,该执行完毕的汇编程序对应的目的寄存器被释放并分配给下一汇编程序作为指令的目的寄存器。
9.根据权利要求2-8任一项所述的指令处理方法,其特征在于,所述步骤S600包括步骤:
S601,对所述跳转指令和所述待处理指令间的所有指令,依次进入执行阶段开始执行;
S602,对于每一个指令,在进行回写操作前,判断当前指令的目的寄存器是否为分配给所述跳转指令所属的汇编程序的寄存器组中的任一个,若是,执行步骤S603,若否,执行步骤S604;
S603,忽略当前指令的回写操作,结束对当前指令的处理;
S604,进行回写操作,将当前指令的执行结果写回数据存储器。
10.一种浮点型数字信号处理器,所述浮点型数字信号处理器包括一个或多个DSP内核、指令存储器和数据存储器,其中,每个所述DSP内核包括取指单元、解码单元、浮点执行单元以及回写单元,其特征在于:至少所述取指单元、所述解码单元、所述浮点执行单元以及所述回写单元形成多级流水线,所述DSP内核执行如权利要求1-9所述的指令处理方法以处理所述指令存储器中的指令。
11.一种音频处理设备,用于处理音频数据,其特征在于,所述音频设备包括如权利要求10所述的浮点型数字信号处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110339839.8A CN113220347B (zh) | 2021-03-30 | 2021-03-30 | 基于多级流水线的指令处理方法、浮点型dsp以及音频设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110339839.8A CN113220347B (zh) | 2021-03-30 | 2021-03-30 | 基于多级流水线的指令处理方法、浮点型dsp以及音频设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113220347A true CN113220347A (zh) | 2021-08-06 |
CN113220347B CN113220347B (zh) | 2024-03-22 |
Family
ID=77084458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110339839.8A Active CN113220347B (zh) | 2021-03-30 | 2021-03-30 | 基于多级流水线的指令处理方法、浮点型dsp以及音频设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113220347B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113946540A (zh) * | 2021-10-09 | 2022-01-18 | 深圳市创成微电子有限公司 | 一种dsp处理器及其判断跳转指令的处理方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822561A (en) * | 1995-03-03 | 1998-10-13 | Matsushita Electric Industrial Co., Ltd. | Pipeline data processing apparatus and method for executing a plurality of data processes having a data-dependent relationship |
CN1222985A (zh) * | 1996-05-03 | 1999-07-14 | 艾利森电话股份有限公司 | 在多级流水线结构中处理条件跳转的方法 |
CN102033737A (zh) * | 2010-06-13 | 2011-04-27 | 苏州和迈微电子技术有限公司 | 面向嵌入式系统的多级流水数字信号处理器体系结构 |
CN107229446A (zh) * | 2017-04-26 | 2017-10-03 | 深圳市创成微电子有限公司 | 一种音频数据处理器 |
CN108287730A (zh) * | 2018-03-14 | 2018-07-17 | 武汉市聚芯微电子有限责任公司 | 一种处理器流水线结构 |
-
2021
- 2021-03-30 CN CN202110339839.8A patent/CN113220347B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822561A (en) * | 1995-03-03 | 1998-10-13 | Matsushita Electric Industrial Co., Ltd. | Pipeline data processing apparatus and method for executing a plurality of data processes having a data-dependent relationship |
CN1222985A (zh) * | 1996-05-03 | 1999-07-14 | 艾利森电话股份有限公司 | 在多级流水线结构中处理条件跳转的方法 |
US6330664B1 (en) * | 1996-05-03 | 2001-12-11 | Telefonaktiebolaget Lm Ericsson (Publ) | Method relating to handling of conditional jumps in a multi-stage pipeline arrangement |
CN102033737A (zh) * | 2010-06-13 | 2011-04-27 | 苏州和迈微电子技术有限公司 | 面向嵌入式系统的多级流水数字信号处理器体系结构 |
CN107229446A (zh) * | 2017-04-26 | 2017-10-03 | 深圳市创成微电子有限公司 | 一种音频数据处理器 |
CN108287730A (zh) * | 2018-03-14 | 2018-07-17 | 武汉市聚芯微电子有限责任公司 | 一种处理器流水线结构 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113946540A (zh) * | 2021-10-09 | 2022-01-18 | 深圳市创成微电子有限公司 | 一种dsp处理器及其判断跳转指令的处理方法 |
CN113946540B (zh) * | 2021-10-09 | 2024-03-22 | 深圳市创成微电子有限公司 | 一种dsp处理器及其判断跳转指令的处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113220347B (zh) | 2024-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7343482B2 (en) | Program subgraph identification | |
KR102413832B1 (ko) | 벡터 곱셈 덧셈 명령 | |
JP5889986B2 (ja) | 実行された命令の結果を選択的にコミットするためのシステムおよび方法 | |
US7318143B2 (en) | Reuseable configuration data | |
US9639371B2 (en) | Solution to divergent branches in a SIMD core using hardware pointers | |
US7350055B2 (en) | Tightly coupled accelerator | |
JP3851707B2 (ja) | スーパースカラープロセッサの中央処理ユニット | |
US7200738B2 (en) | Reducing data hazards in pipelined processors to provide high processor utilization | |
US9830164B2 (en) | Hardware and software solutions to divergent branches in a parallel pipeline | |
US20040006683A1 (en) | Register renaming for dynamic multi-threading | |
KR101183270B1 (ko) | 오퍼랜드 의존성으로 인한 기능 정지를 감소시키는 방법 및데이터 프로세서 | |
JPH1165844A (ja) | パイプラインバイパス機能を有するデータ処理装置 | |
JP5326314B2 (ja) | プロセサおよび情報処理装置 | |
KR100986375B1 (ko) | 피연산자의 빠른 조건부 선택 | |
CN113220347B (zh) | 基于多级流水线的指令处理方法、浮点型dsp以及音频设备 | |
JP2001092657A (ja) | 中央演算装置、コンパイル方法、及びコンパイルプログラムを記録した記録媒体 | |
US20030120900A1 (en) | Apparatus and method for a software pipeline loop procedure in a digital signal processor | |
US20030154469A1 (en) | Apparatus and method for improved execution of a software pipeline loop procedure in a digital signal processor | |
US7600102B2 (en) | Condition bits for controlling branch processing | |
JPH11242599A (ja) | コンピュータプログラム製品 | |
CN111857830A (zh) | 一种提前转发指令数据的通路设计方法、系统及存储介质 | |
CN116737241B (zh) | 一种指令融合方法、处理器核、处理器和计算机系统 | |
JP3915019B2 (ja) | Vliwプロセッサ、プログラム生成装置、および記録媒体 | |
WO2022067510A1 (zh) | 一种处理器、处理方法及相关设备 | |
Shah et al. | SPSIM: SuperScalar Processor SIMulater CS305 Project Report |
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 |