CN114402289A - 多模式运算电路 - Google Patents
多模式运算电路 Download PDFInfo
- Publication number
- CN114402289A CN114402289A CN202080064242.0A CN202080064242A CN114402289A CN 114402289 A CN114402289 A CN 114402289A CN 202080064242 A CN202080064242 A CN 202080064242A CN 114402289 A CN114402289 A CN 114402289A
- Authority
- CN
- China
- Prior art keywords
- mode
- operand
- format
- bit
- floating
- 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 OR CALCULATING; 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
- G06F7/49915—Mantissa overflow or underflow in handling floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F7/5324—Multiplying 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3812—Devices capable of handling different types of numbers
- G06F2207/3824—Accepting both fixed-point and floating-point numbers
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Nonlinear Science (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Logic Circuits (AREA)
Abstract
FPGA的片包括多模式运算电路。多模式运算电路通过控制信号被配置成以整数模式、浮点模式或两者操作。在一些示例实施方式中,可以选择多个整数模式(例如,无符号、二进制补码和原码),支持多个浮点模式(例如,16位尾数和8位符号,8位尾数和6位符号,以及6位尾数和6位符号),或它们的任何合适的组合。片还可以将存储器电路与运算电路融合。片的多个实例之间的直接连接也是可用的,使得能够将多个片视为较大的存储器或运算电路。通过使用称为级联输入和输出的这些连接,进一步增加了运算电路的输入和输出带宽。
Description
优先权要求
本申请要求于2019年8月8日提交的名称为“Multiple Mode ArithmeticCircuit,”的美国专利申请第16/535,878号的优先权,通过引用,该申请的全文并入本文。
背景技术
现场可编程门阵列(FPGA)由使用可重配置路由网络进行互连的可编程逻辑块阵列组成。逻辑块在类型上各不相同,并且通常包括可重配置逻辑、存储器和运算逻辑。可重配置逻辑通常用查找表来实现。
不同的逻辑块用于提供不同模式(例如,整数模式和浮点模式)下的运算功能。因此,提供多个模式下的运算功能的FPGA将一些片(tiles)专用于每个模式。
附图说明
在附图的图中以示例而非限制的方式示出了所公开技术的一些实施方式。
图1是根据一些示例实施方式的使用多模式运算电路的FPGA的片(tile)的高级示意图。
图2是根据一些示例实施方式的多模式运算电路的高级示意图。
图3是根据一些示例实施方式的融合存储器和运算电路的FPGA片(FPGA tile)的存储器电路部分的高级示意图。
图4是根据一些示例实施方式的多模式运算电路的一部分的示意图。
图5是根据一些示例实施方式的多模式运算电路的一部分的示意图。
图6是根据一些示例实施方式的多模式运算电路的一部分的示意图。
图7是根据一些示例实施方式的多模式运算电路的一部分的示意图。
图8是根据一些示例实施方式的多模式运算电路的一部分的示意图。
图9是示出根据一些示例实施方式的多模式运算电路的四个操作数的操作数类型和输入的表格。
图10是示出根据一些示例实施方式的多模式运算电路的四个操作数的操作数类型和输入的表格。
图11是示出根据一些示例实施方式的多模式运算电路的四个操作数的操作数类型和输入的表格。
图12是示出根据一些示例实施方式的多模式运算电路的四个操作数的操作数类型和输入的表格。
图13是示出根据一些示例实施方式的多模式运算电路的四个操作数的操作数类型和输入的表格。
图14是示出根据一些示例实施方式的多模式运算电路的四个操作数的操作数类型和输入的表格。
图15是示出根据一些示例实施方式的多模式运算电路的四个操作数的操作数类型和输入的表格。
图16是示出根据一些示例实施方式的多模式运算电路的四个操作数的操作数类型和输入的表格。
图17是示出根据本发明各种实施方式的通过多模式运算电路执行的方法的操作的流程图。
图18是根据一些示例实施方式的多模式运算电路的高级示意图。
图19是根据一些示例实施方式的用于将定点值转换为块浮点值的减少延迟电路(a reduced-delay circuit)的示意图。
图20是示出根据一些示例实施方式的用于控制本文所描述的电路的构造的系统的部件的框图。
具体实施方式
现在将描述用于多模式运算电路的示例方法、系统和电路。在以下描述中,阐述了具有特定于示例的细节的多个示例以提供对示例实施方式的理解。然而,对于本领域普通技术人员来说显然的是,可以在没有这些特定于示例的细节和/或具有与本文给出的细节不同的组合的情况下实践这些示例。因此,给出具体实施方式是为了简化说明的目的,而不是限制。
FPGA的片(tile)包括多模式运算电路。多模式运算电路通过控制信号被配置成以整数模式、浮点模式或两者操作。在一些示例实施方式中,可以选择多个整数模式(例如,无符号、二进制补码和原码(sign-magnitude)),支持多个浮点模式(例如,16位尾数和8位符号,8位尾数和6位符号,以及6位尾数和6位符号),或它们的任何合适的组合。
片还可以将存储器电路与运算电路融合。片的多个实例之间的直接连接也是可用的,使得能够将多个片视为较大的存储器或运算电路。通过使用称为级联输入和输出的这些连接,进一步增加了运算电路的输入和输出带宽。
通过在FPGA的片上提供多模式运算电路,增加了片和所得到的FPGA的多功能性。结果,在更广泛的各种情况下可以使用更多的FPGA片,从而使得与使用单模式运算电路的现有技术实现方式相比,提高了运算处理的带宽并减少了计算时间。虽然在本文中描述为在FPGA的片上提供,但是多模式运算电路也可以用在ASIC或加固FPGA中。
图1是FPGA的片100连同连接的路由105和110的高级示意图。片100融合了存储器和运算电路,并包括机器学习处理器(MLP)115、块随机存取存储器(BRAM)120和逻辑随机存取存储器(LRAM)125。MLP 115包括浮点乘加器(multiply and accumulate,MAC)130和整数MAC 135。BRAM 120包括存储器140。
在第一操作模式下,MAC 130和135从路由105、LRAM 125、存储器140和操作数级联输入145中的一个或更多个接收输入。输出由MAC130和135提供给路由105、操作数级联输出160、LRAM 125或它们的任何合适的组合。存储器140接收来自路由110、存储器级联输入155或两者的输入。输出由存储器140提供给路由110、存储器级联输出165或两者。在第一操作模式下,MAC 130和135不接收来自路由110的输入,并且存储器140不接收来自路由105的输入。因此,来自FPGA的路由结构的输入在MLP 115和BRAM 120之间划分,并且MLP 115访问来自片100内的BRAM 120的数据,而不经过交换结构。
典型的MAC将两个或更多个乘积相乘,并将结果加至累加器中。在一些示例实施方式中,MAC 130和135通过允许部分乘积(partial products)在被添加至累加器之前被求和并被提供为输出来提供附加功能。因此,各个部分乘积、当前乘法的部分乘积之和以及跨多个乘法周期的累加结果都可以通过使用MAC 130和135来访问。尽管在图1中针对MAC 130和135示出了单个框,但是在一些示例实施方式中,使用每种类型的多个MAC(例如,两个整数MAC和两个浮点MAC)。
在第二操作模式下,MAC 130和135从路由105、路由110、LRAM 125和操作数级联输入145中的一个或更多个接收输入。输出由MAC 130和135提供给路由105、路由110、操作数级联输出160、LRAM 125或它们的任何合适的组合。在第二操作模式下,存储器140不接收来自路由105或路由110的输入。因此,在第二操作模式下,片100作为专用MLP来操作,其中MLP115具有对FPGA的路由结构的完全访问权限并且存储器140被有效地禁用。然而,LRAM 125可以在第二操作模式下使用一些路由连接。
在第三操作模式下,存储器140从路由105、路由110、存储器级联输入155或它们的任何合适的组合接收输入。输出由存储器140提供给路由105、路由110、存储器级联输出165或它们的任何合适的组合。在第三操作模式下,MLP 115不接收来自路由105或路由110的输入。因此,在第三操作模式下,片100作为专用BRAM操作,其中BRAM 120具有对FPGA的路由结构的完全访问权限并且MLP 115被有效地禁用。
如图1所示,LRAM 125连接至路由105和路由110。在一些示例实施方式中,LRAM125的路由连接在所有操作模式下被保持。为了将存储在LRAM 125中的数据用于MLP 115的计算,控制信号识别要读取的地址和要使用的来自LRAM 125的数据。经由片内连接将数据从LRAM 125提供至MLP 115,而不使用路由105或路由110。
LRAM 125与存储器140之间所示的到浮点MAC 130和整数MAC135的片内连接以比路由105和110更高的带宽操作。在各种示例实施方式中,片内数据存取速度是比路由连接存取速度快至少10、50、100或500倍的倍数。
LRAM 125与BRAM 120之间的差异通常是实现细节,使得BRAM120类似于高速缓存类型的存储器(通常使用SRAM单元),而LRAM 125类似于寄存器文件(通常使用触发器)。然而,这些不是具体规则,并且其他类型的存储器可用于LRAM 125和BRAM 120。在一些示例实施方式中,BRAM 120具有比LRAM 125更大的存储容量,并且针对区域进行优化,而LRAM 125针对延迟进行优化。在其他的示例实施方式中,LRAM125存储用于矩阵乘法的部分乘积的和的工作集。
FPGA片100接收时钟输入以控制执行操作速率。可以将频率乘法器(例如,2x乘法器)应用于输入时钟频率以改变操作速率。在一些示例实施方式中,以两倍的时钟速率运行FPGA片100使得能够通过在单个(外部)时钟周期中使用MAC 130或MAC 135两次来执行两倍的计算。例如,在128位输入模式下,可以提供足够的输入以在每个时钟周期执行四次计算,但是MAC硬件仅足以执行两次计算。因此,通过在两个内部时钟周期中的每一个上执行两次计算,在单个外部时钟周期上执行了四次计算,从而使得FPGA片100能够与包括两倍的MAC的可替选设计一样有效地执行。
作为使用频率乘法器的优点的另一示例,可以更有效地执行再使用至少一些输入操作数的操作。例如,当来自路由105的权重或系数对于多个操作相同时,可以使用较高频率的内部时钟(例如,从BRAM 120读取)和在单个外部时钟周期内执行的多个操作来更新其他系数。该优点的一个实际应用是在批量大小等于时钟乘法器(例如,2)的机器学习中。多个操作的结果可以累加在一起,以在每个外部时钟周期产生到路由105的单个输出,如果存在足够的输出引脚则并行地输出至路由105,或存储在BRAM 120中。
图2是根据一些示例实施方式的多模式运算电路的运算电路部分200的高级示意图。在一些示例实施方式中,运算电路200是MLP 115。运算电路200接收来自FPGA片的存储器部分的片内输入、来自FPGA的路由结构的路由结构输入、来自FPGA的路由结构的控制信号、以及来自另一个FPGA片的操作数级联输入,而不使用路由结构。在各种示例实施方式中,存在更多或更少的输入。
运算电路200向FPGA片的存储器部分提供片内输出、向FPGA的路由结构提供路由结构输出、并且向另一个FPGA片提供操作数级联输出,而不使用路由结构。在各种示例实施方式中,存在更多或更少的输出。通常,从第一FPGA片接收操作数级联输入,运算电路200是第二FPGA片的一部分,并且将操作数级联输出提供给第三FPGA片。
图3是根据一些示例实施方式的融合存储器和运算电路的FPGA片的存储器电路部分300的高级示意图。在一些示例实施方式中,存储器电路300是BRAM 120。存储器电路300接收来自FPGA片的运算部分的片内输入、来自FPGA的路由结构的路由结构输入、来自FPGA的路由结构的控制信号、来自第一FPGA片的存储器级联输入、以及来自第二FPGA片的反向存储器级联输入。级联输入不使用路由结构。存储器级联输入可以包括控制信号以及数据信号。在各种示例实施方式中,存在更多或更少的输入。
存储器电路300向FPGA片的运算部分提供片内输出、向FPGA的路由结构提供路由结构输出、向第二FPGA片提供存储器级联输出、并且向第一FPGA片提供反向存储器级联输出。在各种示例实施方式中,存在更多或更少的输出。
图4是根据一些示例实施方式的多模式运算电路的一部分400的示意图。部分400包括:多路复用器(MUX)410A、410B、410C和410D;寄存器420A、420B、420C和420D,统称为0级延迟寄存器420;位重映射逻辑430A、430B、430C和430D;以及1级延迟寄存器440(在图5中更详细地示出为各个寄存器510A、510B、510C、510D、510E、510F、510G、510H、510I、510J、510K、510L、510M、510N、510O和510P)。部分400接受两个乘法操作数A和B的输入,将操作数重新映射至运算电路的下一部分所使用的格式,并将重新映射的操作数提供给下一部分所使用的延迟寄存器。
多路复用器410A从以下四个选项中选择B操作数的低位:MLP_DIN[71:0],经由路由结构105接收的72位数据;REGFILE_DOUT[71:0],从片100内的LRAM 125接收的72位数据;BRAM_DOUT[71:0],从片100内的BRAM 120接收的72位数据;FWDI_MULTB_L[71:0],从操作数级联输入145接收的72位数据。多路复用器410B从以下八个选项中选择B操作数的高位:BRAM_DIN[71:0],经由路由结构110接收的72位数据;REGFILE_DOUT[143:72],从片100内的LRAM 125接收的72位数据;BRAM_DOUT[143:72],从片100内的BRAM 120接收的72位数据;MLP_DIN[71:0];REGFILE_DOUT[71:0];BRAM_DOUT[71:0];和FWDI_MULTB_L[71:0]。因此,从来自路由结构105、路由结构110、LRAM 125、BRAM 120和操作数级联输入145中的一个或更多个的输入的组合生成B操作数。
多路复用器410C从以下四个选项中选择A操作数的低位:MLP_DIN[71:0];REGFILE_DOUT[71:0];BRAM_DOUT[71:0];以及FWDI_MULTA_L[71:0],从操作数级联输入145接收的72位数据。多路复用器410D从以下八个选项中选择A操作数的高位:BRAM_DIN[71:0];MLP_DIN[71:0];REGFILE_DOUT[143:72];REGFILE_DOUT[71:0];FWDI_MULTA_L[71:0];BRAM_DOUT[143:72];BRAM_DOUT[71:0];以及FWDI_MULTA_H[71:0],从操作数级联输入145接收的72位数据。因此,也从来自路由结构105、路由结构110、LRAM 125、BRAM 120和操作数级联输入145中的一个或更多个的输入的组合生成A操作数。
由多路复用器410A至410D选择的输入可选地存储在寄存器420A至420D中的相对应的一个寄存器中,寄存器420A至420D以以下形式将数据提供给操作数级联输出160:FWDO_MULTB_L[71:0],B操作数的低位;FWDO_MULTIB_H[71:0],B操作数的高位;FWDO_MULTA_L[71:0],A操作数的低位;和FWDO_MULTA_H[71:0],A操作数的高位。另外,寄存器420A至420D中的每一个由位重映射逻辑430A至430D中的相对应一个访问。每个位重映射逻辑430A至430D基于乘法模式和字节选择模式输入来重映射输入。从位重映射逻辑430A至430D输出指数和符号位作为信号<EXPA>、<SGNA>、<EXPB>、<SGNB>、<EXPC>、<SGNC>、<EXPD>和<SGND>。将重映射的输入提供给1级延迟寄存器440,以供运算电路的下一部分访问。
在不同于部分500所使用的浮点格式的浮点模式下,位重映射逻辑430A至430D将输入转换为部分500所期望的格式。在示例中,部分500期望具有15位尾数、一位符号和8位指数的浮点值。在该示例中,多模式运算电路使用16位尾数、10位尾数、12位尾数、8位指数、6位指数和5位指数的各种组合来支持输入和输出。基于输入格式和部分500所期望的格式,位重映射逻辑430A至430D转换输入值。在该示例中,输入浮点格式的选择响应于模式选择输入。
在一些示例实施方式中,位重映射逻辑430A至430D执行符号扩展。结果,小于运算块(例如,乘法器520A至520H)所接受的输入值的大小的操作数仅使用操作数所必需的路由资源进行路由,并且在由运算块使用之前由位重映射逻辑430A至430D进行符号扩展。与在路由之前执行符号扩展的设计相比,该设计节省了路由资源。
整数运算逻辑块可用于通过识别浮点操作数的指数中的最高指数,并且以指数差来右移其他操作数的尾数来对浮点操作数的尾数执行浮点运算。例如,考虑下表,示出了四个操作数。
| 原始尾数 | 原始指数 | 调整后的尾数 | 调整后的指数 |
| 10101010 | 0001 | 11110101 | 0100 |
| 11110000 | 0010 | 11111100 | 0100 |
| 00110011 | 0011 | 00011001 | 0100 |
| 00001111 | 0100 | 00001111 | 0100 |
在调整之后,因为所有的指数都相等,操作数的尾数可以作为整数进行处理。这种浮点模式被称为块浮点,因为在所有被操作的数字中,以共同的指数值分组在一起(在一个“块”中)。
在上述示例中,注意前两个操作数的尾数用1填充,后两个操作数的尾数用0填充。这与负数的2进制补码表示一致。在无符号模式或有符号/幅度模式(signed/magnitude)中,尾数的操作相对应地通过填充0(对于无符号)或插入0而不修改符号位(符号/幅度)来改变。
图5是根据一些示例实施方式的多模式运算电路的一部分500的示意图。部分500包括寄存器510A、510B、510C、510D、510E、510F、510G、510H、510I、510J、510K、510L、510M、510N、510O和510P;乘法器520A、520B、520C、520D、520E、520F、520G和520H;加法器530A、530B、530C、530D、550A、550B和560;多路复用器540A、540B、540C、540D和570;和2级延迟寄存器580。
每个寄存器510A至510P存储用于乘法器520A至520H之一的操作数的数据的8位。每个乘法器520A至520H接受A操作数的8位和B操作数的8位。因此,部分500共处理A操作数的64位和B操作数的64位。为了处理由部分400接收的完整输入,部分500被复制,其中部分500的每个实例处理一半的输入。
在第一操作模式下,部分500被配置成确定八个8位乘法操作的总和。通过根据需要进行符号扩展或用前导零进行填充,可以在第一操作模式下确定较少乘法操作的总和或八个较小(例如,6位或4位)操作的总和。在第一操作模式的第一变体中,乘法器520A至520H中的每一个是被配置成输出两个四位乘法的总和的八位乘法器。在第一操作模式的第二变体中,乘法器520A至520H中的每一个被配置成输出两个四位乘法的结果的八位乘法器。在第二操作模式下,部分500被配置成输出两个16位乘法操作的总和。通过根据需要进行符号扩展或用前导零进行填充,可以在第二操作模式下确定单个乘法操作或两个较小(例如,12位或10位)操作的总和。在第三操作模式下,使用额外的移位器和较宽的加法器来配置与部分500的第二实例组合的部分500,以确定单个32位乘法操作。通过根据需要进行符号扩展或用前导零进行填充,可以在第三操作模式下确定较小的乘法操作(例如,18位或24位)。在另外的操作模式下,可以在输出处提供一个或更多个单独的乘法结果,作为对乘法运算的总和的补充或替代。
关于第一操作模式,八个乘法器520A至520H中的每一个使用操作数A和B的不同部分作为输入来执行八位乘法。8个乘法的结果由加法器530A至530D成对相加。四个加法结果由加法器550A至550B使用多路复用器540A至540D(由模式选择信号(MODESEL)控制)成对求和,以确定直接取得相加结果还是如图所示移位。移位的结果用于支持16位乘法。加法器550A至550B的两个结果由加法器560相加。加法器560的结果是八个八位乘法的和,并且经由多路复用器570被提供给2级延迟寄存器580。
关于第二操作模式,乘法器520A至520D与加法器530A、530B和550A结合一起确定第一16位乘法结果。乘法器520E至520H与加法器530C、530D和550B结合,确定第二16位乘法结果。第一操作数大小的四个乘法器可用于产生第二操作数大小的乘法结果,第二操作数大小是第一操作数大小的两倍。较大的操作数被分成高位和低位两部分,并且组织如下,其中AH表示A操作数的高位部分,AL表示A操作数的低位部分,BH表示B操作数的高位部分,以及BL表示B操作数的低位部分。AH AL x BH BL=AL x BL+AH x BL<<SIZE+BH x AL<<SIZE+AH x BH<<2 x SIZE。由于使操作数的大小加倍使用原始大小的四个乘法器来以较大的大小执行一次乘法,所以当操作数的大小增加时(在此情况下为两倍),由运算电路执行的运算的数量减少(在此情况下为四倍)。四个分量乘法结果中的每一个都是部分乘积(apartial product)。对部分乘积结果求和以产生最终乘法结果。“SIZE(大小)”的特定值是依赖于实现的。这里以示例的方式使用8位。另外,可以重复组合四个乘法器以作为更大乘法器操作的过程,从而使用四个更大乘法器(16个原始乘法器)来形成甚至更大的乘法器。因此,在示例实施方式中,MLP 115提供64个4位乘法器、16个8位乘法器、4个16位乘法器或一个32位乘法器。
因此,在第二操作模式下,乘法器520D将BL与AH相乘,而乘法器520C将BH与AL相乘。加法器530B将结果相加,并且来自加法器530B的结果被左移八位。乘法器520B将BH与AH相乘,并结果被左移十六位。乘法器520A将BL与AL相乘。在通过加法器530A和550A的结果之后,加法器550A的输出是16位乘法操作的结果。乘法器520E至520H和加法器530C、530D和550B被类似地配置成处理第二16位乘法运算。这两个操作的结果由加法器560相加,并经由多路复用器570提供给2级延迟寄存器580。加法器560的输出的大小比加法器550A和550B的输出的大小大一位。因此,在八位操作模式下,加法器560提供19位(19-bit)输出,而在十六位操作模式下,加法器560提供34位(34-bit)输出。
在一些示例实施方式中,部分500在第二操作模式下仅执行单个16位乘法。在这些实施方式中,由乘法器520E至520H和加法器530C、530D、550B和560产生的结果被忽略。相反,多路复用器570被配置成将来自加法器550A的包含单个16位乘法结果的输出提供到2级延迟寄存器580。
在第三操作模式下,由部分500的两个实例提供的四个16位乘法操作以类似于关于第二操作模式所描述的方式使用额外移位器和更宽加法器进行组合,从而利用下文关于图6所论述的加法器630产生确定单个32位乘法的电路。
虽然部分500被描述为对所选择的输入执行乘法运算,并然后对乘法运算的结果求和,但是也可以设想运算电路的其他配置。例如,来自寄存器510A至510P的输入可以被提供给如图所示的乘法器520A至520H,并且还可以被提供给一组加法器。针对每个乘法器/加法器对使用多路复用器,加法器530A至530D的输入被选择为乘法结果或加法结果。因此,基于控制多路复用器的配置信号,运算电路确定输入操作数的总和或输入操作数的乘积的总和(如图5所示)。
如上所述,为了处理由部分400接收的完整输入,部分500被复制,其中部分500的每个实例处理一半的输入。部分500及其副本可独立被配置。因此,多模式运算逻辑电路的不同部分可以被配置成同时执行整数和浮点运算。
图6是根据一些示例实施方式的多模式运算电路的一部分600的示意图。部分600包括图5的多路复用器570和来自用来处理输入A和B高位半部分的部分500的副本的相对应多路复用器610。多路复用器570和610的输出被提供给2级延迟寄存器620A和620B,每个都是34位宽。到部分600的输入也从1级延迟寄存器630A、630B、630C、630D、630E、630F、630G和630H进行接收,存储由图4的位重映射逻辑430A至430D产生的<SGNA>、<SGNB>、<SGNC>、<SGND>、<EXPA>、<EXPB>、<EXPC>和<EXPD>值。部分600还包括加法器650;多路复用器640A、640B、640C、640D、640E、640F、640G、640H、660、680A和680B;乘法器670A和670B;以及3级延迟寄存器690。
来自部分500及其副本的结果由加法器650相加。多路复用器660基于ADD0_15_BYPASS信号的值来选择来自部分500的结果或来自两个部分的总和结果,并且将选择的结果提供至乘法器670A和多路复用器680A。基于经由多路复用器640A至640D接收的<EXPA>、<EXPB>、<SGNA>和<SGNB>值以及从多路复用器660接收的值,乘法器670A产生24位浮点乘法结果。类似地,基于经由多路复用器640E至640H接收的<EXPC>、<EXPD>、<SGNC>和<SGND>值以及从寄存器620B接收的结果,乘法器670B产生第二24位浮点乘法结果。基于FPMULT_AB信号,多路复用器680A至680B输出由乘法器670A至670B产生的24位浮点结果或通过由寄存器620B和多路复用器660提供的结果。多路复用器680A至680B的输出被提供给3级延迟寄存器690。
因此,在一个操作模式下,部分600的多路复用器680A至680B的输出是部分500及其副本部分的输出,绕过了加法器650和乘法器670A至670B。在第二操作模式下,多路复用器680A的输出是由部分500及其副本执行的所有乘法的总和,而多路复用器680B的输出是由部分500的副本执行的乘法的总和。在第三操作模式下,多路复用器680A至680B的输出是部分500及其副本部分的输出的24位浮点版本。在第四操作模式下,多路复用器680A的输出是由部分500及其副本执行的所有乘法的总和的24位浮点表示,而多路复用器680B的输出是由部分500的副本执行的乘法的总和的24位浮点表示。
图7是根据一些示例实施方式的多模式运算电路的一部分700的示意图。部分700包括图6的多路复用器680A;1级延迟寄存器710A、710B、710C和710D;多路复用器720A、720B、720C、720D、740A、740B、750A、750B、770和780;3级延迟寄存器730A和730B;加法器760A和760B;4级延迟寄存器790。部分700和上方块795之间的连接也在图7中示出。上方块795是指图8所示的运算电路的部分。
多路复用器680A的输出存储在3级延迟寄存器730A中。3级延迟寄存器730B存储图6的多路复用器660B的输出或通过将多路复用器660B的输出添加至FWDI_DOUT[47:0]而产生的相加结果,如下文关于图8所描述的。
多路复用器750A从以下中选择值:FWDI_DOUT[47:0]、REGFILE_DOUT[47:0],来自LRAM 125的48位;REGFILE_DOUT[95:48],与LRAM 125不同的48位;延迟寄存器730B;以及{24'H0,FWDI_DOUT[47:24]},前置于操作数级联输入的24位的24个0位。多路复用器750B从3级延迟寄存器730A和730B中选择值。多路复用器750A和750B的输出被提供给加法器760A和加法器760B。基于从多路复用器740A和740B接收的SUB_AB_DEL和LOAD_AB_DEL信号以及从多路复用器750A和750B接收的选择值,加法器760A产生加法结果。基于从多路复用器740A和740B接收的SUB_AB_DEL和LOAD_AB_DEL信号以及从多路复用器750A和750B接收的选择值,加法器760B产生加法结果或减法结果。SUB信号控制加法器760A和760B是产生加法结果还是产生减法结果。LOAD信号控制加法器760A至760B是将输入值加到累加值还是忽略累加值并且仅加载输入值,从而提供输入值作为输出并将累加器值设置为输入值。DEL信号具有0至4个周期的延迟。
旁路多路复用器选择由加法器760B产生的结果或多路复用器750B的结果。因此,旁路多路复用器770提供来自部分700的加法结果或来自图6的结果。多路复用器780选择多路复用器770的输出或加法器760A的输出,并将结果提供给4级延迟寄存器790。
图8是根据一些示例实施方式的多模式运算电路的一部分800的示意图。部分800对应于图7所示的上方块795。部分800包括图6的多路复用器660B;图7的多路复用器720C和720D;加法器840A和840B;4级延迟寄存器790;多路复用器830A、830B、860A、860B、860C、860D和880;逻辑块850A和850B;以及输出寄存器870。图7的部分700在图8中表示为下方块890。
多路复用器830A从以下中选择值:FWDI_DOUT[47:0];REGFILE_DOUT[71:0];REGFILE_DOUT[47:24],来自LRAM 125的24位;以及经由反馈路径接收的来自输出寄存器870的值。多路复用器830B选择来自多路复用器660B的值或来自4级延迟寄存器790的值。
加法器840A对多路复用器830A和830B的输出求和,如由SUB_REG和LOAD_REG信号修改的。SUB信号控制加法器840A产生加法还是减法结果。LOAD信号控制加法器840A是将输入值加到累加值还是忽略累加值并且仅加载输入值,从而提供输入值作为输出并将累加器值设置为输入值。由于SUB_REG和LOAD_REG不是DEL信号,因此在处理输入时没有延迟。加法器840B根据SUB_REG信号将来自多路复用器830A至830B的输出相加或取差值。多路复用器860B和860C选择加法器840A至840B的输出,或基于FPADD_CD_BYPASS信号提供来自多路复用器830B的输出。多路复用器860D从多路复用器860B、多路复用器860C、MULT8BYP输入和MULT16BYP输入中选择输出。如果使用旁路信号,则当电路被配置成执行8位运算时选择MULT8BYP信号,并且当电路被配置成执行16位运算时选择MULT16BYP信号。
多路复用器860D的输出存储在输出寄存器870中。如果电路被配置成执行浮点格式转换(例如,从内部24位浮点格式到16位输出浮点格式),则输出寄存器870中的值在作为输入提供至多路复用器860A之前由逻辑块850B处理。同样,如果电路被配置成执行浮点格式转换,则4级延迟寄存器790中的值由逻辑块850A处理。多路复用器860A从寄存器790和870的已处理和未处理值中选择输入。多路复用器860A的输出被提供为FWDO_DOUT[47:0],48位操作数级联输出。
在不同于部分500至700所使用的浮点格式的浮点模式下,逻辑850A至850B将中间输出转换为FPGA所期望的格式。在示例中,部分500至700对具有16位尾数和8位指数的浮点值进行操作。在该示例中,多模式运算电路使用16位尾数、10位尾数、12位尾数、8位指数、6位指数和5位指数的各种组合来支持输入和输出。基于输出格式和在部分500至700上操作的格式,逻辑850A至850B转换输出值。在一些示例实施方式中,部分500至700所使用的内部浮点格式具有至少与输入/输出浮点格式的尾数大小一样大的尾数大小。
整数累加器可以用于特殊情况下的浮点运算。在具有整数和浮点累加器两者的实施方式中,整数累加器可以比浮点累加器宽,从而在浮点指数在值上接近时,使得块浮点运算能够使用整数累加器而不丢失数据。
多路复用器880基于OUTPUT_SEL信号选择来自多路复用器860A的输出的电路的输出值;LRAM_DOUT[71:0],从LRAM 125读取的72位值;和BRAM_DOUT[143:72。所选择的输出值被提供为DOUT[71:0],即提供给路由结构105的72位输出。
通过示例而非限制的方式,图5至图8的多模式运算电路经由多路复用器880提供行乘法结果。在矩阵乘法中,将第一操作数的行中的每个数乘以第二操作数的列中的每个数,并且将结果之和存储为结果矩阵中的元素。对第一操作数的每行和第二操作数的每列重复该过程,但是单个乘法结果将被丢弃。通过使用多模式运算电路,可以在不依赖于通用处理器的情况下,使用不同的数字格式在矩阵上执行行乘法操作数。
图9是示出根据一些示例实施方式的多模式运算电路的四个操作数的操作数类型和输入的表格900。MODEA列表示用于对A操作数和B操作数执行运算的多模式运算电路选择A操作数的五位模式输入值。操作数类型(OPERAND TYPES)列指示在所选模式中使用的操作数的类型。剩余的四列表示A操作数的每个八位部分的源。
关于图9至图16的操作数类型,INT8表示操作数是8位整数;Int7表示操作数为7位整数;INT6表示操作数为6位整数;INT16表示操作数为16位整数;BFP8表示操作数是8位块浮点数;BFP7表示操作数是7位块浮点数;BFP6表示操作数是6位块浮点数;BFP6_EXPB表示操作数是具有存储在寄存器中的指数的6位块浮点数;BFLOAT16表示操作数是bfloat格式的16位浮点数,具有一个符号位、八个指数位和七个分数位;FLOAT16表示操作数是半精度浮点格式的16位浮点数,具有一个符号位、五个指数位和十个分数位;并且FLOAT24表示操作数是具有一个符号位、八个指数位和十五个分数位的24位浮点数。
关于图9至图16的REG列,DIN表示通过图4的1级延迟寄存器440接收数据。因此,DIN可以反映通过FPGA的交换结构接收的数据、从FPGA的片内的片内通信接收的数据、从操作数级联输入接收的数据、或它们的任何合适的组合。在源或寄存器的名称之后的括号内的范围表示位的范围。例如,DIN[7:0]是指来自DIN的位0至7。作为另一示例,DIN[15:8]是指来自DIN的位8至15。除了来自DIN的输入之外,图9(以及图10至图16)包括表示为数字、位符号和位数的值的显式二进制值。例如,8'B0指八个零位,而1'B1指单个一位。8'B10000000指八位的具体序列。空条目表示列的操作数A的8位未在行的模式下使用。
图10是示出根据一些示例实施方式的多模式运算电路的四个操作数的操作数类型和输入的表格1000。MODEA和操作数类型列对应于图9中相同名称的列。剩余的四列使用上述关于图9描述的相同符号表示A操作数的四个多于八位部分的源。
图11是示出根据一些示例实施方式的多模式运算电路的四个操作数的操作数类型和输入的表格1100。MODEA和操作数类型列对应于图9至图10中相同名称的列。剩余的四列使用上述关于图9描述的相同符号表示A操作数的四个多于八位部分的源。
图12是示出根据一些示例实施方式的多模式运算电路的四个操作数的操作数类型和输入的表格1200。MODEA和操作数类型列对应于图9至图11中相同名称的列。剩余的四列使用上述关于图9描述的相同符号表示A操作数的四个多于八位部分的源。
图13是示出根据一些示例实施方式的多模式运算电路的四个操作数的操作数类型和输入的表格1300。MODEB列表示用于选择多模式运算电路的B操作数的五位模式输入值。操作数类型列包括与上述关于图9描述的含义相同的值。每列表示用于四个B操作数的数据的源。
图14是示出根据一些示例实施方式的多模式运算电路的四个操作数的操作数类型和输入的表格1400。MODEB和操作数类型列对应于图13中相同名称的列。剩余的四列使用上述关于图9描述的相同符号表示B操作数的四个多于八位部分的源。
图15是示出根据一些示例实施方式的多模式运算电路的四个操作数的操作数类型和输入的表格1500。MODEB和操作数类型列对应于图13至图14中相同名称的列。剩余的四列使用上述关于图9描述的相同符号表示B操作数的四个多于八位部分的源。
图16是示出根据一些示例实施方式的多模式运算电路的四个操作数的操作数类型和输入的表格1600。MODEB和操作数类型列对应于图13至图15中相同名称的列。剩余的四列使用上述关于图9描述的相同符号表示B操作数的四个多于八位部分的源。
图17是示出根据本发明各种实施方式的由多模式运算电路执行的方法1700的操作的流程图。方法1700包括操作1710、1720和1730。作为示例而非限制,方法1700被描述为由图1至图8的电路执行。
在操作1710中,多模式运算电路接收模式选择输入,该模式选择输入从包括第一模式和第二模式的模式组中选择模式。例如,接收图5所示的模式选择(MODESEL)信号。根据模式选择信号的值,执行操作1720或操作1730。
响应于选择第一模式的模式选择输入,多模式运算电路在操作1720中配置多个整数运算逻辑块以对整数操作数执行操作。例如,可以接收MODEA信号和MODEB信号,使得在操作1720中根据图9至图16的表格来配置运算电路。因此,在该示例实施方式中,第一模式是整数模式。
响应于选择第二模式的模式选择输入,在操作1730中,多模式运算电路配置多个整数运算逻辑块以对浮点操作数执行操作。例如,可以接收第二MODEA信号和第二MODEB信号,使得在操作1720中根据图9至图16的表格来配置运算电路。
因此,借助于方法1700,使用同一组整数运算逻辑块来执行整数或浮点运算。结果,多模式运算电路可以用于执行整数运算、浮点运算或两者的系统中,从而与在单一模式下执行运算操作的现有FPGA片相比,提高了多功能性,同时保留了运算FPGA片相对于通用处理器的优势。
在一些示例实施方式中,在两种模式下使用该电路的其他部件。在图4的示例实施方式中,位重映射逻辑430A至430D对输入进行重新映射以用于第一模式和第二模式两者。在图5的示例实施方式中,在第一模式和第二模式下,寄存器510A至510P用于存储到乘法器520A至520H的输入值,而多路复用器540A至540D选择到加法器550A至550B的输入值。
还可以支持附加模式。例如,第二模式可以是对具有任意指数值的浮点数进行操作的浮点模式,而第三模式可以是对具有相差不超过预定阈值(例如,4)的指数的浮点数进行操作的块浮点模式。
图18是根据一些示例实施方式的多模式运算电路1800的高级示意图。在一些示例实施方式中,运算电路1800是MLP 115。运算电路1800接收来自FPGA片的存储器部分的片内输入、来自FPGA的路由结构的路由结构输入、来自FPGA的路由结构的控制信号、以及来自另一个FPGA片的操作数级联输入而不使用路由结构。在各种示例实施方式中,存在更多或更少的输入。
输入包括两个复数,A+jB和C+jD。输出是复数,其中实部分量是AC-BD,虚部分量是AD+BC。该功能使用图4至图8的电路来实现,其中从路由结构输入、片内输入和操作数级联输入的任何组合选择输入,并且向路由结构输出、片内输出和操作数级联输出的任何组合提供输出。
如参照图5所论述的,四个乘法器可以用于提供处理两倍宽度的操作数的单个乘法器。因此,四个8位乘法器可以用于提供单个16位乘法器,四个4位乘法器可以用于提供单个8位乘法器,并且四个16位乘法器可以用于提供单个32位乘法器。由于所公开的电路提供了这种四倍乘法器功能,所以图18的结构利用四个乘法器来提供原始宽度的复数乘法功能,而不需要额外的硬件。因此,同一电路可以实现32位乘法或16位复数乘法;16位乘法或8位复数乘法;8位乘法或4位复数乘法;等等。
图19是根据一些示例实施方式的用于将定点值转换为块浮点值的减少延迟电路1900的示意图。减少延迟电路1900包括多路复用器1905和1945;或(OR)门1910和1950;加法器1915和1925;前导零检测器(LZD)1920;减法器1930和1935;移位器1940;以及舍入器1955。数据从电路1900的顶部流向底部。因此,并行地执行多个操作,与使用顺序操作产生结果的现有技术电路相比,减少了延迟。
到电路1900的输入是被相乘的两个浮点数的指数EXP_A和EXP_B,以及两个浮点数的尾数相乘的N位结果[N-1:0]。加法器1925确定EXP_A,EXP_B和CONST的总和,其中CONST定义为:
CONST=N-2-d-2×biasin+biasout+1。
在该等式中,N是乘法结果的位的数量,d是输出浮点值中的分数位的数量,biasin是指数上的输入偏差,并且biasout是指数上的输出偏差。在一些示例实施方式中,biasin是15或127并且biasout是127。前五项定义了CONST的普通值。最后的+1与减法器1930和1935结合使用,以提供指数的两个并行计算。
如果最高位(表示为BFP_SIGN)是1,则多路复用器1905将乘法结果的低N-1位取反,表示结果是负数。否则,符号位被移除并且低N-1位从多路复用器1905输出。这有效地将输入二进制补码值转换为有原码格式。
最低有效位(N[0:0])和BFP_SIGN被输入到或门1910。输出替换来自多路复用器1905的最低有效位,并且结果值被输入到LZD 1920。LZD1920确定输入中前导零的数量,并输出该值作为Z'。
来自多路复用器1905的输出由加法器1915加到BFP_SIGN。来自加法器1915的加法结果被移位器1940左移Z'位。如果Z′是前导零的数量的准确计数,则结果的最高有效位(MSB)将是1。如果Z′是前导零的准确计数,则移位的结果将通过使MSB等于1来归一化。移位的结果提供给舍入器1955,其将结果从N-1位舍入至P-1位,其中P是输出尾数+符号的大小。如果舍入操作由于有效位数超过P-1而发生溢出,则设置RND_OVERFLOW(RND_溢出)。
减法器1930和1935各自从加法器1925的结果中减去Z'。减法器1935还应用设置为-1的进位输入(CIN)值。因此,减法器1930和1935并行计算两个可能的指数。
或门1950控制多路复用器1945,并确定指数应该是减法器1930的输出还是减法器1935的输出。如果Z′不正确,如移位器1940输出的MSB值为零所表示的,则指数应为减法器1935的输出(由额外-1调整)而非减法器1930的输出(通过将Z′用作前导零的计数来确定)。此外,如果设置了RND_OVERFLOW,则应将指数减少1以进行补偿。
电路1900的输出是两个输入浮点数相乘结果的符号、指数和尾数。输出符号是BFP_SIGN;输出指数是多路复用器1945的输出;输出尾数是舍入器1955的输出。通过使用电路1900来并行地确定两个可能的指数,而不是首先执行其他操作来确保前导零计数是准确的,减少了延迟。虽然电路1900被示为对块浮点值进行操作,但是LZD 1920、移位器1940以及成对的减法器1930和1935也将形成对标准浮点值进行操作的类似电路的核心。
电路1900可以实现为多模式运算电路115的电路部分,以将来自多个整数逻辑块的输出转换为浮点数。转换包括由并行减法器1930和1935确定浮点数的两个可能的指数值;由LZD 1920确定输出中的前导零的估计计数;以及由多路复用器1945基于有关前导零的估计计数是否正确的确定(由移位器1940和多路复用器1950)在两个可能的指数值之间进行选择。
图20是根据一些示例实施方式的示出对FPGA进行编程的计算机2000的部件的框图。无需在各种实施方式中使用所有部件。例如,客户端、服务器、自主系统和基于云的网络资源可以均使用不同组的部件,或在服务器的情况下,使用例如,较大的存储装置。
计算机2000(也称为计算装置2000和计算机系统2000)形式的一个示例计算装置可以包括处理器2005、存储存储器2010、可移除存储器2015和不可移除存储器2020,其全部通过总线2040连接。尽管示例计算装置被示出和描述为计算机2000,但是在不同的实施方式中,计算装置可以具有不同的形式。例如,计算装置可以替代地为智能电话、平板电脑、智能手表或包括与关于图20示出和描述的元件相同或相似的元件的另一计算装置。诸如智能手机、平板电脑和智能手表的装置统称为“移动装置”。此外,尽管各种数据存储元件被示为计算机2000的一部分,但该存储器可以附加地或替选地包括经由诸如因特网的网络可访问的基于云的存储器,或基于服务器的存储器。
存储存储器2010可以包括易失性存储器2045和非易失性存储器2050,并且可以存储程序2055。计算机2000可以包括或能够访问计算环境,计算环境包括各种计算机可读介质,例如,易失性存储器2045、非易失性存储器2050、可移除存储器2015和不可移除存储器2020。计算机存储装置包括随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)和电可擦除可编程只读存储器(EEPROM)、闪存或其他存储器技术、致密盘只读存储器(CD ROM)、数字多功能盘(DVD)或其他光盘存储器、磁带盒、磁带、磁盘存储装置或其他磁存储装置、或任何其他能够存储计算机可读指令的介质。
计算机2000可以包括或能够访问计算环境,计算环境包括输入接口2025、输出接口2030和通信接口2035。输出接口2030可以接口至或包括诸如触摸屏的显示装置,显示装置也可以用作输入装置。输入接口2025可以接口至或包括以下中的一个或更多个:触摸屏、触摸板、鼠标、键盘、摄像机、一个或更多个特定于装置的按钮、集成在计算机2000内或经由有线或无线数据连接耦接至计算机500的一个或更多个传感器以及其他输入装置。计算机2000可以使用通信接口2035在联网环境中操作,以连接至一个或更多个远程计算机诸如数据库服务器。远程计算机可以包括个人计算机(PC)、服务器、路由器、网络PC、对等装置或其他公共网络节点等。通信接口2035可以连接至局域网(LAN)、广域网(WAN)、蜂窝网络、WiFi网络、蓝牙网络或其他网络。
存储在计算机可读介质上的计算机指令(例如,存储在存储存储器2010中的程序2055)可由计算机2000的处理器2005执行。硬盘驱动器、CD-ROM以及RAM是包括非暂态计算机可读介质诸如存储装置的物品的一些示例。在载波被认为太过暂态的程度上,术语“计算机可读介质”和“存储装置”不包括载波。“计算机可读非暂态介质”包括所有类型的计算机可读介质,包括磁存储介质、光存储介质、闪存介质和固态存储介质。应当理解,软件可以安装在计算机中并且与计算机一起销售。替选地,可以获得软件并且将其加载至计算机中,包括通过物理介质或分发系统来获得软件,例如,包括从由软件创建者所拥有的服务器或从并非由软件创建者拥有但由软件创建者使用的服务器来获得软件。例如,软件可以存储在服务器上用于通过因特网分发。
程序2055被示出为包括配置模块2060以及布局和布线模块2065。本文描述的模块中的任何一个或更多个模块可以使用硬件(例如,机器的处理器、ASIC、FPGA或它们的任何合适的组合)来实现。此外,这些模块中的任何两个或更多个模块可以被组合成单个模块,并且本文中针对单个模块描述的功能可以在多个模块之中细分。此外,根据各种示例实施方式,本文中描述为在单个机器、数据库或装置内实现的模块可以跨多个机器、数据库或装置分布。
设计模块2060定义电路(例如,处理器、信号处理器、计算引擎、状态机或控制器电路)的设计。例如,设计模块2060可以提供用户接口以允许用户设计电路。
布局和布线模块2065基于由设计模块2060定义的电路设计来确定所得集成电路的物理布局。例如,包括具有融合存储器和运算电路的一个或更多个片的设计可以由布局和布线模块2065布局,以便编程至FPGA配置中。
在前述说明书中,已经描述了本公开内容的一些示例实现。显然的是,在不脱离所附权利要求书中阐述的本公开内容的更宽范围的情况下,可以对其进行各种修改。因此,说明书和附图应被认为是说明性意义而不是限制性意义。以下是本公开内容的实现示例的非穷举列表。
示例1是电路,包括:模式选择输入,其从包括第一模式和第二模式的模式组中选择模式;以及多个整数乘法器逻辑块;其中:在第一模式下,多个整数乘法器逻辑块被配置成对整数操作数执行操作;并且在第二模式下,多个整数乘法器逻辑块被配置成对浮点操作数执行操作。
在示例2中,示例1的主题包括:一组输入连接;以及基于模式选择输入选择性地将输入连接连接至整数乘法器逻辑块的位重映射电路,位重映射电路用于第一模式和第二模式两者。
在示例3中,示例2的主题包括:多个整数乘法器逻辑块之间的互连电路,该互连电路包括多个寄存器和多路复用器,寄存器和多路复用器用于第一模式和第二模式两者。
在示例4中,示例1至示例3的主题包括,其中:在第一模式下,浮点操作数包括第一操作数和第二操作数;对浮点操作数执行操作包括:基于确定第一操作数的指数是浮点操作数的指数中的最大指数,将第二操作数的尾数以第一操作数的指数和第二操作数的指数之间的差进行移位。
在示例5中,示例1至示例4的主题包括,其中:浮点操作数具有第一格式;模式组还包括第三模式;在第三模式下,多个运算逻辑块被配置成对第二格式的第二浮点操作数执行操作;对第一格式的浮点操作数执行操作包括将浮点操作数转换为第三格式;对第二格式的第二浮点操作数执行操作包括将第二浮点操作数转换为第三格式。
在示例6中,示例5的主题包括,其中第三格式包括十五位尾数、一位符号和八位指数。
在示例7中,示例5至示例6的主题包括,其中:第三格式的尾数大小大于或等于第一格式的尾数大小;第三格式的尾数大小大于或等于第二格式的尾数大小;第二格式的尾数大小不同于第一格式的尾数大小。
在示例8中,示例1至示例7的主题包括:加法器,其生成作为部分乘积的总和的结果。
在示例9中,示例1至示例8的主题包括,其中:整数操作数具有第一大小;对整数操作数的操作是对整数操作数的第一数量的操作;模式组还包括第三模式;并且在第三模式下,多个乘法器逻辑块被配置成对第二大小的第二整数操作数执行第二数量的操作,第二大小大于第一大小,第二数量的操作小于第一数量的操作。
在示例10中,示例9的主题包括,其中:第一大小是八位;第二大小是十六位;并且第一数量的操作是第二数量的操作的四倍。
在示例11中,示例1至示例10的主题包括:在第一模式和第二模式下提供多个部分乘积的多个输出连接,其中每个部分乘积的位宽基于所提供的部分乘积的数量。
在示例12中,示例1至示例11的主题包括:将来自多个整数逻辑块的输出转换为浮点数的电路部分,该转换包括:并行地确定浮点数的两个可能的指数值;确定输出中的前导零的估计计数;以及基于有关前导零的的估计计数是否正确的确定,在两个可能的指数值之间进行选择。
示例13是包含指令的机器可读存储介质,指令在由一个或更多个处理器执行时使一个或更多个处理器控制现场可编程门阵列(FPGA)的配置,所述现场可编程门阵列包括:模式选择输入,其从包括第一模式和第二模式的模式组中选择模式;以及多个整数乘法器逻辑块;其中:在第一模式下,多个整数乘法器逻辑块被配置成对整数操作数执行操作;并且在第二模式下,多个整数乘法器逻辑块被配置成对浮点操作数执行操作。
在示例14中,示例13的主题包括,其中FPGA还包括:一组输入连接;以及基于模式选择输入来选择性地将输入连接连接至整数乘法器逻辑块的位重映射电路,位重映射电路用于第一模式和第二模式两者。
在示例15中,示例14的主题包括,其中FPGA还包括:多个整数乘法器逻辑块之间的互连电路,该互连电路包括多个寄存器和多路复用器,寄存器和多路复用器用于第一模式和第二模式两者。
在示例16中,示例13至示例15的主题包括,其中:在第一模式下,浮点操作数包括第一操作数和第二操作数;对浮点操作数执行操作包括:基于确定第一操作数的指数是浮点操作数的指数中的最大指数,将第二操作数的尾数以第一操作数的指数和第二操作数的指数之间的差进行移位。
在示例17中,示例13至示例16的主题包括,其中:浮点操作数具有第一格式;模式组还包括第三模式;在第三模式下,多个运算逻辑块被配置成对第二格式的第二浮点操作数执行操作;对第一格式的浮点操作数执行操作包括将浮点操作数转换为第三格式;对第二格式的第二浮点操作数执行操作包括将第二浮点操作数转换为第三格式。
在示例18中,示例17的主题包括,其中第三格式包括十五位尾数、一位符号和八位指数。
在示例19中,示例17至示例18的主题包括,其中:第三格式的尾数大小大于或等于第一格式的尾数大小;第三格式的尾数大小大于或等于第二格式的尾数大小;第二格式的尾数大小不同于第一格式的尾数大小。
示例20是一种方法,包括:通过电路接收模式选择输入,模式选择输入从包括第一模式和第二模式的模式组中选择模式;以及基于所选择的模式,配置多个整数乘法器逻辑块以对整数操作数执行操作;或配置多个整数乘法器逻辑块以对浮点操作数执行操作。
示例21是包括指令的至少一种机器可读介质,所述指令在由处理电路系统执行时使处理电路系统执行用于实现示例1至20中的任一个的操作。
示例22是一种包括用于实现示例1至20中的任一个的装置的设备。
示例23是用于实现示例1至20中的任一个的系统。
示例24是用于实现示例1至20中的任一个的方法。
提供了本公开内容的摘要以符合37C.F.R.§1.72(b),其要求摘要使得读者能够快速地确定技术性公开内容的性质。提交摘要时将理解,摘要将不用于解释或限制权利要求。另外,在前述具体实施方式中,可以看到的是,出于使本公开内容精简的目的,各种特征在单个实施方式中被组合在一起。本公开内容的该方法不应被解释为限制权利要求。因此,所附权利要求由此被并入具体实施方式中,其中每个权利要求自身独立地作为单独的实施方式。
Claims (20)
1.一种电路,包括:
模式选择输入,所述模式选择输入从包括第一模式和第二模式的模式组中选择模式;以及
多个整数乘法器逻辑块;
其中:
在所述第一模式下,所述多个整数乘法器逻辑块被配置成对整数操作数执行操作;以及
在所述第二模式下,所述多个整数乘法器逻辑块被配置成对浮点操作数执行操作。
2.根据权利要求1所述的电路,还包括:
一组输入连接;以及
位重映射电路,所述位重映射电路基于所述模式选择输入来选择性地将所述输入连接连接至所述整数乘法器逻辑块,所述位重映射电路用于所述第一模式和所述第二模式两者。
3.根据权利要求2所述的电路,还包括:
所述多个整数乘法器逻辑块之间的互连电路,所述互连电路包括多个寄存器和多路复用器,所述寄存器和所述多路复用器用于所述第一模式和所述第二模式两者。
4.根据权利要求1所述的电路,其中:
在所述第一模式下,所述浮点操作数包括第一操作数和第二操作数;以及
对所述浮点操作数执行操作包括:
基于确定所述第一操作数的指数是所述浮点操作数的指数中的最大指数,将所述第二操作数的尾数以所述第一操作数的指数和所述第二操作数的指数之间的差进行移位。
5.根据权利要求1所述的电路,其中:
所述浮点操作数具有第一格式;
所述模式组还包括第三模式;
在所述第三模式下,所述多个运算逻辑块被配置成对第二格式的第二浮点操作数执行操作;
对所述第一格式的浮点操作数执行操作包括将所述浮点操作数转换为第三格式;以及
对所述第二格式的第二浮点操作数执行操作包括将所述第二浮点操作数转换为所述第三格式。
6.根据权利要求5所述的电路,其中,所述第三格式包括十五位尾数、一位符号和八位指数。
7.根据权利要求5所述的电路,其中:
所述第三格式的尾数大小大于或等于所述第一格式的尾数大小;
所述第三格式的尾数大小大于或等于所述第二格式的尾数大小;以及
所述第二格式的尾数大小不同于所述第一格式的尾数大小。
8.根据权利要求1所述的电路,还包括:
加法器,其产生作为部分乘积的总和的结果。
9.根据权利要求1所述的电路,其中:
所述整数操作数具有第一大小;
对所述整数操作数的操作是对所述整数操作数的第一数量的操作;
所述模式组还包括第三模式;以及
在所述第三模式下,所述多个乘法器逻辑块被配置成对第二大小的第二整数操作数执行第二数量的操作,所述第二大小大于所述第一大小,所述第二数量的操作小于所述第一数量的操作。
10.根据权利要求9所述的电路,其中:
所述第一大小是八位;
所述第二大小是十六位;以及
所述第一数量的操作是所述第二数量的操作的四倍。
11.根据权利要求1所述的电路,还包括:
在所述第一模式和所述第二模式下提供多个部分乘积的多个输出连接,其中,所述每个部分乘积的位宽基于所提供的部分乘积的数量。
12.根据权利要求1所述的电路,还包括:
将来自所述多个整数逻辑块的输出转换为浮点数的电路部分,所述转换包括:
并行地确定所述浮点数的两个可能的指数值;
确定所述输出中的前导零的估计计数;以及
基于有关前导零的所述估计计数是否正确的确定,在所述两个可能的指数值之间进行选择。
13.一种包含指令的机器可读存储介质,所述指令在由一个或更多个处理器执行时使所述一个或更多个处理器控制现场可编程门阵列(FPGA)的配置,所述现场可编程门阵列包括:
模式选择输入,所述模式选择输入从包括第一模式和第二模式的模式组中选择模式;以及
多个整数乘法器逻辑块;
其中:
在所述第一模式下,所述多个整数乘法器逻辑块被配置成对整数操作数执行操作;以及
在所述第二模式下,所述多个整数乘法器逻辑块被配置成对浮点操作数执行操作。
14.根据权利要求13所述的机器可读存储介质,其中,所述FPGA还包括:
一组输入连接;以及
位重映射电路,所述位重映射电路基于所述模式选择输入来选择性地将所述输入连接连接至所述整数乘法器逻辑块,所述位重映射电路用于所述第一模式和所述第二模式两者。
15.根据权利要求14所述的机器可读存储介质,其中,所述FPGA还包括:
所述多个整数乘法器逻辑块之间的互连电路,所述互连电路包括多个寄存器和多路复用器,所述寄存器和所述多路复用器用于所述第一模式和所述第二模式两者。
16.根据权利要求13所述的机器可读存储介质,其中:
在所述第一模式下,所述浮点操作数包括第一操作数和第二操作数;以及
对所述浮点操作数执行操作包括:基于确定所述第一操作数的指数是所述浮点操作数的指数中的最大指数,将所述第二操作数的尾数以所述第一操作数的指数和所述第二操作数的指数之间的差进行移位。
17.根据权利要求13所述的机器可读存储介质,其中:
所述浮点操作数具有第一格式;
所述模式组还包括第三模式;
在所述第三模式下,所述多个运算逻辑块被配置成对第二格式的第二浮点操作数执行操作;
对所述第一格式的浮点操作数执行操作包括将所述浮点操作数转换为第三格式;以及
对所述第二格式的第二浮点操作数执行操作包括将所述第二浮点操作数转换为所述第三格式。
18.根据权利要求17所述的机器可读存储介质,其中,所述第三格式包括十五位尾数、一位符号和八位指数。
19.根据权利要求17所述的机器可读存储介质,其中:
所述第三格式的尾数大小大于或等于所述第一格式的尾数大小;
所述第三格式的尾数大小大于或等于所述第二格式的尾数大小;以及
所述第二格式的尾数大小不同于第一格式的尾数大小。
20.一种方法,包括:
通过电路接收模式选择输入,所述模式选择输入从包括第一模式和第二模式的模式组中选择模式;以及
基于所选择的模式:
配置多个整数乘法器逻辑块以对整数操作数执行操作;或者
配置所述多个整数乘法器逻辑块以对浮点操作数执行操作。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202310305240.1A CN116450084A (zh) | 2019-08-08 | 2020-07-24 | 多模式运算电路 |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US16/535,878 US11256476B2 (en) | 2019-08-08 | 2019-08-08 | Multiple mode arithmetic circuit |
| US16/535,878 | 2019-08-08 | ||
| PCT/US2020/043413 WO2021025871A1 (en) | 2019-08-08 | 2020-07-24 | Multiple mode arithmetic circuit |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202310305240.1A Division CN116450084A (zh) | 2019-08-08 | 2020-07-24 | 多模式运算电路 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN114402289A true CN114402289A (zh) | 2022-04-26 |
| CN114402289B CN114402289B (zh) | 2023-04-18 |
Family
ID=74499243
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202310305240.1A Pending CN116450084A (zh) | 2019-08-08 | 2020-07-24 | 多模式运算电路 |
| CN202080064242.0A Active CN114402289B (zh) | 2019-08-08 | 2020-07-24 | 多模式运算电路 |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202310305240.1A Pending CN116450084A (zh) | 2019-08-08 | 2020-07-24 | 多模式运算电路 |
Country Status (4)
| Country | Link |
|---|---|
| US (4) | US11256476B2 (zh) |
| EP (2) | EP4293526A3 (zh) |
| CN (2) | CN116450084A (zh) |
| WO (1) | WO2021025871A1 (zh) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11650792B2 (en) | 2019-08-08 | 2023-05-16 | Achronix Semiconductor Corporation | Multiple mode arithmetic circuit |
| US12034446B2 (en) | 2019-05-20 | 2024-07-09 | Achronix Semiconductor Corporation | Fused memory and arithmetic circuit |
| CN119781730A (zh) * | 2023-12-13 | 2025-04-08 | 台湾积体电路制造股份有限公司 | 存储器中计算电路及其操作方法 |
Families Citing this family (22)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11842169B1 (en) | 2019-09-25 | 2023-12-12 | Amazon Technologies, Inc. | Systolic multiply delayed accumulate processor architecture |
| US11449250B2 (en) | 2019-10-14 | 2022-09-20 | Micron Technology, Inc. | Managing a mode to access a memory component or a logic component for machine learning computation in a memory sub-system |
| US11288220B2 (en) * | 2019-10-18 | 2022-03-29 | Achronix Semiconductor Corporation | Cascade communications between FPGA tiles |
| US11816446B2 (en) * | 2019-11-27 | 2023-11-14 | Amazon Technologies, Inc. | Systolic array component combining multiple integer and floating-point data types |
| US11467806B2 (en) | 2019-11-27 | 2022-10-11 | Amazon Technologies, Inc. | Systolic array including fused multiply accumulate with efficient prenormalization and extended dynamic range |
| TWI868210B (zh) | 2020-01-07 | 2025-01-01 | 韓商愛思開海力士有限公司 | 記憶體中處理(pim)系統 |
| US20220229633A1 (en) | 2020-01-07 | 2022-07-21 | SK Hynix Inc. | Multiplication and accumulation(mac) operator and processing-in-memory (pim) device including the mac operator |
| US11663000B2 (en) | 2020-01-07 | 2023-05-30 | SK Hynix Inc. | Multiplication and accumulation(MAC) operator and processing-in-memory (PIM) device including the MAC operator |
| US12223289B2 (en) * | 2020-04-07 | 2025-02-11 | Samsung Electronics Co., Ltd. | Neural network device for neural network operation, operating method of the neural network device, and application processor including the same |
| US11308027B1 (en) | 2020-06-29 | 2022-04-19 | Amazon Technologies, Inc. | Multiple accumulate busses in a systolic array |
| US12147782B2 (en) * | 2021-03-30 | 2024-11-19 | Efinix, Inc. | Peripheral tooldual/quad-fracturable digital signal processing block for programmable gate architectures |
| KR20220145226A (ko) * | 2021-04-21 | 2022-10-28 | 에스케이하이닉스 주식회사 | 다중 연산 회로와 이를 포함하는 곱셈-누적 오퍼레이터 및 프로세싱-인-메모리 장치 |
| US12423058B2 (en) | 2021-06-30 | 2025-09-23 | Amazon Technologies, Inc. | Systolic array with input reduction to multiple reduced inputs |
| US11880682B2 (en) | 2021-06-30 | 2024-01-23 | Amazon Technologies, Inc. | Systolic array with efficient input reduction and extended array performance |
| US11675588B2 (en) * | 2021-08-20 | 2023-06-13 | Micron Technology, Inc. | Tile-based result buffering in memory-compute systems |
| US12517700B1 (en) | 2022-03-30 | 2026-01-06 | Amazon Technologies, Inc. | Systolic array with output rounding for multiple source/destination data type pairs |
| US20240045653A1 (en) * | 2022-08-01 | 2024-02-08 | Arm Limited | Method and Apparatus for Converting to Enhanced Block Floating Point Format |
| KR102839211B1 (ko) * | 2022-09-05 | 2025-07-28 | 리벨리온 주식회사 | 뉴럴 프로세싱 장치, 그에 포함되는 프로세싱 엘리먼트 및 뉴럴 프로세싱 장치의 다양한 포맷 연산 방법 |
| US20240329933A1 (en) * | 2023-03-28 | 2024-10-03 | Apple Inc. | Neural engine with accelerated multipiler-accumulator for convolution of intergers |
| US12299444B2 (en) | 2023-05-24 | 2025-05-13 | Stmicroelectronics International N.V. | Arithmetic unit for reduced instruction set computer processors and related method, system and device |
| US20250037347A1 (en) * | 2023-07-25 | 2025-01-30 | Intel Corporation | 32-bit channel-aligned integer multiplication via multiple multipliers per-channel |
| US20250130794A1 (en) * | 2023-10-20 | 2025-04-24 | Advanced Micro Devices, Inc. | Multi-format operand circuit |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20060101244A1 (en) * | 2004-11-10 | 2006-05-11 | Nvidia Corporation | Multipurpose functional unit with combined integer and floating-point multiply-add pipeline |
| US20150199173A1 (en) * | 2014-01-15 | 2015-07-16 | Arm Limited | Multiply adder |
| US20160126975A1 (en) * | 2014-11-03 | 2016-05-05 | Arm Limited | Apparatus and method for performing conversion operation |
| US20160211862A1 (en) * | 2015-01-15 | 2016-07-21 | Huong Ho | Method and apparatus for converting from floating point to integer representation |
| CN107168678A (zh) * | 2017-05-09 | 2017-09-15 | 清华大学 | 一种改进的浮点乘加器及浮点乘加计算方法 |
| CN108255777A (zh) * | 2018-01-19 | 2018-07-06 | 中国科学院电子学研究所 | 用于fpga的嵌入式浮点型dsp硬核结构 |
| CN108459840A (zh) * | 2018-02-14 | 2018-08-28 | 中国科学院电子学研究所 | 一种simd结构浮点融合点乘运算单元 |
Family Cites Families (36)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0627682B1 (en) | 1993-06-04 | 1999-05-26 | Sun Microsystems, Inc. | Floating-point processor for a high performance three dimensional graphics accelerator |
| US5682107A (en) | 1994-04-01 | 1997-10-28 | Xilinx, Inc. | FPGA architecture with repeatable tiles including routing matrices and logic matrices |
| US6385634B1 (en) * | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
| US6362650B1 (en) | 2000-05-18 | 2002-03-26 | Xilinx, Inc. | Method and apparatus for incorporating a multiplier into an FPGA |
| US7015719B1 (en) | 2000-09-02 | 2006-03-21 | Actel Corporation | Tileable field-programmable gate array architecture |
| US7119576B1 (en) * | 2000-09-18 | 2006-10-10 | Altera Corporation | Devices and methods with programmable logic and digital signal processing regions |
| US6970012B2 (en) | 2002-06-10 | 2005-11-29 | Xilinx, Inc. | Programmable logic device having heterogeneous programmable logic blocks |
| US6803786B1 (en) | 2003-03-11 | 2004-10-12 | Xilinx, Inc. | Structures and methods providing columns of tightly coupled processor and RAM blocks within an array of logic blocks |
| US7656190B2 (en) | 2003-12-24 | 2010-02-02 | Tier Logic, Inc | Incrementer based on carry chain compression |
| US8495122B2 (en) | 2003-12-29 | 2013-07-23 | Xilinx, Inc. | Programmable device with dynamic DSP architecture |
| US7185309B1 (en) | 2004-01-30 | 2007-02-27 | Xilinx, Inc. | Method and apparatus for application-specific programmable memory architecture and interconnection network on a chip |
| JP2005268536A (ja) | 2004-03-18 | 2005-09-29 | Matsushita Electric Ind Co Ltd | プログラマブル・ロジック・デバイスおよびその設計方法 |
| US7167022B1 (en) | 2004-03-25 | 2007-01-23 | Altera Corporation | Omnibus logic element including look up table based logic elements |
| EP1710689A1 (en) | 2005-04-07 | 2006-10-11 | STMicroelectronics (Research & Development) Limited | Combining circuitry for multipliers |
| US7330052B2 (en) | 2005-09-22 | 2008-02-12 | Altera Corporation | Area efficient fractureable logic elements |
| US8041759B1 (en) * | 2006-02-09 | 2011-10-18 | Altera Corporation | Specialized processing block for programmable logic device |
| US8539011B1 (en) | 2007-07-19 | 2013-09-17 | Xilinx, Inc. | Device having programmable logic for implementing arithmetic functions |
| US8543633B2 (en) * | 2010-09-24 | 2013-09-24 | Lockheed Martin Corporation | Modified Gram-Schmidt core implemented in a single field programmable gate array architecture |
| US9164728B1 (en) * | 2012-05-15 | 2015-10-20 | Altera Corporation | Ternary DSP block |
| US9075930B2 (en) | 2012-11-09 | 2015-07-07 | Xilinx, Inc. | Configurable embedded memory system |
| US9104474B2 (en) * | 2012-12-28 | 2015-08-11 | Intel Corporation | Variable precision floating point multiply-add circuit |
| US9405728B2 (en) * | 2013-09-05 | 2016-08-02 | Altera Corporation | Floating-point adder circuitry |
| US9465578B2 (en) * | 2013-12-13 | 2016-10-11 | Nvidia Corporation | Logic circuitry configurable to perform 32-bit or dual 16-bit floating-point operations |
| US9552208B2 (en) * | 2013-12-20 | 2017-01-24 | Nvidia Corporation | System, method, and computer program product for remapping registers based on a change in execution mode |
| US9754644B2 (en) | 2014-12-30 | 2017-09-05 | Capital Microelectronics Co., Ltd. | Extensible configurable FPGA storage structure and FPGA device |
| US9747110B2 (en) | 2015-05-20 | 2017-08-29 | Altera Corporation | Pipelined cascaded digital signal processing structures and methods |
| US9778905B1 (en) * | 2016-01-13 | 2017-10-03 | Xilinx, Inc. | Multiplier circuits configurable for real or complex operation |
| US10671345B2 (en) * | 2017-02-02 | 2020-06-02 | Intel Corporation | Methods and apparatus for performing fixed-point normalization using floating-point functional blocks |
| US10175944B2 (en) * | 2017-04-12 | 2019-01-08 | Intel Corporation | Mixed-precision floating-point arithmetic circuitry in specialized processing blocks |
| US11580353B2 (en) | 2018-05-04 | 2023-02-14 | Apple Inc. | Neural network processor for handling differing datatypes |
| US10831445B1 (en) * | 2018-09-20 | 2020-11-10 | Groq, Inc. | Multimodal digital multiplication circuits and methods |
| US12254061B2 (en) * | 2018-09-27 | 2025-03-18 | Intel Corporation | Apparatuses and methods to accelerate matrix multiplication |
| 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 |
| US10673438B1 (en) * | 2019-04-02 | 2020-06-02 | Xilinx, Inc. | Digital signal processing block |
| US10790830B1 (en) | 2019-05-20 | 2020-09-29 | Achronix Semiconductor Corporation | Fused memory and arithmetic circuit |
| US11256476B2 (en) | 2019-08-08 | 2022-02-22 | Achronix Semiconductor Corporation | Multiple mode arithmetic circuit |
-
2019
- 2019-08-08 US US16/535,878 patent/US11256476B2/en active Active
-
2020
- 2020-07-24 EP EP23207553.1A patent/EP4293526A3/en active Pending
- 2020-07-24 EP EP20849068.0A patent/EP4010796B1/en active Active
- 2020-07-24 CN CN202310305240.1A patent/CN116450084A/zh active Pending
- 2020-07-24 WO PCT/US2020/043413 patent/WO2021025871A1/en not_active Ceased
- 2020-07-24 CN CN202080064242.0A patent/CN114402289B/zh active Active
-
2022
- 2022-01-06 US US17/569,801 patent/US11650792B2/en active Active
-
2023
- 2023-03-23 US US18/125,190 patent/US12014150B2/en active Active
-
2024
- 2024-03-13 US US18/603,800 patent/US12468506B2/en active Active
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20060101244A1 (en) * | 2004-11-10 | 2006-05-11 | Nvidia Corporation | Multipurpose functional unit with combined integer and floating-point multiply-add pipeline |
| US20150199173A1 (en) * | 2014-01-15 | 2015-07-16 | Arm Limited | Multiply adder |
| US20160126975A1 (en) * | 2014-11-03 | 2016-05-05 | Arm Limited | Apparatus and method for performing conversion operation |
| US20160211862A1 (en) * | 2015-01-15 | 2016-07-21 | Huong Ho | Method and apparatus for converting from floating point to integer representation |
| CN107168678A (zh) * | 2017-05-09 | 2017-09-15 | 清华大学 | 一种改进的浮点乘加器及浮点乘加计算方法 |
| CN108255777A (zh) * | 2018-01-19 | 2018-07-06 | 中国科学院电子学研究所 | 用于fpga的嵌入式浮点型dsp硬核结构 |
| CN108459840A (zh) * | 2018-02-14 | 2018-08-28 | 中国科学院电子学研究所 | 一种simd结构浮点融合点乘运算单元 |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12034446B2 (en) | 2019-05-20 | 2024-07-09 | Achronix Semiconductor Corporation | Fused memory and arithmetic circuit |
| US11650792B2 (en) | 2019-08-08 | 2023-05-16 | Achronix Semiconductor Corporation | Multiple mode arithmetic circuit |
| US12014150B2 (en) | 2019-08-08 | 2024-06-18 | Achronix Semiconductor Corporation | Multiple mode arithmetic circuit |
| US12468506B2 (en) | 2019-08-08 | 2025-11-11 | Achronix Semiconductor Corporation | Multiple mode arithmetic circuit |
| CN119781730A (zh) * | 2023-12-13 | 2025-04-08 | 台湾积体电路制造股份有限公司 | 存储器中计算电路及其操作方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| EP4293526A3 (en) | 2024-03-20 |
| EP4010796A1 (en) | 2022-06-15 |
| WO2021025871A1 (en) | 2021-02-11 |
| US11256476B2 (en) | 2022-02-22 |
| US20210042087A1 (en) | 2021-02-11 |
| US11650792B2 (en) | 2023-05-16 |
| EP4293526A2 (en) | 2023-12-20 |
| US12014150B2 (en) | 2024-06-18 |
| CN116450084A (zh) | 2023-07-18 |
| US20220129244A1 (en) | 2022-04-28 |
| EP4010796B1 (en) | 2024-01-03 |
| US20230244446A1 (en) | 2023-08-03 |
| CN114402289B (zh) | 2023-04-18 |
| US20240248682A1 (en) | 2024-07-25 |
| EP4010796A4 (en) | 2022-10-12 |
| US12468506B2 (en) | 2025-11-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN114402289B (zh) | 多模式运算电路 | |
| US12340219B2 (en) | FPGA specialist processing block for machine learning | |
| CN114930311B (zh) | Fpga重复单元之间的级联通信 | |
| CN114128148B (zh) | 融合的存储器和算术电路 | |
| US11809798B2 (en) | Implementing large multipliers in tensor arrays | |
| CN110955406A (zh) | 浮点动态范围扩展 | |
| WO2017192243A2 (en) | Fixed-point and floating-point arithmetic operator circuits in specialized processing blocks | |
| EP3767455A1 (en) | Apparatus and method for processing floating-point numbers | |
| HK40096195A (zh) | 多模式运算电路 | |
| HK40075491A (zh) | 多模式运算电路 | |
| HK40075491B (zh) | 多模式运算电路 | |
| HK40069889A (zh) | 融合的存储器和算术电路 | |
| HK40069889B (zh) | 融合的存储器和算术电路 | |
| HK40097092A (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 |