CN113778376A - 改进的用于执行乘法/累加运算的设备 - Google Patents

改进的用于执行乘法/累加运算的设备 Download PDF

Info

Publication number
CN113778376A
CN113778376A CN202110635294.5A CN202110635294A CN113778376A CN 113778376 A CN113778376 A CN 113778376A CN 202110635294 A CN202110635294 A CN 202110635294A CN 113778376 A CN113778376 A CN 113778376A
Authority
CN
China
Prior art keywords
input
arg1
arg2
parameters
pairs
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
CN202110635294.5A
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.)
Verisilicon Holdings Co ltd
VeriSilicon Microelectronics Shanghai Co Ltd
Original Assignee
Verisilicon Holdings Co ltd
VeriSilicon Microelectronics Shanghai 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 Verisilicon Holdings Co ltd, VeriSilicon Microelectronics Shanghai Co Ltd filed Critical Verisilicon Holdings Co ltd
Publication of CN113778376A publication Critical patent/CN113778376A/zh
Pending legal-status Critical Current

Links

Images

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/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
    • 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/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • 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/50Adding; 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Neurology (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)

Abstract

用于执行乘法/累加运算的电路,其评估一对输入值中的每个值的类型。带符号的值被分为符号和幅度。将一对或多对参数输入到乘法器,以使参数具有的位数少于带符号值或非带符号值的幅度。这可以包括将输入值分成多个参数,以及将单对输入值的多对参数输入到乘法器。

Description

