CN110221808B - 向量乘加运算的预处理方法、乘加器及计算机可读介质 - Google Patents

向量乘加运算的预处理方法、乘加器及计算机可读介质 Download PDF

Info

Publication number
CN110221808B
CN110221808B CN201910479604.1A CN201910479604A CN110221808B CN 110221808 B CN110221808 B CN 110221808B CN 201910479604 A CN201910479604 A CN 201910479604A CN 110221808 B CN110221808 B CN 110221808B
Authority
CN
China
Prior art keywords
data
adder
input
floating point
integer
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.)
Active
Application number
CN201910479604.1A
Other languages
English (en)
Other versions
CN110221808A (zh
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.)
Zhonghao Xinying (Hangzhou) Technology Co.,Ltd.
Original Assignee
Shenzhen Xinying Technology Co ltd
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 Xinying Technology Co ltd filed Critical Shenzhen Xinying Technology Co ltd
Priority to CN201910479604.1A priority Critical patent/CN110221808B/zh
Publication of CN110221808A publication Critical patent/CN110221808A/zh
Application granted granted Critical
Publication of CN110221808B publication Critical patent/CN110221808B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)

Abstract

本发明实施例公开了一种乘加器,包括:数据预处理单元用于对输入数据进行预处理,并将处理后的数据送入运算单元,所述预处理包括数值判断、格式转换和格式压缩中的至少一种;所述运算单元包括级联的向量乘法器和向量加法器,用于接收来自所述数据预处理单元的数据,并利用所述向量乘法器和向量加法器对所述数据预处理单元的数据进行乘加运算,以得到所述输入数据的乘加结果。采用本发明实施例,能够解决现有乘加运算中存在的操作复杂、时延较大等问题。

Description

向量乘加运算的预处理方法、乘加器及计算机可读介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据处理方法、装置及计算机可读介质。
背景技术
乘加运算(a*b+c)在工程界一直有着广泛地应用,例如数字信号处理中的卷积运算是由一系列的乘加运算构成。随着人工智能技术的不断发展和应用,以人工神经网络为代表的一系列算法对点乘运算提出了新要求。然而乘加运算作为点乘运算的基础运算,其对乘加运算的要求也提高了。
目前,在各种专用集成电路中为实现多输入乘加运算,往往采用两两数据相乘累加再移位的操作,如此反复多次来计算多输入乘加运算的结果。然而在实践中发现,上述多输入乘加运算通常应用于同类数据的乘加运算中,随着深度神经网络(Deep NeuralNetwork,DNN)在人工智能领域的广泛应用,传统同类数据的乘加运算已无法满足不同类数据间复杂乘加运算的需求了。此外,上述多输入乘加运算的操作实质是数据多次迭代的运算过程,操作复杂、时延较大。
发明内容
本发明实施例提供一种乘加器,能够解决现有乘加运算中存在的操作复杂、时延较大等问题。
第一方面,本发明实施例提供了一种乘加器,包括运算单元、数据预处理单元和控制单元,运算单元包括向量乘法器和向量加法器,运算单元的输入端连接数据预处理单元的输出端,用于接收来自数据预处理单元的数据,并利用向量乘法器和向量加法器对数据预处理单元的数据进行乘加运算以得到对应的乘加结果。其中,数据预处理单元接收未处理数据,用于对未处理数据中的混合类型数据进行数据格式标准化处理,该数据格式标准化处理是将混合类型数据中的整数转换为浮点数以得到直接用于乘加运算的数据。控制单元连接运算单元和数据预处理单元,控制单元用于控制数据预处理单元,在未处理数据为混合类型数据的情况下,向数据预处理单元输出第一控制信号,指示数据预处理单元进行数据格式标准化预处理,控制单元用于根据输入数据类型控制运算单元按照浮点数或整数运算法则进行相应操作。
该未处理数据包括单一类型数据或混合类型数据,单一类型数据只包括第一数据或只包括第二数据,混合类型数据包括至少一个第一数据和至少一个第二数据,该第一数据包括至少一个整数且全部为整数,第二数据包括至少一个浮点数且全部为浮点数。
数据预处理单元包括输入选择器、前导零检测器、第一加法器、移位器和输出选择器。其中输入选择器的输出端连接前导零检测器的输入端,前导零检测器的输出端连接移位器和第一加法器的输入端,第一加法器的输出端连接输出选择器的输入端,移位器的输出端连接输出选择器的输入端。具体的,
输入选择器,用于接收未处理数据和控制单元输出的控制信号,并根据输入数据的类型和控制信号的类型将未处理数据中的至少一种数据或该数据中的至少一个域,输入前导零检测器、移位器和第一加法器中至少一个器件。
前导零检测器,用于在接收到混合类型数据的情况下,检测混合类型数据中每一个整数或其对应补码的前导零的数量;
第一加法器,用于计算预处理后数据的指数部分,其中在未处理数据仅包括混合类型数据的情况下,根据前导零的数量计算出每一个整数的指数偏移量以得到该整数的指数部分;
移位器,用于对未处理数据进行移位处理以得到预处理后数据的尾数部分,在接收到混合类型数据的情况下,根据前导零的数量对混合类型数据中每一个整数或其对应补码进行移位,以得到该整数的尾数部分;
输出选择器,用于输出预处理数据,其中在未处理数据仅包括混合类型数据的情况下,对于第一数据中同一整数而言输出选择器可分别接收由第一加法器输出的该整数的指数部分和移位器输出的该整数的尾数部分,将两部分整合为浮点数并对应替换该整数,将完成替换的数据作为第一结果。
通过实施本发明实施例,上述乘加器利用数据预处理单元将格式转换功能从每个运算单元中分离出来,对输入数据进行预处理,极大地减小了每个运算单元的逻辑复杂度和布局布线的复杂度,改善了性能、面积和尤其是稀疏矩阵运算的功耗。同时避免了现有乘加运算方案中存在的操作复杂、时延较大等问题,提升了乘加运算的效率和实用性。
第二方面,本发明实施例提供了一种向量乘加运算的预处理方法,提供有未处理数据,将未处理数据进行预处理并用于乘加运算,该未处理数据包括单一类型数据和混合类型数据,单一类型数据只包括第一数据或只包括第二数据,混合类型数据包括至少一个第一数据和至少一个第二数据,第一数据包括至少一个整数且全部为整数,第二数据包括至少一个浮点数且全部为浮点数,该方法包括如下步骤:若未处理数据为混合类型数据,则通过前导零的数量分别计算出第一数据的每个整数中的指数部分,同时根据前导零的数量对第一数据的每个整数进行移位得到尾数部分,然后将第一数据中每个整数的指数部分和尾数部分整合为浮点数并对应替换原整数,将替换了原整数的浮点数与混合类型数据中已有的第二数据一起作为第一结果;若未处理数据只包括第一数据或只包括第二数据,则直接将未处理数据作为第一结果。
第三方面,本发明实施例提供了一种向量乘加运算的处理设备,包括处理器、存储器以及总线,所述处理器和所述存储器通过所述总线连接,所述存储器用于存储指令,所述处理器用于调用所述存储器中存储的指令,用于执行上述第二方面的方法。
第四方面,本发明实施例提供了一种计算设备,该计算设备至少包括如上第一方面所描述的乘加器。
第五方面,本发明实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第二方面的方法。
第六方面,本发明实施例提供了一种芯片产品,以执行上述第二方面的方法。
本发明在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种乘加器的结构示意图。
图2是本发明实施例提供的一种数据预处理单元的结构示意图。
图3是本发明实施例提供的另一种数据预处理单元的结构示意图。
图4是本发明实施例提供的另一种数据预处理单元的结构示意图。
图5是本发明实施例提供的另一种数据预处理单元的结构示意图。
图6是本发明实施例提供的一种运算单元的结构示意图。
图7是本发明实施例提供的一种向量乘加器的结构示意图。
图8是本发明实施例提供的一种向量加法器的结构示意图。
图9是本发明实施例提供的一种向量乘加运算方法的流程示意图。
图10是本发明实施例提供的一种向量乘加运算的处理设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序,或者不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
下面,对本发明实施例乘加器、向量乘加运算的预处理方法及相关设备涉及的相关实施例进行具体说明,其中,“乘加器”与“向量乘加器”、“乘法器”与“向量乘法器”、“加法器”与“向量加法器”常可被互换使用。
请参见图1是本发明实施例提供的一种乘加器的结构示意图。如图1所示的乘加器10仅为本发明实施例提供的一种高带宽低延迟多模式的向量乘加装置示例。在实际应用中该装置并不局限于乘加器,也可为能实现向量乘加运算的其他设备等。向量中的每个数据(也可称为元素)可以是一个,其相应地输出可包括一个或多个结果。本申请中,向量中每个数据所包括的元素也可称为数据项,例如数值24,其二进制表示为“11000”,包括有5个数据项,分别为:1、1、0、0和0。
如图1,乘加器10包括以下部件:存储单元11、数据预处理单元12、运算单元13和控制单元14。其中,
存储单元11,分别与控制单元14、运算单元13和数据预处理单元12连接。在控制单元14的控制下,存储被操作数和运算单元13返回的结果。其中,被操作数具体指待运算的数值,将被操作数输入到运算单元13中进行运算返回的结果也将存储在存储单元11中。
控制单元14,分别与存储单元11、数据预处理单元12和运算单元13连接,并控制存储单元11、数据预处理单元12和运算单元13。具体的,控制单元14控制数据的流动,根据实际需求(例如被操作数的类型)调用数据预处理单元12和运算单元13的相关资源。
可选地,控制单元14还可与外部设备连接,接收外部设备的指令,以调度或控制其他单元(例如数据预处理单元12、运算单元13等)实现相应地功能。例如,控制单元14可用于控制数据预处理单元12,在输入数据(也可称为未处理数据)为混合类型数据,该混合类型数据包括至少一个第一数据和至少一个第二数据,该第一数据包括至少一个整数且全部为整数,第二数据包括至少一个浮点数且全部为浮点数。换句话说,输入数据包括整数和浮点数的组合时,控制单元14向数据预处理单元12输出第一控制信号,用于指示数据预处理单元12进行数据格式标准化预处理,具体的将混合类型数据中的整数转换成浮点数。在输入数据为单精度浮点数时,向数据预处理单元12输出第二控制信号,用于指示数据预处理单元12进行数据压缩操作。
控制单元14还可以用于根据输入数据的类型控制运算单元13,指示运算单元13按照浮点数或是整数的运算法则进行相应操作。
本发明实施例中,乘加器可采用同一个控制单元14同时连接并控制数据预处理单元12和运算单元13。而在其他实施例中,乘加器装置也可以采用一个控制单元14连接控制数据预处理单元12和运算单元13其中一个,或者采用两个控制单元14,分别连接且分别控制数据预处理单元12和运算单元13。
数据预处理单元12,分别与存储单元11、运算单元13及控制单元14连接。在控制单元14的控制下,对输入数据进行预处理,并将预处理后数据送入运算单元13,其中所述预处理包括数值判断、格式转换和格式压缩中的至少一种。
其中,数值判断是判断输入数据是否为无需运算数据(包括0、无穷或非数),以便在输入数据为无需运算数据时,直接输出对应的结果。格式转换指将输入数据转换为相同的格式。格式压缩指将输入数据压缩为适合乘加器进行乘加运算的格式。关于数据预处理单元涉及的具体实施例将在本申请下文进行详述。
运算单元13,分别与存储单元11、数据预处理单元12及控制单元14连接。在控制单元14的控制下,接收来自数据预处理单元12预处理后数据,利用内含的向量乘法器和向量乘加器等相关计算资源进行运算。
在实际应用中,乘加器可根据实际需要,将数据预处理单元12的部分或全部功能拆分或内置到运算单元13中,以减轻数据预处理单元12的计算负载。可选地,乘加器还可根据实际需求,在不同功能单元(例如运算单元13和数据预处理单元12等)之间插入流水线寄存器(图未示),这样可将乘加器的设计或运算流水线化,以提升乘加器的工作频率和吞吐量。
实际部署形态中,数据预处理单元12可与运算单元13单独部署,即数据预处理单元12可独立于运算单元13单独部署。也可以,数据预处理单元12作为运算单元13的前处理部分与运算单元13一体集成部署。
下面阐述数据预处理单元12和运算单元13涉及的具体实施例。请参见图2,是本发明实施例提供的一种可能的数据预处理单元12的结构示意图。如图2所示的数据预处理单元12包括输入选择器121、比较器122、前导零检测器123、移位器124、加法器125和输出选择器126。输入选择器121输出端连接比较器122、移位器124、加法器125和前导零检测器123的输入端,比较器122的输出端连接输出选择器126的输入端,前导零检测器123的输出端连接移位器124和加法器125的输入端,加法器125的输出端连接输出选择器126的输入端,移位器124的输出端连接输出选择器126的输入端。
输入选择器121,用于接收输入数据和控制单元14输出的控制信号,并根据输入数据的类型和控制信号将输入数据(具体可指输入数据的指数部分或尾数部分)输入比较器122、前导零检测器123、移位器124和加法器125中至少一个器件。
比较器122,用于判断输入数据是否为无需运算数据(例如0、无穷或非数),并在输入数据为0,无穷或非数的情况下,根据预设规则直接向输出选择器126输出与输入数据对应的计算结果,并通过输出选择器126向运算单元13输出乘加器控制信号,以提前关闭相应的运算单元13。
前导零检测器123,用于在输入数据为浮点数和整数的组合的情况下,检测整数或其补码的前导零的数量。
移位器124,用于对输入数据进行移位处理,以得到输入数据的尾数部分,其中在输入数据为浮点数和整数的组合的情况下,根据前导零的数量对整数或其补码进行移位,以得到整数的尾数部分。
加法器125,用于计算输入数据的指数部分,其中在输入数据为浮点数和整数的组合的情况下,根据前导零的数量使用减法器计算整数的指数偏移量,以得到整数的指数部分。
输出选择器126,用于输出预处理后的输入数据,其中在输入数据为浮点数和整数的组合的情况下,接收整数的指数部分和整数的尾数部分并整合为浮点数进行输出,在输入为单精度浮点数的情况下,接收控制单元14输出的数据压缩控制信号对超出位数的尾数部分进行压缩处理并输出压缩后的结果。
具体地,数据预处理单元12的特征为:支持以下控制和运算的操作:
(1)外部设备将数据送入存储单元11的同时,也将数据的类型(例如混合类型或单一精度浮点数类型等)告知控制单元14,控制单元14接受外部装置的数据类型消息并指示数据预处理单元12。若控制单元14向数据预处理单元12输出第一控制信号,指示输入为浮点数和整数的组合,则数据预处理单元12需对整数进行转换,通过前导零检测器123进行检测前导零的数量,利用移位器124和加法器125分别生成规格化浮点数的尾数部分和指数部分,再送入运算单元13。
(2)数据预处理单元12接收输入数据后,可以利用比较器122对输入数据进行判断,比较器122内部预存有预设规则,该预设规则定义有输入数据为0,无穷(Inf)或非数(NaN)其中之一或其组合与对应的输出数据的映射关系。该比较器122在接收到输入数据后,会将输入数据与预设规则中的目标数据,包括0,无穷(Inf)和非数(NaN)进行比较,若输入为0,无穷(Inf)或非数(NaN),则代替运算单元13直接产生与输入数据对应的0,无穷或非数结果,并通过输出选择器126向运算单元13输出乘加器控制信号,以提前关闭相应的运算单元13,若输入不是0,无穷(Inf)或非数(NaN),则输出一个信号到输出选择器126,以使得输出选择器126可以将输入数据或经过其他单元进行格式转换后的数据进行输出。
(3)若控制单元14向数据预处理单元12输出第二控制信号,指示输入为单精度浮点数,则数据预处理单元12需要将尾数部分进行压缩送入运算单元13,压缩的方式可以由控制单元14选择,包括但不限于保留尾数的高位部分或低位部分等。由比较器122和加法器125计算尾数和指数之后,由输出选择器126完成数据压缩并输出相应结果。
另外,根据需要,可以将数据预处理单元12的功能拆散部分或全部的置入运算单元13。此外,数据预处理单元12的格式转换、格式压缩、数据判断还能实现节能的相关功能。
在实际应用中,比较器122和加法器125在数据预处理单元12中的部署位置和部署数量并不做限定,可根据实际需求进行调整。示例性地,请参见图3-图5是本发明实施例提供的另外三种数据预处理单元12的结构示意图。
如图3所示的数据预处理单元12包括输入选择器121、第一比较器1221、前导零检测器123、移位器124、第一加法器1251和输出选择器126。关于数据预处理单元12涉及的各部件具体可参照图2所述实施例中的相关阐述,这里不再赘述。其中,
第一加法器1251用于计算预处理后数据的指数部分。具体的,在输入数据包括整数和浮点数在内的混合类型数据时,可根据前导零检测器123计算的前导零的数量计算出整数的指数偏移量,从而获得该整数的指数部分。
移位器124用于对输入数据进行移位处理,以得到预处理后数据的尾数部分。具体的,在移位器124接收到混合类型数据时,根据前导零的数量对混合类型数据中每个整数或该整数的补码进行移位,以得到该整数的尾数部分。
输出选择器126用于输出预处理后数据。具体的,在输入数据为混合类型数据时,对于第一数据中同一整数而言,输出选择器123可分别接收来自第一加法器1251输出的该整数的指数部分和来自移位器输出的该整数的尾数部分,并将两部分整合为浮点数,以替换该整数,然后将替换的浮点数和原混合类型数据中的第二数据一起作为第一结果,即预处理后数据。
可选地,当乘加器10还包括第一比较器1221时。第一比较器1221可用于比较给定数据中任意两个数据项是否相等,该给定数据可为系统或用户自定义所需比较的数据,例如第一比较器1221可比较输入数据中任意至少两个数据项是否相等。第一比较器1221还可接收输入选择器121输入的输入数据的指数部分和尾数部分,与设定的无需运算数据标准进行比较,以将其与设定无需运算数据标准进行比较,将符合标准的输入数据确定为无需运算数据。其中,无需运算数据标准为系统自定义设置的标准,例如用于识别0、非数和无穷中任一种或多种的标准等。在确定输入数据为无需运算数据后,可通过预设运算规则处理该无需运算数据以得到处理结果,然后将无需运算数据的处理结果作为第二结果,送入输出选择器126作为乘加器的运算结果输出。同时,通过输出选择器126向运算单元输出运算单元的休眠信号,以使运算单元进入休眠。
在实际应用中,运算单元进入休眠的具体实施方式并不做限定。示例性地,计算设备(具体可为运算单元)可采用如下任一种或多种方式来使运算单元进入休眠:降电压、时钟门控、数据门控或其他用于控制运算单元进入休眠的手段方式等。这样可避免运算单元耗电,从而达到节能的目的。
如图4示出另一种数据预处理单元12的结构示意图。如图4所示的数据预处理单元12包括输入选择器121、前导零检测器123、移位器124、第一加法器1251、输出选择器126、第二比较器1222以及第二加法器1252。关于数据预处理单元12中涉及的各部件具体可参见前述图2所示实施例中的相关阐述。其中,
在输入数据为混合类型数据时,第二比较器1222可用于比较第一数据中每个整数的符号位的具体数值,以确定每个整数是否为正。例如第二比较器1222识别到整数的符号位为1,则表示该整数为负数。反之,在识别到整数的符号位为0,则表示该整数为正数。
进一步,当第二比较器1222识别出第一数据中的正数后,可将第一数据中所有的正数送入到前导零检测器123中进行处理,以计算这些正整数的前导零的数量。当第二比较器1222识别出第一数据中的负数后,可将第一数据中所有的负数送入第二加法器1252中。相应地,第二加法器1252用于接收第一数据中所有的负数,并计算每个负数各自的二进制补码以对应替换该负数,同时保持其他数据不变,从而形成新的输入数据送入前导零检测器中进行处理。
如图5示出另一种数据预处理单元12的结构示意图。如图5所示的数据预处理单元12包括输入选择器121、前导零检测器123、移位器124、第一加法器1251、输出选择器126、检测器127以及第三加法器128。关于本发明实施例中数据预处理单元12中的各部件具体可参见前述图2所述实施例中的相关阐述,这里不再赘述。其中,检测器127和压缩器128可用于处理第一结果。具体的,
检测器127用于将第一结果中所有尾数位数超过设定阈值的单精度浮点数检测出来,以作为待压缩浮点数。换句话说,检测器127可从第一结果中检出高位宽的浮点数作为待压缩浮点数,以将该待压缩浮点数输出到第三加法器128中处理。在实际应用中,检测器127的具体实施不做限定,例如其可为数据预处理单元12中内部的比较器,也可为独立于计算设备的外部控制器等。
第三加法器128用于根据检测器127输出待压缩浮点数超出设定阈值部分的前m或后m位,对待压缩浮点数进行舍入处理和/或归一化处理,并将处理后浮点数送入输出选择器126,以通过输出选择器126对应将处理后浮点数的前m位或后m位约掉(去掉)得到压缩后的浮点数,进而将该压缩后的浮点数作为第三结果输出到运算单元13。其中,m为系统自定义设置的正整数。且舍入处理和归一化处理仅为压缩处理的两种具体实施方式,本申请仅以此举例说明,并不构成限定。舍入处理是指按照一定的规则去掉数据中的部分数据,并对剩余部分进行调整,以接近原数据。实际应用中,该舍入处理包括但不限于向偶数舍入、截断舍入、向零舍入、向上舍入以及向下舍入等。
下面阐述运算单元13涉及的相关实施例。请参见图6,是本发明实施例提供的一种运算单元13的结构示意图。如图6所示的运算单元13中包括级联的向量乘法器131(图示为乘法器)、向量加法器132(图示为加法器)和寄存器133,用于接收来自数据预处理单元12的数据,并利用向量乘法器131和向量加法器132对数据预处理单元12的数据进行乘加运算,以得到输入数据的乘加结果。
具体地,运算单元13包括多组并行的向量乘法器131,用于接收数据预处理单元12预处理后数据,进行乘法运算,并将乘法结果送入由向量加法器132构成的加法树中;加法树包括多个输入端和一个输出端,输入端包括内部输入端和外部输入端,其中内部输入端连接向量乘法器131,外部输入端连接外部输入设备或运算单元13的输出端,用于接收向量乘法器131的乘积结果和外部输入设备或运算单元13的输出端输入的加数,进行并行相加,生成最终的乘加结果,并通过输出端进行输出。其中,该外部输入端为一个可选的加法输入端,其可以接受一个立即数输入,或是与运算单元13自身或其他运算单元级连,实现横向扩展。
根据需要,可以在运算单元13内插入流水线寄存器133,将设计流水线化,以提高装置的工作频率和吞吐量。进一步,寄存器可以设置在本装置的其他单元或者单元之间,进一步提高工作效率和吞吐量。
具体地,运算单元13的特征为:支持单通道浮点数或双通道整数格式的乘加运算,输入是两个向量,输出是两个向量的内积。另可以有一个可选的加法输入,具体地,可以接受一个外部参数(例如立即数)输入,或是与运算单元13自身或其他运算单元级连,实现横向扩展。其中,输入向量的每个元素可以是一个压缩格式的单精度浮点数,或是两个较低位宽的整数,输出是一个标准的单精度浮点数,或是两个较高位宽的整数。以上提到的浮点数包含符号位、指数和尾数;若为整数,则可以是有符号整数或无符号整数。其中,输入数据的类型可以根据控制单元14输入的控制信号确定。
请参见图7,是本发明实施例提供的一种可能的向量乘法器131的结构示意图。如图7所示的向量乘法器131包括乘法输入选择器1311、一个异或器1312、两个内置乘法器1313和一个内置加法器1314和乘法输出选择器1315;
其中,乘法输入选择器1311的输出端连接异或器1312、内置乘法器1313和内置加法器1314的输入端,异或器1312、内置乘法器1313和内置加法器1314连接输出选择器1315的输入端;
乘法输入选择器1311,用于接收数据预处理单元12预处理后数据,并在数据为两组整数的情况下,向两个内置乘法器1313分别输入一组整数。在数据为一组浮点数的情况下,向两个内置乘法器1313中的一个输入浮点数的尾数,并将浮点数的指数输入内置加法器1314;可选地,这里仅以两组整数(即两对整数,每对整数中包括有两个整数)和一组浮点数(即一对浮点数,包括两个浮点数)为例,在实际应用中整数对和浮点数对数并不做限定。例如在预处理后数据为2N对整数时,可向2N个内置乘法器分别输入一对整数进行处理,该2N个内置乘法器和2N对整数是一一对应的关系。在数据为N对压缩后浮点数时,将一对压缩后浮点数中两个浮点数的尾数部分分别输入一个内置乘法器,并将相应浮点数的指数部分输入一个内置加法器中运算,然后将剩余N-1对浮点数的尾数部分和指数部分分别输入剩余N-1个向量乘法器中的N-1个所述内置乘法器和N-1个内置加法器以进行运算。
异或器1312,用于获取符号位;
内置乘法器1313,用于将乘法输入选择器1311输入的数据作为乘数,进行乘法运算,将乘法运算结果输出至乘法输出选择器1315;
内置加法器1314,用于将乘法输入选择器1311输入的数据作为加数,进行加法运算,将加法运算结果输出至乘法输出选择器1315;
乘法输出选择器1315,用于对接收的乘法运算结果和加法运算结果进行整合,得到乘积结果,并输出乘积结果。
向量乘法器131的特征为:支持单通道浮点数或双通道整数格式的乘法运算。若输入为两组整数,则选择两个内置乘法器1313并行产生两个乘法结果。若输入为浮点数m×2x,则根据浮点数乘法运算法则:
Figure BDA0002082632410000121
采用一个内置乘法器1313完成尾数m的相乘,采用内置加法器1314进行指数x的相加,最终由输出选择将结果整合。向量乘法器131的具体实施可根据性能、功耗、面积等约束选用进位保留加法器和/或BoothWallace等。
另外,可以理解的是,在上述向量乘法器131中都包含了控制信号,根据控制信号的指示选择浮点数或者整数的规则进行乘法的运算,从而实现了多种类型输入的乘加计算。
区别于现有技术的情况,在现有方案的乘法器中,类似于单通道浮点数乘法和双通道整数乘法的实现方式包含由多组较小的乘法器分别完成输入的高位和低位,再由加法树将部分积压缩得到最终结果的过程。而在本申请中的向量乘法器131并无这样的部分积压缩的过程,这是因为数据预处理单元12将单通道乘法的输入进行了压缩,使其仅需要一个较小的向量乘法器131即可完成。
进一步请参见图8,是本发明实施例提供的一种可能的向量加法器132的结构示意图。如图8所示的向量加法器132包括加法输入选择器1321、加法比较器1322、至少一个向右移位器1323、两个内置加法树1324、进位控制器1325和加法输出选择器1326;
其中,加法输入选择器1321的输出端连接加法比较器1322、向右移位器1323、内置加法树1324,加法比较器1322的输出端连接向右移位器1323和加法输出选择器1326,向右移位器1323的输出端连接内置加法树1324的输入端,内置加法树1324的输出端连接加法输出选择器1326,进位控制器1325连接两个内置加法树1324;
加法输入选择器1321用于接收向量乘法器131的乘法结果,并根据乘法结果的数据类型,将乘法结果输入加法比较器1322、至少一个向右移位器1323、两个内置加法树1324中至少一个器件;
加法比较器1322,用于在乘法结果为浮点数的情况下,对浮点数的指数进行比较,得到最大指数;
向右移位器1323,用于根据最大指数至少对浮点数的尾数进行移位;
两个内置加法树1324,通过进位控制器1325连接,内置加法树1324用于对乘法结果进行加法运算,得到加法运算结果;其中,在乘加结果为浮点数的情况下,对浮点数的尾数进行加法运算;
进位控制器1325,用于控制进位;
加法输出选择器1326,用于接收加法比较器1322、内置加法树1324的输出结果,并对输出结果进行整合,得到乘加结果,并输出乘加结果。
向量加法器132的特征为:支持单通道浮点数或双通道整数格式的加法运算,支持多输入并行相加。其中,两个内置加法树1324可以并行完成两组整数加法,也可以通过进位控制器1325相连,组合完成浮点数尾数的加法。若输入为浮点数m×2x,则根据浮点数加法运算法则:
Figure BDA0002082632410000131
还需要将至少一个尾数m右移,再将所有尾数送入内置加法树1325相加,最终由输出选择将结果整合。向量加法器132的具体实施可根据性能、功耗、面积等约束选用行波进位加法器级连和/或Wallace树等。
另外,可以理解的是,在上述向量加法器132中都包含了控制信号,根据控制信号的指示选择浮点数或者整数的规则进行加法的运算,从而实现了多种类型输入的乘加计算。
区别于现有技术的情况,在现有方案的加法器中,每一个浮点数输入均有一个对应的向右移位器,根据指数偏移量进行尾数的移位。而本申请中的向量加法器132选取了指数最大的浮点数后,其尾数无需移位操作,节省一个移位器装置的面积和功耗。
在现有方案的各种专用集成电路(ASIC)中,为了实现多输入乘加运算,往往采用两两相乘累加再移位的操作,并将此操作重复多次。以上所述操作的实质是多次迭代,操作的延迟较大,而为了支持不同位宽的运算,也因为运算单元的限制,例如同一个运算单元同一时间只能完成一个乘加操作,而无法充分利用带宽。
区别于现有技术的情况,本申请乘加器装置支持浮点数与浮点数,浮点数与整数,或是整数与整数的组合,乘加操作高度并行,并且有横向扩展的灵活性。运算单元13带有可选的加法输入及其流水线寄存器133使得在横向扩展的同时保证装置的工作频率。若实现同样的扩展,迭代的方案必然会导致延迟的增加,而不含流水线寄存器133的并行扩展方案则导致加法成为瓶颈。
进一步,本申请提供的乘加器装置可以动态支持不同格式、不同位宽、不同组合的输入,不仅通过高度并行和流水线化的设计提高了运算效率,减小了乘加运算的延迟,还通过复用运算单元的思想进一步提高了较低位宽输入的带宽,提高了利用本装置的灵活性,使得开发人员可以在不同场景下进行精读和效率的取舍。同时,数据预处理单元12将格式转换功能从每个运算单元13中分离出来,对输入数据进行预判断,以及对单精度浮点数尾数的压缩处理,极大地减小了每个运算单元13的逻辑复杂度和布局布线的复杂度,改善了性能、面积和尤其是稀疏矩阵运算的功耗。
为帮助更好地理解本发明实施例,下面提出了使用乘加器10进行乘加运算的具体实施例。具体的,以下以8输入乘加为例,乘加的输入为8x16位,输出是32位:
外部设备将输入数据送入存储单元11的同时,应当将输入数据的类型告知控制单元14,控制单元14接受外部设备的数据类型消息并指示数据预处理单元12。控制单元14将存储单元11的待运算数据送入数据预处理单元12。如果输入是浮点数和整数的组合,则将8位整数转换成16位压缩格式的单精度浮点数。整数转换成浮点数的过程,即为整数以科学计数法表记为m×2x的过程。以有符号整数-24为例,其二进制表示是(11101000),其转换过程如下:
1.输入选择器121判断到符号位为1,表示此数为负数,需要将其送至加法器125求出其二进制补码(00011000),否则不需要求二进制补码。
2.利用前导零检测器123求出其指数和尾数。指数部分:前导零的数量为3,可用加法器125得出此数的数量级为2的(7–3=4)次方。注意到浮点数指数的标记含偏移量127,这个浮点数的指数部分应当为(127+4=131),表示为8位无符号整数(10000011)。尾数部分:移位器124将此数左移3位可以得到1开头的有效数字(11000000),即整数部分为1,尾数部分为其后的(1000000)。
3.输出选择器126将符号,指数和尾数整合,输出的16位压缩格式的单精度浮点数应当为(1100000111000000)。
另一方面,如果输入是0,输入数据的16位为全0,比较器122可以进行判断得知该输入为0,根据运算法则可将乘法结果直接置为0,向量乘法器131置入休眠模式以节省功耗,可以通过时钟门控或是数据门控等来做到节能。如果输入是无穷(Inf)或非数(NaN),其特征为指数部分为全1,无穷的尾数部分为全0,非数的尾数部分不为全0,输入选择器121可以分别将指数部分和尾数部分送入比较器122进行判断,从而得知输入是否有效,进一步将向量加法器132置入休眠模式以节省功耗。例如以下情形都无需经过实际运算即可得到计算结果:
1、有限数或零乘以零得零;
2、有限数或无穷乘以无穷得无穷;
3、零乘以无穷得非数;
4、零加零得零;
5、正无穷加正无穷得正无穷;
6、负无穷加负无穷得负无穷;
7、正无穷加负无穷得非数;
8、非数参与的运算得到非数。
另一方面,如果输入是32位单精度浮点数,则将尾数部分进行压缩,而指数部分保持不变,保留了原单精度浮点数的表示范围。压缩的方式包括但不限于保留尾数的高位部分或低位部分等,由输出选择器126完成并输出。保留尾数高位部分的方式包括但不限于向偶数舍入、向零舍入、向下舍入、向上舍入等。保留尾数低位部分的方式是截去尾数的高位,再将其重新归一化。若截去输入尾数的高位中相等的部分,则压缩后的输入仍保持相对不变。通过任意一种方式将尾数从24位压缩至8位,则之后的浮点数乘法的尾数相乘将由24位x24位变为8位x8位,运算复杂度大大降低。
运算单元13按照指示,完成一组8个压缩成16位的单精度浮点数的乘加,或是两组8个8位整数的乘加。由于乘法的特性,以及浮点数加法移位的特性,结果的有效数字自然增加。乘加的结果是一个32位的单精度浮点数,或是两个16位整数。
其中乘法计算的情况如下:
(1)若输入是一对16位浮点数,则由乘法输入选择器1311分离1位符号、8位指数和7位尾数部分,符号通过异或器1312求得,尾数的乘法利用一组8位内置乘法器1313完成,指数的加法利用一组内置加法器1314完成,由乘法输出选择器1315将结果整合成一个1位符号、8位指数、23位尾数的单精度浮点数并输出。
(2)若输入是两对8位整数,则可将输入和输出视为两个通道,利用乘法输入选择器1311将2对8位整数从2个16位输入中分离出来,分别送入两个8位内置乘法器1313得到两个16位乘积,再将两个16位乘积由乘法输出选择器1315组装成一个32位的结果。注意到利用2n位总线输入输出两个n位数的方式不限,可以根据时序或者布局布线等具体需要,将高n位和低n位分别放置两个数,或是以交错的方式以奇数位放置一个数,偶数位放置另一个数等等。此外,这两个通道可以分别由数据预处理单元12控制,分别或同时置入节能模式。
加法运算的情况如下:
浮点数的加法的实现以1×25+1×23为例,用加法比较器1322比较所有输入的指数部分,找到指数最大的输入,此处为1×25,其指数为5。进一步,分别处理其余的输入,算出指数的偏移量,利用向右移位器1323将尾数相应右移。此处仅有1个其余输入1×23,求出其指数偏移量为(5–3=2),用向右移位器1323将尾数右移2位,得到类似0.01×25的形式,用内置加法树1324进行尾数部分加法,得到1.01×25
整数的加法的实施类似整数的乘法此处不再赘述。类似地,两个加法树单元组可以分别由数据预处理单元12控制,分别或同时置入节能模式。
此外,本申请的乘加器采用管线化设计,用16纳米工艺库进行综合,时钟频率为1.5GHz,延迟仅为4个时钟周期,其中乘法为1个时钟周期,加法为3个时钟周期,得到的面积是3296平方微米,功耗4.72毫瓦。倘若移除双通道8位整数乘加的支持,得到的面积也需要2925平方微米,可见新设计以很小的面积代价实现了吞吐率的提升和带宽的有效利用。
此外本发明实施例还提出了一种对应于乘加器10的乘加方法:对输入数据进行预处理,并将预处理后数据送入运算单元,其中预处理包括数值判断、格式转换和格式压缩中的至少一种,利用运算单元的向量乘法器和向量加法器对处理后的数据进行乘加运算,以得到输入数据的乘加结果。
请参见图9,是本发明实施例提供的一种向量乘加运算方法的流程示意图。如图9所示的方法包括如下实施步骤:
S901、控制单元将指令传输给存储单元、数据预处理单元和运算单元。
S902、存储单元根据控制单元的指令,将待运算数据送入数据预处理单元。
S903、数据预处理单元根据控制单元的指令,将数据进行预处理,其中数据预处理包括数值判断、格式转换和格式压缩中的至少一种。
S904、数据预处理单元判断数据是无效数据(即无需运算数据,至少包括0、无穷、非数中的一项)。
S905、当数据不为无效数据时,运算单元根据控制单元的指令,利用向量乘法器和向量加法器对处理后的数据进行乘加运算,并执行步骤S906最终运算单元将结果送回存储单元进行存储。
S906、运算单元获得计算结果,并将结果送回存储单元。
在数据为无效数据时,运算单元可直接获得计算结果,并将计算结果送回存储单元进行存储。
图9仅为基于乘加器10的一种示意乘加运算方法的流程图。在实际应用中,乘加器10可参照前述图1-图8所述实施例中的描述,各部件可对应执行相关实施例中描述的技术内容,以获得新的乘加运算方法,并不限定。
请参见图10,是本发明实施例提供的一种向量乘加运算的处理设备的结构示意图。如图10所示的处理设备100包括一个或多个处理器101、通信接口102和存储器103,处理器101、通信接口102和存储器103可通过总线方式连接,也可通过无线传输等其他手段实现通信。本发明实施例以通过总线104连接为例其中,该存储器103用于存储指令,该处理器101用于执行该存储器103存储的指令。该存储器103存储程序代码,且处理器301可以调用存储器103中存储的程序代码实现如上乘加器10的相关功能,具体可参见前述图1-图9所述实施例中的相关阐述,这里不再赘述。
应当理解,在本发明实施例中,所称处理器101可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
通信接口102可以为有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他模块或装置设备进行通信。例如,本申请实施例中通信接口102具体可用于接收用户输入的输入数据;或者接收外部设备的数据等。
存储器103可以包括易失性存储器(Volatile Memory),例如随机存取存储器(Random Access Memory,RAM);存储器也可以包括非易失性存储器(Non-VolatileMemory),例如只读存储器(Read-Only Memory,ROM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);存储器还可以包括上述种类的存储器的组合。存储器可用于存储一组程序代码,以便于处理器调用存储器中存储的程序代码以实现如上乘加器10的相关功能。
需要说明的,图10仅仅是本发明实施例的一种可能的实现方式,实际应用中,处理设备还可以包括更多或更少的部件,这里不作限制。关于本发明实施例中未示出或未描述的内容,可参见前述方法实施例中的相关阐述,这里不再赘述。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在处理器上运行时,图9所示的方法流程得以实现。
本发明实施例还提供一种计算机程序产品,当所述计算机程序产品在处理器上运行时,图9实施例中所示的方法流程得以实现。
所述计算机可读存储介质可以是前述任一实施例所述的客户端的内部存储单元,例如客户端的硬盘或内存。所述计算机可读存储介质也可以是所述客户端的外部存储设备,例如所述客户端上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述计算机可读存储介质还可以既包括处理设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述客户端所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端设备和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (13)

1.一种乘加器,包括运算单元,其特征在于,还包括数据预处理单元和控制单元,所述运算单元包括向量乘法器和向量加法器,所述运算单元的输入端连接所述数据预处理单元的输出端,用于接收来自所述数据预处理单元的数据,并利用所述向量乘法器和向量加法器对所述数据预处理单元的数据进行乘加运算以得到对应的乘加结果;所述运算单元和所述数据预处理单元之间插入有流水线寄存器;所述运算单元内插入有流水线寄存器;
所述数据预处理单元接收未处理数据,用于对所述未处理数据中的混合类型数据进行数据格式标准化预处理和对所述未处理数据进行数值判断预处理,所述数据格式标准化预处理是将混合类型数据中的整数转化为浮点数以得到直接用于所述乘加运算的数据;所述控制单元连接所述运算单元和所述数据预处理单元,所述控制单元用于控制所述数据预处理单元,在所述未处理数据为混合类型数据的情况下,向所述数据预处理单元输出第一控制信号,指示所述数据预处理单元进行数据格式标准化预处理,所述控制单元用于根据输入数据类型控制所述运算单元按照浮点数或者整数运算法则进行相应操作;
所述未处理数据包括单一类型数据或混合类型数据,所述单一类型数据只包括第一数据或只包括第二数据,所述混合类型数据包括至少一个第一数据和至少一个第二数据,所述第一数据包括至少一个整数且全部为整数,所述第二数据包括至少一个浮点数且全部为浮点数;
所述数据预处理单元包括输入选择器、前导零检测器、第一加法器、移位器、输出选择器和第一比较器,其中所述输入选择器的输出端连接所述前导零检测器的输入端,所述前导零检测器的输出端连接所述移位器和所述第一加法器的输入端,所述第一加法器的输出端连接所述输出选择器的输入端,所述移位器的输出端连接所述输出选择器的输入端;
所述输入选择器,用于接收所述未处理数据和所述控制单元输出的控制信号,并根据所述输入数据的类型和所述控制信号的类型将所述未处理数据中的至少一种数据或该数据中的至少一个域,输入所述前导零检测器、所述移位器和所述第一加法器中至少一个器件;
所述前导零检测器,用于在接收到混合类型数据的情况下,检测混合类型数据中每一个整数或其对应补码的前导零的数量;
所述第一加法器,用于计算预处理后数据的指数部分,其中在所述未处理数据仅包括混合类型数据的情况下,根据所述前导零的数量计算出每一个整数的指数偏移量,以得到该整数的指数部分;
所述移位器,用于对所述未处理数据进行移位处理,以得到预处理后数据的尾数部分,在接收到混合类型数据的情况下,根据前导零的数量对所述混合类型数据中每一个整数或其对应补码进行移位,以得到该整数的尾数部分;
所述第一比较器,用于对两个或多个数据项进行比较,以确定它们是否相等;当用于判断所述未处理数据是否为无需运算数据时,通过所述输入选择器分别输入所述未处理数据的指数部分和尾数部分,并与设定的无需运算数据标准进行比较,将符合标准的未处理数据确定为无需运算数据,通过预设的运算规则处理所述无需运算数据得到处理结果,然后将所述无需运算数据的处理结果作为第二结果送入所述输出选择器并同时将所述运算单元的休眠信号送入所述输出选择器;
所述输出选择器,用于输出预处理后数据,其中在所述未处理数据仅包括混合类型数据的情况下,对于所述第一数据中同一整数分别接收由所述第一加法器输出的所述整数的指数部分和所述移位器输出的所述整数的尾数部分,将两部分整合为浮点数并对应替换所述整数,以将完成替换的数据作为第一结果;将所述第二结果作为所述乘加器的运算结果输出,同时向所述运算单元输出所述运算单元的休眠信号,以使所述运算单元进入休眠。
2.根据权利要求1所述的乘加器,其特征在于,所述无需运算数据至少包括0,非数和无穷中的一种。
3.根据权利要求1所述的乘加器,其特征在于,所述数据预处理单元还包括第二比较器和第二加法器,用于计算所述第一数据中负数部分每一项数据的二进制补码;
所述第二比较器的输入端和所述输入选择器的输出端相连,所述第二加法器的输入端与所述第二比较器的输出端相连,所述第二加法器的输出端与所述前导零检测器的输入端相连;
所述第二比较器,用于通过比较所述第一数据中每个整数的符号位的具体数值,以确定所述每个整数是否为正,将所述第一数据中的所有正数送入所述前导零检测器进行处理,并将所述第一数据中的所有负数送入所述第二加法器;
所述第二加法器,用于接收所述第一数据中的所有负数,计算出其二进制补码并替换对应的所述负数,同时保持所有其他数据不变,形成新的输入数据送入所述前导零检测器进行处理。
4.根据权利要求1所述的乘加器,其特征在于,所述数据预处理单元还包括检测器和第三加法器,用于处理所述第一结果;所述控制单元在所述输入数据为单精度浮点数的情况下,还向所述数据预处理单元输出第二控制信号,指示所述数据预处理单元进行数据压缩操作;
所述检测器的输入端连接所述输入选择器的输出端或外部数据传输设备的输出端,所述检测器的输出端连接所述第三加法器的输入端,所述第三加法器的输出端连接所述输出选择器的输入端;
所述检测器,用于将所述第一结果中所有尾数位数超过设定阈值的单精度浮点数检出作为待压缩浮点数,并将所述待压缩浮点数输出到所述第三加法器;
所述第三加法器,用于根据所述检测器输出所述待压缩浮点数超出设定阈值部分的前m位或者后m位,将所述待压缩浮点数进行舍入处理和/或归一化处理,并将处理后浮点数送入所述输出选择器;
所述输出选择器,还用于将所述处理后浮点数约掉前m位或后m位得到压缩后的浮点数,然后将所述压缩后的浮点数作为第三结果输出到所述运算单元。
5.根据权利要求1-4中任一项所述的乘加器,其特征在于,所述数据预处理单元独立于所述运算单元部署,或者所述数据预处理单元作为所述运算单元的前处理部分与所述运算单元一体集成。
6.根据权利要求1-4中任一项所述的乘加器,其特征在于,所述运算单元包括:
多组并行的向量乘法器,用于接收所述数据预处理单元的预处理后数据,对所述预处理后数据进行乘法运算,并将乘法结果送入由所述向量加法器构成的加法树中;
所述加法树包括多个输入端和一个输出端,所述输入端包括内部输入端和外部输入端,其中所述内部输入端连接所述向量乘法器,所述外部输入端连接外部输入设备或所述运算单元的输出端,用于接收所述向量乘法器的乘积结果和所述外部输入设备或所述运算单元的输出端输入的加数,以进行并行相加,生成最终的乘加结果,并通过所述运算单元的输出端进行输出;其中,所述外部输入端为一个可选的加法输入端,支持接收一个外部参数输入,或是与所述运算单元自身或其他运算单元级连,实现横向扩展。
7.根据权利要求4所述的乘加器,其特征在于,所述运算单元包括若干个所述向量乘法器,所述向量乘法器包括乘法输入选择器、一个异或器、一个内置加法器、两个内置乘法器和乘法输出选择器;其中,所述乘法输入选择器的输出端连接所述异或器,所述内置加法器和所述内置乘法器的输入端,所述异或器、内置加法器和所述内置乘法器连接所述输出选择器的输入端;
所述乘法输入选择器,用于接收所述数据预处理单元的预处理后数据,并在所述预处理后数据为2N对整数的情况下,向2N个内置乘法器分别输入一对整数,所述2N个内置乘法器和所述2N对整数一一对应;或者,在所述预处理后数据为N对压缩后浮点数的情况下,将一对压缩后浮点数中两个浮点数的尾数部分分别输入一个所述内置乘法器,并将相应浮点数的指数部分输入一个所述内置加法器,然后将剩余N-1对浮点数的尾数部分和指数部分分别输入剩余N-1个向量乘法器中的N-1个所述内置乘法器和N-1个所述内置加法器;
所述异或器,用于获取符号位;
所述内置乘法器,用于将所述乘法输入选择器输入的数据作为乘数,进行乘法运算,将乘法运算结果输出至所述乘法输出选择器;
所述内置加法器,用于将所述乘法输入选择器输入的数据作为加数,进行加法运算,将加法运算结果输出至所述乘法输出选择器;
所述乘法输出选择器,用于对接收的所述乘法运算结果和所述加法运算结果进行整合得到乘积结果,并输出所述乘积结果。
8.一种向量乘加运算的预处理方法,提供有未处理数据,将所述未处理数据进行预处理并用于乘加运算,所述未处理数据包括单一类型数据和混合类型数据,所述单一类型数据只包括第一数据或只包括第二数据,所述混合类型数据包括至少一个第一数据和至少一个第二数据,所述第一数据包括至少一个整数且全部为整数,所述第二数据包括至少一个浮点数且全部为浮点数;其特征在于,提供包括前导零检测器、第一加法器、移位器和输出选择器的数据预处理单元,所述方法包括以下步骤:
(101)将所述未处理数据分割为指数部分和尾数部分,分别对分割的指数部分和尾数部分进行解析,判断出所述未处理数据的可运算性;若所述未处理数据为无需运算数据时,则直接输出预设的第二结果作为乘加器的运算结果,并在判断出所述未处理数据为无需运算数据时,生成休眠信号使负责乘加运算的运算单元进入休眠;所述运算单元和所述数据预处理单元之间插入有流水线寄存器;所述运算单元内插入有流水线寄存器;
(102)若所述未处理数据为混合类型数据,则使用所述前导零检测器检查混合类型数据中每一个整数或其对应补码的前导零数量,然后使用所述第一加法器通过前导零的数量分别计算出所述第一数据的每个整数中的指数部分,并通过所述移位器根据所述前导零的数量对所述第一数据的每个整数进行移位得到尾数部分,之后使用所述输出选择器将所述第一数据中每个整数的指数部分和尾数部分整合为浮点数并对应替换原整数,将替换了原整数的浮点数与所述混合类型数据中已有的所述第二数据一起作为第一结果;
若所述未处理数据只包括所述第一数据或只包括所述第二数据,则直接将所述未处理数据作为第一结果。
9.根据权利要求8所述的方法,其特征在于,所述无需运算数据至少包括0,非数和无穷中的一种。
10.根据权利要求8所述的方法,其特征在于,还提供第二比较器和第二加法器,所述步骤(102)之前,还包括步骤(103):所述未处理数据包括第一数据时,使用所述第二比较器先检测出所述第一数据中每个整数的符号位的具体数值,以确定所述每个整数是否为正数;若第二比较器检测到任意整数为负数,则将所述第一数据中的负数送入所述第二加法器中,然后使用所述第二加法器计算所述负数的二进制补码并替换所述负数,并保持所有其他数据不变,形成新的输入数据用于替代步骤(102)中的所述未处理数据作为输入数据送入所述前导零检测器中;若第二比较器检测到所述第一数据中每个整数均为正数,则直接将其作为步骤(102)的所述未处理数据。
11.根据权利要求9所述的方法,其特征在于,所述数据预处理方法的步骤(102)中的第二结果,还进行以下后处理:
(104)若所述第二结果中任何单精度浮点数的位数超过设定阈值时,则将其作为待压缩浮点数,以设定阈值为标准,根据所述待压缩浮点数超出设定阈值部分的前m位或后n位,将所述待压缩浮点数进行舍入处理和/或归一化处理,以将处理后浮点数约掉前m位或后m位得到压缩后的浮点数,将压缩后的浮点数作为第三结果送入输出选择器,其中使用压缩后的浮点数作为第三结果用于乘加运算。
12.一种向量乘加运算的处理设备,包括存储器和处理器,所述存储器中存储了可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求8至11任一项所述向量乘加运算的预处理方法的步骤。
13.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上权利要求8至11中任一项所述向量乘加运算的预处理方法的步骤。
CN201910479604.1A 2019-06-03 2019-06-03 向量乘加运算的预处理方法、乘加器及计算机可读介质 Active CN110221808B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910479604.1A CN110221808B (zh) 2019-06-03 2019-06-03 向量乘加运算的预处理方法、乘加器及计算机可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910479604.1A CN110221808B (zh) 2019-06-03 2019-06-03 向量乘加运算的预处理方法、乘加器及计算机可读介质

Publications (2)

Publication Number Publication Date
CN110221808A CN110221808A (zh) 2019-09-10
CN110221808B true CN110221808B (zh) 2020-10-09

Family

ID=67819540

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910479604.1A Active CN110221808B (zh) 2019-06-03 2019-06-03 向量乘加运算的预处理方法、乘加器及计算机可读介质

Country Status (1)

Country Link
CN (1) CN110221808B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111290732B (zh) * 2020-03-03 2023-03-14 南京大学 基于posit数据格式的浮点数乘法运算电路
CN113767362B (zh) * 2020-04-01 2024-05-17 华为技术有限公司 一种多模融合乘法器
CN112163185B (zh) * 2020-09-30 2023-11-28 中国科学院计算技术研究所 Fft/ifft运算装置及基于该装置的fft/ifft运算方法
WO2022088157A1 (zh) * 2020-10-31 2022-05-05 华为技术有限公司 一种浮点数计算电路以及浮点数计算方法
CN112506468B (zh) * 2020-12-09 2023-04-28 上海交通大学 支持高吞吐多精度乘法运算的risc-v通用处理器
CN112558918B (zh) * 2020-12-11 2022-05-27 北京百度网讯科技有限公司 用于神经网络的乘加运算方法和装置
CN112801276B (zh) * 2021-02-08 2022-12-02 清华大学 数据处理方法、处理器及电子设备
CN112835551B (zh) * 2021-03-09 2022-06-28 上海壁仞智能科技有限公司 用于处理单元的数据处理方法、电子设备和计算机可读存储介质
CN112988112B (zh) * 2021-04-27 2021-08-10 北京壁仞科技开发有限公司 点积计算装置
CN113222132B (zh) * 2021-05-22 2023-04-18 上海阵量智能科技有限公司 乘法器、数据处理方法、芯片、计算机设备及存储介质
CN113746471B (zh) * 2021-09-10 2024-05-07 中科寒武纪科技股份有限公司 运算电路、芯片和板卡
CN115756384B (zh) * 2022-11-22 2024-05-17 海光信息技术股份有限公司 张量计算单元及使用方法、数据处理装置及操作方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5944773A (en) * 1997-06-25 1999-08-31 Sun Microsystems, Inc. Floating-point multiplier circuit for generating the sticky-bit from the input operands
US7895250B2 (en) * 2005-05-25 2011-02-22 Qualcomm Incorporated Fixed point integer division techniques for AC/DC prediction in video coding devices
US8862650B2 (en) * 2010-06-25 2014-10-14 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US9092213B2 (en) * 2010-09-24 2015-07-28 Intel Corporation Functional unit for vector leading zeroes, vector trailing zeroes, vector operand 1s count and vector parity calculation
CN102495719B (zh) * 2011-12-15 2014-09-24 中国科学院自动化研究所 一种向量浮点运算装置及方法
US9582248B2 (en) * 2014-09-26 2017-02-28 Arm Limited Standalone floating-point conversion unit
CN108897522A (zh) * 2018-06-14 2018-11-27 北京比特大陆科技有限公司 数据处理方法、数据处理装置以及电子设备

Also Published As

Publication number Publication date
CN110221808A (zh) 2019-09-10

Similar Documents

Publication Publication Date Title
CN110221808B (zh) 向量乘加运算的预处理方法、乘加器及计算机可读介质
CN115934030B (zh) 算数逻辑单元、浮点数乘法计算的方法及设备
CN110689125A (zh) 计算装置
US20210349692A1 (en) Multiplier and multiplication method
US6601077B1 (en) DSP unit for multi-level global accumulation
TWI763079B (zh) 用於浮點運算的乘法器、方法、積體電路晶片和計算裝置
WO2021078212A1 (zh) 用于向量内积的计算装置、方法和集成电路芯片
CN111008003B (zh) 数据处理器、方法、芯片及电子设备
CN108255777B (zh) 用于fpga的嵌入式浮点型dsp硬核结构
US20130282778A1 (en) System and Method for Signal Processing in Digital Signal Processors
CN112540743B (zh) 面向可重构处理器的有无符号乘累加器及方法
CN110362293B (zh) 乘法器、数据处理方法、芯片及电子设备
Venkatachalam et al. Approximate sum-of-products designs based on distributed arithmetic
CN110688086A (zh) 一种可重构的整型-浮点加法器
WO2021078210A1 (zh) 用于神经网络运算的计算装置、方法、集成电路和设备
US20220283777A1 (en) Signed multiword multiplier
CN116400883A (zh) 一种可切换精度的浮点乘加器
CN117813585A (zh) 具有高效输入缩减和扩展阵列性能的脉动阵列
CN117472325B (zh) 一种乘法处理器、运算处理方法、芯片及电子设备
KR20170138143A (ko) 단일 곱셈-누산 방법 및 장치
US9519459B2 (en) High efficiency computer floating point multiplier unit
CN111930674B (zh) 乘累加运算装置及方法、异构智能处理器及电子设备
CN114063972A (zh) 乘法器装置
CN209879493U (zh) 乘法器
CN110647307B (zh) 数据处理器、方法、芯片及电子设备

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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210208

Address after: 311201 No. 602-11, complex building, 1099 Qingxi 2nd Road, Hezhuang street, Qiantang New District, Hangzhou City, Zhejiang Province

Patentee after: Zhonghao Xinying (Hangzhou) Technology Co.,Ltd.

Address before: 518 000 515, block B, building 10, Shenzhen Bay science and technology ecological park, No. 10, Gaoxin South 9th Road, high tech Zone community, Yuehai street, Nanshan District, Shenzhen City, Guangdong Province

Patentee before: Shenzhen Xinying Technology Co.,Ltd.

PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Preprocessing methods, multipliers, and computer-readable media for vector multiplication and addition operations

Granted publication date: 20201009

Pledgee: Hangzhou Gaoxin Financing Guarantee Co.,Ltd.

Pledgor: Zhonghao Xinying (Hangzhou) Technology Co.,Ltd.

Registration number: Y2024330000759