mac处理流水线、控制和配置其的电路系统及操作其的方法
1.相关申请
2.该非临时申请要求于2020年4月18日提交的题为“mac processing pipelines,circuitry to control and configure same,and methods of operating same”的美国临时申请no.63/012,111的优先权和利益。特此通过引用将'111临时申请整体并入本文。
3.介绍
4.本文描述和图示了许多发明。本发明既不限于任何单个方面或其实施例,也不限于这些方面和/或实施例的任何组合和/或置换。重要的是,本发明的每个方面和/或其实施例可以单独使用或者也可以与本发明的一个或多个其它方面和/或其实施例组合使用。其所有组合及置换均旨在落入本发明的范围内。
5.在一个方面,本发明涉及配置和控制包括多个乘法器-累加器执行或处理流水线的乘法器-累加器电路系统的电路系统(以及操作和配置这种电路系统的方法)。本发明的这一方面的电路系统配置(例如,一次性或多于一次性可编程的)并控制乘法器-累加器电路系统以实现一个或多个执行或处理流水线来处理数据,例如并行或同时处理数据。在一个实施例中,电路系统配置和控制多个分开的乘法器-累加器电路(“乘法器-累加器电路”,本文有时称为“mac”或“mac电路”,或以复数形式“mac”或“mac电路”)或互连(串联)的乘法器-累加器电路的行/组,以流水线化乘法和累加运算。多个乘法器-累加器电路还可以包括多个寄存器(包括多个阴影寄存器),其中,电路系统还控制这些寄存器以实现或促进由乘法器-累加器电路进行的乘法和累加运算的流水线化,以增加与处理相关数据(例如,图像数据)有关的乘法器-累加器执行或处理流水线的吞吐量。
6.值得注意的是,本发明在一个实施例中采用在美国专利申请no.16/545,345和美国临时专利申请no.62/725,306的图1a-图1c的示例性实施例中及其相关联的文本中描述和图示的一个或多个乘法器-累加器电路。这里,在'345和'306申请中描述和/或图示的乘法器-累加器电路促进连结乘法和累加运算,并重新配置其电路系统和由此进行的运算;以这种方式,可以以由此更快和/或有效地进行处理和运算的方式来配置和/或重新配置多个乘法器-累加器电路以处理数据(例如,图像数据)。'345和'306申请通过引用将其整体并入本文。
7.在一个实施例中,控制和配置乘法器-累加器电路系统的电路系统(有时称为控制/配置电路系统)包括用于控制、配置和/或编程(例如一次性或多于一次性可编程的)包括流水线(在本文中有时称为“mac处理流水线”或“mac执行流水线”)的乘法器-累加器电路的(一个或多个)执行或处理路径的电路系统。例如,在一个实施例中,控制/配置电路系统可以配置或连接所选择数量的乘法器-累加器电路或乘法器-累加器电路的行/组,以除其它外实现预定的乘法器-累加器执行或处理流水线或其架构。这里,控制/配置电路系统可以配置或确定互连(串联)并用于进行乘法和累加运算的乘法器-累加器电路或互连的乘法器-累加器电路的行/组和/或经由用于进行乘法和累加运算的乘法器-累加器电路(或互连的乘法器-累加器电路的行/组)的连接实现的流水线架构或配置。因此,在一个实施例中,控制/配置电路系统通过控制或提供乘法器-累加器电路和/或互连的乘法器-累加器电路
的行之间的(一个或多个)连接来配置或实现执行或处理流水线的架构。尽管将多个乘法器-累加器电路描述/图示为乘法器-累加器电路的“行”,但多个可以描述为乘法器-累加器电路的“列”,其中多个乘法器-累加器电路的布局是垂直的;两者都旨在落入本发明的范围内;
8.值得注意的是,本发明可以采用在'345和'306申请中描述和图示的一个或多个乘法器-累加器执行或处理以及处理技术。如上所述,'345和'306申请通过本文将整体并入本文。
9.除此之外,在一个实施例中,控制/配置电路系统可以促进或控制向多个乘法器-累加器电路写入滤波权重或值,以实现乘法运算。例如,控制/配置电路系统可以将多个乘法器-累加器电路(或互连(串联)的乘法器-累加器电路的行/组)连接到存储器,以控制或促进向多个乘法器-累加器电路提供/写入滤波权重或值以实现乘法运算。在一个实施例中,每个乘法器-累加器电路包括“本地”存储器(例如,寄存器或寄存器组),以“本地”存储滤波权重或值,以供与乘法运算有关地使用。每个“本地”存储器可以专用于相关联的乘法器-累加器电路。
10.在一个实施例中,每个乘法器-累加器电路包括多个“本地”存储器/寄存器组,以存储至少两组滤波权重或值,所述至少两组滤波权重或值包括第一组滤波权重和第二组滤波权重,第一组滤波权重用于第一乘法运算(例如,与实现当前乘法运算有关),第二组滤波权重用于紧接在当前乘法运算之后(即,紧接在采用第一组滤波权重的“当前”乘法运算完成之后)的乘法运算。在此实施例中,在操作中,乘法器-累加器电路可以在第一组乘法运算期间从第一存储器读取第一滤波权重,并且在完成第一组乘法运算之后(与第一组数据相关联),在第二组乘法运算(与第二组数据的处理相关联)期间从第二存储器读取第二滤波权重。以这种方式,乘法器-累加器电路可以在多个“本地”存储器/寄存器组之间在一组乘法运算的基础上跳跃(ping-pong)读取操作。也就是说,乘法器-累加器电路可以读取/访问第一组滤波权重(即,存储在第一“本地”存储器/寄存器组中),用于与处理第一组数据有关的当前乘法运算中,并且在完成后,立即读取/访问与处理第二组数据有关的下一组/第二组滤波权重(即,存储在第二“本地”存储器/寄存器组中)。这里,因为第二组滤波权重可以被写入并存储在第二存储器/寄存器组中,在使用存储在第一存储器/寄存器组中的第一组滤波权重的乘法运算完成之前被写入和存储,所以在乘法器-累加器执行或处理流水线的乘法器-累加器电路进行的数据处理期间,没有源于对乘法器-累加器电路的下一组滤波权重的访问和可用性的延迟或开销时间。存储器输出选择电路(例如,多路复用器)可以响应地控制多个存储器/寄存器组中的哪个存储器/寄存器组(以及何时)连接到乘法器-累加器电路的乘法器电路系统。以这种方式,存储器输出选择电路响应地控制跳跃读取操作以及存储器/寄存器组与乘法器-累加器电路的乘法器电路系统的连接。
11.此外,控制/配置电路系统可以交替地将一组新的或更新的滤波权重写入到多个“本地”存储器/寄存器组。例如,控制/配置电路系统可以在一组乘法运算基础上在与乘法器-累加器执行或处理流水线的每个乘法器-累加器电路相关联的两个“本地”存储器/寄存器组之间跳跃写入操作。也就是说,在完成使用存储在第一存储器/寄存器组中的第一组滤波权重的一组乘法运算后,可以将一组新的滤波权重写入到第一存储器/寄存器组,以供在使用第二组滤波权重(即,存储在第二“本地”存储器/寄存器组中的一组滤波权重)的一组
乘法运算完成后的处理中使用。这里,控制/配置电路系统将一组新的滤波权重提供或写入到第一“本地”存储器/寄存器组中,而乘法器-累加器电路则使用第二组滤波权重进行乘法运算。该新的或第三组滤波权重(存储在与每个乘法器-累加器电路相关联的第一“本地”存储器/寄存器组中)然后在使用存储在第二“本地”存储器/寄存器组中的第二组滤波权重或值完成数据处理后立即可用于乘法器-累加器电路。以这种方式,在数据处理期间没有因向“本地”存储器/寄存器组写入、更新或提供要由电路使用的“新”滤波权重或值而引入到乘法器-累加器执行或处理流水线中的延迟或开销时间。
12.如上所述,在一个实施例中,控制/配置电路系统控制或配置乘法器-累加器电路和/或互连的乘法器-累加器电路的行之间的(一个或多个)连接以实现执行或处理流水线的架构。例如,控制/配置电路系统可以确定和/或配置(i)采用和/或互连哪些乘法器-累加器电路以实现或进行乘法和累加运算和/或(ii)用于进行预定的乘法和累加运算的互连的乘法器-累加器电路(和/或互连(串联)的乘法器-累加器电路的行/组)的数量,和/或(iii)经由用于进行乘法和累加运算的(a)乘法器-累加器电路的连接和/或(b)互连的乘法器-累加器电路的行之间的连接实现的流水线架构或配置。控制/配置电路系统在一个实施例中包括多个控制/配置电路,所述多个控制/配置电路相关联于并专用于与多个互连(例如,串联)的乘法器-累加器电路和/或一行或多行互连(例如,串联)的乘法器-累加器电路接口。例如,可以原位(即,在集成电路的操作期间)实现该配置,以例如满足或超过基于时间的系统要求或约束。此外,控制/配置电路系统实现的配置可以是一次性可编程的(例如,在制造时,经由例如可编程熔丝阵列)或多次性可编程的(包括,例如,在启动/上电、初始化时和/或原位)。
13.值得注意的是,mac处理或执行流水线可以从一个或多个集成电路组织或设置在一个或多个集成电路上。在一个实施例中,集成电路是分立现场可编程门阵列(fpga)或嵌入式fpga(除非另有说明,否则在本文中之后统称为“fpga”)。简而言之,fpga是由用户、操作员、客户和/或设计员在制造之前和/或之后配置和/或重新配置(在下文中,除非另有说明,否则统称为“配置”等(例如,“配置”和“可配置”))的集成电路。fpga可以包括可编程逻辑组件(通常称为“逻辑单元”、“可配置逻辑块”(clb)、“逻辑阵列块”(lab)或“逻辑图块
”‑
在下文中统称为“逻辑图块”))。
14.在本发明的一个实施例中,fpga的一个或多个(或所有)逻辑图块包括多个乘法器-累加器电路,以例如以流水线方式实现乘法和累加运算。控制/配置电路系统可以被包括在逻辑图块中的开关互连网络中或者可以包括逻辑图块中的开关互连网络。开关互连网络可以被配置为分层和/或网格互连网络。逻辑图块可以包括与开关互连网络相关联的数据存储元件、输入引脚和/或查找表(lut),这些元件在被编程时确定开关/多路复用器的配置和/或操作以及除其它之外逻辑图块(包括mac电路和/或mac处理流水线)的电路系统(例如,逻辑组件)之间和/或多个逻辑图块的电路系统(例如,多个逻辑图块的mac电路和/或mac处理流水线之间)的通信。
15.在一个实施例中,开关互连网络可以提供到/来自相关联的逻辑图块或不同的逻辑图块的逻辑电路系统的连接,相关联的逻辑图块或不同的逻辑图块到/来自处理或执行流水线的乘法器-累加器电路的(单独的)乘法器-累加器电路。以这种方式,可以例如同时采用多个逻辑图块的mac电路和/或mac处理流水线来处理相关数据(例如,相关图像数据)。
实际上,此类连接可以是可配置的和/或可重新配置的-例如,原位(即,在集成电路的正常操作期间)和/或在上电、启动、初始化、重新初始化、配置、重新配置等时或期间。在一个实施例中,开关互连网络可以采用在'345和'306申请中描述和/或图示的互连网络的一个或多个实施例、特征和/或方面。此外,开关互连网络可以接口于和/或包括在'345和'306申请中描述和/或图示的接口连接器的一个或多个实施例、特征和/或方面(例如,参见'345申请的图7a-图7c;值得注意的是,本文描述和图示的nlink电路的某些细节可以与'345和'306申请中描述和/或图示的电路系统相关,称为nlinx(例如,nlinx导体、nlinx接口、nlinx接口连接器等))。如上所提及的,'345和'306申请通过引用将其整体并入本文。
16.值得注意的是,(一个或多个)集成电路可以例如是处理器、控制器、状态机、门阵列、片上系统(soc)、可编程门阵列(pga)和/或fpga和/或处理器、控制器、状态机和soc,包括嵌入式fpga。现场可编程门阵列或fpga意指分立fpga和嵌入式fpga两者。
17.在一个实施例中,本发明也可以在乘法器-累加器执行或处理流水线(以及操作此类电路系统的方法)的同时和/或并行处理技术中采用或实现,这增加了流水线的吞吐量,如美国专利申请no.16/816,164和美国临时专利申请no.62/831,413中描述和/或图示的,这两个美国申请通过引用将其整体并入本文。
18.简而言之,参考图1a,在一个实施例中,执行流水线中的乘法器-累加器电路系统以线性或串联连接的流水线架构进行配置。在此配置中,dijk数据在执行期间固定到位,而yijl数据在执行期间(在流水线的mac之间)旋转。mxm(例如,64x64)个fkl滤波权重分布在l0存储器上(在此说明性实施例中,64个l0 sram
‑‑
一个l0 sram在流水线的m个(例如,m=64)的每个mac处理电路中)。在每个执行周期中,m个(例如,m=64)fkl值将被读取并传递给mac元件或电路。在从连接到d
mem
存储器(此处为l2存储器-诸如sram)的dijk移位链加载后,dijk数据值在m(例如,m=64)个执行周期期间被存储或保持在一个处理元件中。
19.此外,在处理期间,yijlk mac值在从yijk移位链(参见y
mem
存储器)加载后在m(例如,m=64)个执行周期期间通过所有m(例如,m=64)个mac处理器进行旋转,并将使用相同的移位链卸载。
20.此外,在这个示例性实施例中,执行流水线中的“m”(例如,在说明性实施例中为64)个mac处理电路同时操作,从而使乘法器-累加器处理电路在每m(例如,64)个周期间隔(这里,周期可以标称为1ns)中进行mxm(例如,64x64)个乘法-累加运算。此后,在相同的m(例如,64)个周期间隔期间,下一组输入像素/数据(例如,64)被移入并且之前的输出像素/数据被移出。值得注意的是,每m(例如,64)个周期间隔处理在特定(i,j)位置(宽度dw/yw和高度dh/yh维度的索引)处的输入和输出像素/数据的dd/yd(深度)列。对于此阶段的每个dw*dh深度列重复m周期执行间隔。在这个示例性实施例中,在阶段处理开始之前将滤波权重或权重数据从例如外部存储器或处理器加载到存储器(例如,l1/l0 sram存储器)中(例如参见'345和'306申请)。在这个特定实施例中,输入阶段的dw=512,dh=256且dd=128,并且输出阶段的yw=512,yh=256且yd=64。注意,在一个实施例中,每个64x64 mac执行操作中仅处理128个dd输入中的64个。
21.继续参考图1a,通过简单地调整进行的基础64x64 mac累加运算的迭代次数,通过所示配置实现的方法可以适应任意图像/数据平面维度(dw/yw和dh/yh)。循环索引“i”和“j”通过控制和测序逻辑电路系统进行调整,以实现图像/数据平面的维度。此外,该方法还
可以进行调整和/或扩展,以处理比执行流水线中的mac处理元件的数量(例如,一个说明性示例中为64)大的yd列深度。在一个实施例中,可以通过将输出像素的深度列分为块(例如,64)并针对这些块中的每个块重复图1a的mac累加来实现这一点。
22.实际上,可以进一步扩展图1a中所示的方法,以处理比执行流水线中的mac处理元件/电路的数量(一个说明性示例中为64)大的dd列深度。在一个实施例中,可以通过最初将输入像素dijk的m个数据(例如,m=64)的第一块部分累加到每个输出像素yijl来实现这一点。此后,部分累加值yijl被读取(从存储器y
mem
)回到执行流水线中,作为m个输入数据/像素dijk的下一个块到每个输出像素yijl的继续累加的初始值。存储或保持继续累加值的存储器(例如,l2存储器)可以被组织、分区和/或调整大小以适应任何额外的读取/写入带宽以支持处理操作。
23.参考图1b,集成电路可以包括多个多位mac执行流水线,这些流水线被组织为处理组件的一个或多个集群。这里,组件可以包括“资源”,诸如总线接口(例如,phy和/或gpio),以促进与组件和存储器(例如,sram和dram)外部的电路系统的通信,存储器用于存储和由组件的电路系统使用。例如,参考图1b,在一个实施例中,组件(标记为“x1”)中包括四个集群,其中每个集群包括多个多位mac执行流水线(在此说明性实施例中为16个64-mac执行流水线)。值得注意的是,为参考目的,在右下方图示了图1a的一个mac执行流水线(在此说明性实施例中包括64个mac处理电路)。
24.继续参考图1b,该示例性实施例中的存储器层次结构包括l0存储器(例如,sram),该存储器存储要由乘法器-累加器电路与由此实现的乘法运算有关地采用的滤波权重或系数。在一个实施例中,每个mac执行流水线包括l0存储器,以存储与mac执行流水线的电路系统处理下的数据相关联的滤波权重或系数。l1存储器(较大的sram资源)与mac执行流水线的每个集群相关联。这两个存储器可以存储、保留和/或保持在累加运算中采用的滤波权重值fijklm。
25.值得注意的是,图1b的实施例可以采用l2存储器(例如,大于l1或l0存储器的sram的sram存储器)。片上网络(noc)将l2存储器耦合到phy(物理接口),以提供与外部存储器(例如,l3存储器-诸如,(一个或多个)外部dram组件)的连接。noc还耦合到pcie phy,该pcie phy接着耦合到外部主机。noc还耦合到gpio输入/输出phy,这允许同时操作多个x1组件。控制/配置电路(有时称为“nlink”或“nlink电路”)经由可编程或可配置的互连路径连接到乘法器-累加器电路系统(其包括多个(此处,64个)乘法器-累加器电路或mac处理器),以除其它之外通过在一个或多个mac流水线之间提供或“引导”数据来配置整个执行流水线。此外,控制/配置电路可以配置乘法器-累加器电路系统与一个或多个存储器之间的互连-一个或多个存储器可以由mac执行流水线的一个或多个(或所有)集群共享-包括外部存储器(例如,l3存储器,诸如外部dram)。这些存储器可以存储例如输入图像像素dijk、输出图像像素yijl(即,经由(一个或多个)mac流水线的电路系统处理的图像数据以及与此类数据处理有关的滤波权重值fijklm。
26.值得注意的是,尽管说明性或示例性实施例描述和/或图示了指派、分配和/或用于存储某些数据和/或在某些组织中的多个不同的存储器(例如,l3存储器、l2存储器、l1存储器、l0存储器),但是可以添加一个或多个其它存储器,和/或可以省略和/或组合/合并一个或多个存储器-例如,可以改变l3存储器或l2存储器和/或组织。所有组合旨在落入本发
明的范围内。
27.此外,在本文阐述的说明性实施例(文本和附图)中,乘法器-累加器电路系统和/或乘法器-累加器流水线有时标记为“nmax”、“nmax流水线”、“mac处理流水线”、“mac执行流水线”或“mac流水线”。
28.继续参考图1b,(一个或多个)集成电路包括多个集群(例如,两个、四个或八个),其中每个集群包括多个乘法器-累加器电路(“mac”)执行流水线(例如,16个)。每个mac执行流水线可以包括多个分开的乘法器-累加器电路(例如,64个),以实现乘法和累加运算。在一个实施例中,将多个集群互连以形成处理电路/组件(在图中通常将此类组件标识为“x1”或“x1组件”),处理电路/组件可以包括存储器(例如,sram、mram和/或闪存)、开关互连网络,开关互连网络互连组件的电路系统(例如,x1组件的乘法器-累加器电路和/或(一个或多个)mac执行流水线)和/或组件的电路系统与一个或多个其它x1组件的电路系统或相关联的x1组件外部的其它电路系统。这里,可以将x1组件的多个集群的一个或多个mac执行流水线的乘法器-累加器电路配置为同时处理相关数据(例如,图像数据)。也就是说,多个mac执行流水线的多个分开的乘法器-累加器电路可以同时处理相关数据以例如增加x1组件的数据吞吐量。
29.值得注意的是,x1组件还可以包括接口电路系统(例如,phy和/或gpio电路系统),以与例如外部存储器(例如,dram、mram、sram和/或闪存存储器)接口。
30.在一个实施例中,mac执行流水线可以是任何大小或长度(例如,16、32、64、96或128个乘法器-累加器电路)。实际上,流水线的大小或长度可以是可配置的或可编程的(例如,一次性或多次性-诸如,原位(即,在集成电路的操作期间)和/或在上电、启动、初始化、重新初始化、配置、重新配置等时或期间)。这里,可以增加或减小mac执行流水线的大小或长度(即,流水线、例如线性或串联互连的流水线中连接的mac的数量)
‑‑
一次性(在制造或测试时)或多次性,例如,原位和/或在上电、启动、初始化、重新初始化、配置、重新配置等时或期间。
31.在另一个实施例中,一个或多个集成电路包括多个组件或x1组件(例如2个、4个、
…
),其中每个组件包括具有多个mac执行流水线的多个集群。例如,在一个实施例中,一个集成电路包括多个组件或x1组件,其中每个x1组件包括具有多个mac执行流水线的多个集群(例如,4个集群)。如上所述,每个集群包括多个执行或处理流水线(例如,16、32或64个),多个执行或处理流水线可以被配置或编程以同时处理、运转和/或操作以同时处理相关数据(例如,图像数据)。以这种方式,相关数据由多个集群的每个执行流水线同时处理,以例如减少相关数据的处理时间和/或增加x1组件的数据吞吐量。
32.如'164和'413申请中所讨论的,多个x1组件的一个或多个集群的多个执行或处理流水线可以互连以处理数据(例如,图像数据),以上两个申请通过引用将其整体并入本文。在一个实施例中,可以将这种执行或处理流水线互连成环形配置或架构以同时处理相关数据。这里,多个x1组件(可以集成/制造在单个管芯或多个管芯上)的一个或多个(或所有)集群的多个mac执行流水线可以互连成环形配置或架构(其中,总线互连组件)以同时处理相关数据。例如,将每个x1组件的一个或多个(或所有)集群的多个mac执行流水线配置为处理图像帧的一个或多个阶段,以使得每个x1组件的电路系统处理多个图像帧中的每个图像帧的一个或多个阶段。在另一个实施例中,将每个x1组件的一个或多个(或所有)集群的多个
mac执行流水线配置为处理每个图像帧的每个阶段的一个或多个部分,以使得将每个x1组件的电路系统配置为处理多个图像帧中的每个图像帧的每个阶段的一部分。在又另一个实施例中,将每个x1组件的一个或多个(或所有)集群的多个mac执行流水线配置为处理至少一个整体图像帧的所有阶段,以使得将每个x1组件的电路系统被配置为处理至少一个图像帧的所有阶段。这里,每个x1组件被配置为处理一个或多个图像帧的所有阶段,以使得每个x1组件的电路系统处理不同的图像帧。
33.如上所提及的,本文描述和图示了许多发明。本发明既不限于任何单个方面或其实施例,也不限于这些方面和/或实施例的任何组合和/或置换。此外,本发明的每个方面和/或其实施例可以单独使用或者也可以与本发明的一个或多个其它方面和/或其实施例组合使用。为了简洁起见,本文中没有分别详细讨论和/或图示某些置换和组合。
附图说明
34.本发明可以结合其附图中图示的实施例来实现。这些附图示出了本发明的不同方面,且在适当时,图示类似电路、架构、结构、组件、材料和/或元件的附图标记、命名或名称在不同图中被类似地标记。应理解,构思了具体示出的之外的结构、组件、材料和/或元件的各种组合,且这些各种组合也落入本发明的范围内。
35.此外,本文描述和图示了许多发明。本发明既不限于任何单个方面或其实施例,也不限于这些方面和/或实施例的任何组合和/或置换。另外,本发明的每个方面和/或其实施例可以单独使用或与本发明的一个或多个其它方面和/或其实施例组合使用。为简洁起见,本文没有分开讨论和/或图示某些置换和组合。值得注意的是,本文作为“示例性”所描述的实施例或实现方式不应被理解为例如相对于其它实施例或实现方式是优选的或有利的;而是,其旨在反映或指示(一个或多个)实施例是(一个或多个)“示例”实施例。
36.值得注意的是,本文描述和/或附图以及与其相关联的文本中图示的配置、块/数据/信号宽度、数据/信号路径宽度、带宽、数据长度、值、处理、伪码、运算和/或算法是示例性的。实际上,本发明不限于根据例如示例性电路、逻辑、块、功能和/或物理图图示和/或描述的任何特定或示例性电路、逻辑、块、功能和/或物理图、在执行流水线中采用的乘法器-累加器电路的数量、在特定处理配置中采用的执行流水线的数量、存储器的组织/分配、块/数据宽度、数据路径宽度、带宽、值、处理、伪码、运算和/或算法。此外,尽管说明性/示例性实施例包括指派、分配和/或用于存储某些数据(例如,滤波权重)和/或在某些组织中的多个存储器(例如,l3存储器、l2存储器、l1存储器、l0存储器)。实际上,可以改变存储器的组织,其中可以添加一个或多个存储器,和/或一个或多个存储器可以被省略和/或与其它存储器组合/合并-其它存储器例如是(i)l3存储器或l2存储器和/或(ii)l1存储器或l0存储器。同样,本发明不限于本文阐述的说明性/示例性实施例。
37.图1a是根据本发明的一个或多个方面的以线性流水线配置连接的示例性乘法器-累加器执行流水线的逻辑概览的示意框图,其中乘法器-累加器执行流水线包括乘法器-累加器电路系统(“mac”),其以框图形式图示;值得注意的是,乘法器-累加器电路系统包括一个或多个乘法器-累加器电路(尽管此处未具体图示单独乘法器-累加器电路);多个mac以框图形式图示;示例性乘法器-累加器电路在插图a中以示意性框图的形式图示;值得注意的是,在该示例性实施例中,“m”个(例如,在一个说明性实施例中为64个)乘法器-累加器电
路以线性执行流水线连接以同时操作,由此处理电路在每m(例如,64)个周期间隔中(例如,周期可以标称为1ns)进行mxm(例如,64
×
64)个乘法-累加运算;值得注意的是,每m(例如,64)个周期间隔处理在特定(i,j)位置(该示例性实施例的宽度dw/yw和高度dh/yh维度的索引
‑‑
dw=512,dh=256且dd=128,并且yw=512,yh=256且yd=64)处的输入和输出像素/数据的dd/yd(深度)列,其中对于该阶段的每个dw*dh深度列重复r(例如,64)个周期执行间隔;此外,在一个实施例中,滤波权重或权重数据在乘法器-累加器电路系统开始处理之前被加载到存储器(例如,l1/l0 sram存储器)中(参见,例如,'345和'306申请);在一个实施例中,l1 sram存储器可以向多个l0 sram存储器提供数据,其中每个线性流水线(像图2d中的框图形式所图示的那样)与专用的l0 sram存储器相关联
‑‑
专用的l0 sram存储器是与l1 sram存储器相关联的多个l0sram存储器之一(在一个实施例中,专用于多个集群之一);
38.图1b是根据本发明的某些方面的包括具有多个乘法器-累加器电路的多个多位mac执行流水线的集成电路或集成电路的一部分(有时可以称为xl组件)的高级框图布局,多个乘法器-累加器电路中的每一个实现乘法和累加操作;多位mac执行流水线和/或多个乘法器-累加器电路可以被配置为实现一个或多个处理架构或技术(单独或与一个或多个x1组件组合);在这个说明性实施例中,多位mac执行流水线被组织成集群(在这个说明性实施例中,四个集群,其中每个集群包括多个多位mac执行流水线(在这个说明性实施例中,每个集群包括16个64-mac执行流水线(每个mac在下面也可以单独称为mac电路或mac处理器));在一个实施例中,多个乘法器-累加器电路是可配置的或可编程的(一次性或多次性,例如,在启动时和/或原位)以实现一个或多个流水线处理架构或技术(参见,例如,右下角的图1b的高级框图的一部分的扩展视图是单个mac执行流水线(在说明性实施例中,包括例如64个乘法器-累加器电路或mac处理器),其与以线性执行流水线配置布置的示例性乘法器-累加器电路系统的逻辑概览的示意框图相关-参见图1a);该说明性实施例中的处理组件包括存储器(例如,l2存储器、l1存储器和l0存储器(例如,sram))、总线接口(例如,phy和/或gpio)和多个开关/多路复用器,总线接口促进与组件外部的电路系统和用于存储和由组件的电路系统使用的存储器(例如,sram和dram)的通信,多个开关/多路复用器电互连以形成开关互连网络“片上网络”(“noc”)以促进互连mac执行流水线的乘法器-累加器电路的集群;在一个实施例中,noc包括开关互连网络(例如,混合模式互连网络(即,分层开关矩阵互连网络和网格、环面等互连网络(在下文中统称为“网格网络”或“网格互连网络”))、相关联的数据存储元件、输入引脚和/或查找表(lut),它们在被编程时确定开关/多路复用器的操作;在一个实施例中,一个或多个(或所有)集群包括一个或多个计算元件(例如,多个乘法器-累加器电路系统-标记为“nmax行
”‑‑
参见例如'345和'306申请);值得注意的是,在一个实施例中,每个mac执行流水线(在一个实施例中,由多个串联互连的乘法器-累加器电路组成)连接到专用于该处理流水线的相关联的l0存储器(例如,sram存储器);相关联的l0存储器存储在进行乘法运算时由该特定mac处理流水线的每个乘法器-累加器电路的乘法器电路系统使用的滤波权重,其中给定集群的每个mac处理流水线连接到相关联的l0存储器(在一个实施例中,该l0存储器专用于该mac处理流水线的乘法器-累加器电路);mac集群的多个(例如,16个)mac执行流水线(并且特别是集群的每个mac执行流水线的l0存储器)耦合到相关联的l1存储器(例如,sram存储器);这里,l1存储器连接到集群的每个mac执行流水线并由其共享,以接收要存储在与集群的每个mac执行流水线相关联的l0存储器中的滤
波权重;在一个实施例中,l1存储器与mac集群的多个流水线相关联并且专用于该多个流水线;也就是说,在一个实施例中,l1存储器连接到多个l0存储器并向其提供数据,其中每个mac流水线(如图2d中的框图形式所图示的那样)与专用l0存储器相关联-专用l0存储器是与l1存储器相关联的多个l0 sram存储器之一(在一个实施例中,l1存储器相关联于并专用于x1组件的多个集群之一);值得注意的是,每个64-mac执行流水线的移入和移出路径耦合到l2存储器(例如,sram存储器),其中l2存储器还耦合到l1存储器和l0存储器;noc将l2存储器耦合到phy(物理接口),该phy(物理接口)可以连接到l3存储器(例如,外部dram);noc还耦合到pcie或phy,后者又可以提供互连或与x1处理组件外部的电路系统(例如,外部处理器,诸如主机处理器)进行通信;在一个实施例中,noc还可以连接多个x1组件(例如,经由gpio输入/输出phy),这允许多个x1组件处理相关数据(例如,图像数据),如本文所讨论的,根据本发明的一个或多个方面;
39.图2a和图2b图示了根据本发明的一个或多个方面的用于存储滤波权重的示例性存储器架构的示意性框图,其中每个乘法器-累加器电路的乘法器电路系统连接到存储器以接收滤波权重以进行乘法运算;在一个实施例中,每个存储器与一个乘法器-累加器电路的乘法器电路系统相关联,其中每个乘法器-累加器电路包括专用存储器(例如,sram)以本地存储滤波权重(通常称为l0存储器);其中示例性存储器架构包括多个存储器,这些存储器选择性输出到相关联的乘法器-累加器电路的乘法器电路系统,存储器输出选择电路系统(例如,多路复用器)可以连接适当的存储器(存储与当前由乘法器-累加器电路处理的数据相关联的滤波权重);在一个示例性实施例中,存储器包括多个分开可寻址的存储器,其中每个存储器的读取/写入操作相对于多个存储器的其它存储器的读取/写入操作是分别可控制的(参见图2b);因此,数据(即,滤波权重)可以从第一个存储器读取(即,读取操作),而数据(即,滤波权重)可以同时写入到第二存储器(即,写入操作);在给定时间(例如,对于与在处理下的一组数据相关联的一组滤波权重)仅将一个存储器的输出提供给相关联的乘法器-累加器电路的乘法器电路系统-例如,参见图2b中的存储器输出选择电路系统(例如,多路复用器);
40.图2c图示了根据本发明的一个或多个方面的用于存储由相关联的乘法器-累加器电路的乘法器电路系统使用的滤波权重或系数的示例性存储器架构的示意性框图;在此实施例中,存储器(例如,sram)包括多个存储器组(在此说明性实施例中,2个),并专用于且相关联于多个乘法器-累加器电路之一以本地存储滤波权重(再次,通常称为l0存储器);存储器组是分开可寻址的存储器,其中每个存储器组的读取/写入操作相对于其它存储器组是分别可控制的,以使得例如存储器组1可以被读取(其中将滤波权重数据应用于相关联的mac的乘法器电路系统),而存储器组0被写入(即,存储另一组滤波权重的滤波权重);在操作中,在给定时间(例如,对于与处理下的一组数据相关联的一组滤波权重)经由多路复用器将仅来自一个组的数据输出到相关联的乘法器-累加器电路的乘法器电路系统,该多路复用器由存储器组选择控制信号来控制;值得注意的是,在一个实施例中,写入数据总线可以连接到另一个存储器(例如,l1存储器-可以是sram),该另一个存储器提供用于存储在适当/选择的存储器组中的多组滤波权重;在操作中,在一个实施例中,乘法器-累加器电路可以在一组乘法运算的基础上在两个存储器组之间跳跃读取操作,以减少或最小化在乘法器-累加器电路进行的数据处理期间源于“新”滤波权重或值对乘法器-累加器电路的可用
性的时间延迟或开销;类似地,控制/配置电路系统可以在一组乘法运算的基础上在与乘法器-累加器电路相关联的两个“本地”存储器组之间跳跃写入操作,以使得从一个存储器组(例如,存储器组1)读取滤波权重,另一个存储器组(例如,存储器组0)正在接收并存储要在下一组数据的数据处理期间由乘法器-累加器电路使用的下一组滤波权重;如图1b中所反映的,在一个实施例中,l1存储器可以与多个mac(例如,与l1存储器相关联的集群的mac)的l0存储器组相关联;
41.图2d结合具有多个mac处理器的示例性乘法器-累加器执行或处理流水线(参见图1a和图1b)的线性流水线配置的逻辑概览的示意性框图图示了根据本发明的一个或多个方面的图2c的示例性存储器架构的示意性框图,其中每个mac处理器包括乘法器-累加器电路,该乘法器-累加器电路具有进行/实现乘法运算的乘法器电路(“mul”)和进行/实现累加运算的累加器电路(“add”);此外,每个mac处理器包括两个存储器组(例如,sram存储器,诸如l0存储器),它们专用于乘法器-累加器电路,以存储供相关联的乘法器-累加器电路的乘法器电路系统使用的滤波权重;在该说明性实施例中,mac执行或处理流水线包括n个乘法器-累加器处理电路(例如,n=64),在一个实施例中,每个电路包括两个专用存储器组以存储至少两组不同的滤波权重-每组滤波权重相关联于并用于处理一组数据),其中每个存储器组可以交替地被读取以用于处理给定的一组相关联的数据,并且在处理给定的一组相关联的数据之后交替地被写入;值得注意的是,在该示例性mac执行或处理流水线的线性流水线配置的逻辑概览中,n个处理(mac)电路(例如,n=64)在执行流水线中连接并同时操作,由此乘法器-累加器处理电路在每64个周期间隔(这里,周期可以是例如标称1ns)的64x64个乘法-累加运算;此后,在相同的64个周期间隔期间,下一个64输入像素/数据被移入,并且之前的输出像素/数据被移出;每64个周期间隔处理在特定(i,j)位置处(宽度dw/yw和高度dh/yh维度的索引)的输入和输出像素/数据的dd/yd(深度)列;对于该阶段的每个dw*dh深度列,重复64个周期执行间隔;在阶段处理开始之前,从例如外部存储器或处理器将滤波权重或权重数据加载到存储器中(例如,l1和/或l0(即,l1/l0)sram存储器)(参见例如'345和'306申请);值得注意的是,单独的mac有时在本文中可以称为mac处理器、mac电路或mac处理电路;
42.图2e图示了根据本发明的一个或多个方面的示例性乘法器-累加器执行或处理流水线的示意图框图,该示例性乘法器-累加器执行或处理流水线包括多个串联连接的mac,其中mac的每个累加器电路(“add”)的输出端耦合到线性处理流水线的mac的紧接在后面的累加器电路(“add”)的输入端,其中,以这种方式,mac生成的累加值(“y”)(参见,mac_r[p])通过流水线的多个串联连接的mac被旋转、转移或移动(例如,在执行序列(即,一组相关联的执行周期)的每个执行周期之前、期间或完成时),以使由mac生成的每个累加值(参见mac_r[p]
‑‑“
旋转当前y”)在每个执行周期之前、期间或完成时被输出到线性流水线的紧接在后面的mac并在该紧接在后面的mac的累加器电路(“add”)的累加运算中采用;值得注意的是,根据本发明的一个或多个方面的每个mac包括进行/实现乘法运算的乘法器电路(“mul”)和进行/实现累加运算的累加器电路(“add”);在此示例性实施例中,mac处理器可以包括或从一个存储器组(参见图2a)或多个存储器组(参见图2b;例如两个sram存储器组-参见图2c)读取,存储器组可以专用于mac处理电路的mac以存储由相关联的mac的乘法器电路使用的滤波权重;如上所述,单独的mac有时可以称为“mac处理器”或“mac处理电路”;值
得注意的是,线性处理流水线和并入在这样的流水线中的mac可以被配置为旋转、转移或移动(在执行周期之前、期间或完成时)输入数据值(而不是累加值-在执行序列的每个执行周期期间维持、存储或保持在特定的mac中),如于2021年3月3日提交的美国临时专利申请no.63/156,263“mac processing pipelines,circuitry to configure same,and methods of operating same”中所描述和图示的;'263申请通过引用将其整体并入本文;在此,在操作中,在将初始数据输入值输入或加载到线性mac处理流水线的mac中之后,输入数据值逐个周期地从线性流水线的一个mac旋转、转移或移动到流水线的紧接在后面的mac,并用于处理流水线的该下一个mac的乘法器电路的乘法运算中,如'263申请中描述和/或图示的;
[0043]
图3a图示了根据本发明的各个方面的连接到乘法器-累加器电路系统以配置和控制乘法器-累加器电路系统(包括在串联/线性流水线中互连的多个mac(在此说明性实施例中,64个mac、乘法器-累加器电路或mac处理器))的示例性电路的示意性框图;在一个实施例中,该电路(有时称为“控制/配置电路”、“nlink”或“nlink电路”)相关联于并专用于与多个互连(例如,串联)的乘法器-累加器电路和/或一行或多行互连(例如,串联)的乘法器-累加器电路接口;在一个实施例中,具有一个或多个控制/配置电路的集成电路与多个多位mac执行流水线接口,每个流水线包括多个互连(例如,串联)的乘法器-累加器电路(参见,例如,图1b),其中每个控制/配置电路根据本发明的某些方面来控制多个多位mac执行流水线之一;在此说明性实施例中(实现一个示例性处理流水线实施例),(i)nlink电路中的l0存储器控制、地址和数据信号路径在(一个或多个)执行序列期间将由逻辑电路系统(未图示)生成的控制、地址和数据信号提供给流水线的每个mac中的l0存储器以管理或控制存储器操作,(ii)该实施例的nlink电路和mac执行流水线中的输入数据信号路径表示在(一个或多个)执行序列期间要经由mac处理的输入数据的信号路径(iii)该实施例的nlink电路和执行流水线中的累加数据路径表示在(一个或多个)执行序列期间由mac生成的正在进行的/累加的mac累加总数,以及(iv)该实施例的nlink电路和mac执行流水线中的输出数据路径表示由(一个或多个)执行序列生成的输出数据(即,经由执行流水线的乘法器-累加器电路或mac处理器处理的输入数据);“行互连”连接两行串联连接的mac以形成或提供一个线性mac流水线,其中信号线:“od”表示输出数据路径,“ad”表示累加数据路径,“id”表示输入数据路径,“mc”表示l0存储器控制路径,“ma”表示l0存储器地址路径,以及“md”表示l0存储器地址路径;每个数据路径中的其中带有数字的圆圈指示特定路径或端口的位和/或导体或线(例如,数据或控制)的数量-参见插图;为了避免疑问,本文阐述的块/数据宽度、数据路径和/或端口宽度仅是示例性的,并且在任何方面都不限制;值得注意的是,“端口”是从控制/配置或nlink电路进入/退出的物理点;从控制/配置或nlink电路进入或退出的所有物理形式均旨在落入本发明的范围内(例如,集成电路中/的导体或金属布线);
[0044]
图3b图示了图3a中图示的mac执行或处理流水线的示例性实施例的示意性框图;
[0045]
图3c-图3f图示了根据本发明的某些方面的实施例的图3a的示例性控制/配置电路和乘法器-累加器电路系统(例如,串联连接到线性mac处理流水线的多个mac)的示意性框图中的由图3a中指示的所选择/特定部分;图3c和图3d中的插图提供了一般图例(i)一个mac流水线和一个相关联的nlink电路中的输入数据流((“单个流水线内数据输入di_x的移位”指的是输入数据的路径),(ii)一个mac流水线和一个相关联的nlink电路中的乘法和累
加运算流(“单个流水线内移位mac_x”指的是乘法-累加运算的累加数据的路径),和(iii)与相关联的nlink电路有关的一个mac流水线中具有先前结果的累加运算的输出数据流(“单个流水线内移位mac_sx”指的是与带有先前结果的累加运算相对应的输出数据路径));如上所提及的,“行互连”连接了具有“n”个mac电路的两行串联连接的mac(以形成一个线性mac流水线(由两行串联连接的mac中的mac组成),其中在该说明性实施例中,n=64);行互连的信号线包括:“od”表示输出数据路径,“ad”表示累加数据路径,“id”表示输入数据路径,“mc”表示l0存储器控制路径,“ma”表示l0存储器地址路径,并且“md”表示l0存储器地址路径;每个数据路径中的其中带有数字的圆圈指示特定路径或端口的位和/或导体或线(例如,数据或控制)的数量-参见图3c和图3d中的“图例”;为了避免疑问,阐述的块/数据宽度、数据路径和/或端口宽度仅仅是示例性的而不在任何方面中进行限制;值得注意的是,“端口”是从控制/配置或nlink电路进入/退出的物理点;从控制/配置或nlink电路进入/退出的所有物理形式均旨在落入本发明的范围内(例如,集成电路中/的导体或金属布线);再次,“端口”是从控制/配置或nlink电路进入/退出的物理点;从控制/配置或nlink电路进入/退出的所有物理形式均旨在落入本发明的范围内(例如,集成电路中/的导体或金属布线);
[0046]
图4图示了根据本发明的某些方面的与mac流水线结合的多个控制/配置电路或nlink电路的示例性实施例,其中每个nlink电路连接(并且在一个实施例中,专用于)相关联的mac流水线(包括多个串联连接的mac);在一个实施例中,nlink电路可配置为连接到一个或多个其它nlink电路(其中每个nlink电路与一个或多个mac流水线中配置的多个mac相关联),例如,以控制、配置和连接被配置为进行例如乘法-累加运算的线性mac执行或处理流水线;值得注意的是,在此说明性实施例中,根据本发明的某些方面,每个控制/配置(nlink)电路-mac流水线对形成分开的可操作处理流水线,该流水线被配置为进行例如乘法-累加处理;在示例性实施例中,每个控制/配置电路(标记为“nlink”)包括mac_i/mac_o端口,以形成循环路径(例如,环形路径),用于中间累加值,以遍历线性mac执行流水线(包括多个连接(例如,串联)的乘法-累加电路(标记为“mac流水线”并在框图中图示,描绘了示例性乘法器-累加器电路系统(包括,例如,64个mac)-参见图1a和图1b)的多个mac;值得注意的是,di_i和mac_si端口将从存储器(例如,外部存储器,诸如l2存储器)中读取,并将来自其的数据输入到mac流水线中,并且可以使用mac_so端口来读取经由mac流水线处理的数据并此后写入到外部存储器(例如,外部存储器,诸如l2存储器);值得注意的是,如上所提及的,“端口”是从控制/配置或nlink电路进入/退出的物理点;从控制/配置或nlink电路进入或退出的所有物理形式旨在落入本发明的范围内(例如,集成电路中/的导体或金属布线);
[0047]
图5a-图5c图示了根据本发明的某些方面的串联连接的多个控制/配置或nlink电路的示例性互连架构的不同信号路径,其中每个nlink电路连接(并且在一个实施例中,专用于)相关联的乘法器-累加器电路流水线,相关联的乘法器-累加器电路流水线当连接控制/配置或nlink电路时是复合的/较大的线性mac流水线的一部分,该复合的/较大的线性mac流水线由与每个串联连接的说明性流水线架构相关联的串联连接的mac形成,其中图5a图示了根据本发明的某些方面的串联连接的多个控制/配置或nlink电路的示例性互连架构,以形成输入数据(di)操作数的单个移位数据路径,遍历集群中(或其部分)中的多个处
理电路系统;这里,nlink电路被配置为经由控制/配置或nlink电路的di_o和di_i端口连接到一个或多个其它nlink电路,以形成处理流水线的单个移位链,其中每个控制/配置或nlink电路连接(到并且,在一个实施例中,专用于)多个相关联的乘法器-累加器电路;图5b图示了根据本发明的某些方面的串联连接的多个控制/配置或nlink电路的示例性互连架构,以形成循环移位数据路径(例如,环形路径),用于中间累加值,以遍历集群(或其部分)中的多个处理电路系统;这里,nlink电路被配置为经由控制/配置或nlink电路的mac_i和mac_o端口连接到一个或多个其它nlink电路,以形成处理流水线的循环移位链,其中每个控制/配置或nlink电路连接到(并且,在一个实施例中,专用于)多个相关联的乘法器-累加器电路;并且图5c图示了根据本发明的某些方面的串联连接的多个控制/配置或nlink电路的示例性互连架构,以形成移位数据路径,用于最终累加值,以遍历集群(或其部分)中的多个处理电路系统;这里,nlink电路被配置为经由控制/配置或nlink电路的mac_si和mac_so端口连接到一个或多个其它nlink电路,以形成处理流水线的移位链,其中每个控制/配置或nlink电路连接到(并且,在一个实施例中,专用于)多个相关联的乘法器-累加器电路;值得注意的是,为了清楚起见,省略了图5a-图5c中的控制/配置或nlink电路之间的许多连接、信号和信号路径/线;
[0048]
图6a-图6c图示了根据本发明的某些方面的示例性控制/配置电路或nlink电路的更详细示意性框图,该示例性控制/配置电路或nlink电路被配置为在多个nlink电路之间路由输入数据di_i和di_o,如图5a中所示,以形成输入数据di操作数的单个移位链,该移位链遍历多个(这里为64个)乘法器-累加器电路或mac处理器的处理流水线(在所示实施例中,组织成多个两行相关联的互连(例如,串联)的乘法器-累加器电路),其中两行相关联的互连(例如,串联)的乘法器-累加器电路中的每一个与控制/配置电路或nlink电路相关联;在该说明性实施例中,可以是“底部”、“端部”或“边缘”nlink电路(参见包括多个nlink电路和相关联的流水线的整体的、完整的或复合的流水线的包括多个nlink电路和相关联的流水线)的整体的、完整的或复合的流水线的图5a中的nlink a)的控制/配置或nlink电路之一(参见图6a)被配置为从例如存储器接收输入数据(经由di_i端口)并将此类数据路由到与其相关联的处理流水线,到nlink电路中的di_o端口,以连接到(并输出数据到)相邻nlink电路中的di_i信号和端口(例如,(参见整体的、完整的或复合的流水线的图5a中的nlink b-包括多个nlink电路和相关联的流水线)和/或nlink电路中的di_i信号,以连接到(并从其输入数据)相邻nlink电路中的di_o信号和端口(这里,“下
”‑
如图5a中图示的);每个相邻的nlink电路相关联于并专用于不同的多个乘法器-累加器电路或mac处理器(例如,被组织成两行互连(例如,串联)的乘法器-累加器电路并与其相邻设置;在此说明性实施例中,位于(整体的、接合的、组合的或完整的流水线的-包括多个nlink电路和相关联的流水线-参见图5a)端部或边缘nlink电路内部的一个或多个(或所有)nlink电路被配置为连接相邻nlink电路中的di_o信号和端口,并将信号路径路由到并通过与其相关联的执行流水线,到该nlink电路中的di_o端口,以连接到(并输出数据到)相邻nlink电路中的di_i信号和端口-根据图6b;值得注意的是,图6b中所示的nlink电路中的插图提供了通过nlink电路和相关联的mac流水线到另一个/不同的nlink电路及其相关联的mac流水线的输入数据流或路径的一般图例(“上移”指的是输入数据到例如相邻的nlink电路的路径),在这个实施例中,另一个/不同的nlink电路及其相关联的mac流水线与nlibk电路和相关联的mac流水
x-参见图5b和图7b)被配置为从下面的nlink电路接收数据(参见图7b)并将这些数据路由到与之相关联的处理流水线,到nlink电路中的mac_o端口,以将数据连接并输出到相邻的nlink电路(这里,设置在下面的nlink-参见图5b)以完成循环移位路径;因此,多个nlinks和相关联的mac流水线互连以形成与经由mac_o端口和端口以及mac_i端口和nlink电路中的累加数据路径的累加数据路径有关的“环”(参见图5b);值得注意的是,每个nlink电路与不同的多个乘法器-累加器电路或mac处理器(例如,组织成两行互连(例如,串联)的乘法器-累加器电路)相关联,不同的多个乘法器-累加器电路或mac处理器可以经由nlink电路的配置并入整体的、接合的、组合的或完整的流水线;值得注意的是,图7b中所示的nlink电路中的插图提供了从之前nlink(及其相关联的mac流水线)进入以及到接下来的nlink(及其相关联的mac流水线)的单个mac流水线(乘法-累加运算的累加数据的“上移”路径)以及相关联的link的流入和流出的乘法和累加运算数据流的一般图例;在一个示例性实施例中,位于数据路径中的其中带有数字的圆圈指示特定路径或端口的位和/或导体或线(例如,数据或控制)的数量;为避免疑问,阐述的块/数据宽度、数据路径和/或端口宽度仅是示例性的,并且在任何方面中没有进行限制;如前所述,“端口”(例如,mac_i端口、mac_o端口)是从控制/配置或nlink电路进入和退出的物理点;值得注意的是,为了清楚起见,已经省略了控制/配置或nlink电路之间(以及nlink电路与其相关联的执行流水线之间)的许多其它连接、信号路径和信号(例如,存储器地址、数据和控制路径、输入数据路径和输出数据路径);然而,某些连接、信号路径和信号(在一个实施例中,未修改以实现该实施例的架构)在图3a-图3f中图示(例如,存储器地址、数据和控制路径、输入数据路径和/或输出数据路径);
[0050]
图8a-图8c图示了根据本发明的某些方面的示例性控制/配置电路或nlink电路的更详细示意性框图,示例性控制/配置电路或nlink电路被配置为在多个nlink电路之间路由mac_si和mac_so信号,如图5c中所示,以形成用于最终累加值的移位路径(例如,环),该移位路径遍历多个(此处为64个)乘法器-累加器电路或mac数据处理器的处理流水线(在图示的实施例中,组织为多个相关联的两行互连(例如,串联)的乘法器-累加器电路),其中每个相关联的两行互连(例如,串联)的乘法器-累加器电路相关联于并专用于控制/配置电路或nlink电路;在此说明性实施例中,可以是底部、端部或边缘nlink电路(参见整体的、完整的或复合的流水线的图5c中的nlink a-包括多个nlink电路和相关联的流水线)的控制/配置电路系统或nlink电路之一(参见图8a)被配置为从存储器接收数据(经由mac_si端口),并将此类数据路由到与之相关联的处理流水线,到nlink电路中的mac_so端口,以连接到(并输出数据到)相邻nlink电路中的mac_so信号和端口(例如,参见整体的、完整的或复合的流水线的图5c中的nlink b)和/或nlink电路中的mac_so端口,以连接到(并从其输入数据)相邻nlink电路中的mac_so端口(在此,设置在下面的nlink-参见图5c);每个相邻的nlink电路与不同的多个乘法器-累加器电路或mac处理器相关联(例如,组织成两行互连(例如,串联)的乘法器-累加器电路并被设置成相邻(此处,上方);在此说明性实施例中,位于(整体的、接合的、组合的或完整的流水线的-包括多个nlink电路和相关联的流水线-参见图5c)端部或边缘nlink电路内部的一个或多个(或所有)nlink电路被配置为连接相邻的nlink电路中的mac_si和mac_so端口,并将信号路径路由到并通过与之相关联的执行流水线,到该nlink电路中的mac_so端口,以连接到(并输出数据到)相邻的nlink电路中的mac_
so信号和端口(参见图8b);值得注意的是,图8b中所示的nlink电路中的插图提供了通过nlink电路和相关联的流水线(“上移”指的是在mac流水线和其相关联的nlink电路中具有先前结果的累加运算的输出数据路径)来自之前的nlink(及其相关联的mac流水线)以及到随后的nlink(及其相关联的mac流水线)的数据流的一般图例,在该实施例中,随后的nlink与之相邻;在此说明性实施例中,可以是“顶部”或第二端部或边缘nlink电路(参见整体的、完整的或复合的流水线的图5c中的nlink x-包括多个nlink电路和相关联的流水线)的控制/配置电路或nlink电路之一(参见图8c)被配置为从另一个nlink电路接收数据(参见图8b),并且将这些数据路由到与之相关联的处理流水线,到nlink电路中的mac_so端口,以将数据连接和输出到例如相邻nlink电路中的存储器和端口(这里,设置在上面的nlink-参见图5c);值得注意的是,为了清楚起见,已经省略了控制/配置或nlink电路之间(以及nlink电路与其相关联的执行流水线之间)的许多其他连接、信号路径和信号(例如,存储器地址、数据和控制路径、输入数据路径和累加数据路径);然而某些这样的连接、信号路径和信号(在一个实施例中,它们没有被修改以实现该实施例的架构-例如(例如,存储器地址、数据和控制路径、输入数据路径和累加数据路径)在图3a-图3f中图示出;位于数据路径中的其中带有数字的圆圈(参见图8a中的插图)指示在一个示例性实施例中的特定路径或端口的位和/或导体或线(例如,数据或控制)的数量;为避免疑问,其中阐述的块/数据宽度、数据路径和/或端口宽度仅是示例性的并且在任何方面没有进行限制;如上所述,“端口”(例如,mac_si端口、mac_so端口)是进入和退出控制/配置或nlink电路的物理点;进入或退出控制/配置或nlink电路的所有物理形式旨在落入本发明的范围内(例如,集成电路中/的导体或金属布线);和
[0051]
图9图示了根据本发明的某些方面的实施例的示例性可配置处理电路系统,以实现附加数据处理操作,包括例如数据操作数的预处理和累加结果的后处理;值得注意的是,可配置处理电路可以组织成四个电路块(a0、a1、a2、a3),其中可配置处理电路系统的每个电路块可以被配置为进行一个或多个操作;此外,可配置处理电路系统包括附加可编程/可配置电路系统,以建立、配置或“引导”数据路径以实现一个或多个预处理操作(例如,预处理数据操作数)和/或一个或多个后处理操作(例如,来自mac处理流水线的累加结果的进一步/后续处理,mac处理流水线(可以是接合的、组合的或完整的mac处理流水线,其中经由与较小mac处理流水线相关联的nlink电路的配置接合或组合多个较小的mac处理流水线-参见图5a-图5c);可配置处理电路系统可以是一次性可编程的(例如,在制造时,经由例如可编程熔丝阵列)或多次性可编程的(包括,例如在启动/上电、初始化时和/或原位(即,在集成电路的操作期间));在一个实施例中,在处理流水线的执行序列的操作或实现之前,经由多路复用器对该配置进行编程,以建立进入一个或多个选择的处理电路的数据路径或绕过这些电路;值得注意的是,可配置处理电路系统及其连接被叠加(为了图示目的)在图3a、图3c、图6a-图6c、图7和图8a-图8c中所示的控制/配置电路或nlink电路的示例性配置的详细示意性框图中(参见,控制/配置电路或nlink电路的每个示例性配置的“nlink(上)”部分的左侧);在一个实施例中,可配置处理电路系统可例如经由互连网络(参见图1b)由任何(或所有)nlink电路访问,其中互连网络可配置为将可配置处理电路系统连接到一个或多个nlink电路和与之相关联的mac处理流水线;在一个示例性实施例中位于信号路径中的其中带有数字的圆圈指示特定路径或端口的位和/或导体或线(例如,数据)的数量;为避免疑
问,其中阐述的块/数据宽度、数据路径或端口宽度仅是示例性的,并且在任何方面没有进行限制。
[0052]
如上所述,在附图中描述和/或图示的伪码、操作、配置、块/数据宽度、数据路径宽度、带宽、数据长度、值、过程和/或算法是示例性的并且本发明本文不限于根据例如示例性电路、逻辑、块、功能和/或物理图图示和/或描述的任何特定或示例性电路、逻辑、块、功能和/或物理图、执行流水线中采用的乘法器-累加器电路的数量、特定处理配置/架构中采用的执行流水线的数量、存储器的组织/分配、块/数据宽度、数据路径宽度、带宽、值、过程、伪码、运算和算法。此外,尽管说明性/示例性实施例包括指派、分配和/或用于存储某些数据(例如,滤波权重)和/或在某些组织中的多个存储器(例如,l3存储器、l2存储器、l1存储器、l0存储器)。实际上,可以改变存储器的组织,其中可以添加一个或多个存储器,和/或可以省略一个或多个存储器和/或与其它存储器组合/合并-例如,(i)l3存储器或l2存储器和/或(ii)l1存储器或l0存储器。
[0053]
再一次说明,本文描述和图示了许多发明。本发明既不限于任何单个方面或其实施例,也不限于这些方面和/或实施例的任何组合和/或置换。本发明的每个方面和/或其实施例可以单独使用或与本发明的一个或多个其它方面和/或其实施例组合使用。为简洁起见,本文没有分开讨论或图示许多这样的组合和置换。
具体实施方式
[0054]
在第一方面,本发明涉及用于配置和控制乘法器-累加器电路系统的电路系统(以及操作和配置此类电路系统的方法),乘法器-累加器电路系统包括多个乘法器-累加器执行或处理流水线。本发明的该方面的电路系统配置(例如,一次性或多于一次性可编程的)并控制乘法器-累加器电路系统以实现一个或多个执行或处理流水线来处理数据,例如并行或同时处理数据。在一个实施例中,控制/配置电路控制滤波权重向由乘法器-累加器电路系统采用来实现乘法运算的存储器中的加载。在这方面,控制/配置电路可以促进或控制将滤波权重或值写入到多个乘法器-累加器电路,并将此类滤波权重存储在供电路访问以进行乘法运算的存储器中。例如,控制/配置电路可以将多个乘法器-累加器电路(或互连(串联)的乘法器-累加器电路的行/组)连接到存储器,以促进在可由乘法器-累加器电路访问的“本地”存储器中存储滤波权重。参考图2a,在一个实施例中,每个乘法器-累加器电路包括“本地”存储器(例如,sram或寄存器),以“本地”存储与相关联的mac的乘法器电路系统的乘法运算有关地使用的滤波权重或值。在这方面,存储器将滤波权重/值连接并输出到相关联的mac的乘法器电路系统。值得注意的是,在一个实施例中,每个“本地”存储器可以专用于相关联的mac。
[0055]
参考图2b,在一个实施例中,每个乘法器-累加器电路包括多个“本地”存储器/寄存器组(例如,存储器a-存储器x)来存储多组不同的滤波权重(每组滤波权重可以与供mac处理的不同组的数据相关联)。例如,参考图2b和图2c,多个“本地”存储器/寄存器组可以包括第一存储器/寄存器组和第二存储器/寄存器组,来存储两组不同的滤波权重,两组不同的滤波权重包括用于“当前”乘法运算中的第一组滤波权重和用于紧接在当前乘法运算之后(即,紧接在完成采用第一组滤波权重的“当前”乘法运算之后)的乘法运算中的第二组滤波权重。
[0056]
在操作中,乘法器-累加器电路可以在第一组乘法运算期间从第一存储器读取第一滤波权重,并且在完成第一组乘法运算(与第一组数据的处理相关联)时,从与第二组乘法运算有关(与使用第二组滤波权重对第二组数据的处理相关联)的第二存储器读取第二组滤波权重。以这种方式,乘法器-累加器电路可以在一组乘法运算的基础上在多个“本地”存储器/寄存器组之间跳跃读取操作。也就是说,乘法器-累加器电路可以读取/访问第一组滤波权重(即,存储在第一“本地”存储器/寄存器组中)以用于与处理第一组输入数据有关的当前乘法运算中,并且在完成后,立即读取/访问与处理第二组数据有关的存储在第二“本地”存储器/寄存器组中的下一组/第二组滤波权重。这里,因为可以在使用存储在第一存储器/寄存器组中的第一组滤波权重的乘法运算完成期间或之前将第二组滤波权重写入并存储在第二存储器/寄存器组中,所以在由乘法器-累加器执行或处理流水线的乘法器-累加器电路进行的(例如,第二组输入数据的)数据处理期间不存在源于对乘法器-累加器电路(存储在第二“本地”存储器/寄存器组中)的下一组或第二组滤波权重的读取、访问和可用性的延迟或开销时间。
[0057]
值得注意的是,存储器输出选择电路(例如,一个或多个多路复用器)可以响应地控制多个存储器/寄存器组中的哪个存储器/寄存器组(以及何时)连接到乘法器-累加器电路的乘法器电路系统。以这种方式,存储器输出选择电路响应地控制跳跃读取操作和存储器/寄存器组与乘法器-累加器电路的乘法器电路系统的连接。
[0058]
此外,控制/配置电路可以交替地将一组新的或更新的滤波权重写入到多个“本地”存储器/寄存器组。例如,继续参考图2b和图2c,控制/配置电路可以在一组乘法运算的基础上在与乘法器-累加器执行或处理流水线的每个乘法器-累加器电路相关联的两个“本地”存储器/寄存器组之间跳跃写入操作。也就是说,在读取第一组滤波权重期间或在使用存储在第一存储器/寄存器组中的第一组滤波权重完成一组乘法运算时,可以将一组新的滤波权重写入(例如,立即写入)到第一存储器/寄存器组以供在使用第二组滤波权重(即,存储在第二“本地”存储器/寄存器组中的一组滤波权重)的一组乘法运算完成之后的处理中使用。这里,控制/配置电路将新的/下一组滤波权重提供或写入到第一“本地”存储器/寄存器组中,而乘法器-累加器电路使用第二组滤波权重(存储在第二“本地”存储器/寄存器中)进行乘法运算。该新的、下一组或第三组滤波权重(存储在与每个乘法器-累加器电路相关联的第一“本地”存储器/寄存器组中)可以覆写第一组滤波权重。此外,在使用存储在第二“本地”存储器/寄存器组中的第二组滤波权重或值完成数据处理(经由相关联的乘法器-累加器电路的乘法器电路系统)期间或紧接之后,新的、下一组或第三组滤波权重随后可用于乘法器-累加器电路。以这种方式,在数据处理期间不存在因将“新”滤波权重或值写入、更新或提供到供电路使用的“本地”存储器/寄存器组而引入到乘法器-累加器执行或处理流水线中的延迟或开销时间。
[0059]
参考图2d,在一个实施例中,在线性乘法器-累加器执行或处理流水线中配置(经由控制/配置电路系统)多个乘法器-累加器电路(例如,n=64)。在此实施例中,mac相关联于并连接到多个“本地”存储器/寄存器组(相关联于并专用于特定mac),以存储多个不同组的滤波权重,用于与通过mac的乘法器电路系统处理给定组的输入数据相关联的乘法运算有关地采用。这里,每个mac处理器包括两个存储器/寄存器组(例如l0,诸如sram)。在此实施例中,两个存储器/寄存器组是独立的存储器组,以使得在每个执行周期中,可以读取每
个mac的一个组(使用共享的读取地址总线),将读取数据放在输入到多路复用器(“mux”)的相关联的rd[p]信号线上,而其它存储器组可以被写入(将在下一个执行周期中使用的滤波权重)。读取数据被移动/写入到f寄存器(d_r[p])中以供在执行周期中使用。f寄存器(d_r[p])为每个执行周期写入新的滤波权重(fkl值)。
[0060]
如上所述,在执行周期期间,其它存储器/寄存器组(即,未从执行周期期间读取的组)可经由写入操作用于存储滤波权重(使用wa地址总线,在一个实施例中,wa地址总线在存储器/寄存器组之间共享/共用)。这里,在当前处理操作期间,可以将写入数据(即,滤波权重值)写入到未被乘法器-累加器电路访问的存储器组中。在一个实施例中,滤波权重数据(例如,将在处理中使用的下一组滤波权重)可以从更大的存储器(例如,mac处理器外部的l1 sram)读取并随后存储在存储器/寄存器组(l0 sram)中,而不会干扰当前处理操作的当前/正在进行的一组执行周期。
[0061]
值得注意的是,参考图2d和图2e,线性流水线的每个mac或mac处理器可以采用或与单个存储器/寄存器组实施例(例如,参见图2a)、两个存储器/寄存器组实施例(参见例如图2c)或两个以上的存储器/寄存器组实施例(例如参见图2b)接口。
[0062]
关于执行周期,参考图2d和图2e,每个乘法器-累加器电路(也可以称为“处理元件”或“mac处理器”)包括数据输入(dijk数据)的移位链(d_si[p])。在一个实施例中,下一个dijk数据被移入,而当前dijk数据用于当前的一组执行周期。当前的dijk数据在当前的一组执行周期期间存储在d_i[p]寄存器中而不会改变。
[0063]
此外,每个乘法器-累加器电路包括移位链(mac_so[p])用于预加载yijl求和。在当前组的执行周期期间,下一组yijl求和被移入,而当前组的yijl求和被计算/生成。在此实施例中,每个乘法器-累加器电路还使用移位链(mac_so[p])用于卸载或输出yijl求和。在当前组的执行周期中,之前的yijl求和被移出而当前yijl求和被生成。值得注意的是,同时使用yijl移位链(mac_so[p])预加载和卸载两者将在下面更详细地讨论。
[0064]
在每个执行周期中,经由乘法器电路系统将d_r[p]寄存器中的滤波权重值(fkl值)乘以d_i[p]寄存器中的dijk值,并且结果输出到mult_r[p]寄存器。在下一个流水线周期中,此乘积(即,d*f值)添加到mac_r[p-1]寄存器中(在之前的乘法器-累加器电路中)的yijl累加值,并且结果存储在mac_r[p]寄存器中。对于当前组的执行周期,重复此执行过程。值得注意的是,在当前组的执行周期期间,yijl累加值移动(旋转)。
[0065]
控制/配置电路在本发明的一个方面中配置(例如,一次性或多于一次性可编程的)并控制乘法器-累加器电路系统以实现一个或多个执行或处理流水线以处理数据,例如并行或同时处理数据。在一个实施例中,电路系统配置和控制多个分开的乘法器-累加器电路或互连(串联)的乘法器-累加器电路的行/组,以经由流水线式的乘法和累加运算实现数据处理,以例如增加与处理数据(例如,图像数据)有关的乘法器-累加器执行或处理流水线的吞吐量。
[0066]
在一个实施例中,控制和配置乘法器-累加器电路系统的电路系统(有时称为控制/配置电路系统)包括用于控制、配置和/或编程(例如,一次性或多于一次性可编程的)包括mac处理流水线的乘法器-累加器电路的(一个或多个)执行或处理路径的电路系统。例如,在一个实施例中,控制/配置电路系统可以配置或连接所选择数量的乘法器-累加器电路或乘法器-累加器电路的行/组,以除其它之外实现预定的乘法器-累加器执行或处理流
水线或其架构。这里,控制/配置电路系统可以配置或确定互连(串联)并用来进行乘法和累加运算的乘法器-累加器电路或互连的乘法器-累加器电路的行/组和/或经由用于进行乘法和累加运算的乘法器-累加器电路(或互连的乘法器-累加器电路的行/组)的连接实现的流水线架构或配置。因此,在一个实施例中,控制/配置电路系统(可以包括多个控制/配置电路)通过控制或提供乘法器-累加器电路和/或互连的乘法器-累加器电路的行之间的(一个或多个)连接来配置或实现执行或处理流水线的架构。
[0067]
例如,控制/配置电路或nlink电路连接到乘法器-累加器电路系统(包括多个(此处图示为64个)乘法器-累加器电路或mac处理器)以除其它之外通过经由可编程或可配置的互连路径在一个或多个mac流水线之间提供、转移或“引导”数据来配置整体执行流水线。此外,控制/配置电路可以配置乘法器-累加器电路系统与一个或多个存储器之间的互连-包括外部存储器(例如,l3存储器,诸如外部dram)
‑‑
可以由mac执行流水线的一个或多个(或所有)集群共享。这些存储器可以存储例如输入图像像素dijk、输出图像像素yijl(即,经由(一个或多个)mac流水线的电路系统处理的图像数据以及与此类数据处理有关的滤波权重fijklm。(参见图1a、图1b、图2d和图2e)。
[0068]
值得注意的是,可以例如原位(即,在集成电路的操作期间)实现配置,以例如满足或超过基于时间的系统要求或约束。此外,由控制/配置电路系统实现的配置可以是一次性可编程的(例如,在制造时,经由例如可编程熔丝阵列)或多次可编程的(包括,例如,在启动/上电、初始化时和/或原位)。
[0069]
参考图3a,在一个示例性配置中,控制/配置或nlink电路(在一个实施例中,专用于相关联的执行流水线)经由多个端口连接到执行流水线,多个端口包括(i)di_i、mac_si、di_o、mac_so端口,将执行流水线连接到流水线外部的存储器(例如,l2存储器,诸如sram),以及(ii)mac_i、mac_o端口,将多个乘法器-累加器电路(或两行乘法器-累加器电路)连接成环形配置或架构。因此,在此示例性实施例中,将控制/配置或nlink电路配置为向执行流水线(例如,从存储器)提供输入数据,并从执行流水线接收输出/经处理的数据(例如,输出到存储器)-其中流水线包括相关联于并专用于nlink电路的那些mac。此外,控制/配置或nlink电路未配置为与(一个或多个)其它或相邻的控制/配置或nlink电路和/或其它或相邻的mac处理流水线(例如,参见图1b)接口、通信或相互作用。
[0070]
值得注意的是,如上所提及的,“端口”是从控制/配置或nlink电路进入和/或退出的物理点;从控制/配置或nlink电路进入或退出的所有物理形式均旨在落入本发明的范围内(例如,在集成电路中/的导体或金属布线)。
[0071]
参考图3a、图3b、图3e和图3f,该实施例中的执行流水线包括多个乘法器-累加器电路(每个标记为“mac”),这些电路串联连接以形成经由行互连而互连的多行mac的线性执行流水线。在操作中,执行流水线在di_i处接收输入数据(参见nlink(下)中的“输入数据端口”),经由连结乘法和累加运算来处理数据,并在mac_so处输出经处理的数据(参见nlink(上)中的“输出数据端口”)。如上所述,控制/配置或nlink电路经由连接mac_i、mac_o端口以及由此连接执行流水线的多个乘法器-累加器电路的处理操作,将两行乘法器-累加器电路配置为环形配置或架构。
[0072]
参考图3a-图3f,在nlink和执行流水线中的l0存储器数据、地址和控制路径上遍历的信号表示管理和控制处理的执行序列的控制和地址信息。控制和地址信号是由控制逻
辑电路系统生成的(未图示-并且在一个实施例中,它在nlink和执行流水线的外部)。此外,此类控制逻辑还管理或控制与每个l0存储器(例如,sram)相关的写入数据(即,滤波权重)和写入序列,该l0存储器相关联于并专用于执行流水线中的乘法器-累加器电路。写入数据(滤波权重)是从执行流水线外部的存储器读取的(l1存储器-例如,sram)(例如,参见图1a和图1b)。值得注意的是,在使用与该序列相关联的滤波权重的执行过程启动之前,进行/完成序列以将数据写入到与乘法器-累加器电路相关联的每个l0存储器的组之一。
[0073]
继续参考图3a-图3f,在nlink和执行流水线中的输入数据路径上遍历的信号表示应用于mac流水线或由mac流水线接收并由执行序列处理/在执行序列中处理的输入数据(例如,图像数据)。输入数据可以存储在l2存储器(例如,sram)中,并经由控制逻辑电路系统(未图示)提供(即从存储器读取)到nlink。在一个实施例中,将此输入数据以组或集合提供给流水线(例如,64个元件集合或组,其中每个元件的大小/长度为17位)。一组或集合的输入数据通过di_i端口串行移入,并与执行流水线的每个乘法器-累加器电路中的d寄存器并行加载到流水线中。串行路径的端部是nlink电路中的di_o输出端口(参见nlink(上)中的“输入数据端口”)。在此说明性流水线架构/配置中,可以不使用nlink(上)中的输入数据路径。
[0074]
nlink和执行流水线中的累加数据路径表示在执行序列期间由乘法器-累加器电路生成的正在进行的mac累加总数。在每个周期中,每个乘法器-累加器电路将滤波权重值(来自l0存储器)乘以d寄存器中的(静态)值,将总数添加到其累加寄存器y,并将y传递到右侧用于下一个周期。y累加值(此处为64)逆时针旋转,并在每个周期间隔结束时(例如,64周期间隔),将累加值加载到输出移位寄存器mac_s中。注意,nlink电路中的累加数据端口(mac_o端口和mac_i端口)以及之间的数据路径被配置和启用以允许通过执行流水线的每个mac旋转y值(还参见图2d)。
[0075]
继续参考图3a-图3f,nlink电路和执行流水线中的输出数据路径上的信号表示由执行序列(mac流水线和一个相关联的nlink电路中具有先前结果的累加运算(值得注意的是,“在单个流水线内移位mac_sx”指的是与带有先前结果的累加运算相对应的输出数据路径))生成的输出数据。输出数据是从累加寄存器y(此处64)并行加载到mac_so寄存器(此处为64)中的。在一个实施例中,可以经由控制逻辑电路系统(未图示)将此输出数据写入nlink电路和执行流水线外部的存储器(例如,l2存储器(sram))。在一个实施例中,输出数据作为64个元件集合返回,每个元件的长度/大小为35位。输出数据的集合串行通过输出数据端口(mac_so端口)被移出并存储在存储器中。在启动每个执行序列的第一执行周期之前,串行总线(mac_so和mac_si)也可以用于预加载初始累加值/总数。这些初始累加总数经由mac_si端口提供(例如,串行移入)到nlink电路和执行流水线,并且并行加载到执行流水线的每个乘法器-累加器电路中的y寄存器(也参见图2d)。在一个示例性实施例中,初始累加数据的大小/长度为35位。
[0076]
在一个实施例中,可以将多个控制/配置或nlink电路互连以例如配置包括多个mac流水线的数据处理电路-每个流水线与互连的控制/配置或nlink电路之一相关联。在一个实施例中,经由与这些mac流水线相关联的控制/配置或nlink电路,在电路的处理操作中采用例如mac流水线的集群的多个(或所有)mac流水线。例如,参考图4,在一个实施例中,将多个nlink电路的每个nlink电路(例如,与集群的多个(或所有)mac流水线相关联)配置为
经由di_i和mac_si端口将数据(例如,图像数据)提供到相关联的mac流水线(包括多个互连的乘法-累加电路)。在此实施例中,每个nlink电路的mac_i/mac_o端口连接,以提供相关联的mac流水线的互连的乘法-累加电路的环形拓扑或架构。另外,将di_i和mac_si端口配置为向每个mac流水线提供数据(从存储器(例如,l2)读取的数据)以供处理,并且输出mac_so并将其写入到存储器(l2)。在这个实施例中,部分处理的数据(来自给定的mac流水线)经由nlink电路在存储器(例如,l2)和多个mac流水线中的每个mac流水线之间交换以实现处理操作。
[0077]
值得注意的是,如上所述,输入数据无需写回到存储器,因此,输入数据端口(di_o端口)可以在nlink的输出处保持未连接(参见图3c)。
[0078]
在一个实施例中,可以将多个控制/配置或nlink电路以及与之相关联的mac流水线配置并互连到单个移位链中,其中经由与此类mac流水线相关联的控制/配置或nlink电路及其配置在处理操作中采用(例如,一个集群的)多个mac流水线。这里,数据处理流水线包括多个mac流水线(每个与互连的nlink电路之一相关联),多个mac流水线经由多个控制/配置或nlink电路之间的可编程或可配置的连接以及经由nlink电路或由nlink电路提供/实现的多个mac流水线之间的连接互连为单个移位链。
[0079]
例如,参考图5a,在一个实施例中,经由互连相邻nlink电路的di/i和di/o端口(并且通过扩展,与互连的nlink电路的每个nlink电路相关联的每个mac流水线)提供单个移位链。这里,nlink电路的di_o端口连接到相邻nlink电路的di_i端口(例如,在图示的实施例中,设置在“上方”的nlink电路,其中数据流从下到上(nlink a至nlink b等至nlink x))。值得注意的是,数据流可以是从上到下的(即,从nlink x等至nlink b至nlink a)-或任何其它方向或路径-所有这些都旨在落入本发明的范围内。
[0080]
继续参考图5a,在此图示的实施例中,最底部的nlink电路的di_i端口被配置为接收输入数据(例如,从外部存储器(例如,l2存储器
‑‑
sram)读取)。该最底部的nlink电路的di_o端口输入到与其相邻的nlink电路的di_i端口中。因此,该实施例中处理操作的移位链采用相邻nlink电路的di/i和di/o端口以形成数据输入(di)操作数的移位路径,该移位路径遍历多个mac流水线的每个mac流水线的每个乘法器-累加器电路。
[0081]
在一个实施例中,给定集群的多个mac流水线被并入移位链中。(参见,例如,图1b)。在另一个实施例中,给定集群的所有mac流水线并入移位链中。值得注意的是,最上部的nlink电路的di_o端口可以或可以不输出到存储器。在一个实施例中,互连的电路的最后nlink电路中的di_o端口是未连接的(例如,参见图5a中的nlink x)。
[0082]
参考图6a-图6c,在图5a中所示的移位链的一个实施例中,nlink电路被配置为在它们之间提供适当的di_i-di_o路由以加载用于组合的流水线(其由多个流水线组成(在说明性实施例中,其中多个流水线中的每个流水线包括两行乘法-累加电路-参见例如图3a、图3b、图3e和图3f)的数据。这里,与图6a-图6c中的输入数据路径相关联的输入数据信号和信号路径图示了nlink电路之间的di_i-di_o路由的连接(参见图5a中的di_i-di_o路由)。这些连接配置nlink电路之一(“第一nlink电路
”‑
例如,nlink a)的di_i端口以接收输入数据(例如,来自存储器(例如,l2存储器))并将该输入数据提供给相关联的执行流水线以供处理,然后提供给di_o端口。(参见图6a)。该第一nlink电路的di_o端口被配置为经由输入数据端口(参见nlinks上部)以及通过扩展与该相邻nlink电路相关联的执行流水线将初始
数据输出到相邻的nlink电路(“第二nlink电路
”‑
例如,nlink b)。(参见图6b)。这里,第二nlink电路的di_i端口连接到该第一nlink电路的di_o端口,以将部分处理的数据提供给与第二nlink电路相关联的执行流水线。也就是说,nlink电路中的di_o信号要连接到相邻nlink电路中的di_i信号(此处,位于第一nlink电路上方-参见图5a)。该第二nlink电路的di_o端口被配置为将进一步部分处理的数据输出到另一个相邻的nlink电路(“第三nlink电路”)以及与该第三nlink电路相关联的执行流水线。依此类推-例如,nlink x。如本文所述,“端口”(例如,di_i端口、di_o端口)是从控制/配置或nlink电路进入和退出的物理点;进入或退出控制/配置或nlink电路的所有物理形式旨在落入本发明的范围内(例如,集成电路中/的导体或金属布线)。
[0083]
参考图6c,可以是顶部、端部或边缘nlink电路(整体的、完整的或组合的流水线的图5a中的nlink x-包括多个nlink电路和相关联的流水线)的控制/配置电路或nlink电路之一被配置为从另一个nlink电路(像图6b中的那样)接收数据,并将此类数据路由到与之相关联的处理流水线,到nlink电路中di_o端口,以连接和输出数据到例如存储器(例如,l2存储器-诸如sram)。值得注意的是,图6a-图6c的nlink电路的其它连接和配置(例如,在nlink电路及其相关联的执行流水线之间)像图3a中所示的那些那样,但为了清楚起见在图6a-图6c中未阐述(例如,存储器地址、数据和控制路径、累加数据路径和/或输出数据路径-参见,例如,图3a-图3f)。
[0084]
简而言之,在操作中,与互连的nlink电路的每个nlink电路相关联的执行流水线在数据处理之前通过输入数据路径(图6a)以及输出数据路径经由从被移入数据的存储器读取的数据加载数据,将一个mac流水线和一个相关联的nlink电路中具有先前结果的累加运算(“在单个流水线内移位mac_sx”指的是与具有先前结果的累加运算相对应的输出数据路径-参见例如图3a)加载到形成整体的/更大的/复合的流水线(其是与互连的nlink电路相关联的所有流水线的组合)的互连的nlink电路的每个流水线。(参见图5a和图6a-图6c)。在一个实施例中,经由在架构中互连的相关联的nlink电路将给定集群的多个mac流水线并入循环移位路径或环形架构中。在另一个实施例中,将给定集群的所有mac流水线经由相关联的nlink电路并入由连接在一起的所有mac流水线组成的循环移位路径或环形架构中,如图5a中图示的。
[0085]
值得注意的是,复合的或组合的mac流水线的大小或长度可经由配置nlink电路配置以将相关联的执行流水线并入复合的流水线中(其是与互连的nlink电路相关联的所有流水线的组合)。经由配置与包括复合的或组合的mac流水线的多个mac流水线相关联(并且,在一个实施例中,专用于)的nlink电路,mac流水线中mac的大小、长度或数量是可配置的(更大/增加或更小/减少)。例如,较大的复合流水线包括更多互连的nlink电路(每个与一个或多个mac流水线相关联),更多互连的nlink电路将更大数量的mac流水线(和更大数量的mac)互连到复合的或组合的mac流水线中。相比之下,较小的复合的流水线包括较少互连的nlink电路,较少互连的nlink电路将较少数量的mac流水线(和较少数量的mac)互连到复合的或组合的mac流水线中。如上所提及的,由控制/配置电路系统实现的配置可以是一次性可编程的(例如,在制造时,经由例如可编程熔丝阵列)或多次性可编程的(包括例如在启动/上电、初始化时和/或原位)。
[0086]
在另一个实施例中,经由互连相邻nlink电路的mac_i和mac_o端口以互连mac电路
系统,将单个移位路径配置在循环移位路径(环)中用于中间累加值。参考图5b,nlink电路(例如,nlink a)的mac_o端口连接到相邻nlink电路(例如,在所示实施例中,nlink b-设置在nlink a“上方”的nlink电路,其中数据流自下而上)的mac_i端口。在这个图示的实施例中,最底部的nlink电路的mac_i端口被配置为从最上部的link电路经由其mac_o端口接收中间累加数据以完成环形架构(例如,在图示的实施例中,nlink x-设置在nlink的“顶部”、端部或边缘的nlink电路,其中数据流自上而下完成环)。最底部的nlink电路的mac_o端口被输入到与其相邻的nlink电路的mac_i端口。因此,本实施例中的处理操作的循环移位路径或环形架构采用相邻nlink电路的mac_i和mac_o端口来形成遍历多个mac流水线的每个mac流水线的每个乘法器-累加器电路的路径以通过/在多个mac流水线之间传输或提供中间累加值。
[0087]
在一个实施例中,经由在架构中互连的相关联的nlink电路在循环移位路径或环形架构中并入给定集群的多个mac流水线,如图5b中所反映的。在另一个实施例中,给定集群的所有mac流水线经由相关联的nlink电路的配置并入循环移位路径或环形架构中。
[0088]
参考图7a-图7c,在以图5b中所示的循环移位路径或环形架构配置的单个移位路径的一个实施例中,nlink电路被配置为提供适当的mac_i和mac_o路由。首先,标记为“累加数据路径”的信号路径图示了像图3a中所示的配置那样的连接,其中每个nlink电路的mac_i/mac_o端口连接以提供相关联的mac流水线的互连的乘法-累加电路的环形拓扑或架构。累加数据路径将中间累加的累加数据转移到相邻的nlink电路(“第二nlink电路
”‑
参见例如图5b中的nlink b),并且通过扩展,转移到与该相邻nlink电路相关联的执行流水线,其中中间累加输入到其mac流水线中。通过nlink电路(而不是遍历流水线)的累加数据路径将nlink配置为输出最顶部的nlink中的mac_o信号,以通过nlink电路连接到最底部的nlink电路中的mac_i信号(参见例如图5b中的nlink x)。也就是说,未施加到流水线的累加数据路径上的信号图示了相邻nlink电路之间的mac_i和mac_o路由的连接(参见图5b中的mac_i和mac_o路由)。
[0089]
值得注意的是,图7a-图7c的nlink电路的其它连接和配置(例如,在nlink电路及其相关联的执行流水线之间)像图3a中所示的那些那样,但为了清楚起见在图7a-图7c中未阐述(例如,存储器地址、数据和控制路径、输入数据路径和累加数据路径-参见例如图3a-图3f)。此外,尽管已经描述了自下而上的数据流(图5a-图5c和图7a-图7c),但数据流可以自上而下(即,nlink x等至nlink b至nlink a)-或任何其它方向或路径-所有这些都旨在落入本发明的范围内。此外,如本文所述,“端口”(例如,mac_i和mac_o端口)是从控制/配置或nlink电路进入和退出的物理点;从控制/配置或nlink电路进入或退出的所有物理形式均旨在落入本发明的范围内(例如,集成电路中/的导体或金属布线)。
[0090]
简而言之,在操作中,与互连的nlink电路的每个nlink电路相关联的执行流水线在数据处理之前经由在输入数据路径(参见,例如,图6a-图6c)从例如被移入输入数据的存储器读取的数据以及输出数据(可以表示先前结果的累加数据(“在单个流水线内移位mac_sx”指的是与具有先前结果的累加运算相对应的输出数据路径
–
参见例如图3a)将数据加载到形成整体的/更大的流水线的互连的nlink电路的每个流水线(其是与连接的nlink电路相关联的所有流水线的组合)。(参见图5b和图7a-图7c)。在一个实施例中,给定集群的所有mac流水线并入由经由相关联的nlink电路连接在一起的所有mac流水线组成的闭环或环形
架构中。
[0091]
值得注意的是,整体的、完整的或组合的流水线的大小或长度可经由配置nlink电路配置以将相关联的执行流水线并入到整体的、更大的、组合的或复合的流水线中(这是与连接的nlink电路相关联的所有流水线的组合)。如上所提及的,由控制/配置电路系统实现的配置可以是一次性可编程的(例如,在制造/测试时,经由例如可编程熔丝阵列)或多次性可编程的(包括,例如,在启动/上电、初始化时和/或原位)。
[0092]
在另一个实施例中,经由互连相邻nlink电路的mac_si和mac_so端口在循环移位路径(环)中配置单个移位路径以用于最终累加值。参考图5c,nlink电路的mac_so端口连接到相邻nlink电路的mac_si端口(例如,在图示的实施例中,设置在“上方”的nlink电路(例如,nlink b相对于nlink a),其中数据流自下而上)。在此图示的实施例中,最底部的nlink电路的mac_si端口被配置为从存储器(例如,l2存储器,诸如sram)接收输入数据。此外,最上部的link电路被配置为经由其mac_so端口向存储器输出数据。最底部的nlink电路(nlink a)的mac_so端口输入到与其相邻的nlink电路(nlink b)的mac_si端口中。因此,用于处理操作的最终累加值的经由循环移位路径实现的单个移位路径在该实施例中采用相邻nlink电路的mac_si和mac_so端口,以形成遍历多个mac流水线的每个mac流水线的每个乘法器-累加器电路的路径,以传输或提供通过/在多个mac流水线之间的中间累加值。在一个实施例中,给定集群的所有mac流水线并入循环移位路径或环形架构中。在另一个实施例中,给定集群的多个(但不是所有)mac流水线并入循环移位路径或环形架构中。
[0093]
参考图8a-图8c,在图5c中所示的循环移位路径或环形架构中配置的单个移位路径的一个实施例中,nlink电路被配置为提供适当的mac_si和mac_so路由。首先,nlink电路的某些配置(例如,标识为输入数据端口和累加数据端口的端口)像图3a中所示的那样,但为了清楚起见,在图8a-图8c中未阐述。nlink电路中的输出数据路径图示了用于实现(一个或多个)处理序列中的每个处理序列的最终累加值的循环移位路径(环形)架构的配置。
[0094]
nlink电路被配置为提供适当的mac_si-mac_so路由以加载用于组合的流水线(由多个流水线组成(其中在说明性实施例中,多个流水线中的每个流水线包括两行乘法-累加电路-参见,例如,图3a、图3b、图3e和图3f)的数据。参考图8a,本实施例的输出数据路径配置nlink电路之一的mac_si端口(“第一nlink电路
”‑
例如,图5c中的nlink a)以接收数据(例如,从存储器)并将该数据提供给相关联的执行流水线进行处理,并提供给mac_so端口。该第一nlink电路的mac_so端口被配置为经由图8a中图示的nlink上中的输出数据端口将数据输出到相邻的nlink电路(“第二nlink电路
”‑
例如,图5c中的nlink a)。此后,经由该相邻nlink电路的mac_so/mac_si端口(参见图8所示的nlink下)将数据提供给与该相邻nlink电路相关联的执行流水线。这里,第二nlink电路的mac_so端口(例如,图5c中的nlink b)连接到流水线的mac_si端口。该第二nlink电路的mac_so端口被配置为连接到并将经处理的数据输出到另一个相邻的nlink电路(“第三nlink电路”)和与该第三nlink电路相关联的执行流水线。依次类推。(例如,图5c中的nlink x)。nlink电路的这种配置连接mac_so-mac_si-以促进流水线操作。
[0095]
如本文所述,“端口”(例如,mac_si端口、mac_so端口)是从控制/配置或nlink电路进入和退出的物理点;从控制/配置或nlink电路进入或退出的所有物理形式均旨在落入本发明的范围内(例如,在集成电路中/的导体或金属布线)。
[0096]
参考图8c,可以是(整体的、完整的或组合的流水线的-包括多个nlink电路和相关联的流水线-参见图5c中的nlink x)顶部、端部或边缘nlink电路的控制/配置电路或nlink电路之一被配置为从另一个nlink电路接收数据(参见图8b),并将这种路径路由到与之相关联的处理流水线,到nlink电路中的mac_so端口,以连接并将数据输出到例如存储器(例如,l2存储器-诸如sram)。值得注意的是,图8a-图8c的nlink电路的某些其它信号/数据路径和配置(例如,在nlink电路及其相关联的执行流水线之间)像图3a中所示那样(例如,输入数据路径)但为了清楚起见未在图8a-图8c中阐述(例如,存储器地址、数据和控制路径、输入数据路径和累加数据路径-参见,例如,图3a-图3f)。
[0097]
简而言之,在操作中,与互连的nlink电路的每个nlink电路相关联的执行流水线在数据处理之前在输出数据路径上(参见图8a)经由从被移入了数据的存储器读取的数据将最终累加数据值的数据加载到形成整体的/较大的流水线(其是与连接的nlink电路相关联的所有流水线的组合)的互连的nlink电路的每个流水线。(参见图5c和图8a-图8c)。如上所述,在一个实施例中,给定集群的所有mac流水线经由相关联的nlink电路并入在由连接在一起的所有mac流水线组成的循环移位路径或环形架构中,如图5c中所示。
[0098]
值得注意的是,整体的、完整的或组合的流水线的大小或长度可经由配置nlink电路配置以将相关联的执行流水线并入到整体的、更大的、组合的或复合的流水线中(其是与连接的nlink电路相关联的所有流水线的组合)-或配置nlink电路以将相关联的执行流水线并入到较小的、组合的或复合的流水线中(其是与连接的nlink电路相关联的较少流水线的组合)。如上所提及的,由控制/配置电路系统实现的配置可以是一次性可编程的(例如,在制造时,经由例如可编程熔丝阵列)或多次性可编程的(包括,例如,在启动/上电、初始化时和/或原位)。
[0099]
在又另一个实施例中,控制/配置或nlink电路的示例性流水线和互连架构以及与其相关联的mac流水线包括经由多个控制/配置或nlink电路的串联连接而串联连接多个这样的mac执行流水线,其中流水线架构包括以下中的两个或三个/全部:(i)经由互连相邻nlink电路的di/i和di/o端口以及与互连的nlink电路的每个nlink电路相关联的每个mac流水线来提供单个移位链或路径(参见图5a和图6a-图6c),(ii)经由互连相邻nlink电路的mac_i和mac_o端口以互连mac电路系统来以循环移位路径(环)配置单个移位路径用于中间累加值(参见图5b和图7a-图7c),以及(iii)经由互连相邻nlink电路的mac_si和mac_so端口以循环移位路径(环)配置单个移位路径用于最终累加值(参见图5c和图8a-图8c)。在该实施例中,串联连接的每个控制/配置电路相关联于(并且在一个实施例中,专用于和/或直接连接到)包括复合的mac执行流水线的多个mac流水线之一,其中,当控制/配置或nlink电路连接时,每个乘法器-累加器电路流水线是由与每个串联的mac流水线相关联的串联mac形成的复合的/较大的线性mac流水线的一部分。(参见图5a-图5c)。此外,nlink电路的某些信号/数据路径和配置(例如,在nlink电路与其相关联的执行流水线之间)可以像图3a-图3f中的那样实现(例如,存储器地址、数据和控制路径)。
[0100]
值得注意的是,在此实施例(即,图5a-图5c)中,可经由编程或配置nlink电路来配置复合的、完整的或组合的流水线的大小或长度,以将相关联的执行流水线并入到较大的复合的流水线中(其是与连接的nlink电路相关联的所有流水线的组合)或并入到较小的复合的流水线中(其包括更少的互连的nlink电路和更少的相关联的mac流水线)。如上所提及
的,控制/配置电路系统实现的配置可以是一次性可编程的(例如,在制造时,经由例如可编程熔丝阵列)或多次性可编程的(包括例如在启动/上电、初始化时和/或原位)。
[0101]
参考图9,根据本发明的某些方面的实施例,集成电路可以包括可配置处理电路系统以实现附加数据处理操作,包括例如数据操作数的预处理和累加结果的后处理。这里,可配置处理电路被组织成四个电路块(a0,a1,a2,a3),其中可配置处理电路系统的每个电路块可以被配置为进行一个或多个操作。此外,可配置处理电路系统包括附加可编程/可配置电路系统,以建立、配置或“引导”数据路径以实现一个或多个预处理操作(例如,预处理数据操作数)和/或一个或多个后处理操作(例如,来自mac处理流水线的累加结果的进一步/后续处理-可以是复合的、完整的或组合的mac处理流水线-参见,例如,图5a-图5c)。
[0102]
可配置处理电路系统包括进行一个或多个浮点和定点操作的电路(无论是对输入数据的预处理和/或累加结果的后处理),这些操作包括例如加/减寄存器值、乘以寄存器值、将值从整数数据格式转换为浮点数据格式、将值从浮点数据格式转换为整数数据格式、调整值的格式精度(例如,增加值的精度或降低值的精度)、利用(一个或多个)一元函数(例如,以下中的一个或多个:求反、平方根、反平方根、双曲正切、sigmoid等)的一个或多个转换。继续参考图9,可配置处理电路系统中的多路复用器配置并建立数据路径和/或引导数据通过数据路径,到(一个或多个)选择的处理电路,以实现一个或多个选择的操作和/或绕过一个或多个操作。在一个实施例中,在启动执行序列(即,通过mac执行流水线处理)之前,经由可配置处理电路系统的多路复用器的控制来配置路径和/或引导。
[0103]
例如,在一个实施例中,可配置处理电路系统可以包括激活电路系统以实现一个或多个操作或过程,包括例如线性和/或非线性激活操作和/或阈值函数,如于2021年2月2日提交的题为“mac processing pipeline having activation circuitry,and methods of operating same”的美国专利申请no.63/144,553中描述和/或图示的。这里,激活电路系统可以连接到mac处理流水线的输出端,以进一步处理最初由mac处理流水线处理的数据(例如,滤波图像数据)。激活电路系统可以包括一个或多个电路以经由一个或多个操作处理这些数据,一个或多个操作包括例如线性和/或非线性激活操作和/或阈值函数。单独或组合的一个或多个电路可以进行特定的操作,包括例如特定的线性或非线性激活操作或阈值函数。'553申请在此通过引用整体并入本文。
[0104]
值得注意的是,可配置处理电路系统可以是一次性可编程的(例如,在制造时,经由例如可编程熔丝阵列)或多次性可编程的(包括,例如,在启动/上电、初始化时和/或原位(即,在集成电路的操作期间))。在一个实施例中,在处理流水线的执行序列的操作或实现之前,经由多路复用器对配置进行编程,以建立到一个或多个选择的处理电路中的数据路径或绕过这样的电路。
[0105]
可配置处理电路系统及其连接在图3a、图3c、图6a-图6c、图7a-图7c和图8a-图8c中图示的控制/配置电路或nlink电路的示例性配置的详细示意性框图中叠加(用于图示目的)(参见,控制/配置电路或nlink电路的每个示例性配置的“nlink(上)”部分的左侧)。在一个实施例中。在一个实施例中,例如,可配置处理电路系统对于任何(或所有)nlink电路可访问,例如,经由互连网络(参见图1b),其中互连网络可配置以将可配置处理电路系统连接到一个或多个nlink电路和与其相关联的mac处理流水线。
[0106]
可配置处理电路系统可以是一次性可编程的(例如,在制造时,经由例如可编程熔
丝阵列)或多次性可编程的(包括,例如,在启动/上电、初始化时和/或原位(即,在集成电路的操作期间))。在一个实施例中,在操作或实现处理流水线的执行序列之前,经由多路复用器对配置进行编程,以将数据路径建立到一个或多个选择的处理电路中或绕过此类电路。
[0107]
本文描述和图示了许多发明。尽管已经描述和图示了发明的某些实施例、特征、属性和优点,但应理解,本发明的许多其它实施例以及不同的和/或类似的实施例、特征、属性和优点从描述和图示是清楚的。因此,本文描述和图示的发明的实施例、特征、属性和优点并不是穷尽的,应该理解,本发明的这些其它类似的以及不同的实施例、特征、属性和优点在本发明的范围内。
[0108]
例如,在一个实施例中,线性处理流水线和并入此流水线中的mac可以被配置为旋转、转移或移动(在执行周期之前、期间或完成时)输入数据值(而不是累加值-在执行序列的每个执行周期期间维持、存储或保持在特定的mac中),如于2021年3月3日提交的美国临时专利申请no.63/156,263“mac processing pipelines,circuitry to configure same,and methods of operating same”中描述和图示的;'263申请通过引用将其整体并入本文。简而言之,在操作中,在将初始数据输入值输入或加载到线性mac处理流水线的mac中之后,输入数据值逐周期地从线性流水线的一个mac旋转、转移或移动到流水线的紧接在后面的mac并且在处理流水线的该下一个mac的乘法器电路的乘法运算中采用,如'263申请中描述和/或图示的。
[0109]
例如,可以例如原位(即,在集成电路的操作期间)经由nlink电路的配置来调整(即,增加或减少)连结的程度或长度(即,互连以实现或进行乘法和累加运算的乘法器-累加器电路的数量),来满足系统要求或约束(例如,系统性能的基于时间的要求)。实际上,在一个实施例中,经由与乘法器-累加器电路的行相关联的nlink电路中的电路系统(例如,多路复用器)的控制将乘法器-累加器电路的行可以连接或断开以调整连结的程度或长度(即,在例如执行或处理流水线中增加或减少互连以进行乘法和累加运算的乘法器-累加器电路的数量)。(参见,例如'345和'306申请,分别是图7a-图7c和图6a-图6c以及与其相关联的文本)。
[0110]
本发明的mac处理流水线或架构以及用于配置和控制此类流水线/架构的电路系统可以采用或实现同时和/或并行处理技术、架构、流水线和配置,如于2020年3月11日提交的题为“multiplier-accumulator processing pipelines and processing component,and methods of operating same”的美国专利申请no.16/816,164和于2019年4月9日提交的题为“multiplier-accumulator circuitry and system having processing pipeline and methods of operating and using same”的美国临时专利申请no.62/831,413中描述和/或图示的。这里,可以对控制/配置电路系统(包括多个控制/配置电路)进行编程以配置流水线以实现'164和'413申请中描述和/或图示的同时和/或并行处理技术,以例如增加数据处理的吞吐量;此类申请通过引入整体并入本文。
[0111]
在一个实施例中,本发明的mac处理流水线或架构以及用于配置和控制此类流水线/架构的电路系统可以采用winograd处理技术来处理图像数据。这里,转换电路系统可以将滤波权重的数据格式从高斯浮点数据格式转换为具有适当特性的按块缩放的分数格式,以促进实现与执行流水线的乘法器-累加器电路系统有关的winograd处理技术。预处理和/或后处理可以在图9中描述和图示的可配置处理电路系统中实现。值得注意的是,除其它之
外,实现winograd处理技术的乘法器-累加器执行流水线的电路系统、结构、架构、功能和操作的细节描述和/或图示于:(1)于2020年2月20日提交的题为“multiplier-accumulator circuitry having processing pipelines and methods of operating same”的美国专利申请no.16/796,111,和/或(2)于2019年10月2日提交的题为“multiplier-accumulator circuitry processing pipeline and methods of operating same”的美国临时专利申请no.62/909,293)。这些专利申请通过引用并入本文。
[0112]
此外,尽管在乘法器-累加器电路系统的背景下描述和图示了本发明,但是本发明的电路系统和操作可以代替乘法电路系统、或者除此之外、替换/实现对数加法电路系统和转换电路系统,以促进与本发明一致地连结对数加法和累加运算。例如,本发明可以与美国专利申请no.17/092,175(于2020年11月6日提交)和于2019年12月4日提交的题为“logarithmic addition-accumulator circuitry,processing pipeline including same and method of operating same”的美国临时专利申请no.62/943,336结合采用,这些专利申请通过引用整体并入本文。在这点上,可以在本发明的处理流水线以及用于配置和控制此类流水线的电路系统中采用实现对数加法-累加器电路系统(和操作这种电路系统的方法)的流水线,其中例如与推断操作有关地基于对数格式处理数据(例如,图像数据)。因此,尽管在乘法器-累加器电路系统的背景下描述和图示了本发明,但本发明的电路系统和操作可以代替乘法电路系统、或者另外、替换/实现对数加法电路系统和转换电路系统以促进与本发明一致地连结对数加法和累加运算。
[0113]
此外,本发明可以采用电路系统、功能和操作来增强滤波权重或系数的动态范围,如于2020年10月20日提交的题为“mac processing pipeline using filter weights having enhanced dynamic range,and methods of operating same”的非临时专利申请no.17/074,670和/或于2019年11月5日提交的题为“processing pipeline circuitry using filter coefficients having enhanced dynamic range and methods of operating same”的美国临时专利申请no.62/930,601中描述和/或图示的。也就是说,本发明可以使用电路系统和技术来增强'601临时申请的滤波权重或系数的动态范围。此类电路系统和技术可以在图9中描述和图示的可配置处理电路系统中实现。'601临时申请通过引用整体并入本文。
[0114]
此外,本发明可以采用输入数据和滤波权重的各种数据格式。例如,本发明可以采用实现输入数据和/或滤波权重的数据格式(或修改数据格式)的电路系统、功能和操作,如在(1a)美国非临时专利申请no.16/900,319和(1b)美国临时专利申请no.62/865,113和/或(2a)美国非临时专利申请no.17/140,169和(2b)美国临时专利申请no.62/961,627中描述和/或图示的。这种预处理和/或后处理可以在图9中描述和图示的可配置处理电路系统中实现。值得注意的是,这四(4)个申请通过引用整体并入本文。
[0115]
值得注意的是,可以例如原位(即,在集成电路的操作期间)实现一系列多个乘法器-累加器电路系统的配置、选择、修改和/或调整,以例如进行或提供特定操作和/或满足或超过系统要求或约束(例如,基于时间的要求或约束)。
[0116]
此外,尽管本文描述和图示的许多实施例连接或配置相邻的nlinks电路以形成或提供更大的执行流水线(相对于与一个nlinks电路相关联的流水线),但实施例可以连接不相邻的nlinks电路(以及通过扩展乘法器-累加器电路的不相邻的行)以促进流水线处理并
提供连结架构;例如,nlinks接口连接器的路由选择电路系统(例如,(一个或多个)多路复用器)可以被配置为将一行乘法器-累加器电路的最后乘法器-累加器电路的输出端连接到一个或多个不同行(相邻和/或不相邻)的乘法器-累加器电路的第一乘法器-累加器电路的输入端。为避免疑问,本文描述和图示的所有实施例可以经由不相邻的nlinks电路(以及通过扩展乘法器-累加器电路的不相邻的行)来实现-然而,为简洁起见,将不会在不相邻的nlinks电路和乘法器-累加器电路的不相邻的行的上下文中图示或分开重述这些实施例。
[0117]
重要的是,本发明既不限于任何单个方面或其实施例,也不限于这些方面和/或实施例的任何组合和/或置换。此外,本发明的每个方面和/或其实施例可以单独使用或者也可以与本发明的一个或多个其它方面和/或其实施例结合使用。
[0118]
此外,尽管某些实施例中的存储器单元被图示为静态存储器单元或存储元件,但本发明可以采用动态或静态存储器单元或存储元件。实际上,如上所述,此类存储器单元可以是锁存器、触发器或任何其它静态/动态存储器单元或现在已知或后来开发的存储器单元电路或存储元件。
[0119]
值得注意的是,本文公开的各种电路、电路系统和技术可以使用计算机辅助设计工具来描述,并在其行为、寄存器转移、逻辑组件、晶体管、布局几何形状和/或其它特性方面,作为以各种计算机可读介质体现的数据和/或指令来表达(或表示)。可以在其中实现此类电路、电路系统、布局和布线表达的文件和其它对象的格式包括但不限于支持行为语言(诸如c、verilog和hldl)的格式、支持寄存器级描述语言(如rtl)的格式和支持几何描述语言(诸如gdsii、gdsiii、gdsiv、cif、mebes)的格式以及现在已知或以后开发的任何其它格式和/或语言。其中可以体现这种格式化数据和/或指令的计算机可读介质包括但不限于各种形式的非易失性存储介质(例如,光、磁或半导体存储介质)以及可以用于通过无线、光学或有线信令介质或其任何组合转移此类格式化数据和/或指令的载波。通过载波转移此类格式化数据和/或指令的示例包括但不限于经由一个或多个数据转移协议(例如,http、ftp、smtp等)在互联网和/或其它计算机网络上转移(上传、下载、电子邮件等)。
[0120]
实际上,当经由一个或多个计算机可读介质在计算机系统内接收时,以上描述的电路的基于这种数据和/或指令的表达可以在计算机系统内由处理实体(例如,一个或多个处理器)结合一个或多个其它计算机程序的执行来处理,其它计算机程序包括但不限于网表生成程序、布局和布线程序等,从而生成这些电路的物理表现的表示或图像。该表示或图像然后可以用在器件制造中,例如通过在器件制造处理中使得能够生成用于形成电路的各种组件的一个或多个掩模。
[0121]
此外,本文公开的各种电路、电路系统和技术可以经由使用计算机辅助设计和/或测试工具的仿真来表示。电路、电路系统、布局和布线和/或由此实现的技术的仿真可以由计算机系统实现,其中经由计算机系统来模拟、复制和/或预测这些电路、电路系统、布局和由此实现的技术的特性和操作。本发明还涉及对本发明电路、电路系统和/或由此实现的技术的这种仿真,且因此旨在也落入本发明的范围内。对应于这种仿真和/或测试工具的计算机可读介质也旨在落入本发明的范围内。
[0122]
值得注意的是,本文提及“一个实施例”或“实施例”(或类似)意指在本发明的一个、一些或所有实施例中可以包括、采用和/或并入与实施例有关地描述的特定特征、结构或特性。在说明书中使用或出现短语“在一个实施例中”或“在另一个实施例中”(或类似)并
非引用相同的实施例,也不是指必然与一个或多个其它实施例相互排斥的分开或替代实施例,也不限于单一排他性实施例。这同样适用于术语“实现方式”。本发明既不限于任何单个方面或其实施例,也不限于这些方面和/或实施例的任何组合和/或置换。此外,本发明的每个方面和/或其实施例可以单独使用或与本发明的一个或多个其它方面和/或其实施例的组合使用。为简洁起见,本文未分开讨论和/或图示某些置换和组合。
[0123]
此外,本文描述为“示例性”的实施例或实现方式不应被解释为例如相对于其它实施例或实现方式是理想的、优选的或有利的;而是,其旨在传达或指示实施例或多个实施例是(一个或多个)示例实施例。
[0124]
虽然已经在某些具体方面描述了本发明,但是对于本领域技术人员来说,许多附加的修改和变化将是清楚的。因此应当理解,在不脱离本发明的范围和精神的情况下,可以以不同于具体描述的方式实施本发明。因此,本发明的实施例在所有方面都应被视为说明性/示例性而非限制性的。
[0125]
术语“包括”、“包括有”、“包含”、“包含有”、“具有”和“有”或其任何其它变体旨在于涵盖非排他性的包含,因此处理、方法、电路、物品或包括零件或元件的列表的设备不仅包括这些零件或元件,还可以包括未明确列出或这些处理、方法、物品或设备固有的其它零件或元件。此外,本文使用术语“连接”、“被连接”、“连接到”或“连接件”应被广义地解释为包括直接或间接(例如,经由一个或多个导体和/或中间器件/元件(有源或无源)和/或经由电感或电容耦合)),除非另有意图(例如,使用术语“直接连接”或“被直接连接”)。
[0126]
本文中的术语“一”和“一个”不表示量的限制,而是表示存在至少一个所引用的项目。此外,术语“第一”、“第二”等在本文中不表示任何顺序、量或重要性,而是用于将一个元件/电路/特征与另一个区分开来。
[0127]
此外,术语“集成电路”除其它之外意指任何集成电路,包括例如通用或非专用集成电路、处理器、控制器、状态机、门阵列、soc、pga和/或fpga。术语“集成电路”还意指例如处理器、控制器、状态机和soc-包括嵌入式fpga。
[0128]
此外,术语“电路系统”除其它之外意指电路(无论是集成的还是其它的)、一组这样的电路、一个或多个处理器、一个或多个状态机、一个或多个实现软件的处理器、一个或多个门阵列、可编程门阵列和/或现场可编程门阵列,或一个或多个电路(无论是集成的还是其它的)、一个或多个状态机、一个或多个处理器、一个或多个实现软件的处理器、一个或多个门阵列、可编程门阵列和/或现场可编程门阵列的组合。术语“数据”除其它之外意指无论处于模拟还是数字形式的(一个或多个)电流或电压信号(复数或单数),其可以是单个位(或类似)或多个位(或类似)。
[0129]
值得注意的是,术语“mac电路”意指乘法器-累加器流水线的乘法器-累加器电路系统的乘法器-累加器电路。例如,在美国专利申请no.16/545,345的图1a-图1c的示例性实施例以及与其相关联的文本中描述和图示了乘法器-累加器电路。在权利要求书中,术语“mac电路”意指例如像在美国专利申请no.16/545,345的图1a-图1c的示例性实施例中及其相关联的文本中描述和图示的乘法-累加器电路等。然而,值得注意的是,术语“mac电路”不限于根据例如美国专利申请no.16/545,345的图1a-图1c的示例性实施例图示和/或描述的特定电路、逻辑、块、功能和/或物理图、块/数据宽度、数据路径宽度、带宽和处理。
[0130]
在权利要求书中,“行”意指行、列和/或行和列。例如,在权利要求书中,“mac电路
的行”意指(i)mac电路的行,(ii)mac电路的列和/或(iii)mac电路的行和mac电路的列-所有这些都旨在落入与权利要求的范围有关的mac电路的行的含义内。在权利要求书中,“列”意指列、行和/或列和行。例如,在权利要求书中,“控制/配置电路的列”意指(i)控制/配置电路的列,(ii)控制/配置电路的行和/或(iii)控制/配置电路的列和控制/配置电路的行-所有这些都旨在落入与权利要求的范围有关的控制/配置电路的列的含义内。
技术特征:1.一种集成电路,包括:组织成多个组的多个乘法器-累加器电路,其中每组乘法器-累加器电路包括串联连接的多个乘法器-累加器电路以进行多个乘法和累加运算,其中每组中的多个乘法器-累加器电路中的每个乘法器-累加器电路包括:乘法器,将数据乘以乘法器权重数据并生成乘积数据,和累加器,耦合到相关联的乘法器-累加器电路的乘法器,以将输入数据和相关联的乘法器的乘积数据相加,以生成求和数据;多个控制/配置电路,其中,每个控制/配置电路直接连接到并与一组乘法器-累加器电路相关联,其中每个控制/配置电路包括:多个数据路径,其中每个数据路径包括:第一端,直接连接到相关联组的乘法器-累加器电路的多个串联连接的乘法器-累加器电路中的第一乘法器-累加器电路的输入端,第二端,直接连接到相关联组的乘法器-累加器电路的多个串联连接的乘法器-累加器电路中的最后乘法器-累加器电路的输出端,其中数据路径的第一端通过相关联组的多个乘法器-累加器的多个串联连接的乘法器-累加器电路耦合到数据路径的第二端,第三端,能够被配置为连接到多个控制/配置电路中的不同的一个控制/配置电路的对应数据路径的端部,和第四端;其中,每个控制/配置电路的多个数据路径包括:第一数据路径,在执行序列开始时接收要在每组多个乘法器-累加器电路的多个串联连接的乘法器-累加器电路中的每个乘法器-累加器电路中处理的输入数据。2.根据权利要求1所述的集成电路,其中:多个控制/配置电路包括第一控制/配置电路、第二控制/配置电路和第三控制/配置电路,第一控制/配置电路的第一数据路径的第三端被配置为连接到第二控制/配置电路的第一数据路径的第三端,以及第一控制/配置电路的第一数据路径的第四端耦合到存储输入数据的第一存储器。3.根据权利要求2所述的集成电路,其中:第二控制/配置电路的第一数据路径的第四端耦合到第三控制/配置电路的第一数据路径的第三端。4.根据权利要求2所述的集成电路,其中:每个控制/配置电路的多个数据路径进一步包括第二数据路径,以在执行序列结束时输出来自每组多个乘法器-累加器电路的多个串联连接的乘法器-累加器电路中的每个乘法器-累加器电路的数据,第一控制/配置电路的第二数据路径的第三端被配置为连接到第二控制/配置电路的第二数据路径的第三端,第二控制/配置电路的第二数据路径的第四端耦合到第三控制/配置电路的第二数据路径的第三端,以及其中,集成电路进一步包括可配置处理电路系统,该可配置处理电路系统耦合到第三
控制/配置电路的第二数据路径的第四端,以:(i)接收来自每组多个乘法器-累加器电路的多个串联连接的乘法器-累加器电路中的每个乘法器-累加器电路的输出数据和(ii)处理输出数据,其中经处理的输出数据此后将存储在第二存储器中。5.根据权利要求4所述的集成电路,其中:可配置处理电路系统包括多个可配置数据路径和在其中连接的一个或多个电路,其中一个或多个电路经由加/减寄存器值、乘以寄存器值、从整数数据格式转换为浮动点数据格式、从浮点数据格式转换为整数数据格式、格式精度调整和/或(一个或多个)一元函数来处理输出数据,(一个或多个)一元函数包括:求反、平方根、反平方根、双曲正切和/或sigmoid。6.根据权利要求1所述的集成电路,其中:每个控制/配置电路的多个数据路径进一步包括第三数据路径,以在执行序列期间将部分累加值旋转到每组多个乘法器-累加器电路的多个串联连接的乘法器-累加器电路中的每个乘法器-累加器电路。7.一种集成电路,包括:组织成多个组的多个乘法器-累加器电路,其中每组乘法器-累加器电路包括串联连接的多个乘法器-累加器电路以进行多个乘法和累加运算,其中每组中的多个乘法器-累加器电路中的每个乘法器-累加器电路包括:乘法器,将数据乘以乘法器权重数据并生成乘积数据,和累加器,耦合到相关联的乘法器-累加器电路的乘法器,以将输入数据和相关联的乘法器的乘积数据相加以生成求和数据;多个控制/配置电路,其中每个控制/配置电路直接连接到并与一组乘法器-累加器电路相关联,其中每个控制/配置电路包括:多个数据路径,其中每个数据路径包括:第一端,直接连接到相关联组的乘法器-累加器电路的多个串联连接的乘法器-累加器电路中的第一乘法器-累加器电路的输入端,第二端,直接连接到相关联组的乘法器-累加器电路的多个串联连接的乘法器-累加器电路中的最后乘法器-累加器电路的输出端,其中数据路径的第一端通过相关联组的多个乘法器-累加器电路的多个串联连接的乘法器-累加器电路耦合到数据路径的第二端,第三端,能够被配置为连接到多个控制/配置电路中的不同一个控制/配置电路的对应数据路径的端部,和第四端;其中,每个控制/配置电路的多个数据路径包括:第一数据路径,以在执行序列期间向每组多个乘法器-累加器电路输入累加值以及从每组多个乘法器-累加器电路输出累加值。8.根据权利要求7所述的集成电路,其中:第一数据路径在执行序列期间向每组多个乘法器-累加器电路输入部分累加值以及从每组多个乘法器-累加器电路输出部分累加值。9.根据权利要求7所述的集成电路,其中:多个控制/配置电路包括第一控制/配置电路、第二控制/配置电路和第三控制/配置电
路,第一控制/配置电路的第一数据路径的第三端被配置为连接到第二控制/配置电路的第一数据路径的第三端,第二控制/配置电路的第一数据路径的第四端耦合到第三控制/配置电路的第一数据路径的第三端,以及第三控制/配置电路的第一数据路径的第四端连接到第一控制/配置电路的第一数据路径的第四端。10.根据权利要求9所述的集成电路,其中:多个控制/配置电路设置成行,以及第一控制/配置电路和第三控制/配置电路分别位于多个控制/配置电路的第一和第二边缘。11.根据权利要求9所述的集成电路,其中:每个控制/配置电路的多个数据路径进一步包括第二数据路径,以在执行序列结束时输出来自每组多个乘法器-累加器电路的多个串联连接的乘法器-累加器电路中的每个乘法器-累加器电路的数据,第一控制/配置电路的第二数据路径的第三端被配置为连接到第二控制/配置电路的第二数据路径的第三端,第一控制/配置电路的第二数据路径的第四端耦合到存储输出数据的第二存储器,以及第二控制/配置电路的第二数据路径的第四端耦合到第三控制/配置电路的第二数据路径的第三端。12.根据权利要求11所述的集成电路,其中:第三控制/配置电路的第二数据路径的第四端耦合到存储输出数据的第二存储器。13.根据权利要求9所述的集成电路,其中:每个控制/配置电路的多个数据路径包括第二数据路径,以在执行序列开始时输入来自每组多个乘法器-累加器电路的多个串联连接的乘法器-累加器电路中的每个乘法器-累加器电路的数据,第一控制/配置电路的第二数据路径的第三端被配置为连接到第二控制/配置电路的第二数据路径的第三端,第一控制/配置电路的第二数据路径的第四端耦合到存储输入数据的第一存储器,以及第二控制/配置电路的第二数据路径的第四端耦合到第三控制/配置电路的第二数据路径的第三端。14.根据权利要求13所述的集成电路,其中:每个控制/配置电路的多个数据路径进一步包括第三数据路径,以在执行序列结束时输出来自每组多个乘法器-累加器电路的多个串联连接的乘法器-累加器电路中的每个乘法器-累加器电路的数据,第一控制/配置电路的第三数据路径的第三端被配置为连接到第二控制/配置电路的第三数据路径的第三端,
第一控制/配置电路的第三数据路径的第四端耦合到存储输出数据的第二存储器,以及第二控制/配置电路的第三数据路径的第四端耦合到第三控制/配置电路的第二数据路径的第三端。15.根据权利要求14所述的集成电路,进一步包括:可配置处理电路系统,耦合到第三控制/配置电路的第三数据路径的第四端:以(i)接收来自每组多个乘法器-累加器电路的多个串联连接的乘法器-累加器电路中的每个乘法器-累加器电路的输出数据,和(ii)处理输出数据,其中经处理的输出数据此后将存储在第二存储器中。16.根据权利要求15所述的集成电路,其中:可配置处理电路系统包括多个可配置数据路径和在其中连接的一个或多个电路,其中一个或多个电路经由加/减寄存器值、乘以寄存器值、从整数数据格式转换为浮点数据格式、从浮点数据格式转换为整数数据格式、格式精度调整和/或(一个或多个)一元函数来处理输出数据,(一个或多个)一元函数包括:求反、平方根、反平方根、双曲正切和/或sigmoid。17.一种集成电路,包括:组织成多个组的多个乘法器-累加器电路,其中每组乘法器-累加器电路包括串联连接的多个乘法器-累加器电路以进行多个乘法和累加运算,其中每组中的多个乘法器-累加器电路中的每个乘法器-累加器电路包括:乘法器,将数据乘以乘法器权重数据并生成乘积数据,和累加器,耦合到相关联的乘法器-累加器电路的乘法器,以将输入数据和相关联的乘法器的乘积数据相加,以生成求和数据;多个控制/配置电路,其中,每个控制/配置电路直接连接到并与一组乘法器-累加器电路相关联,其中每个控制/配置电路包括:多个数据路径,其中每个数据路径包括:第一端,直接连接到相关联组的乘法器-累加器电路的多个串联连接的乘法器-累加器电路中的第一乘法器-累加器电路的输入端,第二端,直接连接到相关联组的乘法器-累加器电路的多个串联连接的乘法器-累加器电路中的最后乘法器-累加器电路的输出端,其中数据路径的第一端通过相关联组的多个乘法器-累加器电路的多个串联连接的乘法器-累加器电路耦合到数据路径的第二端,第三端,能够被配置为连接到多个控制/配置电路中的不同一个控制/配置电路的对应数据路径的端部,和第四端;其中,每个控制/配置电路的多个数据路径包括:第一数据路径,输出来自每组多个乘法器-累加器电路的多个串联连接的乘法器-累加器电路中的每个乘法器-累加器电路的数据。18.根据权利要求17所述的集成电路,其中:多个控制/配置电路包括第一控制/配置电路、第二控制/配置电路和第三控制/配置电路,
第一控制/配置电路的第一数据路径的第三端被配置为连接到第二控制/配置电路的第一数据路径的第三端,第一控制/配置电路的第一数据路径的第四端耦合到存储输出数据的存储器,以及第二控制/配置电路的第一数据路径的第四端耦合到第三控制/配置电路的第二数据路径的第三端。19.根据权利要求18所述的集成电路,其中:第三控制/配置电路的第一数据路径的第四端耦合到在执行序列结束时存储输出数据的存储器。20.根据权利要求18所述的集成电路,进一步包括:可配置处理电路系统,耦合在第三控制/配置电路的第一数据路径的第四端与存储器之间,其中可配置处理电路系统能够编程为:(i)接收来自每组多个乘法器-累加器电路的多个串联连接的乘法器-累加器电路中的每个乘法器-累加器电路的输出数据和(ii)后处理输出数据,并将经后处理的输出数据存储在存储器中。21.根据权利要求20所述的集成电路,其中:第一数据路径在执行序列开始时从存储器接收数据,以输入到每组多个乘法器-累加器电路的多个串联连接的乘法器-累加器电路中的每个乘法器-累加器电路中,以及第一控制/配置电路的第一数据路径的第四端耦合到存储器,以在执行序列开始时从存储器接收数据。22.根据权利要求18所述的集成电路,其中:第三控制/配置电路的第一数据路径的第四端耦合到存储器,并且集成电路进一步包括:可配置处理电路系统,耦合在第三控制/配置电路的第一数据路径的第四端与存储器之间,其中可配置处理电路系统包括至少一个可配置数据路径和在其中连接的一个或多个电路。23.根据权利要求22所述的集成电路,其中:至少一个可配置数据路径包括至少一个多路复用器,以及一个或多个电路包括经由加/减寄存器值、乘以寄存器值、从整数数据格式转换为浮点数据格式、从浮点数据格式转换为整数数据格式、格式精度调整和/或(一个或多个)一元函数来处理输出数据的一个或多个电路,(一个或多个)一元函数包括:求反、平方根、反平方根、双曲正切和/或sigmoid。
技术总结一种集成电路,包括控制/配置电路系统,该电路系统与多个互连(例如,串联)的乘法器-累加器电路和/或一行或多行互连(例如,串联)的乘法器-累加器电路接口。控制/配置电路系统可以包括多个控制/配置电路,每个控制/配置电路与至少一个多位MAC执行流水线接口,其中每个流水线包括多个互连(例如,串联)的乘法器-累加器电路。每个控制/配置电路可以包括以下中的一个或多个(或所有)(i)可配置输入数据信号路径,以在(一个或多个)执行序列期间向流水线的MAC提供数据,(ii)可配置累加数据路径,用于在执行序列期间由MAC生成的正在进行/累加的MAC累加总数,以及(iii)可配置输出数据路径,用于由执行序列生成的输出数据(即,经由执行流水线的乘法器-累加器电路或MAC处理器处理的输入数据)。的输入数据)。的输入数据)。
技术研发人员:F
受保护的技术使用者:弗莱克斯-罗技克斯技术公司
技术研发日:2021.03.30
技术公布日:2022/11/1