专利名称:基于模式偏移的混洗开关矩阵压缩方法
技术领域:
本发明主要涉及采用单指令流多数据流(Single Instruction stream Multiple Data streams, SIMD)技术的通用处理器或数字信号处理器(Digital Signal Processor, DSP)领域,特指一种应用于SIMD或DSP中的混洗开关矩阵压缩方法。
背景技术:
以子字并行和向量技术为代表的SIMD技术在解决媒体处理和无线通信等数据运 算密集型应用中具有很大的优势,因而得到了广泛的应用和发展,受到了处理器特别是DSP 的青睐。混洗单元主要负责SIMD部件各个处理单元寄存器之间数据的交互,是制约并行的 处理单元性能发挥的关键部件。混洗单元的硬件主体结构一般有以下三种方式,分别为交叉开关(Crossbar)、多 级网络和完全混洗-交换网络。这三种结构当中Crossbar的灵活性最强,多级网络次之, 完全混洗-交换网络最差;完全混洗-交换网络的硬件实现开销最小且扩展性也比较好,多 级网络次之,Crossbar最差。由于嵌入式应用需要的混洗模式的多样性,Crossbar的使用 最为广泛,本发明所论述的方法也以混洗单元的硬件结构为Crossbar为背景。在以Crossbar为主要硬件结构的混洗单元中,混洗模式是和控制控制Crossbar 中每个开关节点断开或导通的01值组成的矩阵是一一对应的。将控制Crossbar中每个开 关节点断开或导通的01值组成的矩阵称之为开关矩阵,用户在执行混洗指令时(或之前)必 须直接或间接告诉Crossbar本次混洗所需要的开关矩阵。由于开关矩阵本身的数据量比 较大,需要对其进行压缩,一方面,这种压缩是非常必要的,开关矩阵的数据量和SIMD数据 通路的宽度的平方成正比,随着SIMD数据通路的宽度的增加,开关矩阵的数据量会急剧膨 胀;另一方面,必须要考虑到解压时电路的复杂性,宜采用比较简单的压缩_解压技术,以 便在关键路径延时和压缩效率方面进行折衷。一个应用程序所需要的所有混洗模式在程序执行之前都是确定的,在程序的预处 理阶段需要对混洗请求做一些额外的工作,以便在执行某一条混洗指令时能够访问到正确 的混洗模式,一般采用混洗模式表记录应用程序所需要的混洗模式,同时对每个混洗请求 标识其混洗模式在混洗模式表的表项地址。在应用程序执行前,需要提前将混洗模式表中 的数据加载到存储器中,以便供混洗指令使用。传统的混洗单元和混洗指令中,一般采用最小数据粒度索引法来进行压缩。图1 是采用最小数据粒度索引法的开关矩阵压缩流程示意图首先对当前混洗请求的数据粒度 设置为Crossbar支持的最小数据粒度,然后按照当前粒度索引法(图4所描述的方法)对当 前请求的开关矩阵进行压缩,接着判断压缩后的混洗模式是否与混洗模式表中保存的某一 个混洗模式完全相同,如果相同则在当前的混洗指令当中增加地址信息(该地址指向混洗 模式表中与当前混洗模式相同的表项的地址);如果不同,则在混洗模式表中将当前混洗模 式添加进去,并在当前的混洗指令中增加指向当前表项的地址。循环处理,直到所有的混洗 请求都处理完毕。
以摩托罗拉公司为设计主体的AltiVec指令集为例,在AltiVec指令集中,向量的 宽度为128 bits (16个字节),且混洗的最小数据粒度为8 bits,AltiVec指令集中的混 洗指令VPERM使用了一个向量寄存器(128bit)表示混洗模式,该向量寄存器共分为16个 域(每一个8 bits),分别指示目标向量寄存器的每一个字节分别来自源向量寄存器中的哪 一个字节(即每一个域表示了开关矩阵中的一行),类似的还有飞利浦公司的EVP处理器的 SHF指令。这种最小数据粒度索引法的开关矩阵压缩方法在目前的向量处理器中使用比较 广泛,但这种方法并未考虑一个应用程序中不同混洗请求之间的模式偏移关系,对于混洗 模式存在偏移关系的混洗请求的混洗模式是分别存储的,造成了整个应用程序的混洗指令 的开关矩阵的压缩率较低。
发明内容
本发明要解决的技术问题就在于针对现有技术存在的技术问题,本发明提供一 种原理简单、操作简便、适用范围广、能够增大相同容量的混洗模式存储器中包含的有效混 洗模式的数、提高程序中混洗请求开关矩阵的压缩效率的基于模式偏移的混洗开关矩阵压 缩方法,同时其解压逻辑增加的逻辑量不大,对现有关键路径延时影响较小。为解决上述技术问题,本发明采用以下技术方案
一种基于模式偏移的混洗开关矩阵压缩方法,其特征在于步骤为 步骤1 预设SF_Table为存储混洗模式的表;对当前混洗请求的数据粒度设置为交叉 开关支持的最小数据粒度,按照当前粒度索引法进行压缩;
步骤2 判断当前混洗请求压缩后的混洗模式与混洗模式表中的某一个表项是否存在 模式偏移关系,如果是,跳转至步骤3,否则跳转至步骤4 ;
步骤3 保持混洗模式表不变,在当前混洗指令中增加对应的混洗模式地址信息和相 对偏移信息,然后处理下一个混洗请求;
步骤4:将当前混洗模式添加到混洗模式表中,在当前混洗指令中增加对应的混洗模 式地址信息和相对偏移信息,然后处理下一个混洗请求。作为本发明的进一步改进 所述步骤1的详细流程为
设最终的混洗模式为SF,则SF共有N个域,每个域的位数l+log2N,用SF_i [j]表示混 洗模式第i域的第j位,其中0彡i彡N-1,0彡j彡Iog2N,对于每个混洗请求的开关矩阵 的压缩过程如下
1.1.设置变量i=0;
1. 2.查看开关矩阵的第 i 行,若Xi,。=Xi; PH=XiI2=XiH=O,则 SF_i [lo&N]=l,并且 SF_ i [Iog2N-1:0]=0 ;否则 SF_i [Iog2N] =0,设置 j=0 并且转至步骤 1. 3 ;
1. 3.如果Xi;j=l,则设置SF_i[lo&N-l:0]=j,并转至步骤1. 5,否则转至步骤1. 4 ; 1.4. j=j+l,并转至步骤1.3;
1. 5. i=i+l,若i彡N-1,则跳至步骤1. 2,否则压缩完毕,得到的SF_0,SF_1,…,SF_N_1 即为压缩后的混洗模式。所述步骤2的详细流程为
42. 1.读取SF_Table中的第一个表项,并赋值给变量SF_temp,并且设置变量q=l ; 2. 2.将SF_temp按照l+log2N的粒度循环左移q位,并将移位后的值记为SF_temp’, 如果SF_temp,=SF,则转至步骤3 ;否则,转至2. 3 ;
2. 3 · q=q+l,如果q=N,则跳至步骤2. 4 ;否则跳至步骤2. 2 ;
2. 4.如果当前表项不是SF_Table中的最后一个表项,则读取SF_Table中的下一个表 项,记为SF_temp,设置q=l,并跳至步骤2. 2 ;否则跳至步骤4。所述步骤3中,是在混洗指令增加对应的混洗模式地址Addr和相对偏移Q,其中, Addr指向当前所读取的SF_Table中的表项,Q=q,然后处理下一个混洗请求,并转至步骤1。所述步骤4中,是将当前混洗请求的混洗模式添加到SF_Table中,并在混洗指令 增加对应的混洗模式地址Addr和相对偏移Q,其中Addr指向新增加的表项在SF_Table中 的位置,Q=0,然后处理下一个混洗请求,并转至步骤1。与现有技术相比,本发明的优点在于
1.本发明的混洗开关矩阵压缩方法,能够有效地提高混洗模式存储器的利用率,使存 储混洗模式的存储器得到充分的利用;
2.应用本发明后,同一个应用程序的需要的混洗模式的数量减少,使得加载混洗模式 的数据量变小,减少了功耗;
3.解压电路简单,对关键路径延时影响较小。应用本发明提出方法,解压电路只需在 传统方法的译码电路基础上增加小规模的移位逻辑,硬件复杂度不大。4、综上所述,本发明提出的方法能够有效地压缩开关矩阵的容量,提高混洗模式 存储器的利用率,并且对现有解压电路的影响不大,为向量处理器混洗指令和混洗单元的 接口设计提供了新的思路。
图1是采用最小数据粒度索引法的压缩流程示意图2是本发明提出的基于模式偏移的混洗开关矩阵压缩方法的流程示意图; 图3是本发明的第二步判断当前混洗请求的压缩后的混洗模式SF与SF_Table的某一 个表项是否存在模式偏移关系的算法流程示意图4是传统的最小数据粒度索引法和本发明提出的基于模式偏移的混洗开关矩阵压 缩方法中共有的子算法——当前粒度索引法的流程示意图5是存在模式偏移关系的多个混洗请求采用最小数据粒度索引法的开关矩阵压缩 过程示意图6是存在模式偏移关系的多个混洗请求采用采用本发明提出的方法的开关矩阵压 缩过程示意图。
具体实施例方式以下将结合说明书附图和具体实施例对本发明做进一步详细说明。如图2所示,为本发明基于模式偏移的混洗开关矩阵压缩方法的流程示意图。本 发明提出的方法和传统的方法最大的不同就是,将当前混洗请求的开关矩阵压缩后的混洗 模式添加到混洗模式表时,判断当前混洗模式与混洗模式表中表项是否存在模式偏移关系,而传统的方法是不做上述判断的。本发明在程序的预处理阶段,设置一个混洗模式表,对于每个混洗请求首先按照 最小数据粒度索引法进行压缩,然后将压缩后的混洗模式和混洗模式表中已有的混洗模式 进行模式偏移匹配,如果能够匹配,则不增加混洗模式表的表项,而仅仅更改当前混洗指令 的表达方式,如果不能够匹配,则在混洗模式表中增加一条新的表项并更新当前混洗指令 的表达方式。假设处理器的数据通路总宽度为W bits,最小数据粒度为G bits, Crossbar的规 模的为N*N,且每个端口的宽度为G bits (这里的W和G均为2的整数次幂,且N=W/G),则 每一个混洗请求的混洗模式在初始时为一个N*N的开关矩阵,设初始时的开关矩阵为X,且 其中每一个元素的数值为Ul ( i ( N-1, 1彡j彡N-1),设SFjable为存储混洗模式 的表。本发明具体的流程如下
步骤1 对当前混洗请求的数据粒度设置为Crossbar支持的最小数据粒度,按照当前 粒度索引法进行压缩;
步骤2 判断当前混洗请求压缩后的混洗模式与混洗模式表中的某一个表项是否存在 模式偏移关系,如果是,跳转至步骤3,否则跳转至步骤4 ;
步骤3 保持混洗模式表不变,在当前混洗指令中增加对应的混洗模式地址信息和相 对偏移信息,然后处理下一个混洗请求;
步骤4:将当前混洗模式添加到混洗模式表中,在当前混洗指令中增加对应的混洗模 式地址信息和相对偏移信息,然后处理下一个混洗请求。图3是本发明的步骤2判断当前混洗请求的压缩后的混洗模式SF与SF_Table的 某一个表项是否存在模式偏移关系的算法流程示意图
2. 1读取混洗模式表SF_Table的第一个表项,并赋值给变量SF_temp,同时将变量q设 置为1 ;
2. 2将SF_temp按照1+ Iog2N的粒度循环左移q位,并将得到数值记为SF_temp’,比 较SF和SF_temp’的数值,如果相等,则说明当前混洗请求和SF_Table中的当前表项存在 模式偏移关系,偏移量为q,跳转至图2所描述的步骤3 ;否则,跳至2. 3 ;
2. 3将q自增1,判断q是否等于N,如果不相等,则跳至2. 2 ;否则,转至2. 4 ; 2. 4判断当前表项是否是SF_Table中的最后一个表项,是则跳转转至图2所描述的步 骤4 ;否则,读取SF_Table中的下一个表项,并赋值给SF_temp,将q设置为1,跳转至2. 2.
图4是传统的最小数据粒度索引法和本发明提出的基于模式偏移的混洗开关矩阵压 缩方法中共有的子算法——当前粒度索引法的流程示意图 1. 1将变量i设置为O ;
1. 2判断当前数据粒度的开关矩阵的第i行的元素是否全部为0,如果是则将最终混 洗模式SF的第i域的最高位SF_i[log2n]赋值为1,其余位置SF_i [log2n-l 0]赋值为0, 并且跳转至1. 4,否则将SF_i [log2n]赋值为0,设置变量j为0,并且跳转至1. 3 ;
1. 3判断当前数据粒度的开关矩阵的第i行第j列的元素是否为1,若是则将SF_ i[log2n-l:0]赋值为j,并跳转至1. 4,否则将j自增1,并转至1. 3 ;
1.4将i自增1;并判断i是否小于当前数据粒度的开关矩阵的规模n,若是,则跳转至1. 2,继续压缩开关矩阵的下一行元素,否则压缩完毕,得到的SF_0,SF_1,…,SF_n-l即为 最终的混洗模式。从上面的流程可以看出,本发明提出的方法是对传统的基于最小粒度的索引方法 的改进,在本发明中需要判断当前混洗请求的混洗模式和混洗模式表中的表项是否存在模 式偏移关系,而传统的方法只用判断当前混洗请求的混洗模式和混洗模式表中的表项是否 相等。针对本发明的基于模式偏移的开关矩阵压缩方法,本发明提出了如下混洗指令 SHUF (Addr),Q, VRi, VRj.其中Addr标识对应的混洗模式在存储器中的地址(在具体实 现时,也可以不设置Addr,这时默认对应的混洗模式存在某个寄存器中,程序员需要提前将 混洗模式搬移到这个寄存器中);Q标识当前的请求混洗模式与Addr标识的(或默认的)混 洗模式之间的偏移关系,即将Addr标识的(或默认的)混洗模式左移Q位才能得到当前的混 洗模式;VRi和VRj分别标识混洗操作的源操作数所在寄存器编号和目的操作数所在的寄 存器编号。本发明提出的方法在混洗指令在执行时,只需要先将混洗模式进行规模较小移位 处理,然后再进行传统方法所需的译码处理即可驱动Crossbar对输入数据进行重排布,因 而对关键路径延时影响很小。如图5所示,为存在模式偏移关系的多个混洗请求采用最小数据粒度索引法的 开关矩阵压缩过程示意图图中Ai和Bi7)均为Sbits的数据, Crossbar网络的规模为8*8,且每个端口的宽度为8bits,假设当前混洗模式表共有两个表 项,即表项0和表项1.
M 洗 a Mf A0A1A2A3A4A5A6A7 M 洗为 A3A2A5A4AtlA1A7A6, M 洗 b Mf B0B1B2B3B4B5B6B7 M 洗为 B5B4B0B1B7B6B3B2.两者的开关矩阵按照图4所描述的方法进行压缩得到
0011_0010_0101_0100_0000_0001_0111_0110 和 0101_0100_0000_0001_0111_0110_0 011_0010
在传统的方法中由于混洗a的混洗模式和混洗模式表中的第0表项和第1表项不相 同,所以将混洗a的混洗模式加入混洗模式表中,作为表项2,并将混洗a的指令的地址信息 标记为2 (图中虚折线所示);同理,由于混洗b的混洗模式和混洗模式表中的第0表项、第 1表项、第2表项均不相同,所以将混洗b的混洗模式加入混洗模式表中,作为表项3,并将 混洗b的指令的地址信息标记为3 (图中实折线所示)。如图6所示,为存在模式偏移关系的多个混洗请求采用本发明提出的方法的开关 矩阵压缩过程示意图图中的示例和图5中的示例完全相同,不同的是,在混洗a的混洗模 式加入混洗模式表之后,处理混洗b的混洗请求时,发现其混洗模式与混洗模式表的第2表 项,存在模式偏移关系,且偏移量为2,这时就不需要将混洗b的混洗模式加入到混洗模式 表中,只需要将混洗b的混洗指令的地址信息设置为2,偏移信息设置为2即可。图中的实 折线指示混洗a的处理过程,虚折线指示混洗b的处理过程,椭圆线标识的为混洗指令的偏 移信息域。由于本发明考虑了混洗模式之间的模式偏移,本示例中节省了一个混洗模式表 项。以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例, 凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的
7普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护 范围。
权利要求
一种基于模式偏移的混洗开关矩阵压缩方法,其特征在于步骤为步骤1预设SF_Table为存储混洗模式的表;对当前混洗请求的数据粒度设置为交叉开关支持的最小数据粒度,按照当前粒度索引法进行压缩;步骤2判断当前混洗请求压缩后的混洗模式与混洗模式表中的某一个表项是否存在模式偏移关系,如果是,跳转至步骤3,否则跳转至步骤4;步骤3保持混洗模式表不变,在当前混洗指令中增加对应的混洗模式地址信息和相对偏移信息,然后处理下一个混洗请求;步骤4将当前混洗模式添加到混洗模式表中,在当前混洗指令中增加对应的混洗模式地址信息和相对偏移信息,然后处理下一个混洗请求。
2.根据权利要求1所述的基于模式偏移的混洗开关矩阵压缩方法,其特征在于所述步 骤1的详细流程为设最终的混洗模式为SF,则SF共有N个域,每个域的位数l+log2N,用SF_i [j]表示混 洗模式第i域的第j位,其中O彡i彡N-1,0彡j彡Iog2N,对于每个混洗请求的开关矩阵 的压缩过程如下1. 1设置变量i=0 ;1. 2 查看开关矩阵的第 i 行,若 Xi, O=Xi, FH=XiI2=Xw1=OJiJ SF_i[lo&N]=l,并且 SF_ i [Iog2N-1:0]=0 ;否则 SF_i [Iog2N] =0,设置 j=0 并且转至步骤 1. 3 ;1. 3如果Xi;j=l,则设置SF_i[lo&N-l:0]=j,并转至步骤1. 5,否则转至步骤1. 4 ; 1.4 j=j+l,并转至步骤1.3;1.5 i=i+l,若i彡N-1,则跳至步骤1. 2,否则压缩完毕,得到的SF_0,SF_1,…,SF_N_1 即为压缩后的混洗模式。
3.根据权利要求1所述的基于模式偏移的混洗开关矩阵压缩方法,其特征在于所述步 骤2的详细流程为2.1读取SF_Table中的第一个表项,并赋值给变量SF_temp,并且设置变量q=l ;2. 2将SF_temp按照l+log2N的粒度循环左移q位,并将移位后的值记为SF_temp’,如 果SF_temp,=SF,则转至步骤3 ;否则,转至2. 3 ;2. 3 q=q+l,如果q=N,则跳至步骤2. 4 ;否则跳至步骤2. 2 ;2. 4如果当前表项不是SF_Table中的最后一个表项,则读取SF_Table中的下一个表 项,记为SF_temp,设置q=l,并跳至步骤2. 2 ;否则跳至步骤4。
4.根据权利要求1所述的基于模式偏移的混洗开关矩阵压缩方法,其特征在于所述 步骤3中,是在混洗指令增加对应的混洗模式地址Addr和相对偏移Q,其中,Addr指向当前 所读取的SF_Table中的表项,Q=q,然后处理下一个混洗请求,并转至步骤1。
5.根据权利要求1所述的基于模式偏移的混洗开关矩阵压缩方法,其特征在于所述 步骤4中,是将当前混洗请求的混洗模式添加到SF_Table中,并在混洗指令增加对应的混 洗模式地址Addr和相对偏移Q,其中Addr指向新增加的表项在SF_Table中的位置,Q=O, 然后处理下一个混洗请求,并转至步骤1。
全文摘要
一种基于模式偏移的混洗开关矩阵压缩方法,其步骤为,步骤1预设SF_Table为存储混洗模式的表;对当前混洗请求的数据粒度设置为交叉开关支持的最小数据粒度,按照当前粒度索引法进行压缩;步骤2判断当前混洗请求压缩后的混洗模式与混洗模式表中的某一个表项是否存在模式偏移关系,如果是,跳转至步骤3,否则跳转至步骤4;步骤3保持混洗模式表不变,在当前混洗指令中增加对应的混洗模式地址信息和相对偏移信息,然后处理下一个混洗请求;步骤4将当前混洗模式添加到混洗模式表中,在当前混洗指令中增加对应的混洗模式地址信息和相对偏移信息,处理下一个混洗请求。本发明具有简单、操作简便、适用范围广、能够提高压缩效率等优点。
文档编号G06F9/315GK101986262SQ20101055928
公开日2011年3月16日 申请日期2010年11月25日 优先权日2010年11月25日
发明者万江华, 刘仲, 刘祥远, 刘胜, 刘衡竹, 张凯, 李振涛, 陈书明, 陈海燕, 陈跃跃 申请人:中国人民解放军国防科学技术大学