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

乘法累加电路以及包括其的存储器内处理器件的制作方法

2022-07-16 00:16:45 来源:中国专利 TAG:

乘法累加电路以及包括其的存储器内处理器件
1.相关申请的交叉引用
2.本技术要求于2021年1月11日提交的申请号为10-2021-0003632的韩国专利申请的优先权,其全部内容通过引用合并于此。
技术领域
3.本教导的各个实施例涉及乘法累加(以下称为“mac”)电路以及包括该mac电路的存储器内处理(以下称为“pim”)器件,以及更具体地,涉及在矩阵与常数之间执行逐元素乘法(以下称为“ewm”)算术运算的mac电路以及包括该mac电路的pim器件。


背景技术:

4.近来,不仅在信息技术行业而且在金融和医疗行业中,对人工智能(ai)的兴趣也在增加。因此,在各个领域中,都考虑并原型化了人工智能,更确切地说是深度学习的引入。总体而言,用于有效学习与通用神经网络相比具有增加的层的深度神经网络(dnn)或深度网络以利用深度神经网络(dnn)或深度网络进行模式识别或推理的技术通常被称为深度学习。
5.引起广泛关注的一个原因可能是执行算术运算的处理器的性能提高。为了提高人工智能的性能,可能有必要增加人工智能中构成神经网络的层数以训练人工智能。近年来,这种趋势一直在持续,这导致实际进行计算的硬件所需的计算量呈指数增长。此外,如果人工智能采用包括彼此分开的存储器和处理器的通用硬件系统,则人工智能的性能可能会由于存储器与处理器之间的数据通信量的限制而降级。为了解决该问题,其中处理器和存储器被集成在一个半导体芯片中的pim器件已经被用作神经网络计算器件。由于pim器件直接在内部执行算术运算,所以神经网络中的数据处理速度可以得到提高。


技术实现要素:

