一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

专用集成电路的双模操作的制作方法

2022-03-23 10:28:49 来源:中国专利 TAG:

专用集成电路的双模操作
1.优先权要求
2.本技术要求2019年8月14日提交的美国专利申请序列号62/886,481的优先权,其全部内容通过引用结合于此。


背景技术:

3.神经网络是机器学习模型,其采用一层或多层模型来为接收的输入生成输出,例如分类。一些神经网络除了输出层之外,还包括一个或多个隐藏层。每个隐藏层的输出被用作网络中下一层(即网络的下一隐藏层或输出层)的输入。网络的每一层根据相应的参数的集合的当前值从接收的输入生成输出。
4.一些神经网络包括一个或多个卷积神经网络层。每个卷积神经网络层都有相关联的核的集合。核可以表示为权重输入的矩阵结构。每个卷积层还可以处理激活输入的集合。激活输入的集合也可以表示为矩阵结构。
5.一些现有系统在软件中为给定的卷积层执行计算。例如,软件可以将该层的每个核应用于激活输入的集合。也就是说,对于每个核,软件可以将可以多维表示的核覆盖在可以多维表示的激活输入的第一部分上。然后,软件可以根据覆盖的元素计算点积。点积可以对应于单个激活输入,例如,在覆盖的多维空间中具有左上角位置的激活输入元素。例如,使用滑动窗口,软件然后可以移动核以覆盖激活输入的第二部分,并计算对应于另一激活输入的另一点积。软件可以重复执行这个过程,直到每个激活输入都有对应的点积。在一些实施方式中,点积被输入到激活函数,该激活函数生成激活值。激活值在被发送到神经网络的后续层之前,可以被组合,例如池化(pool)。


技术实现要素:

6.我们在这里描述集成电路,诸如专用集成电路(asic),其可以基于用于执行给定计算的集成电路的配置以两种模式之一操作。集成电路包括区块(tile)的阵列。在一种模式中,在给定计算中涉及的每个区块与每个其他区块同时(例如,相同的时钟周期)接收用于处理的输入数据。在另一种模式中,故意将延迟引入区块的子集的操作中,使得数据处理的时序在区块的子集之间被错开。例如,集成电路在第二情况下的操作可以通过使集成电路的功耗和电流改变率保持在集成电路的设计约束内,使集成电路对攻击具有鲁棒性。
7.在一个方面,一种用于操作包括多个区块的集成电路芯片的方法包括确定用于计算的执行的集成电路的区块的配置。该方法包括,当区块的配置满足第一标准时,在第一模式中操作集成电路,包括在集成电路的每个区块处同时接收用于计算的相应输入数据。该方法包括,当区块的配置满足第二标准时,在第二模式中操作集成电路,包括:在第一时间,在集成电路的第一组区块的每个区块处同时接收用于计算的相应第一输入数据;在第一时间,将用于计算的相应第二输入数据存储在多个延迟寄存器的每一个中,每个延迟寄存器与集成电路的第二组区块中的一个区块相对应;在第二时间,从延迟寄存器释放第二输入数据,并在第二组区块的每个区块处接收释放的相应第二输入数据。
8.实施例可以包括以下特征中的两个或更多个的一个或任意组合。
9.确定用于计算的执行的区块的配置包括确定可操作用于执行计算的区块的数量和百分比中的一个或多个。第一标准包括可操作用于执行计算的区块的数量或百分比小于阈值数量或百分比,第二标准包括可操作用于执行计算的区块的数量或百分比大于阈值数量或百分比。
10.确定用于计算的执行的区块的配置包括确定可操作用于执行计算的区块的列的数量。第一标准包括可操作用于执行计算的区块的列的数量或百分比小于阈值数量或百分比,第二标准包括可操作用于执行计算的区块的列的数量或百分比大于阈值数量或百分比。
11.该方法包括确定区块的配置是否满足第一标准或第二标准。
12.在第二模式中操作集成电路包括操作复用器以启用延迟寄存器。在第一模式中操作集成电路包括操作复用器以禁用延迟寄存器。
13.第一时间是第一时钟周期,并且第二时间是下一时钟周期。
14.在第一模式中同时接收相应输入数据包括在每个区块处接收输入数据的向量。
15.在第一模式中操作集成电路包括操作集成电路的区块中的每一个来处理相应输入数据。
16.在第二模式中操作集成电路包括:操作第一组的每个区块来处理相应第一输入数据;以及操作第二组的每个区块来处理从延迟寄存器释放的相应第二输入数据。
17.该方法包括从编译器接收第一准则和第二准则的指示。
18.在一个方面,集成电路包括多个延迟寄存器,每个延迟寄存器连接到对应的第一总线线路;多个区块,区块的第一组的每个区块连接到对应的第二总线线路,区块的第二组的每个区块连接到第一总线线路中的对应的一条;以及控制器,被配置为确定用于计算的执行的第一组区块和第二组区块的配置。当区块的配置满足第一标准时,控制器被配置为控制集成电路在第一模式中操作,在第一模式中,经由第一总线线路和第二总线线路在多个区块的每一个处同时接收用于计算的相应输入数据。当区块的配置满足第二标准时,控制器被配置为控制集成电路在第二模式中操作,在第二模式中,在第一时间,在第一组区块的每个区块处同时接收用于计算的相应第一输入数据;在第一时间,将用于计算的第二输入数据存储在延迟寄存器中的每一个中;并且在第二时间,从延迟寄存器释放第二输入数据,并且在第二组区块的每个区块处接收相应第二输入数据。
19.实施例可以包括以下特征中的两个或更多个的一个或任意组合。
20.集成电路包括连接到每个第二总线线路的复用器。
21.区块以二维阵列布置。
22.集成电路包括专用集成电路(asic)。
23.每个区块包括:多个计算单元;耦合到计算单元的存储器;和可控总线线路,其被配置为向区块输送数据或从区块输送数据。
24.区块中的至少之一被配置为充当控制器。
25.集成电路包括通信接口。
26.集成电路(诸如专用集成电路(asic))在第一同时模式或第二交错模式中的操作可以具有一个或多个以下优点。集成电路可以以对攻击鲁棒的方式操作,并且也可以以有
效的方式工作以便在适当的情况下快速处理。操作模式的选择是自动的,并且可以动态地进行,例如,在每次计算的基础上选择模式。
27.本发明的一个或多个实施例的细节在附图和下面的描述中阐述。从说明书、附图和权利要求中,其他特征和优点将变得显而易见。
附图说明
28.图1是示出专用逻辑电路示例的示意图。
29.图2a和图2b是示出区块的阵列的第一操作模式和第二操作模式的示意图。
30.图3是区块阵列的示意图。
31.图4是流程图。
具体实施方式
32.我们在这里描述集成电路,诸如专用集成电路(asic),其可以基于用于执行给定计算的集成电路的配置以两种模式之一操作。集成电路包括区块的阵列。在一种模式中,在给定计算中涉及的每个区块与每个其他区块同时(例如,相同的时钟周期)接收用于处理的输入数据。在另一种模式中,故意将延迟引入区块的子集的操作中,使得数据处理的时序在区块的子集之间被错开(stagger)。例如,集成电路在第二情况下的操作可以通过使集成电路的功耗和电流改变率保持在集成电路的设计约束内,使集成电路对攻击具有鲁棒性。
33.图1是示出专用逻辑电路,特别是asic 100的示例的示意图。asic 100包括多个区块102,其中区块102中的一个或多个包括专用电路,该专用电路被配置为基于输入数据执行操作,诸如乘法和加法操作。具体而言,每个区块102可以包括单元的计算阵列,其中每个单元被配置为执行数学运算。在一些实施方式中,区块102以网格图案布置,区块102沿着第一维度101(例如,行)和第二维度103(例如,列)布置。例如,在图1所示的示例中,区块102被分成四个不同的部分(110a、110b、110c、110d),每个部分包含288个区块,这些区块以向下18个区块、横向16个区块的网格来布置。在一些实施方式中,图1所示的asic 100可以被理解为包括细分/布置成独立区块的单个收缩(systolic)单元阵列,其中每个区块包括单元的子集/子阵列、本地存储器和总线线路。来自区块102的输出被提供给向量处理单元104,向量处理单元104基于来自区块102的输出来计算向量计算输出值。向量处理单元104和asic 100的操作将在下面进一步讨论。
34.asic 100还包括向量处理单元104。向量处理单元104包括被配置为从区块102接收输出并基于从区块102接收的输出计算向量计算输出值的电路。例如,在一些实施方式中,向量处理单元104包括被配置为对从区块102接收的输出执行累加操作的电路(例如,乘法电路、加法器电路、移位器和/或存储器)。替代地或附加地,向量处理单元104包括被配置为向区块102的输出应用非线性函数的电路。替代地或附加地,向量处理单元104生成归一化值、池化值或两者。向量处理单元的向量计算输出可以被存储在一个或多个区块中。例如,向量计算输出可以存储在与区块102唯一相关联的存储器中。可选地,或者附加地,向量处理单元104的向量计算输出可以被传输到asic100外部的电路,例如,作为计算的输出。
35.asic的每个区块102可以包括本地存储器和耦合到存储器的计算阵列。本地存储器包括物理存储器,例如随机存取存储器(ram),诸如sram。计算阵列包括多个单元。计算阵
列的每个单元包括被配置为基于对单元的数据输入(诸如激活输入和权重输入)来执行计算(例如,乘法和累加操作)的电路。每个单元可以在时钟信号的周期上执行计算(例如,乘法和累加操作)。每个区块还包括被配置为在区块之间传输数据的通用可控总线线路。该通用总线线路可以被配置为承载控制数据、激活输入数据、来自和/或去往通信接口的数据、来自和/或去往向量处理单元的数据、以及要被区块存储和/或使用的数据(例如,权重输入)。一个或多个控制元件(例如,触发器和复用器)可操作来控制可控总线线路,从而将数据路由到区块和/或从区块路由和/或从区块的sram路由。
36.在一些示例中,可以控制诸如asic的集成电路以两种模式之一运行,以满足运行约束,诸如对每单位时间的最大功耗量或通过集成电路的最大电流速率的约束。例如,当集成电路以不太可能超过集成电路上的操作约束的方式配置时,可以控制集成电路在第一模式中操作。当集成电路被配置为以可能超过操作约束的方式操作时,例如,当大量区块或区块组可以通过接收输入信号而被完全激活时,集成电路可以被控制为在第二模式中操作。在第二模式中,延迟被引入到集成电路的区块中的一些的操作中,以防止集成电路超过操作约束。
37.图2a是示例asic的区块202a-202d(统称为区块202)的阵列200的简化图。尽管关于asic描述了图2a,但是类似的配置可以应用于其他类型的集成电路。每个区块202包括多个存储器单元,例如sram 204(诸如八个sram),以及单元的计算阵列206。在一些示例中,每个区块202可以被激活,并且可以独立于阵列200的每个其他区块202来操作。在一些示例中,图2a中的每个区块202代表多个区块的列。在一些示例中,asic可以实施更大的阵列200,诸如具有至少4列、至少8列、至少16列或更大阵列的阵列。阵列200的区块202被分组为两个子集:包括区块202a、202c的第一子集,以及包括区块202b、202d的第二子集。
38.在阵列200的第一操作模式中,给定子集的区块例如从总线线路、来自该区块或来自另一区块(例如,相邻区块)的存储器接收输入数据的公共向量208。例如,在图2a的示例中,第一子集的区块202a、202c接收输入数据的向量208a,并且二子集的区块202b、202d接收输入数据的向量208b。输入数据的向量可以是例如权重数据的向量,用于由区块202的单元的计算阵列206执行的神经网络计算。向量传播由asic的时钟周期控制。例如,所有区块202(例如,两个子集中的区块)可以在相同的时钟周期接收给定向量208。
39.总线线路210a、210c向第一子集的区块202a、202c提供输入数据的向量208a。对应于区块202c的延迟寄存器212a存在于总线线路210c上。总线线路210b、210d向第二子集的区块202b、202d提供输入数据的向量208b,并且对应于区块202d的延迟寄存器212b存在于总线线路210d上。然而,在阵列200的第一操作模式中,不使用延迟寄存器212a、212b(如虚线所示),并且输入数据的向量208被直接并且同时(例如,在相同的时钟周期上)提供给每个区块202。
40.输入数据的每个向量208可以包括向量的每个元素的值。例如,当向量208携带二进制数据时,每个元素可以具有值0或值1。当区块202接收到具有某个值的元素(例如,二进制数据的值1)的向量208时,通过单元208的计算阵列的处理被启动(例如,一个或多个乘法器从空闲状态改变到激活状态),并且从sram 204的至少之一的读取也被启动。我们将通过单元208的计算阵列启示处理以及从区块202的静态随机存取存储器204启动读取的过程称为区块202的激活。当阵列200的每个区块202接收到具有启动计算的元素(例如,值为1的元
素)的相应向量208时,阵列202的所有区块被激活。在图2a所示的每个区块202代表多个区块的列的示例中,其中所有元素的值为1的向量导致该列的所有区块的激活。
41.在一些示例中,诸如asic的集成电路的操作可能受到设计约束。例如,单位时间的功耗可以保持在阈值水平以下,以避免违反asic的热设计约束。流经asic的电流随时间的改变率(例如di/dt;称为电流改变率)可以保持在阈值水平以下,以避免驱动电压在电压阈值以上或以下,例如驱动电压再工作范围以上或以下。
42.从区块的存储器(诸如sram)读取可能是功率密集的过程,并且sram读取过程的启动会消耗大量电流。在高时钟周期,大电流消耗对应于高电流改变率。由计算阵列启动计算处理(例如,将乘法器的状态从空闲变为激活)也可以消耗大量电流,并且可以对应于高时钟周期处的高电流改变率。
43.阵列200中的所有区块202的同时激活(例如,通过单元的计算阵列206的处理的启动和从sram 204的读取的启动)会导致大量的功耗,并且会导致高电流改变率。当阵列的每个区块202实际上代表区块的列,并且每个列的每个区块被激活,例如,通过接收每个具有值1的所有元素的多个向量时,大功耗和高电流改变率会加剧。例如,这样的向量可以在对asic的攻击中提供。
44.在一些示例中,诸如当由输入向量208激活的区块202的数量超过阈值时,由接收的输入向量208对那些区块202的同时激活会导致功耗、电流改变率或两者超过asic的设计约束。例如,同时激活的区块的阈值数量可以是区块的总数的25%或区块的总数的50%。为了防止超出asic的设计约束,可以控制asic在特定条件下在第二模式中操作。例如,当处理操作中涉及的区块(或区块的列)的数量将导致设计约束被超过时,如果要激活任何数量的所涉及的区块,则可以控制专用集成电路在第二模式中操作,如下文更详细讨论的。
45.图2b示出了被配置为在第二操作模式中操作的区块阵列200。在有时称为交错的第二操作模式中,总线线路210上存在的延迟寄存器212被激活,使得在包括延迟寄存器212的总线线路210上提供的输入数据的向量受到延迟。例如,在区块202a、202c的第一子集中,同时提供给两条总线线路210a、210c的输入向量214a被直接提供给区块202a,但是被保存在延迟寄存器212a中。输入向量214a在延迟周期之后从延迟寄存器212a释放,并被提供给区块202c。例如,可以设置延迟周期,使得区块202a在第一时钟周期接收输入向量214a,并且区块202b在下一(或一些其他后续)时钟周期接收输入向量。类似地,输入向量214b在第一时钟周期在区块202b处被接收,但是被存储在延迟寄存器212b中,并且在下一(或一些其他后续)时钟周期被释放到区块202d。
46.在第二操作模式中,延迟的故意引入导致同一子集的区块的激活的交错,例如错开。在该配置中,不管输入向量214的元素的值如何,不超过一半的区块可以被同时激活。结果,即使在具有值1的所有元素的向量的攻击下,单位时间的功耗和电流改变率也可以安全地保持在asic的设计约束内。
47.可以针对给定计算基于区块的阵列(或区块的列)的配置,动态地选择asic的操作模式,例如基于每次计算。例如,阵列的配置可以是用于执行给定计算的可独立操作的区块(或区块的列)的数量。可以基于满足第一标准或第二标准的区块的阵列的配置来选择asic的操作的模式。例如,第一标准可以是可独立操作的区块(或区块的列)的数量或百分比在阈值以下,并且当满足第一标准时,实施第一操作模式。第二标准可以是可独立操作的区块
(或区块的列)的数量或百分比超过阈值,并且当满足第二标准时,实施第二操作模式。阈值可以是区块的数量或百分比,使得即使该区块的所有被同时激活,功耗和电流改变率仍将落在asic的设计约束内。更一般地,阈值标准可以涉及asic的阈值利用率和/或asic的硬件/操作约束。
48.在一些示例中,可以基于来自编译器的指令来控制asic的操作的模式。例如,编译器可以向asic的控制电路(例如控制区块)提供指示第一标准和第二标准的信息。对于给定的计算,asic的控制电路可以确定用于该计算的区块的配置是否满足第一标准或第二标准,并且可以基于该确定来控制阵列的操作的模式。例如,当满足第二标准时(例如,当用于给定计算的可独立操作的区块或区块的列的数量超过阈值时),asic的控制电路可以激活延迟寄存器以在第二模式中操作。当满足第一标准时(例如,当用于给定计算的可独立操作的区块或区块的列的数量小于阈值时),asic的控制电路可以去激活(de-activate)延迟寄存器以在第一模式中操作。
49.第一模式和第二模式之间的转换可以由诸如复用器的切换元件来控制,该切换元件可以使延迟寄存器被切换到电路中或从电路中切换出来。复用器可以由asic的控制电路(例如控制区块)控制。
50.在一些示例中,阈值(例如,可独立操作的区块或区块的列的阈值数量)可以从外部源提供给编译器,例如,从已经确定阈值配置的asic的用户或从自动确定阈值配置的外部计算机。
51.在图2a和图2b的示例中,每个子集包括一对区块(或区块的列),使得在第二操作模式中,最多一半的区块可以被同时激活。对于比图2a和图2b所示阵列更大的阵列,在一些示例中,每个子集可以继续包括一对区块,并且在一些示例中,每个子集可以包括多于两个区块。例如,每个子集可以包括三个区块,其中两个被连接到延迟寄存器,使得在第二操作模式中,最多三分之一的区块可以被同时激活。在一些示例中,可以通过平衡与引入区块激活的进一步交错相关联的处理中的附加延迟与仅同时激活小的区块组(或区块的列)的期望来确定子集中的区块的数量。
52.在一些示例中,除了阵列在第二模式中的操作之外,延迟寄存器还可以在asic的其他功能中发挥作用,例如,用于在大型asic上同步操作。例如,在大型asic中,输入在整个芯片上的传播可能需要很长时间,例如多个时钟周期,诸如几十个时钟周期。鉴于传播时间和时钟周期不匹配,延迟寄存器可用于同步操作。
53.参考图3,在一些示例中,在第一同时模式和第二交错模式中操作区块的阵列的方法可以应用于二维区块的阵列。例如,如图3所示,区块302的二维阵列300可以包括延迟寄存器304和延迟寄存器306,延迟寄存器304使得信号传播(例如,输入向量308的传播)能够在x方向上交错,延迟寄存器306使得信号传播能够在y方向上交错。
54.参考图4,在用于操作asic的示例过程中,为给定的计算确定asic的区块的配置(400)。例如,确定该计算的执行中涉及的区块的数量或百分比。
55.例如,从asic的控制电路获得阈值(402)。例如,阈值可以是先前已经从编译器提供给asic的。该阈值可以是(或涉及)asic/asic的区块的阈值利用和/或asic的操作/硬件约束。阈值可以指示区块的阈值数量或百分比。其他阈值示例包括但不限于:阈值能量使用;阈值存储器使用;和/或阈值输入数据大小。
56.确定区块的配置是否满足第一标准(404),例如,计算的执行中涉及的区块的数量或百分比是否低于阈值。如果是,则在第一模式中操作asic(406),包括在asic的区块中的每一个处同时接收用于该计算的输入数据(例如,输入向量)(408)并且操作区块来处理输入数据(410)。
57.否则,确定区块的配置满足第二标准(412),例如,计算的执行中涉及的区块的数量或百分比是否超过阈值。如果是,在第二模式中操作asic(414)。在第二模式中,在第一时间,诸如在第一时钟周期,在asic的第一组区块的每个区块处同时接收用于计算的第一输入数据(416),并且操作第一组区块的区块来处理第一输入数据(418)。同样在第一时间,相应第二输入数据被存储在多个延迟寄存器的每一个中(420),每个延迟寄存器与asic的第二组区块中的区块相对应。在第二时间,诸如在下一时钟周期,第二输入数据从延迟寄存器中释放(422)。在该第二组的每个区块处接收释放的相应第二输入数据(424),并且操作第二组区块的区块来处理第二输入数据(426)。
58.再次参考图1,示例asic 100可以包括通信接口108(例如,接口108a、108b)。通信接口108包括一组或多组串行器/解串行器(serdes)接口和通用输入/输出(gpio)接口。serdes接口被配置为接收用于asic 100的指令(例如,用于操作下述可控总线线路的指令)和/或输入数据,并将数据从asic 100输出到外部电路。例如,serdes接口可以被配置为以32gbps、56gbps或任何合适的数据速率通过通信接口108中包括的一组serdes接口传输指令和/或输入数据。gpio接口被配置为提供用于调试和/或引导的接口。例如,当启动时,asic 100可以运行引导程序。如果程序失败,管理员可以使用gpio接口来调试失败的原因。
59.asic 100还包括多个可控总线线路,被配置为在通信接口108、向量处理单元104和多个区块102之间输送数据。可控总线线路包括例如沿着网格的第一维度101(例如行)和网格的第二维度103(例如列)延伸的导线。沿着第一维101延伸的可控总线线路的第一子集可以被配置为在第一方向上(例如,到图1的右侧)传输数据。沿着第一维101延伸的可控总线线路的第二子集可以被配置为在第二方向(例如,到图1的左侧)传输数据。沿着第二维103延伸的可控总线线路的第一子集可以被配置为在第三方向(例如,到图1的顶部)传输数据。沿着第二维103延伸的可控总线线路的第二子集可以被配置为在第四方向(例如,到图1的底部)传输数据。
60.每个可控总线线路包括多个输送器元件,例如触发器,用于根据时钟信号沿线路输送数据。通过可控总线线路传输数据可以包括在每个时钟周期将数据从可控总线线路的第一输送器元件转移到可控总线线路的第二相邻输送器元件。在一些实施方式中,数据在时钟周期的上升沿或下降沿通过可控总线线路输送。例如,在第一时钟周期,可控总线线路的第一输送器元件(例如触发器)上存在的数据可以在第二时钟周期被传输到可控总线线路的第二输送器元件(例如触发器)。在一些实施方式中,输送器元件可以以固定的距离周期性地彼此隔开。例如,在一些情况下,每个可控总线线路包括多个输送器元件,每个输送器元件位于对应的区块102内或附近。
61.每个可控总线线路还包括多个复用器和/或解复用器。可控总线线路的复用器/解复用器被配置为在总线线路和asic芯片100的组件之间传输数据。例如,可控总线线路的复用器/解复用器可以被配置为向和/或从区块102、向和/或从向量处理单元104、或向和/或从通信接口108传输数据。在区块102、向量处理单元104和通信接口之间传输数据可以包括
基于要发生的期望数据传输向复用器发送控制信号。控制信号可以存储在直接耦合到复用器和/或解复用器的寄存器中。然后,控制信号的值可以确定,例如,什么数据从源(例如,区块102内的存储器或向量处理单元104)传输到可控总线线路,或者,什么数据从可控总线线路传输到宿(例如,区块102内的存储器或向量处理单元104)。
62.可控总线线路被配置为在本地级别上被控制,使得每个区块、向量处理单元和/或通信接口包括其自己的控制元件的集合,用于操纵穿过该区块、向量处理单元和/或通信接口的可控总线线路。例如,每个区块、1d向量处理单元和通信接口可以包括对应的输送器元件的集合、复用器和/或解复用器,用于控制去往和来自区块、1d向量处理单元和通信接口的数据传输。
63.为了最小化与asic芯片100的操作相关联的延迟,区块102和向量处理单元104可以被定位成减少数据在各种组件之间行进的距离。在特定实施方式中,区块102和通信接口108都可以被分成多个部分,其中区块部分和通信接口部分都被布置成使得数据在区块和通信接口之间行进的最大距离减小。例如,在一些实施方式中,第一组区块102可以布置在通信接口108的第一侧的第一部分中,并且第二组区块102可以布置在通信接口的第二侧的第二部分中。结果,与所有区块102被布置在通信接口一侧的单个部分中的配置相比,从通信接口到最远区块的距离可以被减半。
64.替代地,区块可以布置在不同数量的部分中,例如四个部分。例如,在图1所示的示例中,asic 100的多个区块102被布置在多个部分110(110a、110b、110c、110d)中。每个部分110包括以网格图案布置的相似数量的区块102(例如,每个部分110可以包括以16行16列布置的256个区块)。通信接口108也被分成多个部分:被布置在区块102的部分110的任一侧的第一通信接口108a和第二通信接口108b。第一通信接口108a可以通过可控总线线路耦合到asic芯片100左侧的两个区块部分110a、110c。第二通信接口108b可以通过可控总线线路耦合到asic芯片100右侧的两个区块部分110b、110d。结果,与只有单个通信接口可用的布置相比,数据去往和/或来自通信接口108的最大距离(以及因此与数据传播相关联的延迟)可以减半。区块102和通信接口108的其他耦合布置也可能减少数据延迟。区块102和通信接口108的耦合布置可以通过向可控总线线路的输送器元件和复用器提供控制信号来编程。
65.在一些实施方式中,一个或多个区块102被配置为启动关于可控总线线路和/或asic 100内的其他区块(这里称为“控制区块”)的读取和写入操作。asic 100内的剩余区块可以被配置为基于输入数据执行计算(例如,被配置为计算层推断)。在一些实施方式中,控制区块包括与asic 100内的其他区块相同的组件和配置。控制区块可以作为asic 100的一个或多个额外区块、一个或多个额外行、或一个或多个额外列来添加。例如,对于区块102的对称网格,其中每个区块102被配置为对输入数据执行计算,可以包括一个或多个附加的控制区块的行来处理对输入数据执行计算的区块102的读取和写入操作。例如,每个部分110包括区块的18行,其中区块的最后两行可以包括控制区块。在一些实施方式中,提供单独的控制区块增加了用于执行计算的其它块中的可用存储器的量。然而,专用于提供如本文所述的控制的单独的区块不是必需的,并且在某些情况下,不提供单独的控制区块。相反,每个区块可以在其本地存储器中存储用于启动该区块的读取和写入操作的指令。
66.此外,虽然图1所示的每个部分110包括布置成18行16列的区块,但是区块102的数量和它们在部分中的布置可以不同。例如,在一些情况下,部分110可以包括相等数量的行
和列。
67.此外,尽管在图1中显示为分成四个部分,但是区块102可以分成其他不同的分组。例如,在一些实施方式中,区块102被分组为两个不同的部分,诸如向量处理单元104上方的第一部分(例如,更靠近图1所示的页面顶部)和向量处理单元104下方的第二部分(例如,更靠近图1所示的页面底部)。在这样的布置中,每个部分可以包含例如576个区块,这576个区块以向下(沿着方向103)18个区块、横向(沿着方向101)32个区块的网格来布置。部分可以包含其他总数的区块,并且可以以不同大小的阵列来布置。在一些情况下,部分之间的划分由asic 100的硬件特征来描述。例如,如图1所示,部分110a、110b可以通过向量处理单元104与部分110c、110d分离。
68.如本文所解释的,在一些实施方式中,区块102中的一个或多个专用于存储控制信息。也就是说,专用于存储控制信息的区块102不参与对诸如权重输入和激活输入的输入数据执行计算。控制信息可以包括例如用于在asic芯片100的操作期间配置可控总线线路的控制数据,使得数据可以在asic芯片100周围移动。控制数据可以以控制信号的形式提供给可控总线线路,用于控制可控总线线路的输送器元件和复用器。控制数据指定可控总线线路的特定输送器元件是否将数据传递到可控总线线路的下一输送器元件,以便根据预定的调度在区块之间传输数据。控制数据另外指定数据是从总线线路传输还是传输到总线线路。例如,控制数据可以包括控制信号,该控制信号指示复用器将数据从总线线路传输到区块内的存储器和/或其他电路。在另一示例中,控制数据可以包括控制信号,该控制信号指示复用器将数据从区块内的存储器和/或电路传输到总线线路。在另一个示例中,控制数据可以包括控制信号,该控制信号指导复用器在总线线路和通信接口108之间和/或总线线路和向量处理单元104之间传输数据。或者,如本文所公开的,不使用专用控制区块。相反,在这种情况下,每个区块的本地存储器存储该特定区块的控制信息。
69.本说明书中描述的主题和功能操作的实施例可以在数字电子电路中、在包括本说明书中公开的结构及其结构等同物的计算机硬件中、或者在它们中的一个或多个的组合中实施。本说明书中描述的主题的实施例可以实施为一个或多个计算机程序,即编码在有形的非暂时性程序载体上的计算机程序指令的一个或多个模块,用于由数据处理装置执行或控制数据处理装置的操作。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,其被生成来编码信息以传输到合适的接收器装置,用于由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基底、随机或串行存取存储器设备或它们中的一个或多个的组合。
70.术语“数据处理装置”涵盖用于处理数据的各种装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。该装置可以包括专用逻辑电路,例如fpga(现场可编程门阵列)或asic。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
71.本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机来执行,以通过对输入数据进行操作并生成输出来执行功能。处理和逻辑流程也可以由专用逻辑电路来执行,并且装置也可以被实施为专用逻辑电路,例如,fpga、asic或gpgpu(通用图形处理单元)。
72.尽管本说明书包含许多具体的实施细节,但这些不应被解释为对任何发明或所要求保护的范围的限制,而是对特定发明的特定实施例可能特有的特征的描述。本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独实施或者在任何合适的子组合中实施。此外,尽管特征可以在上面被描述为在某些组合中起作用,并且甚至最初被这样要求保护,但是在一些情况下,来自所要求保护的组合的一个或多个特征可以从该组合中删除,并且所要求保护的组合可以指向子组合或子组合的变体。
73.类似地,虽然在附图中以特定顺序描述了操作,但是这不应该被理解为要求以所示的特定顺序或序列顺序执行这些操作,或者要求执行所有示出的操作,以获得期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应该被理解为在所有实施例中都需要这种分离,并且应该理解,所描述的程序组件和系统通常可以集成在单个软件产品中或者封装到多个软件产品中。
74.已经描述了主题的特定实施例。其他实施例在所附权利要求的范围内。例如,尽管总线线路被描述为“可控”,但并非所有总线线路都需要具有相同的控制级别。例如,可以有不同程度的可控性,其中只有在一些总线线路在它们可以从中获取数据或向其发送数据的区块的数量方面受到限制的情况下,一些总线线路可以被控制。在另一示例中,一些总线线路可以专用于沿着单个方向提供数据,如在此描述的北、东、西或南。在一些情况下,权利要求中列举的动作可以以不同的顺序执行,并且仍然获得期望的结果。作为一个示例,附图中描述的过程不一定需要所示的特定顺序或序列顺序来实现期望的结果。在某些实施方式中,多任务和并行处理可能是有利的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献