浮点数乘除运算步骤类似于浮点数加、减运算步骤,两者的主要区别是: 1.加、减运算需要对阶,而对乘、除运算来说,无须这一步。 2.两者对结果的后处理步骤也一样,都包括规格化、舍入和溢出判断处理。

浮点数乘除法运算总共就4步: 尾数运算、规格化、舍入、溢出判断。 1.尾数相乘,阶码相加

        尾数的乘法运算定点原码小数乘法算法。
        在运算时,需要将隐藏位1还原到尾数中,并注意乘积的小数点位置。
        因为x和y是规格化浮点数,所以其尾数的真值形式都是正负1.b...b。
        进行尾数相乘时,符号和数值部分分开运算,符号由x和y两数符号异或得到,数值部分将两个形为1.b..的定点无符号
        数进行n位数乘法运算,其结果为2n位乘积:bb.b...b,小数点应该默认在第二位和第三位之间。

        阶码执行移码相加:最终得到结果的移码表示的阶数。
        [Ex]移 + [Ey]移 + 2^(n-1) + 1(mod 2^n) == [Ex + Ey]移

        注:除法尾数相除,阶码相减
        [Ex]移 + [-[Ey]移]补 + 2^(n-1) - 1(mod 2^n) == [Ex - Ey]移

    2. 尾数规格化

        在得到的2n位乘积数值部分bb.b...b中,小数点左边一定至少有一个1,
        可能是01、10、11三种情况:若是01,则不需要规格化;若是10或11,则需要右规一次,此时,尾数右移一位,阶码加1。
        规格化后得到的尾数数值部分的形式为01.b...b小数点左边的1就是隐藏位。
        
        对于IEEE754浮点数的乘法运算不需要进行左规处理。

        除法:
            商的形式:b.b...b,小数点左边可能是0,可能是1。

        对于IEEE754浮点数的除法运算不需要进行右规处理。

    3.尾数舍入

        同加减法的舍入

    4.溢出判断

        在进行指数相加、右规和舍入时,要对指数进行溢出判断。右规和舍入时的溢出判断与
        浮点数加减运算中的溢出判断方法相同。
        
        而在进行指数相加时的溢出判断则要根据参与运算的操作数及结果的阶码的最高位的取值情况进行。
            1.[Eb]移 全1----->上溢
              [Ex]移 [Ey]移 最高位是0,但是[Eb]移最高位是1------->上溢
            2.[Eb]移 全0----->下溢
              [Ex]移 [Ey]移 最高位是1,但是[Eb]移最高位是0------->下溢
            注:相加

        除法:
            左规时的溢出判断与浮点数加减运算中的溢出判断方法相同。

            而在进行指数相加时的溢出判断则要根据参与运算的操作数及结果的阶码的最高位的取值情况进行。
            1.[Eb]移 全1----->上溢
              [Ex]移 最高位0 [Ey]移 [Eb]移最高位是1------>上溢
            2.[Eb]移 全0----->下溢
              [Ex]移 最高位1 [Ey]移 [Eb]移最高位是0------>下溢
            注:相减

/****************************************/

子字并行 “子字并行”是计算机体系结构中的一个概念,特别是在处理向量和SIMD(单指令多数据)运算时。 它指的是同时处理一个数据元素(如一个浮点数或整数)的多个部分或子字(正好针对数据分成了不同不分)。 这允许处理器以更高的吞吐量和更低的延迟来执行复杂的数学和逻辑运算。

在某些架构中,一个数据元素(例如,一个字)可以被划分为更小的单位,如半字、四分之一字或者八分之一字等,这些更小的单位称为“子字”。
子字并行是指处理器能够在同一时间对多个子字进行独立的操作,从而实现并行计算的能力。

例如,考虑一个32位的整数。在一个传统的处理器上,你可能一次只能对这个整数执行一个操作。
但是,在一个支持子字并行的处理器上,你可以将这个整数分成多个部分(如4个8位部分或2个16位部分),并同时对每个部分执行操作。

又比如,在一些DSP(数字信号处理器)和SIMD(单指令多数据流)架构中,CPU或ALU可以同时
处理一个字中的多个子字,这种技术特别适用于多媒体处理、科学计算以及其他需要大量并行计算的任
务。
通过子字并行技术,处理器能够在一个周期内完成多个运算,大大提升了处理速度和效率。

子字并行性的优势在于:
    1. 更高的吞吐量:通过同时处理多个数据元素的部分,处理器可以更有效地利用其计算资源,从而提高了整体性能。
    2. 更低的延迟:由于多个操作可以同时进行,因此单个操作的完成时间可能会减少。
    3. 更灵活的数据处理:子字并行允许处理器以更细粒度的方式处理数据,这对于某些算法和应用来说是非常有用的。

SIMD指令集,如Intel的SSE和AVX,以及ARM的NEON,都支持子字并行操作。
这些指令集允许程序员编写能够利用这种并行性的代码,从而加速各种计算密集型任务。