CN117785111A - 具有自适应保真度的计算硬件块 - Google Patents

具有自适应保真度的计算硬件块 Download PDF

Info

Publication number
CN117785111A
CN117785111A CN202311216556.XA CN202311216556A CN117785111A CN 117785111 A CN117785111 A CN 117785111A CN 202311216556 A CN202311216556 A CN 202311216556A CN 117785111 A CN117785111 A CN 117785111A
Authority
CN
China
Prior art keywords
operand
computing hardware
fidelity
bit strings
hardware block
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
CN202311216556.XA
Other languages
English (en)
Inventor
L·巴伊奇
M·特拉伊科维奇
S·吉拉尼
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.)
Tenstorente SA
Original Assignee
Tenstorente SA
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 Tenstorente SA filed Critical Tenstorente SA
Publication of CN117785111A publication Critical patent/CN117785111A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/3001Arithmetic instructions
    • 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
    • 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/4824Methods 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 using signed-digit representation
    • 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
    • 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
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths

Landscapes

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

Abstract

本文公开了与计算硬件相关的方法和系统。一种公开的使用计算硬件块执行乘法计算的方法包括存储用于乘法计算的第一操作数和第二操作数。第一操作数包括第一组位串。第二操作数包括第二组位串。该方法还包括使用计算硬件块在一组时间阶段中将第一组位串和第二组位串相乘。每个时间阶段使用来自第一组位串和第二组位串的不同组的位串。该组时间阶段的基数由保真度控制值确定。保真度控制值自适应地设置乘法计算执行的保真度。

Description

