CN114270305A - 具有转换电路系统的mac处理流水线和操作其的方法 - Google Patents

具有转换电路系统的mac处理流水线和操作其的方法 Download PDF

Info

Publication number
CN114270305A
CN114270305A CN202080057694.6A CN202080057694A CN114270305A CN 114270305 A CN114270305 A CN 114270305A CN 202080057694 A CN202080057694 A CN 202080057694A CN 114270305 A CN114270305 A CN 114270305A
Authority
CN
China
Prior art keywords
data
image data
conversion circuitry
winograd
format
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
CN202080057694.6A
Other languages
English (en)
Inventor
F·A·瓦尔
C·C·王
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.)
Flex Logix Technologies Inc
Original Assignee
Flex Logix Technologies Inc
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 Flex Logix Technologies Inc filed Critical Flex Logix Technologies Inc
Publication of CN114270305A publication Critical patent/CN114270305A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

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

Abstract

一种集成电路,包括乘法器‑累加器执行流水线,包括多个乘法器‑累加器电路,以使用滤波权重经由多个乘法和累加运算来处理数据。集成电路包括:第一转换电路系统,耦合流水线,具有用于接收多组数据的输入,其中每组数据包括多个数据;Winograd转换电路系统,用于将每组数据转换为对应组的Winograd数据;浮点格式转换电路系统,耦合到Winograd转换电路系统,用于将每组Winograd数据的数据转换为浮点数据格式。在操作中,乘法器‑累加器电路被配置为:使用来自第一转换电路系统的多组Winograd数据的数据以及滤波权重进行多个乘法和累加运算,以及基于乘法和累加运算生成输出数据。

Description

