CN117289895A - 一种多精度复用的浮点乘加方法、图像处理方法及装置 - Google Patents

一种多精度复用的浮点乘加方法、图像处理方法及装置 Download PDF

Info

Publication number
CN117289895A
CN117289895A CN202311232968.2A CN202311232968A CN117289895A CN 117289895 A CN117289895 A CN 117289895A CN 202311232968 A CN202311232968 A CN 202311232968A CN 117289895 A CN117289895 A CN 117289895A
Authority
CN
China
Prior art keywords
precision
path
mantissa
bit
multiplexing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311232968.2A
Other languages
English (en)
Inventor
张盛
黄乐然
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen International Graduate School of Tsinghua University
Original Assignee
Shenzhen International Graduate School of Tsinghua University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen International Graduate School of Tsinghua University filed Critical Shenzhen International Graduate School of Tsinghua University
Priority to CN202311232968.2A priority Critical patent/CN117289895A/zh
Publication of CN117289895A publication Critical patent/CN117289895A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Nonlinear Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种多精度复用的浮点乘加方法、图像处理方法及装置,浮点乘加方法通过接收输入数据,对输入数据进行预处理、解码,再进行尾数乘法、对阶移位,输出第一结果;输入所述第一结果,进行有效数加法和前导0预测,输出第二结果;输入所述第二结果,串行完成规格化移位与舍入输出;采用双路径处理方法,在尾数处理中:分割高精度尾数处理路径为两条低精度尾数处理路径,复用其中的尾数乘法、加法、前导0预测、对阶与规格化移位步骤,在指数处理中:附加一条低精度的指数处理路径,能够兼容16种常用精度,节省网络内存和带宽,通过对多个模块硬件的复用,降低了面积与功耗成本,同时保证时延基本不变。

Description