6.根据一个实施例,一种乘法累加(mac)电路包括mac运算器和数据输入电路。mac运算器被配置为选择性地执行权重数据与矢量数据的mac算术运算或权重数据与常量数据的逐元素乘法(ewm)算术运算。数据输入电路被配置为当mac运算器执行mac算术运算时向mac运算器提供权重数据和矢量数据,以及被配置为当mac运算器执行ewm算术运算时向mac运算器提供权重数据和常量数据。
附图说明
7.参考附图通过各种实施例来示出所公开技术的某些特征,其中:
8.图1示出了根据本教导的实施例的mac电路的配置;
9.图2示出了图1所示的mac电路中包括的数据选择电路的配置;
10.图3是示出图2所示的数据选择电路中包括的比特位拷贝块的操作的示意图;
11.图4示出了根据本教导的实施例的由mac电路执行的包括权重矩阵与矢量矩阵的
矩阵乘法的mac算术运算;
12.图5示出了根据本教导的实施例的由mac电路执行的包括权重矩阵与常数矩阵的乘法的ewm算术运算;
13.图6是示出图1所示的mac电路中包括的mac运算器的示例的框图;
14.图7示出了由图1中示出的mac电路执行的mac算术运算;
15.图8示出了由图1中示出的mac电路执行的ewm算术运算;
16.图9是示出图1中示出的mac电路中包括的mac运算器的另一示例的框图;
17.图10是示出图1中示出的mac电路中包括的mac运算器的又一示例的框图;
18.图11是示出图1中示出的mac电路中包括的mac运算器的又一示例的框图;以及
19.图12是示出根据本教导的实施例的pim器件的框图。
具体实施方式
20.在实施例的以下描述中,将理解的是,术语“第一”和“第二”意图标识元件,但是不用于限定元件的特定数量或顺序。另外,当元件被称为位于另一元件“上”、“之上”、“上方”、“下方”或“之下”时,其旨在表示相对位置关系,但不用于限制元件直接接触另一元件或者在两个元件之间存在至少一个居间元件的情况。因此,在本文中使用的诸如“在...上”、“在...之上”、“在...上方”、“在...下方”、“在...之下”、以及“在...下面”之类的术语仅出于描述特定实施例的目的,而不意图限制本公开的范围。此外,当一个元件被称为“连接”或“耦接”到另一元件时,该元件可以直接电地或机械地连接或耦接至另一元件,或者可以利用两个元件之间的一个或多个附加元件而被间接电地或机械地连接或耦接至另一元件。此外,当参数被称为“预定的”时,其意图表示在将参数用于过程或算法中之前预先确定参数的值。可以在过程或算法开始时设置参数的值,或者可以在过程或算法被执行的时段期间设置参数的值。逻辑“高”电平和逻辑“低”电平可以被用于描述电信号的逻辑电平。具有逻辑“高”电平的信号可以区别于具有逻辑“低”电平的信号。例如,当具有第一电压的信号对应于具有逻辑“高”电平的信号时,具有第二电压的信号可以对应于具有逻辑“低”电平的信号。在一个实施例中,逻辑“高”电平可以被设置为高于逻辑“低”电平的电压电平的电压电平。而且,可以将信号的逻辑电平根据实施例设置为不同或相反。例如,在一个实施例中具有逻辑“高”电平的某个信号可以在另一实施例中被设置为具有逻辑“低”电平。
21.在下文中将参考附图详细描述本公开的各个实施例。然而,本文中描述的实施例仅用于说明性目的,并不旨在限制本公开的范围。
22.各个实施例针对mac电路和包括该mac电路的pim器件。
23.图1示出了根据本教导的实施例的mac电路10的配置。参考图1,mac电路10可以执行mac算术运算和ewm算术运算。mac算术运算可以包括权重矩阵与矢量矩阵的矩阵乘法。ewm算术运算可以包括权重矩阵与常数矩阵的矩阵乘法。因此,mac电路10可以接收用于权重矩阵的权重数据和用于矢量矩阵的矢量数据以执行mac算术运算,并且mac电路10可以接收用于权重矩阵的权重数据和常数以执行ewm算术运算。
24.为了执行mac算术运算,mac电路10可以从存储区域接收权重数据dw《127:0》和矢量数据dv《127:0》。mac电路10可以接收第一锁存控制信号latch1,该第一锁存控制信号latch1控制用于mac算术运算的数据输入操作。mac电路10可以接收第二锁存控制信号
latch2,该第二锁存控制信号latch2控制mac算术运算期间的数据累加和输出操作。mac电路10可以输出通过mac算术运算产生的mac结果数据mac_rst。mac电路10可以接收mac结果数据输出控制信号mac_rd_rst,其控制mac结果数据mac_rst的输出操作。
25.为了执行ewm算术运算,mac电路10可以从存储区域接收权重数据dw《127:0》和常量数据dc《15:0》。mac电路10可以接收第三锁存控制信号latch3,该第三锁存控制信号latch3控制用于ewm算术运算的常量数据dc《15:0》的输入操作。mac电路10可以接收第四锁存控制信号latch4,该第四锁存控制信号latch4控制用于ewm算术运算的数据输入操作。mac电路10可以输出通过ewm算术运算产生的ewm结果数据ewm_rst。mac电路10可以接收ewm结果数据输出控制信号ewm_rd_rst,其控制ewm结果数据ewm_rst的输出操作。
26.具体来说,mac电路10可以包括数据输入电路100和mac运算器200。数据输入电路100可以接收权重数据dw《127:0》、矢量数据dv《127:0》和常量数据dc《15:0》。权重数据dw《127:0》可以对应于权重矩阵的元素。矢量数据dv《127:0》可以对应于矢量矩阵的元素。常量数据dc《15:0》可以对应于具有特定值的常数。在本实施例中,权重数据dw《127:0》和矢量数据dv《127:0》两者都可以具有128比特位的尺寸,并且常量数据dc《15:0》可以具有16比特位的尺寸。然而,本实施例可以仅仅是本公开的示例。因此,权重数据dw《127:0》、矢量数据dv《127:0》和常量数据dc《15:0》的尺寸可以根据权重矩阵和矢量矩阵中包括的元素中的每个元素的尺寸以及mac运算器200的计算能力而不同。
27.数据输入电路100可以包括第一输入锁存器110、数据选择电路120、第二输入锁存器130和或(or)门140。第一输入锁存器110可以接收权重数据dw《127:0》。数据选择电路120可以接收矢量数据dv《127:0》、常量数据dc《15:0》、标志信号flag和第三锁存控制信号latch3。或门140可以接收第一锁存控制信号latch1和第四锁存控制信号latch4。在一个实施例中,在mac电路10执行mac算术运算的情况下,第一锁存控制信号latch1可以具有逻辑“高”电平,而在mac电路10执行ewm算术运算的情况下,第四锁存控制信号latch4可以具有逻辑“高”电平。
28.第一输入锁存器110可以同步于或门140的输出信号,以将权重数据dw《127:0》输出到mac运算器200。在一个实施例中,可以使用触发器来实现第一输入锁存器110。数据选择电路120可以根据第三锁存控制信号latch3的激活来接收并锁存常量数据dc《15:0》,并且可以根据标志信号flag的逻辑电平来选择性地输出矢量数据dv《127:0》或复制型常量数据dc《127:0》。稍后将参考图2描述数据选择电路120的配置。第二输入锁存器130可以同步于或门140的输出信号来将从数据选择电路120选择性地输出的矢量数据dv《127:0》或复制型常量数据dc《127:0》输出到mac运算器200。或门140可以接收第一锁存控制信号latch1和第四锁存控制信号latch4,以对第一锁存控制信号latch1和第四锁存控制信号latch4进行逻辑或运算。或门140可以将由或门140的逻辑或运算产生的信号传送至第一输入锁存器110的时钟端子和第二输入锁存器130的时钟端子。
29.图2示出了图1所示的mac电路10中包括的数据选择电路120的配置,并且图3是示出图2所示的数据选择电路120中包括的比特位拷贝块122的输入数据和输出数据的示意图。首先,参考图2,数据选择电路120可以包括第三输入锁存器121、比特位拷贝块122和数据选择输出电路123。第三输入锁存器121可以同步于第三锁存控制信号latch3,以接收和输出常量数据dc《15:0》。比特位拷贝块122可以拷贝从第三输入锁存器121输出的常量数据
dc《15:0》,以产生并输出由多个拷贝的常量数据dc《15:0》组成的复制型常量数据dc《127:0》。比特位拷贝块122可以拷贝常量数据dc《15:0》,以使得复制型常量数据dc《127:0》具有与权重数据dw《127:0》或矢量数据dv《127:0》相同的比特位数。作为结果,比特位拷贝块122可以接收具有16比特位的常量数据dc《15:0》,来输出具有128比特位的复制型常量数据dc《127:0》。
30.如图3所示,可以假设输入到比特位拷贝块122的常量数据dc《15:0》对应于16比特位的二进制流“1000010100000001”。比特位拷贝块122可以扩展16比特位常量数据dc《15:0》的比特位数,以产生具有与权重数据dw《127:0》相同的比特位数的128比特位复制型常量数据dc《127:0》。在这种情况下,比特位拷贝块122可以重复地拷贝与二进制流“1000010100000001”相对应的16比特位常量数据dc《15:0》,以对重复拷贝的常量数据dc《15:0》进行阵列排布。在本实施例中,可以通过将具有16比特位的常量数据dc《15:0》的拷贝数据串行地阵列排布八次来获得复制型常量数据dc《127:0》。即,构成复制型常量数据dc《127:0》的八组拷贝的常量数据dc《15:0》之中的彼此相邻的两组拷贝的常量数据dc《15:0》之中的一组的最低有效位(lsb)可以被定位成与相邻的两组拷贝的常量数据dc《15:0》中的另一组的最高有效位(msb)相邻。
31.再次参考图2,数据选择输出电路123可以通过数据选择输出电路123的第一输入端子in1来从比特位拷贝块122接收复制型常量数据dc《127:0》。数据选择输出电路123可以通过数据选择输出电路123的第二输入端子in2接收矢量数据dv《127:0》。数据选择输出电路123可以根据标志信号flag的逻辑电平而通过数据选择输出电路123的输出端子out输出输入至第一输入端子in1的拷贝常量数据dc《127:0》或输入至第二输入端子in2的矢量数据dv《127:0》。例如,具有逻辑“低”电平的标志信号flag可以被传送至数据选择输出电路123以执行mac算术运算。在这种情况下,数据选择输出电路123可以通过数据选择输出电路123的输出端子out来输出输入至第二输入端子in2的矢量数据dv《127:0》。相反,具有逻辑“高”电平的标志信号flag可以被传送至数据选择输出电路123以执行ewm算术运算。在这种情况下,数据选择输出电路123可以通过数据选择输出电路123的输出端子out来输出输入至第一输入端子in1的复制常量数据dc《127:0》。在一个实施例中,可以使用2对1复用器来实现数据选择输出电路123。
32.图4示出了根据本教导的实施例的mac电路10的mac算术运算。参考图4,mac电路10可以执行mac算术运算,该mac算术运算产生通过执行权重矩阵与矢量矩阵的矩阵乘法而获得的结果矩阵。权重矩阵的行数可以为“m”并且列数可以为“n”。矢量矩阵和结果矩阵中的每一个可以具有“n”行和一列。权重矩阵中包括的行数“m”可以根据实施例被设置为不同,并且在以下描述中可以假定权重矩阵中包括的行数“m”为512。类似地,权重矩阵中包括的列数“n”也可以根据实施例被设置为不同,并且在以下描述中可以假定权重矩阵中包括的列数“n”为512。因此,权重矩阵可以具有512行(即,第一行至第512行r1~r512)和512列(即,第一列至第512列c1~c512),而可以具有“512
×
512”个元素w1.1~w1.512、

