一种支持定浮点可重构的横向求和网络结构
技术领域
本发明涉及处理器设计技术领域,尤其涉及一种支持定浮点可重构的横向求和网络结构,针对高性能领域处理器的核心运算部件,特别是指对支持不同类型、可变尺寸的多个输入操作数进行并行求和的处理方式。
背景技术
当前,随着技术的不断发展,以现代雷达信号处理、星载卫星图像处理、扩频通信、图像压缩、科学计算、高清电视等为代表的高计算密集型领域,对信号处理能力的要求越来越高。尽管当前采用多核并行架构已成为解决计算需求瓶颈的主要途径,但是在处理器中,无论多么复杂的运算最终都要交由运算单元来完成。因此,作为整个处理器最核心的部件,运算单元的计算能力仍然是衡量处理器性能的关键指标。而针对特定领域的可变尺寸、高密度的并行计算给运算单元带来的运算压力不言而喻。
一方面,在数字信号处理算法中,诸如矩阵乘法、QR分解、FIR滤波等过程中,都存在最终将向量转化为标量的过程,这个过程通过将向量中的逐个元素进行累加求和来实现。另一方面,不同的信号处理领域对运算粒度有不同的需求,比如通信处理领域,大多采用8位或16位的定点数据;在雷达信号处理领域,多采用单精度甚至双精度浮点数据。因此,为了使数字信号处理器能适应以高密集度计算为特征的不同领域的多输入操作数累加的过程,需要求和过程支持不同数据长度的定浮点运算。
以浮点多输入求和为例,传统做法采用串行和并行两种方法。串行算法是采用单个双输入浮点加法器附加寄存器以串行的顺序对多个输入数据进行累加,从而实现多输入浮点加法功能。这种串行算法尽管可以极大的减少资源的需求,但其对N输入操作数N-1级的浮点加法延时,是高性能运算部件所无法容忍的。并行算法是采用多个双输入浮点加法器通过级联的形式来实现并行运算,从而尽量减小运算时延,提高运算速度。
在算术级考虑多输入加法的算术依赖性,可以知道最终的和值产生实际仅与操作数各自的值有关,而与具体的运算顺序无关,也就是说在分级折叠的过程中,任意两个输入操作数进入一个浮点加法器,最终都不会影响和的结果。另一方面,多输入的各浮点数彼此之间亦不存在相关。根据上述分析,可以发现在并行多输入浮点加法中,存在大量的重复过程。三次折叠进行了三级移位对齐、尾数加减、规格化移位、舍入过程。而这些步骤都在算法实现的关键路径上。
因此,急需采取一种更大粒度的并行方式完成并行算法中的串行重叠部分。
发明内容
(一)要解决的技术问题
有鉴于此,本发明的主要目的在于提供一种支持定浮点可重构的横向求和网络结构,以能够支持8位、16位、32位定点数据、精简的IEEE-754标准单精度及扩展精度浮点数据,降低多输入浮点加法的关键通路延时,减少定点求和所消耗的运算资源,并进一步降低功耗。
(二)技术方案
为达到上述目的,本发明提供了一种支持定浮点可重构的横向求和网络结构,包括依次连接的浮点指数操作部分、浮点尾数操作/定点操作部分、浮点规格化操作部分,其中:
浮点指数操作部分,用于完成选择指数最大值以及求指数差,得到的指数差输出给浮点尾数操作/定点操作部分;
浮点尾数操作/定点操作部分,用于完成浮点尾数的移位对齐、数据压缩、数据求和,以及对浮点结果的补码转换,同时通过另一旁路并行完成对浮点规格化操作中需要的前导0预测判断,得到的处理结果输出给浮点规格化操作部分;
浮点规格化操作部分,用于完成浮点尾数的规格化移位和调整指数。
上述方案中,所述浮点指数操作部分在进行选择指数最大值时,采用四级并行比较器,以对数折叠的方式对16个指数进行比较,选出指数最大值Emax。
上述方案中,所述浮点指数操作部分在进行求指数差时,采用16个8位并行加法器同时进行减法,求得|Emax-En|,作为浮点尾数操作时,尾数移位对齐的移位距离。
上述方案中,所述浮点尾数操作/定点操作部分在进行浮点尾数的移位对齐时,采用16个32位并行移位器同时进行移位,每个移位器的控制信号来自|Emax-En|,同时将移出的|Emax-En|尾数部分进行规约或操作,用于在后面步骤中判断舍入;在定点通路中,数据权重相同,不需要移位,因此只需要将移位距离设置为0即可,同时在尾数对齐同步完成对于浮点数据的stick位探测。
上述方案中,所述浮点尾数操作/定点操作部分在进行数据压缩时,采用级联的4-2压缩器阵列,将同权重的16个输入浮点数据压缩为2个,或是在定点通路中,将16个32位定点数据、32个16位定点数据或64个8位定点数据压缩为2个,得到的结果作为下一步数据求和的输入。
上述方案中,所述浮点尾数操作/定点操作部分在进行数据求和时,将压缩器阵列得到的两个数据输入到快速加法器进行相加,得到最终的加法结果。
上述方案中,所述浮点尾数操作/定点操作部分在进行补码转换时,需要配置一加法器,输入按位取反,再加1即可,并进一步通过优化进位链降低补码转换的延时。
上述方案中,所述浮点尾数操作/定点操作部分在进行前导0预测时,通过对压缩器输出的两个结果进行预编码,在尾数相加的过程中,并行的完成对规格化移位距离的计算过程,具体包括:
对操作数进行预编码后产生0、1编码串,其前导1的位置与尾数计算结果前导1的位置相同;此0、1编码串经LOD电路处理得到前导1位置的二进制编码,控制尾数计算结果在规格化移位器中左移的位数;由于预编码可能会产生一位误差,移位后的结果还要经过补偿电路判断并纠正误差,经过前导0的预测判断,得到尾数规格化移位的0~4位移位距离。
上述方案中,所述浮点规格化操作部分在进行浮点尾数的规格化移位时,采用1个64位移位器对尾数结果进行规格化移位,前导0判断的结果作为移位器阵列的控制端,控制小数点左移的尾数。
上述方案中,所述浮点规格化操作部分在进行调整指数时,采用一个8位加法器,两个输入操作数分别是指数最大值Emax以及规格化移位距离,指数加法与尾数规格化移位并行完成。
(三)有益效果
从上述技术方案可以看出,本发明具有以下有益效果:
本发明提供的这种支持定浮点可重构的横向求和网络结构,能够支持8位、16位、32位定点数据、精简的IEEE-754标准单精度及扩展精度浮点数据,降低了多输入浮点加法的关键通路延时,减少了定点求和所消耗的运算资源,并进一步降低了功耗。
附图说明
图1是本发明提供的支持定浮点可重构的横向求和网络结构的示意图;
图2是本发明浮点指数操作部分中指数最大值产生逻辑的示意图;
图3是本发明浮点指数操作部分中指数求差逻辑的示意图;
图4是本发明浮点尾数操作/定点操作部分中尾数对齐及Stick探测逻辑的示意图;
图5本发明浮点尾数操作/定点操作部分中数据压缩阵列的示意图;
图6本发明浮点尾数操作/定点操作部分中2个8位4-2压缩器组成1个16位压缩器的示意图;
图7本发明浮点尾数操作/定点操作部分中支持不同粒度的可配置压缩器阵列的示意图;
图8本发明浮点规格化操作部分中浮点尾数规格化移位和调整指数的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
如图1所示,图1是本发明提供的支持定浮点可重构的横向求和网络结构的示意图,该横向求和网络结构由三大部分构成,即浮点指数操作部分、浮点尾数操作/定点操作部分、浮点规格化操作部分,且浮点指数操作部分、浮点尾数操作/定点操作部分、浮点规格化操作部分依次连接。
其中,浮点指数操作部分,用于完成选择指数最大值以及求指数差,得到的指数差输出给浮点尾数操作/定点操作部分;浮点尾数操作/定点操作部分,用于完成浮点尾数的移位对齐、数据压缩、数据求和,以及对浮点结果的补码转换,同时通过另一旁路并行完成对浮点规格化操作中需要的前导0预测判断,得到的处理结果输出给浮点规格化操作部分;浮点规格化操作部分,用于完成浮点尾数的规格化移位和调整指数。
浮点指数操作部分在进行选择指数最大值时,采用四级并行比较器,以对数折叠的方式对16个指数进行比较,选出指数最大值Emax。浮点指数操作部分在进行求指数差时,采用16个8位并行加法器同时进行减法,求得|Emax-En|,作为浮点尾数操作时,尾数移位对齐的移位距离。
浮点尾数操作/定点操作部分在进行浮点尾数的移位对齐时,采用16个32位并行移位器同时进行移位,每个移位器的控制信号来自|Emax-En|,同时将移出的|Emax-En|尾数部分进行规约或操作,用于在后面步骤中判断舍入;在定点通路中,数据权重相同,不需要移位,因此只需要将移位距离设置为0即可,同时在尾数对齐同步完成对于浮点数据的stick位探测。浮点尾数操作/定点操作部分在进行数据压缩时,采用级联的4-2压缩器阵列,将同权重的16个输入浮点数据压缩为2个,或是在定点通路中,将16个32位定点数据、32个16位定点数据或64个8位定点数据压缩为2个,得到的结果作为下一步数据求和的输入。浮点尾数操作/定点操作部分在进行数据求和时,将压缩器阵列得到的两个数据输入到快速加法器进行相加,得到最终的加法结果。浮点尾数操作/定点操作部分在进行补码转换时,需要配置一加法器,输入按位取反,再加1即可,并进一步通过优化进位链降低补码转换的延时。浮点尾数操作/定点操作部分在进行前导0预测时,通过对压缩器输出的两个结果进行预编码,在尾数相加的过程中,并行的完成对规格化移位距离的计算过程。
浮点规格化操作部分在进行浮点尾数的规格化移位时,采用1个64位移位器对尾数结果进行规格化移位,前导0判断的结果作为移位器阵列的控制端,控制小数点左移的尾数。浮点规格化操作部分在进行调整指数时,采用一个8位加法器,两个输入操作数分别是指数最大值Emax以及规格化移位距离,指数加法与尾数规格化移位并行完成。
按照上述各操作步骤,最终完成多输入加法的求和操作。在性能方面,在保证合理运算时钟周期时延的前提下,提高运算时钟频率的难点在于合理分配各级流水操作的运算量,即须尽量使各级流水操作的运算量基本相同,这就必须综合考虑各种操作的运算速度。考虑将一个计算节拍定义为一个双输入浮点加法的延迟,以16个单精度浮点数输入为例,在两个计算节拍内完成运算,其各级流水操作划分为:第一级流水完成提取指数最大值、指数减法、尾数移位对齐、数据压缩、尾数求和以及前导0预测操作;第二级流水完成补码转换、浮点规格化操作、二次舍入。
下面结合图2至图8,详细介绍本发明提供的这种支持定浮点可重构的横向求和网络结构。本发明在横向求和网络的具体实现方面,包含级联、并行、可重构设计。
指数操作部分,首先如图2所示,通过COMP和一个MUX选择出两个指数中较大值,以相同的四级共15组上述介绍的比较器,并行选择出16个指数中的最大值Emax。将Emax和16个浮点数的指数E0-E15作为并行指数求差模块的输入,每个8位的减法器并行进行求差操作,得到Di=|Emax-Ei|,具体结构见图3,每个减法器的输出Di作为尾数移位对齐部分的移位距离。
尾数操作部分中,在尾数对齐操作中,如图4所示,16浮点数的尾数M0~M15以及在指数求差逻辑中计算得到的移位距离D0~D15作为输入操作数,输入到16个并行32位移位器中进行算术右移,高位进行符号扩展。右移后的高32位M0’~M15’为对齐后的数据,而右移移出的部分通过规约或分别求得stick0~stick15。
图5为数据压缩阵列的示意图,首先根据每个浮点数的符号Si(i=0、1、……、15)对对齐后的尾数各位取反或保持不变,最低位加1或不变。进而采用级联的4-2压缩器阵列,将同权重的16个输入浮点数据压缩为2个,或是在定点通路中,将16个32位定点数据,32个16位定点数据,64个8位定点数据压缩为2个。得到的结果(Sout、Cout)作为下一步快速加法器的输入。在此步骤中,支持不同粒度的可配置级联压缩器阵列是本发明独创之一,在保证算术等价性的前提下,通过分析算法和结构,将对字节操作的5级压缩、对短字操作的4级压缩和对整字操作的3级压缩逻辑合并在一个完整的压缩器阵列中,通过控制信号选通对压缩器进行配置。
图6所示为以某级2个8位4-2压缩器组成1个16位4-2压缩器的示意图。其中当MUX选通A端输入时,表示为两个8位4-2压缩器,功能上完成同时对8个8位数据进行压缩得到4个9位输出数据。当MUX选通B端输入有效时,表示一个完整的16位4-2压缩器。由此可见,一级32位压缩器阵列可以分割成2个16位压缩器,4个8位压缩器。只需要在电路上增加若干电路选通逻辑即可。因此只需要以8位压缩器为单元的模块,将模块进行级联,即可得到完整的压缩器阵列。完整的压缩器阵列模块化示意如图7所示。
在尾数相加部分,采用可变分组的Sklansky树型加法器对Sout和Cout相加。其中加法器的设计是本发明的另一独创性工作之一。由于支持可变长度的数据运算,因此加法器的尺寸规模需要重新配置,即因为16个32位定点数加法需要加法器尺寸为36位;32个16位定点数加法需要加法器尺寸为21位;64个8位定点数加法需要的加法器尺寸为14位;同时对浮点加法采用双路径加法实现时要同时完成A+B和A+B+1的操作。因此需要特别考虑快速加法器的进位链设计,同时在满足各尺寸规模的相关权重位引出输出。
补码转换逻辑相对简单,只需要配置一加法器,输入按位取反,再加1即可。可以通过优化进位链降低补码转换的延时。
规格化部分,通过对压缩器输出的两个结果进行预编码,在尾数相加的过程中,并行的完成对规格化移位距离的计算过程,具体包括:
步骤1:对操作数进行预编码后产生0、1编码串,其前导1的位置与尾数计算结果前导1的位置相同(可能有1位误差)。
步骤2:此0、1编码串经LOD电路处理得到前导1位置的二进制编码,控制尾数计算结果在规格化移位器中左移的位数。
步骤3:由于预编码可能会产生一位误差,移位后的结果还要经过补偿电路判断并纠正误差。
经过前导0的预测判断,可以得到尾数规格化移位的0-4位移位距离Dnormal。采用1个64位移位器对尾数结果进行规格化移位,前导0判断的结果Dnormal做为移位器阵列的控制端,控制小数点左移的尾数,移位器的输出为最终的尾数mantissa。最后采用一个8位加法器,两个输入操作数分别是指数最大值Emax以及规格化移位距离Dnormal,相加得到最终的指数结果exponent。指数加法与尾数规格化移位并行完成,如图8所示。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。