一种多精度复用的浮点乘加方法、图像处理方法及装置
技术领域
本发明涉及深度学习处理器设计领域,特别是涉及一种多精度复用的浮点乘加方法、图像处理方法及装置。
背景技术
深度学习在近年来取得了巨大成功,在如数字识别、图像识别、图像分类、目标检测等广阔领域,可达到、接近、甚至优于人类水平的性能;但深度学习模型中巨大的参数量造成其实现的硬件成本很高,成为阻碍其发展的瓶颈。为此研究者通过对深度学习处理器中的算术单元进行优化,以减少硬件成本。
浮点乘加算力是衡量深度学习处理器性能的关键指标。浮点乘加融合FMA(FusedMultiply-Add)在1990年由IBM工程师Hokenek与Montoye提出并实现在RISC System/6000处理器上。其将两个基本操作(A×B+C)合并为一个,只有一个舍入误差,具有面积小、速度快、精度高的优点。FMA于2008年被纳入IEEE 754标准(一种浮点数的表示形式的统一标准),具有浮点运算功能的处理器均需遵从该标准,标志着FMA成为现代处理器的重要特征之一。但不同精度FMA之间的硬件资源通常无法共享,造成了硬件资源的严重浪费。深度神经网络中使用低精度数具有节省内存、节省带宽和降低能耗等优势。由于训练和推理在不同网络或不同层,为使结果准确,所需的最低精度不同。因此有必要对每个操作步骤都使用其允许的最低精度,而不是笼统地对所有步骤使用同一精度,从而达到节省面积,提升性能并降低功耗的效果。
发明内容
本发明的目的在于解决硬件资源的严重浪费的问题,提出一种多精度复用的浮点乘加方法、图像处理方法及装置。
为实现上述目的,本发明采用以下技术方案:
一种多精度复用的浮点乘加方法,包括如下步骤:
S1、接收输入数据,对输入数据进行预处理、解码,再进行尾数乘法、对阶移位,输出第一结果;
S2、输入所述第一结果,进行有效数加法和前导0预测,输出第二结果;
S3、输入所述第二结果,串行完成规格化移位与舍入输出;
所述步骤S1-S3中,采用双路径处理方法,在尾数处理中:分割高精度尾数处理路径为两条低精度尾数处理路径,复用其中的尾数乘法、加法、前导0预测、对阶与规格化移位步骤,在指数处理中:附加一条低精度的指数处理路径。
在一些实施例中,所述双路径处理方法包括单路径模式和双路径模式,所述单路径模式不分割尾数路径,所述双路径模式分割高精度尾数路径,并开辟两条数据路径,包括路径一和路径二,所述路径一可执行高精度和低精度的运算,所述路径二只执行低精度的运算;所述高精度尾数路径支持两个并行的所述低精度尾数路径。
在一些实施例中,步骤S1中所述尾数乘法,每周期进行一次24位乘法或2次11位乘法,得到进位保存格式的乘积。
在一些实施例中,步骤S1中所述尾数乘法包括:对基-4Booth编码的乘数与被乘数赋值生成部分积;采用Wallace压缩树压缩部分积。
在一些实施例中,步骤S1中所述对阶移位,对阶右移采用复用型右移位器,在单路径模式下为74位移位器,在双路径模式下为2个35位移位器。
在一些实施例中,步骤S2中所述有效数加法,在所述单路径模式下,输入为49位的压缩结果,输出低48位为加法结果,第49位作为增量器的最低位;在所述双路径模式下,输入为两路23位的压缩结果,将23位压缩结果分别填入49位的大超前进位加法器的最左侧与最右侧,中间空余的3位置0;取两路输出的低22位为加法结果,第23位用作增量器的最低位。
在一些实施例中,步骤S2中所述前导0预测包括:根据所述单路径模式和/或双路径模式设置输入预测数的位置;预编码输入所述预测数以得到预编码字符串,并进行纠正以得到检测字串;使用复用型前导0预测器,在单路径模式下为49位,在双路径模式下为23位和26位,检测所述字符串前导0数量。
在一些实施例中,步骤S3中所述规格化移位,使用复用型左移器进行移位。
本发明还提出一种多精度复用的浮点乘加图像处理方法,包括图像采集、图像增强与滤波、图像识别步骤,在所述图像采集、图像增强与滤波、图像识别中的至少一个步骤中,包括所述的多精度复用的浮点乘加方法。
本发明还提出一种多精度复用的浮点乘加装置,包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序可被处理器读取并执行以实现所述的多精度复用的浮点乘加方法。
本发明具有如下有益效果:
本发明提出的多精度复用的浮点乘加方法、图像处理方法及装置,通过输入数据,进行预处理与解码,通过双路径处理方法,进行尾数乘法和对阶移位,输出第一结果;输入第一结果,通过双路径处理方法,进行有效数加法和前导0预测,输出第二结果;输入第二结果,通过双路径处理方法,串行完成规格化移位与舍入输出;以上步骤中,采用双路径处理方法,在尾数处理中:分割高精度尾数处理路径为两条低精度尾数处理路径,复用其中的尾数乘法、加法、前导0预测、对阶与规格化移位步骤,在指数处理中:附加一条低精度的指数处理路径,能够兼容多种精度,节省网络内存和带宽,提升了性能,通过对多个模块硬件的复用,相较各精度的单独实现,降低了面积与功耗成本,同时保证时延基本不变。
本发明应用于图像处理,作为独立的加速模块集成到图像处理器中,用作处理器的核心计算单元。其多精度复用特性使得芯片能在不同精度的图像处理算法和任务中灵活切换,提供高效的浮点乘加计算,提升系统的整体性能,显著地降低图像处理器的面积与功耗成本。
本发明实施例中的其他有益效果将在下文中进一步述及。
附图说明
图1为本发明多精度复用的浮点乘加方法流程图;
图2是本发明实施例中大资源占用量模块的复用流程图;
图3是本发明实施例中各精度数据端口复用结构的示意图;
图4是本发明实施例中复用型乘加器整体流程图;
图5是本发明实施例中预处理模块内部结构图;
图6是本发明实施例中解码模块内部结构图;
图7是本发明实施例中对阶移位模块内部结构图;
图8是本发明实施例中复用型右移位器结构图;
图9是本发明实施例中复用型右移位器输入输出结构图;
图10是本发明实施例中尾数乘法模块内部结构图;
图11是本发明实施例中复用型乘法器乘数、被乘数结构图;
图12是本发明实施例中复用型Wallace压缩树内部结构图;
图13是本发明实施例中各级压缩结果位数关系图;
图14是本发明实施例中加法模块内部结构图;
图15是本发明实施例中复用型CLA输入输出结构图;
图16是本发明实施例中前导0预测模块内部结构图;
图17是本发明实施例中复用型LZA输入数据示意图;
图18是本发明实施例中检测字串Fz结构图;
图19是本发明实施例中规格化模块内部结构图;
图20是本发明实施例中最终规格化结果示意图;
图21是本发明实施例中舍入输出模块内部结构图。
具体实施方式
下面对照附图并结合优选的实施方式对本发明作进一步说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本实施例中的左、右、上、下、顶、底等方位用语,仅是互为相对概念,或是以产品的正常使用状态为参考的,而不应该认为是具有限制性的。
本发明实施例提出一种多精度复用的浮点乘加方法,如图1所示,包括如下步骤:S1、输入数据,进行预处理与解码,通过双路径处理方法,进行尾数乘法和对阶移位,输出第一结果;S2、输入所述第一结果,通过所述双路径处理方法,进行有效数加法和前导0预测,输出第二结果;S3、输入所述第二结果,通过所述双路径处理方法,串行完成规格化移位与舍入输出;步骤S1-S3中,采用双路径处理方法,在尾数处理中:分割高精度尾数处理路径为两条低精度尾数处理路径,复用其中的尾数乘法、加法、前导0预测、对阶与规格化移位步骤,在指数处理中:附加一条低精度的指数处理路径,所述双路径处理方法既能输出高精度结果也能输出并行的低精度结果。
本实施例通过在硬件上支持深度学习各步骤所需的最佳精度,提升了网络性能,相较各精度单独实现,降低了功耗与面积成本。具体而言,本实施例对资源占用量很大的尾数乘法模块、加法模块、前导0预测模块、和对阶移位、与规格化移位模块进行复用,使其具有每个周期输出1个高精度结果或2个并行的低精度结果的功能,复用流程如图2所示,包括输入端口修改、硬件资源拆分和输出端口修改三个步骤;资源占用量很小的预处理模块、解码模块和舍入模块则不做修改。最终在整体上实现用一个复用型乘加器替代多种精度的乘加器的效果。
在本发明实施例中,尾数乘法步骤、有效数加法步骤、前导0预测步骤和对阶位移步骤、规格化移位步骤和舍入输出步骤分别通过尾数乘法模块、加法模块、前导0预测模块和对阶位移模块、规格化移位模块和舍入输出模块实现。
其中,步骤S1包括下文的预处理模块、解码模块、尾数乘法模块、对阶移位模块;步骤S2包括下文的加法模块、前导0预测模块;步骤S3包括下文的规格化模块,舍入模块。
本实施例提供的一种多精度复用的浮点乘加方法,在复用型浮点乘加器中使用,支持所有用于推理与训练的常用精度,包括9种低精度:FP32(单精度)、TF32(单精度张量)、FP16(半精度)、BF16(脑浮点数)、两类FP8(8位浮点数)、INT16(16位整型数)、INT8(8位整型数)、INT4(4位整型数),以及7种混合精度:FP16-FP32(乘数、被乘数精度为FP16,加数、结果精度为FP32,其他混合精度的思路与此相同)、BF16-FP32、TF32-FP32、两类FP8-FP16、INT8-INT16、INT4-INT8。采用双路径处理方法,分割高精度尾数路径,包括复用尾数乘法步骤、加法步骤、前导0预测步骤和对阶与规格化移位步骤,并附加低精度指数路径,实现每个周期输出1个高精度结果或2个并行的低精度结果。
本实施例中的多精度复用的浮点乘加方法作用的复用型乘加器可作为基本处理单元(PE)集成在深度学习加速器中使用,加速器决定其工作在16种精度模式中的哪一种,满足了深度学习运算对多种计算精度的需求,多个复用型乘加器构成PE阵列以实现高效矩阵运算,可进行高速低成本的推理与训练。
本实施例中的复用型乘加器工作原理为在基础乘加器架构上,增设选择器以分割高精度尾数路径为两条低精度尾数处理路径,实现了高资源占用量的尾数乘法、加法、前导0预测、对阶与规格化移位模块的复用,并附加一条额外的低精度指数路径,最终实现16种精度间硬件资源的复用。
1端口复用设置
本实施例支持的精度种类较多,对每种精度单独设置输入输出端口会严重浪费引脚资源,故需要复用位宽较大的输入输出端口,变量定义如表1与表2所示:
表1输入端口变量定义表
输入变量即S1中的输入数据,在输入变量中,clk、rst_n、Mode、rnd_mode、Mac为同时对2条运算路径生效的控制信号,mode控制16种精度模式的选择,rnd_mode控制5种舍入模式的选择。
表2输出端口变量定义表
在输出变量中,Overflow、Underflow、Invalid、Inexact为2位异常情况信号。单路径模式下,高位有效低位置0;双路径模式下,高位与低位为路径1和2的异常结果。
最后复用输入操作数A,B,C与输出乘加结果result_Fin。采用路径1数据置于高位,路径2数据置于低位,空余位补0的方法分配数据位置,混合精度在输出时统一占用路径1的位置,各精度数据端口的复用结构如图3所示。
2复用结构概述
本实施例的复用型乘加器以典型的浮点乘加融合架构为基本框架(参考文献:HOKENEK E,MONTOYE RK.Second-generation RISC floating point with multiply-addfused[J].IEEE Journal of Solid-State Circuits,1990,25(5):1207-1213.),通过修改基本模块或附加新计算逻辑,实现了16种精度的复用,共分为3级流水线,整体结构如图4所示。
浮点FMA单元由指数处理路径与尾数处理路径构成。尾数处理路径所占用的面积与时延比指数处理路径大得多,复用后性能的提升空间较大。因此本发明实施例重点实现了尾数处理路径中的尾数乘法、加法、前导0预测、对阶与规格化移位模块的复用,其连接关系如图4所示,高复用率单元涂为斜杠以便于区分,每个结构将在下文具体介绍。
指数处理路径处于运算的非关键路径上,运算逻辑简单,硬件面积与时延占用较小。因此本实施例在原有的高精度构建了一条额外的低精度指数处理路径。
3各级步骤功能
本发明实施例共划分3个流水级步骤。其中,第0级为本实施例中端口复用装置中,输入端口输入变量的过程。第一级进行数据预处理、解码、尾数乘法与对阶移位,预处理模块进行输入非规格化数与异常检测,并将整型数封装为浮点格式,图4中乘法即尾数乘法模块,尾数乘法模块处于关键路径上,决定了本级的时延。解码模块输出阶差结果,传递给对阶移位模块进行操作数C的移位,并与尾数乘法模块并行以降低时延。
其中,尾数乘法与对阶移位模块实现了高低精度间的硬件共享,相较需要单独构建指数处理路径的预处理与解码模块,节省了面积与功耗,提高了运算性能。
第二级完成了前导0预测(Leading ZeroAnticipation,LZA)与有效数加法,加法模块位于关键路径上,决定本级的时延,内部包括进位保存加法器(Carry SaveAdder,CSA)压缩和超前进位加法器(Carry-LookaheadAdder,CLA)合并两个加法阶段,后者与LZA模块并行以降低时延。将前级中对阶移位得到移位后有效数shift_C的低2p+1位与乘积的进位保存格式结果carry和sum经CSA压缩得到加数opA和被加数opB,并行进入LZA与CLA进行计算,其中LZA模块也实现了高低精度间硬件共享。
为进一步减小加法延迟,本实施例将3p+2位的大位宽加法分解为两部分进行,分别为低2p位的CLA加法,以及由其最高位控制的高p+2位的增量器加法。最后还需要根据加法结果的正负判断是否执行取补操作。
第三级串行完成规格化移位与舍入输出。规格化模块首先根据阶差exp_D和前导0预测结果num_Zero,确定初始规格化移位量norm_Width并执行移位,之后纠正相加后可能由进位退位或前导0预测造成的1位误差,进行的1位左移、右移或保持不变。
舍入模块首先使用对阶移位中移出移位器最右端的初始粘贴位s_Basic,与规格化结果进行或运算得到粘贴位sticky,其与舍入位、尾数最低位的奇偶性在舍入模式信号rnd_mode控制下确定结果的舍入进位。之后判断4种异常情况,并输出对应的标志位。最后将数据结果与异常结果进行封装输出。
4双路径处理方法
双路径处理方法:包括单路径模式和双路径模式,双路径模式分割高精度尾数路径,并开辟两条数据路径,路径一(也作路径1)可执行高精度与低精度运算,路径二(路径2)只执行低精度运算,在高精度运算时全部中间变量与输出结果均置0,实现了每个时钟周期输出1个高精度结果或2个并行的低精度结果。
两条路径的位宽由其支持的最高精度决定,分别为FP32与FP16。由于高精度与低精度尾数路径的位宽相差2倍以上,因此高精度尾数路径只需增添少量判断选择逻辑,即可实现对2个并行的低精度尾数运算的支持。而对于其他位宽较小的精度,在数据路径的高位补0,低位放置有效数据即可实现复用。各精度的路径模式如表3所示。
指数路径是运算的非关键路径,运算逻辑简单,硬件面积与时延占用均较小,因此本实施例在原有的8位指数路径上,附加了一条5位的低精度指数路径,以实现对2个并行的低精度指数运算的支持。
表3各精度路径模式分类表
5混合精度处理方法
为了最大程度利用现有逻辑资源来兼容混合精度运算,部分模块使用混合精度中2种精度模式的逻辑资源,部分模块增加少逻辑资源,其余模块则使用原有的逻辑资源。
以FP16-FP32为例,在预处理模块与解码模块使用2种精度资源,即操作数A、B使用FP16中部分逻辑,操作数C使用FP32中部分逻辑,尾数乘法与前导0预测模块使用FP16模式逻辑,对阶移位与加法模块使用2种精度资源并增加少量逻辑,规格化与舍入模块使用FP32中逻辑,根据上述思路实现全部混合精度运算。
6整型数处理方法
将整型数在预处理模块封装为特定浮点格式,与浮点数共用逻辑资源,基本不需增加新的逻辑资源。封装思路为:浮点符号填入整型数符号,尾数中高位置0,低位放入整型数的绝对值,偏阶指数设置为特定常数,如表4所示,保证后续加法时乘积与加数权值相同。整型精度中INT16、INT8-INT16和INT4-INT8使用FP32路径,INT8和INT4使用FP16路径。由于整型数运算不需要规格化与舍入,因此在加法模块增添少量逻辑后,即可得到乘加数值结果与异常信号,将其传递给舍入模块封装后得到计算结果。
表4整型数偏阶指数设置表
下文按照模块级联顺序,依次介绍了预处理、解码、对阶移位、尾数乘法、加法、前导0预测、规格化与舍入模块的功能、复用思路与实现过程。
7预处理模块
预处理模块内部结构如图5所示,其功能如下。
根据模式选择信号mode,进行非规格化数处理,检测操作数初始值A、B、C是否为非规格化数,若是,则输出操作数中间值Ao,Bo、Co保留其符号并将指数尾数全部置0;若否,则操作数中间值等于操作数初始值。
整型数运算时将操作数初始值封装为浮点格式,还需将输入0标志位Zero置1,防止前导位参与计算,输出异常标志位也全部置0。
进行输入特殊情况判断,判断输入数据是否为特殊数据:0、+∞、-∞、NAN,并据此进行输出异常情况的判断。例如输入为0与+∞时,输出为NAN,同时输出对应异常标志位信号至舍入模块,异常的优先级为:NAN>PInf=NInf。
8解码模块
解码模块内部结构如图6所示,其功能如下:
根据模式选择信号mode,提取操作数中间值Ao、Bo、Co中的符号、指数和尾数值,并输出,根据输入0标志位Zero确定前导位,与尾数组合成有效数s_A、s_B、s_C。
计算乘积指数exp_P:操作数A与B指数之和,以及阶差exp_D:操作数C指数与乘积指数之差,并输出exp_P、exp_D。
9对阶移位模块
对阶移位模块内部结构如图7所示,其功能如下:
根据阶差exp_D数值,分以下3种情况计算对阶移位量s_Wid:
若exp_D≤-2p+1,则s_Wid=3p+2;
若-2p+1<exp_D≤p+2,则s_Wid=p+3–d;
若exp_D≥p+3,则s_Wid=0;
根据模式选择信号mode,确定移位器宽度,之后进行对准左移,有效数s_C存储在移位器最左端。再进行对阶右移,右移对阶移位量s_Wid后,移位器内即为移位后有效数Shift_C。最后对移出移位器的数据整体取或得到初始粘贴位s_Basic。
移位器的具体结构与复用方式如下:
移位器共有3p+2位,不同精度下各区域位数不同。从左至右分别为p位有效数,1位保护位,1位舍入位,2p位乘积,移出移位器的数据进入p位存储位。
使用一个74位复用型右移位器来支持2个并行的35位移位。图8显示了复用型右移位器的结构。由7层桶形移位器改造而成,对于顶层信号:输入In是待移位信号,mode是模式选择信号,s_Wid1、s_Wid2分别是路径1、2对阶移位量。输出Shift_C是移位后有效数。对于中间信号:s1、s2、s3、s4、s5、s6是每一层移位的中间结果,t0、t1、t2、t3、t4、t5、t6是上一层移位的中间结果右移2i位,其中i指桶形移位器的第几层,最低层时i=0,最高层时i=6。将各层分成3块:最高有效区域(位[73:36],Verilog中的表示方法,代表第73-第36位)、中心区域(位[36:36-2i+1])和最低有效区域(位[36-2i:0]),其中i是层数。
模式选择器根据mode选择输出至移位器各层的对阶移位量,在单双路径模式下中心区域和最低有效区域始终受路径1对阶移位量s_Wid1控制,而高位区域在双路径模式下受路径2对阶移位量s_Wid2控制,单路径模式下受s_Wid1控制。
图9显示了复用型右移位器的输入输出结构。单路径模式为74位移位器,双路径模式变为2个35位移位器,在移位器高位补0以支持其它低精度。将最高3位与中间1位置0以隔离开2个35位移位器。
10尾数乘法模块
尾数乘法模块选用了基-4Booth算法生成部分积,采用复用型Wallace压缩树压缩部分积,内部结构如图10所示,其功能如下:
根据模式选择信号mode,每周期对有效数s_A、s_B进行1次24位乘法或2次11位乘法(均无符号),故将24位的大乘法器拆分为2路11位的小乘法器使用,乘法结果为进位保存格式的结果和sum与结果进位carry。
乘法器复用思路为:单路径模式下,压缩14路部分积得到高精度乘积。双路径模式下,压缩后7路与前7路部分积分别得到第1路与第2路低精度乘积。故要求对基-4Booth编码的乘数与被乘数分情况赋值以生成14路部分积,结构如图11所示。
单路径模式下,由于Booth编码要求单路径乘数与单路径被乘数为有符号偶数,为了生成对称的复用型Wallace压缩树,对24位有效数的最高位补4位0(1位符号,3位绝对值),编码后产生14路部分积。
双路径模式下,对于双路径乘数:将2路11位有效数填充在28位乘数的最左侧与最右侧(不含符号位)。对于双路径被乘数:生成前7路部分积时,将第2路11位有效数填充在最右侧。生成后7路部分积时,将第1路11位有效数填充在最左侧,未填充的位均置0。
图12展示了复用型Wallace压缩树的内部结构,混合使用3:2CSA和4:2CSA(在图12中编号为a—g)将部分积PP0-PP13逐层压缩至8路、4路和2路,sum与carry是各级压缩器的压缩结果,其位数已在图中标出。最终单路径乘积在第三层输出,在第二层输出双路径乘积1和双路径乘积2。图13展示了各级压缩结果的位数关系,其中各符号的含义与图12中相同,每个虚线框代表一个压缩器,框右下角数字的是此压缩器的位数,各级压缩结果sum与carry的位数已在图中标出。
步骤S1经过预处理模块、解码模块、尾数乘法模块、对阶移位模块后,输出的第一结果为sum、carry、Shift_C、s_Basic、exp_P、exp_D,以及多种异常信号。
11加法模块
加法模块内部结构如图14所示,其功能如下。
根据模式选择信号mode,输入部分第一结果的乘积结果sum、carry、操作数符号与取补后移位后有效数shift_C的低2p+1位,通过55位复用型CSA压缩成加数opA和被加数opB,二者既送入49位复用型CLA相加成低2p位结果,也送入LZA模块进行前导0预测,之后将shift_C的高p+2位送入增量器,由复用型CLA最高位判断是否加1。最后将后p+2位增量器结果与结果低2p位组合,取补得到3p+2位结果和绝对值sum_Abs。
输出2路标志位:输入操作数符号包括乘积符号与加数符号,二者相异时有效减法标志位flag_Sub为1,乘加结果符号sign_Result由乘积与加数的符号与大小共同决定。
处理混合精度时,sum_Abs结构与单一精度不同。以FP16-FP32模式为例,乘数精度p1=11,加数精度p2=24,sum_Abs位数=p2+2p1+2=48。将sum_Abs向高位对齐,低位全部置0,转化为加数精度结构的sum_Abs,因此后续处理逻辑均与FP32相同。
处理整型数时,将整型数结果int_Result从结果和绝对值sum_Abs中提取,其最高位为上溢标志位,是对sum_Abs中所有超过表示范围位的或运算,低位为结果绝对值,各整型精度具体的位数提取范围如表5所示。整型数与浮点数符号的计算逻辑相同,共用sign_Result。
表5整型精度位数提取范围表
复用型CSA与复用型CLA的实现方式相同,仅以后者为例,复用结构如图15所示,复用思路为:
单路径模式下,输入为49位的压缩结果,输出低48位为加法结果,第49位用作增量器的最低位。
双路径模式下,输入为两路23位的压缩结果,并将23位压缩结果分别填入49位的大CLA的最左侧与最右侧,中间空余的3位置0。取两路输出的低22位为加法结果,第23位用作增量器的最低位。
12前导0预测模块
前导0预测模块内部结构如图16所示,其功能如下:
根据模式选择信号mode,预测复用型CSA输出的加数opA和被加数opB相加后的前导0数量,生成预编码字串F和检测字串Fz,得到前导0预测结果num_Zero。每周期进行1次49位LZA或2次23位LZA,故将49位大LZA拆分为23位小LZA和26位小LZA。
LZA复用思路如图17所示:根据精度模式设置输入预测数的位置,双路径下23位输入需要放置在单路径下49位输入两端,对应图中的灰色预测区,用于预编码后得到预编码字串F,最低3位和未使用的位置0,确保不影响预编码结果,对应图中的白色置0区。
式(1)中,opAi为加数,opBi为被加数,Fi为预编码字串,i代表所在位数,式(2)中,F0为预编码字串第0位值、opA0为加数第0位值、opB0位为加数第0位值,对加数opAi和被加数opBi使用式(1)和式(2)进行预编码,生成预编码字串Fi,符号U、-、分别代表异或、与、非。不同精度下预测的最低位不同,为得到结构如图18所示的检测字串Fz,需要再次使用式(2)对浅灰色的低边界进行纠正,同时将未使用的位置1,确保不影响检测结果,对应图中的白色区域置1区。
使用2路前导0检测器(LZC),分别为23位LZC和26位LZC,检测检测字串Fz中前导0数量,即为2路低精度LZA结果。单路径模式下,若23位LZC结果不等于23,高精度结果为23位LZC结果,否则为2路LZC结果之和。
经过步骤S2中的加法模块和前导0预测模块计算,步骤S2输出第二结果int_Result、sign_Result、sum_Abs、flag_Sub、num_Zero。
13规格化模块
规格化模块内部结构如图19所示,其功能如下:
归格化移位量与初始结果指数确定:根据模式选择信号mode、加数指数exp_C、乘积指数exp_P、阶差exp_D、前导0预测结果num_Zero和对阶移位量s_Wid,计算初始结果指数exp_Basic和规格化移位量norm_Wid,方法如下:
若exp_D≤2(乘积固定或抵消情况),需进一步分类讨论:
其中exp_P-num_Zero+2≥e_Min,结果是规格化数,norm_Wid=p+1+num_Zero,exp_Norm=exp_P-num_Zero+2。
其中exp_P-num_Zero+2<e_Min,结果是非规格化数,norm_Wid=0,exp_Norm=e_Min。
若exp_D>2(加数固定情况),norm_Wid=s_Wid,exp_Norm=exp_C。
使用复用型左移器进行规格化移位,其结构与对阶移位模块中复用型右移位器相似,单路径模式为75位移位器,双路径模式变为2个36位移位器。
将sum_Abs左移norm_Wid位,得到初始规格化结果norm_Basic,其前导1位置存在1位误差,需要进行结果纠正,使用3位的前导1检测器检测norm_Basic最高位的左右邻位。若出现前导1,则需要整体左移或右移1位,规格化指数exp_Norm需要加1或减1,得到最终规格化结果norm_Final,组成结构如图20所示。
最后进行信息封装,提取norm_Final的高p+1位为末位为舍入位round的规格化有效数s_Norm,其余低位与初始粘贴位s_Basic进行或运算,得到粘贴位sticky。并根据移位结果,生成非0标志位not_Zero,判断结果是精确为0还是下溢为0。最终输出规格化有效数s_Norm,粘贴位sticky、非0标志位not_Zero、规格化指数exp_Norm。
14舍入模块
舍入模块内部结构如图21所示,其功能如下:
舍入前溢出检测与格式转换:根据模式选择信号mode,舍入模式信号rnd_mode,舍入前,判断上溢、下溢,并将输入规格化指数exp_Norm与规格化有效数s_Norm转换成用于舍入的中间格式向量。
舍入中使用多模式舍入器:其支持5种舍入模式,由舍入模式信号rnd_mode控制,根据舍入位round(规格化有效数s_Norm的最低位)、粘贴位sticky与尾数最低位的奇偶性,判断是否产生舍入进位,即中间向量的末位是否加1。
舍入后上溢检测与异常情况判断:舍入后,判断上溢、下溢,并根据前级输入的异常结果:异常标志位NaN、PInf、NInf和非0标志位not_Zero,共同决定4种异常标志位。其中上溢标志位Overflow被整型数与浮点数运算共用,整型数的上溢标志存储在整型数结果int_Result的最高位。
最后进行乘加结果封装:判断输出结果是否为4种异常值,若是,则最终乘加结果result_Fin输出预先设置好的异常常数,若否,则输出由乘加结果符号sign_Result与舍入后的中间格式向量的组合。最终输出4种异常标志位:上溢标志Overflow,下溢标志Underflow,无效标志Invalid、非精确标志Inexact与最终乘加结果result_Fin。
本实施例采用Vivado作为综合工具,使用装载Artix-7系列芯片XC7A35T的开发板ACX720进行逻辑综合,工艺库制程为28nm。设计得到的综合结果主要包括资源占用、功耗与时延三部分。
综合结果表明,本实施例的复用型乘加器相较16种精度乘加器的独立实现,在资源占用上,查找表数量从21212个减少至6300个,减少比例70.3%,乘法器数量从3061个减少至808个,减少比例73.6%,全局时钟缓冲器从10个减少至2个,减少比例80%;在功耗上,从0.617W减少至0.113W,减少比例81.7%;在时延上,复用型乘加器相较基准单精度乘加器,时延从6.441ns增加至6.452ns,增加比例0.14%。
本实施例还提供一种多精度复用的浮点乘加图像处理方法,包括图像采集、图像增强与滤波、图像识别步骤,在所述图像采集、图像增强与滤波、图像识别中的至少一个步骤中,包括本实施例中的多精度复用的浮点乘加方法。在图像数据采集中,该乘加器能够兼容不同的传感器数据精度,进行实时的浮点乘加运算,从而优化图像质量和减少噪声;在图像识别中,该乘加器可适应不同精度的深度学习识别模型,可应用在实时目标检测、人脸识别、场景分析等场景,使图像识别系统能够以更快的速度和更高的准确性完成任务;该乘加器可以作为独立的加速模块集成到图像处理器中,用作图像处理器的核心部分,其多精度复用特性使得芯片可在不同精度的图像处理算法和任务中灵活切换,提供高效的浮点乘加计算,提升系统的整体性能,降低图像处理器的面积与功耗成本。其中,在对图像数据进行处理步骤中包括深度学习处理步骤,在所述深度学习处理步骤中的浮点乘加计算中,包括前述实施例中的方法。
具体的,在图像处理时,本多精度复用的浮点乘加器可以在许多关键步骤中得到广泛运用,从而实现卓越的性能和效果。首先,该乘加器可用于图像采集和传感器输出的前置处理。通过支持多种精度,它能够适应不同的传感器数据精度,并在数据采集阶段就进行实时的浮点乘加运算,从而优化图像质量和减少噪声。
其次,该乘加器可以应用于图像增强和滤波的过程中。通过多精度复用,它能够在不同的增强算法和滤波器中灵活切换,并根据具体需求进行高效的乘加计算。这样,图像的细节、对比度和清晰度可以得到显著提升,同时在处理大规模图像时,也能保持较低的时延。
此外,该乘加器还能在图像识别和模式识别任务中发挥重要作用。通过支持多种精度,它可以适应不同的识别算法和模型的要求,并为复杂的计算任务提供高性能的浮点乘加功能。这对于实时的目标检测、人脸识别、场景分析等应用具有重要意义,使得图像识别系统能够以更快的速度和更高的准确性完成任务。
在运用方式上,该乘加器可以作为独立的加速模块集成到图像处理芯片中,也可用作图像处理器的核心部分。它的多精度复用特性使得在不同的图像处理算法和任务中,都能够充分发挥其优势,提供高效的浮点乘加计算。同时,通过对多个模块硬件的复用,它在面积和功耗成本上也具有显著的优势,使得整体系统的性能得到提升。
总的来说,该多精度复用的浮点乘加器在图像处理中的广泛应用以及其运用方式和效果,为图像处理领域的技术发展带来了重要的创新和突破。
本实施例还提供一种多精度复用的浮点乘加装置,包括处理器和存储器,存储器中存储有计算机程序,计算机程序可被处理器读取并执行以实现如实施例中所描述的多精度复用的浮点乘加方法。
本领域内的技术人员应明白,本实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明的背景部分可以包含关于本发明的问题或环境的背景信息,而不一定是描述现有技术。因此,在背景技术部分中包含的内容并不是申请人对现有技术的承认。
以上内容是结合具体/优选的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,其还可以对这些已描述的实施方式做出若干替代或变型,而这些替代或变型方式都应当视为属于本发明的保护范围。在本说明书的描述中,参考术语“一种实施例”、“一些实施例”、“优选实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。尽管已经详细描述了本发明的实施例及其优点,但应当理解,在不脱离专利申请的保护范围的情况下,可以在本文中进行各种改变、替换和变更。

