专利名称:基于掩码的数据反转桶形移位器的利记博彩app
技术领域:
本发明主要涉及到微处理器中关键运算部件一移位器的设计领域,特指一种基于掩码的数据反转桶形移位器。
背景技术:
移位器被集成在各类微处理器中,用来完成微处理器中要执行的各种移位指令和微操作。移位器被集成在处理器中的主要作用有完成地址产生以及算术逻辑运算等功能,在浮点运算、多媒体数字信号处理、加密/解密、串/并转换、随机数生成以及校验都有广泛的应用。移位运算既属于算术运算,又属于逻辑运算。任何计算机都含有移位指令。作为一种指令,它可以独立地被执行;作为一种微操作,它又可以伴随其他运算型指令之中被执行。移位指令或操作主要包括算术左移和右移、逻辑左移和右移以及循环左移和右移。
当前高性能移位器主要有桶形移位器和对数移位器。桶形移位器如图1所示,对数移位器如图2所示。这类移位器主要是基于选择开关实现的。在这两种移位器中,桶形移位器是目前各种微处理器中最常用的功能单元。
但是,当前的桶形移位器和对数移位器有以下缺点 (1).一般只适合于单一移位的功能,对于多种移位功能实现复杂; (2).为了在一个移位器中实现多种移位功能,需要通过对基于选择开关移位器作一定的修改来实现,这种实现方法代价较高,结构复杂。
发明内容
本发明要解决的问题就在于针对现有技术存在的技术问题,本发明提供一种结构简单、适用范围广、可配置性好、移位速度快、精度高的基于掩码的数据反转桶形移位器。
为解决上述技术问题,本发明提出的解决方案为一种基于掩码的数据反转桶形移位器,其特征在于它包括三条数据通道,第一条数据通道为移位通道,数据先经过一次数据次序反转模块,对其循环右移,而后通过YMASK模块对其操作方式选择,接着通过TMASK模块对其实现操作类型选择,最后再通过数据次序反转模块,第二条数据通道为生成零标识位的数据通道,数据依次通过FMASK模块、PMASK模块以及ZMASK模块后生成零标识位,第三条数据通道为溢出标识位的数据通道。
所述FMASK模块的功能为对于64×1操作,生成的64位输出fmask[63:0]由首b位‘0’和尾64-b位‘1’组成;对于32×2操作,生成的64位输出fmask[63:0]由2组首b位‘0’和尾32-b位‘1’组成;对于16×4操作,生成的64位输出fmask[63:0]由4组首b位‘0’和尾16-b位‘1’组成。
所述PMASK模块用来区分操作类型,即若是循环移位,则pmask为全1,若是算术和逻辑移位则pmask=fmask,如下式(1) pmaski=fmaski+rotate(0≤i≤63)(1)。
所述ZMASK模块用来吸收未移出的数据,屏蔽已移出的数据,zmask模块中的算法可由式(2)至式(6)给出,其中en16、en32和en64分别表示16×4、32×2和64×1模式,p为表示pmask模块的简写 (0<i≤63,且i≠16,32,48) (6)。
所述YMASK模块用来选择移位模式,即是64×1模式、32×2模式还是16×4模式,ymask模块中的算法可由下式(7)至式(10)给出,以下各式中,yrr表示循环右移后的输出,当i+32≥64时,则用对i+32以64为模取的余数代替,当i+48≥64时,则用对i+48以64为模取的余数代替 y64i=yrri (7) ymaski=y64i·en64+y32i·en32+y16i·en16 (0≤i≤63)(10)。
与现有技术相比,本发明的优点就在于 1、本发明功能强大,适用范围广,可配置性好,克服了普通桶形移位器和对数移位器只适合于单一移位功能的缺点; 2、本发明实现相对容易,与传统经过修改可支持多模式的移位器相比,本发明的移位器代价较低,结构相对简单; 3、本发明由于结构相对简单,实现较容易,可以达到很快的速度。
图1是现有技术中桶形移位器的结构示意图; 图2是现有技术中对数移位器的结构示意图; 图3是本发明的结构示意图; 图4是本发明实施例中32位ymask实现16×2模式示意图; 图5是一种8位溢出标识位的实现方法示意图。
具体实施例方式 以下将结合附图和具体实施例对本发明做进一步详细说明。
如图3、图4和图5所示,本发明的基于掩码的数据反转桶形移位器包括三条数据通道,第一条数据通道为移位通道,数据先经过一次数据次序反转模块,对其循环右移,而后通过YMASK模块对其操作方式选择,接着通过TMASK模块对其实现操作类型选择,最后再通过数据次序反转模块,第二条数据通道为生成零标识位的数据通道,数据依次通过FMASK模块、PMASK模块以及ZMASK模块后生成零标识位;第三条数据通道为溢出标识位的数据通道。本发明基于掩码的数据反转桶形移位器先对待移位的数据作循环右移,之后,再对循环右移的结果用掩码来修正。其中,主要数据通道是移位通道,具体步骤为它先经过一次数据次序反转模块,而后对其循环右移,而后用YMASK模块对其操作方式选择,即分清是64位操作还是16×4/32×2的SIMD操作,而后用TMASK模块对其实现操作类型选择,即分清是循环移位、逻辑移位还是算术移位,最后再通过数据次序反转模块。本发明基于掩码的数据反转桶形移位器先对待移位的数据作循环右移,之后,再对循环右移的结果用掩码来修正。本发明要用到2个数据次序反转模块,当为左移时,通过2次次序反转,即可得到正确的次序,当为右移时,2次次序都不变。其中,FMASK模块、ZMASK模块及PMASK模块的作用是生成以上3条数据通道要用到的中间结果。
下面分别逐一对各个模块进行详细介绍。
FMASK模块的功能是对于64×1操作,生成的64位输出fmask[63:0]由首b位‘0’和尾64-b位‘1’组成;对于32×2操作,生成的64位输出fmask[63:0]由2组首b位‘0’和尾32-b位‘1’组成;对于16×4操作,生成的64位输出fmask[63:0]由4组首b位‘0’和尾16-b位‘1’组成。表1为b=3时的各组fmask真值表 表1 b=3时的各种模式的fmask真值表 PMASK的功能为区分操作类型,即若是循环移位,则pmask为全1,若是算术和逻辑移位则pmask=fmask,如下式(1)。
pmaski=fmaski+rotate(0≤i≤63)(1) 零标识位生成需先计算zmask,生成的zmask与第一次数据反转的结果按位相与,得到的结果再或非即为零标识位(zero)。ZMASK模块的功能为吸收未移出的数据,屏蔽已移出的数据。zmask可由式(2)至式(6)给出,其中en16、en32和en64分别表示16×4、32×2和64×1模式,p为表示pmask简写,下同。
(0<i≤63,且i≠16,32,48)(6) 经过循环右移模块的结果只能完成64×1模式的左右移操作,YMASK模块的功能为选择移位模式,即是64×1模式、32×2模式还是16×4模式。ymask可由式(7)至式(10)给出,以下各式中,yrr表示循环右移后的输出。当i+32≥64时,则用对i+32以64为模取的余数代替,当i+48≥64时,则用对i+48以64为模取的余数代替。由式(7)至式(10)可以看出,先对循环右移结果用掩码fmask过滤,然后根据工作模式选择正确的结果。图4为32位ymask实现16×2模式示意图,该图中,将32位数据(input y1)整体右移6位后,a与b各自移出的结果(result 2)易位,可用ymask将该结果的数据位置修正,得到正确的结果(output y2)。
y64i=yrri(7) ymaski=y64i·en64+y32i·en32+y16i·en16(0≤i≤63)(10) 实现了移位模式后,接着便要实现移位类型。移位类型可由TMASK模块实现。对YMASK模块生成的ymask通过TMASK模块,便是tmask,tmask可由式(11)至式(15)得到。由式(11)至式(15)同样可以看出,经过移位模式实现后生成的ymask,通过pmask及操作类型的控制符号sra和sla等过滤后,就可实现移位类型的选择。
上述式(11)至式(15)中,sj=an_1[j]·sra、(0≤j≤3),an_1的取值根据移位模式的不同而不同,不同模式下an_1的取值如下表2。Tmask之后,最后再通过一次数据次序反转,即得到最终的移位结果。
表2 基于掩码的数据反转的桶形移位器结构不同模式下an_1的取值 要计算溢出标识位,对于64×1模式,可将符号位a[63]与剩下的输入相异或,得出的n-1位结果再和fmask的首n-1位相与,再将得出的结果再相或,由于只有算术左移才产生溢出标识位,故相或的结果还要与sla相与即得溢出标识位。一种8位溢出标识位计算的示意如下图5。而对于SIMD模式的移位操作,可分别对各个分数据进行计算,得到的溢出标识位再相或,最终只有一个溢出标识位。
权利要求
1.一种基于掩码的数据反转桶形移位器,其特征在于它包括三条数据通道,第一条数据通道为移位通道,数据先经过一次数据次序反转模块,对其循环右移,而后通过YMASK模块对其操作方式选择,接着通过TMASK模块对其实现操作类型选择,最后再通过数据次序反转模块,第二条数据通道为生成零标识位的数据通道,数据依次通过FMASK模块、PMASK模块以及ZMASK模块后生成零标识位,第三条数据通道为溢出标识位的数据通道。
2.根据权利要求1所述的基于掩码的数据反转桶形移位器,其特征在于所述FMASK模块的功能为对于64×1操作,生成的64位输出fmask[63:0]由首b位‘0’和尾64-b位‘1’组成;对于32×2操作,生成的64位输出fmask[63:0]由2组首b位‘0’和尾32-b位‘1’组成;对于16×4操作,生成的64位输出fmask[63:0]由4组首b位‘0’和尾16-b位‘1’组成。
3、根据权利要求1或2所述的基于掩码的数据反转桶形移位器,其特征在于所述PMASK模块用来区分操作类型,即若是循环移位,则pmask为全1,若是算术和逻辑移位则pmask=fmask,如下式(1)
pmaski=fmaski+rotate(0≤i≤63)(1)。
4.根据权利要求3所述的基于掩码的数据反转桶形移位器,其特征在于所述ZMASK模块用来吸收未移出的数据,屏蔽已移出的数据,zmask模块中的算法可由式(2)至式(6)给出,其中en16、en32和en64分别表示16×4、32×2和64×1模式,p为表示pmask模块的简写
(0<i≤63,且i≠16,32,48)(6)。
5.根据权利要求4所述的基于掩码的数据反转桶形移位器,其特征在于所述YMASK模块用来选择移位模式,即是64×1模式、32×2模式还是16×4模式,ymask模块中的算法可由下式(7)至式(10)给出,以下各式中,yrr表示循环右移后的输出,当i+32≥64时,则用对i+32以64为模取的余数代替,当i+48≥64时,则用对i+48以64为模取的余数代替
y64i=yrri(7)
ymaski=y64i·en64+y32i·en32+y16i·en16 (0≤i≤63)(10)。
全文摘要
本发明公开了一种基于掩码的数据反转桶形移位器,它包括三条数据通道,第一条数据通道为移位通道,数据先经过一次数据次序反转模块,对其循环右移,而后通过YMASK模块对其操作方式选择,接着通过TMASK模块对其实现操作类型选择,最后再通过数据次序反转模块,第二条数据通道为生成零标识位的数据通道,数据依次通过FMASK模块、PMASK模块以及ZMASK模块后生成零标识位,第三条数据通道为溢出标识位的数据通道。本发明是一种结构简单、适用范围广、可配置性好、移位速度快、精度高的基于掩码的数据反转桶形移位器。
文档编号G06F5/01GK101110015SQ20071003565
公开日2008年1月23日 申请日期2007年8月29日 优先权日2007年8月29日
发明者陈吉华, 喻仁峰, 李少青, 张民选, 赵振宇, 陈怒兴, 马剑武, 徐炜遐, 宏 吴, 岩 孙, 鹏 贺, 董兰飞, 婷 刘, 欧阳干, 何小威 申请人:中国人民解放军国防科学技术大学