CN101615113A - 一条指令完成一次蝶形运算的微处理器实现方法 - Google Patents
一条指令完成一次蝶形运算的微处理器实现方法 Download PDFInfo
- Publication number
- CN101615113A CN101615113A CN200910090205A CN200910090205A CN101615113A CN 101615113 A CN101615113 A CN 101615113A CN 200910090205 A CN200910090205 A CN 200910090205A CN 200910090205 A CN200910090205 A CN 200910090205A CN 101615113 A CN101615113 A CN 101615113A
- Authority
- CN
- China
- Prior art keywords
- instruction
- operand
- result
- register
- finishing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
本发明提出一种一条指令完成一次蝶形运算的微处理器实现方法,包括以下步骤:解码级解析指令,并生成操作码和旁路控制信号;根据指令从源寄存器中获取第一操作数和第二操作数;根据所述旁路控制信号选择进行一级操作或者两级操作,并根据生成的所述操作码进行蝶形运算。通过本发明能够实现一条指令完成一次蝶形单元运算的功能,从而能够有效地提高处理器的性能。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种一条指令完成一次蝶形运算的微处理器实现方法。
背景技术
微处理器是一个集成在一片上的半导体集成电路,包括对一系列算术逻辑操作的控制和执行。微处理器大致可以分为两类:通用微处理器和专用微处理器。通用微处理器可以使用户通过编程的方法实现广泛的功能,因此常在个人电脑(PC)上用作中央处理器(CPU)。与之对应的是,专用处理器只用于特定的环境,因为知道处理器的主要功能,设计者就可以使用需求来建立处理器结构,使得在性能上专用处理器的专用单元可以比通用处理器对应单元显著增强。
数字信号处理就是专用处理器的一个典型应用。数字信号处理包括信号获取,信号传输,信号处理,使用大量技术的一种专用微处理器即数字信号处理器(DSP)。数字信号处理需要处理大量数据,为了适应此特征,数字信号处理器优化了密集运算和存储器访问的效率。比如,在快速傅里叶变换(FFTs)和数字滤波器的实现中包括大量重复操作比如乘加和位移,数字信号处理器提供了特别的功能以适应这些重复的操作,使得在实时应用比如图像和声音处理中其性能比起通用处理器有很大的提升。
DSP在目前的电子产品中有广泛的应用,比如数字电话,视频会议设备,复杂自动化系统等。可以预见的是,DSP在将来会有更多的数字系统中能有更广泛的应用。
目前,微处理器设计者正在努力开发指令并行度以增加微处理器的性能。应用于现代处理器中的一种并行结构,具有取指指令包和多个执行指令包以及多个功能单元,参见超长指令字(VLIW)结构。
设计者也使用一些通用于微处理器的方法成功提升了DSP的性能。包括,增加时钟速度,在电路结构中消除数据处理的瓶颈,在处理器中增加更多的执行单元,增加编译器的调度能力以产生更有效的执行代码。
现有技术存在的缺点是,当前微处理器的性能还有待提升。
发明内容
本发明的目的旨在至少解决上述技术缺陷之一,特别是解决现有微处理器性能不足的问题。
为达到上述目的,本发明一方面提出一种一条指令完成一次蝶形运算的微处理器实现方法,包括以下步骤:解码级解析指令,并生成操作码和旁路控制信号;根据指令从源寄存器中获取第一操作数和第二操作数;根据所述旁路控制信号选择进行一级操作或者两级操作,并根据生成的所述操作码进行蝶形运算。
在本发明的一个实施例中,如果所述指令为BTFDTPR.2指令,则所述生成选择两级操作的旁路控制信号。
在本发明的一个实施例中,所述两级操作包括:将第一操作数和第二操作数相乘的第一执行级,且所述第一执行级将相乘的乘积结果送入第二执行级;和,将所述乘积结果相加和相减,并将相加和相减结果移位的第二执行级,且所述第二执行级将移位结果放入目标寄存器中的相应位置。
在本发明的一个实施例中,所述将第一操作数和第二操作数相乘包括:将所述第一操作数和第二操作数的高16位和低16位分别相乘,并将两个32位的乘积结果送入流水线寄存器。
在本发明的一个实施例中,所述将所述乘积结果相加和相减,并将相加和相减结果移位包括:将两个乘积结果分别相加和相减,存入临时寄存器;将相加和相减的结果带补偿右移16位,并将两个移位后的16位分别放入目标寄存器的高16位和低16位。
在本发明的一个实施例中,所述微处理器包括一个指令获取单元、指令分发单元、六个执行单元XA,XM,XD,YA,YM,YD、和三组通用寄存器堆X,Y,G。
在本发明的一个实施例中,各个执行单元与寄存器的连接是完全对称的。
在本发明的一个实施例中,所述执行单元XM包括乘法单元、多路选择器MUX、加法单元,所述乘法单元,用于根据所述操作码将第一操作数和第二操作数相乘;所述MUX,用于根据所述旁路控制信号将所述第一操作数和第二操作数,或者所述乘法单元的乘积结果提供给所述加法单元;所述加法单元,根据所述操作码或者操作码寄存器中暂存的操作码将所述乘积结果相加和相减,并将相加和相减结果移位。
在本发明的一个实施例中,所述加法单元与操作码选择器相连,所述操作码选择器根据所述旁路控制信号选择所述操作码或者操作码寄存器中暂存的操作码。
通过本发明能够实现一条指令完成一次蝶形单元运算的功能,从而能够有效地提高处理器的性能。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例的处理器结构图;
图2为本发明实施例中执行单元与寄存器的连接结构图;
图3为本发明实施例的XM单元功能框图;
图4所示,为本发明实施例的BTFDTPR.2指令执行过程;
图5为本发明实施例的处理器流水级;
图6为本发明处理器实现了一条指令完成一次蝶形单元运算的流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
如图1所示,为本发明实施例的处理器结构图。该处理器是一个超长指令字(VLIW)结构的数字信号处理器(DSP)。需要说明的是,图1只显示了处理器中与理解此发明相关的部分,其他部分已为本领域普通技术人员所公知,在此不再赘述。图1所示处理器实现当前发明的细节下面将详细进行描述。
如图1所示,处理器包含一个指令获取单元(Fetch)、指令分发单元(Dispatch)、和六个执行单元(XA,XM,XD,YA,YM,YD)以及X,Y,G三组通用寄存器堆,每个功能单元由指令控制访问X或者Y,每个执行单元同时可访问G寄存器堆。处理器系统包括处理器内核(CPU),数据RAM,数据缓存(cache),程序RAM,程序缓存(cache)以及管理RAM和缓存的MMU。对于缓存和RAM,可以编程选择其有效或者无效,其与此发明的关键无关。当此处理器执行处理操作的时候,有更多的存储器或者外设需要连接,比如,外部RAM,只读存储器(ROM),磁盘,总线,DMA控制器等。
各个执行单元与寄存器的连接是完全对称的,如图2所示,为本发明实施例中执行单元与寄存器的连接结构图。其中,各个功能单元分别有一组接口与G寄存器堆相连,同时,每个功能单元还有一组接口由多路选择器选择访问X寄存器堆或者Y寄存器堆,在每个指令周期,每个功能单元都能访问X寄存器堆和G寄存器堆,访问或者Y寄存器堆和G寄存器堆。功能单元访问X寄存器堆或者Y寄存器堆由指令中的某一位控制。
处理器的各个功能单元用来执行特定的指令,功能单元可分为两部分:解码和执行,解码在一个周期完成,执行需要花费一到多个周期不等。
以下就对各个功能单元XA、XM、XD以及XLSU的功能进行简单介绍。
其中,XA单元是处理器中完成算术逻辑运算以及移位运算的单元。XA单元中共有两级级流水线:解码、执行。解码阶段的功能是接受指令、并根据指令产生其余各部分的控制码。在解码阶段开始的时钟上升沿,指令分发单元将需要在XA单元执行的指令写入指令寄存器A_IR,然后解码逻辑根据指令寄存器(A_IR)中的内容产生各部分的控制码。执行阶段接受两个操作数,然后根据其控制代码对两个操作数进行相应的运算,并在执行阶段结束时的时钟上升沿将运算结果写入目标寄存器。
其中,XM单元是处理器中完成乘法运算的单元,可以完成32位乘法、16位乘法、8位乘法等运算,以及部分算术逻辑操作和位操作。XM单元共分为解码单元、流水线控制旁路单元,乘法运算单元、算术逻辑单元、目标寄存器写使能信号产生单元等部分。XM单元中实现乘法功能需要三级流水线:解码,乘法执行一级和乘法执行二级。其中乘法执行一级采用乘法单元实现,乘法执行二级采用加法单元来实现。XM单元中实现算术逻辑操作以及位操作需要两级流水线:解码,执行。执行不同的指令采用不同的流水线结构,流水线控制旁路单元通过解码单元产生的旁路信号(bypass)进行控制。解码阶段的功能是接受指令、并根据指令产生其余各部分的控制码。在解码阶段开始的时钟上升沿,需要在XM单元执行的指令被写入指令寄存器(M_IR),然后解码逻辑根据指令寄存器(M_IR)中的内容产生各部分的控制码。
其中,XD单元的主要功能是实现存储器的存取以及实现程序的跳转,同时它也可以完成部分算术逻辑运算。XD单元共分为解码单元、操作数选择单元、ALU执行单元和目标寄存器写使能信号产生单元等四大部分。XD单元中共有两级流水线:解码、执行。解码阶段的功能是接受指令,并根据指令产生其余各部分的控制码。在解码阶段开始的时钟上升沿,指令分发单元将需要在XD单元执行的指令写入指令寄存器(D_IR),然后解码逻辑根据指令寄存器(D_IR)中的内容产生各部分的控制码。执行阶段接受两个操作数,然后根据其控制代码对两个操作数进行相应的运算,并在执行阶段结束时的时钟上升沿将运算结果写入目标寄存器。XD单元中执行存储器操作的是XLSU单元,XLSU分4级流水线进行,E1为地址产生级,E2为地址发送级,E3为等待L1D Cache处理级,E4为获取数据和寄存器回写或存储器写入级。XLSU根据D单元E1级组合逻辑输出存储器访问使能信号和存储器访问模式信号等控制信号控制存储器访问。
由于此发明涉及乘法操作,所以在M单元中执行。
如图3所示,为本发明实施例的XM单元功能框图。M单元获取指令及指令模式后,开始解码,解码阶段的功能是接受指令,并根据指令产生其余各部分的控制码。其中,不同的指令在M单元中使用不同的流水线结构,如果指令要经过乘加两次运算,则用两级流水线完成,使旁路控制信号(bypass)无效,但若只需要进行乘法运算,则执行1级完成以后将结果写入目标寄存器,使能旁路控制信号。在本发明的实施例中,所述的BTFDTPR.2指令需要两级执行级完成。
如图4所示,为本发明实施例的BTFDTPR.2指令执行过程。解码单元将指令解码后送入后面的流水级,两个操作数选择单元(未示出)选择各自的操作数,即操作数1和操作数2。在这条指令中,将这两个源操作数分别存放于两个32位寄存器,在执行一级(此级有四个乘法器)中,分别将两个操作数的高16位和低16位分别相乘,并将乘积(两个32位)送入到流水线寄存器中;在执行二级中,将32位的乘法结果分别相加和相减,结果带补偿右移16位(其中高位添0),取两个移位后的16位分别放入目标寄存器的高16位和低16位(将加法结果放入高16位,减法结果放入低16位)。
处理器采用超长指令字(VLIW)结构,每个周期能发射一条到六条指令不等,因此每个执行包长度并不固定。在程序中,BTFDTPR.2指令要两个执行级才能完成,指令执行结果必须要在其两个执行包以后才能使用,如图5A,BTFDTPR.2指令在E2级执行完成并在其后的上升沿写入结果到目标寄存器,此时E1和DC两级的执行包已经读取操作数,DP及以后的执行包可以使用BTFDTPR.2指令的结果。
本发明处理器执行BTFDTPR.2指令,BTFDTPR.2指令将两个源操作数的高低字段分别相乘,将乘积相加和相减,补偿移位后存入目标寄存器,完成一次蝶形运算。
在当前发明的实现中,处理器的指令有16位和32位两种长度,六个功能单元,每周期最多发射六条指令。取指令和指令分发两个单元共有五级流水线,其中取值单元有程序地址产生(PCG),程序地址发送(PCS),指令有效性判断(PWT),指令获取扩展(FPR)四级流水,分发单元(DISPATCH)一级流水,分发后进入执行单元,处理器流水级如图5A。取指包包含多个指令字。执行包的指令可以被多个功能单元并行执行。在处理器中有取指包和执行包两种指令包,取指包具有固定长度,执行包包含一条或多条可以在一个处理器周期内并行执行的指令,执行包可能跨越两个取指包。分发单元以后,指令进入各个功能单元,功能单元第一级为解码级,解码源操作数地址目标操作数地址及执行级各级所需控制信号等,BTFDTPR.2指令在M单元执行。
此处理器实现了一条指令完成一次蝶形单元运算的功能。此功能包括以下几步,如图6所示:
步骤S601,取源操作数(32位),并将第一源操作数的高16位和第二源操作数的高16位相乘,将第一源操作数的低16位和第二源操作数的低16位相乘。
步骤S602,将乘法结果分别相加和相减,存入临时寄存器。
步骤S603,将加法结果带补偿右移15位后存入目标寄存器高16位,将减法结果带补偿右移15位后存入目标寄存器低16位。在本发明实施例的XM单元中,共有三个流水级,分别是解码级(DC),执行1级(EX1)和执行2级(EX2),其中,执行1级实现两个乘法操作,执行2级实现加减法和移位操作。
通过本发明能够实现一条指令完成一次蝶形单元运算的功能,从而能够有效地提高处理器的性能。两点离散傅里叶变换运算称为蝶形运算,而整个快速傅里叶变换就是由若干级迭代的蝶形运算组成,一次蝶形运算将两操作数与系数相乘的结果相加和相减。在音视频编解码码函数的离散余弦变换中,常用到四个操作数分别相乘,将结果相加相减再移位的表达式。本发明正是在VLIW架构下,通过适当的数学变形,实现单条指令完成一次上述功能的运算,从而为常用运算增加硬件支持,提高处理器面向特定应用的处理性能。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。
Claims (9)
1、一种一条指令完成一次蝶形运算的微处理器实现方法,其特征在于,包括以下步骤:
解码级解析指令,并生成操作码和旁路控制信号;
根据指令从源寄存器中获取第一操作数和第二操作数;
根据所述旁路控制信号选择进行一级操作或者两级操作,并根据生成的所述操作码进行蝶形运算。
2、如权利要求1所述的一条指令完成一次蝶形运算的微处理器实现方法,其特征在于,如果所述指令为BTFDTPR.2指令,则所述生成选择两级操作的旁路控制信号。
3、如权利要求2所述的一条指令完成一次蝶形运算的微处理器实现方法,其特征在于,所述两级操作包括:
将第一操作数和第二操作数相乘的第一执行级,且所述第一执行级将相乘的乘积结果送入第二执行级;
和,将所述乘积结果相加和相减,并将相加和相减结果移位的第二执行级,且所述第二执行级将移位结果放入目标寄存器中的相应位置。
4、如权利要求3所述的一条指令完成一次蝶形运算的微处理器实现方法,其特征在于,所述将第一操作数和第二操作数相乘包括:
将所述第一操作数和第二操作数的高16位和低16位分别相乘,并将两个32位的乘积结果送入流水线寄存器。
5、如权利要求4所述的一条指令完成一次蝶形运算的微处理器实现方法,其特征在于,所述将所述乘积结果相加和相减,并将相加和相减结果移位包括:
将两个乘积结果分别相加和相减,存入临时寄存器;
将相加和相减的结果带补偿右移16位,并将两个移位后的16位分别放入目标寄存器的高16位和低16位。
6、如权利要求1所述的一条指令完成一次蝶形运算的微处理器实现方法,其特征在于,所述微处理器包括一个指令获取单元、指令分发单元、六个执行单元XA,XM,XD,YA,YM,YD、和三组通用寄存器堆X,Y,G。
7、如权利要求6所述的一条指令完成一次蝶形运算的微处理器实现方法,其特征在于,各个执行单元与寄存器的连接是完全对称的。
8、如权利要求6所述的一条指令完成一次蝶形运算的微处理器实现方法,其特征在于,所述执行单元XM包括乘法单元、多路选择器MUX、加法单元,
所述乘法单元,用于根据所述操作码将第一操作数和第二操作数相乘;
所述MUX,用于根据所述旁路控制信号将所述第一操作数和第二操作数,或者所述乘法单元的乘积结果提供给所述加法单元;
所述加法单元,根据所述操作码或者操作码寄存器中暂存的操作码将所述乘积结果相加和相减,并将相加和相减结果移位。
9、如权利要求8所述的一条指令完成一次蝶形运算的微处理器实现方法,其特征在于,所述加法单元与操作码选择器相连,所述操作码选择器根据所述旁路控制信号选择所述操作码或者操作码寄存器中暂存的操作码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910090205A CN101615113A (zh) | 2009-07-31 | 2009-07-31 | 一条指令完成一次蝶形运算的微处理器实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910090205A CN101615113A (zh) | 2009-07-31 | 2009-07-31 | 一条指令完成一次蝶形运算的微处理器实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101615113A true CN101615113A (zh) | 2009-12-30 |
Family
ID=41494774
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910090205A Pending CN101615113A (zh) | 2009-07-31 | 2009-07-31 | 一条指令完成一次蝶形运算的微处理器实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101615113A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107179895A (zh) * | 2017-05-17 | 2017-09-19 | 北京中科睿芯科技有限公司 | 一种应用复合指令加快数据流结构中指令执行速度的方法 |
CN107943756A (zh) * | 2017-12-15 | 2018-04-20 | 北京中科寒武纪科技有限公司 | 一种计算方法及相关产品 |
CN109542514A (zh) * | 2017-10-30 | 2019-03-29 | 上海寒武纪信息科技有限公司 | 运算指令的实现方法以及相关产品 |
CN112800387A (zh) * | 2021-03-30 | 2021-05-14 | 芯翼信息科技(上海)有限公司 | 基-6蝶形运算单元、方法、电子设备及存储介质 |
US11990137B2 (en) | 2018-09-13 | 2024-05-21 | Shanghai Cambricon Information Technology Co., Ltd. | Image retouching method and terminal device |
-
2009
- 2009-07-31 CN CN200910090205A patent/CN101615113A/zh active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107179895A (zh) * | 2017-05-17 | 2017-09-19 | 北京中科睿芯科技有限公司 | 一种应用复合指令加快数据流结构中指令执行速度的方法 |
CN107179895B (zh) * | 2017-05-17 | 2020-08-28 | 北京中科睿芯科技有限公司 | 一种应用复合指令加快数据流结构中指令执行速度的方法 |
CN109542514A (zh) * | 2017-10-30 | 2019-03-29 | 上海寒武纪信息科技有限公司 | 运算指令的实现方法以及相关产品 |
CN109542514B (zh) * | 2017-10-30 | 2021-01-05 | 安徽寒武纪信息科技有限公司 | 运算指令的实现方法以及相关产品 |
US11922132B2 (en) | 2017-10-30 | 2024-03-05 | Shanghai Cambricon Information Technology Co., Ltd. | Information processing method and terminal device |
CN107943756A (zh) * | 2017-12-15 | 2018-04-20 | 北京中科寒武纪科技有限公司 | 一种计算方法及相关产品 |
US11990137B2 (en) | 2018-09-13 | 2024-05-21 | Shanghai Cambricon Information Technology Co., Ltd. | Image retouching method and terminal device |
US11996105B2 (en) | 2018-09-13 | 2024-05-28 | Shanghai Cambricon Information Technology Co., Ltd. | Information processing method and terminal device |
CN112800387A (zh) * | 2021-03-30 | 2021-05-14 | 芯翼信息科技(上海)有限公司 | 基-6蝶形运算单元、方法、电子设备及存储介质 |
CN112800387B (zh) * | 2021-03-30 | 2021-08-03 | 芯翼信息科技(上海)有限公司 | 基-6蝶形运算单元、方法、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10445451B2 (en) | Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features | |
CN108292215B (zh) | 用于加载-索引和预取-聚集操作的指令和逻辑 | |
CN108369509B (zh) | 用于基于通道的跨步分散操作的指令和逻辑 | |
EP2350813B1 (en) | Apparatus and method for performing simd multiply-accumulate operations | |
JP6456867B2 (ja) | 密結合ヘテロジニアスコンピューティングのためのハードウェアプロセッサ及び方法 | |
JP5647859B2 (ja) | 乗累算演算を実行するための装置および方法 | |
US20190004955A1 (en) | Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features | |
EP3776216A1 (en) | Apparatus, methods, and systems for integrated performance monitoring in a configurable spatial accelerator | |
WO2019194916A1 (en) | Apparatuses, methods, and systems for remote memory access in a configurable spatial accelerator | |
CN107003921B (zh) | 具有有限状态机控制的可重配置测试访问端口 | |
CN108369516B (zh) | 用于加载-索引和预取-分散操作的指令和逻辑 | |
EP3776228A1 (en) | Apparatuses, methods, and systems for unstructured data flow in a configurable spatial accelerator | |
WO2020005444A1 (en) | Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator | |
TW201802668A (zh) | 可中斷及可重啟矩陣乘法指令、處理器、方法和系統 | |
TW201729078A (zh) | 用於以通道為基礎的跨步儲存操作之指令及邏輯 | |
RU2662394C2 (ru) | Инструкция и логика для доступа к памяти в кластерной машине широкого исполнения | |
CN115686633A (zh) | 用于实现链式区块操作的系统和方法 | |
CN108319559B (zh) | 用于控制矢量内存存取的数据处理装置及方法 | |
JP2021057004A (ja) | 行列演算アクセラレータの命令のための装置、方法、及びシステム | |
TW201729077A (zh) | 用於設置多重向量元素操作之指令及邏輯 | |
TW201729076A (zh) | 用於合成與排列操作序列之指令及邏輯 | |
CN106575219A (zh) | 针对用于处理运算的向量格式的指令和逻辑技术领域 | |
CN101615113A (zh) | 一条指令完成一次蝶形运算的微处理器实现方法 | |
CN108369510A (zh) | 用于以无序加载的置换的指令和逻辑 | |
US20210200540A1 (en) | Apparatuses, methods, and systems for fused operations in a configurable spatial accelerator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20091230 |