具有自适应保真度的计算硬件块
背景技术
如果你将一张纸对折仅仅50次,那么这张纸的厚度将相当于从地球到太阳的距离。虽然每一次折叠都是一个简单的操作,将堆叠的厚度增加两倍,但是总的任务一点也不简单。同样,现代计算系统进行的许多计算是由多个简单组件组成的复合计算。每个组件的计算执行起来可能很简单,但是组件的数量可能是天文数字般的大,导致合成计算一点也不简单。事实上,从计算时代开始就已经很容易处理的基本计算,总的来说,可能会导致对于给定的应用程序来说很难处理的复合计算。
在我们的社会中,对计算资源的需求正以指数速度增长。据估计,到本十年末,全球大多数人口将需要数据中心以超过每15秒一次的持续频率执行计算。因此,从用户便利的角度和从环境影响的角度来看,用于提高这些计算的效率的方法是合乎需要的。虽然数据中心的能耗对于上网冲浪的普通用户来说并不直接可见,但所有这些大量计算所需的能耗是不可忽略的。国际能源署估计,目前全球能源需求的大约1%已经归因于数据中心。由于对计算资源的需求呈指数增长,并且伴随着全球能源供应呈指数增长的低概率,用于提高计算效率的技术已经并将继续是至关重要的。
发明内容
公开了与计算电路领域相关的方法和系统。本文公开的方法和系统包括用于以自适应保真度(fidelity)执行乘法计算的方法和计算电路。乘法计算可以在一组时间阶段(temporal phase)中进行,计算的保真度随着每个时间阶段而增加。在特定实施例中,每个时间阶段的输出用于下一个时间阶段。保真度可以是自适应的,因为执行的时间阶段的数量可以从一个计算到下一个计算而变化,使得与其他计算相比,在某些计算上花费更多的资源。保真度可以由保真度控制值来确定,该保真度控制值可以在计算执行之前被设置,并且可以替代地或组合地在计算执行过程中被适应性地设置。保真度控制值可以基于操作数的评估、操作数是其一部分的一组数据结构、与操作数相关联的元数据、先前时间阶段的乘积以及各种其他因素来设置。
在本文公开的本发明的具体实施例中,提供了一种使用计算硬件块执行乘法计算的方法。该方法包括存储用于乘法计算的第一操作数和第二操作数。第一操作数包括第一组位串。第二操作数包括第二组位串。该方法还包括使用计算硬件块将第一组位串和第二组位串在一组时间阶段中相乘。每个时间阶段使用来自不同第一组位串和第二组位串的一组位串。该组时间阶段的基数(cardinality)由保真度控制值确定。保真度控制值设置乘法计算执行的保真度。
在本文公开的本发明的特定实施例中,提供了用于执行乘法计算的计算硬件块。计算硬件块包括至少一个存储用于乘法计算的第一操作数和第二操作数的计算机可读介质。第一操作数包括第一组位串。第二操作数包括第二组位串。计算硬件块还包括至少一个乘法器单元,其使用计算硬件块将第一组位串和第二组位串在一组时间阶段中相乘。每个时间阶段可以使用来自第一组位串和第二组位串的不同组的位串。该组时间阶段的基数由保真度控制值确定。计算硬件块还包括存储保真度控制值的控制寄存器。
在本文公开的本发明的特定实施例中,提供了用于执行乘法计算的计算硬件块。计算硬件块包括用于存储乘法计算的第一操作数和第二操作数的装置。第一操作数包括第一组位串。第二操作数包括第二组位串。计算硬件块还包括用于使用计算硬件块将第一组位串和第二组位串在一组时间阶段中相乘的装置。每个时间阶段使用来自第一组位串和第二组位串不同组的位串。该组时间阶段的基数由保真度控制值确定。保真度控制值设置乘法计算执行的保真度。
附图说明
图1示出了根据本文公开的本发明的具体实施例的使用计算硬件块和相关乘法块来执行乘法计算的一组方法的流程图。
图2示出了根据在本文公开的本发明的具体实施例的一组操作数的框图,每个操作数由一组位串组成,该组操作数在多个时间阶段中相乘。
图3示出了根据在本文公开的本发明的具体实施例的一组浮点操作数的框图,每个浮点操作数由一组位串组成,该组浮点操作数在多个时间阶段中相乘。
图4示出了根据在本文公开的本发明的具体实施例的一组方法的流程图,该组方法使用计算硬件块执行乘法计算并设置保真度控制值。
图5示出了根据本文公开的本发明的具体实施例的乘法和累加硬件块的框图。
图6示出了根据本文公开的本发明的具体实施例,基于与乘法运算的操作数相关联的元数据的评估,对乘法运算的保真度控制值的自适应设置。
图7示出了根据本文公开的本发明的具体实施例的用于训练神经网络的一组框图,包括设置与神经网络相关联的保真度控制值。
具体实施方式
在本文详细公开了根据以上发明内容的与计算电路领域相关的方法和系统。在本部分中公开的方法和系统是本发明的非限制性实施例,仅用于解释目的,并且不应该用于限制本发明的全部范围。应当理解,所公开的实施例可能不会彼此重叠。因此,一个实施例的一部分或其特定实施例可以落入或不落入另一个或其特定实施例的范围内,反之亦然。来自不同方面的不同实施例可以被组合或单独实施。在本发明的广泛框架内示出的代表性实施例的许多不同组合和子组合,对于本领域技术人员来说可能是显而易见的,但是没有明确示出或描述,不应该被解释为被排除。
图1示出了使用计算硬件块执行乘法计算的一组方法的流程100。流程100的乘法计算可以由任何计算硬件块来执行。例如,计算可以由乘法和累加硬件块来执行。然而,在图1的示例中,伴随的计算块是乘法块110。流程100代表一组方法。流程100的各个步骤是可选的,因为它们不是在流程图所表示的该组方法中的所有方法中都被执行。乘法计算的执行可以在多个时间阶段中执行,包括通过流程图中各种路径中所示步骤的循环。时间阶段的数量影响乘法计算的保真度,因为时间阶段数量的增加导致计算保真度的增加。增加的保真度和时间阶段的数量之间的关系可以是单调的。增加的保真度和时间阶段的数量之间的关系可以是线性的。在特定实施例中,由时间阶段产生的乘积输出可以是两个操作数的数学上精确的乘积的近似,并且来自每个后续时间阶段的乘积输出可以使近似更接近数学上精确的乘积。时间阶段的数量可以在第一时间阶段开始之前或者在计算执行期间被适应性地调整。以这种方式,对于由计算硬件块执行的每个计算,计算的保真度和资源消耗可以被适应性地交换,更多的时间阶段被用于应该以更高精度计算的计算。
流程100的步骤可以以各种方式实现。流程100的步骤可以通过执行存储在一个或多个非临时性计算机可读介质中的指令来实现。这些指令可由处理器执行并存储在存储器中。这些指令可以由处理核心、微处理器、专用集成电路、可编程门阵列或硬编码逻辑来执行。指令可以被硬编码到集成电路上的逻辑中,使得它们通过在硬件中被实例化来存储,并且可以响应于输入信号和可选的控制信号(例如一个或多个时钟信号)向逻辑的应用而被执行。这些指令可以由硬件块执行,例如乘法块110。指令可以存储在处理器的主存储器中,并由处理器的控制器或处理器的处理流水线来执行。指令可以包括处理核心的内核。指令可以是可编程控制器中的微码指令。在由计算块执行的方法的上下文中,指令可以由硬编码逻辑和块控制器(例如下面描述的块控制器116)的组合来执行。如果计算块是处理流水线的一部分,则指令可以由负责管理流水线的控制器执行,例如核心控制器。
本文公开的计算块可以以各种方式实现。例如,诸如乘法块110的计算块可以以各种方式实现。乘法块110可以是处理核心的计算流水线中的计算单元,或者是逻辑电路中的独立计算资源。乘法块110可以使用各种电子元件来实现,例如导线、晶体管和无源元件。乘法块110还可以包括更复杂的部件,例如布尔逻辑门、触发器、寄存器、可编程控制器和各种其他部件。乘法块110可以由集成电路的一个区域来定义,在该区域中,这里描述的乘法块110的功能被物理地执行。
流程100包括存储用于乘法计算的第一操作数和第二操作数的步骤101。操作数可以是将由诸如乘法块110的计算块执行的乘法计算的操作数。操作数可以从外部源提供给乘法块,并存储在寄存器中,直到乘法块的一个或多个乘法单元可用于执行乘法计算。虽然作为示例提供了接收两个操作数的乘法块的示例,但是应当理解,计算块可以接收两个以上的操作数。例如,乘法块可以接收要在乘法运算中使用的两个以上的操作数,例如其中传送到乘法块的所有操作数相乘以计算单个输出,或者其中多组操作数被传送到乘法块以允许乘法块同时进行多个独立的乘法。
在本文公开的本发明的特定实施例中,提供给计算块的操作数可以采取各种形式。操作数可以是作为各种数据元素存储的数字。例如,操作数可以存储为整数、浮点数或任何其他类型的数据结构或编码。作为另一个示例,操作数可以由2、4、8、16、32或任何数量的位来表示。操作数可以是更大的数据结构的一部分。例如,操作数可以是在矩阵乘法运算中使用的两个不同矩阵的尝试数。作为另一个示例,操作数可以是人工神经网络(ANN)层中的权重值、ANN的滤波器中的滤波器值、通过执行ANN生成的累积值以及与后面的数据结构相关联的其他值。操作数可以用多组位串来表示。例如,第一操作数可以是诸如图2中的操作数201的操作数。第二操作数可以是诸如图2中的操作数202的操作数。操作数可以包括多组位串。例如,操作数201包括包含第一位串205和第二位串204的第一组位串203,操作数202包括包含第一位串207和第二位串208的第二组位串206。在该示例中,所示的操作数201和操作数202是整数操作数,并且每个操作数的第一位串代表操作数的最高有效位,每个操作数的第二位串代表操作数的最低有效位。然而,在替代示例中,操作数可以是浮点数,并且每个操作数的一个或多个位串可以包括操作数的尾数(mantissas),而另一个或多个位串可以包括操作数的指数。操作数还可以在其位串组中包括任意数量的位串,并且每个位串的位可以小到1位,或者大到它们将被应用到的计算块的乘法单元所能容纳的程度。
在本文公开的本发明的不同实施例中,操作数可以以各种方式存储。操作数可以存储在用于存储乘法操作数的装置中,例如本段中公开的结构。操作数可以存储在至少一个非暂时性计算机可读介质中。操作数可以存储在一个或多个非暂时性计算机可读介质中,例如动态随机存取存储器、静态随机存取存储器、寄存器、触发器、锁存器或任何其他计算机可读存储器。操作数可以存储在乘法块的存储器中。例如,操作数可以存储在从乘法块110的输入接收操作数的寄存器中,例如寄存器111和寄存器112。操作数也可以存储在由计算流水线的控制器控制的乘法块外部的寄存器中。计算块可以接收控制信号,以确定操作数在存储器中存储多长时间。在特定实施例中,这些控制信号可以取决于用于执行计算的时间阶段的数量。例如,控制信号可以受到计算块的保真度控制值的影响,并保持操作数在寄存器中可用,直到计算的所有时间阶段完成。如果计算在单个时间阶段中完成,则在获得值之后,寄存器可以停止存储值。如果需要额外的时间阶段,可以指示寄存器继续存储操作数。
在特定实施例中,操作数可以大于将被用于相乘的计算块的数据路径。在本发明的特定实施例中,计算块可以是由具有给定宽度的数据路径定义的计算流水线的一部分,并且计算块可以接受具有该宽度的操作数,而计算块的乘法器单元或乘法器单元组具有比数据路径更小的数据宽度。例如,寄存器111和寄存器112的输入操作数可以是8位操作数,而乘法器单元113可以被设计成只接受4位操作数。虽然示出了单个乘法器单元113,但是乘法块可以具有远不止一个乘法器单元。在所示的情况下,如果乘法器单元113只能接受4位操作数,并且每个操作数都是8位的,则对于乘法块110来说,在单个时间阶段中使用输入操作数来执行全保真度乘法计算在物理上是不可能的。然而,在特定应用中,较低保真度的乘法执行可以提供足够的精度,并且乘法中只有计算的子集需要完全保真度地执行。因此,使用这样的乘法块,有可能在对精度影响最小的情况下提供显著的资源节省。在这些实施例中,乘法块110可以相对于传统的乘法器在尺寸上减小,否则传统的乘法器将在它的位置上使用。通常,与制造半导体元件相关的可变成本随着元件尺寸的增加而增加。这样,根据本段的计算块是其一部分的最终系统可以更紧凑,因此更便宜。
流程100还包括将位串相乘的步骤102。该步骤可以包括将两个或更多位串相乘。该步骤可以使用一个或多个乘法器单元来进行,每个乘法器单元取两个或更多个位串,将这些位串相乘,并生成乘积输出。例如,乘法器单元113可以从寄存器111接收位串,从寄存器112接收位串,并在输出115上输出这些位串的乘积。将位串相乘的步骤可以在一组时间短接中迭代地进行,以使用乘法器单元将第一组位串和第二组位串在该组时间阶段中相乘。例如,来自存储在寄存器111中的第一组位串的不同位串和来自存储在寄存器112中的第二组位串的不同位串可以顺序地或以流水线方式被传送到乘法器单元113。该组时间阶段中的每个时间阶段可以使用来自第一组位串和第二组位串的不同组的位串。该组时间阶段的基数可以由保真度控制值来确定。例如,控制寄存器114可以存储保真度控制值,该值确定乘法块110使用来自寄存器111和112的不同组位串执行给定计算的时间阶段的数量。由于输出115上的乘法乘积的精度将随着每个时间阶段而增加,因此保真度控制值也将由此设置乘法执行的保真度。
根据操作数的大小和数量以及操作数的数据类型,可以以不同的方式从要在多个时间阶段中相乘的操作数中选择不同组的位串。从每个操作数中取出位串并在每个阶段中组合的顺序以及每个位串中的位数可以称为模式。例如,保真度控制寄存器114可以由块控制器116读取,块控制器116负责通过选择器117将适当的值从寄存器111和112传递到乘法器单元113。选择器可以是可配置的交叉杆、总线、多路复用器或任何其他将值的子集从其输入传递到一个或多个输出的电路。从操作数中选择不同位串的顺序可以被硬编码到块控制器116中,或者可以被编程到存储在块控制器116可访问的存储器中的内核中,以由块控制器116执行,从而根据内核的指令以不同的模式获取位串。使用在存储于可由块控制器访问的存储器中的内核中定义模式的方法,或者由高级控制器定义的方法,相同的硬件块可以在不同的时间与不同的模式一起使用,这为系统控制保真度和资源消耗之间的权衡提供了额外的适应性。
在本发明的特定实施例中,在时间阶段的过程中,可以以不同的方式选择不同组的位串。在特定实施例中,将定义模式,使得当应用最大数量的时间阶段时,一个操作数的每个位串乘以另一个操作数的每个位串一次。例如,如果操作数是8位数字,并且时间阶段的最大数量是4,则如果期望在4个阶段中执行全保真度计算,则位串的大小将被设置为4位。在本发明的特定实施例中,每个串中的位数可以从一个时间阶段到另一个时间阶段是可变的。在本发明的其他实施例中,每个串中的位数在每个时间阶段可以是固定的。在本发明的特定实施例中,为第一时间阶段选择的位串组将是对计算的保真度具有最大影响的位串。例如,如果操作数是整数,则可以从两个操作数的最高有效位中选择在第一时间阶段中选择要相乘的位串。作为另一个示例,如果操作数是浮点数,则位串可以是浮点数的尾数的最高有效位。每个位串中的位数可以基于乘法块的乘法器单元的可允许的最大时间阶段数和数据路径宽度来设置。可以将位串的大小设置为乘法器单元的数据宽度,并且可以基于该数量和操作数的总大小来选择阶段的数量。
在本发明的特定实施例中,根据块控制器的命令,可以针对各种保真度阶段以不同模式选择位串。例如,在第一时间阶段,来自第一操作数的第一组位串可以包括要与第二组位串相乘的第一操作数的一组最高有效位(例如,第一操作数201的一组最高有效位205),第二组位串包括第二操作数的一组最高有效位(例如,第二操作数202的一组最高有效位207)。该组时间阶段中的第一时间阶段因此将第一操作数的一组最高有效位和第二操作数的一组最高有效位相乘。在图2的示例中,模式是首先选择两个操作数的最高有效位,然后选择最高有效位与另一个操作数的最低有效位的不同组合,然后在最后阶段选择两个操作数的最低有效位。通过相对于保存操作数的寄存器的地址进行硬编码,这些模式可以是固定的,并且可以同等地应用于任何一组操作数。替代地,可以基于与操作数相关联的元数据来调整模式,当操作数被加载到寄存器中时,该元数据被提供给块控制器。例如,如果预先知道给定的操作数对于计算的结果至关重要,则在为用于将这两个操作数相乘的模式选择位串时,该操作数的最高有效位可以相对于另一个更受青睐。
在本发明的不同实施例中,可以使用各种结构来实现位串从存储器到计算硬件块的移动的管理。例如,使用计算硬件块将第一组位串和第二组位串在一组时间阶段中相乘可以使用计算硬件块和用于将一组时间阶段中的第一组位串和第二组位串相乘的装置来实现。为了便于参考,这些特定的装置可以被称为乘法装置,并且可以如本段中所述来实现。用于相乘的装置可以包括存储保真度控制值的保真度控制寄存器、块控制器和选择器。保真度控制寄存器可以具有保真度控制寄存器114的特征。保真度控制寄存器可以是存储保真度控制值的位代码的读/写存储器。保真度控制值可以表示从1到计算块的时间阶段组的最高可能基数的值范围。最高可能基数可以等于乘法器块的乘积输出所需的时间阶段的数量,以等于乘法计算的数学上正确的乘积。块控制器可以具有本文描述的块控制器116的特征。块控制器可以配置为读取保真度控制寄存器中的值,并且在一些实施例中,可选地在每个时间阶段之后重新检查该值。选择器可以是多路复用器、可控交叉杆或者将存储操作数值的两个或多个寄存器连接到一个或多个乘法器单元的输入端的总线。选择器可以具有连接到块控制器的控制输入。控制输入可以连接到诸如块控制器116的块控制器,并确定哪些输入通过选择器传递到乘法器单元。选择器可以具有选择器117的特征。
每个时间阶段的输出可以是从中选择位串的两个操作数的乘法的数学上正确的输出的近似值。在本发明的特定实施例中,位串组的乘积输出可以被移位,以便创建数学上正确的输出的近似。该移位可以根据流程100的步骤105来完成。位的移位可以由连接到乘法器单元113的输出的移位器电路119控制。替代地,移位电路119可以是乘法装置的一部分。对于每个时间阶段,位串的移位量可以改变,以调整在该时间阶段中选择了哪些位。位串移位的量可以由块控制器的数字控制信号输出来控制。替代地,比特串的移位量可以被硬编码到移位电路的逻辑中,使得发送到选择器117的相同控制信号将指示移位电路119对于给定的时间阶段将输出移位多少。一般来说,可以将所选位串的位数之和移位到从中选择位串的操作数的最低有效位。
图2提供了如何为整数操作数选择位和将位移位的示例。在图2的示例中,操作数201是154,操作数202是229。操作数201包括一组位串203,其包括第一组位205和第二组位204。操作数202包括第二组位串206,其包括第一组位207和第二组位208。如图所示,在第一时间阶段,选择位串205和位串207并相乘。然后,通过在乘积右侧引入八个零,将结果移位八位。选择值8是因为在这种情况下,从两个选择的位串到从中选择位串的操作数的最低有效位的位数总和是8。第一位串205和第二位串207相乘的结果是32、256,这是正确数学输出35、266的第一低保真度估计。在剩余阶段,基于选择了哪些位串,乘法器块使用上述过程移位4个零或者根本不移位。
在本文公开的本发明的特定实施例中,每个时间阶段的输出可以在下一个阶段中重复使用,以增加输出的准确性。这样,流程100包括重用来自先前迭代的输出以更新输出的步骤103。如图所示,在图2中,第二时间阶段的输出,当被移位以包括所呈现的八位右边的四个零时,产生2240的乘积输出。以类似的方式,如图所示,第三时间阶段的输出是720。在每个阶段之后,在这个示例中,来自先前时间阶段的乘积输出可以通过被添加到当前乘积输出而被重用。因此,当完成所有四个图示的保真度阶段,并且对来自每个时间阶段的四个值求和时,输出等同于数学上正确的乘积35、266。如图所示,在每个阶段中,先前阶段生成的工作通过与最新的乘积一起累积而被重用。
重用先前时间阶段的输出的步骤可以由用于在该组时间阶段的下一个时间阶段中重用来自该组时间阶段中的一个时间阶段的计算硬件块的乘积输出的装置来进行。例如,该步骤可以由耦合到乘法器单元113的输出的累加电路如累加电路118来进行。累加电路可以被设计成接收新值,并使用加法器和诸如寄存器组之类的存储器将其加到存储的累计值上。累加电路还可以包括用于清除总数的控制输入。控制输入可以连接到乘法块的控制器,例如控制器116。最终输出值可以从用于累加总和的同一存储器中读取。
图1还包括将操作数的指数相加的步骤104。该步骤是可选的,因为它通常应用于存储为浮点数据结构的操作数,并且操作数可以是没有指数的整数数据结构。该步骤可以应用于当第一操作数被存储为第一浮点数据结构时的情况,例如操作数301被存储为浮点数据结构303并且具有第一指数位串305,并且可以应用于当第二操作数被存储为第二浮点数据结构时的情况,例如操作数302被存储为浮点数据结构304并且具有第二指数位串306。图3中的数据结构在其他方面具有与图2中相同的值。在所示的情况下,指数可以相加,在这种情况下将产生值3。步骤104可以由用于将操作数的指数相加的装置来进行。该装置可以是加法器电路。在特定实施例中,该装置可以包括选择器117和程序控制器116和加法器电路(未示出),程序控制器116被扩充以在第一时间阶段从寄存器111和112中的操作数中选择指数位串,值可以被传送到加法器电路以进行相加。
将两个操作数的指数相加,例如在步骤104的执行中,可以与乘法计算的第一时间阶段同时或在其之前进行,以生成系统的移位参考值。然后,可以在该组时间阶段中的每个阶段中使用移位参考值。在图3的示例中,如前一段所述,移位参考值可以是3。在对指数求和的步骤进行之后,在步骤105中,指数值可以用于移位步骤102的乘积。在本文公开的本发明的特定实施例中,移位乘积的这个步骤可以与基于从操作数中选择了哪些位串来移位乘积的步骤相结合。两种类型的移位可以由相同的移位电路进行,或者可以由不同的电路进行。例如,移位电路119可以接收来自加法器电路的移位参考值和指示给定的一组位串的适当移位的信号,并且根据这两个值来移位输出。可以参考图3描述如何在多个时间阶段中使用移位参考值的示例,其中选择了与图2中使用的相同的位串模式,但是每个阶段的移位值增加了3的移位参考值。
在本发明的特定实施例中,在下一个阶段中重用每个时间阶段可以包括以不同的量和不同的方向移动后续时间阶段的乘积输出,并且可以包括乘积输出的舍入。在图2的示例中,根据获得位串的操作数中的位置,每个阶段的输出被移位固定的量。然而,在替代方法中,输出移位的程度可以取决于乘积输出本身。例如,两个八位数的MSB相乘的输出0011只能移位六位而不是八位。作为另一个示例,来自两个浮点数的LSB相乘的输出1001可以被移位三位,使得只有值“1”保留,并且乘积输出的指数可以被相应地调整。在使用浮点数的实施例中,乘积输出可以基于多少舍入是可接受的、位串在操作数中的位置以及特定时间阶段的乘积输出而向左或向右移位,只要累加电路以及用于保持移位值的潜在独立寄存器跟踪每个乘积输出相对于累加总和的绝对指数以及累加总和本身的绝对指数移位了多少位。
如上所述,可以参考保真度控制寄存器中设置的保真度控制值来确定时间阶段的数量,从而确定计算的保真度。确定该值的方式和设置保真度控制值的方式在以下段落中描述。一般而言,保真度控制值可以基于操作数的评估、操作数是其一部分的一组数据结构、与操作数相关联的元数据、先前时间阶段的乘积以及各种其他因素来设置。该评估可以包括数学评估,以确定评估数据的直方图、标准偏差、方差、平均值、中值或其他统计值。该评估还可以包括对这些值进行的数学运算,例如与一组操作数相关联的元数据值的求和或中值计算。评估还可以包括简单地取值并将其加载到保真度控制寄存器中。例如,与操作数相关联的元数据本身可以是保真度控制值,当操作数被加载到计算块的操作数寄存器中时,该保真度控制值将被加载到计算块的保真度控制寄存器中。
在本文公开的本发明的不同实施例中,可以以各种方式设置时间阶段组的基数。基数可以在第一时间阶段的执行之前被固定。可替换地或组合地,基数可以通过执行该组时间阶段来修改。在这些情况中的任何一种情况下,可以相对于由同一硬件在不同时间执行的其他计算,适应性地确定给定计算的基数。因此,该系统可以自适应地确定相对于其他计算应用于给定计算的计算资源量。基数可以通过在该组时间阶段期间访问计算硬件块的控制寄存器来确定。
图4提供了根据在本文公开的本发明的具体实施例的用于进行乘法计算的一组方法的流程400。流程400包括流程100中可以如上所述执行的许多步骤。另外地,流程400包括在时间阶段的第一次执行之前访问控制寄存器以确定时间阶段组的基数的步骤401。该步骤可以包括访问控制寄存器,例如图1中的控制寄存器114。保真度控制值可以在该组时间阶段中的第一时间阶段之前设置在控制寄存器中。例如,在将任何位串从寄存器111或寄存器112提供给乘法器单元113之前,可以将值写入控制寄存器114。基数可以通过在一组时间阶段期间修改控制寄存器中的值来改变。因此,流程400包括在时间阶段的执行期间访问控制寄存器以确定时间阶段组的基数的步骤403。在特定实施例中,不实施步骤401,而实施步骤403,因为系统假设将执行至少一个时间阶段,并且与第一计算并行地或者在评估第一计算的输出之后设置值。
在本文公开的本发明的不同实施例中,可以基于相对于时间阶段的执行在不同时间发生的评估来设置时间阶段组的基数。如在步骤402中,可以在执行该组时间阶段之前基于对操作数的评估来设置基数。如在步骤404中,可以基于在时间阶段组的执行期间对时间阶段的输出的评估来设置基数。这两种方法的组合是可能的,包括其中使用第一评估来生成要设置的值,然后在时间阶段的执行期间修改该值。替代地,步骤402可以被移除,因为系统可以假设将进行至少一个时间阶段,并且步骤404所需的评估可以与第一时间阶段的执行并行或在第一时间阶段的执行之后进行。步骤404中的评估可以是操作数的评估或时间阶段的输出。
基数可以基于操作数的评估来设置。该步骤可以包括评估在其中选择操作数的数据结构,评估单个操作数,或者评估将在计算中使用的一组操作数。在这些评估中,系统可以被设计为基于操作数来选择预期需要的保真度级别。例如,如果确定乘法的操作数是4位数,则可以选择保真度阶段1,而如果确定乘法的操作数是8位数,则可以选择保真度阶段4。作为另一个示例,如果确定操作数(例如,要在计算中使用的第一和第二操作数)或从中取出操作数的数据结构包括围绕零值的高度聚类而没有大的偏差,则系统可以通过增加时间阶段组的基数来增加计算的保真度。第一操作数和第二操作数可以在一组数据结构中,并且评估可以确定该组数据结构的围绕零的分布程度。然后,系统可以基于该评估来设置保真度。系统可以使用基数和零附近的值的标准偏差之间的关系,以便基于该度量来设置基数。虽然在整个公开中使用了四个阶段的示例,但是潜在阶段的数量可以高得多,从而为这些值之间的复杂关系提供了机会。作为另一个示例,替换地或组合地,如果确定浮点操作数具有与要在相同计算中使用的其他操作数的指数值相比变化很大的指数值,则可以增加使用该值的计算的保真度,因为预期它会对使用来自数据结构的值的整体计算产生过大的影响。该步骤可以包括使用评估(evaluation)来评估第一操作数和第二操作数,其中第一和第二操作数是浮点数据结构,并且该评估确定该组浮点数据结构的一组指数的分布程度。
基数可替换地或组合地基于每个时间阶段的乘积输出的评估来设置。这种评估和设置可以根据流程400中的步骤404来进行。步骤404可以包括使用评估来评估来自该组时间阶段中的时间阶段的计算硬件块的乘积输出,并且基于该评估来设置保真度控制值。例如,评估可以评估输出的指数。如果输出要与其他值相加,例如在图5中,并且输出具有比当前累计总和或要加到总和上的最近值低得多的指数,则保真度可以保持较低(即,另一个时间阶段可以被取消或者时间阶段的数量可以显著减少)。
在本发明的特定实施例中,操作数或输出的分析可以包括评估操作数或输出的元数据。例如,保存在操作数标题中的数据或与操作数相关联存储的数据,这些数据表明操作数对给定计算有多重要。作为另一个示例,保存在操作数的标题中的数据可以标识操作数的数据类型(例如,8位整数),并且该元数据可以用于控制使用该操作数的计算的保真度。可以基于元数据来调整保真度级别,以增加标记有高重要性的操作数或输出的保真度,并降低标记有较低重要性的操作数或输出的保真度。作为另一个示例,类似的数据可以与操作数相关联地存储,并且与操作数向电路的传送一起、基于或响应于操作数向电路的传送而被提供给计算电路。在任一过程中,执行上述计算的方法可以扩展为包括根据关联存储保真度控制值以与第一操作数相关联,以及当将第一操作数加载到计算硬件块中时,在计算硬件块的控制寄存器中设置保真度控制值。在第一个示例中,该关联可以是操作数与其头部的关系,或者是保真度控制值和操作数之间的密钥对存储关系。
保真度控制值的设置和上述任何评估步骤可以由评估装置和设置装置来进行。用于设置的装置可以是这样的逻辑,该逻辑配置成获取评估的乘积或从外部系统传递的固定值,并将其转换成将由计算电路进行的时间阶段组的基数的数值,并将该数值写入保真度控制寄存器。该逻辑可以是时钟逻辑,并且可以与用于将操作数施加到计算电路的寄存器的定时信号同步。替代地,可以基于感测到相关联的操作数已经被写入寄存器来触发逻辑。用于评估的装置可以是硬编码逻辑,其接收操作数、元数据、产品输出或其他值作为输入,并输出评估的结果。用于评估的装置也可以是可编程逻辑,其被设计为执行用于更复杂评估的各种内核,并将评估输出到用于设置的装置。
图5示出了计算硬件块500的框图,其在乘法和累加电路的环境中使用了参考图1描述的方法。在那些实施例的特定上下文中,这种实现产生了特定的好处,其中时间阶段的乘积通过累加被重用,因为乘法累加电路已经需要与累加多个乘积的输出相关联的硬件。这样,相同或相似的硬件块既可以用来累加涉及不同操作数的多组乘法计算的乘积,也可以用来累加来自涉及这些操作数的计算的不同时间阶段的多个位串的乘积。
计算硬件块500包括一组寄存器,该组寄存器包括可以存储操作数的寄存器501和502。计算硬件块500还包括交叉杆503,其可以从寄存器中选择特定的位串,以传送到计算硬件块的乘法器单元。在所示情况下,乘法器单元包括乘法器504a、乘法器单元504b、乘法器单元504c和乘法器单元504d。这样,在控制输入505的影响下,计算硬件块500可以一次向乘法器单元提供四对位串。这允许计算硬件块同时管理四个不同操作数对的乘法的时间阶段。对于这个示例,来自寄存器501的位串和来自寄存器502的位串将通过交叉杆503提供给乘法器504a。此外,本文公开的计算硬件块的硬件可以以流水线方式使用,使得在时间阶段完成之前,不同组操作数的新位串被提供给乘法器单元。
计算硬件块500可以基于操作数的指数和位串在其操作数内的位置来移位乘法乘积。计算硬件块500包括指数电路506,其可以对寄存器中的操作数的指数位串求和。在控制输入505的控制下,指数位串可以通过交叉杆503从寄存器传递到指数电路506。在本发明的特定实施例中,指数电路506将从应用于乘法器的所有操作数中确定最大的指数对,并参考该最大值为每个乘积输出生成移位参考值。具有最大指数对的乘积输出将具有为零的移位参考值,并且基于乘积与生成参考值的乘积相比小多少,其他乘积将具有非零的移位参考值。指数电路506然后可以将每个乘法器块的单独参考值输出到一系列移位电路。在所示情况下,移位电路是移位电路507a、移位电路507b、移位电路507c和移位电路507d。这些电路可以从指数电路506接收单独的参考移位值。移位电路可以对准乘积,以便在乘积和电路508中求和。在特定实施例中,如果参考移位值超过给定量,例如八位,则移位电路将为乘积和电路产生零输出。移位电路也可以被设计成基于控制输入505来移位乘积输出。例如,移位电路可以将从给定模式中选择的特定位串与值相关联,以移位乘积。结果,移位电路将基于操作数的指数和从操作数中选择的位串的位置来移位乘法器的输出。
通过使用乘积和电路508累加输出,计算硬件块500可以累加超过块中乘法单元数量的多对操作数的多个乘积。这些值可以在被称为目的寄存器的寄存器中累加。由于在乘积和电路508中对值求和时已经考虑了位串的位置,所以相同的电路也可以累加在不同的时间阶段中从寄存器中的相同操作数取得的多对位串的多个乘积。只要外部控制器保持寄存器中的操作数或向寄存器提供新的操作数,并且控制输入505应用适当的模式和移位值,电路将继续适当地累加。如图所示,乘积和电路508的输出可以被发送到移位电路509,移位电路509也接收来自指数电路506的最大指数输出。由此产生的移位可以产生适当指数的乘积值之和。然后,移位电路510也可以基于该指数值对目的寄存器中的值进行移位,使得这两个值对齐,以便在加法器电路511中求和。求和后,新累加的值可以存储回目标寄存器。
图6示出了根据本文公开的本发明的具体实施例,基于与乘法运算的操作数相关联的元数据的评估,对乘法运算的保真度控制值的自适应设置。图6包括人工神经网络600的图示,其中输入向量[X]601由包括滤波器604和神经网络的全连接层的一组滤波器处理,以产生输出向量[Y]603。
网络600已经用元数据标记,以强调网络的某些部分(在图中加粗),这些部分在响应给定的输入[X]提供适当的输出[Y]方面对于整个网络的保真度是至关重要的。该元数据可以包括与人工神经网络600的部分相关联的保真度控制值。元数据又可以与操作数相关联,因为操作数是网络部分的一部分。元数据可以是固定的,并基于网络的先前执行来设置,或者它可以基于提供给神经网络的特定输入而变化。在所示的情况下,神经网络的部分可以是与框620中所示的元数据矩阵621相关联的过滤器604。元数据可以是与过滤器604的值矩阵中的一组操作数相关联的值矩阵。该图示进一步以保真度控制值622的形式示出了元数据值矩阵中的特定值,该值与过滤器604相关联地存储,更具体地,与过滤器604内的操作数623相关联地存储。
流程610包括与人工神经网络的一部分相关联地存储保真度控制值的步骤611。该步骤可以包括将值存储在元数据的矩阵621中,使得从过滤器604中取出操作数的计算系统可以辨别矩阵621中的哪些值对应于哪些操作数。该步骤可以这样进行,其中矩阵621和过滤器604关联存储,并且系统已知的映射将矩阵621的值链接到过滤器604中的操作数。流程610继续评估元数据并在将操作数加载到计算硬件块中时在计算硬件块的控制寄存器中设置保真度控制值的步骤。该步骤可以代替流程400中的步骤402来执行。该步骤可以由基于两个矩阵的关联存储和它们之间的映射来获取操作数623和保真度控制值622的系统来执行。该步骤可以包括获得存储的保真度控制值并将其加载到寄存器中以设置该值。替代地,步骤611可以包括存储与操作数623相关联的元数据,并且步骤612可以包括对元数据进行的数学分析或运算,以将其转换成保真度控制值来存储在保真度控制寄存器中。
步骤611可以替换为与计算相关联地存储保真度控制值的步骤,其中该计算使用第一操作数和第二操作数。在这些实施例中,保真度控制值可以与用于执行神经网络600的特定指令相关联地存储,并且可以在与该计算相关联的操作数在步骤612的迭代中被加载到保真度控制寄存器中时被加载到保真度控制寄存器中。在这种情况下,步骤612可以包括当加载计算以供计算硬件块的至少一个乘法器单元执行时,在计算硬件块的控制寄存器中设置保真度控制值的稍微不同的过程。值得注意的是,在这些实施例中,当给定操作数被加载到计算电路中时,不同的保真度控制值可以在不同的时间被加载到保真度控制寄存器中,因为在给定神经网络的整个执行过程中,给定操作数可以用于许多不同的计算中。
在本发明的特定实施例中,保真度控制值以及保真度控制值与操作数、乘积输出或计算的关联可以通过编程来定义。例如,本文公开的方法可以包括编译用于复杂计算的源代码的步骤,其中复杂计算包括乘法计算,其中保真度控制值在源代码中定义,并且根据本文公开的方法利用该保真度控制值的指令由编译器从源代码中生成。保真度控制值可以被定义为静态数字,并且与操作数相关联。例如A[1:8].fc=1会将保真度控制值1赋给被定义为向量A的前八位的操作数。这样,每当在乘法计算中使用该特定操作数时,保真度控制值将被设置为1,并且对于那些计算将只执行单个时间阶段。保真度控制值也可以通过算法定义,并与操作数相关联。例如,A.fc=A[n]+A[n-1]+A[n-2]+A[n-3],其中“n”是A中的位数,将分配等于1的操作数的最高有效位数的可变保真度控制值。源代码定义还可以将特定计算与保真度控制值相关联。比如(AxB).fc=1会将单个时间阶段分配给计算A×B中涉及的所有乘法运算。源代码定义可以将复杂计算的特定部分,例如将由计算系统执行的神经网络部分与保真度控制值相关联。例如,604.fc=1将使用来自人工神经网络600中的滤波器604的任何操作数为所有乘法运算分配单个时间阶段。源代码定义还可以将特定输出与保真度控制值相关联。例如,如果(AxB).f.1>1000;然后如果A×B的计算中涉及的任何乘法的第一时间阶段的乘积大于8,则(AxB).fc=2会将保真度控制值2分配给这种乘法。
图7示出了根据本文公开的本发明的具体实施例的用于训练神经网络的一组框图,包括设置与神经网络相关联的保真度控制值。框700示出了神经网络的标准训练迭代,其中输入[X]被馈送到网络,并且损失函数701被用于更新网络。在这种情况下,损失函数是输出[Y]和预期输出[Z]之差。然后,该损失函数的输出用于将网络的值,例如滤波器702中操作数的值,更新为一组新值,如702’所示。本文公开的本发明的具体实施例可以包括使用损失函数和训练例程来训练人工神经网络的步骤703。如框710的训练例程所示,不仅诸如过滤器702的网络值被更新,而且相关联的元数据711,诸如与那些过滤器值相关联的保真度控制值也被更新。在这些实施例中,可以在训练例程中调整与网络相关联的保真度控制值。同样,如值“αF”所示,保真度控制值可以是损失函数的参数。这样,最小化各种计算的时间阶段的数量是训练例程考虑的目标,从而将调整值以平衡效率和准确性纳入训练过程。为了解释的目的,损失函数704被简化,并且根据这里公开的本发明的具体实施例,可以利用更复杂的损失函数。根据图7的训练可以以这样的方式进行,即,当到了用操作数执行计算的时候,获得将在步骤402的迭代中使用的一组值,其中保真度控制值已经与那些操作数或计算相关联。
在本发明的具体实施例中,一个或多个保真度控制值可以是与其相关联的ANN的超参数。例如,一个或多个保真度控制值可以与整个ANN、ANN的部分、层、过滤器或ANN的权重相关联,或者与执行ANN所需的计算中使用的特定操作数相关联。在给定对计算资源消耗的期望限制的情况下,可以选择超参数来优化相关联的ANN的训练时间、推理时间、推理速度或其他特征。一个或多个保真度控制值可以使用强力分析方法或任何用于搜索超参数的常规方法来选择,所述超参数用于调整相关技术中已知的ANN的性能。
根据本公开的处理器可以包括至少一个非暂时性计算机可读介质。该至少一个处理器可以包括计算节点网络中的至少一个计算节点。该介质可以包括处理器上的高速缓冲存储器。该介质还可以包括不与唯一计算节点相关联的共享存储器。该介质可以是共享存储器,可以是共享随机存取存储器,并且可以是例如DDR DRAM。共享存储器可以由多个通道访问。非暂时性计算机可读介质可以存储执行本文公开的任何方法所需的数据、本文公开的指令数据和/或本文公开的操作数数据。计算机可读介质还可以存储指令,当由系统执行时,这些指令使得系统执行本文公开的方法。本文使用执行指令的概念来描述进行任何逻辑或数据移动操作的设备的操作,即使“指令”完全在硬件中指定(例如,与门执行“与”指令)。该术语并不意味着赋予设备可编程的能力。
根据本公开的处理器可以包括至少一个如上所述的逻辑电路。逻辑电路可以包括有源和无源器件,并且以一个或多个逻辑电平工作。逻辑电路可以使用布尔逻辑进行操作,并且可以是同步时钟电路或异步电路。逻辑电路可以包括逻辑门、触发器、锁存器、寄存器和响应数字化逻辑输入产生数字化逻辑输出所需的其他基本电路元件。逻辑电路可以直接在硬件中实现,使得逻辑或操作由实现或门的晶体管的物理集合来进行,并且数据元素的存储涉及至少一个触发器、延迟线或其他物理存储元件的物理状态。
虽然已经针对本发明的特定实施例详细描述了说明书,但是应当理解,本领域技术人员在理解前述内容的基础上,可以容易地想到这些实施例的变更、变化和等同物。本文公开的任何方法都可以由处理器结合计算机可读介质来执行,该计算机可读介质结合上述其他硬件元件来存储用于这些方法的指令。在不脱离本发明的范围的情况下,本领域的技术人员可以实施对本发明的这些和其他修改和变化,本发明的范围在所附权利要求中更具体地阐述。

Claims (25)

1.一种使用计算硬件块执行乘法计算的方法,包括:
存储用于乘法计算的第一操作数和第二操作数,其中所述第一操作数包括第一组位串,并且其中所述第二操作数包括第二组位串;以及
使用所述计算硬件块在一组时间阶段内将所述第一组位串和所述第二组位串相乘,其中每个时间阶段使用与所述第一组位串和所述第二组位串不同的一组位串,并且其中所述一组时间阶段的基数由保真度控制值确定;
其中所述保真度控制值设置所述乘法计算执行的保真度。
2.根据权利要求1所述的方法,还包括:
在所述一组时间阶段的下一个时间阶段中,重用来自所述一组时间阶段中的一时间阶段的计算硬件块的乘积输出。
3.根据权利要求1所述的方法,其中:
所述第一组位串包括所述第一操作数的一组最高有效位;
所述第二组位串包括所述第二操作数的一组最高有效位;以及
所述一组时间阶段中的第一时间阶段将所述第一操作数的最高有效位组和所述第二操作数的最高有效位组相乘。
4.根据权利要求1所述的方法,其中:
所述第一操作数被存储为具有第一指数位串的第一浮点数据结构;
所述第二操作数被存储为具有第二指数位串的第二浮点数据结构;
所述方法还包括将所述第一指数位串和所述第二指数位串相加以获得移位参考值;以及
所述一组时间阶段中的每个阶段使用所述移位参考值。
5.根据权利要求1所述的方法,其中:
所述一组时间阶段的基数通过在所述一组时间阶段期间访问所述计算硬件块的控制寄存器来确定。
6.根据权利要求5所述的方法,其中:
在所述一组时间阶段中的第一时间阶段之前,在所述控制寄存器中设置所述保真度控制值;以及
所述保真度控制值在所述一组时间阶段期间不变。
7.根据权利要求1所述的方法,其中:
所述保真度控制值在所述一组时间阶段中的第一时间阶段之前被设置;以及
所述保真度控制值在所述一组时间阶段期间改变。
8.根据权利要求1所述的方法,还包括:
使用评估来评估所述第一操作数;以及
基于所述评估来设置所述保真度控制值。
9.根据权利要求8所述的方法,还包括:
使用所述评估来评估所述第二操作数;
其中:(i)所述第一操作数和所述第二操作数在一组数据结构中;以及(ii)所述评估确定所述一组数据结构围绕零的分布程度。
10.根据权利要求8所述的方法,还包括:
使用所述评估来评估所述第二操作数;
其中:(i)所述第一操作数和所述第二操作数在一组浮点数据结构中;以及(ii)所述评估确定所述一组浮点数据结构的一组尾数的分布程度。
11.根据权利要求1所述的方法,还包括:
使用评估来评估来自所述一组时间阶段中的时间阶段的所述计算硬件块的乘积输出;以及
基于所述评估设置所述保真度控制值。
12.根据权利要求5所述的方法,还包括:
根据关联,与所述第一操作数相关联地存储所述保真度控制值;以及
当将所述第一操作数加载到所述计算硬件块中时,在所述计算硬件块的所述控制寄存器中设置所述保真度控制值。
13.根据权利要求12所述的方法,其中,所述关联由以下引起:
所述保真度控制值与人工神经网络的一部分相关联;以及
所述第一操作数是所述人工神经网络部分的一部分。
14.根据权利要求5所述的方法,还包括:
与计算相关联地存储所述保真度控制值,其中所述计算使用所述第一操作数和所述第二操作数;以及
当加载由所述计算硬件块的至少一个乘法器单元执行的所述计算时,在所述计算硬件块的所述控制寄存器中设置所述保真度控制值。
15.根据权利要求1所述的方法,还包括:
编译用于复杂计算的源代码,其中所述复杂计算包括乘法计算;
其中所述保真度控制值在所述源代码中定义。
16.根据权利要求1所述的方法,还包括:
使用损失函数和训练例程来训练人工神经网络,其中所述人工神经网络的执行包括所述乘法计算;
其中:(i)所述保真度控制值是所述损失函数的参数;以及(ii)在所述训练例程期间调整所述保真度控制值。
17.一种用于执行乘法计算的计算硬件块,包括:
至少一个非暂时性计算机可读介质,所述至少一个非暂时性计算机可读介质存储用于所述乘法计算的第一操作数和第二操作数,其中所述第一操作数包括第一组位串,并且其中所述第二操作数包括第二组位串;
至少一个乘法器单元,所述至少一个乘法器单元使用所述计算硬件块将所述第一组位串和所述第二组位串在一组时间阶段中相乘,其中每个时间阶段使用来自所述第一组位串和所述第二组位串的不同组的位串,并且其中所述一组时间阶段的基数由速率控制值确定;以及
控制寄存器,所述控制寄存器存储所述保真度控制值。
18.一种用于执行乘法计算的计算硬件块,包括:
用于存储用于所述乘法计算的第一操作数和第二操作数的装置,其中所述第一操作数包括第一组位串,并且其中所述第二操作数包括第二组位串;以及
用于使用所述计算硬件块将所述第一组位串和所述第二组位串在一组时间阶段中相乘的装置,其中每个时间阶段使用来自所述第一组位串和所述第二组位串的不同组的位串,以及
其中所述一组时间阶段的基数由保真度控制值确定;以及
其中所述保真度控制值设置所述乘法计算执行的保真度。
19.根据权利要求18所述的计算硬件块,还包括:
用于在所述一组时间阶段的下一个时间阶段中重用来自所述一组时间阶段中的一时间阶段的所述计算硬件块的乘积输出的装置。
20.根据权利要求18所述的计算硬件块,还包括:
用于使用评估来评估所述第一操作数的装置;以及
用于基于所述评估来设置所述保真度控制值的装置。
21.根据权利要求20所述的计算硬件块,还包括:
用于使用所述评估来评估所述第二操作数的装置;
其中:(i)所述第一操作数和所述第二操作数在一组数据结构中;以及(ii)所述评估确定所述一组数据结构围绕零的分布程度。
22.根据权利要求20所述的计算硬件块,还包括:
用于使用所述评估来评估所述第二操作数的装置;
其中:(i)所述第一操作数和所述第二操作数在一组浮点数据结构中;以及(ii)所述评估确定所述一组浮点数据结构的一组尾数的分布程度。
23.根据权利要求18所述的计算硬件块,还包括:
用于使用所述评估来评估来自所述一组时间阶段中的时间阶段的所述计算硬件块的乘积输出的装置;以及
用于基于所述评估设置所述保真度控制值的装置。
24.根据权利要求18所述的计算硬件块,还包括:
所述计算硬件块的控制寄存器,其中所述一组时间阶段的基数通过在所述一组时间阶段期间访问所述计算硬件块的所述控制寄存器来确定;
用于根据关联与所述第一操作数相关联地存储所述保真度控制值的装置;以及
用于当将所述第一操作数加载到所述计算硬件块中时,在所述计算硬件块的所述控制寄存器中设置所述保真度控制值的装置。
25.根据权利要求18所述的计算硬件块,还包括:
计算硬件块的控制寄存器,其中所述保真度控制值的所述基数通过在所述一组时间阶段期间访问所述计算硬件块的所述控制寄存器来确定;
用于与计算相关联地存储所述保真度控制值的装置,其中所述计算使用所述第一操作数和所述第二操作数;以及
用于当加载由所述计算硬件块的至少一个乘法器单元执行的所述计算时,在所述计算硬件块的所述控制寄存器中设置所述保真度控制值的装置。
CN202311216556.XA 2022-09-29 2023-09-19 具有自适应保真度的计算硬件块 Pending CN117785111A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/955,539 2022-09-29
US17/955,539 US20240111525A1 (en) 2022-09-29 2022-09-29 Multiplication hardware block with adaptive fidelity control system

Publications (1)

Publication Number Publication Date
CN117785111A true CN117785111A (zh) 2024-03-29

Family

ID=88237898

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311216556.XA Pending CN117785111A (zh) 2022-09-29 2023-09-19 具有自适应保真度的计算硬件块

Country Status (3)

Country Link
US (1) US20240111525A1 (zh)
EP (1) EP4345600A1 (zh)
CN (1) CN117785111A (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2287333B (en) * 1994-03-11 1998-02-11 Advanced Risc Mach Ltd Data processing multiplier
US10445451B2 (en) * 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
CN111971649A (zh) * 2018-03-30 2020-11-20 国立研究开发法人理化学研究所 运算装置和运算系统
US10853067B2 (en) * 2018-09-27 2020-12-01 Intel Corporation Computer processor for higher precision computations using a mixed-precision decomposition of operations

Also Published As

Publication number Publication date
EP4345600A1 (en) 2024-04-03
US20240111525A1 (en) 2024-04-04

Similar Documents

Publication Publication Date Title
CN106909970B (zh) 一种基于近似计算的二值权重卷积神经网络硬件加速器计算装置
US20210264273A1 (en) Neural network processor
JP3605181B2 (ja) 掛け算累算命令を使用したデータ処理
JP2019148896A (ja) 演算処理装置、情報処理装置、情報処理方法、およびプログラム
GB2330226A (en) Digital signal processor for performing fixed-point and/or integer arithmetic
US10642578B2 (en) Approximating functions
JP2019148972A (ja) 演算処理装置、情報処理装置、情報処理方法、およびプログラム
JP2019139338A (ja) 情報処理装置、情報処理方法、およびプログラム
US20190235834A1 (en) Optimization apparatus and control method thereof
JP7292297B2 (ja) 確率的丸めロジック
CN116362314A (zh) 一种存算一体装置和计算方法
CN117785111A (zh) 具有自适应保真度的计算硬件块
US20230075348A1 (en) Computing device and method using multiplier-accumulator
CN110659014A (zh) 乘法器及神经网络计算平台
WO2019208581A1 (ja) インバーティブルロジック回路装置
US20220334799A1 (en) Method of Performing Hardware Efficient Unbiased Rounding of a Number
JPWO2020084723A1 (ja) 演算処理装置及び演算処理装置の制御方法
EP4231135A1 (en) Method and system for calculating dot products
Fathi et al. Improving Accuracy, Area and Speed of Approximate Floating-Point Multiplication Using Carry Prediction
Tan et al. Efficient Multiple-Precision and Mixed-Precision Floating-Point Fused Multiply-Accumulate Unit for HPC and AI Applications
GB2615774A (en) Method and system for calculating dot products
CN116610285A (zh) 用于计算点积的方法和系统
JP2508286B2 (ja) 平方根演算装置
Bowlyn et al. A novel distributed arithmetic multiplierless approach for computing complex inner products
Sunitha et al. ENHANCING FPGA ACCELERATORS: HIGH-PERFORMANCE MULTIPLIERS WITH ADVANCED CARRY CHAINS

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication