CN114730255A - 对数加法-累加器电路系统、包括其的处理流水线以及操作方法 - Google Patents

对数加法-累加器电路系统、包括其的处理流水线以及操作方法 Download PDF

Info

Publication number
CN114730255A
CN114730255A CN202080069215.2A CN202080069215A CN114730255A CN 114730255 A CN114730255 A CN 114730255A CN 202080069215 A CN202080069215 A CN 202080069215A CN 114730255 A CN114730255 A CN 114730255A
Authority
CN
China
Prior art keywords
logarithmic
data
data format
circuitry
accumulator
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
CN202080069215.2A
Other languages
English (en)
Inventor
F·A·瓦尔
王成诚
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 CN114730255A publication Critical patent/CN114730255A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/4833Logarithmic number system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/5057Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination using table look-up; using programmable logic arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/5235Multiplying only using indirect methods, e.g. quarter square method, via logarithmic domain
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes

Landscapes

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

Abstract

一种集成电路,包括多个串联连接的对数加法‑累加器电路,以在操作中执行对数加法和累加操作,其中每个对数加法‑累加器电路包括:(i)对数加法电路,用于将各自具有对数数据格式的第一输入数据与过滤器权重数据相加,并生成和输出具有对数数据格式的第一和数据,以及(ii)累加器,耦合到相关联的对数加法‑累加器电路的对数加法电路,以将第二输入数据与由相关联的对数加法电路输出的第一和数据相加以生成第一累加数据。集成电路还可以包括第一数据格式转换电路系统,其耦合到每个对数加法电路的输出端,以将第一和数据的数据格式转换成浮点数据格式,其中累加器可以是浮点类型。

Description

对数加法-累加器电路系统、包括其的处理流水线以及操作 方法
相关申请
本非临时申请要求于2019年12月4日提交的标题为“Logarithmic Addition-AccumulatorCircuitry,Processing Pipeline includeSame and Method of OperatingSame”的美国临时专利申请No.62/943,336的优先权和权益。'336临时申请在此通过引用整体并入本文。
背景技术
本文描述和图示了许多发明。本发明既不限于任何单个方面或其实施例,也不限于这些方面和/或实施例的任何组合和/或排列。重要的是,本发明的每个方面和/或其实施例可以单独使用或与本发明的其它方面和/或其实施例中的一个或多个组合使用。其所有组合和排列旨在落入本发明的范围内。
在一个方面,本发明涉及具有对数加法-累加器电路系统的一个或多个集成电路(以及操作这种电路系统的方法),其中至少部分地基于例如与推理操作相关的对数数据格式来处理数据(例如,图像数据)。在一个实施例中,本发明包括例如串联互连的多个对数加法-累加器电路(在本文中有时称为“多个LAC”或“多个LAC电路”,并且单数/单独称为“LAC”或“LAC电路”)以将对数加法和累加操作流水线化。在一个实施例中,本发明包括电路系统,该电路系统用于将具有第一或初始数据格式(例如,浮点数据格式或定点数据格式)的输入数据/值转换或变换成对数数据格式(例如,具有底数2),并部分地经由对数加法处理具有对数数据格式的数据。在一个实施例中,转换电路系统通过将每个输入数据/值的分数域的值从浮点数据格式重新映射到其值的对数来改变、变换和/或转换输入数据/值的数据格式。
例如,在操作中,对数数据格式的输入数据/值被加到也是对数数据格式(例如,具有底数2)的图像过滤器权重或系数。在图像数据处理中采用的过滤器权重或系数可以以对数数据格式存储在存储器中或以与对数数据格式不同的格式存储在存储器中并在处理之前(例如,紧接在处理之前)转换或变换成对数数据格式。在一个实施例中,转换电路系统通过将每个过滤器权重的分数域的值从浮点数据格式重新映射到分数域的值的对数来改变、变换和/或转换过滤器权重的数据格式。
在对数加法之后,和数据可以被转换或变换成另一种/不同的数据格式(例如,浮点格式或定点格式——例如,回到输入数据的数据格式——但是,值的长度可能相同或不同)用于附加/后续处理。例如,对数数据格式的处理后的图像数据可以被转换或变换成浮点数据格式(即,与输入数据的数据格式相同的数据格式)。此后,可以进一步处理具有浮点数据格式的部分处理的数据以实现例如与推理操作相关的图像数据处理的累加操作。值得注意的是,在一个实施例中,转换电路系统通过将每个数据/值的分数域的值从对数数据格式重新映射到浮点数据格式来改变、变换和/或转换和数据的数据格式。
另一方面,本发明涉及一个或多个集成电路(以及操作这种电路的方法),包括多个执行或处理流水线,具有对数加法-累加器电路系统(有时称为“对数加法-累加电路系统”),它基于对数数据格式处理数据以例如生成处理后的图像数据。例如,每个执行或处理流水线包括用于处理数据的多个对数加法-累加器电路,例如,如上所述。在一个实施例中,在操作中,图像数据(其可以是浮点数据格式)被提供给多个执行或处理流水线,每个流水线包括多个对数加法-累加器电路。在此,数据(例如,具有浮点或定点数据格式的图像数据)最初被(经由格式转换电路系统)转换或变换成对数数据格式,然后数据经由多个对数加法-累加器电路系统的对数加法/加法器电路系统被加到相关联的图像过滤器权重或系数(其处于或已经变换/转换成对数数据格式)。在一个实施例中,对数加法/加法器电路系统的输出(即,和数据)被应用或提供给格式转换电路系统,以将来自对数加法/加法器电路系统的和/输出的对数数据格式转换或变换成不同的数据格式——例如,促进处理电路系统的后续处理或与处理电路系统的后续处理一致的数据格式(例如,浮点数据格式)。在这方面,随后可以经由多个对数加法-累加器电路系统的累加器电路系统进一步处理例如浮点数据格式的对数加法-累加器电路系统的和/输出,以实现处理电路系统的累加操作。累加器电路系统累加例如与推理操作相关的多个相关联的部分处理的图像数据。值得注意的是,多个执行或处理流水线可以并发工作或操作。
多个对数加法-累加器电路可以包括多个寄存器(包括多个影子寄存器),以实现或促进由对数加法-累加器电路执行的乘法和累加操作的流水线化,从而增加与处理输入数据(例如,图像数据)相关的对数加法-累加器执行或处理流水线的吞吐量。值得注意的是,本发明可以采用美国专利申请No.16/545,345中描述和图示的一种或多种电路体系架构,其中对数加法电路是乘法电路的替代,或作为其附加,以便实现如本文所述的对数加法电路系统。将如本文描述和图示的对数加法电路实现到这样的电路体系架构(包括多个寄存器(例如,影子寄存器)中促进级联与本发明一致的对数加法和累加操作。以这种方式,多个对数加法-累加器电路可以被配置和/或重新配置为以更快速和/或高效地执行处理和操作的方式来处理数据(例如,图像数据)。'345申请通过引用整体并入本文。
在又一方面,本发明涉及一个或多个集成电路,其具有用于实现对数加法和累加操作以及乘法和累加操作的电路系统。在此,一个或多个集成电路包括用于执行对数加法和累加操作(例如,如本文所讨论的)的对数加法-累加器电路系统和用于执行乘法和累加操作(例如,如下文详细讨论的)的乘法器-累加器电路系统。一个或多个集成电路可以包括模式选择电路系统以控制(即,启用和/或禁用)对数加法-累加器电路系统和乘法器-累加器电路系统的可操作性和/或操作,从而选择用于处理例如与推理操作相关的图像数据的电路系统。在这方面,模式选择电路系统控制或确定数据处理,以及其中采用的电路系统,包括对数加法-累加器电路系统或乘法器-累加器电路系统。
在一个实施例中,模式选择电路系统可以是一次性可编程的;在另一个实施例中,模式选择电路系统是不止一次可编程的(即,多次)。模式选择电路系统可以例如在原位(即,在集成电路的操作期间)、在制造时和/或在加电、启动、初始化、重新初始化、配置、重新配置等时或在其期间进行编程。例如,模式选择电路系统可以从包括一个或多个数据存储电路(例如,一个或多个存储器单元、寄存器、触发器、锁存器、存储器块/阵列)、一个或多个输入引脚/导体、(任何类型的)查找表LUT、处理器或控制器和/或离散控制逻辑的内部或外部电路系统(即,在一个或多个集成电路外部-例如,主机计算机/处理器)接收模式选择信号。响应于此,模式选择电路系统可以使用这样的(一个或多个)信号来启用或禁用所选择的处理电路系统(视情况而定),从而(例如,在原位和/或在加电、启动、初始化、重新初始化、配置、重新配置等时或在其期间)实现处理模式之一(即,对数加法和累加操作或乘法和累加操作)。
值得注意的是,在处理电路系统包括对数加法-累加器电路系统和乘法器-累加器电路系统两者的情况下,这样的电路系统可以共享一个或多个电路,并且由此,各自的电路系统可能不是完全分离和不同的。例如,对数加法-累加器电路系统的数据路径和乘法器-累加器电路系统的数据路径可以共享与过滤器权重或系数相关联的电路系统以及执行上述累加操作的电路系统。此外,当在具有处理具有对数数据格式的数据的对数加法-累加器电路系统以及处理具有浮点或定点格式的数据的乘法器-累加器电路系统的的多个执行或处理流水线中实现多个各自的电路系统的情况下,数据路径可以共享集成电路的大部分电路系统--除了例如数据格式转换电路系统(即,将数据转换成对数数据格式/从对数数据格式转换的电路系统)、对数加法-累加器电路系统的对数加法电路系统和乘法器-累加器电路系统的乘法电路系统之外。在这个实施例中,这样的执行或处理流水线可以结合对数加法-累加器电路系统或乘法器-累加器电路系统来处理例如与推理操作相关的图像数据。
本发明的电路系统可以设置在(一个或多个)集成电路上或(一个或多个)集成电路中,例如,(i)处理器、控制器、状态机、门阵列、片上系统(“SOC”)、可编程门阵列(“PGA”)和/或现场可编程门阵列(“FPGA”),和/或(ii)包括嵌入式FPGA的处理器、控制器、状态机和SOC,和/或(iii)集成电路(例如,处理器、控制器、状态机和SoC)-包括嵌入式处理器、控制器、状态机和/或PGA。实际上,本发明的电路系统可以设置在专门地专用于这种电路系统的(一个或多个)集成电路上或(一个或多个)集成电路中。
附图说明
本发明可以结合其附图中所示的实施例来实现。这些附图示出了本发明的不同方面,并且在适当的情况下,在不同图中图示类似电路、体系架构、结构、组件、材料和/或电路的参考标号、命名法或名称被类似地标记。应该理解的是,结构、组件、材料和/或电路的各种组合,除了那些具体示出的之外,都被考虑并且在本发明的范围内。
此外,本文描述和图示有许多发明。本发明既不限于任何单个方面或其实施例,也不限于这些方面和/或实施例的任何组合和/或排列。此外,本发明的每个方面和/或其实施例可以单独使用或与本发明的其它方面和/或其实施例中的一个或多个组合使用。为简洁起见,本文未单独讨论和/或图示某些排列和组合。值得注意的是,本文描述为“示例性”的实施例或实施方式不应被解释为例如相对于其它实施例或实施方式是优选的或有利的;而是,它旨在反映或指示(一个或多个)实施例是(一个或多个)“示例”实施例。
值得注意的是,本文描述和/或在图中图示的配置、块/数据宽度、数据路径宽度、带宽、数据长度、值、处理、伪代码、操作和/或算法,以及与其相关联的文本是示例性的。实际上,本发明不限于任何特定或示例性的电路、逻辑、块、功能和/或物理图、在执行流水线中采用的乘法器-累加器电路的数量、在特定处理配置中采用的执行流水线的数量、存储器的组织/分配、块/数据宽度、数据路径宽度、带宽、值、处理、伪代码、操作和/或根据例如示例性电路、逻辑、块、功能和/或物理图图示和/或描述的算法。实际上,虽然本发明的若干示例性实施例和特征在浮点数据格式(例如,FP16或FP24)和对数数据格式(例如,LL8或LL16)的上下文中进行图示,但实施例和发明适用于其它精度(例如,FPxx,其中:8≤xx≤39)和LLxx,其中:8≤xx≤24)。为简洁起见,除了本文所示和/或描述的那些之外的精度旨在落入本发明的范围内,并且基于例如本申请对于本领域技术人员将是非常清楚的。
此外,虽然说明性/示例性实施例包括被指派、分配和/或用于存储某些数据和/或在某些组织中的多个存储器(例如,L3存储器、L2存储器、L1存储器、L0存储器),但是可以添加一个或多个存储器,和/或可以省略和/或组合/合并一个或多个存储器-例如,L3存储器或L2存储器,和/或可以改变、补充和/或修改组织。本发明不限于在申请中阐述的存储器组织和/或分配的说明性/示例性实施例。同样,本发明不限于本文阐述的说明性/示例性实施例。
图1A图示了根据本发明的一个或多个方面的以线性流水线配置连接的示例性对数加法-累加器执行流水线的逻辑概述的示意框图,其中对数加法-累加处理或执行流水线(“LAC流水线”)包括以框图形式图示的对数加法-累加器电路系统;值得注意的是,对数加法-累加器电路系统包括一个或多个对数加法-累加器电路(“多个LAC”(或单数/单独的“LAC”)-示例性对数加法-累加器电路(有时也称为“对数加法-累加电路”)在插图A中以示意框图的形式图示);在该示例性实施例中,“m”(例如,在说明性实施例中为64)个对数加法-累加器电路连接在线性执行流水线中以并发操作,由此,处理电路在每m(例如,64)周期间隔(在此,周期名义上可以是1ns)中执行m x m(例如,64x64)个对数加法和累加操作;值得注意的是,每m(例如,64)周期间隔处理在特定(i,j)位置(这个示例性实施例的宽度Dw/Yw和高度Dh/Yh维度的索引--Dw=512、Dh=256和Dd=128,并且Yw=512、Yh=256和Yd=64)处的Dd/Yd(深度)列的输入和输出像素/数据,其中对于这个阶段的每个Dw*Dh深度列重复m(例如,64)周期执行间隔;此外,在一个实施例中,在对数加法-累加器电路系统开始处理之前(参见例如'345申请,如上所述,通过引用并入本文),对数数据格式的过滤器权重或权重数据加载到存储器中(例如,L1/L0–诸如(一个或多个)SRAM存储器);此外,在这个实施例中,采用格式转换电路系统将输入数据(DD)和过滤器权重(Fkl)的数据格式从第一数据格式(例如,浮点数据格式或定点数据格式(例如,整数或块缩放分数数据格式)转换成对数数据格式,以促进在执行流水线的LAC中处理;
图1B图示了根据本发明一个实施例的示例性对数加法-累加器电路系统(有时也称为“对数加法-累加电路系统”)的示例性逻辑概述的示意性框图,该对数加法-累加器电路系统包括以对数数据格式执行输入数据和过滤器权重两者的对数加法操作的对数加法电路系统(“MUL”)和以浮点数据格式执行累加/加法操作的累加器电路系统(“ADD”);在这个实施例中,数据格式转换电路系统被用于将输入数据/值转换成对数数据格式(FPxx到LLxx(例如,FP24到LL16);而且,数据格式转换电路系统被用于将对数加法电路系统的输出从对数数据格式转换成浮点数据格式,以促进示例性对数加法-累加器电路的附加数据处理;在此,对数加法电路系统的对数数据格式的输出数据/值(和数据)被转换或变换成不同的数据格式(例如,初始数据格式,例如浮点格式或定点格式—虽然在某些实施例中,位长可以改变)以进行后续处理;值得注意的是,虽然这个说明性示意框图提供了数据和操作的位精度,但这种位精度是示例性的并且本发明限于(i)对数数据格式(LLxx,其中:xx是整数)、浮点格式(FPxx,其中:xx是整数)、定点格式(例如,块缩放分数数据格式“BSF”)、块/数据宽度、数据路径宽度、带宽和/或值的特定位精度,(ii)特定电路系统和/或整体流水线的示例性逻辑或物理概述配置,和/或(iii)示例性模块/电路系统配置和/或流水线体系架构;实际上,在一个实施例中,示例性对数加法-累加器电路可以包括两个专用存储器组(即,组0和组1)以存储至少两个不同的过滤器权重的集合—每个过滤器权重的集合与数据的集合相关联并用于处理数据的集合),其中每个存储器组可以被交替读取以用于处理给定的关联数据的集合并在处理给定的关联数据的集合之后被交替写入并为后续处理(例如,下一个关联数据的集合)做准备;
图1C图示了根据本发明的某些方面的包括多个多位LAC执行流水线的集成电路或集成电路的一部分(有时可以称为“X1组件”)的高级框图布局,多位LAC执行流水线具有多个对数加法-累加器电路系统,每个对数加法-累加器电路系统实现对数加法和累加操作;多位LAC执行流水线和/或多个对数加法-累加器电路可以被配置为实现一个或多个处理体系架构或技术(单个/单独地或与一个或多个X1组件组合);在这个说明性实施例中,多位LAC执行流水线被组织成集群(在这个说明性实施例中,四个集群,其中每个集群包括多个多位LAC执行流水线(在这个说明性实施例中,每个集群包括16个64-LAC执行流水线(以下也可以单独称为LAC处理器));在一个实施例中,多个对数加法-累加器电路系统是可配置或可编程的(一次或多次,例如,在启动时和/或在原位)以实现一个或多个流水线化处理体系架构或技术(参见例如右下角的图1C的高级框图的一部分的扩展视图是单个LAC执行流水线(在说明性实施例中,包括例如64个对数加法-累加器电路系统(“LAC”)-也可以被称为LAC处理器),该单个LAC执行流水线与以线性执行流水线配置布置的示例性对数加法-累加器电路系统的逻辑概述的示意性框图(-参见图1A)相关);这个说明性实施例中的处理组件包括:存储器(例如,L2存储器、L1存储器和L0存储器(例如,SRAM)),总线接口(例如,PHY和/或GPIO),用于促进与组件和用于存储和供组件的电路系统使用的存储器(例如,SRAM和DRAM)外部的电路系统的通信,以及多个开关/多路复用器,所述多个开关/多路复用器电互连以形成开关互连网络“片上网络”(“NOC”)以促进LAC执行流水线的对数加法-累加器电路的集群的互连;在一个实施例中,NOC包括开关互连网络(例如,混合模式互连网络(即,分层开关矩阵互连网络和网状、环面等互连网络)(下文中统称为“网状网络”或“网状互连网络”))、相关联的数据存储电路、输入引脚和/或在被编程时确定开关/多路复用器的操作的查找表(LUT);在一个实施例中,一个或多个(或所有)集群包括一个或多个计算电路(例如,多个对数加法-累加器电路系统-标记为“NMAX行”-参见例如'345申请,其中除了数据格式电路系统之外,对数加法电路系统是乘法器电路系统的替代品);值得注意的是,在一个实施例中,每个LAC执行流水线(在一个实施例中,由多个串联互连的对数加法-累加器电路组成)连接到专用于那个处理流水线的相关联的L0存储器(例如,SRAM存储器);相关联的L0存储器存储由那个特定LAC处理流水线的每个对数加法-累加器电路的对数加法电路系统在执行对数加法操作时使用的过滤器权重,其中给定集群的每个LAC处理流水线连接到相关联的L0存储器(在一个实施例中,其专用于那个LAC处理流水线的对数加法-累加器电路–在这个说明性实施例中,LAC处理流水线中的64个LAC);LAC集群的多个(例如,16个)LAC执行流水线(并且特别是集群的每个LAC执行流水线的L0存储器)耦合到相关联的L1存储器(例如,SRAM存储器);在此,相关联的L1存储器连接到集群的每个LAC执行流水线并由其共享,以接收存储在与集群的每个LAC执行流水线相关联的L0存储器中的过滤器权重;在一个实施例中,相关联的L1存储器被指派并专用于LAC集群的多个流水线;值得注意的是,每个64-LAC执行流水线的移入和移出路径耦合到L2存储器(例如,SRAM存储器),其中L2存储器还耦合到L1存储器和L0存储器;NOC将L2存储器耦合到PHY(物理接口),PHY(物理接口)可以连接到L3存储器(例如,外部DRAM);NOC还耦合到PCIe或PHY,PCIe或PHY进而可以提供与X1处理组件外部的电路系统(例如,外部处理器,诸如主机计算机中的处理器)的互连或通信;在一个实施例中,根据本发明的一个或多个方面,NOC还可以连接多个X1组件(例如,经由GPIO输入/输出PHY),这些允许多个X1组件处理相关数据(例如,图像数据),如本文所讨论的;
图1D图示了示例性乘法器-累加器电路和示例性对数加法-累加电路系统(有时称为“对数加法-累加器电路系统”)的示例性逻辑概述的示例性示意框图;
图1E图示了根据本发明一个实施例的示例性对数加法-累加执行或处理电路的示例性逻辑概述的示意框图,包括以16位对数数据格式(LL16 MUL)执行操作的对数加法电路系统(MUL)、将对数数据格式的(和数据)转换或变换成例如浮点数据格式的格式转换电路系统,以及执行累加/加法操作的累加器电路系统(ADD),在一个实施例中以24位浮点格式(FP24 ADD);值得注意的是,处理电路系统和操作的位宽是示例性的-即,在这个说明性实施例中,数据和过滤器权重采用16位对数数据格式(LL16),其中转换电路系统可以改变或修改(例如,增加或减少)输入数据和过滤器权重的位宽;如上面所指示的,对数加法电路系统和浮点累加器分别以16位(LL16)和24位浮点数据格式(FP24)执行操作;其它浮点格式或宽度精度也适用(例如,8、16和32位);如上所述,在一个实施例中,对数加法电路系统和/或浮点累加器采用的精度/格式可以取决于可用/分配的存储器带宽、可用/分配的布线带宽,和/或例如集成电路内可用于/分配给处理电路系统的浮点电路系统以存储、传送/读取和/或处理数据(例如,部分处理和待处理的数据)的区域的量;值得注意的是,本发明可以经由可以配置有相同精度宽度或不同精度宽度/格式的浮点执行电路系统来实现;
图1F和1G图示了根据本发明某些实施例的示例性对数加法-累加器执行或处理流水线(参见图1A和1C)的示例性逻辑概述的示意框图,其中每个对数加法-累加器电路包括以对数数据格式执行操作的对数加法电路系统和/或以浮点格式执行操作的累加器电路系统;在一个实施例中,在图1F中,采用数据格式转换电路系统将输入数据转换成对数数据格式(FPxx到LLxx(例如,FP24到LL16);在另一个实施例中,在图1G中,采用数据格式转换电路系统将输入数据和过滤器权重转换成对数数据格式(FPxx到LLxx(例如,FP24到LL16,和FP8到LL16));在这些示例性实施例中,对数加法-累加器电路可以包括多个存储器组(例如,SRAM存储器组),其专用于对数加法-累加器电路以存储由相关联的对数加法-累加器电路的对数加法电路系统使用的过滤器权重;在一个说明性实施例中,LAC执行或处理流水线包括64个对数加法-累加器电路(参见图1A和1C);值得注意的是,在这个示例性对数加法-累加器执行或处理流水线的线性流水线配置的逻辑概述中,多个处理(LAC)电路系统(“p”)连接在执行流水线中并且并发地操作;例如,在p=64的一个示例性实施例中,对数加法-累加器处理电路在每64周期间隔中执行64x64个对数加法-累加操作;此后,在相同的64周期间隔期间,接下来的64个输入像素/数据被移入,而先前的输出像素/数据被移出;值得注意的是,在一个实施例中,每个对数加法-累加器电路可以包括两个专用存储器组以存储至少两个不同的过滤器权重的集合-每个过滤器权重的集合与数据的集合相关联并用于处理数据的集合),其中每个存储器组可以被交替读取以用于处理给定的关联数据的集合并在处理给定的关联数据的集合之后被交替写入;在阶段处理开始之前将过滤器权重或权重数据从例如外部存储器或处理器加载到存储器(例如,L1/L0 SRAM存储器)中(例如,参见'345申请);值得注意的是,本发明的对数加法-累加器电路和电路系统可以互连或实现在一个或多个对数加法-累加器执行或处理流水线中,包括例如美国临时专利申请No.63/012,111中描述和/或图示的与MAC处理流水线相关的执行或处理流水线;'111申请通过引用整体并入本文;如上所述,LAC和LAC流水线替代'111申请中描述和/或图示的示例性处理流水线中的MAC和MAC流水线;
图1H图示了根据本发明的一个实施例的示例性对数加法-累加器电路的示例性逻辑概述的示意性框图,其包括对都以对数数据格式的输入数据和过滤器权重执行对数加法操作的对数加法电路系统(“MUL”),以及例如在这个实施例中以浮点数据格式执行累加/加法操作的累加器电路系统(“ADD”);在这个实施例中,采用数据格式转换电路系统将输入数据和过滤器权重转换成对数数据格式(FPxx到LLxx(例如,FP24到LL16,FP8到LL16));而且,采用格式转换电路系统将对数加法电路系统的输出从对数数据格式转换成浮点数据格式,以促进示例性对数加法-累加器电路的附加数据处理;在此,对数数据格式的对数加法电路系统的输出数据/值(和数据)被转换或变换成不同的数据格式(例如,初始数据格式,例如,浮点格式或定点格式-虽然在某些实施例中,位长可以改变)用于后续处理;值得注意的是,虽然这个说明性示意框图提供了数据和操作的位精度,但这种位精度是示例性的,并且本发明限于(i)对数数据格式(LLxx,其中:xx是整数)、浮点格式(FPxx,其中:xx是整数)、定点格式(例如,块缩放分数数据格式“BSF”)的特定位精度)、块/数据宽度、数据路径宽度、带宽和/或值的特定位精度,(ii)特定电路系统和/或整体流水线的示例性逻辑或物理概述配置,和/或(iii)示例性模块/电路系统配置和/或流水线体系架构;
图2A图示了根据本发明某些方面的具有查找表的示例性数据格式转换电路系统的示意/流程框图,该查找表存储使数据/值(在这个示例性实施例中,以浮点数据格式)与对数数据格式的“等效”值等同的预先计算和/或编码的值;在此,对于每个数据/值,适当的输出值被预先计算(和编码)并编译到格式转换查找表中(使用y=LOG2(x)计算技术),然后存储在存储器(例如,非易失性只读存储器,诸如ROM或闪存)中;在这个说明性实施例中,查找表包含浮点数据格式(具体为FP16)和对数数据格式(具体为LL16)之间的相关性;可以使用现在已知或以后开发的任何电路系统和/或技术预先计算表的内容;值得注意的是,LL16和FP16格式的指数域“E”是相似的-它是偏置值,表示数字(即,“2^(E-Ebias)”)的指数基数的整数值,其中“E-Ebias”值是数字的整数的以2为底数的对数;而且,标准浮点格式将E域中的这个整数对数与F域中的二进制分数(也称为尾数或有效数)混合以(近似)表示真数,并且对数浮点格式混合E域中的整数对数与G域中的分数对数以(近似)表示真数;
图2B图示了根据本发明某些方面的将数据/值从浮点数据格式转换成对数数据格式的另一个示例性数据格式转换电路系统的示意/流程框图,其中转换电路系统包括查找表,该查找表存储使数据/值(在这个示例性实施例中,具有浮点数据格式)与具有对数数据格式(使用y=LOG2(x)计算技术)的“等效”数据值等同的预先计算和/或编码的值;在这个示例性实施例中,对于每个数据/值,“等效”值被预先计算(和编码)并以格式转换查找表形式存储在存储器(例如,非易失性只读存储器,诸如ROM或闪存)中;在这个说明性实施例中,查找表包含浮点数据格式(具体为FP24)和对数数据格式(具体为LL16)之间的相关性;可以使用现在已知或以后开发的任何电路系统和/或技术预先计算表的内容;在这个实施例中,分数域(F)经由舍入逻辑被舍入(在此,从15位值到7位值);值得注意的是,LL16和FP16格式的指数域“E”是相似的-它是偏差值,表示数字(即,“2^(E-Ebias)”)的指数基数的整数值,其中“E-Ebias”值是数字的整数的以2为底数的对数;而且,标准浮点格式将指数域中的这个整数对数与分数域“F”中的二进制小数(也称为尾数或有效数)混合以表示或近似表示真数,并且对数浮点格式混合指数域中的整数对数与对数值域“G”中的分数域对数以表示真数;
图3A、3C和3D分别图示了根据本发明某些方面的示例性数据格式转换电路系统的示意/流程框图和对应的电路框图,其中逻辑电路系统使用y=LOG2(x)计算技术将具有浮点数据格式的数据/值(输入)转换或变换成具有对数浮点数据格式的数据/值(输出);在这个实施例中,数据/值的分数域(F)通过逻辑门和多路复用器(mux块)进行调整;在FP16到LL16转换电路系统中,分数域的转换使用用于将域的值转换成对数浮点数据格式的大约30个逻辑门(图3A中的逻辑块和图3C中的逻辑1),x位加法器(add或ADD块)和x位多路复用器(例如,x=7,参见图3C);值得注意的是,图3C中所示的数据格式转换电路系统的实施例是图3A中所示的数据格式转换框图的电路框图实施方式-实现y=LOG2(x)计算方法以提供浮点数据格式到对数浮点数据格式的具有中等水平精度的数据转换;类似地,图3D中所示的数据格式转换电路系统的实施例是图3A中所示的数据格式转换框图的电路框图实施方式-实现y=LOG2(x)计算方法以提供浮点数据格式到对数浮点数据格式的具有高水平精度的数据转换(即,相对于图3C中所示的实施例具有更高水平的精度);在一个实施例中,图3D的精度的水平是从浮点数据格式到对数数据格式的32或64位精度;结果是转换值可以正确地舍入到目标格式;
图3B图示了根据本发明某些方面的示例性数据格式转换电路系统的示意/流程框图,其中逻辑电路系统使用y=LOG2(x)计算技术将具有浮点数据格式的数据/值(输入)转换或变换成具有对数浮点数据格式的数据/值(输出);在这个实施例中,数据/值的分数域(F)经由舍入逻辑进行舍入(在此,从15位值到7位值),并且用逻辑门和多路复用器(mux块)进行调整;在FP24到LL16转换电路系统中,分数域的转换采用逻辑将域的值转换成对数浮点数据格式;值得注意的是,作为图3A-3D的计算技术的附加,或者作为其替代,本发明还可以采用外推技术将数据格式从浮点数据格式转换成对数浮点数据格式;
图4A和4B分别图示了根据本发明某些方面的示例性数据格式转换电路系统的示意/流程框图和对应的电路框图,其中逻辑电路系统将具有对数数据格式和第一位长的数据/值(输入)转换或变换成具有对数浮点数据格式和第二位长的数据/值(输出);在一个实施例中,可以采用在此所示的转换电路系统将对数数据格式(例如,LL8-具有用于符号(1位)、指数(3位)和分数(4位)的8位的对数数据格式)的过滤器权重或系数转换成具有更大动态范围和精度的对数数据格式(例如,例如,LL8–具有用于符号(1位)、指数(8位)和分数(7位)的16位的对数数据格式)的过滤器权重或系数;该转换技术经由逻辑电路系统、y位加法器和一个或多个多路复用器(参见图4B)使LL8输入格式的指数和分数域中的位数大约加倍;值得注意的是,三个结果域可能还需要使用多路复用器的行替换的特殊值、操作数或字符);而且,多路复用器在指定为“x”对数数据格式(LL8x)、“y”对数数据格式(LL8y)和“z”对数数据格式(LL8z)的三(3)种替代转换之间进行选择;
图5A-5C分别图示了根据本发明某些方面的示例性对数加法/加法器电路系统的示意/流程框图和对应的电路框图,其中电路系统接收各自具有对数数据格式的两个操作数/值(输入-在这个说明性示例中,图像/输入数据和过滤器权重/系数),并且将操作数/值相加以生成和或结果(输出);在这个实施例中,输入的符号域被XOR,指数域的值相加(如果舍入导致分数上溢,那么递增),并且两个分数域(以对数形式)相加在一起(经由2的补码)-在这个实施例中,使用7位定点加法器;值得注意的是,图5B图示了图5A中所示的对数加法电路系统的详细示例性电路框图,其中图5C提供了图5B中所示的某些逻辑块的细节(参见“逻辑1”、“逻辑2”和“逻辑3”);图5B中所示的对数加法电路系统(GA+GB)可以由实现其它功能(诸如倒数、平方根、幂函数)的电路系统代替或补充,其中,在操作数为对数数据格式之后,可以实现其它操作或功能(例如,除法A/B可以通过执行GA-GB来执行(连同指数EA-EB的减法,而不是对于乘法的加法EA+EB);
图6A图示了根据本发明某些方面的示例性数据格式转换电路系统的示意/流程框图,该电路系统具有查找表,该查找表存储使对数数据格式中的数据/值与另一种数据格式(在这个示例性实施例中,采用浮点数据格式)的“等效”值等同的预先计算和/或编码的值;在此,对于每个数据/值,适当的输出值被预先计算(和编码)并编译在格式转换查找表中(使用y=2x计算技术),然后存储在存储器(例如,非易失性、只读存储器,诸如ROM或闪存)中;在这个说明性实施例中,查找表包含对数数据格式(具体为LL16)和浮点数据格式(具体为FP16)之间的相关性;可以使用现在已知或以后开发的任何电路系统和/或技术预先计算表的内容;
图6B图示了根据本发明某些方面的示例性数据格式转换电路系统的示意/流程框图,其中逻辑电路系统使用y=2x计算技术将具有对数数据格式的数据/值(输入)转换或变换成具有浮点数据格式的数据/值(输出);在这个实施例中,数据/值的分数域(G)用逻辑门、加法器(add块)和多路复用器(mux块)进行调整。
图6C-6E图示了图6B的示例性数据格式转换电路系统的示意/流程框图的电路框图,其中每个电路框图提供不同水平的精度;在一个实施例中(图6C),具有中等精度的LL16到FP16转换电路系统可以使用例如大约30个逻辑门、x位加法器和x位多路复用器(例如,x=7)来实现分数域的转换;在另一个实施例中(图6D),具有比图6C的实施例更高的精度的LL16到FP16转换电路系统可以使用y=2^x计算技术来实现转换电路系统;在一个实施例中(图6E),经由转换电路系统从LL16到FP16的转换的精度的水平大于图6C和6D的实施例,其中对数数据格式到浮点格式转换电路系统提供从对数数据格式到浮点数据格式的数据转换的精度的水平(在此,计算y=2^x)-例如,32位或64位精度;如上所述,本发明可以采用任何数据格式转换电路系统或方法来将图像/输入数据的数据格式转换、修改、扩展/收缩和/或调整为现在已知或以后开发的对数数据格式-所有这些都旨在落入本发明的范围内;
图7图示了具有不同宽度或长度(包括相应范围)的示例性浮点数据格式,以及具有不同宽度或长度(包括相应范围)的示例性对数数据格式,其中对数数据格式可以“等效”于浮点数据格式;值得注意的是,这三种对数数据格式对符号域S和分数域G使用符号量值数值格式,其中分数域G的最高权重为0.5,并且没有隐藏(隐式)位,因此它包括非归一化的值;指数域是二的补码数值格式,添加了127的偏置;最小和最大指数值被保留用于特殊操作数或字符(NAN、INF、DNRM、ZERO);
图8图示了用于对数数据格式(LL16)的示例性数字空间,其中为特殊操作数(NAN、INF、ZRO)保留最小和最大指数E[7:0];当发生未定义的操作(0*∞或∞-∞)时,生成NAN值;±INF值是指数上溢的饱和值;±ZRO值是指数下溢的饱和值。EXP[7:0]=8'b00000000)示出与浮点数据格式(FP16)的DNRM值对应的binade,其中,除了G[1:7]=7'b0000000保留用于ZRO之外,它的响应与其它binade一样;
图9A图示了根据本发明某些实施例的用于具有1位符号域(S)、3位指数域(E)和四位分数域(F)的对数数据格式(LL8y)的示例性编码技术,如结合某些数据(例如,过滤器权重/系数)实现的-例如,与采用查找表的转换电路系统的实施方式相关;值得注意的是,可以采用、提供和/或生成与其它对数数据格式(例如,LL8x和LL8z)相关的相似或对应的查找表;
图9B和9C分别图示了根据本发明某些方面的实施例的用于对数数据格式(LL8y)的编码技术的选择的部分,如图9A中所识别的;
图10A图示了用于具有1位符号域(S)、3位指数域(E)和四位分数域(F)的对数数据格式(LL8y)的示例性编码技术,如结合本发明某些实施例的某些数据(例如,过滤器权重/系数)实现的-例如,与实现查找表的数据格式转换电路系统相关;在这个图示中,根据本发明的一个实施例,示例性浮点格式(LL8y)包括(例如,动态地)可配置的范围和精度;值得注意的是,描绘了对数数据格式LL16的水平线下方的“可允许的”数字空间与LL8x、LL8y和LL8z的对数数据格式相关地以图形方式表示;LL8y的范围和精度包括中心四个binade(-2到+2),它具有与FP8格式相同的精度(4位)--但是与FP8不同的是,LL8y格式的精度对称衰减;在从-11到-8的三个binade和从+8到+10的两个binade中有零位精度(单个值);LL8y的对称衰减与用于图像过滤应用的数据权重值分布中所看到的衰减相似;相比之下,INT8格式在负方向上的binade有衰减,但在正方向上的binade的宽度中有硬边缘;描绘了LL8x格式,其中在中间的两个binade(-1到+1)中,它比LL8y格式多一位精度(5位);与LL8y一样,LL8x格式的精度对称衰减。从-5到-6的binade和+5的binade中有零位精度(单个值);此外,还描绘了LL8z格式,其中在中心的八个binade(-4到+4)中,它的精度比前面讨论的LL8y格式少一位(3位);与LL8y格式一样,LL8x格式的精度对称衰减;此外,从-19到-12的binade和从+12到+18的binade中存在零位精度(单个值);值得注意的是,三种浮点格式的集合(LL8x、LL8y、LL8z)的主要好处是它们提供了多种替代实施方式/实施例,这些实施方式/实施例提供了范围和精度的变化;这可以减少使用数据值时的舍入误差和饱和误差;
图10B图示了在描绘了对数数据格式LL16的水平线下方的“可允许的”数字空间,如图10A中所示,以及包括在负方向上的binade的衰减但在正方向上的binade的宽度中的硬边缘的INT8格式,如图10A中所示;
图10C-10E图示了如图10A中所示的对数数据格式LL8x、LL8y、LL8z的图形表示;值得注意的是,图10C(相对于图10A)将用于对数数据格式LL8x的编码技术隔离以提供更大的清晰度,图10D(相对于图10A)将用于对数数据格式LL8y的编码技术隔离以提供更大的清晰度,并且图10E(相对于图10A)将用于对数数据格式LL8z的编码技术隔离以提供更大的清晰度;
图11图示了根据本发明各方面的对数加法电路系统的特殊操作数或字符SD/ED/GD域;值得注意的是,用于交互情况的SD/ED/GD域的细节在三个4x4表中阐述,其中每个表包括针对每个操作数的四种情况{ZRO、NRM、INF、NAN},其中A操作数沿着水平轴并且B操作数沿着垂直轴;在此,三个表从左到右包括针对这些不同A和B操作数值的对数加法电路系统的结果/输出的符号SD、指数ED[7:0]和分数GD[0:7];
图12A图示了根据本发明一个实施例的包括对数加法-累加器电路系统和乘法器-累加器电路系统的示例性处理电路的示例性逻辑概述的示意框图,其中示例性处理电路系统可配置为实现对数加法和累加(LAC)操作以及乘法和累加(MAC)操作;值得注意的是,模式选择电路系统可以生成并发出模式或模式控制信号“MODE”以选择或启用在过滤操作/应用中采用哪种处理格式选项,其中当启用/选择LAC时,对数加法-累加器电路系统和数据路径执行或实现对数加法和累加操作,而当启用/选择MAC时,乘法器-累加器电路系统和数据路径执行或实现乘法和累加操作;通过控制、确定或启用处理的数据路径以包括对数加法-累加器电路系统或乘法器-累加器电路系统,模式选择电路系统可以响应性地控制(即,启用和/或禁用)对数加法-累加器电路系统和乘法器-累加器电路系统的可操作性以选择要处理例如与推理操作相关的图像数据所采用的电路系统;以及
图12B图示了根据本发明一个实施例的包括对数加法-累加器电路系统和乘法器-累加器电路系统的示例性处理电路的另一个示例性逻辑概述的示意框图,其中示例性处理电路系统可配置为实现对数加法和累加(LAC)操作以及乘法和累加(MAC)操作,并包括将输入数据/值和过滤器权重的数据格式从浮点数据格式转换成对数数据格式的转换电路系统;值得注意的是,模式选择电路系统可以生成并发出模式或模式控制信号“MODE”以选择或启用在过滤操作/应用中采用哪种处理格式选项,其中当启用/选择LAC时,采用数据格式转换电路系统将输入数据和过滤器权重转换成对数数据格式(FPxx到LLxx(例如,FP24到LL16,以及FP8到LL16)),并且对数加法-累加器电路系统和数据路径执行或实现对数加法和累加操作;并且其中当经由模式选择信号启用/选择MAC时,乘法器-累加器电路系统和数据路径执行或实现乘法和累加操作,并且不采用数据格式转换电路系统;通过控制、确定或启用处理的数据路径以包括对数加法-累加器电路系统或乘法器-累加器电路系统,模式选择电路系统可以响应性地控制(即,启用和/或禁用)对数加法-累加器电路系统和乘法器-累加器电路系统的可操作性以选择要处理例如与推理操作相关的输入数据/值(例如,图像数据)所采用的电路系统;值得注意的是,此外,未选择或未启用的电路系统(例如,LAC或MAC)也可以被电气禁用,以例如降低和/或最小化功耗和杂散噪声。
再次,本文描述和说明了许多发明。本发明不限于说明性示例性实施例,包括关于:(i)所说明的(一种或多种)特定浮点数据格式、(一种或多种)特定定点数据格式、特定对数数据格式、块/数据宽度或长度、数据路径宽度、带宽、值、进程和/或算法,或(ii)示例性逻辑或物理概述配置、示例性电路系统配置和/或示例性Verilog代码。实际上,虽然本发明的若干示例性实施例和特征在浮点数据格式(例如,FP16或FP24)和对数数据格式(例如,LL8或LL16)的上下文中被说明,但实施例和发明适用于其它精度(例如,FPxx,其中:8≤xx≤39,和LLxx,其中:8≤xx≤24)。为免生疑问,数据格式的精度不需要相等。而且,为简洁起见,除了在本文说明和/或描述的那些以外的精度旨在落入本发明的范围内,并且基于例如本申请对于本领域技术人员将是非常清楚的。
本发明既不限于任何单个方面或其实施例,也不限于这些方面和/或实施例的任何组合和/或置换。本发明的每个方面和/或其实施例可以单独采用或与本发明的其它方面和/或其实施例中的一个或多个组合使用。为简洁起见,那些组合和置换中的许多在本文中没有单独讨论或说明。
具体实施方式
在第一方面,本发明涉及一个或多个具有对数加法-累加器电路系统的集成(以及操作这种电路系统的方法),其中例如与推理操作相关的至少部分地基于对数数据格式来处理输入数据(例如,图像数据)。在一个实施例中,本发明包括例如串联互连的多个对数加法-累加器电路(有时也称为“对数加法-累加电路”)以流水线化对数加法和累加操作。数据格式转换电路系统可以被用于将具有第一或初始数据格式(例如,浮点数据格式或定点数据格式)的输入数据转换或变换成对数数据格式(例如,具有底数2)–在数据不是对数数据格式的情况下。在一个实施例中,在处理输入数据、结合过滤器权重的对数加法之后,数据格式转换电路系统将和数据转换或变换成不同的数据格式(例如,初始数据格式,例如浮点格式)用于后续处理。在一个实施例中,数据格式转换电路系统通过将每个输入数据/值的分数域的值从浮点数据格式重新映射为分数域的值的对数,并在对数加法操作之后将每个和数据的分数域的值从对数数据格式重新映射为浮点数据格式,来改变、变换和/或转换输入数据/值的数据格式。
例如,在操作中,对数数据格式的图像数据被添加到也是对数数据格式(例如,具有底数2)的图像过滤器权重或系数。在图像数据处理中采用的过滤器权重或系数可以以对数数据格式存储在存储器中或以与对数数据格式不同的格式存储在存储器中并在处理之前(例如,紧接在处理之前)转换或变换成对数数据格式。在对数加法之后,经处理的图像数据可以被转换或变换成另一种/不同的数据格式(例如,浮点格式或定点格式-例如,回到输入数据的数据格式-但是,值的长度可以相同或不同)用于附加/后续处理。
在另一方面,本发明涉及一个或多个包括多个执行或处理流水线的集成电路(以及操作这种电路的方法),执行或处理流水线具有对数加法-累加器电路系统,其基于对数数据格式处理数据,例如,以生成经处理的图像数据。例如,每个执行或处理流水线包括多个对数加法-累加器电路以处理数据,例如,如上面所讨论的。在一个实施例中,在操作中,图像数据(其可以是浮点数据格式)被提供给多个执行或处理流水线,每个流水线包括多个对数加法-累加器电路。在此,数据(例如,具有浮点或定点数据格式的图像数据)最初被转换或变换成对数数据格式(经由格式转换电路系统),然后数据经由多个对数加法-累加器电路系统的对数加法/加法器电路系统被加到相关联的图像过滤器权重或系数(其处于或已经被变换/转换成对数数据格式)。在一个实施例中,对数加法/加法器电路系统的输出(即,和数据)被应用或提供给格式转换电路系统,以将来自对数加法/加法器电路系统的和/输出的对数数据格式转换或变换成不同的数据格式-例如,促进处理电路系统的后续处理或与处理电路系统的后续处理一致的数据格式(例如,浮点数据格式)。在这方面,随后可以经由多个对数加法-累加器电路系统的累加器电路系统进一步处理例如浮点数据格式的对数加法-累加器电路系统的和/输出,以实现处理电路系统的累加操作。累加器电路系统累加多个相关联的经部分处理的图像数据,例如,与推理操作相关。值得注意的是,多个执行或处理流水线可以同时运作或操作。
在又一方面,本发明涉及一个或多个集成电路,其具有实现对数加法和累加操作以及乘法和累加操作的电路系统。在此,一个或多个集成电路包括执行对数加法和累加操作(例如,如本文所讨论的)的对数加法-累加器电路系统和执行乘法和累加操作(例如,如下文详细讨论的)的乘法器-累加器电路系统。集成电路中的一个或多个可以包括模式选择电路系统,以控制(即,启用和/或禁用)对数加法-累加器电路系统和乘法器-累加器电路系统的可操作性和/或操作,以选择用于处理例如与推理操作相关的图像数据的电路系统。在这方面,模式选择电路系统控制或确定数据处理以及其中采用的电路系统,包括对数加法-累加器电路系统或乘法器-累加器电路系统。
在一个实施例中,模式选择电路系统可以是一次性可编程的;在另一个实施例中,模式选择电路系统是多于一次可编程的(即,多次)。模式选择电路系统可以例如在原位(即,在集成电路的操作期间)、在制造时和/或在加电、启动、初始化、重新初始化、配置、重新配置等时或期间被编程。例如,模式选择电路系统可以从包括一个或多个数据存储电路(例如,一个或多个存储器单元格、寄存器、触发器、锁存器、存储器的块/阵列)、一个或多个输入引脚/导体、(任何类型的)查找表LUT、处理器或控制器和/或离散控制逻辑的内部电路系统或外部电路系统(即,在一个或多个集成电路外部-例如,主机计算机/处理器)接收模式选择信号。响应于此,模式选择电路系统可以采用(一个或多个)这样的信号来启用或禁用所选择的处理电路系统(视情况而定),从而(例如,在原位和/或在加电、启动、初始化、重新初始化、配置、重新配置等时或期间)实现处理的模式之一(即,对数加法和累加操作或乘法和累加操作)。
如上所述,一方面,本发明涉及一个或多个具有对数加法-累加器电路系统的集成电路(以及操作这种电路系统的方法),在一个实施例中,包括多个执行或处理流水线,每个具有多个对数加法-累加器电路系统。例如,参考图1A-1C,在本发明的一个实施例中,对数加法-累加器电路系统(“LAC”)在执行流水线中实现。在一个示例性实施例中,执行流水线中的“m”个(例如,说明性实施例中为64个处理电路)LAC处理电路执行对数加法和累加操作,由此处理电路在每r(例如,64)周期间隔(在此,周期名义上可以是1ns)中执行m x m(例如,64x64)个对数加法-累加操作。在操作中,输入像素/数据(Do-例如,64)从存储器(在这个实施例中图示为L2 SRAM)输出到格式转换电路系统,该格式转换电路系统将输入像素/数据(Do)的数据格式转换或转变成对数数据格式(例如,具有底数2),然后将输入像素/数据(Do)输出到执行流水线的电路系统中。此外,过滤器权重或系数从存储器(在这个实施例中图示为L2)输出到格式转换电路系统,该格式转换电路系统将过滤器权重的数据格式转换或转变成对数数据格式(例如,具有底数2),然后将具有对数数据格式的过滤器权重输出到存储器(在这个实施例中图示为L1 SRAM)中以供执行流水线在执行对数加法和累加操作期间访问。在一个实施例中,数据格式转换电路系统除了将过滤器权重的数据格式转换成对数数据格式之外,或者代替它(例如,在过滤器权重已经是对数数据格式的情况下),还可以将过滤器权重的长度从8位调整到16位。
在这个示例性实施例中,执行或处理流水线在相同的m(例如,64)周期间隔期间移入新的输入像素/数据(例如,64个)并移出先前的输出像素/数据(YD)。值得注意的是,每m(例如,64)周期间隔处理在特定(i,j)位置(宽度Dw/Yw和高度Dh/Yh维度的索引)的Dd/Yd(深度)列的输入和输出像素/数据。对于这个阶段的每个Dw*Dh深度列,重复m(例如,64)周期执行间隔。
在这个示例性实施例中,过滤器权重或系数,在经由格式转换电路系统转换成对数数据格式之后,在LAC电路系统发起输入数据/值的处理之前被存储或加载到存储器(例如,L1/L0 SRAM存储器)中。在这个特定示例中,输入级具有Dw=512、Dh=256和Dd=128,并且输出级具有Yw=512、Yh=256和Yd=64。注意的是,在每个64x64LAC执行步骤中,仅处理128个Dd输入平面中的64个。值得注意的是,如2019年8月20日提交的美国专利申请No.16/545,345中描述和/或说明的,本发明可以采用或实现促进乘法和累加操作的流水线化的电路系统、体系架构和集成电路的各方面。虽然'345申请描述和说明了乘法器-累加器电路系统,但该电路系统及其操作可以代替乘法电路系统,或除此之外,替代/实现对数加法电路系统,以促进级联与本发明一致的对数加法和累加操作。'345申请通过引用整体并入本文。
继续参考图1A,所示的数据处理流程可以通过简单地调整所执行的基本64x64LAC累加操作的迭代次数来适应任意图像/数据平面维度(Dw/Yw和Dh/Yh)。循环索引“I”和“j”由控制和序列化逻辑电路系统调整,以实现图像/数据平面的维度。而且,还可以调整和/或扩展数据处理流程或方法以处置比执行流水线中LAC处理电路系统的数量(例如,在这个说明性示例中为64)更大的Yd列深度。在一个实施例中,这可以通过将输出像素的深度列划分为64个块并针对这些块中的每一个重复图1A的64x64 LAC累加来实现。
实际上,图1A中所示的数据处理流程或方法还可以被扩展以处置大于执行流水线中LAC处理电路的数量(在这个说明性示例中为64)的Dd列深度。在一个实施例中,这可以通过最初执行64个输入像素Dijk的第一块到每个输出像素Yijl中的部分累加来实现。然后,在第二操作步骤,这些部分累加值Yijl被读回到执行流水线中作为初始值,用于将64个输入像素Dijk的下一个块继续累加到每个输出像素Yijl中。存储或保持连续累加值的存储器(例如,L2存储器)可以被组织、分区和/或调整尺寸以适应任何额外的读/写带宽以支持操作。
概括64x64 MAC执行流水线的适用性的这些技术也可以被使用或扩展将在本申请的后面部分中描述的附加方法的一般性。
值得注意的是,图1A图示了根据本发明某些方面的与一个或多个附加的64-LAC执行流水线相关的对数加法和累加操作的示例性实施例。在这个实施例中,64x64 Fkl过滤器权重跨64个L0 SRAM分布(64个处理电路的每一个中都有一个L0 SRAM)。在每个执行周期中,将读取64个Fkl值(绿色)并将其传递给LAC电路。在从Dijk移位链(橙色)加载之后,Dijk数据值在64个执行周期期间保持在一个处理电路中。在这个说明性实施例中,过滤器权重和输入/像素数据的数据格式在输入到流水线之前经由格式转换电路系统被转换成对数数据格式。
在从Yijl移位链加载之后,Yijl LAC值将在64个执行周期期间循环通过所有64个处理电路,并且将使用相同的移位链卸载。在此,图1A图示了由与LAC执行流水线相关联的控制和序列化逻辑执行的循环。这个循环示出Dijk输入数据/像素和Fkl过滤器值的乘积到部分和Yijl中的累加。在这个实施例中,部分和Yijl然后被累加到最终输出像素值Yijl中。
值得注意的是,参考图1A,在一个实施例中,处理级可以并行地利用附加的64-LAC执行流水线来对输入帧或数据层的其它像素/数据(i,j)并发地进行操作。在这个实施例中,可以采用附加的L2存储器端口(例如,通过跨多个物理SRAM块划分、分段或拆分L2存储器)。在此,并发LAC执行流水线操作在并行执行流水线中跨存储器(例如,L0存储器)复制权重数据(标记为Fkl)。值得注意的是,在图1A中所示的示例性实施例中,输入级具有Dw=512、Dh=256和Dd=128,并且输出级具有Yw=512、Yh=256和Yd=64。
本发明可以采用和/或实现执行或处理流水线的体系架构(以及操作这种电路系统的方法)以并发地或并行地处理数据,从而增加流水线的吞吐量-例如,如美国专利申请No.16/816,164和美国临时专利申请No.62/831,413中所述和/或说明的;'164和'413申请通过引用整体并入本文。在此,各自包括多个LAC电路的多个处理或执行流水线可以并发地处理数据以增加数据处理和整个流水线的吞吐量。
图1B以框图形式图示了根据本发明某些方面的图1A的LAC执行流水线的电路系统的示例性实施例,其中采用“对数”浮点格式,使得对数加法电路系统在执行过程期间将对数数据格式(例如,底数2)的输入数据/值以对数方式加到(对数数据格式(例如,底数2)的)过滤器权重或系数。转换电路系统将输入数据/值的分数域中的二进制值从标准浮点格式重新映射为那个二进制值的对数。
简而言之,输入图像/像素数据(D)是从存储器(例如,L2存储器组–SRAM)读取的。在一个实施例中,输入图像/像素数据是浮点数据格式(例如,FP24--用于符号、指数、分数的24位)。在此,输入图像/像素数据被获取(未加工的图像数据)或者可以已经经由过滤操作更早地生成并且随后存储在存储器中。
在一个实施例中,将输入图像/像素数据从存储器读取到格式转换电路系统,从而“即时”转换成对数数据格式(例如,LL16格式-16位值,它可以具有与FP16格式相同的位数(但会有不同的解释))。因此,对数数据格式的输入图像/像素数据由数据格式转换电路系统输出,并使用加载寄存器“D_SI”输入/移位到LAC的处理电路系统中。对数数据格式的输入数据/值也可以并行加载到相同的数据寄存器“D”中以用于执行过程。
参考图1A、1B和1F,在一个实施例中,过滤器权重或系数先前被转换成对数数据格式(例如,LL8-具有用于符号、指数、分数的8位的对数数据格式)并存储在存储器(在这个说明性实施例中的L2,它可以是SRAM)中。例如,在一个实施例中,过滤器权重或系数可以从存储器(L2)中读取,并经由格式转换电路系统“即时”转换、变换和/或修改为适当的对数数据格式(例如,将LL8格式转换成LL16格式)以用于存储在存储器中(在此为L1存储器级别-例如,SRAM)。此后,可以通过与对数加法和累加操作相关的处理电路系统来访问过滤器权重或系数。
在另一个实施例中,过滤器权重或系数以浮点或定点数据格式存储在存储器(L2)中,然后经由数据格式转换电路系统转换或变换成对数数据格式。例如,参考图1G,在一个实施例中,过滤器权重或系数从存储器(L2)读取到格式化转换电路系统,并从浮点数据格式转换或变换成对数数据格式(例如,说明性实施例中是FP8到LL16格式)。实际上,可以从存储器(L2)中读取整数数据格式(INT)或块缩放的分数数据格式(BSF)的过滤器权重或系数,然后将其转换或变换成对数数据格式(例如,从INT8到LL16;或者,例如,BSF8到LL16)。
参考图1A、1B、1E、1F、1G和1H,在操作中,在(具有对数数据格式)输入数据/值的处理的开始之前从存储器(L1存储器)读取过滤器权重并将其存储在特定LAC处理电路系统本地的/专用于特定LAC处理电路的存储器(L0,例如,SRAM)中。此后,处理流水线的电路系统从L0存储器读取过滤器权重或系数(具有对数数据格式)并实现对数加法操作。在一个实施例中,经由对数加法-累加电路系统读取过滤器权重或系数并将其加载到过滤器权重寄存器“F”中以用于处理。在此,执行过程从“D”和“F”寄存器获取数据(在这个说明性实施例中,都是LL16的数据/值),并经由对数加法电路系统(参见图1B和1H的示例性电路系统框图中的电路块“LL16 MUL”)对图像数据和过滤器权重求和/将图像数据和过滤器权重求相加。在这个实施例中,对数加法电路系统采用定点加法。
此后,和数据(LL16)被输出到格式转换电路系统,以将数据/值从对数数据格式转换成促进进一步处理或与进一步处理一致的数据格式(例如,浮点或定点数据格式)。(参见图1A、1B、1E、1F、1G和1H)。在一个实施例中,经部分处理的图像/输入数据(在这个特定实施例中,具有LL16格式的和/输出数据)经由数据格式转换电路系统被转换成浮点数据格式(例如,FP16格式)以促进经由累加电路系统的附加/后续处理。继续参考图1A、1B、1E、1F、1G和1H,在一个实施例中,经部分处理的数据(以FP16数据格式)经由“D*F”寄存器提供给累加级,并且多个经部分处理的图像数据经由累加电路系统被累加(例如,具有FP24精度),并输出到存储器(在此是“Y”寄存器)。在一个实施例中,在每个结果“Y”已经累加了64个和/积之后,累加总数被并行加载到“MAC-SO”寄存器中。这种数据可以在下一个执行序列期间被串行输出(例如,移出)。在此,临时和Yijlk LAC值将在从Yijk移位链加载之后的执行周期期间循环通过处理电路(在这个说明性实施例中为64),将使用相同的移位链卸载,然后累加到最终输出像素/数据值Yijl。(参见例如图1A)。
值得注意的是,在一个实施例中,输入数据/值(例如,图像数据)以对数数据格式存储在存储器(例如,L2)中,使得部署在其数据路径中的格式转换电路系统是不必要的。在另一个实施例中,除此之外或代替它,过滤器权重或系数以具有适当位长的对数数据格式存储在存储器(例如,L2)中,使得部署在其数据路径中的格式转换电路系统是不必要的。
而且,在一个实施例中,与过滤器权重或系数相关联的格式转换电路系统部署在存储器L1和存储器L0之间的数据路径中。可替代地,与过滤器权重或系数相关联的格式转换电路系统部署在存储器L0和对数加法-累加电路系统之间的数据路径中。
参考图1C,在这个说明性实施例中,每个64-LAC执行流水线具有其自己的L0存储器(例如,SRAM),并且每个16x64-LAC集群包括共享的L1存储器(例如,SRAM)。64-LAC执行流水线的移入和移出数据路径耦合到存储器(在这个实施例中,L2存储器(例如,SRAM)),该存储器还耦合到一个或多个附加的/其它存储器(在这个实施例中,L1/L0存储器)。片上网络(NOC)将L2存储器耦合到用于L3存储器(在这个实施例中,外部存储器(例如,DRAM))的PHY(物理接口)。NOC还耦合到PCIe PHY,而PCIe PHY进而可以耦合到外部主机计算机/处理器。值得注意的是,在一个实施例中,NOC还耦合到GPIO输入/输出PHY,这允许多个X1组件被操作-例如,在一个实施例中,并发地被操作。
图1C图示了根据本发明某些方面的逻辑瓦片的电路系统的示例性实施例,其包括多个执行流水线和资源,其中流水线的电路系统实现LAC执行流水线;值得注意的是,在说明性实施例中,逻辑瓦片包括四个集群,每个集群包括16个64-LAC执行流水线,其中示例性64-LAC执行流水线以框图形式示出以供参考。在集成电路包括多个这样的逻辑瓦片的情况下,逻辑瓦片可以互连。如上所述,本发明可以采用或实现如在2019年8月20日提交的美国专利申请No.16/545,345中描述和/或图示的电路系统、体系架构和集成电路的各方面。虽然'345申请描述并说明了乘法器-累加器电路系统,但该电路系统及其操作可以代替乘法电路系统,或除此之外,替代/实现对数加法电路系统和转换电路系统以促进与本发明一致的对数加法和累加操作的级联。在'345申请中描述和图示的其它特征,包括例如体系架构、互连网络的电路系统以及NLINX接口连接器,也可以与本文描述和说明的发明结合使用。再次,'345申请通过引用整体并入本文。
对数加法-累加器电路系统可以互连到执行或处理流水线和体系架构中,如美国临时专利申请No.63/012,111(涉及MAC)中描述和/或说明的;63/012,111申请通过引用整体并入本文。在一个实施例中,电路系统配置和控制多个单独的对数加法-累加器电路(而不是其中提到的MAC电路)或互连(串联)的对数加法-累加器电路的行/组(有时称为“集群”)以流水线化对数加法和累加操作。在一个实施例中,一个或多个流水线的互连是可配置的或可编程的,以提供不同形式的流水线化-如'111申请中所阐述的。在此,由多个对数加法-累加器电路系统的互连所提供的流水线化体系架构可以是可控的或可编程的。以这种方式,多个对数加法-累加器电路可以被配置和/或重新配置为形成或提供(一个或多个)期望的处理流水线以处理数据(例如,图像数据),如在'111申请中在MAC的上下文中所描述的。
例如,参考'111申请,在一个实施例中,控制/配置电路系统可以配置或确定本文描述的对数加法-累加器电路,或者被互连(串联)以执行对数加法和累加操作的互连的对数加法-累加器电路的行/组,和/或经由对数加法-累加器电路的连接(或互连的对数加法-累加器电路的行/组)实现的流水线化体系架构或配置。因此,在一个实施例中,在'111申请中描述和说明的控制/配置电路系统通过控制或提供采用本文所述的任何对数加法-累加器电路实施例的对数加法-累加器电路和/或互连的对数加法-累加器电路的行之间的(一个或多个)连接来配置或实现执行或处理流水线的体系架构。
参考图1C,如上所述,集成电路可以包括多个多位LAC执行流水线,它们被组织为组件的集群。在此,组件可以包括诸如总线接口(例如,PHY和/或GPIO)之类的“资源”,以促进与组件和用于存储并由组件的电路系统使用的存储器(例如,SRAM和DRAM)外部的电路系统的通信。例如,在一个实施例中,四个集群包括在组件中(有时可以标记为“X1”),其中每个集群包括多个多位MAC执行流水线(在这个说明性实施例中,16个64-LAC执行流水线)。值得注意的是,图1A和1B的单个64-LAC执行流水线在右上角示出以供参考。
继续参考图1C,这个示例性实施例中的存储器层次结构包括与每个64LAC执行流水线相关联的L0存储器资源。更大的L1 SRAM存储器资源与16x64 LAC执行流水线的每个集群相关联。这两个存储器可以存储、保留和/或保持在对数加法操作中采用的过滤器权重值Fijklm(无论是否采用对数数据格式(例如,FP数据格式))。
值得注意的是,图1C的实施例可以采用更大的L2存储器(SRAM)和甚至更大的外部L3存储器(DRAM),它们都由16x64LAC执行流水线的所有四个集群共享。这些存储器存储或保持输入图像像素Dijk和输出图像像素Yijl,以及过滤器权重值Fijklm。
如上面所提到的,在本文阐述的说明性实施例(文本和附图)中,对数加法-累加器电路系统有时被标记为“LAC”或“LAC流水线”。
如上所述,执行流水线的电路系统可以并发地处理数据以增加流水线的吞吐量。例如,在一种实施方式中,本发明可以包括多个单独的对数加法-累加器电路(在本文(包括通过引用并入的申请的文本/图)有时称为“LAC”)和多个寄存器(在一个实施例中,包括多个影子寄存器-参见例如'345申请),其促进对数加法和累加操作的流水线化,其中执行流水线的电路系统并发地处理数据以增加流水线的吞吐量。在此,本发明可以实现乘法器-累加器执行或处理流水线的并发和/或并行处理技术(以及操作这种电路系统的方法),这增加了流水线的吞吐量,如美国专利申请No.16/816,164和美国临时专利申请号No.62/831,413中描述和/和说明的。在一个实施例中,本发明的执行或处理流水线(包括对数加法-累加器电路系统)可以以环形配置或体系架构互连,以并发地或并行处理数据,如'164和'413申请中所描述的。在此,一个或多个X1组件(其可以集成/制造在单个管芯或多个管芯上)的一个或多个(或全部)集群的多个LAC执行流水线可以以环形配置或体系架构互连(其中总线互连组件)以并发地处理相关数据。再次,虽然'164和'413申请描述和说明了乘法器-累加器电路系统(MAC电路系统),但电路系统及其操作可以代替乘法电路系统,或除此之外,替代/实现对数加法电路系统以促进级联与本发明一致的对数加法和累加操作。
参考图1A、1B、1E、1F和1G,输入数据/值被输入到对数加法-累加器电路系统(或流水线电路系统)中并且,在图像/输入数据是与对数数据格式不同的数据格式的情况下,图像/输入数据经由格式转换电路系统被转换成对数数据格式。例如,在输入数据/值是浮点数据格式的情况下,格式转换电路系统在图像数据由对数加法-累加器电路系统处理之前将图像数据从浮点数据格式转换成对数数据格式。本发明可以采用任何数据格式转换电路系统或方法将图像/输入数据的数据格式转换、修改、扩展/收缩和/或调整为现在已知或以后开发的对数数据格式-所有这些都旨在落在在本发明的范围内。
参考图1D,在一个实施例中,基于MAC的处理电路系统和基于LAC的处理在许多方面是相似的。例如,各自都在从存储器(例如,L2存储器)到执行流水线的处理电路系统的数据路径中包括格式转换电路系统。在说明性实施例中,过滤器权重或系数包括FP8到FP16(基于MAC的处理电路系统)和LL8到LL16(基于LAC的处理电路系统)的数据格式转换,并且图像/输入数据包括FP24到FP16(基于MAC的处理电路系统)和FP24到LL16(基于LAC的处理电路系统)的数据格式转换。但是,基于MAC的处理电路系统与基于LAC的处理的不同之处在于,基于MAC的处理电路系统包括乘法电路系统以将过滤器权重或系数与图像/输入数据相乘(参见图1D的MAC处理电路部分中的FP16 MUL块),而基于LAC的处理电路系统包括加法电路系统以将过滤器权重或系数与图像/输入数据相加(参见图1D的LAC处理电路部分中的LL16 MUL块)。值得注意的是,在说明性实施例中,基于LAC的处理电路系统还有数据格式转换电路系统(即,LL16到FP16转换块)以将经部分处理的图像/输入数据转换成与对数数据格式不同的数据格式以促进后续数据处理。
在一个实施例中,格式转换电路系统采用查找表将图像/输入数据转变或转换成对数数据格式,其中预先计算每个输入数据/值的对数数据格式“等效”并将其存储和/或编码在存储器(例如,非易失性存储器,诸如ROM或闪存存储器)中。例如,参考图2A和2B,输入数据/值的分数域的值的浮点数据格式(例如,分别为FP16或FP24)可以使用基于查找表的电路系统/方法被转换成对数数据格式(例如,到LL16)。在此,可以预先计算浮点数据格式(在这个说明性实施例中为FP16)的输入数据/值的分数域中的值的对数数据格式(在这个示例性实施例中为LL16)等效并将其存储和/或编码在存储器中。在一个实施例中,FP16/LL16格式可以使用大约900位的查找表。
值得注意的是,符号域和指数域中的值可以使用电路系统进行转换或变换。在此,对数数据格式(LL16)与浮点数据格式(FP16)的指数域“E”的值相似之处在于,在一个实施例中,它是表示数字(即,2^(E-Ebias))的指数基数的整数值的偏置值。“E-Ebias”值是指数域的值/数字的整数的以2为底数的对数。标准浮点格式将指数域中的整数对数与分数域中的二进制分数(也称为尾数或有效位)混合以(近似)表示真数。在这个实施例中,对数浮点数据格式将指数域中的整数对数与对数数据格式的分数域中的分数对数混合以(近似)表示真数。
继续参考图2B,具有浮点数据格式(在这个说明性实施例中为FP24数据格式)的输入/图像数据被转换成对数浮点格式(在这个说明性实施例中为LL16数据格式)。但是,在这个实施例中,在查找表之前采用舍入逻辑将浮点数据格式的分数域的值从15位舍入到7位(在此,输入为FP24(对于图2A中所示的电路系统/方法,比FP16格式多8个分数位))。在此,浮点数据格式(F)的分数域的分数域的位数被舍入以与对数数据格式(G)的结果分数域的位数相关或对应。存储在存储器中的数据也可以在存储到非易失性存储器中之前被编码。
而且,在一个实施例中,查找表包括将浮点数据格式的较大分数域与“等效”对数数据格式的分数域的较小分数域相关的预计算值。在这个实施例中,舍入逻辑被省略或舍入较少的位。例如,将图像/输入数据从浮点数据格式(例如,FP24)转换成每个输入数据/值的对数数据格式(例如,LL24)“等效”的转换电路系统被预先计算并存储和/或编码在存储器中。
在另一个实施例中,数据格式转换电路系统包括将具有浮点数据格式的输入/图像数据的分数域转换成等效对数数据格式的逻辑电路系统。例如,参考图3A和3B,输入/图像值的分数域用逻辑门和多路复用器级调整。转换电路系统(这个说明性实施例中的FP16到LL16)可以使用例如大约30个逻辑门、x位加法器和x位多路复用器(例如,x=7)来实现分数域的转换。(参见图3C)。值得注意的是,图3C中所示的数据格式转换电路系统的实施例是图3A中所示的数据格式转换框图的详细实施方式–实现提供中等水平精度的数据转换的计算y=LOG2(x)的相同方法;从浮点数据格式到对数数据格式的高水平精度的数据转换(例如,32或64位精度)参见图3D。结果是正确地舍入为目标格式的转换值。
参考图3B,转换电路系统/方法还可以采用舍入逻辑(与图2B的方法相似)将输入数据/值从浮点数据格式转换或变换成对数数据格式(在这个说明性实施例中为FP24到LL16)。在此,浮点数据格式(F)的分数域的分数域的位数被舍入以与对数数据格式(G)的结果分数域的位数相关或对应。此后,转换电路系统的逻辑可以使用例如大约30个逻辑门、x位加法器和x位多路复用器(例如,x=7)来转换分数域的值(参见图3C)并实现提供中等水平的精度的数据转换的计算y=LOG2(x)的技术。图3D实现了从浮点数据格式到对数数据格式的高水平精度的数据转换(例如,32或64位精度)的技术。结果是转换值,适当地舍入成到分数域的预定位数(“G”-在这个说明性实施例中为七)的目标格式。
而且,本发明还可以采用外插技术将输入数据/值的数据格式转换成对数浮点格式。
如上所述,在一个实施例中,过滤器权重经由格式转换电路系统被转换、修改、扩展或调整为适当的对数数据格式。例如,参考图1A、1B和1D-1F,其中过滤器权重或系数先前被转换成对数数据格式(例如,LL8-具有用于符号、指数、分数的8位的对数数据格式)并存储在存储器(在这个说明性实施例中的L2,其可以是SRAM)中--在一个实施例中,过滤器权重或系数可以从存储器(L2)中被读取并经由格式转换电路系统被“即时”转换、变换和/或修改成适当的对数数据格式(例如,LL8格式到LL16格式),然后存储在一个或多个处理流水线的更本地的另外的存储器(在此为L1存储器水平-例如,SRAM)中。此后,可以通过与对数加法和累加操作相关的处理电路系统来访问过滤器权重或系数。
参考图1B、1D、1F、4A和4B,在一个示例性实施例中,过滤器权重或系数先前被转换成对数数据格式(例如,LL8-具有用于符号、指数、分数的8位的对数数据格式)并存储在存储器(在这个说明性实施例中为L2,它可以是SRAM)中。值得注意的是,图4A中所示的转换逻辑与用于转换过滤器权重的格式转换电路系统相似,如2020年1月15日提交的美国临时申请No.62/961,627中所描述和/或说明的,该临时申请在此通过引用并入本文。在一个实施例中,格式转换块近似地使LL8输入格式的指数和分数域中的位数加倍。简而言之,该技术主要通过逻辑门、y位加法器(例如,8个)和一个或多个多路复用器来实现这种方法。(例如,参见图4B(其相对于图4A的框图更详细地图示了过滤器权重/系数的转换或修改)--值得注意的是,三个结果域可能还需要使用多路复用器行替换的特殊值、操作数或字符)。图4B的电路框图提供了图4A的过滤器权重/系数转换或修改实施例的附加细节;但是,图4B中实现的过滤器权重/系数转换或修改技术与图4A的框图的技术相同。
值得注意的是,在另一个实施例中,过滤器权重或系数以浮点或定点数据格式存储在存储器(L2)中。在此,过滤器权重或系数从存储器(L2)读取到格式转换电路系统,并从浮点数据格式(例如,FP8)或定点数据格式(例如,INT8或BSF8)转换或变换成对数数据格式(例如,说明性实施例中的LL16数据格式)。如本文所述,可以以相似的方式采用图2和3中所示的电路系统/技术以将过滤器权重从浮点或定点数据格式转换或变换成对数数据格式(例如,LL16数据格式)。
参考图1A、1B和1E-1G,对数加法电路系统将输入数据/值和过滤器权重/系数求和-两者都是对数数据格式。对数加法电路系统的示例性实施例在图5A中示出,其中这个示例性实施例的电路系统对两个输入操作数(即,输入数据/值和过滤器权重/系数)采用LL16(在这个示例性实施例中)并且输出具有符号域、指数域和分数域的和(“D结果”)。在这个实施例中,符号域被XOR,并且指数域相加(以及如果舍入导致分数上溢,那么递增)。在此,(以对数形式)的两个分数域利用加法器(在说明性实施例中为7位定点加法器)相加在一起(经由2的补码)。
值得注意的是,图5B图示了图5A中所示的对数加法电路系统的更详细的示例性电路框图。图5B中所示的某些示例性逻辑块的附加细节(参见“逻辑1”、“逻辑2”和“逻辑3”)在图5C中提供。
继续参考图5B,在其它实施例中,由对数加法电路系统执行的操作(分数域GA+分数域GB;以及指数域EA+指数域EB)可以由实现其它函数(诸如往复函数、平方根函数、幂函数)的电路系统代替或伴随。在此,在操作数为对数数据格式之后,其它函数可以很容易地实现(例如,除法A操作数除以B操作可以通过执行减法(分数域GA-分数域GB)以及指数域EA减去指数域EB的减法(而不是像乘法的情况下的加法EA+EB)来实现)。
在对数加法之后,可以将经处理的数据/值转换或变换成另一种/不同的数据格式(例如,从对数数据格式转换成浮点格式或定点格式-例如,返回到输入数据的格式-但是,分数域中的值的位长可以不同)以用于附加和/或后续处理。例如,可以将对数数据格式的经处理的数据转换或变换成浮点数据格式(即,与输入数据的数据格式相同的数据格式)。部署在对数加法电路系统的输出端上的格式转换电路系统(参见例如图1A、1B和1E-1G)可以实现用于将输入数据/值从浮点数据格式转换成对数数据格式的电路系统的逆。在此,可以将与对数数据格式不同的数据格式的经部分处理的图像数据提供给累加器电路系统以实现例如与推理操作相关的图像数据处理的累加操作(参见图1A、1B和1E-1G)。
部署在对数加法电路系统的输出端处的格式转换电路系统的示例性实施例在图6A和6B中示出(LL16到FP16),其将和的数据格式从对数数据格式转换成浮点数据格式。这个示例性实施例的转换电路系统可以使用例如大约30个逻辑门、x位加法器和x位多路复用器(例如,x=7)来实现分数域的转换。(关于具有中等精度的格式转换电路系统/技术,参见图6C)。
图6C中所示的数据格式转换电路系统的实施例是图6B中所示的格式转换框图的详细实施方式。而且,图6D图示了以中等精度计算y=2^x的数据转换格式电路系统的又一个详细实施例。图6E图示了提供高水平精度的数据转换(在此,计算y=2^x)-例如,32或64位精度)的对数数据格式到浮点格式转换电路系统。如上面所提到的,本发明可以采用现在已知或以后开发的任何数据格式转换电路系统或方法,以(i)从第一数据格式到对数数据格式和/或(ii)从对数数据格式到第一数据格式或第二数据格式转换、修改、扩展/收缩和/或调整数据/值的数据格式-所有这些都旨在落入本发明的范围内。值得注意的是,本发明的转换格式电路系统/方法转换或修改数据(例如,输入数据/值(在某些实施例中)、过滤器权重/系数(在某些实施例中)、对数加法电路系统的和/结果数据输出的数据格式。
参考图7(其图示了几种浮点格式和“等效”对数数据格式的示例),三种对数数据格式对符号域S和分数域G使用符号量值数值格式。分数域G的最高权重为0.5,并且没有隐藏(隐式)位,因此它包括未归一化的值。指数域是二的补码数值格式,对其添加了127的偏置。最小和最大指数值被保留用于特殊操作数或字符(NAN、INF、DNRM、ZERO)。
在一个实施例中,与对数数据格式(例如,LL16)对应的存储器分配包括特殊操作数或字符。例如,参考图8(其图示了用于LL16数据格式的示例性数字空间),最小和最大指数E[7:0]为特殊操作数(NAN、INF、ZRO)保留。当发生未定义的操作(0*∞或∞-∞)时,生成NAN值。±INF值是指数上溢的饱和值。±ZRO值是指数下溢的饱和值。范围(EXP[7:0]=8'b00000000)示出了与浮点数据格式(FP16)的DNRM值对应的binade-除了G[1:7]=7'b0000000为ZRO保留,它的“行为”与其它binade一样。
图9A-9C图示了用于具有1位符号域(S)、3位指数域(E)和4位分数域(F)的对数数据格式(LL8y)的示例性编码技术,如与本发明的某些实施例的某些数据(例如,过滤器权重/系数)相关地实现的-例如,与查找表相关。值得注意的是,可以与其它对数数据格式(例如,LL8x和LL8z)相关的采用、提供和/或生成类似或对应的查找表。
继续参考图9A-9C,binade的域尺寸具有最大精度。其它binade增加指数域(E)中的位数并将减少分数域(G)的位数。这将降低这些其它binade的精度。GFP8y值的总位数(8位)将在整个范围内保持恒定。
具有最大精度的LL8y binade位于图9A的两个中心列(图9B中最左边的列和图9C中最右边的列)中,3位指数域(E)等于{010,011,100和101}。这些LL8y编码的值是(-1)^S*2^(E-Ek)*(G/16),其中S是符号位,E是三位域,并且G是四位分数域。注意的是,始终添加到分数域的隐藏/隐式位的值为1。
在这个范围内,指数偏置值Ek等于四。四个指数域值{010,011,100和101}将创建{2^(-2),2(-1),2^(0),2^(+1)}的缩放值。这个指数偏置值是可配置的。改变它将改变的binade值的LL8y范围的中心点。所有binade的指数偏置值必须一起改变,以便在binade范围之间不引入间隙区域或重叠区域。
图9A右上角的列图示了接下来的两个较大的binade(具有较低的精度)。4位指数域(E)等于{1100,1101}。这些LL8y编码的值是(-1)^S*2^(E-Ek)*(G/8),其中S是符号位,E是四位域,并且G是三位分数域。在这个范围内,指数偏置值Ek等于10。
接下来的两个较大的binade(具有较低的精度)具有等于{11100,11101}的5位指数域(E)。这些LL8y编码的值是(-1)^S*2^(E-Ek)*(G/4),其中S是符号位,E是五位域,并且G是两位分数域。在这个范围内,指数偏置值Ek等于24。
接下来的两个较大的binade(具有较低的精度)具有等于{111100,111101}的6位指数域(E)。这些LL8y编码的值是(-1)^S*2^(E-Ek)*(G/2),其中S是符号位,E是六位域,F是一位分数域。在这个范围内,指数偏差值Ek等于54。
接下来的三个较大的binade(具有较低的精度)具有等于{1111100,1111101,1111110}的七位指数域(E)。这些LL8y编码的值是(-1)^S*2^(E-Ek)*(1),其中S是符号位,E是七位域,G是零位分数域。在这个范围内,指数偏置值Ek等于116。
图9A左下方的列图示了接下来的两个较小的binade(具有较低的精度)。4位指数域(E)等于{0010,0011}。这些LL8y编码的值是(-1)^S*2^(E-Ek)*(G/8),其中S是符号位,E是四位域,G是三位分数域。在这个范围内,指数偏置值Ek等于6。
接下来的两个较小的binade(具有较低的精度)具有等于{00010,00011}的5位指数域(E)。这些LL8y编码的值是(-1)^S*2^(E-Ek)*(G/4),其中S是符号位,E是五位域,G是两位分数域。在这个范围内,指数偏置值Ek等于8。
接下来的两个较小的binade(具有较低的精度)具有等于{000010,000011}的6位指数域(E)。这些LL8y编码的值是(-1)^S*2^(E-Ek)*(G/2),其中S是符号位,E是六位域,G是一位分数域。在这个范围内,指数偏置值Ek等于10。
接下来的三个较小的binade(具有较低的精度)具有等于{0000001,0000010,0000011}的七位指数域(E)。这些LL8y编码的值是(-1)^S*2^(E-Ek)*(1),其中S是符号位,E是七位域,并且G是零位分数域。在这个范围内,指数偏置值Ek等于12。这完成了用于数值值的252个编码的总结。
有四个附加的编码(在总共256个中)分配给特殊值。首先,值8'b00000000表示零(ZRO)。这是具有指数下溢(EUNFL)的正或负结果的饱和值。值8'b10000000表示“非数字”(NAN)。这是未定义操作的结果。值8'b01111111表示正无穷大(+INF)。这是具有指数上溢(EOVFL)的正结果的饱和值。值8'b11111111表示负无穷大(-INF)。这是具有指数上溢(EOVFL)的负结果的饱和值。
图10A图示了用于具有1位符号域(S)、3位指数域(E)和4位分数域(F)的对数数据格式(LL8y)的另一种示例性编码技术,如结合与本发明的某些实施例的某些数据(例如,过滤器权重/系数)实现的-例如,与查找表相关。在这方面,图10A图示了根据本发明的一个实施例的替代浮点格式(LL8y)的示例,其中范围和精度可以动态配置;这个实施例可以更好地拟合它所表示的数据值的集合。
参考图10A(以及针对特定格式的图10B-10E),在描绘对数数据格式LL16的水平线下方的“可允许的”数字空间关于LL8x、LL8y和LL8z的对数数据格式以图形方式表示。(也参见图10B)。LL8y格式的范围和精度在图10A和10D中示出。在中心的四个binade(-2到+2)中,它具有与前面讨论的FP8格式相同的精度(4位)。与FP8不同,LL8y格式的精度对称地衰减。
在从-11到-8的三个binade和从+8到+10的两个binade中存在零位精度(单个值)。
LL8y的这种对称衰减与在图像过滤应用的数据权重值分布中看到的衰减相似。这意味着数据集合的大多数数据值将落在具有最多位精度的binade中。
参考图10A和10B,相比之下,INT8格式具有在负方向上的binade的衰减,但在正方向上的binade的宽度中的硬边缘。因此,较小的数据值(在负方向上)如果太靠近范围的边缘则会看到“软”饱和。
对于数据集合的缩放,这会呈现采用整数格式(例如,INT8)的困难。例如,如果数据/值的分布位于正方向上binade的宽度的硬边缘或移动得太“靠近”其以利用更多位精度,那么一些数据的较大值将受到“硬”饱和影响。值得注意的是,LL8y格式在范围的两个边缘处都提供“软”饱和。
在一个实施例中,转换电路系统可以例如在原位在格式(例如,LL8x、LL8y和LL8z)之间动态可配置。在这方面,可以动态地配置在LL8y格式和LL16格式(或任何更大的LL格式)之间转换数据值的电路系统(硬件逻辑)以支持一定范围的LL格式。这允许调整范围和精度以匹配数据集合的分布特点。本文还描述了两种其它格式(LL8x和LL8z)并且它们可以被用于描述转换电路系统的动态可配置性。
LL8x格式在图10A和10C中图示。在中心两个binade(-1到+1)中,它比前面讨论的LL8y格式多一位精度(5位)。与LL8y一样,LL8x格式的精度对称衰减。从-5到-6的binade和+5的binade中有零位精度(单个值)。
LL8z格式在图10A和10E中图示。在中心八个binade(-4到+4)中,它比前面讨论的LL8y格式少一位精度(3位)。与LL8y一样,LL8x格式的精度对称衰减。在从-19到-12的binade和从+12到+18的binade中有零位精度(单个值)。
三种对数数据格式(LL8x、LL8y、LL8z)的集合的关键好处是它们提供了多种格式替代方案,用于提供不同的范围和/或精度。这减少了当使用数据值时的舍入误差和饱和误差。
如果针对特定格式调整指数偏置值(Ek),那么可以向左或向右移动精度分布以匹配数据集合分布(虽然这未在图10A中示出,但在一个实施例中,它可以被结合、实现或采用)。
而且,可以组合其中两种格式,使得精度分布关于中心点不对称(虽然这未在图10A中示出,但在一个实施例中,它可以被结合、实现或采用)。
在一个实施例中,由这三种对数数据格式使用的编码方法被扩展到具有更多位的浮点数据格式,例如(LL16x/LL16Py/LLP16z)。值得注意的是,虽然这未在图10A中示出,但在一个实施例中,它可以被结合、实现或采用。
在某些情况下,对数加法电路系统的输出可以被解释为寻址特殊操作数或字符。参考图11,针对交互情况的SD/ED/GD域的细节在三个4x4表中列出,其中每个表包括针对每个操作数的四种情况{ZRO,NRM,INF,NAN},其中A操作数沿着水平轴并且B操作数沿着垂直轴。这三个表从左到右包括针对这些不同A和B操作数值的结果的符号SD、指数ED[7:0]和分数GD[0:7]。
结果的默认符号是Sw=Sa XOR Sb。如果任一操作数是NAN,那么不会出现这种情况;在这些情况下,结果的符号是NAN操作数的符号。在两个操作数都是NAN的情况下,结果的符号是1'b0。
当A和B操作数是NRM值时,结果的默认指数是(Ea[7:0]+Eb[7:0]-8'h7F+INC);这是操作数指数的和,减去指数偏移量,并且如果乘积分数≥2.0,那么加上INC=1。当8'h01≤(Ea[7:0]+Eb[7:0]-8'h7F+Mov)≤8'hFE时出现此默认情况,如NRM中标有“N”的中心方框中所示。
默认分数/尾数是和Gq[0:7],舍入到输出格式的适当位数。如果8'h00≥(Ea[7:0]+Eb[7:0]-8'h7F+Mov),那么发生EUNFL并且结果是ZERO,其中指数是8'h00并且分数是23'h000000。如果Ea[7:0]+Eb[7:0]-8'h7F+Mov)≥8'hFF,那么发生EOVFL并且结果是INF,其中指数是8'hFF并且分数是23'h000000。
如果A和B操作数都是ZERO,或者一个是ZERO且一个是NRM,那么结果为ZERO,其中指数是8'h00并且分数是15'h0000。如果A和B操作数都是INF,或者一个是INF且一个是NRM,那么结果是INF,其中指数是8'hFF并且分数是7'h00。如果A和B操作数之一是ZERO且一个是INF,那么结果是NAN,其中指数是8'hFF并且分数是7h7F。如果A和B操作数之一是NAN,另一个是{ZRO,NRM,INF},那么结果是NAN,其中指数是8'hFF并且分数与NAN操作数相同。如果A和B操作数都是NAN,那么结果是NAN,其中指数是8'hFF并且分数是7'h7F。
本文描述和说明了许多发明。虽然已经描述和说明了本发明的某些实施例、特征、属性和优点,但是应当理解的是,本发明的许多其它以及不同和/或相似的实施例、特征、属性和优点从描述和说明是显而易见的。因此,本文描述和说明的本发明的实施例、特征、属性和优点不是详尽的,并且应当理解的是,本发明的此类其它、相似的以及不同的实施例、特征、属性和优点都在本发明的范围内。
实际上,本发明既不限于任何单个方面或其实施例,也不限于这些方面和/或实施例的任何组合和/或置换。而且,本发明的每个方面和/或其实施例可以单独使用或与本发明的其它方面和/或其实施例中的一个或多个组合使用。
例如,在本发明的一个实施例中,一个或多个集成电路包括实现对数加法和累加(LAC)操作以及乘法和累加(MAC)操作的电路系统。例如,参考图12A和12B,在一个实施例中,用于浮点数据格式和对数数据格式的处理/操作的电路系统被包括在处理电路/组件中或在其中实现。模式或模式控制信号“MODE”由模式控制电路系统输出以选择在处理或过滤操作/应用中采用哪种格式选项。在此,对数加法-累加器电路系统和数据路径在被启用时执行对数加法和累加操作(例如,如本文所讨论的)并且乘法器-累加器电路系统和数据路径在被启用时执行乘法和累加操作。模式选择电路系统控制(即,启用和/或禁用)对数加法-累加器电路系统和乘法器-累加器电路系统的可操作性,以选择用于处理例如与推理操作相关的图像数据的电路系统。在这方面,模式选择电路系统控制或确定处理的数据路径以包括对数加法-累加器电路系统或乘法器-累加器电路系统。
在一个实施例中,模式选择电路系统可以是一次性可编程的;在另一个实施例中,模式选择电路系统是多于一次可编程的(即,多次)。模式选择电路系统可以例如在原位(即,在集成电路的操作期间)、在制造时和/或在加电、启动、初始化、重新初始化、配置、重新配置等时或在加电、启动、初始化、重新初始化、配置、重新配置等期间进行编程。例如,模式选择电路系统可以从包括一个或多个数据存储电路(例如,一个或多个存储器单元、寄存器、触发器、锁存器、存储器块/阵列)、一个或多个输入引脚/导体、(任何类型的)查找表LUT、处理器或控制器和/或离散控制逻辑的内部或外部电路系统(即,在一个或多个集成电路外部-例如,主机计算机/处理器)接收模式选择信号。响应于此,模式选择电路系统可以使用这样的(一个或多个)信号来启用或禁用所选择的处理电路(视情况而定),从而(例如,在原位和/或在加电、启动、初始化、重新初始化、配置、重新配置等时或在加电、启动、初始化、重新初始化、配置、重新配置等期间)实现处理模式之一(即,对数加法和累加操作或乘法和累加操作)。
此外,本发明不限于(i)所说明的(一种或多种)特定的对数、定点和/或浮点格式、操作(例如,加法、减法等)、块/数据宽度、数据路径宽度、带宽、值、过程和/或算法,以及(ii)示例性逻辑或物理概述配置、示例性模块/电路系统配置和/或示例性Verilog代码。实际上,本发明可以采用其它数学操作(除了对数加法之外或代替对数加法),其中对数“乘法”块被扩展为执行除法(两个操作数的E/G相减)和/或对数“乘法”块扩展为执行平方根(将操作数的E/G右移一位)。
值得注意的是,尤其是乘法器-累加器执行流水线的电路系统、结构、体系架构、功能和操作的细节在以下文献中进行了描述和/或说明:(1)美国非临时专利申请No.16/545,345,(2)美国非临时专利申请No.16/816,164,(3)美国临时专利申请No.62/831,413;(4)美国非临时专利申请No.16/900,319,(5)美国临时专利申请No.62/865,113,(6)美国非临时专利申请No.17/019,212,(7)美国临时专利申请No.62/900,044,(8)美国非临时专利申请No.17/031,631,和(9)美国临时专利申请No.62/909,293。这九(9)个专利申请通过引用整体并入本文。实际上,如上面所提到的,本发明可以采用多个执行或处理流水线(实现LAC电路系统代替MAC电路系统)来并发地处理数据以增加数据处理的吞吐量-例如,如美国非临时申请No.16/816,164中描述和/或说明的。
而且,除此之外或作为其替代,本发明可以采用增强过滤器权重或系数的动态范围的电路系统、功能和操作,如美国专利申请No.17/074,670和美国临时专利申请No.62/930,601中描述和/或说明的。即,本发明可以使用电路系统和技术来增强'670和'601申请的过滤器权重或系数的动态范围。'670和'601申请通过引用整体并入。
虽然已经在某些特定方面描述了本发明,但是对于本领域的技术人员来说,许多附加的修改和变化是显而易见的。因此应该理解的是,在不脱离本发明的范围和精神的情况下,可以以不同于具体描述的方式实践本发明。因此,本发明的实施例在所有方面都应当被认为是说明性的/示例性的而不是限制性的。例如,虽然输入数据/值的数据/值、过滤器权重和输出数据/值转换电路系统在说明性示例性实施例中描述了某个位宽,但这样的(一个或多个)位宽是示例性的。为简洁起见,那些其它精度将不单独说明,但是对于本领域技术人员来说基于例如本申请是非常清楚的。因此,本发明限于(i)所示的(一种或多种)特定的定点数据格式(例如,整数格式(INTxx)和块缩放的分数格式(例如,BSFxx)、块/数据宽度(FPxx、LLxx等)、数据路径宽度、带宽、值、过程和/或算法,也不限于(ii)特定电路系统和/或整体流水线的示例性逻辑或物理概述配置,和/或示例性模块/电路系统配置,和/或整体流水线。实际上,本发明限于(i)所示的(一种或多种)特定的浮点格式、(一种或多种)特定的定点格式、操作(例如,加法、减法等)、块/数据宽度或长度、数据路径宽度、带宽、值、过程和/或算法,也不限于(ii)示例性逻辑或物理概述配置,和/或示例性模块/电路系统配置。
而且,虽然某些示例性实施例的数据格式转换电路系统确定/识别该组过滤器权重的关联过滤器权重的最大指数,但是数据格式转换电路系统可以比较关联过滤器权重的指数以确定最小指数。在这个替代实施例中,过滤器权重的分数域的移动可以被修改(例如,对于具有较大指数的过滤器权重,左移)以适应公共指数域,该公共指数域是这组过滤器权重的关联过滤器权重的最小指数。
值得注意的是,本文公开的各种电路、电路系统和技术可以使用计算机辅助设计工具来描述,并且可以根据它们的行为、寄存器转移、逻辑组件、晶体管、布局几何形状和/或其它特性来表达(或表示)为在各种计算机可读介质中实施的数据和/或指令。可以在其中实现此类电路、电路系统、布局和布线表达的文件和其它对象的格式包括但不限于支持行为语言(诸如C、Verilog和HLDL)的格式、支持寄存器级描述语言(如RTL)的格式,以及支持几何描述语言(诸如GDSII、GDSIII、GDSIV、CIF、MEBES)的格式,以及现在已知或以后开发的任何其它格式和/或语言。可以在其中实施这种格式化数据和/或指令的计算机可读介质包括但不限于各种形式的非易失性存储介质(例如,光、磁或半导体存储介质)和载波,其可以被用于通过无线、光学或有线信令介质或其任何组合传送此类格式化数据和/或指令。通过载波传送此类格式化数据和/或指令的示例包括但不限于经由一种或多种数据传送协议(例如,HTTP、FTP、SMTP等)在互联网和/或其它计算机网络上传送(上传、下载、电子邮件等)。
实际上,当经由一种或多种计算机可读介质在计算机系统内被接收时,上述电路的此类数据和/或基于指令的表达可以由计算机系统内的处理实体(例如,一个或多个处理器)结合一个或多个其它计算机程序的执行来处理,所述一个或多个其它计算机程序包括但不限于网列表生成程序、布局和路由程序等,以生成此类电路的物理表现的表示或图像。此后,这种表示或图像可以被用在设备制造中,例如,通过使得能够生成被用于在设备制造过程中形成电路的各种组件的一个或多个掩模。
而且,本文公开的各种电路、电路系统和技术可以经由使用计算机辅助设计和/或测试工具的模拟来表示。电路、电路系统、布局和布线和/或由此实现的技术的模拟可以由计算机系统实现,其中此类电路、电路系统、布局和由此实现的技术的特点和操作经由计算机系统被模仿、复制和/或预测。本发明还涉及由此实现的发明性电路、电路系统和/或技术的此类模拟,并且其因此旨在落入本发明的范围内。与此类模拟和/或测试工具对应的计算机可读介质也旨在落入本发明的范围内。
值得注意的是,本文对“一个实施例”或“实施例”(等)的引用意味着结合该实施例描述的特定特征、结构或特点可以被包括、采用和/或结合在本发明的一个、一些或所有实施例中。说明书中短语“在一个实施例中”或“在另一个实施例中”(等)的使用或出现并不指相同的实施例,单独的或替代的实施例也不一定与一个或多个其它实施例相互排斥,也不限于单一的排他性实施例。这同样适用于术语“实施方式”。本发明既不限于任何单个方面或其实施例,也不限于这些方面和/或实施例的任何组合和/或置换。而且,本发明的每个方面和/或其实施例可以单独使用或与本发明的其它方面和/或其实施例中的一个或多个组合使用。为简洁起见,本文未单独讨论和/或说明某些置换和组合。
另外,本文描述为“示例性”的实施例或实施方式不应被解释为例如与其它实施例或实施方式相比是理想的、优选或有利的;相反,它旨在传达或指示一个或多个实施例是(一个或多个)示例实施例。
虽然已经在某些特定方面描述了本发明,但是对于本领域技术人员来说,许多附加的修改和变化将是显而易见的。因此应该理解的是,在不脱离本发明的范围和精神的情况下,可以以不同于具体描述的方式实施本发明。因此,本发明的实施例在所有方面都应当被认为是说明性的/示例性的而不是限制性的。
术语“包括”、“包含”和“具有”或其任何其它变体旨在覆盖非排他性包含,使得包括一系列零件或元素的过程、方法、电路、制品或者装置不仅包括那些零件或元素,而且还可以包括未明确列出或此类过程、方法、制品或装置固有的其它零件或元素。另外,本文中使用的术语“连接”、“连接的”应当广义地解释为包括直接或间接(例如,经由一个或多个导体和/或中间设备/元件(有源或无源)和/或经由电感或电容耦合)),除非另有说明(例如,使用术语“直接连接”或“直接连接的”)。
本文中的术语“一个”和“一种”不表示数量的限制,而是表示至少一个所引用项的存在。另外,本文中的术语“第一”、“第二”等并不表示次序、数量或重要性,而是用于将一个元件/电路/特征与另一个区分开来。
此外,术语“集成电路”尤其是指任何集成电路,包括例如通用或非特定集成电路、处理器、控制器、状态机、门阵列、SoC、PGA和/或FPGA。术语“集成电路”也指任何集成电路(例如,处理器、控制器、状态机和SoC)-包括嵌入式处理器、控制器、状态机、PGA和/或FPGA。
另外,术语“电路系统”除其它外尤其是指电路(无论是集成的还是其它的)、一组此类电路、一个或多个处理器、一个或多个状态机、实现软件的一个或多个处理器,一个或多个门阵列、可编程门阵列和/或现场可编程门阵列,或一个或多个电路系统(无论是否集成的还是其它的)、一个或多个状态机、一个或多个处理器、实现软件的一个或多个处理器、一个或多个门阵列、可编程门阵列和/或现场可编程门阵列的组合。术语“数据”除其它外尤其是指模拟或数字形式的(一个或多个)电流或电压信号(复数或单数),其可以是单个位(等)或多个位(等)。
权利要求的限制不是以部件加功能或步骤加功能的形式写的。任何限制都不应当根据35 USC§112,
Figure BDA0003574743620000481
或§112(f)进行解释,除非此类权利要求限制明确使用短语“用于…的部件”或“用于…步骤”后跟功能的声明,并且没有任何特定的结构。

Claims (21)

1.一种集成电路,包括:
多个对数加法-累加器电路,用于在操作中执行对数加法和累加操作,其中每个对数加法-累加器电路包括:
对数加法电路,用于将具有对数数据格式的第一输入数据和具有对数数据格式的过滤器权重数据相加,并生成和输出具有对数数据格式的第一和数据,以及
累加器,耦合到相关联的对数加法-累加器电路的对数加法电路,以将第二输入数据与由相关联的对数加法电路输出的第一和数据相加以生成第一累加数据;以及
其中所述多个对数加法-累加器电路串联连接。
2.如权利要求1所述的集成电路,还包括:
第一数据格式转换电路系统,耦合到所述多个对数加法-累加器电路中的每个对数加法电路的每个对数加法电路的输出端,以将每个对数加法电路的第一和数据的数据格式转换成第一浮点数据格式。
3.如权利要求2所述的集成电路,其中:
第二输入数据包括第二浮点数据格式,以及
所述多个对数加法-累加器电路中的每个对数加法-累加器电路的累加器将具有第二浮点数据格式的第二输入数据与具有第一浮点数据格式的第一和数据相加,以生成第一累加数据。
4.如权利要求2所述的集成电路,其中:
所述多个对数加法-累加器电路中的每个对数加法-累加器电路的累加器以浮点数据格式将(i)从相关联的对数加法电路输出的第一和数据与(ii)第二输入数据相加。
5.如权利要求2所述的集成电路,还包括:
第二数据格式转换电路系统,耦合到所述多个对数加法-累加器电路中的每个对数加法-累加器电路的输入端,以将第一输入数据转换成对数数据格式。
6.如权利要求5所述的集成电路,其中:
第二数据格式转换电路系统包括查找表,以将具有第一数据格式的初始第一输入数据与具有对数数据格式的第一输入数据相关联。
7.如权利要求5所述的集成电路,其中:
第二数据格式转换电路系统包括逻辑电路系统,以将具有第一数据格式的初始输入数据转换成具有对数数据格式的第一输入数据。
8.如权利要求2所述的集成电路,还包括:
第三数据格式转换电路系统,耦合到第一存储器,以从第一存储器接收过滤器权重并将过滤器权重数据转换成对数数据格式;以及
第二存储器,耦合第三转换电路系统,以存储具有对数数据格式的过滤器权重数据,并响应性地将过滤器权重数据输出到相关联的对数加法-累加器电路。
9.如权利要求1所述的集成电路,还包括:
第一数据格式转换电路系统,耦合到所述多个对数加法-累加器电路中的每个对数加法电路的每个对数加法电路的输出端,以将每个对数加法电路的第一和数据的数据格式转换成第一浮点数据格式或定点数据格式;以及
第二数据格式转换电路系统,耦合在存储器与所述多个对数加法-累加器电路中的每个对数加法-累加器电路的输入端之间,以将第一输入数据转换成对数数据格式并将第一输入数据输入到相关联的对数加法-累加器电路的对数加法电路。
10.如权利要求1所述的集成电路,还包括:
第一数据格式转换电路系统,耦合到所述多个对数加法-累加器电路中的每个对数加法电路的每个对数加法电路的输出端,以将每个对数加法电路的第一和数据的数据格式转换成第一浮点数据格式或定点数据格式;
第二数据格式转换电路系统,耦合在第一存储器与所述多个对数加法-累加器电路中的每个对数加法-累加器电路的输入端之间,以将第一输入数据转换成对数数据格式并将第一输入数据输入到相关联的对数加法-累加器电路的对数加法电路;以及
第三数据格式转换电路系统,耦合在第二存储器与所述多个对数加法-累加器电路中的每个对数加法-累加器电路的输入端之间,以将过滤器权重数据转换成对数数据格式。
11.一种集成电路,包括:
对数加法-累加执行流水线,耦合到第一存储器和第二存储器,包括多个对数加法-累加器电路以在操作中执行对数加法和累加操作,其中每个对数加法-累加器电路包括:
对数加法电路,耦合到第一存储器,以将具有对数数据格式的第一输入数据和具有对数数据格式的过滤器权重数据相加,并生成和输出具有对数数据格式的第一和数据,以及
累加器,耦合到相关联的对数加法-累加器电路的对数加法电路,以将第二输入数据与由相关联的对数加法电路输出的第一和数据相加以生成第一累加数据;以及
其中,所述对数加法-累加器执行流水线的所述多个对数加法-累加器电路在操作中执行多个对数加法和累加操作,并且对数加法-累加器执行流水线将经处理的数据输出到第二存储器。
12.如权利要求11所述的集成电路,其中:
所述对数加法-累加器执行流水线的所述多个对数加法-累加器电路串联连接以形成环形体系架构,并且在操作中执行多个级联的对数加法和累加操作。
13.如权利要求11所述的集成电路,还包括:
第一数据格式转换电路系统,耦合到所述多个对数加法-累加器电路中的每个对数加法电路的每个对数加法电路的输出端,以将每个对数加法电路的第一和数据的数据格式转换成第一浮点数据格式。
14.如权利要求13所述的集成电路,其中:
第二输入数据包括第二浮点数据格式;以及
所述多个对数加法-累加器电路中的每个对数加法-累加器电路的累加器将具有第二浮点数据格式的第二输入数据与具有第一浮点数据格式的第一和数据相加以生成第一累加数据。
15.如权利要求13所述的集成电路,其中:
所述多个对数加法-累加器电路中的每个对数加法-累加器电路的累加器以浮点数据格式将(i)从相关联的对数加法电路输出的第一和数据与(ii)第二输入数据相加。
16.一种执行多个对数加法和累加操作的方法,该方法包括:
接收具有对数数据格式的多个过滤器权重;
将具有第一数据格式的多个第一输入数据转换成具有对数数据格式的多个第一输入数据,其中第一数据格式与对数数据格式不同;
以对数方式将具有对数数据格式的每个第一输入数据加到具有对数数据格式的相关联的过滤器权重以生成第一和数据;
将每个第一和数据转换成具有浮点数据格式的第一和数据;以及
以浮点数据格式将具有浮点数据格式的每个第一和数据加到具有浮点数据格式的相关联的第二输入数据,以生成具有浮点数据格式的第一累加数据。
17.如权利要求16所述的方法,其中:
第一数据格式包括具有第一精度的浮点数据格式;以及
第一累加数据包括具有第二精度的浮点数据格式。
18.如权利要求16所述的方法,其中:
具有浮点数据格式的第一和数据包括与第一累加数据不同的精度。
19.如权利要求16所述的方法,还包括:
将所述多个过滤器权重中的每个过滤器权重从具有第一精度的对数数据格式转换成具有第二精度的对数数据格式。
20.如权利要求16所述的方法,还包括:
将所述多个过滤器权重中的每个过滤器权重从第二数据格式转换成对数数据格式,其中第二数据格式与对数数据格式不同。
21.如权利要求20所述的方法,其中:
第二数据格式是浮点数据格式。
CN202080069215.2A 2019-12-04 2020-11-21 对数加法-累加器电路系统、包括其的处理流水线以及操作方法 Pending CN114730255A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962943336P 2019-12-04 2019-12-04
US62/943,336 2019-12-04
US17/092,175 2020-11-06
US17/092,175 US11693625B2 (en) 2019-12-04 2020-11-06 Logarithmic addition-accumulator circuitry, processing pipeline including same, and methods of operation
PCT/US2020/061689 WO2021113097A1 (en) 2019-12-04 2020-11-21 Logarithmic addition-accumulator circuitry, processing pipeline including same, and methods of operation

Publications (1)

Publication Number Publication Date
CN114730255A true CN114730255A (zh) 2022-07-08

Family

ID=76209108

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080069215.2A Pending CN114730255A (zh) 2019-12-04 2020-11-21 对数加法-累加器电路系统、包括其的处理流水线以及操作方法

Country Status (4)

Country Link
US (1) US11693625B2 (zh)
EP (1) EP4070184A4 (zh)
CN (1) CN114730255A (zh)
WO (1) WO2021113097A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11475283B2 (en) * 2019-10-24 2022-10-18 Apple Inc. Multi dimensional convolution in neural network processor
US20240061650A1 (en) * 2022-08-18 2024-02-22 Apple Inc. Floating-Point Execution Circuitry for Subset of Binary Logarithm Input Range

Family Cites Families (48)

* 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
US5337266A (en) 1987-12-21 1994-08-09 Arnold Mark G Method and apparatus for fast logarithmic addition and subtraction
EP0892344B1 (en) 1989-05-04 2002-08-21 Texas Instruments Incorporated Data processing device with context switching capability
US5197024A (en) 1989-06-14 1993-03-23 Pickett Lester C Method and apparatus for exponential/logarithmic computation
US5771391A (en) 1995-08-28 1998-06-23 Motorola Inc. Computer processor having a pipelined architecture and method of using same
JP3524250B2 (ja) 1995-11-27 2004-05-10 キヤノン株式会社 デジタル画像処理プロセッサ
US5933360A (en) * 1996-09-18 1999-08-03 Texas Instruments Incorporated Method and apparatus for signal compression and processing using logarithmic differential compression
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
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
US7689639B2 (en) 2004-06-04 2010-03-30 Telefonaktiebolaget Lm Ericsson (Publ) Complex logarithmic ALU
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
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
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
CN103543984B (zh) 2012-07-11 2016-08-10 世意法(北京)半导体研发有限责任公司 用于特殊相关应用的修改型平衡吞吐量数据路径架构
US9973367B2 (en) 2014-02-11 2018-05-15 University Of Washington Apparatuses, systems, and methods for communicating using MIMO and spread spectrum coding in backscatter of ambient signals
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
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
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
US10942706B2 (en) 2017-05-05 2021-03-09 Intel Corporation Implementation of floating-point trigonometric functions in an integrated circuit device
US11010131B2 (en) 2017-09-14 2021-05-18 Intel Corporation Floating-point adder circuitry with subnormal support
US10977001B2 (en) 2018-02-05 2021-04-13 Mediatek Inc. Asymmetric quantization of multiple-and-accumulate operations in deep learning processing
GB2577132B (en) * 2018-09-17 2021-05-26 Apical Ltd Arithmetic logic unit, data processing system, method and module
US11243743B2 (en) * 2018-10-18 2022-02-08 Facebook, Inc. Optimization of neural networks using hardware calculation efficiency and adjustment factors
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
US11656872B2 (en) 2019-12-13 2023-05-23 Intel Corporation Systems and methods for loading weights into a tensor processing block

Also Published As

Publication number Publication date
WO2021113097A1 (en) 2021-06-10
US20210173617A1 (en) 2021-06-10
EP4070184A4 (en) 2024-01-03
US11693625B2 (en) 2023-07-04
EP4070184A1 (en) 2022-10-12

Similar Documents

Publication Publication Date Title
JP7348971B2 (ja) 畳み込みニューラルネットワークハードウエア構成
TWI650707B (zh) 處理器,其運作方法與電腦程式產品
CN111262588B (zh) 数据压缩和存储
US8463835B1 (en) Circuit for and method of providing a floating-point adder
CN114402289A (zh) 多模式运算电路
CN110955406A (zh) 浮点动态范围扩展
CN110007896B (zh) 具有时钟选通的用于执行矩阵乘法的硬件单元
Ma et al. Algorithm-hardware co-design of single shot detector for fast object detection on FPGAs
CN110955861A (zh) 用于高带宽、低延迟机器学习的电路
US10678509B1 (en) Software-driven design optimization for mapping between floating-point and fixed-point multiply accumulators
CN114730255A (zh) 对数加法-累加器电路系统、包括其的处理流水线以及操作方法
GB2555459A (en) Division synthesis
GB2554167A (en) Approximating functions
CN114270305A (zh) 具有转换电路系统的mac处理流水线和操作其的方法
US20220244917A1 (en) MAC Processing Pipeline having Activation Circuitry, and Methods of Operating Same
GB2549928A (en) Sorting numbers in hardware
CN107632816B (zh) 通过在设计编制期间替换用于执行除法的部件来改进系统操作的方法和设备
US11960856B1 (en) Multiplier-accumulator processing pipeline using filter weights having gaussian floating point data format
CN111124356A (zh) 从n个m位数的集合中选择第i大或第p小的数
US20230367554A1 (en) Apparatus, a method of operating modulo k calculation circuitry and a non-transitory computer-readable medium to store computer-readable code for fabrication of an apparatus
Sahu et al. Development of floating-point mac engine for 2-d convolution of image
Cho et al. Structured digital design
Revathy et al. Design and Analysis of Area & Energy Efficient Approximate Multiplier
Stine et al. Compressed symmetric tables for accurate function approximation of reciprocals
Cadenas et al. A n-bit reconfigurable scalar quantiser

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