改进的用于执行乘法/累加运算的设备
技术领域
本发明涉及用于执行大量数学运算的系统和方法。
背景技术
提高执行速度的最常见方法之一是并行执行操作,例如采用多个处理器内核。通过配置具有许多(例如,成千上万个)处理管线的图形处理单元(GPU),可以在更大的规模上利用此原理,其中每个处理管线可以被配置为执行一个数学功能。以这种方式,可以并行处理大量数据。尽管GPU最初用于图形处理应用程序,但GPU也经常用于其他应用,尤其是人工智能。
改进GPU管线或包括许多处理单元的任何处理设备的功能将是对本领域的一种改进。
附图说明
图1为可实现本发明实施例的方法的一个计算机系统的示意性框图。
图2为本发明实施例的一个乘法/累加电路的示意框图。
图3为本发明实施例的一个在乘法/累加电路中处理输入自变量的方法流程图。
图4为本发明实施例的对要在乘积/累加电路中进行累积的乘积进行后处理的方法流程图。
具体实施方式
为了容易理解本发明的优点,将通过参考附图中所示的具体实施例来呈现本发明的更为具体的描述。应当理解,这些附图仅描述本发明的典型实施例,而不构成对其范围的限制。以下将通过使用附图以额外的特异性和细节来描述和解释本发明。
本发明的组件可以以多种不同的方式来布置和设计。因此,如附图所示,以下对本发明的实施例的更详细的描述并非旨在限制本发明所要求的保护范围,而以示意方式说明本发明的基本构想。请参考附图以更好地理解此处描述的实施例,其中,相同的组件始终用相同的数字表示。
根据本发明的实施例可以体现为装置,方法或计算机程序产品。相应地,本发明可以采取全硬件实施例,全软件实施例(包括固件,常驻软件,微代码等)或,结合软件和硬件的实施例的形式,在本文中这些方面可被称为“模块”或“系统”。此外,本发明的形式可以是在任何有形表达介质中体现的计算机程序产品,在该介质中具有计算机可用的程序代码。
本发明可以利用一种或多种计算机可用或计算机可读介质的任何组合,包括非暂时性介质。例如,计算机可读介质可以包括便携式计算机软盘,硬盘,随机存取存储器(RAM)设备,只读存储器(ROM)设备,可擦除可编程只读存储器(EPROM或闪存)设备,便携式光盘只读存储器(CDROM),光学存储设备和磁性存储设备。在选定的实施例中,计算机可读介质可以包括任何非暂时性介质,其可以包含、存储、通信、传播或传输由指令执行系统、装置或设备使用或与其结合使用的程序。
本发明可以用一种或多种编程语言的任何组合来编写用于执行本发明的操作的计算机程序代码,所述编程语言包括诸如Java,Smalltalk,C++等之类的面向对象的编程语言以及诸如“C”编程语言之类的常规过程编程语言。所述程序代码可以完全在计算机系统上作为独立软件包执行,在独立硬件单元上执行,部分在与计算机间隔一定距离的远程计算机上执行,或者完全在远程计算机或服务器上执行。在最后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到计算机,或者可以与外部计算机建立连接(例如,通过使用互联网服务提供商的互联网)。
下面将参考根据本发明实施例的方法、装置(系统)、计算机程序产品的流程图和/或框图描述本发明。流程图图示和框图的每个部分都可以通过计算机程序指令或代码来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或用以生产机器的其他可编程数据处理设备的处理器,从而使计算机或其他可编程数据处理设备的处理器执行的指令可创建用于实现流程图和/或框图中指定的功能/动作。
这些计算机程序指令还可以存储在非暂时性计算机可读介质中,该介质可以指导计算机或其他可编程数据处理设备以特定方式运行,从而使存储在计算机可读介质中的指令产生制品,该制品包括指令装置,该指令装置可实现流程图和/或方框图中指定的功能/动作。
计算机程序指令也可被加载到计算机或其他可编程数据处理设备上,以使一系列操作步骤在计算机或其他可编程设备上执行,以产生计算机实现的过程,从而使计算机或其他可编程数据处理设备的处理器执行的指令提供用于实现流程图和/或框图中指定的功能/动作的过程。
图1为示例计算设备100的框图。计算设备100可以用于执行各种过程,诸如本文所讨论的过程。计算设备100可以用作服务器、客户端或任何其他计算实体。计算设备可以执行本文所公开的各种功能,并且可以执行一个或多个应用程序,例如本文公开的应用程序。计算设备100可以是多种计算设备中的任何一种,例如台式计算机、笔记本计算机、服务器计算机、手持式计算机、平板计算机等。
计算设备100包括一个或多个处理器102,一个或多个存储设备104,一个或多个接口106,一个或多个大容量存储设备108,一个或多个输入/输出(I/O)设备110,和显示设备130,均耦合到总线112。处理器102包括一个或多个执行存储在存储设备104和/或大容量存储设备108中的指令的处理器或控制器。处理器102还可以包括各种类型的计算机可读介质,例如高速缓冲存储器。
存储设备104包括各种计算机可读介质,例如易失性存储器(例如,随机存取存储器(RAM)114)和/或非易失性存储器(例如,只读存储器(ROM)116)。存储设备104还可以包括可擦写ROM,例如闪存。
大容量存储设备108包括各种计算机可读介质,例如磁带、磁盘、光盘、固态存储器(例如,闪存)等。如图1所示,一个实例中的大容量存储设备是一个硬盘驱动器124。大容量存储设备108中还可以包括各种驱动器,以使得其能够从各种计算机可读介质读取和/或写入各种计算机可读介质。大容量存储设备108包括可移动介质126和/或不可移动介质。
I/O设备110包括各种设备,这些设备可将数据和/或其他信息输入到计算设备100或从计算设备100检索所述数据或其他信息。示例I/O设备110包括光标控制设备、键盘、小键盘、麦克风、监视器或其他显示设备、扬声器、打印机、网络接口卡、调制解调器、镜头、CCD或其他图像捕获设备等。
显示设备130包括能够向计算设备100的一个或多个用户显示信息的任何类型的设备。显示设备130可以是监视器、显示终端或视频投影设备等。
图形处理单元(GPU)132可以耦合到处理器102和/或显示设备130。GPU可以用于渲染计算机生成的图像并执行其他图形处理。GPU可以拥有诸如处理器102之类的通用处理器的一些或全部功能。GPU还可以拥有特定于图形处理的附加功能。GPU可以拥有坐标变换、阴影、纹理、光栅化以及其他有助渲染计算机生成图像的功能相关的硬编码和/或固线的图形功能。
接口106包括允许计算设备100与其他系统,设备或计算环境进行交互的各种接口。接口106可包括任意数量的不同网络接口120,诸如到局域网(LAN),广域网(WAN),无线网络和因特网的接口。其他接口包括用户接口118和外围设备接口122。接口106还可以包括一个或多个用户接口元素118。接口106还可以包括一个或多个外围接口,用于例如打印机、指示设备(鼠标,触控板等)、键盘等。
总线112允许处理器102,存储器设备104,接口106,大容量存储设备108和I/O设备110彼此之间通信,或与其他耦合到总线112的组件或设备通信。总线112代表若干类型的总线结构中的一种或多种,例如系统总线、PCI总线、IEEE1394总线、USB总线等等。
在一些实施例中,处理器102可以包括高速缓存134,诸如L1高速缓存和L2高速缓存之一或两者。类似地,GPU132可以包括缓存器136,该缓存器136可以同样包括L1缓存器和L2缓存器之一或两者。
为了更好地说明本发明,程序和其他可执行程序组件在本文中被示为离散的块,尽管这样的程序和组件可以在不同时间驻留在计算设备100的不同存储组件中,并且由处理器102执行。本文描述的系统和过程也可以以硬件、或硬件、软件和/或固件的组合来实现。例如,可以对一个或多个专用集成电路(ASIC)进行编程,以执行本文所述的系统或过程中的一个或多个。
参照图2,GPU 132或计算设备100的其他组件可以包括图2所示的组件。如图所示,缓冲器200、202可以存储将成为乘法/累加运算的对象的自变量。例如,一个缓冲器200可以存储用于实现图形处理操作(例如,内核)和人工智能操作(例如,作为卷积神经网络的一部分)的系数。另一个缓冲器202可以存储要乘以系数的值(通常称为“激活”)。当然,这仅是示例,并且任何值都可以被加载到缓冲器200、202中并且是乘法/累加运算的对象。缓冲器200、202可以被定义为存储器(RAM 114)的一部分或高速缓存134或136的一部分。
从缓冲器200、202取回的每个值可以被输入到分隔器204。分隔器204将所有值转换成无符号的值。例如,在某些应用程序中,值可以用以下格式表示:[类型][幅值]。[类型]字段指示[幅值]中的位代表带符号的还是无符号的数字,例如:0表示无符号,1表示带符号。当[类型]字段指示一带符号的值时,对于[幅度]字段中的最高有效位(MSB),负数将使用1表示,正数将使用0表示,并使用2的补码表示法。
分离器204的输出是来自缓冲器200的值的符号206和幅值208,以及来自缓冲器202的值的符号210和幅值212。
然后可以将符号206、210和幅度208、212输入到检查器214。检查器214评估幅度208、212以检测需要特殊处理的某些情况。特别地,为了限制执行实际的乘法和加法/累加运算的电路的大小,用于表示幅度208、212的位数可以被限制为位数N。例如,在将值定义为具有[类型][幅值]的形式时,N的值可以是实际输入到乘法电路的值的位数,并且可以小于[幅值]中的位数。例如,在输入值有9位的情况下,[幅值]字段中将有8位。因此,在一些实施例中,对于每个缓冲器200、202输入到乘法电路的位数N=7。
但是,对于一个带符号的值,七个位不足以表示八个带符号位可表示的最大负数的大小,例如,七个无符号的位只能表示0到127,而8个有符号的位可能表示-128到127。可以将有符号值的[幅值]字段表示的最大正数称为MaxSign,并且可以将其定义为2^N-1,其中[幅值]字段中的位数为N+1。
因此,检查器214可以检测幅度208、212超过MaxSign的实例,并做出响应来进行调整。下面参照图3描述处理该场景的方式。
对于无符号值,用N+1位表示的最大值为2^(N+1)-1。因此,从2^N到2^(N+1)-1的值不能用N个比特来表示。检查器214可以同样地测算无符号值的幅度208、212何时超过MaxSign,并相应地进行调整,如以下关于图3的描述。
检查器214的输出是参数对,例如,对于来自缓冲器200、202的一对值,检查器214的输出是要输入到定序器216的一对或多对参数。定序器216提交该参数对给计算单元218。特别地,可以有多个计算单元,例如,可以有8、64、1024或任意数量的计算单元。定序器216实现逻辑以将自变量提交给正确的计算单元。特别地,定序器216确保将来自缓冲器200、202的一对值的参数提交给计算单元218,以累积该对值的乘/加结果。
例如,在矩阵乘法中,输出矩阵中的每个值都是第一矩阵的行与第二矩阵的列的点积的结果。因此,在该示例中,定序器216提交来自缓冲器200、202的用于输入值对的参数,使得每个计算单元218可以累积特定行的元素与对应于列的元素的乘积之和。当然,这仅是一个示例,也可以对定序器216进行编程以根据任何期望的功能来累加乘积。
每个计算单元218可以包括:N位乘法器220,其将来自定序器216的一对参数作为输入;以及加法器222,其将乘法器220与累积缓冲器224内容的乘积作为输入。然后,将加法器222的输出写回到累积缓冲器224。累积缓冲器224的结果可以由一个GPU 132的控制器读取,或者由一个CPU 102根据某应用的控制读取,或根据本领域已知的读取、检索和处理乘法/累加运算结果的方法来读取。如图2所示,加法器222可以进一步将由分隔器204分隔的输入参数的符号作为输入。
参照图3,所示的方法300可以由检查器214执行,以便确定是将输入幅度208、212划分为两个参数还是输出包括输入幅度208、212的单个参数。方法300可以针对每个输入幅度208、212(以下称为“输入幅度”)执行该操作。
方法300可以包括步骤302:从分隔器204接收输入幅度的幅度和类型。如果为带符号的类型(步骤304),则方法300可以包括获取输入幅度的绝对值(步骤306)。
然后,方法300可以包括评估所述绝对值是否大于MaxSign(步骤308)。如果否,则可以将所述绝对值作为自变量(Arg)输入到定序器216(步骤314)。如果是,则方法300可以包括将所述绝对值分割成两个参数(Arg_1,Arg_2)(步骤310)。特别地,对于带符号的值,唯一可能大于MaxSign的值是MaxSign+1,因此,可以将Arg_1和Arg_2分别设置为(MaxSign+1)/2。例如,对于MaxSign=127,步骤310可以包括设置Arg_1=Arg_2=64。
然后,方法300可以包括将Arg_1和Arg_2输入到定序器216(步骤312)。
如果发现输入幅度不是来自带符号的数(步骤316),则方法300可以包括评估输入幅度是否大于MaxSign(步骤318)。如果是,则根据步骤318和320设置两个参数:Arg_1设置为等于输入参数减去MaxSign,而Arg_2设置为等于MaxSign。
然后,将Arg_1和Arg_2输入322到定序器。如果未发现输入大小超过MaxSign(步骤316),则将其作为自变量(Arg)输入到定序器216。
可以以协调的方式执行在步骤312、314、322和324处输入参数。具体地,针对来自缓冲器200的值的输入幅值而确定的参数,可以与针对来自缓冲器202的对应值的输入幅值而确定的参数协调地输入到定序器216。
如上所述,可以分别从缓冲器200、202中检索要相乘的第一值和第二值,并由分隔器204和检查器214进行处理。表1描述了,针对方法300的各种结果的,要被输入到定序器216的第一对和第二对参数对。特别地,对于第一值,方法300的可能结果是被指定为Arg1的单个输出自变量(步骤312或324),或是指定为Arg1_1和Arg1_2的两个输出参数(步骤312或步骤322)。对于第二值,可能的结果是被指定为单个参数Arg2(步骤312或324)或两个输出参数Arg2_1和Arg2_2(步骤312或步骤322)。在“定序器的输入”一列中,括号中的每对表示输入定序器216的一对参数,它们将被相乘并由计算单元218累加。
表1:输入到定序器的检查器输出
Figure BDA0003105445880000081
序列器216可以被编程为将成对的参数输入到对应于第一和第二值的同一计算单元218。定序器216可以类似地将每个自变量的符号与该自变量相关联。特别地,在将带符号的值分割成两个参数Arg_1,Arg_2时,定序器216把该符号与包含参数Arg_1,Arg_2中任何一个的所有参数对中的两个参数相关联。
图4示出了用于对由定序器216输入到计算单元218的一对参数执行倍数/累加计算的方法400。输入到定序器216的每对参数被输入到其中一个计算单元的乘法器220。该计算单元然后计算乘积P(步骤402)。方法400可以进一步包括评估一对参数中的参数的类型和/或符号(404)。例如,对于从不带符号的值获得的参数,在所有情况下,可以假定步骤404的符号为正。对于带符号的值,该符号将是符号206、210,其被分隔器204从带符号的值分开。
如果发现仅一个参数具有负号(步骤406),则方法400可以包括调整乘积P(步骤408)。在存在一个负参数的情况下,P的符号变为负,即,P被转换为负数,例如根据2的补码定义。然后,将负乘积P输入到加法器222(步骤410),然后求和器222将负乘积P与累加缓冲器224的当前内容求和,并将总和的结果写入累加缓冲器224。
如果发现没有参数是负数(步骤406),则将乘积P输入到加法器222(步骤410),然后求和器222将乘积P与累加缓冲器224的当前内容相加并将累加结果写入累加缓冲器224。
从以上描述显而易见的是,乘法器220可以制造得更小,同时仍具有图2和至图4中描述的方法提供的相同水平的精度。在诸如GPU的应用中,存在数百或数千个计算单元218,这使得电路面积和能耗大大减少。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

