主权项 |
一种基于数据粒度的混洗开关矩阵压缩方法,其特征在于步骤为:步骤1: 混洗请求在进行基于数据粒度的混洗开关矩阵压缩时,首先当前混洗请求的数据粒度设置为最小数据粒度,t=0;步骤2: 判断当前混洗请求的数据粒度是否可以加倍,如果不可以加倍,则转至步骤4;否则跳转至步骤3;步骤3: 将当前的数据粒度加倍,并基于加倍后的数据粒度对当前的混洗开关矩阵进行压缩,并跳转至步骤2或步骤4;设当前混洗请求的开关矩阵为x,当前混洗请求的开关矩阵规模为n*n,当前混洗请求的开关矩阵中的元素为xi,j,其中1≤i≤n‑1, 1≤j≤n‑1,当前混洗请求的数据粒度为g,设压缩后的开关矩阵为y;假设处理器支持的最大数据粒度为M bits、最小数据粒度为G bits,T=log2(M/G),这里的G为2的整数次幂,则压缩的方法为:设置yi,j=xi*2,j*2,其中1≤i≤n/2‑1, 1≤j≤n/2‑1,设置g=2g, x=y, n=n/2 , t=t+1;若t≤T,则转至步骤2,否则跳至步骤4;步骤4: 按照该混洗请求,使用当前粒度索引法对现有的开关矩阵进行进一步的压缩;步骤5:判断当前的混洗请求是否是程序中的最后一个混洗请求,如果不是,则处理下一个混洗请求,并转至步骤1,否则结束;所述步骤2的流程为:2.1 将标识当前混洗请求的数据是否可加倍的变量s设置为1,同时将变量i和j设置为0;2.2 判断当前的混洗开关矩阵x中的元素是否满足下面两个条件之一: ①. xi,j、xi+1,j、xi,j+1、xi+1,j+1这四个元素全部为0;②. xi,j、xi+1,j+1这两个元素为1,且xi+1,j、xi,j+1这两个元素为0, 若不满足,则设置s为0,并转至2.5;否则转至2.3;2.3 判断j是否等于当前开关矩阵的规模n减去2,如果是,则转至2.4,否则j自增2,并且转至2.2;2.4 判断i是否等于当前开关矩阵的规模n减去2,如果是,则转至2.5,否则i自增2,j等于0,并且转至2.2;2.5 若当前s=1,则当前混洗请求的数据粒度可以加倍,否则不可以加倍。 |