Claims (10)

1.一种多精度复用的浮点乘加方法,其特征在于,包括如下步骤:
S1、接收输入数据,对输入数据进行预处理、解码,再进行尾数乘法、对阶移位,输出第一结果;
S2、输入所述第一结果,进行有效数加法和前导0预测,输出第二结果;
S3、输入所述第二结果,串行完成规格化移位与舍入输出;
所述步骤S1-S3中,采用双路径处理方法,在尾数处理中:分割高精度尾数处理路径为两条低精度尾数处理路径,复用其中的尾数乘法、加法、前导0预测、对阶与规格化移位步骤,在指数处理中:附加一条低精度的指数处理路径。
2.如权利要求1所述的多精度复用的浮点乘加方法,其特征在于,所述双路径处理方法包括单路径模式和双路径模式,所述单路径模式不分割尾数路径,所述双路径模式分割高精度尾数路径,并开辟两条数据路径,包括路径一和路径二,所述路径一可执行高精度和低精度的运算,所述路径二只执行低精度的运算;所述高精度尾数路径支持两个并行的所述低精度尾数路径。
3.如权利要求2所述的多精度复用的浮点乘加方法,其特征在于,步骤S1中所述尾数乘法,每周期进行一次24位乘法或2次11位乘法,得到进位保存格式的乘积。
4.如权利要求3所述的多精度复用的浮点乘加方法,其特征在于,步骤S1中所述尾数乘法包括:对基-4Booth编码的乘数与被乘数赋值生成部分积;采用Wallace压缩树压缩部分积。
5.如权利要求1所述的多精度复用的浮点乘加方法,其特征在于,步骤S1中所述对阶移位,对阶右移采用复用型右移位器,在单路径模式下为74位移位器,在双路径模式下为2个35位移位器。
6.如权利要求1所述的多精度复用的浮点乘加方法,其特征在于,步骤S2中所述有效数加法,在所述单路径模式下,输入为49位的压缩结果,输出低48位为加法结果,第49位作为增量器的最低位;在所述双路径模式下,输入为两路23位的压缩结果,将23位压缩结果分别填入49位的大超前进位加法器的最左侧与最右侧,中间空余的3位置0;取两路输出的低22位为加法结果,第23位用作增量器的最低位。
7.如权利要求6所述的多精度复用的浮点乘加方法,其特征在于,步骤S2中所述前导0预测包括:根据所述单路径模式和/或双路径模式设置输入预测数的位置;预编码输入所述预测数以得到预编码字符串,并进行纠正以得到检测字串;使用复用型前导0预测器,在单路径模式下为49位,在双路径模式下为23位和26位,检测所述字符串前导0数量。
8.如权利要求1所述的多精度复用的浮点乘加方法,其特征在于,步骤S3中所述规格化移位,使用复用型左移器进行移位。
9.一种多精度复用的浮点乘加图像处理方法,其特征在于,包括图像采集、图像增强与滤波、图像识别步骤,在所述图像采集、图像增强与滤波、图像识别中的至少一个步骤中,包括如权利要求1至8任一项所述的方法。
10.一种多精度复用的浮点乘加装置,其特征在于,包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序可被处理器读取并执行以实现如权利要求1至8任一项所述的方法。
CN202311232968.2A 2023-09-22 2023-09-22 一种多精度复用的浮点乘加方法、图像处理方法及装置 Pending CN117289895A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311232968.2A CN117289895A (zh) 2023-09-22 2023-09-22 一种多精度复用的浮点乘加方法、图像处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311232968.2A CN117289895A (zh) 2023-09-22 2023-09-22 一种多精度复用的浮点乘加方法、图像处理方法及装置

Publications (1)

Publication Number Publication Date
CN117289895A true CN117289895A (zh) 2023-12-26

Family

ID=89243756

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311232968.2A Pending CN117289895A (zh) 2023-09-22 2023-09-22 一种多精度复用的浮点乘加方法、图像处理方法及装置

Country Status (1)

Country Link
CN (1) CN117289895A (zh)

Similar Documents

Publication Publication Date Title
CN108287681B (zh) 一种单精度浮点融合点乘运算装置
CN115934030B (zh) 算数逻辑单元、浮点数乘法计算的方法及设备
CN107451658B (zh) 浮点运算定点化方法及系统
CN100570552C (zh) 一种并行浮点乘加单元
US9405728B2 (en) Floating-point adder circuitry
CN108459840B (zh) 一种simd结构浮点融合点乘运算单元
CN101221490B (zh) 一种具有数据前送结构的浮点乘加单元
US20210349692A1 (en) Multiplier and multiplication method
US5280439A (en) Apparatus for determining booth recoder input control signals
US5148386A (en) Adder-subtracter for signed absolute values
CN117111881B (zh) 支持多输入多格式的混合精度乘加运算器
US8316071B2 (en) Arithmetic processing unit that performs multiply and multiply-add operations with saturation and method therefor
EP3782019B1 (en) Multi-input floating-point adder
US20130282784A1 (en) Arithmetic processing device and methods thereof
CN115390790A (zh) 一种具有融合精度转换功能的浮点乘加单元及其应用方法
CN116661734B (zh) 支持多输入多格式的低精度乘加运算器
US4337519A (en) Multiple/divide unit
CN116594590A (zh) 一种浮点数据的多功能运算装置及方法
JPH0250492B2 (zh)
CN117289895A (zh) 一种多精度复用的浮点乘加方法、图像处理方法及装置
US4823300A (en) Performing binary multiplication using minimal path algorithm
WO2023078364A1 (zh) 矩阵乘法的运算方法及装置
CN116627379A (zh) 可重构的支持多精度浮点或定点运算的方法及系统
CN115904507A (zh) 面向cgra的多精度小面积simd运算系统、方法、介质及设备
US4866657A (en) Adder circuitry utilizing redundant signed digit operands

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination