CN110678862A - 用于硬连线乘法器电路的数据打包技术 - Google Patents
用于硬连线乘法器电路的数据打包技术 Download PDFInfo
- Publication number
- CN110678862A CN110678862A CN201880034049.5A CN201880034049A CN110678862A CN 110678862 A CN110678862 A CN 110678862A CN 201880034049 A CN201880034049 A CN 201880034049A CN 110678862 A CN110678862 A CN 110678862A
- Authority
- CN
- China
- Prior art keywords
- operand
- logical
- physical
- physical operand
- bits
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/46—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using electromechanical counter-type accumulators
- G06F7/462—Multiplying; dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3828—Multigauge devices, i.e. capable of handling packed numbers without unpacking them
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Abstract
提供了一种方法,该方法包括提供被配置为将第一物理操作数和第二物理操作数相乘的硬连线整数乘法器电路,将第一逻辑操作数映射到第一物理操作数的第一部分,将第二逻辑操作数映射到第一物理操作数的第二部分,以及将第三逻辑操作数映射到第二物理操作数。该方法还包括使用硬连线整数乘法器电路将第一物理操作数和第二物理操作数相乘以提供乘法结果,该乘法结果包括:包含第一逻辑操作数和第三逻辑操作数的乘积的第一部分;以及包含第二逻辑操作数和第三逻辑操作数的乘积的第二部分。
Description
背景技术
机器学习算法(诸如深度神经网络)正在越来越多地用于很多人工智能应用,诸如计算机视觉、语音识别和机器人技术。实现机器学习算法通常需要很高的计算复杂度。事实上,在通用中央处理单元(CPU)上运行机器学习算法可能非常昂贵,并且在某些情况下非常不切实际。因此,非常需要能够有效地处理机器学习算法以提高能量效率和吞吐量的技术。
硬件加速组件(诸如现场可编程门阵列)已经被用来补充用于实现机器学习算法的通用CPU的处理性能。
发明内容
根据第一方面,提供了一种方法,该方法包括提供被配置为将第一物理操作数和第二物理操作数相乘的硬连线整数乘法器电路,将第一逻辑操作数映射到第一物理操作数的第一部分,将第二逻辑操作数映射到第一物理操作数的第二部分,并且将第三逻辑操作数映射到第二物理操作数。该方法还包括使用硬连线整数乘法器电路将第一物理操作数和第二物理操作数相乘以提供乘法结果,该乘法结果包括:包含第一逻辑操作数和第三逻辑操作数的乘积的第一部分;以及包含第二逻辑操作数和第三逻辑操作数的乘积的第二部分。
根据第二方面,提供了一种装置,该装置包括处理器和被配置为将第一物理操作数和第二物理操作数相乘的硬连线整数乘法器电路。处理器被配置为将第一逻辑操作数映射到第一物理操作数的第一部分,将第二逻辑操作数映射到第一物理操作数的第二部分,并且将第三逻辑操作数映射到第二物理操作数,以及使用硬连线整数乘法器电路将第一物理操作数和第二物理操作数相乘以提供乘法结果,该乘法结果包括:包含第一逻辑操作数和第三逻辑操作数的乘积的第一部分;以及包含第二逻辑操作数和第三逻辑操作数的乘积的第二部分。
根据第三方面,提供了一种方法,该方法包括提供被配置为将第一物理操作数和第二物理操作数相乘的硬连线整数乘法器电路,将第一逻辑操作数、第二逻辑操作数和第三逻辑操作数从二进制补码表示转换为符号幅度表示,从第一逻辑操作数中移除第一符号位,从第二逻辑操作数中移除第二符号位,并且从第三逻辑操作数中移除第三符号位,将第一逻辑操作数映射到第一物理操作数的第一部分,将第二逻辑操作数映射到第一物理操作数的第二部分,并且将第三逻辑操作数映射到第二物理操作数,使用硬连线整数乘法器电路将第一物理操作数和第二物理操作数相乘以提供乘法结果,该乘法结果包括:包含第一逻辑操作数和第三逻辑操作数的乘积的第一部分;以及包含第二逻辑操作数和第三逻辑操作数的乘积的第二部分,提取乘法结果的第一部分和乘法结果的第二部分,通过基于第一符号位和第三符号位向所提取的乘法结果的第一部分添加符号位来创建乘法结果的符号扩展的第一部分,并且通过基于第二符号位和第三符号位向所提取的乘法结果的第二部分添加符号位来创建乘法结果的符号扩展的第二部分,以及将乘法结果的符号扩展的第一部分转换为二进制补码表示,并且将乘法结果的符号扩展的第二部分转换为二进制补码表示。
上面概述的功能可以在各种类型的系统、设备、组件、方法、计算机可读存储介质、数据结构、图形用户界面表示、制造品等中得到体现。
提供本发明内容以便以简化的形式介绍一些概念;这些概念将在下面的具体实施方式中进一步描述。本发明内容既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
附图说明
图1是现场可编程门阵列上的示例乘法器块的框图。
图2-4是描绘其中可以实现本文中描述的技术的示例环境的框图。
图5A-5C是描绘用于实现矩阵矢量乘法的乘法器块和累加器的框图。
图6A-6H是描绘数据打包乘法技术的实现的框图。
图7是示出使用图6A-6H的示例数据打包乘法技术来将有符号数进行相乘的一种方式的流程图。
在贯穿本公开和附图中使用相同的数字来引用相似的组件和特征。系列100编号指代最初在图1中存在的特征,系列300编号指代最初在图2中存在的特征,系列400编号指代最初在图3中存在的特征,以此类推。
具体实施方式
诸如深度神经网络等机器学习算法执行很多数学运算。实际上,根据一些估计,在实现深度神经网络时执行的算术运算有99%以上由矩阵矢量乘法的乘法/累加组成。尽管这样的数学运算可以由通用CPU执行,但是机器学习算法的计算速率通常甚至超过最快的通用CPU的能力。
为了提高处理性能,可以使用诸如现场可编程门阵列(FPGA)或其他可重新配置逻辑器件等硬件加速组件来执行矩阵矢量乘法的乘法/累加。事实上,现有的FPGA器件通常包括可以用于执行矩阵矢量乘法的整数乘法/累加的大量的硬连线整数乘法器电路(有时称为“乘法器块”或“DSP块”)。
例如,FPGA器件可以包括18×18乘法器块,每个乘法器块具有两个输入(本文中称为第一物理操作数和第二物理操作数)和单个输出。图1是包括第一物理操作数X、第二物理操作数Y和输出Z的示例18×18乘法器块100的简化框图。第一物理操作数X具有18位的宽度,并且包括位x0、x1、……、x17,第二物理操作数Y具有18位的宽度,并且包括位y0、y1、……、y17,而输出Z具有36位的宽度,并且包括位z0、z1、……、z35。
第一物理操作数X、第二物理操作数Y和输出Z的位宽在本文中称为本机位宽。一些FPGA器件具有可以被配置为具有变化的本机位宽的乘法器块。例如,一些乘法器块可以被配置为以第一模式(例如,作为9×9乘法器)、第二模式(例如,作为18×18乘法器)和第三模式(例如,作为27×27乘法器)进行操作。
尽管某些FPGA具有可变的预乘乘法器块,但是FPGA中的乘法器块的本机位宽超过了某些机器学习算法所需要的精度。事实上,最近的研究表明,可以最小使用低数值精度(例如,低至两位)来实现深度神经网络,而对模型精度的损失很小或没有损失。
如下面更详细描述的,描述了用于将数据打包技术用于诸如FPGA等可配置逻辑器件中的硬连线乘法器电路的技术。不受任何特定理论的束缚,认为这种数据打包技术可以增加可以在每个硬连线乘法器电路上执行的同时乘法运算的数目。另外,不受任何特定理论的束缚,认为这种数据打包技术可以提高机器学习算法的处理速度和吞吐量,诸如使用相对较低的数值精度的深度神经网络。
作为初步事项,一些附图在一个或多个结构组件的上下文中描述了概念,这些结构组件被不同地称为功能、模块、特征、元件等。图中所示的各种组件可以通过任何物理和有形机制以任何形式来实现,例如通过在计算机设备上运行的软件、硬件(例如,芯片实现的逻辑功能)等和/或其任何组合。
在一种情况下,图示的将图中的各个组件分离为不同的单元可以反映相应的不同的物理和有形组件在实际实现中的使用。替代地或另外地,附图中示出的任何单个组件可以由一个以上的实际物理组件来实现。替代地或另外地,图中的任何两个或更多个单独的组件的描绘可以反映由单个实际物理组件执行的不同功能。
其他附图以流程图形式描述了概念。以这种形式,某些操作被描述为构成以一定顺序执行的不同块。这样的顺序是说明性的而非限制性的。本文中描述的某些框可以组合在一起并且在单个操作中执行,某些框可以分解为多个组成框,并且某些框可以按照与本文所示顺序不同的顺序执行(包括并行执行框方式)。流程图中示出的框可以通过任何物理和有形机制以任何方式来实现,例如通过在计算机设备上运行的软件、硬件(例如,芯片实现的逻辑功能)等和/或其任何组合。
关于术语,短语“被配置为”涵盖可以用于将任何种类的物理和有形功能构造为执行所标识的操作的任何方式。该功能可以被配置为使用例如在计算机设备上运行的软件、硬件(例如,芯片实现的逻辑功能)等和/或其任何组合来执行操作。
术语“逻辑”涵盖用于执行任务的任何物理和有形功能。例如,流程图中示出的每个操作对应于用于执行该操作的逻辑组件。操作可以使用例如在计算机设备上运行的软件、硬件(例如,芯片实现的逻辑功能)等和/或其任何组合来执行。当由计算设备实现时,逻辑组件表示作为计算系统的物理部分但是已经实现的电气组件。
以下说明可以将一个或多个特征标识为“可选”。这种类型的陈述不应当被解释为对可以被认为是可选的特征的详尽说明。也就是说,尽管在本文中未明确标识,但是其他特征也可以被认为是可选的。此外,对单个实体的任何描述都不旨在排除对多个这样的实体的使用。类似地,对多个实体的描述并不旨在排除对单个实体的使用。此外,尽管描述可以将某些特征解释为执行标识的功能或实现标识的机制的替代方式,但是特征也可以以任何组合方式组合在一起。最后,术语“示例性”或“说明性”是指潜在的很多实现中的实现。
图2示出了本文中描述的诸如用于与机器学习算法一起使用的示例打包乘法器电路可以在其中操作的示例环境200。在一些示例中,环境200的各种设备和/或组件包括各种计算设备202。作为示例而非限制,计算设备202可以包括设备202a-202e。尽管示出为多种设备类型,但是计算设备202可以是其他设备类型,并且不限于所示出的设备类型。在一些实现中,多个计算设备202中的任何一个可以经由网络204互连。
网络204可以包括但不限于蜂窝网络(例如,无线电话)、点对点拨号连接、卫星网络、因特网、局域网、广域网、WiFi网络、自组织网络、内部网、外部网或其组合。网络204可以包括一个或多个连接的网络(例如,多网络环境)。网络204可以包括存储和/或处理从计算设备202接收和/或向计算设备202传输的信息(例如,数据)的一个或多个数据中心。
在一种实现中,计算设备202可以包括具有例如经由总线214可操作地连接到输入/输出接口208、硬件加速器210和存储器212的一个或多个处理器206的任何类型的设备。计算设备202可以包括个人计算机,例如台式计算机202a、膝上型计算机202b、平板计算机202c、数据中心服务器202d(或服务器是任何其他环境)、智能电话202e、电子书阅读器、可穿戴计算机、汽车计算机、游戏设备等。在一种实现中,计算设备202不需要包括处理器206,并且可以是硬件设备。
计算设备202还可以包括其他计算设备,例如服务器计算机、瘦客户机、终端和/或工作站。在一些示例中,计算设备202可以包括例如用于集成在计算设备、电器或其他种类的设备中的组件。
在一些示例中,被描述为由计算设备202执行的某些或全部功能可以由一个或多个远程对等计算设备、一个或多个远程服务器、或云计算资源来实现。在一些示例中,计算设备202可以包括用于接收输入数据序列的输入端口。例如,计算设备202还可以包括用于执行机器学习处理的一个或多个处理器206。
在一些示例中,如关于设备202d所示,存储器212可以存储由包括操作系统216的(一个或多个)处理器206可执行的指令、以及由处理器206可加载和可执行的程序或应用218。应用218可以包括可以被执行以例如操作硬件加速器210的机器学习处理器应用220。一个或多个处理器206可以包括一个或多个中央处理单元(CPU)、(一个或多个)图形处理单元(GPU)、视频缓冲处理器等。
在一些实现中,机器学习处理器应用220包括被存储在存储器212中并且由(一个或多个)处理器206可执行以通过计算设备202经由输入/输出接口208本地或远程地接收和实现包括数据序列(例如,流数据或数据文件)的机器学习算法的可执行代码。在一些示例中,数据序列可以与一个或多个应用218相关联。机器学习处理器应用220可以与硬件加速器210结合操作以应用用于处理存储在存储器212中或经由输入/输出接口208接收的数据的很多过程中的任何过程(诸如打包乘法器运算符)。
尽管已经将某些框描述为执行各种操作,但是这些模块仅是示例,并且相同或相似的功能可以由更多或更少数目的模块来执行。此外,由所示模块执行的功能不一定由单个设备本地执行。相反,某些操作可以由远程设备(例如,对等设备、服务器、云等)执行。
替代地或另外地,本文中描述的某些或全部功能可以至少部分由一个或多个硬件逻辑电路执行。例如而非限制,可以使用的说明性类型的硬件逻辑电路包括FPGA设备、专用集成电路(ASIC)设备、GPU、大规模并行处理器阵列(MPPA)设备、程序特定的标准产品(ASSP)设备、片上系统设备(SOC)设备、复杂可编程逻辑器件(CPLD)、定制集成电路等。
例如,硬件加速器210的全部或一部分可以在一个或多个FPGA、ASIC、GPU、MPPA、ASSP、SOC、CPLD和/或定制集成电路上实现。术语“硬件”加速器广泛地包括利用硬件设备执行功能的不同方式,例如至少包括:a)至少一些任务在硬ASIC逻辑等中实现的情况;b)至少一些任务在软(可配置的)FPGA逻辑等中实现的情况;c)至少一些任务作为软件在FPGA软件处理器覆盖层等上运行的情况;d)至少一些任务在软处理器的MPPA等上运行的情况;e)至少一些任务作为软件在硬ASIC处理器等上运行的情况等;或其任何组合。
以下说明将给出一个主要示例,其中硬件加速器(诸如硬件加速器210)对应于一个或多个FPGA设备,但是如上所述,硬件加速器可以使用其他类型的硬件逻辑电路来构造。
计算机可读介质可以包括计算机存储介质和/或通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于相变存储器(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪存或其他存储技术、光盘只读存储器(CD-ROM)、数字多功能磁盘(DVD)或其他光学存储器、磁带盒、磁带、磁盘存储或其他磁性存储设备、或者可以用于存储信息以供计算设备访问的任何其他非传输介质。
相反,通信介质在诸如载波等调制数据信号或其他传输机制中实现计算机可读指令、数据结构、程序模块或其他数据。如本文中定义的,计算机存储介质不包括通信介质。在各种示例中,存储器212是存储计算机可执行指令的计算机存储介质的示例。
在各种示例中,输入/输出接口208的输入设备可以是直接触摸输入设备(例如,触摸屏)、间接触摸设备(例如,触摸板)、间接输入设备(例如,鼠标、键盘、相机或相机阵列等)或其他类型的非触觉设备(诸如音频输入设备)。
计算设备202还可以包括一个或多个输入/输出接口208以允许计算设备202与其他设备通信。输入/输出接口208可以包括一个或多个网络接口以实现计算设备202和诸如(一个或多个)其他设备202等其他联网设备之间的通信。输入/输出接口208可以允许计算设备202与其他设备通信,诸如用户输入外围设备(例如,键盘、鼠标、笔、游戏控制器、语音输入设备、触摸输入设备、手势输入设备等)和/或输出外围设备(例如,显示器、打印机、音频扬声器、触觉输出等)。
图3是描绘包括与网络306通信的任何数目的服务器302和计算设备304的示例系统300的框图。服务器302和/或计算设备304的至少一部分位于一个或多个数据中心308中,如虚线箭头所示。例如,这种通信可以涉及以相对快速的网络速率经由网络306在服务器302、计算设备304和数据中心308之间传输和/或接收数据。例如,在数据中心308中接收的数据可以包括例如经由因特网(例如,网络306)的网络数据业务。例如,这样的数据可以由数据中心以超过10Gb/秒的网络速度接收。
例如,各个服务器302和计算设备304可以与上面描述的并且在图2中示出的计算设备202相同或相似。网络306可以与例如图2中描述的网络204相同或相似。在一些示例中,数据中心308是用于容纳计算机系统和相关组件(诸如电信和存储系统)的设施。这样的数据中心尤其可以包括冗余或备用电源、冗余数据通信连接、环境控件(例如,空调、灭火)和各种安全设备。数据中心可以涉及工业规模的操作以及用于支持操作的相对大量的电力。
图4是描绘包括任何数目的处理器402和FPGA 404的示例系统400的框图。例如,可以并入数据中心(例如,图2的数据中心308)中的系统400可以与上面描述的并且在图2中示出的计算设备202相似或相同。系统400可以被配置为实现被接收到数据中心或从数据中心传输的机器学习算法。在一些实现中,例如,这样的数据可以通过FPGA 404来传输。FPGA404可以直接与存储器406通信,存储器406可以在用FPGA 404执行的机器学习处理期间存储数据。
在一些示例中,FPGA 404可以与上面描述的并且在图2中示出的硬件加速器210相同或相似。在各种实现中,除了或代替FPGA404,系统400可以包括任何数目的ASIC、GPU、MPPA、ASSP、SOC、CPLD、定制集成电路或其组合。换言之,例如,执行本文中描述的打包乘法器操作的机器学习处理器应用可以使用多种硬件配置中的任何一种来实现,诸如上面列出的那些。
如上所述,机器学习算法通常执行很多矩阵矢量乘法运算。简单的矩阵矢量乘法运算A×v=o的示例如下所示:
在该示例中,将3×3矩阵A乘以3维矢量v,结果是具有元素o1、o2和o3的3维输出矢量o。元素o1、o2和o3可以写为:
o1=(a×k)+(d×l)+(g×m) (2)
o2=(b×k)+(e×l)+(h×m) (3)
o3=(c×k)+(f×l)+(i×m) (4)
因此,该示例矩阵矢量乘法包括九个乘法:(a×k)、(b×k)、(c×k)、(d×l)、(e×l)、(f×l)、(g×m)、(h×m)和(i×m)。在传统的FPGA实现中,可以使用三个分离的乘法器块(例如,三个分离的18×18乘法器块)来执行这九个乘法。
例如,图5A-5C是描绘分别用于实现上述等式(2)-(3)的矩阵矢量乘法的耦合到相应的累加器502(1)-502(3)的三个单独的18×18乘法器块500(1)-500(3)(例如,每个与图1的乘法器块100相同)的实现的框图。
在一种实现中,乘法器块500(1)具有第一物理操作数X1、第二物理操作数Y1,并且提供耦合到累加器502(1)的输入的乘法结果Z1。乘法器块500(2)具有第一物理操作数X2、第二物理操作数Y2,并且提供耦合到累加器502(2)的输入的乘法结果Z2。乘法器块500(3)具有第一物理操作数X3、第二物理操作数Y3,并且提供耦合到累加器502(3)的输入的乘法结果Z3。
图5A-5C分别描绘了用于实现上述等式(2)-(3)的矩阵矢量乘法的乘法器块500(1)-500(3)和对应的累加器502(1)-502(3)在三个单独的时刻的操作。在图5A中,在第一时刻,
(a)将逻辑操作数(a)和逻辑操作数(k)分别映射到乘法器块500(1)的第一物理操作数X1和第二物理操作数Y1以产生乘法结果Z1=(a×k),乘法结果Z1=作为输入耦合到累加器502(1);
(b)将逻辑操作数(b)和逻辑操作数(k)分别映射到乘法器块500(2)的第一物理操作数X2和第二物理操作数Y2以产生输出Z2=(b×k),输出Z2作为输入耦合到累加器502(2);以及
(c)将逻辑操作数(c)和逻辑操作数(k)分别映射到乘法器块500(3)的第一物理操作数X3和第二物理操作数Y3以产生输出Z3=(c×k),输出Z3作为输入耦合到累加器502(3)。
在图5A的乘法累加运算完成时,累加器502(1)、502(2)和502(3)的值分别为(a×k)、(b×k)和(c×k)。
在图5B中,在第一时刻之后的第二时刻,
(a)将逻辑操作数(d)和逻辑操作数(l)分别映射到乘法器块500(1)的第一物理操作数X1和第二物理操作数Y1以产生乘法结果Z1=(d×l),乘法结果Z1作为输入耦合到累加器502(1);
(b)将逻辑操作数(e)和逻辑操作数(l)分别映射到乘法器块500(2)的第一物理操作数X2和第二物理操作数Y2以产生输出Z2=(e×l),输出Z2作为输入耦合到累加器502(2);以及
(c)将逻辑操作数(f)和逻辑操作数(l)分别映射到乘法器块500(3)的第一物理操作数X3和第二物理操作数Y3以产生输出Z3=(f×l),输出Z3作为输入耦合到累加器502(3)。
在图5B的乘法累加运算完成时,累加器502(1)、502(2)和502(3)的值分别为(a×k)+(d×l)、(b×k)+(e×l)和(c×k)+(f×l)。
在图5C中,在第二时刻之后的第三时刻,
(a)将逻辑操作数(g)和逻辑操作数(m)分别映射到乘法器块500(1)的第一物理操作数X1和第二物理操作数Y1以产生乘法结果Z1=(g×m),乘法结果Z1作为输入耦合到累加器502(1);
(b)将逻辑操作数(h)和逻辑操作数(m)分别映射到乘法器块500(2)的第一物理操作数X2和第二物理操作数Y2以产生输出Z2=(h×m),输出Z2作为输入耦合到累加器502(2);以及
(c)将逻辑操作数(i)和逻辑操作数(m)分别映射到乘法器块500(3)的第一物理操作数X3和第二物理操作数Y3以产生输出Z3=(i×m),输出Z3作为输入耦合到累加器502(3)。
在图5C的乘法累加运算完成时,累加器502(1)、502(2)和502(3)的值分别为(a×k)+(d×l)+(g×m)、(b×k)+(e×l)+(h×m)和(c×k)+(f×l)+(i×m)。因此,累加器502(1)、502(2)和502(3)分别具有上述式(2)-(4)的值o1、o2和o3。
如果矩阵A的元素a、b、……、i以及矢量v的元素k、l、m的位宽均小于乘法器块的原始位宽,因此可以使用数据打包乘法技术来减少执行上述各种乘法所需要的单独乘法器块的数目。图6A-6H描绘了数据打包乘法技术的各种实现。
例如,图6A是示出使用包括第一物理操作数X6、第二物理操作数Y6和输出Z6的18×18乘法器块600(例如,与图1的乘法器块100相同)的数据打包乘法运算的实现的图。第一物理操作数X6具有18位的宽度,第二物理操作数Y6具有18位的宽度,并且输出Z6具有36位的宽度。
在一种实现中,乘法器块600可以用于执行乘法(a×k)和(b×k),其中元素a、b和k分别具有六位精度,如下所示:
(i)具有位宽R=6的第一逻辑操作数(b)(位b0、b1、……、b5)被映射到第一物理操作数X6的第一部分(例如,第一物理操作数X6的R=6个最低有效位x0、x1、……、x5);
(ii)具有位宽S=6的第二逻辑操作数(a)(位a0、a1、……、a5)被映射到第一物理操作数X6的第二部分(例如,第一物理操作数X6的S=6个最高有效位x12、x13、……、x17);
(iii)在第一物理操作数X6的第一部分与第二部分之间,T=6个零填充位被添加到第一物理操作数X6的第三部分(例如,第一物理操作数X6的T=6个位x6、x7、……、x11);
(iv)具有位宽U=6的第三逻辑操作数(k)(位k0、k1、……、k5)被映射到第二物理操作数Y6的第一部分(例如,第二物理操作数Y6的U=6个最低有效位y0、y1、……、y5);以及
(v)剩余的V=12个最高有效位被零填充以形成第二物理操作数Y6的第二部分(例如,第二物理操作数Y6的V=12个位y6、y7、……、x17)。
步骤(i)-(v)可以由处理器执行,诸如在图2的硬件加速器210中实现的处理器或其他处理器。
然后,乘法器块600用于将第一物理操作数乘以第二物理操作数,并且产生结果Z6。结果Z6的第一部分表示乘积(b×k),并且结果Z6的第二部分表示乘积(a×k)。特别地,结果Z6的(R+U)=12个最低有效位z0、z1、……、z11是乘积(b×k),并且结果Z6的(S+U)=12个接下来的最高有效位z12、z13、……、z23是乘积(a×k)。
因此,通过将R=S=6位逻辑操作数a和b映射到第一物理操作数X6,其中在两个映射的操作数之间插入T=6个零填充位,并且将U=6位逻辑操作数k映射到第二物理操作数Y6,可以使用单个乘法器块同时执行两个单独的乘法运算。为了防止第一乘积(b×k)的进位干扰第二乘积(a×k)的结果,插入在第一物理操作数X6中的映射的逻辑操作数a和b之间的零填充位的数目T等于逻辑操作数a、b和k的最大位宽(例如,T=max(R,S,U)=6位)。
在图6A所示的实现中,每个逻辑操作数(a、b、k)的位宽恰好是第一物理操作数X6和第二物理操作数Y6的宽度的三分之一。在其他实现中,逻辑操作数(a、b、k)每个的位宽可以小于第一物理操作数X6和第二物理操作数Y6的宽度的三分之一。例如,图6B示出了其中乘法器块600用于执行乘法(a×k)和(b×k)的数据打包乘法运算的实现,其中元素a、b和k分别具有五位精度,如下所示:
(i)具有位宽R=5的第一逻辑操作数(b)(位b0、b1、……、b4)被映射到第一物理操作数X6的第一部分(例如,第一物理操作数X6的R=5个最低有效位x0、x1、……、x4);
(ii)具有位宽S=5的第二逻辑操作数(a)(位a0、a1、……、a4)被映射到第一物理操作数X6的第二部分(例如,第一物理操作数X6的S=5个位x10、x11、……、x14);
(iii)在第一物理操作数X6的第一部分与第二部分之间,T=5个零填充位被添加到第一物理操作数X6的第三部分(例如,第一物理操作数X6的T=5个位x5、x6、……、x9);
(iv)具有位宽U=5的第三逻辑操作数(k)(位k0、k1、……、k4)被映射到第二物理操作数Y6的第一部分(例如,第二物理操作数Y6的U=5个最低有效位y0、y1、……、y4);以及
(v)剩余的V=13个最高有效位被零填充以形成第二物理操作数Y6的第二部分(例如,第二物理操作数Y6的V=13个位y5、y6、……、x17)。
步骤(i)-(v)可以由处理器执行,诸如在图2的硬件加速器210中实现的处理器或其他处理器。
然后,乘法器块600用于将第一物理操作数乘以第二物理操作数,并且产生结果Z6。结果Z6的第一部分表示乘积(b×k),并且结果Z6的第二部分表示乘积(a×k)。特别地,结果Z6的(R+U)=10个最低有效位z0、z1、……、z9是乘积(b×k),并且结果Z6的(S+U)=10个接下来的最高有效位z10、z11、……、z19是乘积(a×k)。与先前的实现一样,为防止第一乘积(b×k)的进位干扰第二乘积(a×k)的结果,插入在第一物理操作数X6中的映射的逻辑操作数a和b之间的零填充位的数目T等于逻辑操作数a、b和k的最大位宽(例如,T=max(R,S,U)=5位)。
在图6A-6B所示的实现中,每个逻辑操作数(a、b、k)的宽度相同(即,R=S=U)。在其他实现中,逻辑操作数(a、b、k)可以具有不同的宽度。例如,图6C示出了其中乘法器块600用于执行乘法(a×k)和(b×k)的数据打包乘法运算的实现,其中元素a、b和k具有不同的位宽,如下所示:
(i)具有位宽R=3的第一逻辑操作数(b)(位b0、b1、b2)被映射到第一物理操作数X6的第一部分(例如,第一物理操作数X6的R=3个最低有效位x0、x1、x2);
(ii)具有位宽S=4的第二逻辑操作数(a)(位a0、a1、……、a3)被映射到第一物理操作数X6的第二部分(例如,第一物理操作数X6的S=4个位x8、x9、……、x11);
(iii)在第一物理操作数X6的第一部分与第二部分之间,T=5个零填充位被添加到第一物理操作数X6的第三部分(例如,第一物理操作数X6的T=5个位x3、x4、……、x7);
(iv)具有位宽U=5的第三逻辑操作数(k)(位k0、k1、……、k4)被映射到第二物理操作数Y6的第一部分(例如,第二物理操作数Y6的U=5个最低有效位y0、y1、……、y4);以及
(v)剩余的V=13个最高有效位被零填充以形成第二物理操作数Y6的第二部分(例如,第二物理操作数Y6的V=13个位y5、y6、……、x17)。
步骤(i)-(v)可以由处理器执行,诸如在图2的硬件加速器210中实现的处理器或其他处理器。
然后,乘法器块600用于将第一物理操作数乘以第二物理操作数,并且产生结果Z6。结果Z6的第一部分表示乘积(b×k),结果Z6的第二部分表示乘积(a×k)。特别地,结果Z6的(R+U)=8个最低有效位z0、z1、……、z7是乘积(b×k),并且结果Z6的(S+U)=9个接下来的最高有效位z8、z9、……、z16是乘积(a×k)。为了防止第一乘积(b×k)的进位干扰第二乘积(a×k)的结果,插入在第一物理操作数X6中的映射的逻辑操作数a和b之间的零填充位的数目T等于逻辑操作数a、b和k的最大位宽(例如,T=max(R,S,U)=5位)。
在图6A-6C所示的实现中,两个逻辑操作数(a,b)被映射到第一物理操作数X6。在其他实现中,可以将两个以上的逻辑操作数映射到第一物理操作数X6。例如,图6D示出了其中乘法器块600用于执行乘法(a×k)、(b×k)和(c×k)的数据打包乘法运算的实现,其中元素a、b、c和k分别具有三位精度,如下所示:
(i)具有位宽R=3的第一逻辑操作数(c)(位c0、c1、c2)被映射到第一物理操作数X6的第一部分(例如,第一物理操作数X6的R=3个最低有效位x0、x1、x2);
(ii)具有位宽S=3的第二逻辑操作数(b)(位b0、b1、b2)被映射到第一物理操作数X6的第二部分(例如,第一物理操作数X6的S=3个位x6、x7、x8);
(iii)具有位宽W=3的第三逻辑操作数(a)(位a0、a1、a2)被映射到第一物理操作数X6的第三部分(例如,第一物理操作数X6的W=3个位x12、x13、x14);
(iv)在第一物理操作数X6的第一部分与第二部分之间(例如,第一物理操作数X6的T=3个位x3、x4、x5),在第一物理操作数X6的第二部分与第三部分之间(例如,第一物理操作数X6的T=3个位x9、x10、x11),以及第一物理操作数X6的T=3个最高有效位(例如,第一物理操作数X6的三个位x15、x16、x17),T=3个填充位被添加到第一物理操作数X6的第四部分、第五部分和第六部分中的每个部分;
(v)具有位宽U=3的第四逻辑操作数(k)(位k0、k1、k2)被映射到第二物理操作数Y6的第一部分(例如,第二物理操作数Y6的U=3个最低有效位y0、y1、y2);以及
(vi)剩余的V=15个最高有效位被零填充以形成第二物理操作数Y6的第二部分(例如,第二物理操作数Y6的十五个位y3、y4、……、x17)。
步骤(i)-(vi)可以由处理器执行,诸如在图2的硬件加速器210中实现的处理器或其他处理器。
然后,乘法器块600用于将第一物理操作数乘以第二物理操作数,并且产生结果Z6。结果Z6的第一部分表示乘积(c×k),结果Z6的第二部分表示乘积(b×k),并且结果Z6的第三部分表示乘积(a×k)。特别地,结果Z6的(R+U)=6个最低有效位z0、z1、……、z5是乘积(c×k),结果Z6的(S+U)=6个接下来的最高有效位z6、z7、……、z11是乘积(b×k),并且结果Z6的(W+U)=6个接下来的最高有效位z12、z13、……、z17是乘积(a×k)。
因此,通过将R=S=W=3位逻辑操作数a、b和c映射到乘法器块600的单个物理操作数X6,其中三个映射的操作数中的每个之间具有T=3个零填充位,并且将U=3位逻辑操作数k映射到第二物理操作数Y6,可以使用单个乘法器块同时执行三个单独的乘法运算。为了防止第一乘积(c×k)的进位干扰第二乘积(b×k)的结果,并且防止第二乘积(b×k)的进位干扰第二乘积(a×k)的结果,插入在第一物理操作数X6中的映射的逻辑操作数a和b以及c和b之间的零填充位的数目T等于逻辑操作数a、b、c和k的最大位宽(例如,T=最大值(R,S,W,U)=3位)。
在图6A-6D所示的实现中,插入在第一物理操作数X6中的映射的逻辑操作数之间的零填充位的数目T等于逻辑操作数a、b、c和k的最大位宽(例如,T=max(R,S,W,U))。在另一实现中,插入在第一物理操作数X6中的映射的逻辑操作数之间的零填充位的数目T小于逻辑操作数a、b、c和k的最大位宽。例如,图6E示出了其中乘法器块600用于执行乘法(a×k)、(b×k)和(c×k)的数据打包乘法运算的实现,其中元素a、b、c和k分别具有四位精度,如下所示:
(i)具有位宽R=4的第一逻辑操作数(c)(位c0、c1、c2、c3)被映射到第一物理操作数X6的第一部分(例如,第一物理操作数X6的R=4个最低有效位x0、x1、x2、x3);
(ii)具有位宽S=4的第二逻辑操作数(b)(位b0、b1、b2、b3)被映射到第一物理操作数X6的第二部分(例如,第一物理操作数X6的S=4个位x7、x8、x9、x10);
(iii)具有位宽W=4的第三逻辑操作数(a)(位a0、a1、a2、a3)被映射到第一物理操作数X6的第三部分(例如,第一物理操作数X6的W=4个位x14、x15、x16、x17);
(iv)在第一物理操作数X6的第一部分与第二部分之间(例如,第一物理操作数X6的T=3个位x4、x5、x6),以及在第一物理操作数X6的第二部分与第三部分之间(例如,第一物理操作数X6的T=3个位x11、x12、x13),T=3个零填充位被添加到第一物理操作数X6的第四部分与第五部分中的每个部分;
(v)具有位宽U=4的第四逻辑操作数(k)(位k0、k1、k2、k3)被映射到第二物理操作数Y6的第一部分(例如,第二物理操作数Y6的U=4个最低有效位y0、y1、y2、y3);以及
(vi)剩余的V=14个最高有效位被零填充以形成第二物理操作数Y6的第二部分(例如,第二物理操作数Y6的V=14个位y4、y5、……、x17)。
步骤(i)-(vi)可以由处理器执行,诸如在图2的硬件加速器210中实现的处理器或其他处理器。
然后,乘法器块600用于将第一物理操作数乘以第二物理操作数,并且产生结果Z6。结果Z6的第一部分表示乘积(c×k)*,结果Z6的第二部分表示乘积(b×k)*,并且结果Z6的第三部分表示乘积(a×k)*。特别地,结果Z6的(R+U)=8个最低有效位z0、z1、……、z7是乘积(c×k)*,结果Z6的(S+U)=8个接下来的最高有效位z8、z9、……、z15是乘积(b×k)*,并且结果Z6的(W+U)=8个接下来的最高有效位z16、z17、……、z23是乘积(a×k)*。
因为插入在第一物理操作数X6中的映射的逻辑操作数a和b以及c和b之间的零填充位的数目T=3小于逻辑操作数a、b、c和k的最大位宽(例如,四位),第一乘积(c×k)*的进位可能会干扰第二乘积(b×k)*的结果,并且第二乘积(b×k)*的进位可能会干扰第二乘积的结果。结果,图6E的实现的乘积(c×k)*、(b×k)*和(a×k)*可以分别不等于图6D的实现的乘积(c×k)、(b×k)和(a×k)。
然而,因为神经网络固有地容忍噪声,所以在一些实现中,可以减少操作数之间的零填充(诸如在图6E的实现中),以潜在地允许部分乘积之间的进位的干扰,而不会显著影响准确性。因此,可以通过减少操作数之间的零填充来增加从单个乘法器块获取的乘法结果的数目,其中以神经网络精度的一些牺牲作为交换。
在一种实现中,可以使用附加的逻辑电路(例如,FPGA上的软逻辑)来处理数据打包的乘法器块的输出。例如,图6F-6H描绘了用于使用三位矩阵元素a-i和三位矢量元素k-m来实现上述式(2)-(3)的矩阵矢量乘法的在三个单独的时刻的乘法器块600(例如,与图1的乘法器块100相同)和累加器602(1)602(3)的数据打包乘法运算的实现。乘法器块600的结果Z6如下耦合到累加器602(1)602(3):结果Z6的位z12-z17耦合到累加器602(1)的输入,结果Z6的位z6-z11耦合到累加器602(2)的输入,并且结果Z6的位z0-z5耦合到累加器602(3)的输入。
在图6F中,在第一时刻,第一逻辑操作数(a)、第二逻辑操作数(b)和第三逻辑操作数(c)被映射到第一物理操作数X6,并且第四逻辑操作数k被映射到第二物理操作数Y6,诸如以上结合图6D所述。然后,乘法器块600用于将第一物理操作数乘以第二物理操作数,并且产生结果Z6。结果Z6的位z12、z13、……、z17是乘积(a×k)并且耦合到累加器602(1)的输入,结果Z6的位z6、z7、……、z11是乘积(b×k)并且耦合到累加器602(2)的输入,并且结果Z6的位z0、z1、……、z5是乘积(c×k)并且输入到累加器602(3)。在图6F的乘法累加运算完成时,累加器602(1)、602(2)和602(3)分别具有值(a×k)、(b×k)和(c×k)。
在图6G中,在第一时刻之后的第二时刻,第一逻辑操作数d、第二逻辑操作数e和第三逻辑操作数f被映射到第一物理操作数X6,并且第四逻辑操作数l被映射到第二物理操作数Y6,诸如上面结合图6D所述。然后,乘法器块600用于将第一物理操作数乘以第二物理操作数,并且产生结果Z6。结果Z6的位z12、z13、……、z17是乘积(d×l)并且耦合到累加器602(1)的输入,结果Z6的位z6、z7、……、z11是乘积(e×l)并且耦合到累加器602(2)的输入,并且结果Z6的位z0、z1、……、z5是乘积(f×l)并且输入到累加器602(3)。在图6H的乘法累加运算完成时,累加器602(1)、602(2)和602(3)的值分别为(a×k)+(d×l)、(b×k)+(e×l)和(c×k)+(f×l)。
在图6H中,在第二时刻之后的第三时刻,第一逻辑操作数g、第二逻辑操作数h和第三逻辑操作数i被映射到第一物理操作数X6,并且第四逻辑操作数m被映射到第二物理操作数Y6,诸如上面结合图6D所述。然后,乘法器块600用于将第一物理操作数乘以第二物理操作数,并且产生结果Z6。结果Z6的位z12、z13、……、z17是乘积(g×m)并且耦合到累加器602(1)的输入,结果Z6的z6、z7、……、z11是乘积(h×m)并且耦合到累加器602(2)的输入,并且结果Z6的位z0、z1、……、z5是乘积(i×m)并且输入到累加器602(3)。在图6H的乘法累加运算完成时,累加器602(1)、602(2)和602(3)的值是(a×k)+(d×l)+(g×m)、(b×k)+(e×l)+(h×m)和(c×k)+(f×l)+(i×m)。因此,累加器602(1)、602(2)和602(3)分别具有以上式(2)-(4)的值o1、o2和o3。
在上面描述并且在图6A-6H中描绘的数据打包乘法运算的实现中,乘法器块600是18×18乘法器块,其包括具有18位宽的第一物理操作数、具有18位宽的第二物理操作数以及具有36位宽的输出。在其他实现中,可以使用具有其他本机位宽的乘法器块,诸如9×9乘法器块、27×27乘法器块等。此外,在其他实现中,可以使用其中第一物理操作数具有第一位宽并且第二物理操作数具有与第一位宽不同的第二位宽的乘法器块(例如,36×187乘法器块等)。
在上述数据打包乘法运算的实现中,矩阵元素a-i和矢量元素k-m被假定为正整数。上面描述的技术可以用于将正数和负数相乘,但是每个元素的符号位与乘法运算分开处理。
图7是用于使用上述数据打包乘法运算来将有符号数进行相乘的过程700的实现的流程图。在一种实现中,图2的硬件加速器210上的电路实现过程700,尽管在其他实现中,某种其他电路或电路组合也可以实现过程700。在下面对过程700的实现的描述中,要相乘的元素(诸如上述矩阵元素a-i和矢量元素k-m)被假定为二进制补码表示。在下面的描述中,除非另有说明,否则在乘法运算之前,假定逻辑操作数采用二进制补码来表示。
在步骤702,将要相乘的逻辑操作数从二进制补码表示转换为符号幅度表示,其中最高有效位表示数字的符号(例如,0=正数,1=负数)。例如,在上面描述和图6A中描绘的示例中,逻辑操作数(a)、(b)和(k)中的每个从二进制补码表示转换为符号幅度表示。在其中逻辑操作数已经是符号幅度表示的实施例中,可以省略步骤702。
再次参考图7,在步骤704,剥离并且保留每个逻辑操作数的符号位(例如,在数据寄存器中)。例如,在上面描述和图6A中描绘的示例中,逻辑操作数(a)、(b)和(k)中的每个的符号位被剥离并且保存在存储器中,诸如在图2的硬件加速器210中的数据寄存器中。
再次参考图7,在步骤706,执行乘法运算。例如,在上面描述并且在图6A中描绘的数据打包乘法运算可以被执行以产生两个乘法结果:结果Z6的第一部分表示乘积(b×k),并且结果Z6的第二部分表示乘积(a×k)。
再次参考图7,在步骤708,提取多个乘法结果。例如,如上面结合图6A所述,可以提取结果Z6的12个最低有效位z0、z1、……、z11作为乘积(b×k),并且可以提取结果Z6的接下来的12个位z12、z13、……、z23作为乘积(a×k)。
再次参考图7,在步骤710,确定每个乘法结果的符号。在一种实现中,在步骤704剥离的符号位的“异或”为每个乘法结果提供符号位。例如,元素(b)和(k)的符号位的“异或”提供乘积(b×k)的符号位,并且元素(a)和(k)的符号位的“异或”提供乘积(a×k)的符号位。
再次参考图7,在步骤712,添加在步骤710确定的符号位作为在步骤708提取的每个乘法结果的最高有效位以创建每个乘法结果的符号扩展版本。
在步骤714,将每个符号扩展的乘法结果从符号幅度表示转换为二进制补码表示。在其他实施例中,如果期望将乘法结果保持位符号幅度表示,则可以省略步骤714。
除非另有说明,否则上述所有方法和过程可以全部或部分地通过由一个或多个通用计算机或处理器执行的软件代码模块来实现。代码模块可以存储在任何类型的计算机可读存储介质或其他计算机存储设备中。替代地,一些或所有方法可以全部或部分地由专用计算机硬件(诸如FPGA、ASIC等)实现。
除非另有明确说明,否则条件语言(诸如“能够”、“可能”、“可”或“可以”)用于表明某些示例包括但不包括其他示例特征、元素和/或步骤。因此,除非另有说明,否则这种条件性语言并非旨在暗示一个或多个示例以任何方式要求特征、元素和/或步骤,或者一个或多个示例必须包括用于决定在任何特定示例中是否需要包括或执行这些特征、元素和/或步骤的逻辑(在具有或没有用户输入或提示的情况下)。
除非另有明确说明,否则诸如短语“X、Y或Z中的至少一个”等连接语言应当被理解为表示项目、术语等可以是X或Y或Z或其组合。
可以对上述示例进行很多变化和修改,其要素应当被理解为是其他可接受的示例。所有这些修改和变型旨在被包括在本公开的范围内。
技术的说明性方面
以下概述提供本文中阐述的技术的说明性方面的非详尽列表。
根据第一方面,提供了一种方法,该方法包括提供被配置为将第一物理操作数和第二物理操作数相乘的硬连线整数乘法器电路,将第一逻辑操作数映射到第一物理操作数的第一部分,将第二逻辑操作数映射到第一物理操作数的第二部分,并且将第三逻辑操作数映射到第二物理操作数。该方法还包括使用硬连线整数乘法器电路将第一物理操作数和第二物理操作数相乘以提供乘法结果,该乘法结果包括:包含第一逻辑操作数和第三逻辑操作数的乘积的第一部分;以及包含第二逻辑操作数和第三逻辑操作数的乘积的第二部分。
根据第二方面,该方法还包括在第一物理操作数的第一部分与第一物理操作数的第二部分之间插入零填充位。
根据第三方面,零填充位的数目包括第一逻辑操作数、第二逻辑操作数和第三逻辑操作数的最大字长。
根据第四方面,零填充位的数目包括小于第一逻辑操作数、第二逻辑操作数和第三逻辑操作数的最大字长。
根据第五方面,该方法还包括将乘法结果的第一部分耦合到第一累加器,以及将乘法结果的第二部分耦合到第二累加器。
根据第六方面,该方法还包括在将第一逻辑操作数映射到第一物理操作数的第一部分之前,将第一逻辑操作数转换为符号幅度表示,在将第二逻辑操作数映射到第一物理操作数的第二部分之前,将第二逻辑操作数转换为符号幅度表示,以及在将第三逻辑操作数映射到第二物理操作数之前,将第三逻辑操作数转换为符号幅度表示。
根据第七方面,该方法还包括提取乘法结果的第一部分,提取乘法结果的第二部分,将所提取的乘法结果的第一部分转换为二进制补码表示,以及将所提取的乘法结果的第二部分转换为二进制补码表示。
根据第八方面,该方法还包括将第四逻辑操作数映射到第一物理操作数的第三部分,其中乘法还提供包括第三部分的乘法结果,该第三部分包括第四逻辑操作数和第三逻辑操作数的乘积。
根据第九方面,第一逻辑操作数包括位宽R,第二逻辑操作数包括位宽S,第三逻辑操作数包括位宽U,乘法结果的(R+U)个最低有效位包括第一逻辑操作数和第三逻辑操作数的乘积,乘法结果的(S+U)个次高有效位包括第二逻辑操作数和第三逻辑操作数的乘积。
根据第十方面,硬连线整数乘法器可以被配置为改变原始位宽。
根据第十一方面,硬连线整数乘法器包括现场可编程门阵列。
根据第十二方面,一种机器学习算法包括矩阵和矢量,矩阵包括包含第一逻辑操作数的第一元素和包含第二逻辑操作数的第二元素,矢量包括包含第三逻辑操作数的元素,并且乘法结果包括矩阵矢量乘法的第一元素和矩阵矢量乘法的第二元素。
根据第十三方面,提供了一种装置,该装置包括处理器和被配置为将第一物理操作数和第二物理操作数相乘的硬连线整数乘法器电路。处理器被配置为将第一逻辑操作数映射到第一物理操作数的第一部分,将第二逻辑操作数映射到第一物理操作数的第二部分,以及将第三逻辑操作数映射到第二物理操作数,并且使用硬连线整数乘法器电路将第一物理操作数和第二物理操作数相乘以提供乘法结果,该乘法结果包括:包含第一逻辑操作数和第三逻辑操作数的乘积的第一部分;以及包含第二逻辑操作数和第三逻辑操作数的乘积的第二部分。
根据第十四方面,处理器还被配置为在第一物理操作数的第一部分与第一物理操作数的第二部分之间插入零填充位。
根据第十五方面,零填充位的数目包括第一逻辑操作数、第二逻辑操作数和第三逻辑操作数的最大字长。
根据第十六方面,零填充位的数目包括小于第一逻辑操作数、第二逻辑操作数和第三逻辑操作数的最大字长。
根据第十七方面,该装置还包括耦合到乘法结果的第一部分的第一累加器和耦合到乘法结果的第二部分的第二累加器。
根据第十八方面,该装置还包括现场可编程门阵列。
根据第十九方面,提供了一种方法,该方法包括提供被配置为将第一物理操作数和第二物理操作数相乘的硬连线整数乘法器电路,将第一逻辑操作数、第二逻辑操作数和第三逻辑操作数从二进制补码表示转换为符号幅度表示,从第一逻辑操作数中移除第一符号位,从第二逻辑操作数中移除第二符号位,并且从第三逻辑操作数中移除第三符号位,将第一逻辑操作数映射到第一物理操作数的第一部分,将第二逻辑操作数映射到第一物理操作数的第二部分,并且将第三逻辑操作数映射到第二物理操作数,使用硬连线整数乘法器电路将第一物理操作数和第二物理操作数相乘以提供乘法结果,该乘法结果包括:包含第一逻辑操作数和第三逻辑操作数的乘积的第一部分;以及包含第二逻辑操作数和第三逻辑操作数的乘积的第二部分,提取乘法结果的第一部分和乘法结果的第二部分,通过基于第一符号位和第三符号位向所提取的乘法结果的第一部分添加符号位来创建乘法结果的符号扩展的第一部分,并且通过基于第二符号位和第三符号位向所提取的乘法结果的第二部分添加符号位来创建乘法结果的符号扩展的第二部分,以及将乘法结果的符号扩展的第一部分转换为二进制补码表示,并且将乘法结果的符号扩展的第二部分转换为二进制补码表示。
根据第二十方面,硬连线整数乘法器包括现场可编程门阵列。
尽管已经以结构特征和/或方法动作特定的语言描述了主题,但是应当理解,所附权利要求书中定义的主题不必限于上述特定特征或动作。相反,上述特定特征和动作被公开作为实现权利要求的示例形式。
Claims (11)
1.一种方法,包括:
提供被配置为将第一物理操作数和第二物理操作数相乘的硬连线整数乘法器电路;
将第一逻辑操作数映射到所述第一物理操作数的第一部分;
将第二逻辑操作数映射到所述第一物理操作数的第二部分;以及
将第三逻辑操作数映射到所述第二物理操作数;以及
使用所述硬连线整数乘法器电路将所述第一物理操作数和所述第二物理操作数相乘以提供乘法结果,所述乘法结果包括:包含所述第一逻辑操作数和所述第三逻辑操作数的乘积的第一部分;以及包含所述第二逻辑操作数和所述第三逻辑操作数的乘积的第二部分。
2.根据权利要求1所述的方法,还包括在所述第一物理操作数的所述第一部分与所述第一物理操作数的所述第二部分之间插入零填充位。
3.根据权利要求2所述的方法,其中零填充位的数目包括所述第一逻辑操作数、所述第二逻辑操作数和所述第三逻辑操作数的最大字长。
4.根据前述权利要求中任一项所述的方法,还包括:
在将所述第一逻辑操作数映射到所述第一物理操作数的所述第一部分之前,将所述第一逻辑操作数转换为符号幅度表示;
在将所述第二逻辑操作数映射到所述第一物理操作数的所述第二部分之前,将所述第二逻辑操作数转换为符号幅度表示;以及
在将所述第三逻辑操作数映射到所述第二物理操作数之前,将所述第三逻辑操作数转换为符号幅度表示。
5.根据权利要求4所述的方法,还包括:
提取所述乘法结果的所述第一部分;
提取所述乘法结果的所述第二部分;
将所提取的所述乘法结果的所述第一部分转换为二进制补码表示;以及
将所提取的所述乘法结果的所述第二部分转换为二进制补码表示。
6.根据前述权利要求中任一项所述的方法,其中所述硬连线整数乘法器包括现场可编程门阵列。
7.一种装置,包括:
硬连线整数乘法器电路,其被配置为将第一物理操作数和第二物理操作数相乘;以及
处理器,其被配置为:
将第一逻辑操作数映射到所述第一物理操作数的第一部分;
将第二逻辑操作数映射到所述第一物理操作数的第二部分;以及
将第三逻辑操作数映射到所述第二物理操作数;以及
使用所述硬连线整数乘法器电路将所述第一物理操作数和所述第二物理操作数相乘以提供乘法结果,所述乘法结果包括:包含所述第一逻辑操作数和所述第三逻辑操作数的乘积的第一部分;以及包含所述第二逻辑操作数和所述第三逻辑操作数的乘积的第二部分。
8.根据权利要求7所述的装置,其中所述处理器还被配置为在所述第一物理操作数的所述第一部分与所述第一物理操作数的所述第二部分之间插入零填充位。
9.根据权利要求8所述的装置,其中零填充位的数目包括所述第一逻辑操作数、所述第二逻辑操作数和所述第三逻辑操作数的最大字长。
10.根据权利要求8所述的装置,其中零填充位的数目包括小于所述第一逻辑操作数、所述第二逻辑操作数和所述第三逻辑操作数的最大字长。
11.根据权利要求7至10中任一项所述的装置,包括现场可编程门阵列。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/603,908 US10467324B2 (en) | 2017-05-24 | 2017-05-24 | Data packing techniques for hard-wired multiplier circuits |
US15/603,908 | 2017-05-24 | ||
PCT/US2018/028980 WO2018217369A1 (en) | 2017-05-24 | 2018-04-24 | Data packing techniques for hard-wired multiplier circuits |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110678862A true CN110678862A (zh) | 2020-01-10 |
CN110678862B CN110678862B (zh) | 2023-08-11 |
Family
ID=62200533
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880034049.5A Active CN110678862B (zh) | 2017-05-24 | 2018-04-24 | 用于硬连线乘法器电路的数据打包技术 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10467324B2 (zh) |
EP (1) | EP3631645A1 (zh) |
CN (1) | CN110678862B (zh) |
WO (1) | WO2018217369A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10732932B2 (en) * | 2018-12-21 | 2020-08-04 | Intel Corporation | Methods for using a multiplier circuit to support multiple sub-multiplications using bit correction and extension |
US11301542B2 (en) * | 2019-05-15 | 2022-04-12 | Nxp B.V. | Methods and apparatuses involving fast fourier transforms processing of data in a signed magnitude form |
US10997116B2 (en) | 2019-08-06 | 2021-05-04 | Microsoft Technology Licensing, Llc | Tensor-based hardware accelerator including a scalar-processing unit |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4817029A (en) * | 1987-05-11 | 1989-03-28 | United Technologies Corporation | Multiple-precision Booth's recode multiplier |
US5880985A (en) * | 1996-10-18 | 1999-03-09 | Intel Corporation | Efficient combined array for 2n bit n bit multiplications |
US20030023833A1 (en) * | 2000-01-31 | 2003-01-30 | Kumar Ganapathy | Apparatus and systems for dyadic digital signal processing instructions |
US6523055B1 (en) * | 1999-01-20 | 2003-02-18 | Lsi Logic Corporation | Circuit and method for multiplying and accumulating the sum of two products in a single cycle |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8386553B1 (en) * | 2006-12-05 | 2013-02-26 | Altera Corporation | Large multiplier for programmable logic device |
EP2122542B1 (en) | 2006-12-08 | 2017-11-01 | Medhat Moussa | Architecture, system and method for artificial neural network implementation |
US9600235B2 (en) * | 2013-09-13 | 2017-03-21 | Nvidia Corporation | Technique for performing arbitrary width integer arithmetic operations using fixed width elements |
US20150324689A1 (en) | 2014-05-12 | 2015-11-12 | Qualcomm Incorporated | Customized classifier over common features |
-
2017
- 2017-05-24 US US15/603,908 patent/US10467324B2/en active Active
-
2018
- 2018-04-24 WO PCT/US2018/028980 patent/WO2018217369A1/en active Application Filing
- 2018-04-24 CN CN201880034049.5A patent/CN110678862B/zh active Active
- 2018-04-24 EP EP18725969.2A patent/EP3631645A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4817029A (en) * | 1987-05-11 | 1989-03-28 | United Technologies Corporation | Multiple-precision Booth's recode multiplier |
US5880985A (en) * | 1996-10-18 | 1999-03-09 | Intel Corporation | Efficient combined array for 2n bit n bit multiplications |
US6523055B1 (en) * | 1999-01-20 | 2003-02-18 | Lsi Logic Corporation | Circuit and method for multiplying and accumulating the sum of two products in a single cycle |
US20030023833A1 (en) * | 2000-01-31 | 2003-01-30 | Kumar Ganapathy | Apparatus and systems for dyadic digital signal processing instructions |
CN1404586A (zh) * | 2000-01-31 | 2003-03-19 | 英特尔公司 | 用于具有二元数字信号处理指令的指令集结构的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US20180341622A1 (en) | 2018-11-29 |
EP3631645A1 (en) | 2020-04-08 |
US10467324B2 (en) | 2019-11-05 |
WO2018217369A1 (en) | 2018-11-29 |
CN110678862B (zh) | 2023-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110692038B (zh) | 多功能矢量处理器电路 | |
CN108628807B (zh) | 浮点数矩阵的处理方法、装置、设备及计算机可读存储介质 | |
KR102252137B1 (ko) | 계산 장치 및 방법 | |
CN113330421B (zh) | 点积计算器及其操作方法 | |
US20230026006A1 (en) | Convolution computation engine, artificial intelligence chip, and data processing method | |
JP5731937B2 (ja) | ベクトル浮動小数点引数削減 | |
TW201837737A (zh) | 使用一矩陣運算單元之深度串接 | |
CN110678862B (zh) | 用于硬连线乘法器电路的数据打包技术 | |
US10592208B2 (en) | Very low precision floating point representation for deep learning acceleration | |
TWI772506B (zh) | 在基於處理器系統中使用矩陣處理器提供高效浮點運算的器件及方法 | |
WO2019215907A1 (ja) | 演算処理装置 | |
EP4120141A1 (en) | Method and apparatus for performing deconvolution processing on feature data by utilizing convolution hardware | |
CN114201782A (zh) | 使用高通量crt评估的用于机器学习和神经网络的同态加密 | |
CN111125617A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112966729B (zh) | 一种数据处理方法、装置、计算机设备及存储介质 | |
EP3758288B1 (en) | Digital signature verification engine for reconfigurable circuit devices | |
JP2022539554A (ja) | 高精度のニューラル処理要素 | |
CN114201746A (zh) | 低电路深度同态加密评估 | |
EP3923132B1 (en) | Device for performing multiply/accumulate operations | |
CN116420174A (zh) | 用于卷积神经网络的全尺度卷积 | |
US9304739B1 (en) | Optimized 3D lighting computations using a logarithmic number system | |
CN115953549A (zh) | 三维人体重建方法、装置、设备及存储介质 | |
CN118176482A (zh) | 融合模乘加运算 | |
CN115861862A (zh) | 识别图像的方法和设备 | |
CN116490880A (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 |