、和w512.1~w512.512。另外,矢量矩阵可以具有512行(即,第一行至第512行r1~r512)和一列c1,而可以具有“512”个元素v1.1~v512.1。
33.在权重矩阵与矢量矩阵的矩阵乘法中,可以根据权重矩阵和矢量矩阵中包括的每个元素(w1.1~w1.512、

、w512.1~w512.512和v1.1~v512.1)的尺寸以及能够由mac运算
器200执行的mac算术运算的计算量来确定向mac运算器(图1的200)输入的权重数据的尺寸和矢量数据的尺寸。例如,当权重矩阵和矢量矩阵中包括的每个元素的尺寸为2个字节并且mac运算器200具有8个乘法器(multiplier)时,则可以像本实施例一样将128比特位权重数据dw《127:0》和128比特位矢量数据dv《127:0》输入到mac运算器200。在这种情况下,输入到mac运算器200的128比特位权重数据dw《127:0》可以由权重矩阵的8个元素组成,例如位于权重矩阵的第一行r1和第一列至第八列c1~c8的交叉点处的元素w1.1~w1.8。另外,输入到mac运算器200的128比特位矢量数据dv《127:0》可以由矢量矩阵的8个元素组成,例如位于矢量矩阵的第一行至第八行r1~r8和第一列c1的交叉点处的元素v1.1~w8.1。
34.为了通过mac电路10的mac算术运算来获得与位于结果矩阵的第一行rl和第一列c1的交叉点处的元素mac_rst1.1相对应的mac结果数据mac_rst,mac算术运算必须迭代执行64次。因为通过矩阵乘法来执行mac算术运算,所以除了乘法计算之外,还可以执行加法计算和累加计算以获得mac结果数据mac_rst。
35.图5示出了根据本教导的实施例的mac电路10的ewm算术运算。参考图5,mac电路10可以执行ewm算术运算,该ewm算术运算产生通过对权重矩阵和常数执行矩阵乘法而获得的结果矩阵。在本实施例中,还可以假定权重矩阵具有512行(即,第一行至第512行r1~r512)和512列(即,第一列至第512列c1~c512)。在如参考图4所述的那样权重矩阵具有“512
×
512”个元素w1.1~w1.512、