具有转换电路系统的MAC处理流水线和操作其的方法
相关申请
该非临时申请要求于2019年10月2日提交的名称为“Multiplier-AccumulatorCircuitry Processing Pipeline and Methods of Operating Same”的美国临时申请No.62/909,293的优先权和利益。通过引用将该'293临时申请整体地并入本文。
介绍
本文描述和图示了许多发明。这些发明既不限于任何单个方面或其实施例,也不限于这些方面和/或实施例的任何组合和/或置换。重要的是,本发明的每个方面和/或其实施例可以单独使用或与本发明的其它方面和/或其实施例中的一个或多个组合使用。
在一个方面中,本发明涉及具有乘法器-累加器电路系统的一个或多个集成电路(以及操作这种电路系统的方法),其包括基于或使用浮点数据格式的一个或多个执行或处理流水线,该一个或多个集成电路包括用于实现Winograd类型处理以例如增加乘法器-累加器电路系统和处理的数据吞吐量的电路系统。例如,在一个实施例中,具有一个或多个乘法器-累加器电路(MAC)执行流水线(例如,用于图像滤波)的一个或多个集成电路可以包括用于将数据(例如,输入数据和/或滤波权重或系数数据)从浮点数据格式转换或变换为便于Winograd数据处理的数据格式的转换电路系统。在该实施例中,输入数据和相关联的滤波权重或系数可以存储在存储器中,其中数据被提供给转换电路系统以将数据从浮点数据格式(有时,这里以及在附图中,标识为“FP”或“FPxx”,其中“xx”指示/反映示例性数据宽度)转换或变换为便于在Winograd类型处理中实现或与Winograd类型处理的使用一致的数据格式(例如,定点格式,诸如按块缩放的分数格式(有时,在这里和附图中,标识为“BSF”或“BSFxx”,“xx”指示/反映示例性数据宽度)。
在一个实施例中,一个或多个集成电路包括转换电路系统或将输入数据从浮点数据格式转换或处理为例如定点数据格式的转换电路系统(有时,称为D/E、D-E或D至E转换逻辑或转换电路系统)。此后,处于定点数据格式的输入数据被输入到实现Winograd类型处理以例如增加乘法器-累加器电路系统和处理的数据吞吐量的电路系统中。Winograd处理电路系统的输出被施加到或输入到转换电路系统以将Winograd处理之后的输入数据在这样的数据经由提取逻辑电路系统输入到乘法器-累加器电路系统之前从定点数据格式转换或变换为浮点数据格式。以这种方式,由一个或多个乘法器-累加器流水线中的每一个的乘法器电路和累加电路处理的输入数据(例如,图像数据)处于浮点格式。
在另一个实施例中,一个或多个集成电路包括用于转换或处理滤波权重或系数值或数据以适应在Winograd类型处理中使用或与Winograd类型处理使用的转换电路系统(有时,称为F/H、F-H或F至H转换逻辑或电路系统)。例如,在滤波或权重值或数据处于浮点格式的情况下,可以将权重值或数据转换或修改为便于在Winograd类型处理中实现或与Winograd类型处理的使用一致的数据格式(例如,定点格式,诸如,按块缩放的分数(BSF)格式)。这里,处于定点数据格式的滤波权重数据被输入到用于实现Winograd类型处理的电路系统中。此后,将Winograd处理电路系统的输出施加到或输入到转换电路系统中以在滤波权重数据经由提取逻辑电路系统输入到乘法器-累加器电路系统之前将Winograd处理之后的滤波权重数据从定点数据格式转换或变换为浮点数据格式。由(一个或多个)乘法器-累加器执行流水线的乘法器-累加器电路系统的乘法器电路与也处于浮点数据格式的输入数据一起采用具有浮点数据格式的这种权重值或数据。以这种方式,在浮点数据格式状况中进行乘法器-累加运算的乘法运算。
执行或处理流水线(例如,用于图像滤波)的乘法器-累加器电路系统(和操作这种电路系统的方法)可以包括基于具有一个或多个浮点数据格式的数据实现浮点加法和乘法的浮点执行电路系统(例如,乘法器电路和累加/加法器电路)。浮点数据格式可以是用户或系统限定的和/或可以是一次性可编程的(例如,在制造时)或者多于一次性可编程的(例如,(i)在通电时或经由通电、启动或者初始化序列/处理序列的进行/完成,和/或(ii)原位或在处理流水线的集成电路或乘法器-累加器电路系统的正常操作期间)。在一个实施例中,乘法器-累加器执行流水线的电路系统包括可调精度的数据格式(例如,浮点数据格式)。除此之外或代替其,执行流水线的电路系统可以并发地处理数据以增加流水线的吞吐量。例如,在一种实现方式中,本发明可以包括便于乘法和累加运算的流水线化的多个分开的乘法器-累加器电路(在本文中有时称为“MAC”)和多个寄存器(在一个实施例中包括多个影子寄存器),其中执行流水线的电路系统并发地处理数据以增加流水线的吞吐量。
在乘法器-累加器执行或处理流水线的数据处理之后,本发明在一个实施例中采用与Winograd类型处理一致的转换电路系统(有时称为Z/Y、Z-Y或Z至Y转换逻辑或电路系统)以处理输出数据(例如,输出图像数据)。在这方面,在一个实施例中,在(一个或多个)乘法器-累加器执行流水线的乘法器-累加器电路系统输出输出数据(例如,图像/像素数据)之后,将这种数据施加到或输入到数据格式转换电路系统和处理中,该数据格式转换电路系统和处理将处于浮点数据格式的输出数据转换或变换为具有便于在Winograd类型处理中实现或与Winograd类型处理的使用一致的数据格式(例如,定点数据格式,诸如,BSF)的数据。此后,处于定点数据格式的输出数据被施加到或输入到Z-Y转换电路系统的Winograd转换电路系统,其中与Winograd类型处理一致地处理输出数据以将输出数据从Winograd格式转换为非Winograd格式。值得注意的是,在一个实施例中,Z-Y转换电路系统被直接并入或集成到(一个或多个)乘法器-累加器执行流水线中。这样,在MAC执行或处理流水线中进行Z-Y转换电路系统的操作。
此后,本发明可以采用用于将输出数据(例如,处于定点数据格式)转换或变换为浮点数据格式的电路系统和技术。也就是说,在一个实施例中,在由Winograd转换电路系统处理输出数据之后(例如,定点数据格式,诸如,BSF格式),本发明可以采用用于将输出数据(例如,图像/像素数据)在输出到例如存储器(例如,L2存储器,诸如SRAM)之前转换或变换为浮点数据格式的转换电路系统和技术。在一个实施例中,输出数据以浮点数据格式写入并存储在存储器中。
本发明可以采用或实现例如如于2020年2月20日提交的名称为“Multiplier-Accumulator Circuitry having Processing Pipelines and Methods of OperatingSame”的美国非临时专利申请No.16/796,111和/或于2019年3月25日提交的名称为“Multiplier-Accumulator Circuitry having Processing Pipeline and Methods ofOperating and Using Same”的美国临时专利申请No.62/823,161中描述和/或图示的具有用于实现Winograd类型处理的电路系统的乘法器-累加器执行或处理流水线的电路系统和技术(和操作这种电路系统的方法)的各方面。这里,可以补充或修改'111和'161申请中描述和图示的其中实现的流水线和处理的电路系统和方法,以进一步包括转换电路系统和技术,以将浮点数据转换或转变为便于Winograd类型处理的某一实现的数据格式(例如,定点格式,诸如按块缩放的数据格式),并且反之亦然(即,转换电路系统和技术,以将具有便于实现Winograd类型处理的数据格式(例如,定点格式)的数据转换或转变为浮点数据格式,然后可以经由或结合乘法器-累加器执行或处理流水线处理)。值得注意的是,'111和'161申请通过引用将其整体并入本文。此外,虽然'111和'161申请通过引用将其整体并入本文,但是在下面的讨论期间将不时地具体引用这些申请。
另外,本发明可以采用或实现例如如于2020年6月12日提交的名称为“Multiplier-Accumulator Circuitry and Pipeline using Floating Point Data,andMethods of Using Same”的美国非临时专利申请No.16//900,319和于2019年6月21日提交的名称为“Processing Pipeline having Floating Point Circuitry and Methods ofOperating and Using Same”的美国临时专利申请No.62/865,113中描述和/或图示的具有实现一个或多个浮点数据格式的浮点执行电路系统(例如,加法器电路系统)的浮点乘法器-累加器执行或处理流水线的电路系统和技术(以及操作这种电路系统的方法)的各方面。这里,可以结合包括用于实现Winograd类型处理以增加乘法器-累加器电路系统和处理的数据吞吐量的基于或使用浮点数据格式的一个或多个执行或处理流水线在本文描述和/或图示的电路系统和技术中采用在'319和'113申请中描述和图示的其中实现的流水线和处理的电路系统和方法。值得注意的是,'319和'113申请通过引用将其整体并入本文。
在一个实施例中,执行流水线的处理电路系统(包括多个乘法器-累加器电路)可以并发地处理数据以增加流水线的吞吐量。例如,在一种实现方式中,本发明可以包括便于乘法和累加运算的流水线化的多个分开的乘法器-累加器电路(在本文中有时称为“MAC”或“MAC电路”)和多个寄存器(在一个实施例中,包括多个影子寄存器),其中执行流水线的电路系统并发地处理数据以增加流水线的吞吐量-例如,参见于2019年8月20日提交的美国专利申请No.16/545,345和于2018年8月31日提交的美国临时专利申请No.62/725,306中描述和/或图示的乘法器-累加器电路系统、架构和集成电路。在'345和'306申请中描述和/或图示的乘法器-累加器电路系统便于连接乘法和累加运算,从而允许多个乘法器-累加器电路系统更迅速地进行此类运算(参见,例如,美国专利申请No.16/545,345的图1A-图1C中图示的示例性实施例)。'345和'306申请通过引用将其整体并入本文。
除此之外或代替其,可以结合具有用于并发地或并行地处理数据以增加流水线的吞吐量的电路系统和/或架构的乘法器-累加器执行或处理流水线的电路系统和技术(以及操作这种电路系统的方法)-例如,如美国专利申请No.16/816,164和美国临时专利申请No.62/831,413中描述和/或图示的,来使用和/或实现本发明;'164和'413申请通过引用将其整体并入本文。这里,多个处理或执行流水线可以并发地处理数据以增加数据处理和整体流水线的吞吐量。
值得注意的是,(一个或多个)集成电路可以是例如处理器、控制器、状态机、门阵列、片上系统(“SOC”)、可编程门阵列(“PGA”)和/或现场可编程门阵列(“FPGA”)和/或包括嵌入式FPGA的处理器、控制器、状态机和SOC。FPGA意指离散FPGA和嵌入式FPGA两者。
附图说明
本发明可以结合其附图中图示的实施例来实现。这些附图示出了本发明的不同方面,且在适当时,图示类似电路、架构、结构、组件、材料和/或元件的附图标记、命名或名称在不同图中被类似地标记。应理解,构思了具体示出的之外的结构、组件、材料和/或元件的各种组合,且这些各种组合也落入本发明的范围内。
此外,本文描述和图示了许多发明。本发明既不限于任何单个方面或其实施例,也不限于这些方面和/或实施例的任何组合和/或置换。另外,本发明的每个方面和/或其实施例可以单独使用或与本发明的其它方面和/或其实施例中的一个或多个组合使用。为简便起见,本文没有分开讨论和/或图示某些置换和组合。值得注意的是,本文作为“示例性”所描述的实施例或实现方式不应被理解为例如相对于其它实施例或实现方式是优选的或有利的;而是,其旨在反映或指示(一个或多个)实施例是(一个或多个)“示例”实施例。
值得注意的是,本文描述和/或附图中图示的配置、块/数据宽度、数据路径宽度、带宽、数据长度、值、处理、伪码、运算和/或算法以及与其相关联的文本是示例性的。实际上,本发明不限于根据例如示例性电路、逻辑、块、功能和/或物理图图示和/或描述的任何特定或示例性电路、逻辑、块、功能和/或物理图、在执行流水线中采用的乘法器-累加器电路的数量、在特定处理配置中采用的执行流水线的数量、存储器的组织/分配、块/数据宽度、数据路径宽度、带宽、值、处理、伪码、运算和/或算法。
此外,尽管说明性/示例性实施例包括被指派、分配和/或用来存储某些数据和/或在某些组织中的多个存储器(例如,L3存储器、L2存储器、L1存储器、L0存储器),但是可以添加一个或多个存储器,和/或可以省略和/或组合/合并一个或多个存储器-例如,可以改变、补充和/或修改L3存储器或L2存储器和/或组织。本发明不限于申请中阐述的存储器组织和/或分配的说明性/示例性实施例。再一次说明,本发明不限于本文阐述的说明性/示例性实施例。
图1结合存储输入数据、滤波权重或系数并输出数据的存储器图示了多个乘法器-累加器处理或执行流水线(“MAC流水线”或“MAC处理流水线”或“MAC执行流水线”)的乘法器-累加器电路系统(包括多个乘法器-累加器电路(未单独图示)的示例性实施例的逻辑概览的示意性框图,其以框图形式图示;在一个实施例中,每个MAC流水线包括多个串联连接的乘法器-累加器电路(尽管这里没有具体图示各个乘法器-累加器电路);值得注意的是,图1还图示了MAC处理流水线的示例性实施例的逻辑概览的示意性框图的示例性伪码;
图2A根据本发明的某些方面结合存储输入数据、滤波权重或系数并输出数据的存储器图示了实现Winograd数据处理技术的多个乘法器-累加器处理或执行流水线(“MAC流水线”或“MAC处理流水线”或“MAC执行流水线”)的乘法器-累加器电路系统(包括多个乘法器-累加器电路(未单独图示)的示例性实施例的逻辑概览的示意性框图;在一个实施例中,每个MAC流水线包括多个串联连接的乘法器-累加器电路(尽管这里没有具体图示各个乘法器-累加器电路);值得注意的是,图2A还图示了根据本发明的某些方面的实现Winograd数据处理技术的MAC处理流水线的示例性实施例的逻辑概览的示意性框图的示例性伪码;
图2B图示了根据本发明的某些方面的多个MAC处理流水线的示例性实施例的物理概览的示意性框图,其中,多个乘法器-累加器执行流水线被配置为实现数据处理的Winograd技术;值得注意的是,每个MAC流水线包括乘法器-累加器电路系统(以框图形式图示),其中每个乘法器-累加器电路系统包括多个乘法器-累加器电路(未单独图示);在该说明性的示例性实施例中,由多个(这里,十六个)乘法器-累加器执行流水线处理确定yij处的相关联的64x(2x2)输出像素的dij处的64x(4x4)输入像素/数据;
图2C是根据本发明的某些方面的图2B中图示的示例性实施例的物理概览的示例性时序概览图;
图3A图示了根据本发明的某些方面的实现Winograd处理技术的(如分别在图2A和图2B中的逻辑和物理概览中图示的)乘法器-累加器电路系统执行或处理流水线的示例性输入数据(例如,图像数据)转换电路系统和提取电路系统的示意性框图,包括实现Winograd处理技术的示例性D至E(dij至eij)转换和提取电路系统以及MAC执行流水线的操作的某些物理和逻辑概览;简而言之,读取L3/L2存储器以获得输入数据(Dij值)的4x4像素块;输入数据的4x4像素块经由转换电路系统在dij至eij流水线中(在说明性实施例中,十六个dij至eij流水线)转换为Eij值的4x4块,其中转换和提取电路系统的每个流水线与MAC处理流水线相关或相关联;此后,4x4 Eij块被提取并移位到16x64 MAC处理流水线中,其中Eij值乘以存储在L1存储器中的滤波系数(Hij值)并累加为Zij值;在该实施例中,在16x64MAC流水线内多次(通常为64次或更多次)使用每个Eij值;
图3B是根据本发明的某些方面的图3A中图示的示例性D至E转换电路系统和E提取电路系统(dij至eij转换和eij提取实施例)的示例性伪码,其中D至E转换和提取在其中具体地标识出来;
图3C图示了根据本发明的某些方面的实现Winograd处理技术的多个流水线(在说明性实施例中为十六个流水线)的示例性输入数据(例如,图像数据)转换和提取电路系统(D至E转换电路系统和E提取电路系统)的数据流图,其中转换和提取电路系统的每个流水线与MAC处理流水线相关或相关联(参见图3A);简而言之,数据(DIN)被输入到电路系统的十六个D/E转换流水线中,以将这些数据从浮点数据格式转换为定点数据格式(例如,按块缩放的数据格式);这里,均处于浮点数据格式的输入数据/值(Dij数据/值)被处理并转换为定点数据格式(例如,整数格式(INT16)或按块缩放的格式(BSF16));转换电路系统包括“P”单元或电路(在下文中,单元或电路在本文中统称为“单元”),以接收处于浮点数据格式的Dij数据/值,并确定这种输入数据的最大指数(EMAX);“R”单元进行时间延迟功能/操作用于指数搜索;“Q”单元进行浮点数据格式至定点数据格式转换(具体地,使用EMAX值的Dij数据/值的FP16至BSF16格式转换);此后,处于定点数据格式的数据被输入到Winograd转换电路系统(经由“X”单元)中;这里,“X00-X31”单元使用输入数据/值(Dij数据/值)的定点数据格式(例如,BSF16)表示进行Winograd处理技术的D/E转换;此后,数据/值被输入到附加的转换电路系统中,以使用由Winograd转换电路系统输出的处于定点数据格式的数据/值生成处于浮点数据格式的数据/值;这里,“S”单元使用EMAX值将输入数据从定点数据格式转换为浮点数据格式(在该说明性实施例中,使用EMAX值的Eij数据/值的BSP16至FP16格式转换);值得注意的是,在附图中,特定的“单元”有时标记或标识为“单元x”,其中x是P、R、Q、S或X(例如,图4A中的单元P);
图3D是根据本发明的某些方面的图3A和图3C中图示的多个流水线的示例性D至E转换电路系统和E提取电路系统实施例的示例性概览和数据流图的示例性时序图;
图3E和图3F各自图示了根据本发明的某些方面的实施例的图3A和图3C中图示的多个流水线的示例性D至E转换电路系统和E提取电路系统实施例的概览和数据流图的示例性时序图中的图3D中所标识的所选部分;
图4A图示了根据本发明的某些方面的图3C的示例性D至E转换电路系统和E提取电路系统的示例性P单元/电路(下文中,单元/电路(即,单元或电路)在本文中统称为“单元”或“单元”)的示意性框图,其中在该示例性实施例中,P单元(在该说明性实施例中为16个P单元)包括用于识别和/或确定处于浮点数据格式(在该说明性实施例中为FP16格式)的输入数据/值(Dij数据/值)的最大指数(EMAX)的电路系统;在该实施例中,EMAX寄存器加载有第一Dij值的指数,并且将其余Dij数据/值中的每一个的指数与EMAXP进行比较,如果更大,则替换EMAXP;
图4B图示了根据本发明的某些方面的图3C的示例性D至E转换电路系统和E提取电路系统的示例性R单元的示意性框图,其中在该示例性实施例中,R单元包括在时间上延迟输入数据/值(Dij数据/值)预定量的时间以在输入数据/值(Dij数据/值)被输入到或提供给浮点至定点转换电路系统(在该说明性实施例中,经由Q单元完成)之前识别和/或确定输入数据/值(Dij数据/值)的最大指数(EMAX)的电路系统;
图4C图示了根据本发明的某些方面的图3C的示例性D至E转换电路系统和E提取电路系统的示例性Q单元的示意性框图,其中在该示例性实施例中,Q单元(在该说明性实施例中为十六个单元)使用EMAX值将输入数据/值(Dij数据/值)从浮点数据格式转换为定点数据格式;在该说明性实施例中,Q单元将Dij数据/值从FP16数据格式转换为BSF16数据格式;
图4D和图4E分别图示了根据本发明的某些方面的图3C的示例性D至E转换电路系统和E提取电路系统(dij至eij转换和提取电路系统)的示例性X单元(X00-X31单元)的示意性框图,其中D至E转换电路系统采用Winograd处理技术以使用输入数据/值(Dij)的定点数据格式表示生成输入数据/值(Eij);
图4F图示了根据本发明的某些方面的图3C的示例性D至E转换电路系统和E提取电路系统的示例性S单元的示意图,其中在该示例性实施例中,S单元(在该说明性实施例中,总共十六个单元)使用EMAX值在Winograd处理之后进行从定点数据格式至浮点数据格式的数据格式转换(在该说明性实施例中,使用EMAX值的输入数据/值的BSF16至FP16格式转换),以生成处于浮点数据格式的输入数据/值(Eij),以供MAC执行流水线处理(参见,例如,图2B和图3A);
图5A图示了根据本发明的实施例的用于将输入值/数据(Dij值/数据)从浮点数据格式(在说明性实施例中为FP16格式)转换为定点数据格式(在说明性实施例中为BSF16格式)的某些转换电路系统(例如,D至E转换电路系统的Q单元-参见图3C)的处理或操作;这里,BSF16格式允许每组十六个Dij值采用公共指数(EMAX),从而减少和/或消除关于对准和规范化操作的问题(这可能是与使用FP16格式添加值有关的问题);每个Dij值可以采用可用于数据的分数部分的附加位-从而增加BSF16值的精度;值得注意的是,两种格式使用相同或基本相同量的存储器容量和存储器带宽;然而,可以经由二进制补码整数添加处于诸如按块缩放格式(例如,BSF16)之类的定点数据格式的数据;值得注意的是,可以结合滤波权重(F至H)转换电路系统和输出数据(Z至Y)转换电路系统中的浮点数据格式至定点数据格式转换电路系统来使用图5A中描述和图示的用于将值/数据从浮点数据格式(在说明性实施例中为FP16格式)转换为定点数据格式(在说明性实施例中为BSF16格式)的转换电路系统的处理或操作-尽管位宽可能不同;图5A中图示的处理或操作是示例性的,并且不限制与本文描述的不同的其它技术可以用于将值/数据从浮点数据格式转换为定点数据格式(这里,BSF);
图5B图示了根据本发明的实施例的用于将处于定点数据格式(在说明性实施例中为BSF16格式)的输入值/数据(Eij值/数据)转换为处于浮点数据格式(在说明性实施例中为FP16格式)的输入值/数据的某些转换电路系统(例如,D至E转换电路系统的S单元-参见图3C)的处理或操作;以这种方式,输入值/数据(Eij值/数据)处于预定的数据格式以供MAC执行流水线处理(例如,图2B和图3A中图示的实施例);如上所述,两种格式使用相同或基本相同量的存储器容量和存储器带宽;值得注意的是,可以结合滤波权重(F至H)转换电路系统和输出数据(Z至Y)转换电路系统中的定点数据格式至浮点数据格式转换电路系统使用图5B中描述和图示的用于将值/数据从定点数据格式(在说明性实施例中为BSF16格式)转换为浮点数据格式(在说明性实施例中为FP16格式)的转换电路系统的处理或操作-尽管位宽可能不同;图5B中图示的处理或操作是示例性的,并且不限制与本文描述的不同的其它技术可以用于将值/数据从定点数据格式(此处,BSF)转换为浮点数据格式;
图6A图示了根据本发明的某些方面的实现Winograd处理技术的(如分别在图2A和图2B中的逻辑和物理概览中图示的)多个乘法器-累加器执行流水线的示例性滤波权重数据/值(F至H)转换和提取电路系统和操作实施例的物理和逻辑概览的示意性框图,其中转换和提取电路系统的每个流水线与MAC处理流水线相关或相关联(参见图3A);
图6B是根据本发明的某些方面的图6A的乘法器-累加器执行流水线的示例性F至H(fij至hij)转换和提取实施例的示例性伪码;
图6C图示了根据本发明的某些方面的实现Winograd处理技术的示例性F至H转换电路系统和多个滤波权重转换流水线(在说明性实施例中为十六个)的数据流图;简而言之,滤波权重数据/值(FIN)被输入到F至H转换电路系统流水线(在说明性实施例中为十六个流水线)中,以将滤波权重数据从浮点数据格式转换为定点数据格式(例如,按块缩放的数据格式);这里,均处于浮点数据格式的滤波权重或系数数据/值(Fij数据/值)被处理并转换为定点数据格式(例如,按块缩放的格式(BSF16));转换电路系统包括“K”单元/电路,以接收处于浮点数据格式的Fij数据/值,并确定或识别滤波权重或系数数据/值的最大指数(EMAX);“M”单元进行时间延迟功能/操作用于指数搜索;“L”单元进行浮点数据格式至定点数据格式转换(具体地,使用EMAXK值的Fij数据/值的FP16至BSF16格式转换);此后,处于定点数据格式的数据被输入到Winograd处理/转换电路系统(经由“X”单元);这里,“X00-X31”单元使用滤波权重数据/值(Fij滤波权重数据/值)的定点数据格式(例如,BSF16)进行Winograd处理技术的F至H转换;此后,将滤波权重数据/值输入到附加的转换电路系统中,以将滤波权重或系数(由Winograd处理电路系统输出)从定点数据格式转换为浮点数据格式;这里,“N”单元使用滤波权重/系数的EMAXL值将数据从定点数据格式转换为浮点数据格式(在该说明性实施例中,使用EMAXL值的Hij数据/值的BSF16至FP16格式转换)并将滤波权重/系数输出到特定MAC处理流水线本地的或与特定MAC处理流水线相关联的存储器(参见,例如,图6A),存储器例如是L1存储器和L0存储器(例如,SRAM);单元/电路在本文中统称为“单元”或“单元”,并且在附图中,具体“单元”有时标记或标识为“单元x”,其中x是K、L、M、N或X(例如,图7A中的单元K);值得注意的是,图7A-图7D以示例性电路框图形式图示了图6C中图示的示例性F至H转换电路系统的逻辑框图的单元。
图6D图示了根据本发明的某些方面的图6A的执行流水线的示例性F至H(fij至hij)转换电路系统的两个示例性单元的示意图;值得注意的是,该示例性实施例中的fij至hij转换电路系统包括十六个左侧单元和十六个右侧单元,其中fij至hij转换电路系统包括(i)用于fij和hij权重值的数据寄存器,(ii)用于排序的控制逻辑,和(iii)用于转换的加法器逻辑;另外,图6D进一步图示了根据本发明的某些方面的示例性fij至hij转换电路系统的多路复用器(mux)电路系统和加法器电路系统的示例性实施例的示意性框图;
图7A图示了根据本发明的某些方面的图6C的示例性F至H转换电路系统的示例性K单元的示意性框图,其中在该示例性实施例中,K单元(在该说明性实施例中为十六个)包括用于识别和/或确定处于浮点数据格式(在该说明性实施例中为FP16格式)的滤波权重数据/值(Fij数据/值)的最大指数(EMAX)的电路系统;在该实施例中,EMAXK寄存器加载有第一Fij值的指数,并且将其余Fij值中的每一个的指数与EMAXK进行比较,如果更大,则替换EMAXK;
图7B图示了根据本发明的某些方面的图6C的示例性F至H转换电路系统的示例性M单元的示意性框图,其中在该示例性实施例中,M单元包括在时间上延迟滤波权重数据/值(Fij数据/值)预定量的时间以在滤波权重数据/值(Fij数据/值)输入到或提供到浮点数据格式至定点数据格式转换电路系统(在该说明性实施例中,经由L单元实现的数据格式转换)之前识别和/或确定滤波权重数据/值(Fij数据/值)的最大或最大指数(EMAX)的电路系统;
图7C图示了根据本发明的某些方面的图6C的示例性F至H转换电路系统的示例性L单元的示意性框图,其中在该示例性实施例中,L单元(在该说明性实施例中为十六个单元)使用EMAXK值将滤波权重数据/值(Fij数据/值)从浮点数据格式转换为定点数据格式(在该说明性实施例中,FP16数据格式至BSF16数据格式);此后,根据本发明的某些方面,将处于定点数据格式的滤波权重数据/值施加到Winograd处理电路系统(例如,图6D),以生成图6C的Winograd处理后的滤波权重数据/值(Hij数据/值);
图7D图示了根据本发明的某些方面的图6C的示例性F至H转换电路系统的示例性N单元的示意图,其中在该示例性实施例中,N单元(在该说明性实施例中,总共十六个单元)使用EMAXL值在Winograd处理之后进行滤波权重数据/值从定点数据格式至浮点数据格式的数据格式转换(在该说明性实施例中,使用EMAXL值的滤波权重数据/值的BSF16至FP16格式转换),以生成处于浮点数据格式的滤波权重数据/值(Hij),处于浮点数据格式的滤波权重数据/值(Hij)此后将被施加到MAC处理流水线(例如,存储在SRAM存储器中以及由MAC处理流水线的乘法器电路使用);
图8A图示了根据本发明的实施例的用于将滤波权重值/数据(Hij值/数据)从定点数据格式(在说明性实施例中为BSF12格式)转换为浮点数据格式(在说明性实施例中为FP16格式)的某些转换电路系统(例如,F/H转换电路系统的N单元-参见图6C)的处理或操作;以这种方式,滤波权重值/数据(Hij值/数据)处于预定的数据格式以供MAC执行流水线处理(例如,图2B和图6A中图示的实施例);值得注意的是,可以结合输入数据/值(D至E)转换电路系统和输出数据(Z至Y)转换电路系统中的定点数据格式至浮点数据格式转换电路系统来使用图8A中描述和图示的用于将值/数据从定点数据格式(在说明性实施例中为BSF16格式)转换为浮点数据格式(在说明性实施例中为FP16格式)的转换电路系统的处理或操作-尽管位宽可能不同;
图8B图示了根据本发明的实施例的在实施到图6A-图6D和图7A-图7D的电路系统和数据流中之前将滤波权重值/数据从第一定点数据格式(例如,INT8格式)转换为第二定点数据格式(例如,BSF12格式)的转换电路系统的处理或操作;简而言之,可以以比其它定点数据格式需要更少的存储器容量和存储器带宽的第一定点数据格式(例如,INT 8比BSF12需要更少的存储器容量和存储器带宽)将Fij值存储在存储器(例如,L3 DRAM存储器和/或L2 SRAM存储器)中;在滤波权重数据/值写入并存储在MAC处理流水线“本地”的存储器(例如,L1或L0存储器-在相关联的流水线本地的SRAM存储器)之后,滤波权重数据/值(Fij值)的格式尺寸可能不太重要/显著;考虑到这一点,通过将72位分配给九个BSF7值(按块缩放的分数格式),其中9位可用于共享指数EMAX,将8位滤波权重(Fij)值的3x3块转换并修改以提供更大或更好的动态范围,而不增加存储器容量占用面积或存储器带宽要求;BSF7值被输入到或提供给转换电路系统,以将处于BSF7数据格式的滤波权重转换为BSF12数据格式;此后,根据本发明的实施例,可以经由转换电路系统(例如,F/H转换电路系统的N单元-参见图C)如图8A中所指示地处理滤波权重值/数据,以将滤波权重值/数据(Hij值/数据)从定点数据格式(例如,BSF12格式)转换为浮点数据格式(例如,FP16格式),以供MAC处理流水线的乘法器电路使用;以这种方式,滤波权重值/数据(Hij值/数据)处于预定的数据格式以供MAC执行流水线处理(例如,图1、图2A和图2B中图示的实施例);
图9A图示了根据本发明的某些方面的实现Winograd处理技术的(如分别在图2A和图2B中的逻辑和物理概览中图示的)多个乘法器-累加器执行流水线的示例性处理后的输出数据(Z至Y或zij至yij)插入和转换电路系统和操作实施例的物理和逻辑概览的示意性框图,其中转换和提取电路系统的每个流水线与MAC处理流水线相关或相关联;
图9B是根据本发明的某些方面的图9A的执行流水线的示例性Z至Y或zij至yij插入和转换实施例的示例性伪码;
图9C图示了根据本发明的某些方面的实现Winograd处理技术的多个流水线(在说明性实施例中为十六个)的示例性Z至Y转换电路系统和Z插入电路系统的数据流图;简而言之,来自MAC处理流水线的数据(ZIN)被输入到16×16Z至Y转换流水线的电路系统中,以将这些数据从浮点数据格式(例如,FP32)转换为定点数据格式(例如,按块缩放的数据格式);这里,通过将Zij数据/值(“ZIN”)输入到“T”单元的16x16阵列中,将均处于浮点数据格式的数据/值(Zij数据/值)处理并转换为定点数据格式(例如,按块缩放的格式(BSF32)),其中,此后,将插入的Zij数据/值输入到或提供给包括“U”单元的十六个Z至Y转换流水线,以接收处于浮点数据格式的数据/值并确定此类输入数据的最大指数(EMAXU);“R”单元进行时间延迟功能/操作用于指数搜索;“V”单元进行浮点数据格式至定点数据格式转换(具体地,使用EMAXU值的Zij数据/值的FP32至BSF32格式转换);此后,处于定点数据格式的Zij输出数据被输入到Winograd转换电路系统(在一个实施例中,“X”单元(即,X00-X31))中;这里,“X00-X31”单元使用数据/值(Zij数据/值)的定点数据格式(例如,BSF32)表示经由Winograd处理技术进行Z至Y转换,以生成Yij输出数据/值;此后,输出数据/值(Yij)被输入到附加的转换电路系统中,以使用来自Winograd转换电路系统的处于定点数据格式的(Yij)数据/值生成处于浮点数据格式(例如,FP32)的输出数据/值;这里,“W”单元使用EMAXV值将数据从定点数据格式转换为浮点数据格式(在该说明性实施例中,使用EMAXV值的Yij数据/值的BSF32至FP32格式转换);值得注意的是,单元/电路在本文中统称为“单元”或“单元”,并且在附图中,特定的“单元”有时标记或标识为“单元x”,其中x是R、T、U、V、W或X(例如,图10A中的单元T);
图9D图示了根据本发明的某些方面的Z(Zij)插入电路系统和Z至Y(zij至yij)转换电路系统的示例性实施例的示意图,包括图9A的示例性Z至Y(zij至yij)插入/转换电路系统的zij插入逻辑电路系统的一个单元(图的左侧部分)和zij至yij转换电路系统的一个单元(图的右侧部分);
图10A图示了根据本发明的某些方面的图9A和图9C的示例性Z至Y转换电路系统和Z插入电路系统的示例性T单元的示意性框图,其中在该示例性实施例中,T单元(在该实施例中为16×16阵列)从MAC处理流水线接收数据(ZIN),以用于插入到示例性Z至Y转换电路系统中;
图10B图示了根据本发明的某些方面的图9A和图9C的示例性Z至Y转换电路系统和Z插入电路系统的示例性U单元的示意性框图,其中在该示例性实施例中,U单元(在该说明性实施例中为十六个)包括用于接收T单元的输出并识别和/或确定处于浮点数据格式(在本说明性实施例中为FP32格式)的输出数据/值(Zij数据/值)的最大指数(EMAX)的电路系统;这里,在一个实施例中,EMAX寄存器加载有第一Zij值的指数(EMAXU),并且将其余Zij值中的每一个的指数与EMAXU进行比较,如果更大,则替换EMAXU;
图10C图示了根据本发明的某些方面的图9A和图9C的示例性Z至Y转换电路系统和Z插入电路系统的示例性R单元的示意性框图,其中在该示例性实施例中,M单元包括在时间上延迟数据/值(Zij数据/值)预定量的时间以在输出数据/值(Zij数据/值)被输入到或提供给浮点数据格式至定点数据格式转换电路系统(在该说明性实施例中,经由V单元完成)之前识别和/或确定MAC处理流水线的输出数据/值(Zij数据/值)的最大或最大指数(EMAXU)的电路系统;
图10D图示了根据本发明的某些方面的图9A和图9C的示例性Z至Y转换电路系统和Z插入电路系统的示例性V单元的示意性框图,其中在该示例性实施例中,V单元(在该说明性实施例为十六个)使用EMAXU值将数据/值(Zij数据/值)从浮点数据格式转换为定点数据格式(在该说明性实施例中,FP32数据格式至BSF32数据格式);此后,根据本发明的某些方面,处于定点数据格式的数据被施加到Winograd转换电路系统(例如,图6D的X单元)以生成Yij数据/值;和
图10E图示了根据本发明的某些方面的图9A和图9C的示例性Z至Y转换电路系统和Z插入电路系统的示例性W单元的示意图,其中在该示例性实施例中,在Winograd处理之后,W单元(在该说明性实施例中,总共十六个单元)使用EMAXV值进行数据/值从定点至浮点的数据格式转换(在该说明性实施例中,使用EMAXV值的处理后的输出数据/值的BSF32至FP32格式转换),以生成处于浮点数据格式的输出数据(Yij)。
再一次说明,本文描述和图示了许多发明。本发明不限于说明性的示例性实施例,包括关于:(i)图示的(一个或多个)特定浮点格式、(一个或多个)特定定点格式、块/数据宽度或长度、数据路径宽度、带宽、值、处理和/或算法,或(ii)示例性逻辑或物理概览配置、示例性电路系统配置和/或示例性Verilog代码。
此外,本发明既不限于任何单个方面或其实施例,也不限于这些方面和/或实施例的任何组合和/或置换。本发明的每个方面和/或其实施例可以单独使用或与本发明的其它方面和/或其实施例中的一个或多个组合使用。为简便起见,本文没有分开讨论或图示许多这样的组合和置换。
具体实施方式
在第一方面中,本发明涉及具有连接或配置在一个或多个数据处理流水线(例如,线性流水线)中的多个乘法器-累加器电路的一个或多个集成电路,其使用Winograd类型处理技术来处理输入数据(例如,图像数据)。一个或多个集成电路还包括(i)用于将输入数据和/或滤波系数或权重的数据格式从浮点数据格式转换为定点数据格式的转换电路系统和(ii)用于实现Winograd类型处理以例如增加乘法器-累加器电路系统和处理的数据吞吐量的电路系统。一个或多个集成电路还可以包括将经由Winograd处理电路系统处理之后的输入数据和/或滤波系数/权重数据的数据格式从定点数据格式转换为浮点数据格式的转换电路系统。Winograd处理电路系统的输出被施加到或输入到转换电路系统中以将Winograd处理之后的输入数据和/或滤波系数/权重数据在这样的数据输入到乘法器-累加器电路系统之前从定点数据格式转换或变换为浮点数据格式。以这种方式,由一个或多个乘法器-累加器流水线中的每一个的乘法器电路和累加电路实现的数据处理处于浮点格式。
值得注意的是,输入数据和相关联的滤波权重或系数可以以浮点数据格式存储在存储器中,其中将这些数据提供给转换电路系统,以将数据从浮点数据格式转换或变换为便于在Winograd类型处理中实现或与Winograd类型处理的使用一致的定点数据格式(例如,按块缩放的分数格式)。
在一个实施例中,一个或多个集成电路包括转换电路系统或用于将输入数据从浮点数据格式转换或处理为定点数据格式的转换电路系统(有时称为D/E、D-E或D至E转换逻辑或转换电路系统)。此后,处于定点数据格式的输入数据被输入到用于实现Winograd类型处理以例如增加乘法器-累加器电路系统和处理的数据吞吐量的电路系统中。Winograd处理电路系统的输出被施加到或输入到转换电路系统中,以在输入数据经由提取逻辑电路系统输入到乘法器-累加器电路系统之前将这些数据从定点数据格式转换或变换为浮点数据格式。可以由一个或多个乘法器-累加器流水线的乘法器-累加器电路处理的输入数据处于浮点格式。
在另一个实施例中,一个或多个集成电路包括用于将滤波权重或系数值/数据转换为定点格式以用于经由Winograd处理电路系统处理的转换电路系统(有时称为F/H、F-H或F至H转换逻辑或电路系统)。此后,Winograd处理电路系统的输出被输入到转换电路系统中,以在滤波权重数据经由提取逻辑电路系统输入到乘法器-累加器电路系统之前将这些数据从定点数据格式转换为浮点数据格式。由(一个或多个)乘法器-累加器执行流水线的乘法器-累加器电路系统的乘法器电路与输入数据(其也处于浮点数据格式)一起采用具有浮点数据格式的这样的权重值或数据。以这种方式,在浮点数据格式状况中进行乘法器累加运算的乘法运算。
执行或处理流水线(例如,用于图像滤波)的乘法器-累加器电路系统(以及操作这种电路系统的方法)可以包括基于具有一个或多个浮点数据格式的输入实现浮点乘法和浮点加法的浮点执行电路系统(例如,浮点乘法器电路和累加/加法器电路)。浮点数据格式可以是用户或系统限定的和/或可以是一次性可编程的(例如,在制造时)或多于一次性可编程的(例如,(i)在通电时或经由通电、启动或者初始化序列/处理序列的进行/完成,和/或(ii)原位或在集成电路或处理流水线的乘法器-累加器电路系统的正常操作期间)。在一个实施例中,乘法器-累加器执行流水线的电路系统包括可调精度的数据格式(例如,浮点数据格式)。除此之外或代替其,执行流水线的电路系统可以并发地处理数据以增加流水线的吞吐量。例如,在一种实现方式中,本发明可以包括便于乘法和累加运算的流水线化的多个分开的乘法器-累加器电路(本文中有时称为“MAC”)和多个寄存器(在一个实施例中,包括多个影子寄存器),其中执行流水线的电路系统并发地处理数据以增加流水线的吞吐量。
本发明还可以包括并入在MAC流水线中或者耦合到MAC流水线的输出以将处于浮点数据格式的输出数据转换为定点数据格式的转换电路系统,其中输出数据被输入到Winograd处理电路系统中。在Winograd处理之后,输出数据可以被转换为浮点数据格式,并且在一个实施例中被存储在存储器中。例如,本发明采用与Winograd类型处理一致的转换电路系统(有时称为Z/Y、Z-Y或Z至Y转换逻辑或电路系统),以生成处理后的输出数据(例如,输出图像数据)。然而,在(一个或多个)乘法器-累加器执行流水线的乘法器-累加器电路系统输出处理后的数据之前,这样的数据被施加或输入到数据格式转换电路系统和处理中,该数据格式转换电路系统和处理将处于浮点数据格式的处理后的数据转换或变换为具有便于在Winograd类型处理中实现或与Winograd类型处理的使用一致的数据格式(例如,定点数据格式,诸如,BSF)的处理后的数据。这里,通过与Winograd类型处理一致的Z-Y转换电路系统来处理处于定点数据格式的处理后的数据。值得注意的是,在一个实施例中,Z-Y转换电路系统被并入或集成到(一个或多个)乘法器-累加器执行流水线中。也就是说,在MAC执行/处理流水线中进行处理后的数据的Z-Y转换的操作。
此后,本发明可以采用将Winograd处理之后的输出数据(处于定点数据格式)从定点数据格式转换或变换为浮点数据格式的电路系统和技术。也就是说,在一个实施例中,在具有便于在Winograd类型处理中实现或与Winograd类型处理的使用一致的数据格式(例如,定点数据格式诸如,按块缩放的分数格式)的处理后的输出数据之后,本发明可以采用用于在例如输出到存储器(例如,L2存储器,诸如SRAM)之前将数据(例如,像素数据)转换或变换为浮点数据格式的转换电路系统和技术。在一个实施例中,输出数据(例如,图像数据)以浮点数据格式写入并存储到存储器。
参考图1和图2A-图2C中图示的逻辑概览,在一个示例性实施例中,输入数据(例如,处于浮点格式的图像数据/像素)存储在由输入或图像数据/像素的二维阵列(例如,MxM,其中M=3)组成的层中的存储器中。输入数据/值(Dij)可以组织和/或存储在“深度”平面或层(例如,K深度层,其中在一个实施例中,K=64)中的存储器中,并且输出数据/值(Yij)在处理之后被组织和/或存储在输出“深度”平面或层(例如,L输出深度平面,其中在一个实施例中,L=64)中的存储器中。存储输入数据/值和输出数据/值的存储器(可以是相同的物理存储器或不同的物理存储器)还存储与输入数据相关联的滤波权重数据/值(例如,处于浮点格式)。在一个实施例中,滤波权重或系数数据/值(Fkl)被组织和/或存储在M×M块或阵列中的存储器中,其中KxL块或阵列覆盖输入和输出层的组合(例如,所有组合)。
数据中的一个或多个(或全部)可以被以浮点数据格式存储、输入到处理流水线的电路系统中,和/或从流水线的电路系统输出。也就是说,在一个实施例中,输入数据(例如,图像数据/像素)被以浮点数据格式存储在存储器中和/或输入到处理的电路系统中。除此之外或代替其,在乘法器累加处理中使用的滤波权重或系数数据/值被以浮点数据格式存储在存储器中和/或输入到处理的电路系统中。此外,如本文阐述所处理的输出数据可以被以浮点数据格式存储在存储器中和/或输出。以浮点数据格式存储在存储器中、输入到处理流水线的电路系统中和/或从流水线输出的数据的所有组合都旨在落入本发明的范围之内。然而,在下面的讨论中,输入数据(例如,图像数据/像素)、滤波权重数据/值和处理后的输出数据被以浮点数据格式存储、被以浮点数据格式输入到处理流水线的乘法器-累加器电路中或通过处理流水线的乘法器-累加器电路访问以及被以浮点数据格式从处理流水线输出。
值得注意的是,执行流水线的乘法器-累加器电路系统包括使乘法和累加运算流水线化的多个分开的乘法器-累加器电路(在本文中和/或在附图中有时称为“MAC”或“MAC电路”)。在本文阐述的说明性实施例(文本和附图)中,乘法器-累加器电路的流水线有时称为或标记为“MAC执行流水线”、“MAC处理流水线”或“MAC流水线”。
在乘法器-累加器电路系统的第一操作模式中,采用单个执行流水线通过聚合来自输入数据的K层的输入数据值和相关联的滤波权重值的K×MxM乘法的总和来在单个输出层中累加1x1像素输出值。简而言之,在第一操作模式中,通过乘法器-累加器电路系统的NMAX执行流水线进行3×3(MxM)乘法和累加,从而得到Vijkl值(参见图1-“ΣM”记号)。这里,MAC执行流水线进一步进行输入平面(参见,索引K)的累加,从而得到Yijl值(参见“ΣK”记号)。这些累加运算的结果是单个像素值Yijl(1x1),其被写入到输出平面中(与写入到具有其它输出深度值(例如,“L”索引值)的其它输出平面的其它单个像素并行)。
在乘法器-累加器电路系统的第二操作模式中,采用N×N执行流水线,其中输入或图像数据/像素的二维阵列从MxM阵列(例如,M=3)变换为NxN阵列(例如,N=4)。(参见图2A-图2C)。在该示例性实施例中,D至E转换逻辑操作(经由D至E转换电路系统)除了其它之外生成输入或图像数据/像素的NxN阵列。(参见图3A-图3D)。类似地,经由F至H转换电路系统将滤波权重或权重值的二维阵列从MxM阵列(例如,M=3)变换或转换为N×N阵列(例如,N=4)。滤波系数或滤波权重的NxN阵列与相关联的输入数据/值正确相关。
在一个实施例中,F至H转换电路系统设置在存储器与乘法器-累加器执行流水线之间。在另一个实施例中,存储器存储滤波权重或权重值的N×N阵列,滤波权重或权重值被预先计算(例如,片外)并存储在存储器中作为滤波权重或滤波权重值的NxN阵列。以这种方式,F至H转换电路系统不设置在存储器与乘法器-累加器执行流水线之间和/或紧接在乘法器-累加器执行流水线中采用滤波权重之前对这样的数据实现/进行F至H转换操作。然而,在存储器中存储预先计算的滤波权重值/数据的NxN阵列(而不是在操作期间乘法器-累加器电路系统/流水线(即,在飞行中)计算这样的值/数据)可能增加存储这种滤波权重或权重值所需的存储器,这又可能增加该替代实施例中所采用的存储器的容量要求(例如,增加可能在N×N/M×M的量级,或在该示例性实施例中大约为16/9)。
继续参考图2A和图2B,在乘法器-累加器电路系统的第二操作模式中,MAC处理流水线实现或进行来自输入平面(索引K)的值Uijklm(来自Eijk*Hklm乘法)累加为Zijlm值,如由ΣK记号示出的-其中NxN(例如,4x4)乘法替代或替换图1中图示的乘法器-累加器电路系统的MxM(例如,3x3)。在第二操作模式中,每个MAC处理或执行流水线实现或进行乘法和累加(在说明性实施例中为十六个),此后,处理后的数据(Zij)输出到zij至yij转换电路系统,其中在进一步处理之后,四个数据/像素输出Yijl(2x2)并被写入到输出(存储器)平面(例如,与写入到其它输出平面(其它L索引值)的其它Yijl 2x2像素并行)。
简而言之,参考图2C,根据本发明的各方面的图2B中的示例性物理概览的电路系统的示例性时序图示了乘法器-累加器电路系统的16个并行乘法器-累加器执行流水线的操作和与存储器的连接路径。这里,每对波形图示了16个流水线中的第一个和最后一个,具有与乘法器-累加器电路系统的示例性乘法器-累加器执行流水线的中间14个流水线的类似行为。每个操作组处理与64层中的每一个的4x4 D块相对应的16x64输入数据字-其中每个流水线使用64个时钟周期(例如,在该示例性实施例中每个周期可以是1ns)。顶部波形图示了通过D至E转换电路系统从存储器(例如,L2 SRAM存储器)移动到D至E转换操作的D块。该输送步骤具有16ns的流水线等待时间;当数据的1/4可用时,可以开始转换步骤。
值得注意的是,一些级具有16ns流水线等待时间和64ns流水线周期率;换句话说,每个级可以在每64ns间隔中接受新的16x64字操作,但可能与其下一级的处理重叠48ns。D至E转换操作产生4x4 E块。提取逻辑电路系统将16个Eij数据/值与每4x4块分开,将每个传递给16个执行流水线中的一个。4x4 E块的64ns需要64ns移入-此级(和下面的两级)具有流水线等待时间,并且流水线周期时间是相同的。
继续参考图2C,当E块已被移位到乘法器-累加器电路系统的执行流水线中时,流水线进行16x64x64 MAC运算(标记为“MAC运算”);在16个流水线中的每一个中64个乘法器和64个加法器均通过64ns间隔每纳秒进行一个操作。这是输入平面和输出平面上的“K”和“L”索引上的累加。4×4Z块的64ns需要64ns移出-该级能够将Z至Y插入级重叠48ns。同样地,Z至Y转换级能够与L2写入级重叠48ns。每个2x2像素块消耗64ns的流水线周期时间-在时序波形中,下一个2x2块以深灰色示出。因此,在该示例中所有128k像素的处理将需要1ms(~100万ns)。在该示例性实施例中,整个16x64字操作具有18x16ns或者288ns的流水线等待时间。在该示例性图示中,288ns的流水线等待时间比1ms的总操作等待时间小约3,472倍,因此对系统的总吞吐量具有相对小的影响。
参考图2A、图2B和图3A,在一个实施例中,采用输入数据转换电路系统(有时称为D/E、D-E或D至E转换逻辑或转换电路系统)以(i)将输入数据/值从浮点数据格式转换为定点数据格式,(ii)此后,处于定点数据格式的输入数据被输入到实现Winograd类型处理的电路系统中,以及(iii)在经由提取逻辑电路系统将输入数据(例如,像素/图像数据)输入到乘法器-累加器电路系统之前,将由Winograd处理电路系统输出的输入数据从定点数据格式转换或变换为浮点数据格式。这里,由一个或多个乘法器-累加器流水线的乘法器-累加器电路处理的输入数据/值处于浮点格式。
参考图3A,在该实施例中,输入数据/值(Dij)的4×4像素/数据块被从L3/L2存储器读取并输入到D至E转换电路系统(在图示的实施例中为十六个dij至eij流水线)以生成输入数据数据/值(Eij)的4x4像素/数据块。D至E转换电路系统经由提取电路系统提取数据的4×4Eij块,并将输入数据/值移位到MAC处理流水线中(在图示的示例性实施例中,MAC流水线的16×64阵列)。如下面更详细地讨论的,Eij数据/值经由MAC处理流水线的乘法器电路乘以Hij值(从L1/L0存储器输入)并经由MAC处理流水线的累加器电路累加作为Zij数据/值。值得注意的是,在操作中,在MAC流水线的阵列的乘法器-累加器执行流水线的16x64内多次(典型地,64次或更多次)使用每个Eij值/数据。
图3C是根据本发明的某些方面的D至E转换逻辑/电路系统的逻辑概览的示意性框图,其中输入数据(例如,图像或像素数据)首先经由Q单元从浮点格式转换为定点格式(在说明性示例中,按块缩放的分数格式),定点格式是便于在Winograd类型处理中实现或与Winograd类型处理的使用一致的数据格式(例如,定点格式,诸如,按块缩放的分数格式)。然后经由Winograd转换电路系统(X单元)处理输入数据以实现Winograd类型处理。此后,根据本发明,将数据从定点数据格式转换为浮点格式以用于在MAC处理流水线的乘法器累加处理中实现。值得注意的是,图3D是根据本发明的某些方面的图3C中图示的概览的示例性时序图概览。
参考图3C和图3D-图3F,在一个示例性实施例中,D至E转换逻辑从存储处于浮点数据格式的数据的4x4 D块的存储器(例如,L2 SRAM存储器)接收输入数据。在一个实施例中,存储器被分割或划分为16个物理块,从而可以并行访问十六组图像数据(即,数据的4x4 D块),以供乘法器-累加器电路系统的十六个乘法器-累加器执行流水线使用。每组数据由可以从存储器的每个物理块以64字读取或访问的数据的四个4x4 D块组成。D至E转换逻辑包括将(在本说明性实施例中,从存储器读取的)数据从浮点数据格式转换或变换为便于在Winograd类型处理中实现或与Winograd类型处理的使用一致的数据格式(例如,定点数据格式,诸如,按块缩放的分数格式)的转换电路系统。(参见图3C、图4A、图4B和图4C)。然后经由D至E(dij至eij)转换电路系统的Winograd处理电路系统处理数据。(参见,图4D和图4E)。
参考图3C、图4A-图4C,数据(DIN)被输入到电路系统的16个D/E转换流水线中,以将这些数据从浮点数据格式转换为定点数据格式(例如,按块缩放的数据格式)。在该示例性实施例中,均处于浮点数据格式的输入数据/值(Dij数据/值)被处理并转换为定点数据格式(例如,整数格式(INT16)或按块缩放的格式(BSF16))。输入数据转换电路系统的P单元/电路(在下文中统称为单元)接收处于浮点数据格式的Dij数据/值,并确定这种输入数据的最大指数(EMAX)。R单元的16x16阵列实现或进行时间延迟功能/操作以适应指数搜索(即,最大指数-EMAX)。Q单元使用EMAX值将输入数据/值(Dij)从浮点数据格式(FP16)转换为定点数据格式(BSF16)。
此后,处于定点数据格式的输入数据(Dij)被输入到Winograd转换电路系统(经由“X”单元)中。参考图3C、图4D和图4E,输入数据转换电路系统的X00-X31单元使用输入数据/值(Dij数据/值)的定点数据格式(例如,BSF16)表示进行或实现Winograd处理。输入数据转换电路系统(D至E转换电路系统)的Winograd处理电路系统在该示例性实施例中包括(i)十六个左侧单元(即,X00至X15单元),(ⅱ)用于dij和eij数据字的数据寄存器,(iii)用于对处理的操作排序的控制逻辑,以及(iv)用于转换的加法器逻辑。在本示例性实施例中,eij提取逻辑电路系统进一步包括(i)十六个右侧单元(即,X16至X31单元),(ii)用于dij和eij数据字的数据寄存器,(ⅲ)用于对操作排序的控制逻辑,以及(iv)用于转换的加法器逻辑。
参考图3C和图4F,在Winograd处理之后,但在数据被输入到MAC处理流水线的乘法器-累加器电路之前,输入数据(Eij)经由S单元从定点数据格式转换为浮点数据格式。这里,S单元使用EMAX值将输入数据从定点数据格式转换为浮点数据格式(在该说明性实施例中,使用EMAX值的Eij数据/值的BSF16至FP16格式转换)。此外,提取逻辑电路系统将处于浮点数据格式的输入数据(Eij)输出到MAC执行流水线的乘法器-累加器电路。以这种方式,由MAC流水线的乘法器和累加器电路处理的数据处于浮点格式。
因此,在该示例性实施例中,转换电路系统将数据的4×4D块转换为定点格式(图3C和图4A-图4C),此后将其经由Winograd处理电路系统(图3C、图4D和图4E)转换为数据的4×4E块。然后,在该说明性实施例中,将数据的4x4E块从定点数据格式转换为浮点数据格式,其中4x4E块被分开成由数据的4x4 E块的各个Eij数据/数据分类的十六个流。(参见图3C、图4E和图4F)。分开由eij提取逻辑电路系统(在该说明性实施例中为十六个eij提取逻辑电路-参见图4E)来实现。十六个eij流中的每一个可以涉及乘法器-累加器电路系统的MAC执行流水线(在该说明性实施例中为十六个MAC执行流水线)中的一个的“e移位DIN”电路块。
值得注意的是,参考本申请的图3C,D至E(dij至eij)转换电路系统还包括将处于浮点数据格式的提取出的数据输入(eij)携带到乘法器-累加器电路系统的相关联或适当的MAC执行流水线的垂直“EOUT”输出(图4F中的EX_OUT)。这里,单元S的电路系统(参见图4F)将数据转换为浮点格式。在一个替代实施例中,可以在图4E的eij提取单元中实现或进行某些dij至eij转换处理。
如上所述,图4A-图4F以电路框图形式图示了在图3C中图示的用来将输入数据(可以存储在存储器(例如,由图像数据/像素的二维阵列组成的层)中)从浮点数据格式转换为定点数据格式(例如,按块缩放的分数(BSF)格式)的逻辑框图的单元/电路的细节。图4F以电路框图形式图示了在图3C中图示的用来将处于定点数据格式(例如,按块缩放的分数(BSF)格式)的Winograd转换后的数据转换为浮点数据格式的逻辑框图的单元的细节。以这种方式,输入到乘法器-累加器执行流水线以供乘法器-累加器电路系统处理的输入数据处于浮点数据格式,并且如此,由乘法器-累加器电路系统在浮点数据状况下进行乘法运算和累加运算。
图5A图示了用来将输入数据/值(Dij)从浮点数据格式转换或改变为按块缩放的分数数据格式的示例性处理或步骤。在示例性实施例中,数据宽度为16-如此,FP16至BSF16转换。参考图3C、图4A-图4F和图5A,在一个实施例中,输入数据从浮点数据格式转换为定点数据格式(在该说明性实施例中为BSF),并且以这种方式,每组输入数据/值(16个Dij值)可以使用公共指数(EMAX),从而消除和/或减少使用FP16格式添加值所需的对准和规范化操作。此外,每个输入数据/值(Dij)然后可以具有可用于数据/值的分数字段的附加位-从而可能增加BSF16值的精度。
继续参考图5A,用于将数据/值从浮点数据格式(在说明性实施例中为FP16格式)转换为定点数据格式(在说明性实施例中为BSF16格式)的转换电路系统的处理或操作包括确定数据/值的最大指数(例如,通过比较每个数据/值的指数(例如,在滚动基础上)。另外,对于具有较小指数的每个数据/值右移分数字段。每个数据/值的分数字段被舍入以符合分数字段的BSF精度(可以是预确定的)。最后,处理可以包括其中数据/值为负的二进制补码运算(将位取反并递增)。
如上所述,可以分别在滤波权重(F至H)转换电路系统和输出数据(Z至Y)转换电路系统中采用图5A中描述和图示的处理或操作来将滤波权重数据/值和输出数据/值从浮点数据格式转换为定点数据格式-尽管位宽可能不同。此外,图5A中图示的处理或操作是示例性的,并且不限制与本文描述的不同的其它技术可以用来将值/数据从浮点数据格式转换为定点数据格式(这里,BSF)。
参考图3C、图4F和图5B,在一个实施例中,在D/E转换电路系统的流水线生成十六个Eij数据/值之后,在被输入到乘法器-累加器电路系统的乘法器-累加器执行流水线之前,Winograd处理后的输入数据/值(Eij)的格式被转换浮点格式。这里,乘法器-累加器电路系统的乘法器-累加器执行流水线进行乘法器累加运算的乘法运算。
简单地说,图5B图示了用来将输入数据/值(Eij)从按块缩放的分数(BSF)格式改变或转换为浮点(FP)格式(在说明性实施例中,BSF16格式至FP16格式)的处理或步骤。再一次说明,尽管两种格式可以使用相同量的存储器容量和存储器带宽,但是在该实施例中,用电路系统修改D/E转换流水线以将数据从定点转换为浮点格式(例如,BSF16至FP16改变/转换)。以这种方式,由乘法器-累加器流水线的电路系统处理的输入数据(例如,图像/像素数据)处于浮点格式。
继续参考图5B,用于将数据/值从定点数据格式(在说明性实施例中为BSF16格式)转换为浮点数据格式(在说明性实施例中为FP16格式)的转换电路系统的处理或操作包括确定数据/值是否为负,并且如果是,则对分数字段进行二进制补码运算(将位取反并递增)。另外,处理可以包括对BSF数据/值的分数字段进行优先级编码操作,以及对负值/数据的分数字段进行左移操作。每个数据/值的分数字段可以相对于移位的分数字段被舍入。最后,处理采用数据/值的最大指数来生成指数字段-例如,来自左移量。
如上所述,可以分别在滤波权重(F至H)转换电路系统和输出数据(Z至Y)转换电路系统的转换电路系统中采用图5B中描述和图示的处理或操作来将滤波权重数据/值和输出数据/值从定点数据格式转换为浮点数据格式-尽管位宽可能不同。此外,图5B中图示的处理或操作是示例性的,并且不限制与本文描述的不同的其它技术可以用来将值/数据从定点数据格式(此处,BSF)转换为浮点数据格式。
参考图6A和图6C,在另一个实施例中,本发明包括滤波权重转换电路系统(有时称为F/H、F-H或F至H转换逻辑或电路系统)。在一个实施例中,滤波权重转换电路系统(i)将滤波权重值/数据从浮点数据格式转换为定点数据格式,(ii)此后,处于定点数据格式的滤波权重值/数据被输入到实现Winograd类型处理的电路系统中,以及(iii)将作为Winograd处理电路系统的输出的滤波权重值/数据从定点数据格式转换或变换为浮点数据格式。在将滤波权重值/数据从定点数据格式转换为浮点数据格式之后,处于浮点数据格式的滤波权重值/数据被输入到乘法器-累加器电路系统中。由(一个或多个)乘法器-累加器执行流水线的乘法器-累加器电路系统的乘法器电路与输入数据(其也处于浮点数据格式)一起采用这样的权重值/数据。以这种方式,在浮点数据格式状况下进行乘法器累加运算的乘法运算。
参考图6A,在一个实施例中,存储器(例如,L2 SRAM存储器)存储滤波权重数据/值(例如,FIR滤波权重)的数据的3×3F块。在该说明性的示例性实施例中,存储器被分割或划分为十六个物理块,使得可以由乘法器-累加器电路系统的十六个乘法器-累加器执行流水线并行读取或访问十六组数据或者十六组数据被并行读取或访问以用于乘法器-累加器电路系统的十六个乘法器-累加器执行流水线。每组数据由数据的四个3x3 F块组成,在该说明性的示例性实施例中,需要从每个物理L2块的36次访问,每次访问需要1ns。由F至H(fkl至hkl)转换电路系统(在该说明性实施例中为十六个流水线)将数据的3x3 F块转换为数据的4x4 H块。滤波权重数据的4x4 H块可以被写入到由乘法器-累加器电路系统的相关联的乘法器-累加器执行流水线(在该说明性实施例中为十六个流水线)共享的存储器(例如,L1SRAM存储器)。在一个实施例中,数据的4×4H块的十六个滤波权重数据/值(hkl)中的每一个被写入并存储在十六个乘法器-累加器执行流水线之一本地的并与十六个乘法器-累加器执行流水线之一相关联的存储器(例如,L0 SRAM存储器)中,以供其乘法器电路使用。
在一个实施例中,当读取L1存储器中的滤波权重数据/值(hkl)以及将滤波权重数据/值(hkl)写入到本地且相关联的存储器(例如,与特定乘法器-累加器执行流水线相关联的L0存储器)时,通过存储器寻址序列来实现和进行该分类和组织。然而,可替代地,可以经由提取逻辑电路系统(在滤波权重数据/值(hkl)中,类似于图3A和图4E中图示的D至E(dij至eij)转换电路系统的示例性提取电路系统的电路系统和操作)实现和进行分类和组织。可以从存储器一次读取权重值或数据并将其传输给乘法器-累加器电路系统的MAC处理流水线,然后重复使用以处理2x2输入/图像数据或像素的块(例如,数千)中的每个块。
图6C是根据本发明的某些方面的F至H转换电路系统的逻辑概览,其中滤波权重数据/值首先从浮点格式转换为定点格式(在说明性示例中,按块缩放的分数格式或整数格式),该定点格式是便于在Winograd类型处理中实现或与Winograd类型处理的使用一致的数据格式。滤波权重(F至H)转换电路系统可以采用图5A中描述的处理或操作,以将滤波权重数据从浮点数据格式转换为定点数据格式。
继续参考图6C,然后经由Winograd转换电路系统处理滤波权重数据/值以实现Winograd类型处理。此后,数据从定点数据格式转换为浮点数据格式,以用于在MAC处理流水线的乘法器累加处理中实现。如本文所讨论的,滤波权重(F至H)转换电路系统可以采用图5B和/或图8A中描述的处理或操作,以将滤波权重数据从定点数据格式转换为浮点数据格式。
继续参考图6C,滤波权重数据/值(FIN)被输入到流水线的F至H转换电路系统(在说明性实施例中,十六个F至H转换流水线)中,以将滤波权重数据从浮点数据格式转换为定点数据格式(例如,按块缩放的数据格式)。均处于浮点数据格式的滤波权重或系数数据/值(Fij数据/值)(经由K单元/电路、M单元/电路和L单元/电路)被处理并转换为定点数据格式(例如,按块缩放的格式(BSF16))。K单元/电路接收处于浮点数据格式的Fij数据/值,并确定或识别滤波权重或系数数据/值的最大指数(EMAX)。M单元/电路进行时间延迟功能/操作以与用来进行或实现前面提及的指数搜索的时间相关。L单元进行浮点数据格式至定点数据格式转换(在该说明性实施例中,使用EMAXK值的Fij数据/值的FP16至BSF16格式转换)。
此后,处于定点数据格式的数据被输入到Winograd处理/转换电路系统中。这里,“X00-X31”单元使用滤波权重数据/值(Fij滤波权重数据/值)的定点数据格式(例如,BSF16)表示进行Winograd处理技术的F至H转换。在Winograd转换电路系统处理滤波权重数据/值之后,将滤波权重数据/值(Hij)输入到转换电路系统中,以将滤波权重或系数从定点数据格式(例如,BSF16或INT16)转换为浮点数据格式(FP16)。在这方面,N单元使用滤波权重/系数的最大指数(EMAXL值)将滤波权重数据/值(Hij)从定点数据格式转换为浮点数据格式(在该说明性实施例中,使用EMAXL值的Hij数据/值的BSF16至FP16格式转换)。在一个实施例中,处于浮点数据格式的滤波权重数据/值(Hij)被输出到一个或多个特定MAC处理流水线本地的或与一个或多个特定MAC处理流水线相关联的存储器(参见,例如,图6A),例如,L1存储器和L0存储器(例如,SRAM)。
图6D图示了关于Winograd转换电路系统的权重数据或值的示例性F/H转换流水线的单元的细节。特别地,图6D图示了根据本发明的某些方面的fkl至hkl转换电路系统的两个单元的细节。值得注意的是,在该说明性实施例中没有实现像图4E中实现的逻辑电路系统那样的提取逻辑电路系统。该示例性实施例中的F至H(fkl至hkl)转换电路系统包括十六个左侧单元和十六个右侧单元。另外,F至H(fkl至hkl)转换电路系统包括(i)用于fkl和hkl权重值的数据寄存器,(ii)用于排序的控制逻辑,和(iii)用于转换的加法器逻辑。
继续参考图6D,在权重数据或值从浮点数据格式转换为定点数据格式之后,滤波权重数据/值(Fij)被移位到X00-X31单元中以供Winograd转换电路系统处理,并被保持或临时存储在FREG_X和FREG_Y寄存器中。十六个滤波权重数据/值(Hij)移位通过这32个位置,并且适当的Fij数据/值累加到滤波权重数据/值(Hij)的Winograd表示中。在该说明性实施例中,然后将十六个Hij数据/值移位到转换电路系统(N单元),在其中使用滤波权重/系数的最大指数(EMAXL值)将滤波权重数据/值(Hij)的数据格式从定点数据格式转换为浮点数据格式(在该说明性实施例中,使用EMAXL值的Hij数据/值的BSF16至FP16格式转换)。(参见图6C)。
此后,F至H转换电路系统向L1 SRAM存储器以浮点数据格式移位或输出滤波权重数据/值(Hij)-在一个实施例中,L1 SRAM存储器由乘法器-累加器电路系统的多个乘法器-累加器执行流水线共享。参考图6A,然后可以将处于浮点数据格式的滤波权重数据/值(Hij)输出并写入一个或多个特定MAC处理流水线本地的或与一个或多个特定MAC处理流水线相关联的存储器中,存储器例如是L0存储器(例如,SRAM)。在一个实施例中,每个MAC处理流水线与一个L0存储器相关联,其中该本地存储器专用于相关联的MAC处理流水线的电路系统/操作。
值得注意的是,图6D中图示的实施例包括十位精度的由Winograd处理电路系统处理之后的滤波权重数据/值(hkl)的累加路径,并且利用饱和加法器来处理上溢。替代实施例可以采用具有十二位精度的滤波权重数据/值(hkl)的累加路径,并且不采用饱和加法器来处理上溢;这里,十二位累加路径具有足够的数值范围以避免上溢。
参考图6C,用于滤波权重数据/值的F至H转换电路系统类似于结合D至E转换电路系统(和转换流水线)描述的转换电路系统。简而言之,K单元接收处于浮点数据格式(FP16)的滤波权重数据/值(Fij),评估数据/值以确定或识别滤波权重或系数的最大指数(EMAXK)。M单元的阵列(在说明性实施例中为16×16)实现或进行时间延迟功能/操作以适应指数搜索或与指数搜索(即,最大指数-EMAXK)相关。L单元使用从K单元接收的EMAXK值将滤波权重数据/值(Fij)从浮点数据格式(FP16)转换为定点数据格式(BSF16)。由X00-X31单元使用处于定点数据格式(BSF16)的滤波权重数据/值(Fij)实现F至H转换电路系统的Winograd转换电路系统。N单元接收Winograd转换电路系统的输出(即,滤波权重数据/值(Hij)),并使用EMAXL值将数据/值从定点数据格式转换为浮点数据格式(例如,Hij数据/值的BSF16至FP16格式转换)。以这种方式,提供给或输入到乘法器-累加器电路系统的乘法器-累加器执行流水线中的滤波权重数据或值处于浮点格式,并且由此由乘法器-累加器电路系统进行的乘法运算处于浮点状况。
值得注意的是,在滤波权重数据/值的上下文中,从浮点格式至定点格式的数据格式转换可以类似于以上在输入数据(例如,图像数据/像素)的数据格式转换的上下文中结合D至E转换电路系统和流水线描述的数据格式转换。然而,在一个实施例中,在F至H转换流水线生成十六个Hij值之后,可以如图8A中图示的示例性处理中图示地那样实现定点格式至浮点格式(例如,BSF12格式至FP16格式)。这里,图8A图示了用于将Hij值从BSF12格式改变为FP16格式的附加处理。F至H转换电路系统包括用于进行该BSF12至FP16数据格式转换的附加电路系统(例如,N单元-参见图6C和图7D)。
继续参考图8A,用于将数据/值从定点数据格式(在说明性实施例中为BSF16格式)转换为浮点数据格式(在说明性实施例中为FP16格式)的转换电路系统的处理或操作包括确定数据/值是否为负,如果是,则对分数字段进行二进制补码运算(将位取反并递增)。另外,处理可以包括对BSF数据/值的分数字段进行优先级编码操作,以及对负值/数据的分数字段进行左移操作。每个数据/值的分数字段可以相对于移位的分数字段被舍入。最后,处理采用数据/值的最大指数来生成指数字段-例如,来自左移量。
在另一个实施例中,可以相对于以上讨论的某些部分来修改F至H转换电路系统和操作。这里,因为滤波权重数据或值(Fij值)使用的存储器容量和存储器带宽是显著的,所以Fij数据/值通常以INT8格式存储在L3 DRAM存储器和L2 SRAM存储器中。一旦将数据从L1SRAM存储器读取到可以在乘法器-累加器电路系统的乘法器-累加器执行流水线(例如,MAC流水线阵列)中的L0 SRAM存储器,则Fij数据/值的数据格式尺寸不太重要。考虑到这一点,浮点数据格式至定点数据格式转换电路系统和处理可以实现图8B中图示的方法。这里,图8B图示了修改8位滤波权重数据/值(Fij)的滤波权重数据的3x3块,以增加滤波权重数据/值的动态范围,而不增加存储器容量占用面积或存储器带宽要求。72位被分配给九个BSF7值(按块缩放的分数格式),其中9位可用于共享的指数EMAX。将BSF7值传递给F至H转换电路系统,其中滤波权重数据/值(Fij)最初在输出到F至H转换电路系统和操作之前被转换为BSF12。
在通过MAC执行或处理流水线的电路系统处理数据之后,本发明采用与Winograd类型处理一致的Z-Y转换电路系统以生成图像或像素数据。在一个实施例中,输出数据转换电路系统被并入在MAC处理流水线中或耦合到MAC处理流水线的输出,以将处于浮点数据格式的输出数据转换为定点数据格式。无论如何,在一个实施例中,在乘法器-累加器执行或处理流水线进行数据处理之后,输出数据转换电路系统转换处于浮点数据格式的输出数据(例如,图像/像素数据),以输出具有诸如BSF之类的定点数据格式的数据。此后,处于定点数据格式的输出数据被施加到或输入到Z-Y转换电路系统的Winograd转换电路系统中,其中与Winograd类型处理一致地处理输出数据,以将输出数据从Winograd格式转换为非Winograd格式。
在一个实施例中,在由Winograd转换电路系统处理之后,将输出数据写入并存储在存储器(例如,诸如SRAM之类的L2存储器)中。在另一个实施例中,在由Winograd转换电路系统处理之后,输出数据被施加到或输入到转换电路系统中,以将输出数据从定点数据格式转换为浮点数据格式。也就是说,在一个实施例中,在由Winograd转换电路系统处理为具有定点数据格式(例如,BSF)的非Winograd格式之后,输出数据被施加到或输入到转换电路系统中,以在数据(例如,图像/像素数据)输出到例如存储器之前将数据转换或变换为浮点数据格式。这里,在一个实施例中,输出数据(例如,图像/像素数据)以浮点数据格式写入并存储在存储器中。
值得注意的是,在一个实施例中,Z至Y转换电路系统被并入或集成到(一个或多个)乘法器-累加器执行流水线中。也就是说,在MAC执行/处理流水线中进行处理后的数据的Z至Y转换的操作,其中除其它之外,来自MAC处理流水线的输出数据已经通过Winograd转换电路系统被处理。
参考图2A-图2C,在一种操作模式中,采用乘法器-累加器电路系统的NxN乘法器-累加器执行流水线将QxQ像素输出数据/值累加到单个输出层,其中每个执行流水线聚合K输入层的输入数据/值和相关联的滤波权重的K乘法的总和。在一个实施例中,在NxN乘法器-累加器执行流水线外部实现/进行QxQ输出数据/像素的NxN元件数据/值的聚合。NxN乘积数据/值与来自其它输入层的其它NxN乘积数据/值累加-然而,在该实施例中,在对累加的NxN乘积数据/值进行Z至Y转换逻辑操作之后,各个数据/值被一起累加到最终QxQ输出数据/像素中。(参见图9A)。
参考图2B和图9A,在一个示例性实施例中,Z至Y转换电路系统连接到每个MAC处理流水线的输出,或者并入或集成在其中,其中从乘法器-累加器电路系统的十六个MAC流水线之一的Z移出块引导十六个zij数据/值流中的每一个。数据/值的4×4Z块可以由16个流组装而成,这16个流由数据/值的4×4Z块的各个zij数据/值进行分类,这可以由zij插入逻辑电路系统(在该说明性实施例中为16个)来实现。通过Z至Y(zij至yij)转换电路系统的Winograd转换电路系统将数据/值的4×4Z块转换为2x2 Y块。存储器(例如,L2 SRAM存储器)可以以分割或划分的形式将数据/值的2x2 Y块存储到十六个物理块中,使得可以在十六个MAC执行流水线上并行地写入或存储十六组数据。这里,每组数据可以由四个2x2 Y块组成,其将包括来自存储器(例如,L2 SRAM存储器)的每个物理块的16次访问,其中每次访问在该示例性实施例中包括例如1ns。
在一个实施例中,Z至Y转换电路系统包括将Winograd转换电路系统的输出从处于定点数据格式的数据转换为浮点数据格式的电路系统。以这种方式,可以由本发明的电路系统外部的电路系统采用处于浮点数据格式的输出数据。例如,处于浮点数据格式的输出数据可以存储在存储器(例如,内部和/或外部存储器)中,以供附加处理(例如,图像生成)使用。
注意,仅采用1/4的可用L2 SRAM存储器来写入Y块数据/值;D块数据和执行流水线各自采用64ns流水线周期时间来处理每个2x2像素步骤的16x64的4x4 D输入块。在该示例性实施例中,L2 SRAM存储器的较低Y访问带宽可以便于Y存储器的物理块的数量从16减小到4。
然而,可替代地,可以使用额外的带宽,其中累加超过64个输入平面。例如,如果存在128个输入平面(并且在该示例性实现方式中,每乘法器-累加器电路系统的乘法器-累加器执行流水线的64MAC数据/值),则第一64个输入平面可以累加到存储器的特定区域(例如,L2 SRAM存储器的“Y”区域)中。然后,当第二64个输入平面累加在乘法器-累加器电路系统的流水线中时,第一平面的Y值被从Y2读取并传递给Z至Y(zij至yij)转换电路系统上的累加端口。可以将两组值添加在一起并将其重写入或存储在L2 SRAM存储器的Y区域中。这在标记为“V”的由图9A中的虚线标出的路径中图示出。累加值存储在L2存储器的Y区域中。第二组64个输入平面累加在图的右侧。4x4 Z块值在被写入L2存储器的Y区域之前传递通过zij至yij转换电路系统。当它们传递通过转换逻辑时,来自第一64个输入平面的Y累加值被从L2读取,并加载到Z至Y(zij至yij)转换电路系统的累加输入端口中。
图9C是根据本发明的某些方面的Z-Y转换电路系统的逻辑概览,其中由乘法器-累加器执行流水线的电路系统输出的数据首先从浮点数据格式转换为定点数据格式(在说明性示例中,按块缩放的分数格式),该定点数据格式是便于在Winograd类型处理中实现或与Winograd类型处理的使用一致的数据格式(例如,定点数据格式,诸如,按块缩放的分数格式)。输出数据(Z至Y)转换电路系统可以采用图5A中描述的处理或操作,以将输出数据/值从浮点数据格式转换为定点数据格式。然后经由Winograd转换电路系统处理输出数据(Zij),以将数据从Winograd环境转换为非Winograd环境,其中数据处于定点数据格式。在一个实施例中,根据本发明的各方面,将数据(从定点数据格式)转换回到浮点数据格式。值得注意的是,输出数据(Z至Y)转换电路系统可以采用图5B中描述的处理或操作,以将输出数据/值从定点数据格式转换为浮点数据格式。
参考图9C,Z-Y转换电路系统包括最初将输出数据(Zij)的数据格式从浮点数据格式转换为定点数据格式的电路系统。在一个实施例中,该数据格式转换由T单元、U单元、R单元和V单元实现(使用EMAXU值)。由以定点数据格式输出处理后的输出数据(Yij)的X00-X31单元进行Winograd处理。在Winograd转换电路系统进行处理之后,输出数据(Yij数据/值)经由W单元使用EMAXV值从定点数据格式转换为浮点数据格式。
图9D以电路框图形式图示了Z-Y转换电路系统的实施例的zij插入逻辑电路系统(图的左侧部分)的单元和zij至yij转换电路系统(图的右侧部分)的一个单元。zij插入逻辑电路系统包括(i)16个左侧单元,(ii)用于zij和yij数据字的数据寄存器,(iii)用于排序的控制逻辑,以及用于转换的加法器逻辑。它还包括携带来自乘法器-累加器电路系统的适当的执行流水线的插入的zij数据/值的垂直“INSRT_IN”和“INSRT_OUT”端口。zij插入逻辑电路系统还可以包括累加端口(图示的左下部分)-例如,比执行流水线级存在更多的输入平面。zij至yij转换电路系统包括(i)16个左侧单元,(ii)用于dij和eij数据字的数据寄存器,(iii)用于排序的控制逻辑,和(iv)用于转换的加法器逻辑。注意,可以在zij插入单元中实现或进行一些zij至yij转换处理;值得注意的是,在某些实施例中,它们包括与zij至yij转换单元相同的一些电路系统。
继续参考图9D,在输出数据从浮点转换为定点数据格式之后,将十六个Zij数据/值插入到X00-X15单元中。从那里,它们从左向右移位,并且(在两个不同的时间)加载到DREG_X和DREG_Y寄存器中。四个Yij数据/值移位通过这32个位置,并且适当的Zij值累加到Yij数据/值中。然后,四个Yij数据/值移位通过ADD块(加法器电路系统-参见图9A)并且结果写入到L2存储器。对于存在超过64个输入图像平面的情况,FPADD块(浮点加法器电路系统)添加先前累加的结果。
图9C图示了输出数据转换电路系统,其中Zij输入值和Yij输出值处于浮点格式(这里,FP32格式)。在该说明性实施例中,输出数据转换电路系统包括Winograd转换电路系统,具有十六个转换流水线,其中Zij输入值处于INT32数据格式。参考图9C,来自MAC处理流水线的数据(ZIN)被输入到16x16 Z至Y转换流水线的电路系统中,以将这些数据从浮点数据格式(例如,FP32)转换为定点数据格式(例如,BSF32或INT32)。通过将Zij数据/值(“ZIN”)输入到T单元的16×16阵列中,将均处于浮点数据格式的输出数据/值(Zij数据/值)处理并转换为定点数据格式,其中插入的Zij数据/值此后被输入到或提供给包括U单元的十六个流水线,以接收处于浮点数据格式的数据/值并确定这些数据的最大指数(EMAXU)。R单元进行或实现时间延迟功能/操作以适应最大指数搜索所用的时间。此后,V单元进行浮点数据格式至定点数据格式转换(在一个实施例中,使用EMAXU值的Zij数据/值的FP32至BSF32格式转换)。
继续参考图9C,处于定点数据格式的输出数据/值(Zij)被输入到Winograd转换电路系统(在一个实施例中,“X”单元(即,X00-X31))中;这里,“X00-X31”单元使用数据/值(Zij数据/值)的定点数据格式(例如,BSF32)表示经由Winograd处理技术进行Z至Y转换,以生成Yij输出数据/值。Winograd转换电路系统输出的数据/值(Yij)被输入到附加的转换电路系统中,以使用来自Winograd转换电路系统的处于定点数据格式的(Yij)数据/值生成处于浮点数据格式(例如,FP32)的输出数据/值。在这方面,W单元使用EMAXV值将输出数据(Yij)从定点数据格式转换为使用EMAXV值的浮点数据格式(在该说明性实施例中,BSF32至FP32格式转换)。
值得注意的是,如上所指示的,单元/电路在本文中统称为“单元”或“单元”,并且在附图中,特定的“单元”有时标记或标识为“单元x”,其中x的R、T、U、V、W或X(例如,图10A中的单元T)。
参考图9C和图10A-图10E,T单元的阵列(在说明性实施例中为16×16)从MAC处理流水线接收处于FP32格式的插入的数据/值(Zij)。U单元分析数据/值数据/值(Zij)以识别或确定最大指数(EMAXU)。R单元的阵列(在说明性实施例中为16x16)进行延迟功能/操作以适应由U单元对最大指数的搜索。V单元使用由U单元识别(EMAXU值)和输出的最大指数将输出数据/值(Zij)的数据格式从浮点(例如,FP32)转换为定点(例如,BSF32)。由X00-X31单元使用处于定点数据格式的输出数据/值(Zij)实现Z至Y转换电路系统的Winograd转换。最后,W单元接收Winograd转换电路系统的输出(Yij),并使用EMAXV值将数据/值从定点数据格式(BSF32)转换为浮点数据格式(FP32)。以这种方式,输出数据(Yij)处于浮点数据格式,并且因此,由乘法器-累加器电路系统进行的乘法运算的输出处于浮点状况。图10A-图10E分别以电路框图形式图示了图9中图示的Z至Y转换电路系统的示例性逻辑块图的示例性T电路/单元、U电路/单元、R电路/单元、V电路/单元和W电路/单元。在一个实施例中,由图9D中图示的X电路/单元实现Winograd处理。
值得注意的是,参考图1、图2A和图2B,在示例性实施例中分别图示了输出数据/像素组作为1×1输出像素组(图1)和2×2输出像素组(图2A和图2B)而不是更通常作为PxP和QxQ阵列。
值得注意的是,用来存储数据的存储器可以例如是诸如DRAM、SRAM、闪存和/或MRAM之类的动态和/或静态随机存取存储器单元的块或阵列;值得注意的是,所有存储器类型和其组合都旨在落入本发明的范围之内)。在一个实施例中,第三和/或第四存储器在SRAM(例如,第三存储器,例如,L2 SRAM存储器)和/或DRAM(例如,第四存储器,L3 DRAM存储器)中存储输入数据、滤波权重值和输出数据值。另外,第三和/或第四存储器可以存储输入或图像数据/像素的NxN阵列的变换后的输入数据(在输入数据经由D至E转换逻辑操作经历变换之后)。在一个实施例中,“D”输入数据和“Y”输出数据可以均存储在第三(L2 SRAM)存储器中-每条数据参与不同的乘法器累加(MAC)运算(例如,64个不同的MAC运算),因此,更有限的L2存储器带宽足以满足MAC流水线高得多的带宽。相比之下,MAC流水线所需的权重数据带宽高得多,并且需要在第一/或第二存储器SRAM(例如,L0 SRAM存储器和L1 SRAM存储器)中存储这样的数据,在一个实施例中,可以保存:(i)用于乘法器-累加器电路系统的N×N乘法器-累加器执行流水线的第一操作模式的“F”权重值,或者(ii)乘法器-累加器电路系统的N×N乘法器-累加器执行流水线的第二操作模式的“H”权重值。
值得注意的是,在一个实施例中,可以分开进行D-E和Z-Y转换操作(而不是在运行中)-尽管这样的实现方式可能需要附加的读取/写入操作(例如,对于L2操作的更多读取/写入操作,多余2x),这也可能增加存储器的容量要求(例如,第三存储器(L2 SRAM存储器))。
在飞行中变换滤波权重值的情况下,第一和第二存储器还可以存储变换后的滤波权重值或数据。在一个实施例中,第三和/或第四存储器也可以例如是诸如DRAM、SRAM、闪存和/或MRAM之类的动态和/或静态随机存取存储器单元的块或阵列;实际上,所有存储器类型和它们的组合都旨在落入本发明的范围之内)。在优选实施例中,第一和/或第二存储器是SRAM(例如,L0 SRAM存储器和L1 SRAM存储器)。
值得注意的是,在本文(文本和附图)阐述的说明性实施例中,乘法器-累加器电路系统有时标记为“NMAX”或“NMAX流水线”或“MAC流水线”。
本文描述和说明了许多发明。虽然已经描述和图示了本发明的某些实施例、特征、属性和优点,但应该理解,本发明的许多其它以及不同和/或类似的实施例、特征、属性和优点从描述和图示是清楚的。因此,本文描述和图示的发明的实施例、特征、属性和优点不是穷举的,并且应该理解,本发明的这样其它的、类似的以及不同的实施例、特征、属性和优点在本发明的范围之内。
例如,执行或处理流水线(例如,用于图像滤波)的乘法器-累加器电路系统(和操作这种电路系统的方法)可以包括基于具有一个或多个浮点数据格式的输入实现浮点乘法和浮点加法的浮点执行电路系统(例如,浮点乘法器电路和累加/加法器电路)。浮点数据格式可以是用户或系统限定的和/或可以是一次性可编程的(例如,在制造时)或多于一次性可编程的(例如,(i)在通电时或经由通电、启动或者初始化序列/处理序列的进行/完成,和/或(ii)原位或在集成电路或处理流水线的乘法器-累加器电路系统的正常操作期间)。在一个实施例中,乘法器-累加器执行流水线的电路系统包括可调精度的数据格式(例如,浮点数据格式)。除此之外或代替其,执行流水线的电路系统可以并发地处理数据以增加流水线的吞吐量。例如,在一种实现方式中,本发明可以包括便于乘法和累加运算的流水线化的多个分开的乘法器-累加器电路(在本文中有时称为“MAC”)和多个寄存器(在一个实施例中,包括多个影子寄存器),其中执行流水线的电路系统并发地处理数据以增加流水线的吞吐量。
此外,尽管在某些实施例中的存储器单元被图示为静态存储器单元或存储元件,但是本发明可以采用动态或静态存储器单元或存储元件。实际上,如上所述,这种存储器单元可以是现在已知或之后开发的锁存器、触发器或任何其它的静态/动态存储器单元或存储器单元电路或存储元件。此外,尽管说明性/示例性实施例包括被指派、分配和/或用来存储某些数据和/或在某些组织中的多个存储器(例如,L3存储器、L2存储器、L1存储器、L0存储器),但是可以添加一个或多个存储器,和/或可以省略和/或组合/合并一个或多个存储器—例如,L3存储器或L2存储器,和/或可以改变、补充和/或修改组织。本发明不限于申请中阐述的存储器组织和/或分配的说明性/示例性实施例。再一次说明,本发明不限于本文阐述的说明性/示例性实施例。
值得注意的是,在描述和图示本发明的某些方面时,为了清楚起见,已经简化了某些附图,以便描述、聚焦、突出显示和/或图示本发明的电路系统和技术的某些方面。
本文描述和/或图示的输入数据转换电路系统、滤波权重转换电路系统和输出数据转换电路系统的电路和操作实施方式是示例实施例。可以采用这些电路系统的不同电路和/或操作实施方式,其旨在落入本发明的范围之内。实际上,本发明不限于本文阐述的输入数据转换电路系统、滤波权重转换电路系统和/或输出数据转换电路系统的说明性/示例性实施例。
另外,尽管说明性的示例性实施例中的输入数据转换电路系统、滤波权重转换电路系统和输出数据转换电路系统描述了输入数据和滤波权重的浮点数据格式以及定点数据格式的位宽,但是这种(一个或多个)位宽是示例性的。这里,尽管在具有指定位宽和精度的转换电路系统和/或处理流水线(包括乘法器电路系统)的上下文中描述和/或图示了本发明的数个示例性实施例和特征,但是实施例和发明适用于其它上下文以及其它精度(例如,FPxx,其中:xx是整数并且大于或等于8、10、12、16、24等)。为了简洁起见,这些其它上下文和精度将不分开图示,但是本领域技术人员基于例如本申请是非常清楚的。因此,本发明既不限于(i)图示的(一个或多个)特定的定点数据格式(例如,整数格式(INTxx)和按块缩放的分数格式(例如,BSFxx))、块/数据宽度、数据路径宽度、带宽、值、处理和/或算法,也不限于(ii)特定电路系统和/或整体流水线的示例性逻辑或物理概览配置、和/或示例性模块/电路系统配置、整体流水线和/或示例性Verilog代码。
此外,本发明可以包括附加的转换技术,以在存储器中存储之前将数据从定点数据格式转换为浮点数据格式。例如,在以整数格式(INTxx)或按块缩放-分数格式(“BSFxx”)在存储器中存储滤波权重数据的情况下,转换电路系统可以包括将定点数据转换为浮点数据的电路系统。实际上,在一个实施例中,在以适合于输入数据转换电路系统和/或滤波权重转换电路系统的Winograd转换电路系统进行的Winograd处理的定点数据格式提供输入数据和/或滤波权重数据情况下,这种电路系统可以不将输入数据和/或滤波权重数据从浮点数据格式转换为定点数据格式。这样,在该实施例中,输入数据转换电路系统和/或滤波权重转换电路系统可以不包括将数据从浮点数据格式转换为定点数据格式的电路系统。
如上所述,本发明不限于(i)图示的(一个或多个)特定浮点格式、(一个或多个)特定的定点格式、运算(例如,加法、减法等)、块/数据宽度或长度、数据路径宽度、带宽、值、处理和/或算法,也不限于(ii)示例性逻辑或物理概览配置、示例性模块/电路系统配置和/或示例性Verilog代码。
值得注意的是,本文公开的各种电路、电路系统和技术可以使用计算机辅助设计工具来描述,并在其行为、寄存器传输、逻辑组件、晶体管、布局几何形状和/或其它特性方面,作为以各种计算机可读介质体现的数据和/或指令来表达(或表示)。可以在其中实现此类电路、电路系统、布局和布线表达的文件和其它对象的格式包括但不限于支持行为语言(诸如C、Verilog和HLDL)的格式、支持寄存器级描述语言(如RTL)的格式和支持几何描述语言(诸如GDSII、GDSIII、GDSIV、CIF、MEBES)的格式以及现在已知或以后开发的任何其它格式和/或语言。其中可以体现这种格式化数据和/或指令的计算机可读介质包括但不限于各种形式的非易失性存储介质(例如,光、磁或半导体存储介质)以及可以用于通过无线、光学或有线信令介质或其任何组合传输此类格式化数据和/或指令的载波。通过载波传输此类格式化数据和/或指令的示例包括但不限于经由一个或多个数据传输协议(例如,HTTP、FTP、SMTP等)在互联网和/或其它计算机网络上传输(上传、下载、电子邮件等)。
实际上,当经由一个或多个计算机可读介质在计算机系统内接收时,以上描述的电路的基于这种数据和/或指令的表达可以在计算机系统内由处理实体(例如,一个或多个处理器)结合一个或多个其它计算机程序的执行来处理,其它计算机程序包括但不限于网表生成程序、布局和布线程序等,从而生成这些电路的物理表现的表示或图像。该表示或图像然后可以用在器件制造中,例如通过在器件制造处理中使得能够生成用于形成电路的各种组件的一个或多个掩模。
此外,本文公开的各种电路、电路系统和技术可以通过使用计算机辅助设计和/或测试工具的仿真来表示。电路、电路系统、布局和布线和/或由此实现的技术的仿真可以由计算机系统实现,其中经由计算机系统来模拟、复制和/或预测这些电路、电路系统、布局和由此实现的技术的特性和操作。本发明还涉及对本发明电路、电路系统和/或由此实现的技术的这种仿真,且因此旨在也落入本发明的范围之内。对应于这种仿真和/或测试工具的计算机可读介质也旨在落入本发明的范围之内。
值得注意的是,本文提及“一个实施例”或“实施例”(或类似)意指在本发明的一个、一些或所有实施例中可以包括、采用和/或并入结合实施例描述的特定特征、结构或特性。在说明书中使用或出现短语“在一个实施例中”或“在另一个实施例中”(或类似)并非引用相同的实施例,也不是指必然与一个或多个其它实施例相互排斥的分开或替代实施例,也不限于单一排他性实施例。这同样适用于术语“实现方式”。本发明既不限于任何单个方面或其实施例,也不限于这些方面和/或实施例的任何组合和/或置换。此外,本发明的每个方面和/或其实施例可以单独使用或与本发明的其它方面和/或其实施例中的一个或多个组合使用。为简洁起见,本文未分开讨论和/或图示某些置换和组合。
此外,本文描述为“示例性”的实施例或实现方式不应被解释为例如相对于其它实施例或实现方式是理想的、优选的或有利的;而是,其旨在传达或指示实施例或多个实施例是(一个或多个)示例实施例。
虽然已经在某些具体方面描述了本发明,但是对于本领域技术人员来说,许多附加的修改和变化将是清楚的。因此应当理解,在不脱离本发明的范围和精神的情况下,可以以不同于具体描述的方式实施本发明。因此,本发明的实施例在所有方面都应被视为说明性/示例性而非限制性的。
术语“包括”、“包括有”、“包含”、“包含有”、“具有”和“有”或其任何其它变体旨在于涵盖非排他性的包含,因此处理、方法、电路、物品或包括一列零件或元件的设备不仅包括这些零件或元件,还可以包括未明确列出或这些处理、方法、物品或设备固有的其它零件或元件。此外,本文使用术语“连接”、“被连接”、“连接到”或“连接件”应被广义地解释为包括直接或间接(例如,经由一个或多个导体和/或中间器件/元件(有源或无源)和/或经由电感或电容耦合)),除非另有意图(例如,使用术语“直接连接”或“被直接连接”)。
本文中的术语“一”和“一个”不表示数量的限制,而是表示存在至少一个所引用的项目。此外,术语“第一”、“第二”等在本文中不表示任何顺序、数量或重要性,而是用于将一个元件/电路/特征与另一个区分开来。
此外,术语“集成电路”除其它之外意指任何集成电路,包括例如通用或非专用集成电路、处理器、控制器、状态机、门阵列、SoC、PGA和/或FPGA。术语“集成电路”还意指任何集成电路(例如,处理器、控制器、状态机和SoC)-包括嵌入式FPGA。
此外,术语“电路系统”除其它之外意指电路(无论是集成的还是其它的)、一组这样的电路、一个或多个处理器、一个或多个状态机、一个或多个实现软件的处理器、一个或多个门阵列、可编程门阵列和/或现场可编程门阵列,或一个或多个电路(无论是集成的还是其它的)、一个或多个状态机、一个或多个处理器、一个或多个实现软件的处理器、一个或多个门阵列、可编程门阵列和/或现场可编程门阵列的组合。术语“数据”除其它之外意指无论处于模拟还是数字形式的(一个或多个)电流或电压信号(复数或单数),其可以是单个位(或类似)或多个位(或类似)。
在权利要求书中,术语“MAC电路”意指具有耦合到累加器电路的乘法器电路的乘法器-累加器电路。例如,在美国专利申请No.16/545,345的图1A-图1C的示例性实施例以及与其相关联的文本中描述和图示了乘法器-累加器电路。然而,值得注意的是,术语“MAC电路”不限于根据例如美国专利申请No.16/545,345的图1A-图1C的示例性实施例图示和/或描述的特定电路、逻辑、块、功能和/或物理图、块/数据宽度、数据路径宽度、带宽和处理,如上所述该申请通过引用并入本文。
在本申请的上下文中,术语“原位”意指在集成电路的正常操作期间-以及在通电、启动或其初始化序列/处理的完成之后。术语“数据处理操作”意指处理数据(例如,图像和/或音频数据)的任何操作包括例如无论是现在已知还是以后开发的数字信号处理、滤波和/或其它形式的数据操作和/或变换。
值得注意的是,权利要求的限制不是以装置加功能的格式或步骤加功能的格式撰写的。申请人的意图是不根据35USC§112,
Figure BDA0003505517750000451
或§112(f)解释任何限制,除非此类权利要求限制明确使用后跟功能声明并且没有任何具体结构的短语“用于……的装置”或“用于……的步骤”。

Claims (24)

1.一种集成电路,包括:
乘法器-累加器执行流水线,用于接收(i)图像数据和(ii)滤波权重,其中所述乘法器-累加器执行流水线包括多个乘法器-累加器电路,以使用相关联的滤波权重经由多个乘法和累加运算处理所述图像数据;
第一转换电路系统,耦合所述乘法器-累加器执行流水线的输入,其中所述第一转换电路系统包括:
输入,用于接收多组图像数据,其中每组图像数据包括多个图像数据,
Winograd转换电路系统,用于将所述多组图像数据中的每组图像数据转换为对应组的Winograd图像数据,
浮点格式转换电路系统,耦合到所述Winograd转换电路系统,用于将多组Winograd图像数据中的每组Winograd图像数据的图像数据转换为浮点数据格式,和
输出,用于将所述多组Winograd图像数据中的图像数据输出到所述乘法器-累加器执行流水线;以及
其中,在操作中,所述乘法器-累加器执行流水线的乘法器-累加器电路被配置为:(i)使用(a)来自所述第一转换电路系统的所述多组Winograd图像数据中的图像数据和(b)滤波权重来进行所述多个乘法和累加运算,以及(ii)基于乘法和累加运算生成输出数据。
2.根据权利要求1所述的集成电路,其中:
所述第一转换电路系统进一步包括用于确定所述多组图像数据中的每组图像数据的图像数据的最大指数的电路系统。
3.根据权利要求2所述的集成电路,其中:
所述第一转换电路系统针对所述多组图像数据中的每组图像数据的图像数据进一步包括右移具有较小指数的图像数据的分数字段、将分数字段舍入到BSF精度以及对其中图像数据为负的图像数据的分数字段进行二进制补码运算的电路系统。
4.根据权利要求2所述的集成电路,其中:
所述第一转换电路系统进一步包括定点格式转换电路系统,所述定点格式转换电路系统耦合在所述第一转换电路系统的输入和所述Winograd转换电路系统的输入之间,以使用每组图像数据的图像数据的最大指数将相关联组图像数据的图像数据的数据格式转换为定点数据格式,其中:
所述Winograd转换电路系统使用具有定点数据格式的图像数据将每组图像数据的图像数据转换为对应组的Winograd图像数据。
5.根据权利要求1所述的集成电路,进一步包括:
第二转换电路系统,耦合到所述乘法器-累加器执行流水线,以将与所述多组Winograd图像数据的图像数据相对应的输出数据转换为具有非Winograd格式的输出数据。
6.根据权利要求5所述的集成电路,其中:
所述第二转换电路系统进一步包括用于将具有非Winograd格式的输出数据转换为具有浮点数据格式的输出数据的浮点格式转换电路系统。
7.根据权利要求1所述的集成电路,其中:
所述第一转换电路系统的浮点格式转换电路系统使用所述多组Winograd图像数据中的每组Winograd图像数据的图像数据的最大指数将相关联组图像数据的图像数据转换为浮点数据格式。
8.根据权利要求7所述的集成电路,其中:
所述第一转换电路系统针对所述多组Winograd图像数据中的每组Winograd图像数据的图像数据进一步包括对其中图像数据为负的图像数据的分数字段进行二进制补码运算、对图像数据的分数字段进行优先级编码操作、左移其中图像数据为负的图像数据的分数字段、将分数字段舍入到图像数据被左移的位置的电路系统。
9.根据权利要求1所述的集成电路,其中:
所述乘法器-累加器执行流水线的每个乘法器-累加器电路包括浮点乘法器和浮点加法器。
10.一种集成电路,包括:
乘法器-累加器执行流水线,用于接收(i)图像数据和(ii)滤波权重,其中所述乘法器-累加器执行流水线包括多个乘法器-累加器电路,以使用相关联的滤波权重经由多个乘法和累加运算处理所述图像数据;
第一转换电路系统,耦合到所述乘法器-累加器执行流水线的输入,其中所述第一转换电路系统包括:
输入,用于接收多组图像数据的图像数据,其中每组图像数据包括多个图像数据,
Winograd转换电路系统,用于将所述多组图像数据中的每组图像数据转换为对应组的Winograd图像数据,
浮点格式转换电路系统,耦合到所述第一转换电路系统的所述Winograd转换电路系统,用于将多组Winograd图像数据中的每组Winograd图像数据的图像数据转换为浮点数据格式,和
输出,用于将所述多组Winograd图像数据的图像数据输出到所述乘法器-累加器执行流水线;
第二转换电路系统,耦合所述乘法器-累加器执行流水线的输入,其中所述第一转换电路系统包括:
输入,用于接收多组滤波权重的滤波权重,其中每组滤波权重包括多个滤波权重,
Winograd转换电路系统,用于将所述多组滤波权重中的每组滤波权重转换为对应组的Winograd滤波权重,
浮点格式转换电路系统,耦合到所述第二转换电路系统的Winograd转换电路系统,以将所述多组Winograd滤波权重中的每组Winograd滤波权重的滤波权重转换为浮点数据格式,和
输出,用于将所述多组Winograd滤波权重的滤波权重输出到所述乘法器-累加器执行流水线;以及
其中,在操作中,所述乘法器-累加器执行流水线的乘法器-累加器电路被配置为:(i)使用(a)来自所述第一转换电路系统的多组Winograd图像数据的图像数据和(b)所述多组Winograd滤波权重的滤波权重来进行所述多个乘法和累加运算,以及(ii)基于乘法和累加运算生成输出数据。
11.根据权利要求10所述的集成电路,其中:
所述第一转换电路系统进一步包括用于确定所述多组图像数据中的每组图像数据的图像数据的最大指数的电路系统。
12.根据权利要求11所述的集成电路,其中:
所述第一转换电路系统针对所述多组图像数据中的每组图像数据的图像数据进一步包括右移具有较小指数的图像数据的分数字段、将分数字段舍入到BSF精度以及对其中图像数据为负的图像数据的分数字段进行二进制补码运算的电路系统。
13.根据权利要求11所述的集成电路,其中:
所述第一转换电路系统进一步包括定点格式转换电路系统,所述定点格式转换电路系统耦合在所述第一转换电路系统的输入和Winograd转换电路系统的输入之间,以使用每组图像数据的图像数据的最大指数将相关联组图像数据的图像数据的数据格式转换为定点数据格式,其中:
所述第一转换电路系统的Winograd转换电路系统使用具有定点数据格式的图像数据将每组图像数据的图像数据转换为对应组的Winograd图像数据。
14.根据权利要求10所述的集成电路,其中:
所述第二转换电路系统进一步包括用于确定所述多组滤波权重中的每组滤波权重的滤波权重的最大指数的电路系统。
15.根据权利要求14所述的集成电路,其中:
所述第二转换电路系统针对所述多组滤波权重中的每组滤波权重的滤波权重进一步包括右移具有较小指数的滤波权重的分数字段、将分数字段舍入到BSF精度以及对其中图像数据为负的滤波权重的分数字段进行二进制补码运算的电路系统。
16.根据权利要求14所述的集成电路,其中:
所述第二转换电路系统进一步包括定点格式转换电路系统,所述定点格式转换电路系统耦合在所述第二转换电路系统的输入和所述第二转换电路系统的Winograd转换电路系统的输入之间,以使用每组滤波权重的滤波权重的最大指数将相关联组滤波权重的滤波权重的数据格式转换为定点数据格式,其中:
所述第二转换电路系统的Winograd转换电路系统使用具有定点数据格式的滤波权重将每组滤波权重的滤波权重转换为对应组的Winograd滤波权重。
17.根据权利要求10所述的集成电路,其中:
所述第一转换电路系统进一步包括用于确定所述多组图像数据中的每组图像数据的图像数据的最大指数的电路系统,
所述第一转换电路系统的浮点格式转换电路系统使用所述多组Winograd图像数据中的每组Winograd图像数据的图像数据的最大指数将相关联组图像数据的图像数据转换为浮点数据格式,
所述第二转换电路系统进一步包括用于确定所述多组滤波权重中的每组滤波权重的滤波权重的最大指数的电路系统,以及
所述第二转换电路系统的浮点格式转换电路系统使用所述多组Winograd滤波权重中的每组Winograd滤波权重的滤波权重的最大指数将相关联组滤波权重的滤波权重转换为浮点数据格式。
18.根据权利要求17所述的集成电路,其中:
所述乘法器-累加器执行流水线中的每个乘法器-累加器电路包括浮点乘法器和浮点加法器。
19.根据权利要求17所述的集成电路,其中:
所述第一转换电路系统针对所述多组Winograd图像数据中的每组Winograd图像数据的图像数据进一步包括对其中图像数据为负的图像数据的分数字段进行二进制补码运算、对图像数据的分数字段进行优先级编码操作、左移其中图像数据为负的图像数据的分数字段、将分数字段舍入到图像数据被左移的位置的电路系统,以及
所述第二转换电路系统针对所述多组Winograd滤波权重中的每组Winograd滤波权重的滤波权重进一步包括对其中滤波权重为负的滤波权重的分数字段进行二进制补码运算、对滤波权重的分数字段进行优先级编码操作、左移其中图像数据为负的滤波权重的分数字段、将分数字段舍入到滤波权重被左移的位置的电路系统。
20.一种集成电路,包括:
乘法器-累加器执行流水线,用于接收(i)图像数据和(ii)滤波权重,其中所述乘法器-累加器执行流水线包括多个乘法器-累加器电路,以使用相关联的滤波权重经由多个乘法和累加运算处理所述图像数据;
第一转换电路系统,耦合到所述乘法器-累加器执行流水线的输入,其中所述第一转换电路系统包括:
输入,用于接收多组图像数据的图像数据,其中每组图像数据包括多个图像数据,
Winograd转换电路系统,用于将所述多组图像数据中的每组图像数据转换为对应组的Winograd图像数据,
浮点格式转换电路系统,耦合到所述第一转换电路系统的Winograd转换电路系统,以将多组Winograd图像数据中的每组Winograd图像数据的图像数据转换为浮点数据格式,和
输出,用于将所述多组Winograd图像数据的图像数据输出到所述乘法器-累加器执行流水线;
第二转换电路系统,耦合所述乘法器-累加器执行流水线的输入,其中所述第一转换电路系统包括:
输入,用于接收多组滤波权重的滤波权重,其中每组滤波权重包括多个滤波权重,
Winograd转换电路系统,用于将所述多组滤波权重中的每组滤波权重转换为对应组的Winograd滤波权重,
浮点格式转换电路系统,耦合到所述第二转换电路系统的Winograd转换电路系统,以将多组Winograd滤波权重中的每组Winograd滤波权重的滤波权重转换为浮点数据格式,和
输出,用于将所述多组Winograd滤波权重的滤波权重输出到所述乘法器-累加器执行流水线;
其中,在操作中,所述乘法器-累加器执行流水线的乘法器-累加器电路被配置为:(i)使用(a)来自所述第一转换电路系统的所述多组Winograd图像数据的图像数据和(b)所述多组Winograd滤波权重的滤波权重来进行所述多个乘法和累加运算,以及(ii)基于乘法和累加运算生成输出数据;以及
第三转换电路系统,耦合所述乘法器-累加器执行流水线的输出,其中所述第三转换电路系统包括:
输入,用于从所述乘法器-累加器执行流水线的乘法器-累加器电路接收多组输出数据的输出数据,
Winograd转换电路系统,用于将所述多组输出数据中的每组输出数据转换为具有非Winograd格式的输出数据,
浮点格式转换电路系统,耦合到所述第三转换电路系统的Winograd转换电路系统,以将所述多组输出数据中的每组输出数据中的具有非Winograd格式的输出数据转换为浮点数据格式,和
输出,用于输出所述多组输出数据中的具有浮点数据格式的输出数据。
21.根据权利要求20所述的集成电路,进一步包括:
存储器,耦合到所述第三转换电路系统的浮点格式转换电路系统,以存储所述多组输出数据中的具有浮点数据格式的输出数据。
22.根据权利要求20所述的集成电路,其中:
所述乘法器-累加器执行流水线中的每个乘法器-累加器电路包括浮点乘法器和浮点加法器。
23.根据权利要求20所述的集成电路,其中:
所述第一转换电路系统进一步包括用于确定所述多组图像数据中的每组图像数据的图像数据的最大指数的电路系统,
所述第一转换电路系统的浮点格式转换电路系统使用所述多组Winograd图像数据中的每组Winograd图像数据的图像数据的最大指数将相关联组图像数据的图像数据转换为浮点数据格式,
所述第二转换电路系统进一步包括用于确定所述多组滤波权重中的每组滤波权重的滤波权重的最大指数的电路系统,
所述第二转换电路系统的浮点格式转换电路系统使用所述多组Winograd滤波权重中的每组Winograd滤波权重的滤波权重的最大指数将相关联组滤波权重的滤波权重转换为浮点数据格式。
24.根据权利要求23所述的集成电路,其中:
所述乘法器-累加器执行流水线中的每个乘法器-累加器电路包括浮点乘法器和浮点加法器。
CN202080057694.6A 2019-10-02 2020-09-29 具有转换电路系统的mac处理流水线和操作其的方法 Pending CN114270305A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962909293P 2019-10-02 2019-10-02
US62/909,293 2019-10-02
US17/031,631 2020-09-24
US17/031,631 US11455368B2 (en) 2019-10-02 2020-09-24 MAC processing pipeline having conversion circuitry, and methods of operating same
PCT/US2020/053173 WO2021067205A1 (en) 2019-10-02 2020-09-29 Mac processing pipeline having conversion circuitry, and methods of operating same

Publications (1)

Publication Number Publication Date
CN114270305A true CN114270305A (zh) 2022-04-01

Family

ID=75274183

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080057694.6A Pending CN114270305A (zh) 2019-10-02 2020-09-29 具有转换电路系统的mac处理流水线和操作其的方法

Country Status (4)

Country Link
US (2) US11455368B2 (zh)
EP (1) EP4038488A4 (zh)
CN (1) CN114270305A (zh)
WO (1) WO2021067205A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12015428B2 (en) * 2019-11-05 2024-06-18 Flex Logix Technologies, Inc. MAC processing pipeline using filter weights having enhanced dynamic range, and methods of operating same
US11281638B2 (en) 2020-04-22 2022-03-22 Capital One Services, Llc Consolidating multiple databases into a single or a smaller number of databases

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4958312A (en) 1987-11-09 1990-09-18 Lsi Logic Corporation Digital multiplier circuit and a digital multiplier-accumulator circuit which preloads and accumulates subresults
EP0884674B1 (en) 1989-05-04 2003-04-16 Texas Instruments Incorporated Arithmetic and logic unit with accumulator and parallel register
JP3524250B2 (ja) 1995-11-27 2004-05-10 キヤノン株式会社 デジタル画像処理プロセッサ
DE69927075T2 (de) 1998-02-04 2006-06-14 Texas Instruments Inc Rekonfigurierbarer Koprozessor mit mehreren Multiplizier-Akkumulier-Einheiten
US6115729A (en) 1998-08-20 2000-09-05 Arm Limited Floating point multiply-accumulate unit
US7401205B1 (en) 1999-08-13 2008-07-15 Mips Technologies, Inc. High performance RISC instruction set digital signal processor having circular buffer and looping controls
US6611856B1 (en) 1999-12-23 2003-08-26 Intel Corporation Processing multiply-accumulate operations in a single cycle
US7346644B1 (en) 2000-09-18 2008-03-18 Altera Corporation Devices and methods with programmable logic and digital signal processing regions
US6538470B1 (en) 2000-09-18 2003-03-25 Altera Corporation Devices and methods with programmable logic and digital signal processing regions
US7107305B2 (en) 2001-10-05 2006-09-12 Intel Corporation Multiply-accumulate (MAC) unit for single-instruction/multiple-data (SIMD) instructions
US7698358B1 (en) 2003-12-24 2010-04-13 Altera Corporation Programmable logic device with specialized functional block
US7567997B2 (en) 2003-12-29 2009-07-28 Xilinx, Inc. Applications of cascading DSP slices
US7355603B2 (en) * 2004-08-04 2008-04-08 Nvidia Corporation Filtering unit for floating-point texture data
US7299342B2 (en) 2005-05-24 2007-11-20 Coresonic Ab Complex vector executing clustered SIMD micro-architecture DSP with accelerator coupled complex ALU paths each further including short multiplier/accumulator using two's complement
US8266199B2 (en) 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US7930336B2 (en) 2006-12-05 2011-04-19 Altera Corporation Large multiplier for programmable logic device
US8645450B1 (en) 2007-03-02 2014-02-04 Altera Corporation Multiplier-accumulator circuitry and methods
US8051124B2 (en) 2007-07-19 2011-11-01 Itt Manufacturing Enterprises, Inc. High speed and efficient matrix multiplication hardware module
JP4881270B2 (ja) 2007-09-26 2012-02-22 ルネサスエレクトロニクス株式会社 フィルタ演算器及び動き補償装置
US9419620B2 (en) 2008-07-22 2016-08-16 Nytell Software LLC Field programmable object array and video compression processor for video data compression
GB2464292A (en) 2008-10-08 2010-04-14 Advanced Risc Mach Ltd SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
US8549055B2 (en) 2009-03-03 2013-10-01 Altera Corporation Modular digital signal processing circuitry with optionally usable, dedicated connections between modules of the circuitry
US8706791B2 (en) 2009-07-30 2014-04-22 Ceva D.S.P. Ltd. Low power fir filter in multi-MAC architecture
US9600278B1 (en) 2011-05-09 2017-03-21 Altera Corporation Programmable device using fixed and configurable logic to implement recursive trees
CN103543984B (zh) 2012-07-11 2016-08-10 世意法(北京)半导体研发有限责任公司 用于特殊相关应用的修改型平衡吞吐量数据路径架构
US9495154B2 (en) 2013-03-13 2016-11-15 Qualcomm Incorporated Vector processing engines having programmable data path configurations for providing multi-mode vector processing, and related vector processors, systems, and methods
US9507565B1 (en) 2014-02-14 2016-11-29 Altera Corporation Programmable device implementing fixed and floating point functionality in a mixed architecture
US9747110B2 (en) 2015-05-20 2017-08-29 Altera Corporation Pipelined cascaded digital signal processing structures and methods
US11244225B2 (en) * 2015-07-10 2022-02-08 Samsung Electronics Co., Ltd. Neural network processor configurable using macro instructions
US10037192B2 (en) 2015-10-21 2018-07-31 Altera Corporation Methods and apparatus for performing product series operations in multiplier accumulator blocks
US20170116693A1 (en) 2015-10-27 2017-04-27 Verimatrix, Inc. Systems and Methods for Decentralizing Commerce and Rights Management for Digital Assets Using a Blockchain Rights Ledger
JP2017199167A (ja) 2016-04-27 2017-11-02 ルネサスエレクトロニクス株式会社 半導体装置
US10042606B2 (en) 2016-05-03 2018-08-07 Altera Corporation Fixed-point and floating-point arithmetic operator circuits in specialized processing blocks
US20170344876A1 (en) 2016-05-31 2017-11-30 Samsung Electronics Co., Ltd. Efficient sparse parallel winograd-based convolution scheme
US10042607B2 (en) 2016-08-22 2018-08-07 Altera Corporation Variable precision floating-point multiplier
US10055195B2 (en) 2016-09-20 2018-08-21 Altera Corporation Variable precision floating-point adder and subtractor
US10073676B2 (en) 2016-09-21 2018-09-11 Altera Corporation Reduced floating-point precision arithmetic circuitry
US20180121168A1 (en) 2016-10-27 2018-05-03 Altera Corporation Denormalization in multi-precision floating-point arithmetic circuitry
US10395165B2 (en) 2016-12-01 2019-08-27 Via Alliance Semiconductor Co., Ltd Neural network unit with neural memory and array of neural processing units that collectively perform multi-word distance rotates of row of data received from neural memory
CN110050267B (zh) * 2016-12-09 2023-05-26 北京地平线信息技术有限公司 用于数据管理的系统和方法
US20190392297A1 (en) 2016-12-30 2019-12-26 Intel Corporation Deep learning hardware
US10140574B2 (en) 2016-12-31 2018-11-27 Via Alliance Semiconductor Co., Ltd Neural network unit with segmentable array width rotator and re-shapeable weight memory to match segment width to provide common weights to multiple rotator segments
US10175944B2 (en) 2017-04-12 2019-01-08 Intel Corporation Mixed-precision floating-point arithmetic circuitry in specialized processing blocks
US10372416B2 (en) 2017-04-28 2019-08-06 Intel Corporation Multiply-accumulate “0” data gating
US10942706B2 (en) 2017-05-05 2021-03-09 Intel Corporation Implementation of floating-point trigonometric functions in an integrated circuit device
WO2019005088A1 (en) 2017-06-30 2019-01-03 Intel Corporation HETEROGENEOUS MULTIPLIER
US10990648B2 (en) * 2017-08-07 2021-04-27 Intel Corporation System and method for an optimized winograd convolution accelerator
US11010131B2 (en) 2017-09-14 2021-05-18 Intel Corporation Floating-point adder circuitry with subnormal support
US10755169B2 (en) * 2017-10-17 2020-08-25 Mediatek Inc. Hybrid non-uniform convolution transform engine for deep learning applications
US10977001B2 (en) * 2018-02-05 2021-04-13 Mediatek Inc. Asymmetric quantization of multiple-and-accumulate operations in deep learning processing
US11580353B2 (en) 2018-05-04 2023-02-14 Apple Inc. Neural network processor for handling differing datatypes
WO2020046642A1 (en) 2018-08-31 2020-03-05 Flex Logix Technologies, Inc. Multiplier-accumulator circuit, logic tile architecture for multiply-accumulate and ic including logic tile array
US11093579B2 (en) 2018-09-05 2021-08-17 Intel Corporation FP16-S7E8 mixed precision for deep learning and other algorithms
US10853067B2 (en) 2018-09-27 2020-12-01 Intel Corporation Computer processor for higher precision computations using a mixed-precision decomposition of operations
US20200202198A1 (en) 2018-12-21 2020-06-25 Waymo Llc Neural network processor
KR20200091623A (ko) * 2019-01-23 2020-07-31 삼성전자주식회사 위노그라드 변환에 기반한 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
US11194585B2 (en) 2019-03-25 2021-12-07 Flex Logix Technologies, Inc. Multiplier-accumulator circuitry having processing pipelines and methods of operating same
US11314504B2 (en) 2019-04-09 2022-04-26 Flex Logix Technologies, Inc. Multiplier-accumulator processing pipelines and processing component, and methods of operating same
US20200401414A1 (en) 2019-06-21 2020-12-24 Flex Logix Technologies, Inc. Multiplier-Accumulator Circuitry and Pipeline using Floating Point Data, and Methods of using Same
US11301213B2 (en) 2019-06-24 2022-04-12 Intel Corporation Reduced latency multiplier circuitry for very large numbers
US11249726B2 (en) 2019-09-10 2022-02-15 Intel Corporation Integrated circuits with modular multiplication circuitry
US11288076B2 (en) 2019-09-13 2022-03-29 Flex Logix Technologies, Inc. IC including logic tile, having reconfigurable MAC pipeline, and reconfigurable memory
US11347477B2 (en) 2019-09-27 2022-05-31 Intel Corporation Compute in/near memory (CIM) circuit architecture for unified matrix-matrix and matrix-vector computations
US11907719B2 (en) 2019-12-13 2024-02-20 Intel Corporation FPGA specialist processing block for machine learning

Also Published As

Publication number Publication date
US11455368B2 (en) 2022-09-27
US20220374492A1 (en) 2022-11-24
US20210103630A1 (en) 2021-04-08
EP4038488A1 (en) 2022-08-10
US12008066B2 (en) 2024-06-11
EP4038488A4 (en) 2023-10-11
WO2021067205A1 (en) 2021-04-08

Similar Documents

Publication Publication Date Title
CN110059798B (zh) 开发神经网络中的稀疏性
US20200401414A1 (en) Multiplier-Accumulator Circuitry and Pipeline using Floating Point Data, and Methods of using Same
CN111095241B (zh) 加速数学引擎
US11650824B2 (en) Multiplier-accumulator circuitry having processing pipelines and methods of operating same
CN111723904A (zh) 实现神经网络卷积转置层的方法和系统
US20220374492A1 (en) MAC Processing Pipeline having Conversion Circuitry, and Methods of Operating Same
GB2568102A (en) Exploiting sparsity in a neural network
CN115600662A (zh) 在硬件中实施池化和反池化或反向池化
CN114970807A (zh) Softmax和指数在硬件中的实施
US12015428B2 (en) MAC processing pipeline using filter weights having enhanced dynamic range, and methods of operating same
US11693625B2 (en) Logarithmic addition-accumulator circuitry, processing pipeline including same, and methods of operation
US20240111990A1 (en) Methods and systems for performing channel equalisation on a convolution layer in a neural network
EP4206996A1 (en) Neural network accelerator with configurable pooling processing unit
US20220244917A1 (en) MAC Processing Pipeline having Activation Circuitry, and Methods of Operating Same
GB2614705A (en) Neural network accelerator with configurable pooling processing unit
US11960856B1 (en) Multiplier-accumulator processing pipeline using filter weights having gaussian floating point data format
US20220171604A1 (en) Multiplier Circuit Array, MAC and MAC Pipeline including Same, and Methods of Configuring Same
GB2611521A (en) Neural network accelerator with a configurable pipeline
GB2611520A (en) Methods and devices for configuring a neural network accelerator with a configurable pipeline
GB2611522A (en) Neural network accelerator with a configurable pipeline
Zhong et al. Implementation of large kernel 2-D convolution in limited FPGA resource
GB2614327A (en) Configurable pooling process unit for neural network accelerator
Purnima et al. Implementation of Area Efficient Memory-Based FIR Digital Filter Using LUT-Multiplier

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