Claims (20)

1.一种设备,包括:
分配器,配置为接收两个输入值,对于所述两个输入值中的每个输入值:
如果该输入值是带符号的值,则将该输入值转换成一个符号值和一个幅度值;
如果该输入值是不带符号的值,则将该输入值的幅度值设置为该输入值;
检查器,被配置为将所述两个输入值的幅度值转换为一对或多对输入参数;
计算单元,被配置为对所述一个或多个输入参数对中的每一对以及所述两个输入值中的任何符号值执行运算,并根据该运算产生输出。
2.根据权利要求1所述的设备,其中,所述计算单元被编程为执行乘法/累加运算。
3.根据权利要求1所述的设备,其中,所述检查器被配置为将所述两个输入值的幅度值转换为所述一对或多对输入参数,使得所述一对或多对输入参数中的输入参数比所述两个输入值的幅度值具有更少的位。
4.根据权利要求3所述的设备,其中所述一对或多对输入参数中的输入参数比所述两个输入值的幅度值小一位。
5.根据权利要求4所述的设备,其中所述一对或多对输入参数中的输入参数具有N个位,N是预先定义的整数;
其中,检查器还被配置为通过以下方式将两个输入值的幅度值转换为所述一对或多对输入参数:
(a)对于所述两个输入值的幅度值中的一个第一幅度(M1),如果M1对应于两个输入值中带符号的且大于2^N-1的第一个输入值,则用参数Arg1_1=2^(N–1)和Arg1_2=2^(N–1)表示M1;
(b)对于所述两个输入值的幅度值中的一个第二幅度(M2),如果M2对应于所述两个输入值中的带符号的并且大于2^N-1的第二个输入值,则用参数Arg2_1=2^(N–1)和Arg2_2=2^(N–1)表示M2。
6.根据权利要求5所述的设备,其中,所述检查器被配置为通过以下方式将所述两个输入值的幅度值转换为所述一对或多对输入参数:
(c)对于第一幅度:
如果M1对应于两个输入值中的不带符号的第一个输入值,并且M1大于2^N-1,则将M1分为参数Arg1_1=M1-2^N+1和Arg1_2=2^N-1;
(d)对于第二幅度:
如果M2对应于两个输入值中的不带符号的第二个输入值,并且M2大于2^N-1,则将M2分为参数Arg2_1=M2-2^N+1和Arg2_2=2^N-1。
7.根据权利要求6所述的设备,其中,所述检查器被配置为通过以下方式将所述两个输入值的幅度值转换为所述一对或多对输入参数:
(e)如果M1小于或等于2^N-1,则将所述一对或多对参数的一个参数Arg1设置为M1;和
(f)如果M2小于或等于2^N-1,则将所述一对或多对参数的一个参数Arg2设置为M2。
8.根据权利要求7所述的设备,其中,所述检查器被配置为通过以下方式将所述两个输入值的幅度值转换为一对或多对输入参数:
如果(a)到(f)的结果对于M1为Arg1,对于M2为Arg2,则输出一对输入参数(Arg1,Arg2);
如果(a)到(f)的结果对于M1为Arg2_1,对于M2为Arg1和Arg2_2,则输出两对输入参数:(Arg1,Arg2_1)和(Arg1,Arg2_2);
如果(a)到(f)的结果对于M1是Arg1_1和Arg1_2,对于M2是Arg2_1和Arg2_2,则输出四对输入参数:(Arg1_1,Arg2_1),(Arg1_1,Arg2_2),(Arg1_2,Arg2_1),(Arg1_2,Arg2_2);
如果(a)到(f)的结果对于M1是Arg1_1和Arg1_2,对于M2是Arg2,则输出两对输入参数:(Arg1_1,Arg2)和(Arg1_2,Arg2)。
9.根据权利要求8所述的设备,其进一步包含定序器,所述定序器经编程以将所述一对或多对输入参数输入到所述计算单元,所述计算单元经编程以执行乘法累加运算。
10.根据权利要求9所述的设备,其中,所述计算单元被编程为针对所述一个或多个输入对中的每个输入对参数:
计算每对输入参数的乘积P;
(g)如果所述两个输入值中只有一个是负带符号的数字,其中每对输入参数是从所述两个输入值中根据(a)到(f)得出的,设置P=-P;
在执行(g)之后,将P加到累加缓冲区的内容中以获得一个和,并将该和写入累加缓冲区。
11.根据权利要求1所述的设备,其中,所述分离器被配置为从一个系数缓冲器和激活缓冲器读取所述两个输入值。
12.一个设备,被编程用于:
接收第一输入值和第二输入值;
将所述第一输入值和所述第二输入值转换为一对或多对输入参数,所述一对或多对输入参数中的每个自变量具有比所述第一输入值和所述第二输入值更少的位;
将一对或多对输入参数输入到计算单元中。
13.根据权利要求12所述的设备,其中,所述计算单元执行乘法累加运算。
14.根据权利要求12所述的设备,其中,所述一对或多对输入参数中的输入参数具有N个位,N是预先定义的整数;
其中,该设备还被配置为通过以下方式将第一输入值和第二输入值转换为一对或多对输入参数:
(a)如果该第一输入值是带符号的,并且该第一输入值的幅度(M1)大于2^N-1,则将M1分隔为参数Arg1_1=2^N-1)和Arg1_2=2^(N-1);
(b)如果该第二输入值是带符号的,并且该第二输入值的幅度(M2)大于2^N-1,则将M2分隔为参数Arg2_1=2^(N-1)和Arg2_2=2^(N-1)。
15.根据权利要求14所述的设备,其中,N比所述幅度值M1和M2中的位数少一位。
16.根据权利要求14所述的设备,其中,所述设备还被配置为通过以下方式将所述第一输入值和所述第二输入值转换为一对或多对输入参数:
(c)如果第一输入值不带符号的并且M1大于2^N-1,则将M1划分为参数Arg1_1=M1-2^N+1和Arg1_2=2^N-1;
(d)如果第二个输入值不带符号的且M2大于2^N-1,则将M2分为参数Arg2_1=M2-2^N+1和Arg2_2=2^N-1。
17.根据权利要求16所述的设备,其中,所述设备还被配置为通过以下方式将所述第一输入值和所述第二输入值转换为一对或多对输入参数:
(e)如果M1小于或等于2^N-1,则将一对或多对参数的参数Arg1设置为M1;和
(f)如果M2小于或等于2^N-1,则将一对或多对参数的参数Arg2设置为M2。
18.根据权利要求17所述的设备,其中,所述设备还被配置为通过以下方式将所述第一输入值和所述第二输入值转换为一对或多对输入参数:
如果(a)到(f)的结果对于M1为Arg1,对于M2为Arg2,则输出一对输入参数(Arg1,Arg2);
如果(a)到(f)的结果对于M1为Arg2_1,对于M2为Arg1和Arg2_2,则输出两对输入参数:(Arg1,Arg2_1)和(Arg1,Arg2_2);
如果(a)到(f)的结果对于M1是Arg1_1和Arg1_2,对于M2是Arg2_1和Arg2_2,则输出四对输入参数:(Arg1_1,Arg2_1),(Arg1_1,Arg2_2),(Arg1_2,Arg2_1),(Arg1_2,Arg2_2);
如果(a)到(f)的结果对于M1是Arg1_1和Arg1_2,对于M2是Arg2,则输出两对输入参数:(Arg1_1,Arg2)和(Arg1_2,Arg2)。
19.根据权利要求18所述的设备,其中,所述设备还被配置为针对所述一个或多个输入对中的每个输入对参数:
计算每对输入参数的乘积P;
(g)如果所述两个输入值中只有一个是负带符号的数字,其中每对输入参数是从所述两个输入值中根据(a)到(f)得出的,设置P=-P;
在执行(g)之后,将P加到累加缓冲区的内容中以获得一个和,并将该和写入累加缓冲区。
20.根据权利要求12所述的设备,其中,所述设备还被配置为从系数缓冲器读取所述第一输入值并且从激活缓冲器读取所述第二输入值。
CN202110635294.5A 2020-06-09 2021-06-08 改进的用于执行乘法/累加运算的设备 Pending CN113778376A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/897,190 US11301214B2 (en) 2020-06-09 2020-06-09 Device for performing multiply/accumulate operations
US16/897,190 2020-06-09

Publications (1)

Publication Number Publication Date
CN113778376A true CN113778376A (zh) 2021-12-10

Family

ID=76482988

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110635294.5A Pending CN113778376A (zh) 2020-06-09 2021-06-08 改进的用于执行乘法/累加运算的设备

Country Status (5)

Country Link
US (1) US11301214B2 (zh)
EP (1) EP3923132B1 (zh)
JP (1) JP2021197172A (zh)
KR (1) KR20210152956A (zh)
CN (1) CN113778376A (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5138570A (en) * 1990-09-20 1992-08-11 At&T Bell Laboratories Multiplier signed and unsigned overflow flags
US6347326B1 (en) * 1999-03-02 2002-02-12 Philips Electronics North America Corporation N bit by M bit multiplication of twos complement numbers using N/2+1 X M/2+1 bit multipliers
US9703531B2 (en) 2015-11-12 2017-07-11 Arm Limited Multiplication of first and second operands using redundant representation
US20190392287A1 (en) * 2018-06-22 2019-12-26 Samsung Electronics Co., Ltd. Neural processor
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
US11494331B2 (en) * 2019-09-10 2022-11-08 Cornami, Inc. Reconfigurable processor circuit architecture

Also Published As

Publication number Publication date
KR20210152956A (ko) 2021-12-16
US11301214B2 (en) 2022-04-12
JP2021197172A (ja) 2021-12-27
EP3923132B1 (en) 2024-01-17
EP3923132A1 (en) 2021-12-15
US20210382689A1 (en) 2021-12-09

Similar Documents

Publication Publication Date Title
JP6941499B2 (ja) ゼロ係数スキップ畳み込みニューラルネットワークエンジン
CN106951962B (zh) 用于神经网络的复合运算单元、方法和电子设备
CN113330421B (zh) 点积计算器及其操作方法
US10540145B2 (en) Method and processing apparatus for performing arithmetic operation
CN108229648B (zh) 匹配存储器中数据位宽的卷积计算方法和装置、设备、介质
JP5731937B2 (ja) ベクトル浮動小数点引数削減
JP2009505309A (ja) 拡張関数のための向上した浮動小数点演算部
CN110678862A (zh) 用于硬连线乘法器电路的数据打包技术
TW202319909A (zh) 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置
EP3937010A1 (en) Enhanced multiply accumulate device for neural networks
US20230161555A1 (en) System and method performing floating-point operations
EP3923132B1 (en) Device for performing multiply/accumulate operations
EP3358460B1 (en) Systems and methods for computing mathematical functions
JP2016201108A (ja) 数学的関数を計算するためのシステム及び方法
CN111931937B (zh) 图像处理模型的梯度更新方法、装置及系统
KR102281047B1 (ko) 4개의 입력 내적 회로를 사용하는 삼각 함수 계산
US20210318887A1 (en) Multiplier with Zero Skipping
CN115965047A (zh) 数据处理器、数据处理方法和电子设备
CN117827282A (zh) 指令生成方法、数据处理的方法及电子设备
CN116127261A (zh) 处理器中矩阵乘累加方法、装置及电子设备
CN115016762A (zh) 用于执行乘积累加运算的运算装置和运算方法
KR20210082970A (ko) 컨볼루션 연산을 수행하는 방법 및 장치

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