、和w512.1~w512.512的情况下,常数可以是单个数据c。由mac电路10的ewm算术运算产生的结果数据(即,结果矩阵)可以具有与权重矩阵相同的尺寸。即,通过ewm算术运算产生的结果矩阵也可以具有512行(即,第一行至第512行r1~r512)和512列(即,第一列至第512列c1~c512)。结果矩阵的元素可以具有通过将权重矩阵的元素乘以常数的数据c而获得的值。这样,为了执行ewm算术运算,可能有必要仅执行乘法计算,而不伴随任何加法计算和累加计算。
36.图6是示出与图1所示的mac电路10中包括的mac运算器200的示例相对应的mac运算器200a的配置的框图。参考图6和图7,mac运算器200a可以包括乘法电路210、数据输出选择电路220、加法器树230、累加器240和数据输出电路250。如参考图4、图6和图7所述的,可以通过执行乘法计算、加法计算和累加计算所有来执行mac算术运算。因此,乘法电路210、加法器树230和累加器240所有可以在mac算术运算期间进行操作。相反,如参考图5所描述的,可以通过仅运行乘法计算来执行ewm算术运算。因此,当乘法电路210在ewm算术运算期间操作时,在ewm算术运算期间加法器树230和累加器240都不操作。因此,数据输出选择电路220包含多个解复用器,这些解复用器根据flag信号将数据发送到mac运算或ewm运算。
37.具体来说,乘法电路210可以包括并行设置的多个乘法器,例如,八个乘法器(即,第一乘法器至第八乘法器mul0~mul7)。多个乘法器的并行设置是指多个乘法器设置成使得多个乘法器的数据输入/输出操作和乘法计算同时并独立地执行。术语“并行设置”的含义可以等同地适用于本技术中公开的所有组件。第一乘法器mul0至第八乘法器mul7中的每一个可以接收第一输入数据da1_0~da1_7中的一个(例如,权重矩阵的元素中的元素w1.1~w1.8中的一个)和第二输入数据da2_0~da2_7中的一个(例如,矢量矩阵的元素中的元素v1.1~v8.1中的一个)。另外,第一乘法器mul0至第八乘法器mul7可以对第一输入数据da1_0~da1_7和第二输入数据da2_0~da2_7执行乘法计算,以分别输出第一乘法结果数据dm_0至第八乘法结果数据dm_7。例如,第一乘法器mul0可以对与权重矩阵的元素w1.1相对应的
第一输入数据da1_0和与矢量矩阵的元素v1.1相对应的第二输入数据da2_0进行乘法计算,以产生并输出第一乘法结果数据dm_0。以相同的方式,第八乘法器mul7可以对与权重矩阵的元素w1.8相对应的第一输入数据da1_7和与矢量矩阵的元素v8.1相对应的第二输入数据da2_7执行乘法计算以产生并输出第八乘法结果数据dm_7。
38.数据输出选择电路220可以通过八个第一输出线261或八个第二输出线262输出由乘法电路210产生的第一乘法结果数据至第八乘法结果数据dm_0~dm_7。数据输出选择电路220可以包括并行设置的多个解复用器,例如,第一解复用器至第八解复用器demux0~demux7。第一解复用器至第八解复用器demux0~demux7中的每一个都可以使用具有一个输入端子和两个输出端子的1对2解复用器来实现。构成数据输出选择电路220的解复用器的数量可以等于乘法电路210中包括的乘法器的数量。第一解复用器至第八解复用器demux0~demux7的输入端子可以分别耦接至第一复用器至第八复用器mul0~mul7的输出端子。例如,第一解复用器demux0的输入端子可以耦接至第一乘法器mul0的输出端子,并且第二解复用器demux1的输入端子可以耦接至第二乘法器mul1的输出端子。以相同的方式,第八解复用器demux7的输入端子可以耦接至第八乘法器mul7的输出端子。
39.在解复用器demux0~demux7中的每一个中,可以通过输入到数据输出选择电路220的标志信号flag来确定对经其输出乘法结果数据的输出线的选择。例如,当具有逻辑“低”电平的标志信号flag被输入到数据输出选择电路220时,解复用器demux0~demux7可以通过解复用器emux0~demux7的第一输出线261来输出从乘法电路210输出的第一乘法结果数据至第八乘法结果数据dm_0~dm_7。相反,当具有逻辑“高”电平的标志信号flag被输入到数据输出选择电路220时,解复用器demux0~demux7可以通过解复用器demux0~demux7的第二输出线262来输出从乘法电路210输出的第一乘法结果数据至第八乘法结果数据dm_0~dm_7。
40.解复用器demux0_demux7的第一输出线261可以耦接至加法器树230。因此,从解复用器demux0_demux7通过第一输出线261输出的乘法结果数据dm_0~dm_7可以被传送至加法器树230。解复用器demux0~demux7的第二输出线262可以耦接至数据输出电路250。数据输出电路250可以响应于ewm结果数据输出控制信号ewm_rd_rst而输出通过解复用器demux0~demux7的第二输出线262输入的乘法结果数据dm_0~dm_7作为ewm结果数据ewm_rst。
41.加法器树230可以包括多个加法器adder1、adder2和adder3,其被阵列排布为具有层级结构,例如树结构。在本实施例中,构成加法器树230的多个加法器adder1、adder2和adder3中的每一个都可以使用半加法器来实现。然而,包括使用半加法器实现的加法器树230的本实施例可以仅仅是本公开的示例。即,在一些其他实施例中,可以使用全加器来实现构成加法器树230的多个加法器adder1、adder2和adder3中的每一个。加法器树230的最高级(即,第一级st1)可以包括并行设置的四个第一加法器adder1。位于第一级st1之下的第二级st2可以包括并行设置的两个第二加法器adder2。对应于加法器树230的最低级的第三级st3可以位于第二级st2之下,并且可以包括一个第三加法器adder3。当多个加法器adder1、adder2和adder3中的每一个是半加法器时,第一加法器adder1的数量可以是乘法器mul0~mul7的数量的一半,并且第二加法器adder2的数量可以是第一加法器adder1的数量的一半。另外,第三加法器adder3的数量可以是第二加法器adder2的数量的一半。
42.设置在第一级stl中的每个第一加法器adder1的第一输入端子和第二输入端子可以耦接至构成数据输出选择电路220的第一解复用器至第八解复用器demux0~demux7之中的两个解复用器的相应第一输出线261。因此,第一加法器adder1中的每一个可以执行数据输出选择电路220中包括的两个解复用器的输出数据(即,乘法结果数据)的加法计算,以产生并输出加法结果数据。此外,第二级st2中的每一个第二加法器adder2可以执行第一级st1中的两个第一加法器adder1的输出数据(即,加法结果数据)的加法计算,以产生并输出加法结果数据。此外,第三级st3中的第三加法器adder3可以执行第二级st2中的两个第二加法器adder2的输出数据(即,加法结果数据)的加法计算,以产生并输出加法结果数据dma。
43.累加器240可以包括累加加法器(addr_a)241和锁存电路242。累加加法器(addr_a)241可以对从处在最低级(即第三级st3)的第三加法器adder3输出的加法结果数据dma和从锁存电路242输出的反馈数据df执行加法计算,以产生并输出累加相加的结果数据dmacc。在一个实施例中,可以使用半加法器来实现累加加法器(addr_a)241。锁存电路242可以接收从累加加法器(addr_a)241输出的累加相加的结果数据dmacc。锁存电路242可以锁存累加相加的结果数据dmacc以将与反馈数据df相对应的累加相加的结果数据dmacc的锁存数据反馈到累加加法器(addr_a)241。在一个实施例中,锁存电路242可以包括触发器。当权重矩阵中的一行与矢量矩阵中的列的矩阵乘法(即,mac算术运算)结束时(参考图4),由锁存电路242锁存的累加相加的结果数据dmacc可以被传送至数据输出电路250。该数据输出电路250可以响应于mac结果数据输出控制信号mac_rd_rst而输出由锁存电路242产生的累加相加的结果数据dmacc作为mac结果数据mac_rst。
44.如上所述,mac运算器200a可以执行mac算术运算和ewm算术运算两者。当mac运算器200a执行mac算术运算时,构成数据输出选择电路220的解复用器demux0~demux7的输出数据可以通过第一输出线261而被传送至加法器树230,并且由加法器树230产生的加法结果数据dma可以被传送至累加器240。因此,用于mac算术运算的乘法计算、加法计算和累加计算可以正常执行。当mac运算器200a执行ewm算术运算时,构成数据输出选择电路220的解复用器demux0~demux7的输出数据可以通过第二输出线262和数据输出电路250而从mac运算器200a输出。因此,用于ewm算术运算的乘法计算可以正常执行。
45.图7示出了当在mac电路10中采用mac运算器200a时图1所示的mac电路10的mac算术运算。在图7中,与图1和图6中使用的相同的参考数字和相同的参考符号可以表示相同的组件。因此,在下文中将省略对参考图1和图6描述的相同组件的详细描述。将结合通过图4所示的权重矩阵与矢量矩阵的矩阵乘法执行的mac算术运算来描述本实施例。
46.参考图7,可以将128比特位权重数据dw《127:0》输入到数据输入电路100的第一输入锁存器110。128比特位权重数据dw《127:0》可以由元素w1.1~w1.8组成,该元素w1.1~w1.8位于权重矩阵的第一行r1与第一列至第八列c1~c8的交叉点处。可以将128比特位矢量数据dv《127:0》和16比特位常量数据dc《15:0》输入到数据选择电路120。128比特位矢量数据dv《127:0》可以由元素v1.1~v8.1组成,该元素v1.1~v8.1位于矢量矩阵的第一行至第八行r1至r8与列c1的交叉点处。另外,可以将具有逻辑“低(l)”电平的标志信号flag和具有逻辑“低(l)”电平的第三锁存控制信号latch3输入到数据选择电路120。如参考图2所述的,数据选择电路120可以基于具有逻辑“低(l)”电平的标志信号flag来输出128比特位矢
量数据dv《127:0》。从数据选择电路120输出的128比特位矢量数据dv《127:0》可以被传送至第二输入锁存器130。
47.数据输入电路100的or门140可以接收具有逻辑“高(h)”电平的第一锁存控制信号latch1和具有逻辑“低(l)”电平的第四锁存控制信号latch4。或门140可以产生并输出具有逻辑“高(h)”电平的信号,该信号被传送至第一输入锁存器110和第二输入锁存器130。第一输入锁存器110可以基于从或门140输出的具有逻辑“高(h)”电平的信号来向mac运算器200a输出128比特位权重数据dw《127:0》,并且第二输入锁存器130可以基于从或门140输出的具有逻辑“高(h)”电平的信号来向mac运算器200a输出128比特位矢量数据dv《127:0》。
48.输入到mac运算器200a的128比特位权重数据dw《127:0》可以被分为八组元素数据,它们被输入到乘法电路210的第一乘法器至第八乘法器mul0~mul7中的相应乘法器。即,第一乘法器mul0可以接收与位于权重矩阵的第一行r1和第一列c1的交叉点处的元素w1.1相对应的第一权重数据dw1.1《15:0》。第一权重数据dw1.1《15:0》可以是由从数据输入电路100输出的128比特位权重数据dw《127:0》中包括的第一比特位至第十六比特位组成的二进制流。另外,第二乘法器mul1可以接收与位于权重矩阵的第一行r1和第二列c2的交叉点处的元素w1.2相对应的第二权重数据dw1.2《31:16》。第二权重数据dw1.2《31:16》可以是由从数据输入电路100输出的128比特位权重数据dw《127:0》中包括的第17比特位至第32比特位组成的二进制流。类似地,第八乘法器mul7可以接收与位于权重矩阵的第一行r1和第八列c8的交叉点处的元素w1.8相对应的第八权重数据dw1.8《127:112》。第八权重数据dw1.8《127:112》可以是由从数据输入电路100输出的128比特位权重数据dw《127:0》中包括的第113比特位至第128比特位组成的二进制流。
49.输入到mac运算器200a的128比特位矢量数据dv《127:0》也可以被分为八组元素数据,它们被输入到乘法电路210的第一乘法器至第八乘法器mul0~mul7中的相应的乘法器。也就是说,第一乘法器mul0可以接收与位于矢量矩阵的第一行r1和列c1的交叉点处的元素v1.1相对应的第一矢量数据dv1.1《15:0》。第一矢量数据dv1.1《15:0》可以是由从数据输入电路100输出的128比特位矢量数据dv《127:0》中包括的第一比特位至第十六比特位组成的二进制流。此外,第二乘法器mul1可以接收与位于矢量矩阵的第二行r2和列c1的交叉点处的元素v2.1相对应的第二矢量数据dv2.1《31:16》。第二矢量数据dv2.1《31:16》可以是由从数据输入电路100输出的128比特位矢量数据dv《127:0》中包括的第17比特位至第32比特位组成的二进制流。类似地,第八乘法器mul7可以接收与位于矢量矩阵的第八行r8和列c1的交叉点处的元素v8.1相对应的第八矢量数据dv8.1《127:112》。第八矢量数据dv8.1《127:112》可以是由从数据输入电路100输出的128比特位矢量数据dv《127:0》中包括的第113比特位至第128比特位组成的二进制流。
50.乘法电路210中包括的第一乘法器至第八乘法器mul0~mul7可以执行权重数据和矢量数据的乘法计算,以分别产生并输出第一乘法结果数据至第八乘法结果数据dwv1.1、dwv1.2、

、和dwv1.8。从第一乘法器至第八乘法器mul0~mul7中的相应乘法器输出第一乘法结果数据至第八乘法结果数据dwv1.1、dwv1.2、

和dwv1.8可以分别被输入到数据输出选择电路220的第一解复用器至第八解复用器demux0~demux7。第一解复用器至第八解复用器demux0~demux7可以分别响应于具有逻辑“低(l)”电平的标志信号flag来通过第一输出线261输出第一乘法结果数据至第八乘法结果数据dwv1.1、dwv1.2、

和dwv1.8。从第一
解复用器至第八解复用器demux0~demux7输出的第一乘法结果数据至第八乘法结果数据dwv1.1、dwv1.2、

和dwv1.8可以被传送至加法器树230。
51.加法器树230可以按级分层级地执行加法计算以产生加法结果数据并将其输出到累加器240。累加器240可以响应于具有逻辑“高”电平的第二锁存控制信号latch2来执行累加计算。通过累加器240的累加计算所产生的数据可以被锁存在累加器240中以提供反馈数据df。反馈数据df也可以被传送至数据输出电路250。因为没有完成针对权重矩阵和矢量矩阵中包括的所有元素的矩阵乘法,所以输入到数据输出电路250的mac结果数据输出控制信号mac_rd_rst和ewm结果数据输出控制信号ewm_rd_rst可以具有逻辑“低(l)”电平。
52.图8示出了当在mac电路10中采用mac运算器200a时图1所示的mac电路10的ewm算术运算。在图8中,与图1和图6中使用的相同的参考数字和相同的参考符号可以表示相同的组件。因此,在下文中将省略对参考图1和图6描述的相同组件的详细描述。将结合通过图5所示的权重矩阵和常数的矩阵乘法执行的ewm算术运算来描述本实施例。
53.参考图8,可以将128比特位权重数据dw《127:0》输入到数据输入电路100的第一输入锁存器110。128比特位权重数据dw《127:0》可以由元素w1.1~w1.8组成,它们位于权重矩阵的第一行r1与第一列至第八列c1~c8的交叉点处。可以将128比特位矢量数据dv《127:0》和16比特位常量数据dc《15:0》输入到数据选择电路120。128比特位矢量数据dv《127:0》可以由在矢量矩阵的第一行至第八行r1~r8和列c1的交叉点处的元素v1.1~v8.1组成。另外,可以将具有逻辑“高(h)”电平的标志信号flag和具有逻辑“高(h)”电平的第三锁存控制信号latch3输入到数据选择电路120。如参考图2和图3所描述的,数据选择电路120的第三输入锁存器121可以响应于具有逻辑“高(h)”电平的第三锁存控制信号latch3而接收16比特位常量数据dc《15:0》并将其传送至比特位拷贝块122。比特位拷贝块122可以拷贝16比特位常量数据dc《15:0》以产生128比特位复制型常量数据dc《127:0》并将其输出到数据选择输出电路的第一输入端子in1(图2的123)。数据选择输出电路123可以响应于具有逻辑“高(h)”电平的标志信号flag而输出128比特位复制型常量数据dc《127:0》。从数据选择电路120输出的128比特位复制常量数据dc《127:0》可以被传送至第二输入锁存器130。
54.数据输入电路100的或门140可以接收具有逻辑“低(l)”电平的第一锁存控制信号latch1和具有逻辑“高(h)”电平的第四锁存控制信号latch4。或门140可以产生具有逻辑“高(h)”电平的信号并将其输出至第一输入锁存器110和第二输入锁存器130。第一输入锁存器110可以基于从或门140输出的具有逻辑“高(h)”电平的信号来向mac运算器200a输出128比特位权重数据dw《127:0》,并且第二输入锁存器130可以基于从或门140输出的具有逻辑“高(h)”电平的信号来向mac运算器200a输出128比特位常量数据dc《127:0》。
55.输入到mac运算器200a的128比特位权重数据dw《127:0》可以被分为八组元素数据,它们分别以与参考图7所述的相同的方式被输入到乘法电路210的第一乘法器至第八乘法器mul0~mul7中的相应乘法器。输入到mac运算器200a的128比特位复制型常量数据dc《127:0》可以被分为八组原始常量数据dc《15:0》,它们被输入至乘法电路210的第一乘法器至第八乘法器mul0~mul7中的相应乘法器。
56.乘法电路210中包括的第一乘法器至第八乘法器mul0~mul7可以执行权重数据与常量数据的乘法计算,以分别产生并输出第一乘法结果数据至第八乘法结果数据dwc1.1、dwc1.2、

、和dwc1.8。从第一乘法器至第八乘法器mul0~mul7中的相应乘法器输出的第一
乘法结果数据至第八乘法结果数据dwc1.1、dwc1.2、

、和dwc1.8可以分别被输入到数据输出选择电路220的第一解复用器至第八解复用器demux0~demux7。第一解复用器至第八解复用器demux0~demux7分别可以响应于具有逻辑“高(h)”电平的标志信号flag来通过第二输出线262输出第一乘法结果数据至第八乘法结果数据dwc1.1、dwc1.2、

、和dwc1.8。从第一解复用器至第八解复用器demux0~demux7输出的第一乘法结果数据至第八乘法结果数据dwc1.1、dwc1.2、

、和dwc1.8可以被传送至数据输出电路250。
57.在一个实施例中,数据输出电路250可以响应于具有逻辑“高(h)”电平的ewm结果数据输出控制信号ewm_rd_rst而输出第一乘法结果数据至第八乘法结果数据dwc1.1、dwc1.2、

、和dwc1.8作为第一ewm结果数据ewm_rst1。在这种情况下,第一ewm结果数据ewm_rst1可以对应于位于图5中所示的结果矩阵的第一行r1和第一列至第八列c1~c8的交叉点处的元素c
·
w1.1、c
·
w1.2、

、和c
·
w1.8。在另一实施例中,因为没有完成针对权重矩阵的所有元素和常数的矩阵乘法,所以输入到数据输出电路250的ewm结果数据输出控制信号ewm_rd_rst可以具有逻辑“低(l)”电平。在这种情况下,数据输出电路250可以禁止第一ewm结果数据ewm_rst1被从数据输出电路250输出,并且可以保持第一乘法结果数据至第八乘法结果数据dwc1.1、dwc1.2、

、和dwc1.8的输出待命状态。
58.图9是示出与图1所示的mac电路10中包括的mac运算器200的另一示例相对应的mac运算器200b的配置的框图。在图9中,与图6中使用的相同的参考数字和相同的参考符号可以表示相同的组件。因此,在下文中将省略对参考图6描述的相同组件的详细描述。参考图9,与图6的mac运算器200a相比,mac运算器200b还可以包括后处理电路310,其耦接在数据输出选择电路220的第二输出线262与数据输出电路250之间。在一个实施例中,后处理电路310可以包括归一化器(normalizer)311。
59.通常,当向mac运算器200b输入的第一输入数据da1和第二输入数据da2具有以符号(sign)、指数(exponent)和尾数(mantissa)表示的浮点类型时,乘法电路210可以向乘法结果数据应用归一化处理,用于将尾数向右向或左向移位并用于根据尾数的移位来增大或减小指数。然而,当在乘法电路210中执行归一化处理时,mac运算器200b的布局区域的效率可能降低。因此,归一化处理可以在乘法电路210中省略,而可以在加法器树230或累加器240中执行。在这种情况下,如果执行ewm算术运算使得由乘法电路210产生的乘法结果数据dm通过数据输出选择电路220的第二输出线262输出,则可能不能将归一化处理应用于乘法结果数据dm。因此,根据本实施例,mac运算器200b可以被设计为包括后处理电路310,并且即使是执行ewm算术运算,后处理电路310的归一化器311也可以将归一化处理应用于乘法结果数据dm。归一化器311可以对乘法结果数据dm执行归一化处理,以产生归一化的乘法结果数据dmn并将其输出到数据输出电路250。
60.图10是示出了与图1所示的mac电路10中包括的mac运算器200的另一示例相对应的mac运算器200c的配置的框图。在图10中,与图6中使用的相同的参考数字和相同的参考符号可以表示相同的组件。参考图10,mac运算器200c可以包括乘法电路210、数据输出选择电路220、累加电路420、加法器电路430和数据输出电路250。乘法电路210、数据输出选择电路220和数据输出电路250可以具有与参考图6所述的配置相同的配置。mac运算器200c的mac算术运算可以通过执行多个乘法计算和多个累加计算并且通过对累加结果数据执行多个加法计算来实现。
61.累加电路420可以包括并行设置的多个累加器,例如第一累加器至第八累加器acc0~acc7。第一累加器至第八累加器acc0~acc7可以分别耦接至数据输出选择电路220中的第一解复用器至第八解复用器demux0~demux7的第一输出线261。因此,第一累加器acc0可以执行从第一乘法器mul0输出并通过第一解复用器demux0的第一输出线261传送的第一乘法结果数据dm_0的累加计算,并且第二累加器acc1可以执行从第二乘法器mul1输出并通过第二解复用器demux1的第一输出线261传送的第二乘法结果数据dm_1的累加计算。以相同的方式,其余累加器(即,第三累加器至第八累加器acc2~acc7)中的每一个可以执行累加计算。第一累加器至第八累加器acc0至acc7中的每一个可以具有与参考图6描述的累加器240的配置相同的配置。在下文中,将结合图4所示的权重矩阵与矢量矩阵的矩阵乘法来描述mac运算器200c的mac算术运算。而且,可以以与参考图8描述的mac运算器200a的ewm算术运算相同的方式来执行mac运算器200c的ewm算术运算。因此,在下文中将省略对mac运算器200c的ewm算术运算的描述。
62.如参考图7所描述的,在第一mac算术运算中,mac运算器200c的第一乘法器mul0可以接收与位于权重矩阵的第一行r1和第一列c1的交叉点处的元素w1.1相对应的权重数据dw1.1(作为图10的第一输入数据da1_0)和与位于矢量矩阵的第一行r1和列c1的交叉点处的元素v1.1相对应的矢量数据dv1.1(作为图10的第二输入数据da2_0)。第一乘法器mul0可以执行权重数据dw1.1和矢量数据dv1.1的乘法计算,以产生并输出第一mac算术运算的第一乘法结果数据dwv1.1(作为图10的第一乘法结果数据dm_0)。数据输出选择电路220的第一解复用器demux0可以响应于具有逻辑“低(l)”电平的标志信号flag而通过第一解复用器demux0的第一输出线261将第一乘法结果数据dwv1.1传送至第一累加器acc0。第一累加器acc0可以锁存第一mac算术运算的第一乘法结果数据dwv1.1。以与上述相同的方式,其余的第二累加器至第八累加器acc1、

、和acc7也可以分别锁存第一mac算术运算的第二乘法结果数据至第八乘法结果数据。
63.在第二mac算术运算中,mac运算器200c的第一乘法器mul0可以接收与位于权重矩阵的第一行r1和第九列c9的交叉点处的元素w1.9相对应的权重数据dw1.9(作为图10的第一输入数据da1_0)和与位于矢量矩阵的第九行r9和列c1的交叉点处的元素v9.1相对应的矢量数据dv9.1(作为图10的第二输入数据da2_0)。第一乘法器mul0可以执行权重数据dw1.9和矢量数据dv9.1的乘法计算,以产生并输出第二mac算术运算的第一乘法结果数据dwv1.9(作为图10的第一乘法结果数据dm_0)。数据输出选择电路220的第一解复用器demux0可以响应于具有逻辑“低(l)”电平的标志信号flag而通过第一解复用器demux0的第一输出线261将第一乘法结果数据dwv1.9传送至第一累加器acc0。第一累加器acc0可以将第一乘法结果数据dwv1.9与第一乘法结果数据dwv1.1相加,以产生并锁存第一累加数据dmacc0。以与上述相同的方式,其余的第二累加器至第八累加器acc1、

、和acc7也可以分别锁存第二mac算术运算的第二乘法结果数据至第八乘法结果数据。
64.也可以以与上述相同的方式来执行第三mac算术运算至第64mac算术运算。位于结果矩阵的第一行r1和列c1的交叉点处的元素mac_rst1.1(其是作为被阵列排布在权重矩阵的第一行r1中的元素w1.1~w1.512和被阵列排布在矢量矩阵的列c1中的元素v1.1~v512.1的通过第一mac算术运算至第64mac算术运算的矩阵乘法的结果而获得的)可以被分为8组数据,并且这8组数据可以被第一累加器至第八累加器acc0~acc7中的相应累加器锁
存。例如,累加电路420的第一累加器acc0可以累加在第一mac算术运算至第64mac算术运算期间产生的所有第一乘法结果数据,以产生第一最终乘法结果数据dmacc0。类似地,累加电路420的第二累加器至第八累加器acc1至acc7也可以分别累加在第一mac算术运至第64mac算术运算期间产生的所有第二乘法结果数据至第八乘法结果数据,以产生第二最终乘法结果数据至第八最终乘法结果数据dmacc1~dmacc7。
65.由累加电路420的第一累加器至第八累加器acc0~acc7产生的第一最终乘法结果数据至第八最终乘法结果数据dmacc0~dmacc7可以被传送至加法器电路430。加法器电路430可以将所有第一最终乘法结果数据至第八最终乘法结果数据dmacc0~dmacc7相加以产生并输出总累加结果数据dmacct。从加法器电路430输出的总累加结果数据dmacct可以对应于位于结果矩阵的第一行r1和列c1的元素mac_rst1.1,其是通过被矩阵排布在权重矩阵的第一行r1中的元素w1.1~w1和被矩阵排布在矢量矩阵的列c1中的元素v1.1~v512.1的矩阵乘法而获得的。数据输出电路250可以接收并输出总累加结果数据dmacct作为mac结果数据mac_rst,该mac结果数据mac_rst被传送至mac运算器200c的外部设备。
66.图11是示出与图1所示的mac电路10中包括的mac运算器200的又一示例相对应的mac运算器200d的配置的框图。在图11中,与图10中使用的相同的参考数字和相同的参考符号可以表示相同的组件。参考图11,与图10所示的mac运算器200c相比,mac运算器200d还可以包括耦接在数据输出选择电路220的第二输出线262与数据输出电路250之间的后处理电路310。在一个实施例中,后处理电路310可以包括归一化器311,如参考图9所描述的。因此,后处理电路310的归一化器311可以接收通过第二输出线262从数据输出选择电路220输出的乘法结果数据dm。此外,归一化器311可以执行乘法结果数据dm的归一化处理,以用于产生归一化的乘法结果数据dmn并将其输出到数据输出电路250。数据输出电路250可以将归一化的乘法结果数据dmn输出作为ewm结果数据ewm_rst。
67.图12是示出根据本教导的实施例的pim器件500的框图。参考图12,pim器件500可以包括命令解码器510、图1中示出的mac电路10、第一存储体(memory bank0)521、第二存储体(memory bank1)522、全局缓冲器530和数据输入/输出(i/o)电路540。第一存储体(memory bank0)521可以包括第一存储区,该第一存储区储存与在图4(或图5)所示的权重矩阵的行r1~r512中的任一行(例如,第一行r1)中矩阵排布的元素相对应的权重数据dw。第二存储体(memory bank1)522可以包括第二存储区,该第二存储区储存与在图4所示的矢量矩阵的列c1中矩阵排布的元素v1.1~v512.1相对应的矢量数据dv。全局缓冲器530可以包括第三存储区,该第三存储区储存与图5所示的常数c相对应的常量数据dc。
68.mac电路10可以从第一存储体521和第二存储体522接收权重数据dw和矢量数据dv,以执行权重数据dw和矢量数据dv的mac算术运算。在一个实施例中,mac电路10可以通过第一存储体数据传输线551从第一存储体521接收权重数据dw。另外,mac电路10可以通过第二存储体数据传输线552从第二存储体522接收矢量数据dv。第一存储体数据传输线551可以在第一存储体521与mac电路10之间提供数据传输路径。第二存储体数据传输线552可以在第二存储体522与mac电路10之间提供数据传输路径。第一存储体521、mac电路10和第二存储体522可以构成一个mac单元。尽管在附图中未示出,但是pim器件500可以包括多个mac单元。
69.替代地,mac电路10可以从第一存储体521和全局缓冲器530接收权重数据dw和常
量数据dc,以执行权重数据dw和常量数据dc的ewm算术运算。mac电路10可以通过第一存储体数据传输线551从第一存储体521接收权重数据dw。另外,mac电路10可以通过全局数据传输线553从全局缓冲器530接收常量数据dc。全局数据传输线553可以用作pim器件500中的多用途数据传输路径。在另一实施例中,mac电路10可以通过数据i/o电路540的数据i/o引脚dq而直接从耦接至pim器件500的外部设备(未示出)接收常量数据dc。在这种情况下,输入到数据i/o电路540的常量数据dc可以通过全局数据传输线553而传送至mac电路10。
70.在根据本实施例的pim器件500中,构成mac单元的mac电路10可以对应于参考图1至图11所述的mac电路10。因此,mac电路10可以选择性地执行权重数据dw与矢量数据dv的mac算术运算,或者权重数据dw与常量数据dc的ewm算术运算。mac电路10的mac算术运算可以由各种mac控制信号来控制,该各种mac控制信号是由命令解码器510基于外部设备提供的mac命令mac_cmd而产生的。mac电路10的ewm算术运算可以由各种ewm控制信号来控制,这些ewm控制信号是由命令解码器510基于外部设备提供的ewm命令ewm_cmd而产生的。
71.当mac命令mac_cmd被传送至命令解码器510时,命令解码器510可以对mac命令mac_cmd进行解码以产生参考图7所述的各种mac控制信号(例如,mac读取控制信号mac_rd、具有逻辑“高(h)”电平的第一锁存控制信号latch1、具有逻辑“高(h)”电平的第二锁存控制信号latch2、具有逻辑“低(l)”电平的第三锁存控制信号latch3、具有逻辑“低(l)”电平的第四锁存控制信号latch4、具有逻辑“低(l)”电平的标志信号flag、以及mac结果数据输出控制信号mac_rd_rst)。mac读取控制信号mac_rd可以被传送至第一存储体521和第二存储体522。第一存储体521和第二存储体522可以响应于mac读取控制信号mac_rd而分别输出权重数据dw和矢量数据dv。如果mac电路10的mac算术运算结束,则可以将用于控制mac结果数据的输出操作的mac结果数据输出控制信号mac_rd_rst从命令解码器510传送至mac电路10。由mac电路10基于mac控制信号执行的mac算术运算可以与参考图7描述的mac算术运算相同。
72.当将ewm命令ewm_cmd传送至命令解码器510时,命令解码器510可以对ewm命令ewm_cmd进行解码以产生参考图8所述的各种ewm控制信号(例如,ewm读取控制信号ewm_rd、具有逻辑“低(l)”电平的第一锁存控制信号latch1、具有逻辑“低(l)”电平的第二锁存控制信号latch2、具有逻辑“高(h)”电平的第三锁存控制信号latch3、具有逻辑“高(h)”电平的第四锁存控制信号latch4、具有逻辑“高(h)”电平的标志信号flag、和ewm结果数据输出控制信号ewm_rd_rst)。以类似于图12所示的方式,ewm读取控制信号ewm_rd可以被传送至第一存储体521和全局缓冲器530。第一存储体521和全局缓冲器530可以响应于ewm读取控制信号ewm_rd而分别输出权重数据dw和常量数据dc。如果mac电路10的ewm算术运算结束,则可以将用于控制ewm结果数据的输出操作的ewm结果数据输出控制信号ewm_rd_rst从命令解码器510传送至mac电路10。由mac电路10基于ewm控制信号执行的ewm算术运算可以与参考图8所述的ewm算术运算相同。
73.出于说明性目的,以上已经给出了本教导的有限数量的可能实施例。本领域普通技术人员将会理解,各种修改、添加和替换是可能的。尽管该专利文件包含许多细节,但是这些细节不应被解释为对本教导的范围或要求保护的范围的限制,而应被解释为对特定实施例而言特别的特征的描述。在该专利文件中以分开的实施例的情形描述的某些特征也可以在单个实施例中组合实现。相反,以单个实施例的情形描述的各种特征也可以单独地或
以任何合适的子组合在多个实施例中实现。而且,尽管以上可以将特征描述为以某些组合起作用并且甚至为最初要求保护的那样,但是在某些情况下要求保护的组合中的一个或多个特征可以是从所述的组合中分离出来的,并且要求保护的组合可以针对子组合或子组合的变型。
再多了解一些

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

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

相关文献