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

存储器处理单元和包括零位跳过的计算点积的方法与流程

2022-02-22 22:35:28 来源:中国专利 TAG:

存储器处理单元和包括零位跳过的计算点积的方法


背景技术:

1.计算系统已经对现代社会的进步作出了重大贡献,并且被用于许多应用中以实现有利的结果。诸如台式个人计算机(pc)、膝上型pc、平板pc、上网本、智能电话、服务器等之类的许多设备在娱乐、教育、商业和科学的大多数领域中促进了生产力的提高和通信和分析数据的成本降低。在常规计算系统中,将数据从存储器传送到一个或更多个处理单元,处理单元可以对数据执行计算,然后将结果传送回存储器。将大量数据从存储器传送到处理单元并返回到存储器需要时间和消耗功率。因此,存在对减少处理延迟、数据传送延迟和/或功率消耗的改进的计算系统的持续需求。


技术实现要素:

2.通过参考以下描述和附图可以最好地理解本技术,这些附图用于示出针对存储器处理单元和包括零位跳过的计算点积的方法的本技术的实施例。
3.在一个实施例中,存储器设备可以包括被配置为存储一组乘数的第一存储位置以及被配置为存储一组被乘数的第二存储位置。位跳过逻辑可被配置为针对第二存储位置中的给定位位置确定保持非零值的行。一个或更多个读出电路可以被配置为顺序偏置所述第一存储位置中的与所述第二存储位置中的所述给定位位置的非零值行对应的行。该一个或更多个读出电路还可以被配置为顺序地感测所述第一存储位置中的与所述第二存储位置中的所述给定位位置的包含非零值的行对应的行,以确定所述给定位位置的部分积。一个或更多个累加器可被配置为累加所述给定位位置的确定的部分积。一个或更多个移位寄存器可被配置为在顺序地累加所述第一存储位置的多行上的多个位位置的确定的部分积之后将累加值移位,作为所述一组乘数与所述一组被乘数的矩阵点积。
4.在另一个实施例中,存储器设备可以包括被配置为存储一组乘数的第一存储位置以及被配置为存储一组被乘数的第二存储位置。位屏蔽逻辑可被配置为顺序地访问所述第二存储位置的各个行,以确定所述第二存储位置中的给定行的给定位位置是否为非零值。所述位屏蔽逻辑还可被配置为当所述第二存储位置中的所述给定行的给定位位置为非零值时,有条件地顺序访问所述第一存储位置中的对应于所述第二存储位置中的给定行的行。逻辑与电路可以被配置为当所述第二存储位置中的所述给定行的所述给定位位置是非零值时,将所述第二存储位置的所述给定行的所述给定位位置和所述第一存储位置的所述给定行有条件地逐位与运算,以生成所述给定位位置的部分积。一个或更多个累加器可被配置为当所述第二存储位置中的所述给定行的位位置为非零值时,有条件地累加所述给定位位置的所述部分积。第二存储位置中的给定位位置可以在预定方向上顺序地移位,并且一个或更多个移位寄存器可以被配置为在对应的给定方向上移位累加值。
5.提供本概述以便以简化形式介绍将在以下详细说明中进一步描述的一些概念。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
附图说明
6.在附图中通过示例而非限制的方式示出了本技术的实施例,并且其中,相同的参考标记指代类似的元件,并且其中:
7.图1示出了根据本技术的各方面的存储器设备。
8.图2示出了根据本技术的各方面的无栅极单元架构存储器设备。
9.图3示出了根据本技术的各方面的栅极单元架构存储器设备。
10.图4示出了根据本技术的各方面的示例性点积。
11.图5示出了根据本技术的各方面的被配置为计算矩阵点积的存储器设备。
12.图6a和6b示出了根据本技术的各方面的计算矩阵点积的方法。
13.图7示出了根据本技术的各方面的被配置为计算矩阵点积的存储器设备。
14.图8a和8b示出了根据本技术的各方面的计算矩阵点积的方法。
15.图9a和图9b示出了根据本技术的各方面的计算矩阵点积的方法。
16.图10a和图10b示出了根据本技术的各方面的计算矩阵点积的方法。
17.图11示出了根据本技术的各方面的被配置为计算矩阵点积的存储器设备。
18.图12a和图12b示出了根据本技术的各方面的计算矩阵点积的方法。
19.图13a和图13b示出了根据本技术的各方面的计算矩阵点积的方法。
20.图14a和图14b示出了根据本技术的各方面的计算矩阵点积的方法。
21.图15示出了根据本技术的各方面的被配置为计算矩阵点积的存储器设备。
22.图16a和16b示出了根据本技术的各方面的计算矩阵点积的方法。
具体实施方式
23.现在将详细参考本技术的实施例,其示例在附图中示出。尽管将结合这些实施例描述本技术,但是应当理解的是,其并不旨在将本发明局限于这些实施例。相反,本发明旨在覆盖可被包括在由所附权利要求限定的本发明的范围内的替代、修改和等同物。此外,在本技术的以下详细描述中,阐述了许多具体细节以便提供对本技术的透彻理解。然而,应当理解,本技术可以在没有这些具体细节的情况下实施。在其他实例中,未详细描述众所周知的方法、过程、组件和电路,以免不必要地模糊本技术的各方面。
24.以下本技术的一些实施例是按照例程、模块、逻辑块以及对一个或更多个电子设备内的数据的操作的其他符号表示来呈现的。描述和表示是本领域的技术人员为了将其工作的实质最有效地传达给本领域的其他技术人员所使用的手段。例程、模块、逻辑块和/或类似物在本文中并且通常被设想为导致期望结果的过程或指令的自洽序列。这些过程是包括对物理量的物理操纵的那些过程。通常,尽管不是必需的,但是这些物理操纵采取能够在电子设备中存储、传送、比较和以其他方式操纵的电信号或磁信号的形式。为了方便起见,并且参考共同使用,参照本技术的实施例,这些信号被称为数据、位、值、元素、符号、字符、术语、数字、字符串等。
25.然而,应当牢记,所有这些术语将被解释为参考物理操作和数量并且仅仅是方便的标签并且考虑本领域中常用的术语被进一步解释。除非另有具体说明,否则如从以下讨论中显而易见的,应当理解的是,通过本技术的讨论,利用诸如“接收”等术语的讨论是指诸如操纵和变换数据的电子计算设备的电子设备的动作和处理。该数据被表示为电子设备的
逻辑电路、寄存器、存储器等内的物理(例如,电子)量,并且被转换成类似地被表示为电子设备内的物理量的其他数据。
26.在本技术中,反意连接词的使用旨在包括连接词。定冠词或不定冠词的使用不旨在指示基数。具体地,提及“该(the)”物体或“一个(a)”物体旨在还表示可能的多个此类物体中的一个。术语“包括(comprises)”、“包括(comprising)”、“包括(includes)”、“包括(including)”等的使用指定所述要素的存在,但不排除一个或更多个其他要素和/或其组的存在或添加。还应理解的是,虽然在本文中可使用术语第一、第二等来描述各种元件,但是这种元件不应受这些术语限制。这些术语在本文中用于区分一个元件与另一个元件。例如,在不背离实施例的范围的情况下,第一元件可以被称为第二元件,并且类似地,第二元件可以被称为第一元件。还应理解的是,当元件被称为“耦接”至另一元件时,该元件可直接或间接地连接至另一元件,或者可存在中间元件。相反,当元件被称为“直接连接”至另一元件时,则不存在中间元件。还应理解的是,术语“和/或”包括相关元件中的一个或更多个的任何和所有组合。还应理解的是,本文中使用的措辞和术语用于描述的目的,不应被视为限制性的。
27.参考图1,示出了根据本技术的方面的存储器设备。存储器设备100可包括一个或更多个存储器单元阵列110、输入寄存器120、字线驱动器130、读出电路140和累加器/输出寄存器150。存储器设备还可以包括其他众所周知的电路,这些电路对于理解本技术而言是不必要的,因此在此不讨论。
28.一个或更多个存储器单元阵列110可以被布置成耦接至相应字线的多行存储器单元和耦接至相应位线的多列存储器单元。存储器单元可被编程为表示相应的二进制值
‘0’

‘1’
的两个状态之一。存储器单元阵列110可以是任何数量的不同架构。在一个示例性实施中,存储器单元阵列110可由单个电阻式存储器单元组成,如图2所示。每个电阻式存储器单元210可以跨相应的字线220和相应的位线230耦接。在另一个示例性实施中,每个存储器单元可包括晶体管310和电阻元件320,如图3所示。晶体管310的栅极可耦接到相应字线330。电阻元件320可耦接在相应的位线340和晶体管310的源极之间。晶体管310的漏极可耦接到相应的源极线350。在电阻式随机存取存储器架构中,
‘0’
位可由存储器单元的高电阻状态表示,
‘1’
可由存储器单元的低电阻状态表示。
29.再次参见图1,存储器设备100可以被配置成根据存储器设备的常规方面存储数据。例如,字线驱动器130可以根据解码的存储器地址驱动阵列的选择字线。读出电路140可以利用位线或位线和源极线的组合来从阵列的所选字线的存储器单元读取和向其写入。
30.存储器设备100还可以被配置成计算矩阵点积。矩阵点积用于人工智能、大数据分析、边缘计算等。为了用于计算矩阵点积,累加器和输出寄存器150可以耦接到读出电路140。第一矩阵a可以存储在存储器单元阵列110中,并且第二矩阵x可以加载到输入寄存器120中。现在参考图4,示出了加载到存储器单元阵列110的一部分中的第一矩阵a和加载到输入寄存器中的第二矩阵x的示例。在该示例中,第一矩阵可包括r行c列的元素,第二矩阵可包括r行一列的元素。元素可以包括由n位表示的值。在该示例中,如图4所示,元素值可以是4位(bit)的值。然而,可以理解,矩阵元素可以是任何预定数量的位。例如,在神经网络应用中,矩阵元素通常是8位的值。每行的输入寄存器可以与一条对应的字线相关联。如图4所示,可将第二矩阵的第一元素x0的四位值加载到第一个四位寄存器中,可将第二矩阵的第
二元素x1加载到第二个四位寄存器中,以此类推,将第二矩阵的最后元素x
n-1
加载到最后的四位寄存器中。类似地,可以将第一矩阵的第一行中的第一元素a
0,0
加载到一组存储器单元的第一行的前四位中,可以将矩阵的第一行中的第二元素a
0,1
加载到该组存储器单元的第一行的下一个四位中,以此类推,将第一矩阵的最后一行中的最后元素a
r-1,c-1
加载到该组存储器单元的最后一行中的最后四位中。矩阵点积可通过以下方式来计算:通过将第二矩阵x的第一列中的每个元素与第一矩阵a的第一列中的对应元素相乘并对其部分积求和,并对第一矩阵a的每一列重复该过程,使得第二矩阵x的第一列中的元素与第一矩阵a的最后一列中的对应元素相乘并对其部分积求和。
31.现在参见图5,示出了根据本技术的各方面的被配置为计算矩阵点积的存储器设备。该存储器设备可以包括第一存储位置505、第二存储位置510、地址生成器515、布尔逻辑与电路520、525,以及一个或更多个累加器530、535。逻辑与电路520、525可被组织为对数据字工作。一个或更多个累加器可被组织为对n位的矩阵元素工作。如图所示,矩阵元素可以是四位,或更多或更少。例如,在机器学习、人工智能和类似应用中,矩阵元素通常为8位或更多。
32.在一个实施方式中,第一存储位置505可以是电阻式随机存取存储器(rram),并且第二存储位置510可以是一组寄存器。在另一个实施方式中,第二存储位置510可以是静态随机存取存储器(sram)。第一存储位置505可以被配置为存储多个乘数,并且第二存储位置510可以被配置为存储多个被乘数。为了描述本技术的各方面的目的,被乘数的最高有效位(msb)可存储在右侧,且乘数的最高有效位(msb)可存储在左侧,如图5所示。将参考图6a和图6b进一步说明矩阵点积的计算。
33.在605处,一组乘数可以被加载到第一存储位置505中。在610处,可将一组被乘数加载到第二存储位置510中。在615处,可以增量地访问第一存储位置和第二存储位置的多行。在一个实施方式中,地址生成器515可以被配置为将增量行地址540、545发送至第一存储位置505和第二存储位置510。第二存储位置510中的给定行的给定位位置和第一存储位置505中的给定行可以被输出到逻辑与电路520、525。在620处,逻辑与电路520、525可以执行第二存储位置510的给定行的给定位位置与第一组存储位置505的给定行的逐位与。在625处,累加器530、535可被配置为累加针对给定位位置的逻辑与电路520、525的输出,且可针对多行重复615至625的过程。在第一存储位置505和第二存储位置510的行被地址生成器515递增地寻址之后,在630处,在从最高有效位到最低有效位地进行处理时,第二存储位置510中的用于输入到逻辑与电路520、525的位位置可以向左移位一位,并且一个或更多个累加器530、535的内容可以向左移位一位。如果处理是从最低有效位到最高有效位,则第二存储位置中的位位置可向右移位一位,并且一个或更多个累加器530、535的内容可向右移位一位。可以针对第二存储位置510的每个位位置重复615-630的过程。在针对第二存储位置510的每一位位置重复615-630的过程之后,在635处,可将一个或更多个累加器530、535中的累加值作为一组乘数与一组被乘数的矩阵点积而输出。另外,通过在610处将新的被乘数加载到第二存储位置中且重复615至635处的过程,可使用新的被乘数和相同乘数来重复该过程。或者,可在605和610处加载新乘数及被乘数,且可针对新的被乘数值及乘数值重复在615-635处的过程。
34.在其他实施方式中,第一和/或第二存储位置505、510的msb可以是右对齐的或左
对齐的,并且累加器530、535的内容可以取决于第一和第二存储位置505、510的msb的对齐而右移或左移。
35.现在参见图7,示出了根据本技术的各方面的被配置为计算矩阵点积的存储器设备。存储器设备700可以包括第一存储位置705、第二存储位置710、位跳过逻辑715、一个或更多个读出电路720、725,一个或更多个累加器730、735以及一个或更多个移位寄存器740、745。在一个实施方式中,第一存储位置705可以是电阻式随机存取存储器(rram),并且第二存储位置710可以是一组寄存器。在另一个实施方式中,第二存储位置710可以是静态随机存取存储器(sram)。出于解释本技术的各方面的目的,第一和第二存储位置705、710被示为存储相应的矩阵。然而,更通常地,第一和第二矩阵存储在大得多的第一和第二存储位置的相应部分中。将参考图8a和8b进一步解释被配置为计算矩阵点积的存储器设备。
36.为了计算矩阵点积,在805处,可以将一组乘数加载到第一存储位置705中。在一个实施方式中,r行c列元素的第一矩阵a(其中,每个元素可以是n位)可以被加载到第一存储位置705中。在810处,可将一组被乘数加载到第二存储位置710中。在一个实施方式中,可将r个n位的元素值的第二矩阵x加载到第二存储位置710中。在另一个实施方式中,第二存储位置710可以包括用于存储矩阵x的r个元素的相应给定位的r行的单位寄存器。为了说明本技术的各方面,如图8所示,第一存储位置705可以存储12x2矩阵,其中每个元素是4位,并且第二存储位置710可以存储12x1矩阵,其中每个元素是4位。然而,第一和第二存储位置705、710可以被配置为存储任何预定数目的r行的元素,并且第一存储位置705可以被配置为存储任何预定数目的c个元素,其中n位的元素值可以具有任何预定数目的位。
37.在815处,位跳过逻辑715可以被配置为针对第二存储位置710中的给定位位置确定750保持非零值的行。例如,位跳过逻辑715可访问第二存储位置710以确定哪些行的最高有效位(msb)包含位值
‘1’

38.在820处,位跳过逻辑715可以被配置为顺序地偏置第一存储位置705的包含矩阵a的如下行:这些行对应于第二存储位置710中的保持给定位位置的非零值的行。例如,第二存储位置710中的第一行755中的最高有效位可以是
‘0’
。因此,位跳过逻辑715可跳过760偏置第一存储位置705中的第一行。第二存储位置710中的第二行765中的最高有效位可以是
‘1’
。因此,位跳过逻辑715可用字线读取电压电位来偏置770第一存储位置705中的第二行。位跳过逻辑可以顺序地偏置第一存储位置705中的、与第二存储位置710中的最高有效位保持
‘1’
的行相对应的每行。
39.在825处,读出电路720、725可以被配置为顺序地感测第一存储位置的、与第二存储位置710中的保持非零位值的行相对应的行,以便确定对应的部分积。例如,读出电路720、725可以被配置为当第二行用读取字线电位770偏置时感测第一存储位置705的第二行中的位值,因为第二存储位置710的第二行765中的给定位保持
‘1’
。由读出电路720、725输出的位值表示部分积。
40.在830处,一个或更多个累加器730、735可以被配置为顺序地累加由读出电路720、725输出的部分积。在835处,对于给定位位置的第二矩阵x的每一行,可重复在820-830处的过程。因此,位跳过逻辑715可以针对第二存储位置710中的为非零值的每个位位置,重复偏置第一存储位置705中的每行。读出电路720、725还可以重复感测第一存储位置的如下行:其对应于第二存储位置中的对于给定有效位保持非零位值的行,以确定对应的部分积。此
外,一个或更多个累加器730、735可以重复累加由读出电路720、725输出的部分积。
41.概率上,被乘数的大约一半的位将为
‘0’
且一半将为
‘1’
。乘以
‘0’
值的被乘数将总是
‘0’
,而不管乘数如何。因此,如果
‘0’
的被乘数值被跳过,则可减少能量消耗或可增加计算吞吐量。在常规的位跳过方法中,如果给定被乘数的所有位为零,那么可跳过给定被乘数及给定乘数的计算。相比之下,本技术的各方面在位串行基础上执行计算,且因此可对于给定被乘数的为零的每一位位置应用位跳过。因而,第二存储位置710中的第二矩阵x中的每一零位值的位跳过比常规技术更有效,常规技术要求给定被乘数中的所有位为零。
42.在840处,一个或更多个移位寄存器740、745可以被配置为在第一存储位置705中的、与第二存储位置710中的对于给定位位置的非零值相对应的行已经被累加之后,在第一预定方向上移位来自相应的一个或更多个累加器730、735的累加值。接着可将位移位后的累加值加载回对应的累加器730、735中。在840处,第二存储位置710中的给定位位置还可以在第二预定方向上移位。在一个实施方式中,当从最高有效位到最低有效位对整个被乘数排序时,来自相应的一个或更多个累加器730、735的累加值可向左移位一位,且接着加载回对应累加器730、735中。此外,第二存储位置710中的给定位位置可以向左移位一位。如果处理是从最低有效位到最高有效位,那么第二存储位置中的位位置可向右移位一位,且一个或更多个累加器730、735的内容可向右移位一位。可以针对每个位位置重复845在820-840处的过程。例如,在针对第二存储位置中的多行中的最高有效位顺序地偏置第一存储位置的行、顺序地感测第一存储位置中的行和顺序地累加部分积之后,可以针对下一个最高有效位重复该过程,如此类推,直到最低有效位也被处理。
43.在850处,可以在顺序地累加第一存储位置的多行上的多个位位置的确定的部分积之后输出累加值。累加值可被输出为第一矩阵a的乘数与第二矩阵x的被乘数的矩阵点积。在一个实施方式中,可输出累加值以用于存储在第一或第二存储位置中,以例如用于另一个向量点积计算。
44.在855处,可以重复在810-850处的过程以利用相同的第一矩阵a和第二矩阵x的新实例来计算另一个点积,其中在810处将第二矩阵x的新实例加载到第二存储位置中。因此,第一矩阵a可以被重用以计算第二矩阵x的多个实例的点积。可替代地,805-850处的过程可在855处被重复,以利用第一矩阵a的新实例和第二矩阵x的新实例来计算另一个点积。
45.由于跳过每个被乘数中的每个零位值,所以本技术的各方面可以有利地增加向量点积的吞吐量。由于跳过每一被乘数中的每一零位值,因此本技术的各方面还可有利地减少能量消耗。
46.现在参见图9a和9b,示出了根据本技术的各方面的一种计算向量点积的方法。在905处,一组乘数可以被加载到第一存储位置705中。在一个实施方式中,r行c列元素的第一矩阵a(其中,每个元素可以是n位)可以被加载到第一存储位置705中。在910处,一组被乘数可被加载到第二存储位置710中。在一个实施方式中,可将r个n位的元素值的第二矩阵x加载到第二存储位置710中。在另一个实施方式中,第二存储位置720可以包括用于存储矩阵x的r个元素的一相应给定位的r行的单位寄存器。
47.在915处,位跳过逻辑715可以被配置为针对第二存储位置中的给定位位置确定750保持非零值的行。例如,位跳过逻辑715可访问第二存储位置710以确定哪些行的最高有效位(msb)包含位值
‘1’

48.在920处,位跳过逻辑715可以被配置为顺序地偏置第一存储位置705的包含矩阵a的如下行:这些行对应于第二存储位置710中的给定位位置保持非零值的行。例如,第二存储位置710中的第一行755中的最高有效位可以是
‘0’
。因此,位跳过逻辑715可跳过760偏置第一存储位置705中的第一行。可以跳过第一存储位置710中的对应行,因为任何值乘以
‘0’
导致对应行为
‘0’
。相反,第二存储位置710中的第二行765中的最高有效位可以是
‘1’
。因此,位跳过逻辑715可用字线读取电压电位来偏置770第一存储位置705中的第二行。位跳过逻辑可以顺序地偏置第一存储位置705中的、与第二存储位置710中的最高有效位保持
‘1’
的行相对应的每行。
49.在925处,读出电路720、725可以被配置为顺序地感测第一存储位置的、与第二存储位置710中的保持非零位值的行相对应的行,以确定给定位位置的对应部分积。例如,读出电路720、725可以被配置为当第二行用读取字线电位770偏置时感测第一存储位置705的第二行中的位值,因为第二存储位置710的第二行765中的给定位保持
‘1’

50.在930处,一个或更多个累加器730、735可以被配置为顺序地累加由读出电路720、725输出的部分积。在935,可针对给定位位置的第二矩阵x的每一行重复920-930处的过程。在940处,可确定在已对预定数量的位位置进行排序之后,当前累加的部分积是否满足预定标准。例如,为了实现整流线性单元(relu)功能,可以确定多行的当前累加的部分积在n位中的m个有效位之后是否小于零。一般来说,如果在已处理预定数目的最高有效位之后当前累加的部分积小于零,那么剩余最低有效位将产生大于零的累加部分积的概率可相对较低。如果尚未处理预定数目的位位置或当前累加的部分积满足预定标准,则可在945处针对第二矩阵x的行的给定位位置重复920-940处的过程。因此,位跳过逻辑715可以针对第二存储位置710中的每个位位置重复偏置第一存储位置705中的每行。读出电路720、725还可以重复感测第一存储位置的如下行:其对应于第二存储位置中的保持非零位值的行,以确定给定位位置的对应部分积。此外,一个或更多个累加器730、735可以重复累加由读出电路720、725输出的部分积。如果已处理了预定数目的位位置且当前累加的部分积不满足预定标准,那么过程可在950处前进到过程965,如下文所描述。例如,如果在n位中的m位已经被处理之后当前累加的部分积小于零,则可以提前终止向量点积的计算。当在950处提前终止向量点积的计算时,偏置920、感测925和累加930操作的数量减少。
51.在955处,一个或更多个移位寄存器740、745可以被配置为在第一存储位置705中的、与第二存储位置710中的给定位位置的非零值对应的行已经被累加之后,在第一预定方向上移位累加值。接着可将位移位后的累加值加载回对应的累加器730、735中。在955处,第二存储位置710中的给定位位置也可在第二预定方向上移位。在一个实施方式中,当从最高有效位朝向最低有效位对整个被乘数排序时,来自相应的一个或更多个累加器730、735的累加值可向左移位一位,且接着加载回对应累加器730、735中。此外,第二存储位置710中的给定位位置可以向左移位一位。如果处理是从最低有效位到最高有效位,那么第二存储位置中的位位置可向右移位一位,且一个或更多个累加器730、735的内容可向右移位一位。可以针对每个位位置重复960在920-955处的处理。例如,在针对第二存储位置中的多行中的最高有效位顺序地偏置第一存储位置的行、顺序地感测第一存储位置中的行和顺序地累加部分积之后,可以针对下一个最高有效位重复该过程,如此类推,直到最低有效位也被处理。
52.在965处,可以在顺序地累加第一存储位置的多行上的多个位位置的确定的部分积之后输出累加值。累加值可被输出作为第一矩阵a的乘数与第二矩阵x的被乘数的矩阵点积。在一个实施方式中,可输出累加值以用于存储在第一或第二存储位置中,以例如用于另一个向量点积计算。
53.在970处,可以重复在910-965处的过程以利用相同的第一矩阵a和第二矩阵x的新实例来计算另一个点积,其中在910处将第二矩阵x的新实例加载到第二存储位置中。因此,第一矩阵a可以被重用以计算第二矩阵x的多个实例的点积。或者,可在970处重复905-965处的过程,以利用第一矩阵a的新实例和第二矩阵x的新实例来计算另一个点积。
54.当在预定数量的位位置已经被排序之后当前累加的部分积不满足预定标准时的提前终止,可以有利地与零位跳过组合,以便有利地进一步增加向量点积的吞吐量。提前终止还可有利地与零位跳过组合以有利地进一步减少能量消耗。
55.现在参见图10a和10b,示出了根据本技术的各方面的一种计算矩阵点积的方法。在1005处,一组乘数可以被加载到第一存储位置705中。在一个实施方式中,r行c列元素的第一矩阵a(其中,每个元素可以是n位)可以被加载到第一存储位置705中。在1010处,一组被乘数可被加载到第二存储位置710中。在一个实施方式中,可将r个n位的元素值的第二矩阵x加载到第二存储位置710中。在另一个实施方式中,第二存储位置710可以包括用于存储矩阵x的r个元素的相应给定位的r行的单位寄存器。
56.在1015处,位跳过逻辑715可以被配置为针对第二存储位置中的给定位位置确定750保持非零值的行。例如,位跳过逻辑715可访问第二存储位置710以确定哪些行的最高有效位(msb)包含位值
‘1’

57.在1020处,位跳过逻辑715可以被配置为顺序地偏置第一存储位置705的包含矩阵a的如下行:这些行对应于第二存储位置710中的保持给定位位置的非零值的行。例如,第二存储位置710中的第一行755中的最高有效位可以是
‘0’
。因此,位跳过逻辑715可跳过760偏置第一存储位置705中的第一行。第二存储位置710中的第二行765中的最高有效位可以是
‘1’
。因此,位跳过逻辑715可用字线读取电压电位来偏置770第一存储位置705中的第二行。位跳过逻辑可顺序地偏置第一存储位置705中的对应于第二存储位置710中保持
‘1’
的行的每一行。
58.在1025处,读出电路720、725可以被配置为顺序地感测第一存储位置705的、与第二存储位置710中的保持非零位值的行相对应的行,以便确定对应的部分积。例如,读出电路720、725可以被配置为当第二行用读取字线电位770偏置时感测第一存储位置705的第二行中的位值,因为第二存储位置710的第二行765中的给定位保持
‘1’

59.在1030处,一个或更多个累加器730、735可以被配置为顺序地累加由读出电路720、725所输出的部分积。在1035处,对于给定位位置的第二矩阵x的每一行,可重复1020-1030处的过程。因此,对于给定有效位,位跳过逻辑715可以针对第二存储位置710中的每个位位置重复偏置第一存储位置705中的每行。读出电路720、725还可以重复感测第一存储位置的如下行:其对应于第二存储位置中的对于给定位位置保持非零位值的行,以确定对应的部分积。此外,一个或更多个累加器730、735可以重复累加由读出电路720、725输出的部分积。
60.在1040处,一个或更多个移位寄存器740、745可以被配置为在第一存储位置705中
的、与第二存储位置710中的对于给定位位置的非零值相对应的行已经被累加之后,在第一预定方向上移位来自相应的一个或更多个累加器730、735的累加值。接着可将位移位后的累加值加载回对应的累加器730、735中。在1040处,第二存储位置710中的给定位位置还可以在第二预定方向上移位。在一个实施方式中,当从最高有效位到最低有效位对整个被乘数排序时,来自相应的一个或更多个累加器730、735的累加值可向左移位一位,且接着加载回对应累加器730、735中。此外,第二存储位置中的给定位位置可以向左移位一位。如果处理是从最低有效位到最高有效位,那么第二存储位置中的位位置可向右移位一位,且一个或更多个累加器730、735的内容可向右移位一位。可以针对每个位位置重复1045在1020-1040处的过程。例如,在针对第二存储位置中的多行中的最高有效位顺序地偏置第一存储位置的行、顺序地感测第一存储位置中的行和顺序地累加部分积之后,可以针对下一个最高有效位重复该过程,如此类推,直到最低有效位也被处理。
61.在1050处,如果当前累加值满足预定标准,则在顺序地累加第一存储位置的多行上的多个位位置的确定的部分积之后,可以缓冲累加值。例如,如果当前累加值大于当前缓冲的累加值,则可以缓冲当前累加值以实现最大池化操作。条件输出缓冲可有利地减少输出带宽和/或下游存储器访问带宽。在另一个示例中,输出缓冲还可充当管线级以改善时序。
62.在1055处,可以在顺序地累加第一存储位置的多行上的多个位位置的确定的部分积之后输出累加值。累加值可被输出为第一矩阵a的乘数与第二矩阵x的被乘数的矩阵点积。在一个实施方式中,可输出累加值以用于存储在第一或第二存储位置中,以例如用于另一个向量点积计算。
63.在1060处,可以重复1010-1055处的过程以利用相同的第一矩阵a和第二矩阵x的新实例来计算另一个点积,其中在1010处,第二矩阵x的新实例被加载到第二存储位置中。因而,第一矩阵a可被重用以计算第二矩阵x的多个实例的点积。或者,在1060处可重复1005-1055处的过程以利用第一矩阵a的新实例和第二矩阵x的新实例来计算另一个点积。
64.在另外的实施例中,以上参照图9a和9b所描述的提前终止过程以及以上参照图10a和10b所描述的累加值缓冲器可以与零位跳过过程组合。
65.现在参见图11,示出了根据本技术的各方面的被配置为计算矩阵点积的存储器设备。存储器设备1100可以包括第一存储位置1105、第二存储位置1110、位屏蔽逻辑1115、一个或更多个读出电路1120、1125,逻辑与电路1130、1135,一个或更多个累加器1140、1145以及一个或更多个移位寄存器1150、1155。在一个实施方式中,第一存储位置1105可以是电阻式随机存取存储器(rram),并且第二存储位置1110可以是一组寄存器。在另一个实施方式中,第二存储位置1110可以是静态随机存取存储器(sram)。为了说明本技术的各方面的目的,第一存储位置1105和第二存储位置1110被示出为存储相应的矩阵。然而,更通常地,第一和第二矩阵存储在大得多的第一和第二存储位置的相应部分中。将参考图12a和12b进一步解释被配置为计算矩阵点积的存储器设备。
66.为了计算矩阵点积,在1205处可以将一组乘数加载到第一存储位置1105中。在一种实施方式中,具有r行c列元素的第一矩阵a(其中,每个元素可以是n位)可以被加载到第一存储位置1105中。在1210处,一组被乘数可被加载到第二存储位置1110中。在一个实施方式中,可将r个n位的元素值的第二矩阵x加载到第二存储位置1110中。在另一个实施方式
中,第二存储位置1110可以包括用于存储矩阵x的r个元素的相应给定位的r行的单位寄存器。为了说明本技术的各方面,如图11所示,第一存储位置1105可以存储12x2矩阵,其中每个元素是4位,并且第二存储位置1110可以存储12x1矩阵,其中每个元素是4位。然而,第一和第二存储位置1105、1110可以被配置为存储任何预定数量的r行元素,并且第一存储位置1105可以被配置为存储任何预定数量的c个元素,其中n位的元素值可以具有任何预定数量的位。
67.在1215处,位屏蔽逻辑1115可以被配置为针对第二存储位置1110的行中的给定位位置确定位值1160。例如,位屏蔽逻辑1115可以访问第二存储位置1110以确定每行中的给定位位置是包含
‘0’
值还是
‘1’
值。
68.在1220处,位屏蔽逻辑1115可以被配置为基于第二存储位置1110中的对应行的给定位的值而有条件地顺序地访问第一存储位置1105中的行。例如,如果第二存储位置1115中的对应行的给定位包含
‘1’
值,则可以进行读取偏置和感测以访问第一存储位置1105中的对应行1165。如果第二存储位置中的对应行的给定位包含
‘0’
值,则可以禁止第一存储位置1105的读取偏置和感测。
69.在1225处,逻辑与电路1130、1135可以被配置为如果第二存储位置1110中的对应行的给定位包含
‘1’
值,则将第二存储位置1110的行中的给定位的值和第一存储位置1105的对应行的内容有条件地与(and)。第二存储位置1110的行的给定位的值可以与第一存储位置1105的对应行逐位与。逻辑与电路的输出可以是第一存储位置1105的对应行的部分积。
70.在1230处,一个或更多个累加器1140、1145可以被配置为有条件地顺序地累加由逻辑与电路1130、1135输出的部分积。如果第二存储位置1110中的对应行的给定位包含
‘1’
值,则可以使一个或更多个累加器1140、1145能够累加由逻辑与电路输出的部分积。如果第二存储位置中的对应行的给定位包括
‘0’
值,则可以禁用一个或更多个累加器1140、1145。在1235处,可针对给定位位置的第二矩阵x的每一行重复1220-1230处的过程。因此,位屏蔽逻辑1115可以基于第二存储位置1110中的对应行的给定位的值重复顺序访问、逐位逻辑与和累加。顺序访问、逐位逻辑与和累加可以针对第二存储位置1110中包含零值的行中的给定位被屏蔽。第二存储位置1110中的每一零位值x的位屏蔽比常规技术更有效,常规技术要求给定被乘数中的所有位为零。
71.在1240处,一个或更多个移位寄存器1150、1155可以被配置成在第一存储位置1105中的、与第二存储位置1110中的对于给定位位置的非零值对应的行已经被累加之后,在第一预定方向上移位来自相应的一个或更多个累加器1140、1145的累加值。然后可以将位移位后的累加值加载回对应的累加器1140、1145中。在1240处,第二存储位置1110中的给定位位置还可以在第二预定方向上移位。在一个实施方式中,当从最高有效位到最低有效位对整个被乘数排序时,来自相应的一个或更多个累加器1140、1145的累加值可向左移位一位,且接着加载回对应的累加器1140、1145中。此外,第二存储位置1110中的给定位位置可以向左移位一位。如果处理是从最低有效位到最高有效位,则第二存储位置中的位位置可以向右移位一位,并且一个或更多个累加器1140、1145的内容可以向右移位一位。对于每一位位置,在1245处可重复1220-1240处的过程。例如,在针对第二存储位置中的多行中的最高有效位顺序地偏置第一存储位置的行、顺序地感测第一存储位置中的行和顺序地累加
部分积之后,可以针对下一个最高有效位重复该过程,如此类推,直到最低有效位也被处理。
72.在1250处,可以在顺序地累加第一存储位置的多行上的多个位位置的确定的部分积之后输出累加值。累加值可被输出为第一矩阵a的乘数与第二矩阵x的被乘数的矩阵点积。在一个实施方式中,可输出累加值以用于存储在第一或第二存储位置中,以例如用于另一个向量点积计算。
73.在1255处,1210-1250处的过程可被重复以利用相同的第一矩阵a和第二矩阵x的新实例来计算另一个点积,其中第二矩阵x的新实例在1210处被加载到第二存储位置中。因而,第一矩阵a可被重用以计算第二矩阵x的多个实例的点积。可替代地,在1255,可重复1205-1250处的过程以利用第一矩阵a的新实例和第二矩阵x的新实例计算另一点积。
74.由于屏蔽每个被乘数中的每个零位值,所以本技术的各方面可以有利地增加向量点积的吞吐量。由于屏蔽每一被乘数中的每一零位值,本技术的各方面还可有利地减少能量消耗。
75.现在参见图13a和13b,示出了根据本技术的各方面的一种计算向量点积的方法。在1305处,可以将一组乘数加载到第一存储位置1105中。在一个实施方式中,r行和c列元素的第一矩阵a(其中,每个元素可以是n位)可以被加载到第一存储位置1105中。在1310处,可将一组被乘数加载到第二存储位置1110中。在一个实施例中,可将r个n位的元素值的第二矩阵x加载到第二存储位置1110中。在另一个实施方式中,第二存储位置1110可以包括用于存储矩阵x的r个元素的相应给定位的r行的单位寄存器。
76.在1315处,位屏蔽逻辑1115可以被配置为针对第二存储位置1110的行中的给定位位置确定位值。例如,位屏蔽逻辑1115可以访问1160第二存储位置1110以确定每行中的给定位位置是包含
‘0’
值还是
‘1’
值。
77.在1320处,位屏蔽逻辑1115可以被配置为基于第二存储位置1110中的对应行的给定位的值而有条件地顺序地访问第一存储位置1105中的行。例如,如果第二存储位置1110中的对应行的给定位包含
‘1’
值,则可以进行读取偏置和感测以访问第一存储位置1110中的对应行1165。如果第二存储位置中的对应行的给定位包含
‘0’
值,则可以禁止第一存储位置1105的读取偏置和感测。
78.在1325处,逻辑与电路1130、1135可以被配置为如果第二存储位置1110中的对应行的给定位包含
‘1’
值,则使第二存储位置1110的行中的给定位的值和第一存储位置1105的对应行的内容有条件地与(and)。第二存储位置1110的行的给定位的值可以与第一存储位置1105的对应行逐位与。逻辑与电路的输出可以是对应行的部分积。
79.在1330处,一个或更多个累加器1140、1145可以被配置为有条件地顺序地累加由逻辑与电路1130、1135输出的部分积。如果第二存储位置1110中的对应行的给定位1165包含
‘1’
值,则可以使一个或更多个累加器1140、1145能够累加由逻辑与电路1130、1135输出的部分积。如果第二存储位置1110中的对应行的给定位包含
‘0’
值,则可以禁用一个或更多个累加器1140、1145。可对于给定位位置的第二矩阵x的每一行,在1335处重复1320-1330处的过程。
80.在1340处,在已经对预定数目的位位置进行了排序之后,可以确定当前累加的部分积是否满足预定标准。例如,为了实现整流线性单元(relu)功能,可以确定多行的当前累
加的部分积在n个有效位中的m个有效位之后是否小于零。一般来说,如果在已处理预定数目的最高有效位之后当前累加的部分积小于零,那么剩余最低有效位将产生大于零的累加部分积的概率可相对较低。如果尚未处理预定数目的位位置或当前累加的部分积满足预定标准,则可在1345处针对给定位位置的第二矩阵x的每一行重复1320-1340处的处理。因此,位屏蔽逻辑1115可以有条件地顺序地访问第一存储位置中的与第二存储位置中的给定行相对应的行。当给定行的位位置为非零值时,逻辑与电路1130、1135还可重复使被乘数与乘数的给定位位置有条件地“与”。此外,一个或更多个累加器1140、1145可以重复有条件地累加由逻辑与电路1130、1135输出的部分积。如果已经处理了预定数目的位位置并且当前累加的部分积不满足预定标准,则在1350过程可以前进到如下所述的过程1365。例如,如果在n位中的m位已经被处理之后当前累加的部分积小于零,则可以提前终止向量点积的计算。当向量点积的计算提前终止时,在1350,行访问的数量、逐位与运算和累加运算减少。
81.在1355处,一个或更多个移位寄存器1150、1155可以被配置为在第一存储位置1105中的、与第二存储位置1110中的给定位位置的非零值对应的行已经被累加之后,在第一预定方向上移位来自相应的一个或更多个累加器1140、1145的累加值。然后可以将位移位后的累加值加载回对应的累加器1140、1145中。在1350处,第二存储位置1110中的给定位位置还可以在第二预定方向上移位。在一个实施方式中,当从最高有效位到最低有效位对整个被乘数排序时,来自相应的一个或更多个累加器1140、1145的累加值可向左移位一位,且接着加载回对应的累加器1140、1145中。此外,第二存储位置中的给定位位置可以向左移位一位。如果处理是从最低有效位到最高有效位,则第二存储位置中的位位置可以向右移位一位,并且一个或更多个累加器1140、1145的内容可以向右移位一位。对于每个位位置,在1360处,可以重复在1320-1355处的处理。例如,在针对第二存储位置中的多行中的最高有效位顺序地偏置第一存储位置的行、顺序地感测第一存储位置中的行和顺序地累加部分积之后,可以针对下一个最高有效位重复该过程,如此类推,直到最低有效位也被处理。
82.在1365处,可以在顺序地累加第一存储位置的多行上的多个位位置的确定的部分积之后,输出累加值。累加值可被输出为第一矩阵a的乘数与第二矩阵x的被乘数的矩阵点积。在一个实施方式中,可输出累加值以用于存储在第一或第二存储位置中,以例如用于另一个向量点积计算。
83.在1370处,可以重复1310-1365处的过程以利用相同的第一矩阵a和第二矩阵x的新实例计算另一个点积,其中在1310处将第二矩阵x的新实例加载到第二存储位置中。因而,第一矩阵a可被重用以计算第二矩阵x的多个实例的点积。或者,可在1370处重复1305-1365处的过程以利用第一矩阵a的新实例和第二矩阵x的新实例来计算另一个点积。
84.当在预定数量的位位置已经被排序之后当前累加的部分积不满足预定标准时提前终止,可以有利地与零位屏蔽相组合以便有利地进一步增加向量点积的吞吐量。提前终止还可有利地与零位屏蔽组合以有利地进一步减少能量消耗。
85.现在参见图14a和14b,示出了根据本技术的各方面的一种计算矩阵点积的方法。在1405,一组乘数可以被加载到第一存储位置1105中。在一个实施方式中,r行c列元素的第一矩阵a(其中,每个元素可以是n位)可以被加载到第一存储位置1105中。在1410,一组被乘数可被加载到第二存储位置1110中。在一个实施方式中,可将r个n位的元素值的第二矩阵x加载到第二存储位置1110中。在另一个实施方式中,第二存储位置1110可以包括用于存储
矩阵x的r个元素的相应给定位的r行的单位寄存器。
86.在1415处,位屏蔽逻辑1115可以被配置为针对第二存储位置1110的行中的给定位位置确定位值。例如,位跳过逻辑1115可以访问1160第二存储位置1110以确定每行中的给定位位置是包含
‘0’
值还是
‘1’
值。
87.在1420处,位跳过逻辑1115可以被配置为基于第二存储位置1110中的对应行的给定位的值而有条件地顺序地访问第一存储位置1105中的行。例如,如果第二存储位置1115中的对应行的给定位含有
‘1’
值,则可以进行读取偏置和感测以访问1165第一存储位置1105中的对应行。如果第二存储位置1110中的对应行的给定位包含
‘0’
值,则可以禁止第一存储位置1105的读取偏置和感测。
88.在1425处,逻辑与电路1130、1135可以被配置为如果第二存储位置1110中的对应行的给定位包含
‘1’
值,则使第二存储位置1110的行中的给定位的值和第一存储位置1105的对应行的内容有条件地与。第二存储位置1110的行的给定位的值可以与第一存储位置1105的对应行逐位与。逻辑与电路1130、1135的输出可以是对应行的部分积。
89.在1430处,一个或更多个累加器1140、1145可以被配置为有条件地顺序地累加由逻辑与电路1130、1135输出的部分积。如果第二存储位置1110中的对应行的给定位包含
‘1’
值,则可以使一个或更多个累加器1140、1145能够累加由逻辑与电路1130、1135输出的部分积。如果第二存储位置1110中的对应行的给定位包含
‘0’
值,则可以禁用一个或更多个累加器1140、1145。在1435,对于给定位位置的第二矩阵x的每行,可以重复1420-1430处的过程。因此,位屏蔽逻辑1115可以基于第二存储位置1110中的对应行的给定位的值有条件地重复顺序访问、逐位逻辑与和累加。顺序访问、逐位逻辑与和累加可以针对第二存储位置1110中包含零值的行中的给定位被屏蔽。第二存储位置1110中的第二矩阵x中的每一零位值的位屏蔽比常规技术更有效,常规技术要求给定被乘数中的所有位为零。
90.在1440处,一个或更多个移位寄存器1150、1155可以被配置为在第一存储位置1105中的、与第二存储位置1110中的对于给定位位置的非零值对应的行已经被累加之后,在第一预定方向上移位来自相应的一个或更多个累加器1140、1145的累加值。然后可以将位移位后的累加值加载回对应的累加器1140、1145中。在1440处,也可在第二预定方向上移位第二存储位置1110中的给定位位置。在一个实施方式中,当从最高有效位到最低有效位对整个被乘数排序时,来自相应的一个或更多个累加器1140、1145的累加值可向左移位一位,且接着加载回对应的累加器1140、1145中。此外,第二存储位置中的给定位位置可以向左移位一位。如果处理是从最低有效位到最高有效位,则第二存储位置中的位位置可以向右移位一位,并且一个或更多个累加器1140、1145的内容可以向右移位一位。可以针对每个位位置在1445处重复1420-1440处的处理。例如,在针对第二存储位置中的多行中的最高有效位有条件地顺序地对第一存储位置的行进行偏置、顺序地感测第一存储位置中的行并且顺序地累加部分积之后,可以针对下一个最高有效位重复该过程,以此类推,直到最低有效位也被处理。
91.在1450处,如果当前累加值满足预定标准,则可以在顺序地累加第一存储位置1105的多行上的多个位位置的确定的部分积之后缓冲累加值。例如,如果当前累加值大于当前缓冲的累加值,则可以缓冲当前累加值以实现最大池化操作。条件输出缓冲可有利地减少输出带宽和/或下游存储器访问带宽。在另一示例中,输出缓冲还可充当管线级以改善
时序。
92.在1455处,可以在顺序地累加第一存储位置的多行上的多个位位置的确定的部分积之后输出累加值。累加值可被输出为第一矩阵a的乘数与第二矩阵x的被乘数的矩阵点积。在一个实施方式中,可输出累加值以用于存储在第一或第二存储位置中,以例如用于另一向量点积计算。
93.在1460,1410-1455处的过程可被重复以利用相同的第一矩阵a和第二矩阵x的新实例来计算另一个点积,其中第二矩阵x的新实例在1410被加载到第二存储位置中。因而,第一矩阵a可被重用以计算第二矩阵x的多个实例的点积。或者,在1460可重复1405-1455处的过程以利用第一矩阵a的新实例和第二矩阵x的新实例来计算另一点积。
94.在另外的实施例中,以上参照图12a和12b所描述的提前终止过程以及以上参照图13a和13b所描述的累加值缓冲器可以与零位屏蔽过程组合。
95.在各个实例中,第一存储位置或其所分配的部分可以不填充有第一矩阵a的给定实例。因此,同时计算多个向量点积以增加第一存储位置的利用可以是有利的。现在参见图15,示出了根据本技术的各方面的被配置成计算矩阵点积的存储器设备。存储器设备1500可以包括第一存储位置1505a、1505b,第二存储位置1510a、1510b,位屏蔽逻辑1515,逻辑或电路1520,一个或更多个读出电路(未示出),一个或更多个逻辑与电路(未示出)、累加器1540、1545以及移位寄存器1540、1545。读出电路和逻辑与电路先前已经在以上示出和描述,并且在本图中未示出以提供本技术的各方面的紧凑示出。将参考图16a和16b进一步解释被配置为计算矩阵点积的存储器设备。
96.为了计算矩阵点积,可以在1605将多组乘数加载到第一存储位置1505a、1505b的相应部分中。在一个实施方式中,r行元素的第一矩阵a1可以被加载到第一存储位置1505a的第一部分中。r行的第二矩阵a2可以被加载到第一存储位置1505b的第二部分中。加载在第一存储位置1505a、1505b的第一部分和第二部分中的第一和第二矩阵a1、a2的对应行可以共享相应的公共字线。在1610处,可将多组被乘数加载到第二存储位置1510a、1510b的相应部分中。在一个实施方式中,r个元素值的第三矩阵x1可以被加载到第二存储位置1510a的第一部分中。r个元素值的第四矩阵x2可以被加载到第二存储位置1510b的第二部分中。在另一实施方式中,第二存储位置1510a、1510b可包含用于分别存储第三矩阵x1和第四矩阵x2的r个元素的相应给定位的第一组和第二组r行的单位寄存器。出于解释本技术的各方面的目的,如图15所示,两个矩阵被加载到第一存储位置的相应部分中,并且两个矩阵被加载到第二存储位置的相应部分中。然而,第一和第二存储位置可以被配置为存储任何数量组的矩阵。
97.在1615处,位屏蔽逻辑1515可以被配置为顺序地访问第二存储位置1510a、1510b的第一部分和第二部分的行。例如,位跳过逻辑1515可以访问第二存储位置1510a、1510b以确定给定行的对应部分中的给定位位置是包含
‘0’
值还是
‘1’
值。
98.在1620处,逻辑或电路1520可以被配置为顺序地将第二存储位置1510a、1510b的第一部分和第二部分的给定访问行的给定位位置逻辑或。例如,如果第二存储位置1510a、1510b的第一部分和第二部分中的任一者或两者的给定行中的给定位含有
‘1’
值,则逻辑或电路1510可以输出
‘1’
值。如果第二存储位置1510a、1510b的第一和第二部分两者的给定行中的给定位都含有
‘0’
值,则逻辑或电路1520可以输出
‘0’
值。
99.在1625处,位屏蔽逻辑1515可以被配置为当第二存储位置1510a、1510b的第一部分和第二部分的给定访问行的给定位位置的逻辑或是非零值时,有条件地顺序地访问第一存储位置1505a、1505b中的第一部分和第二部分的对应行。例如,当第二存储位置1510a、1510b的第一部分和第二部分的给定访问行的给定位位置的逻辑或是非零值(该非零值指示第二存储位置1510a、1510b的第一部分或第二部分或这两者的给定访问行的给定位位置包含
‘1’
)时,可以进行读取偏置和感测以访问第一存储位置1505a、1505b的第一部分和第二部分中的对应行。如果第二存储位置1510a、1510b的第一部分或第二部分两者的给定访问行的给定位位置包含
‘0’
值,则可以禁止第一存储位置1505a、1505b的读取偏置和感测。
100.在1630处,逻辑与电路可以被配置为当第二存储位置1510a、1510b的第一部分和第二部分的给定访问行的给定位位置的逻辑或是非零值时,有条件地将第二存储位置1510a、1510b的相应第一部分和第二部分的行中的给定位的值和第一存储位置1505a、1505b的相应第一部分和第二部分的对应行的内容逻辑与。例如,第二存储位置1510a的相应第一部分中的行中的给定位可以是
‘1’
,其可以与第一存储位置1505a的第一部分中的对应行的内容逐位与1560。第二存储位置1510a的相应第二部分的行中的给定位可以是
‘0’
,其可以与第一存储位置1505b的第二部分中的对应行的内容逐位与1565。逻辑与电路的输出可以是行的对应部分的部分积。
101.在1635处,累加器1540、1545可以被配置为有条件地顺序地累加由逻辑与电路输出的部分积。例如,如果第二存储位置1510a的第一部分中的对应行的给定位包含
‘1’
值,则相应累加器1540可以能够累加由相应逻辑与电路输出的部分积。如果第二存储位置1510b的第二部分中的对应行的给定位包含
‘0’
值,则可以禁用相应的累加器1545。在1640处,对于给定位位置的第二矩阵x的每一行,可重复1620-1635处的过程。因此,位屏蔽逻辑1615可以基于第二存储位置1510a、1510b的相应多个部分中的对应行的给定位的值来重复第二存储位置1510a、1510b的行的顺序访问、顺序或、第一存储位置1505a、1505b的行的有条件顺序访问、有条件逐位逻辑与、和有条件累加。可以针对第二存储位置1510a、1510b的对应部分中包含零值的对应行中的给定位来屏蔽第一存储位置1505a、1505b的行的有条件顺序访问、有条件逐位逻辑与、以及有条件累加。
102.在1645处,移位寄存器1550、1555可以被配置为在第一存储位置1505a、1505b中的与第二存储位置1510a、1510b的相应部分中给定位位置的非零值对应的行已经被累加之后,在第一预定方向上移位来自相应累加器1540、1545的累加值。位移位后的累加值可接着被加载回对应的累加器1540、1545中。在1645处,第二存储位置1510a、1510b的对应部分中的给定位位置还可以在第二预定方向上移位。在一个实施方式中,当从最高有效位到最低有效位对整个被乘数排序时,来自相应累加器1540、1545的累加值可向左移位一位且接着加载回对应累加器1540、1545中。此外,第二存储位置中的给定位位置可以向左移位一位。如果处理是从最低有效位到最高有效位,则第二存储位置中的位位置可向右移位一位,并且一个或更多个累加器1540、1545的内容可向右移位一位。在1650,可以针对每个位位置重复在1620-1645处的过程。例如,在针对第二存储位置中的多行中的最高有效位,基于第二存储位置1510a、1510b的相应多个部分中的对应行的给定位的值而顺序访问第二存储位置1510a、1510b的行、顺序或、第一存储位置1505a、1505b的行的有条件顺序访问、有条件逐位逻辑与、以及有条件累加之后,该过程可以针对下一个最高有效位重复,以此类推,直到最
低有效位也被处理。
103.在1655处,可以在顺序地累加第一存储位置1505a、1505b的相应部分的多行上的多个位位置的确定的部分积之后输出累加值。累加值可被输出作为第一矩阵a1的乘数与第三矩阵x1的被乘数的相应矩阵点积,及第二矩阵a2的乘数与第四矩阵x2的被乘数的矩阵点积。在一个实施方式中,可输出累加值以用于存储在第一或第二存储位置中,以例如用于另一个向量点积计算中。
104.在1660处,可以重复在1610-1655处的过程以利用相同的第一矩阵a1和第二矩阵a2以及相应的第三矩阵x1和第四矩阵x2的新实例来计算另外的点积,其中在1610处将第三矩阵x1和第四矩阵x2的新实例加载到第二存储位置中。因而,第一矩阵a1和第二矩阵a2可被重新使用以分别计算第三矩阵x1和第四矩阵x2的多个实例的点积。可替代地,在1660,可以重复在1605-1655处的过程以利用第一矩阵a1和第二矩阵a2的新实例以及第三矩阵x1和第四矩阵x2的相应新实例来计算另一点积。
105.此外,如上文参照图9a、9b、10a、10b、13a、13b、14a和14b所描述的提前终止和/或有条件缓冲过程可以容易地适于针对如以上参照图15和图16所描述的被加载到第一和第二存储位置的相应部分中的矩阵组计算矩阵点积。
106.以下示例涉及特定技术实施例并且指出在实现这些实施例时可以使用或以其他方式组合的特定特征、元素或步骤。
107.示例1包括一种设备,其包括:第一存储位置,其被配置为存储一组乘数;第二存储位置,其被配置为存储一组被乘数;位跳过逻辑,其被配置为针对第二存储位置中的给定位位置确定保持非零值的行;一个或更多个读出电路,其被配置为:顺序偏置所述第一存储位置中的与所述第二存储位置中的所述给定位位置的非零值行对应的行;以及顺序地感测所述第一存储位置中的与所述第二存储位置中的所述给定位位置的包含非零值的行对应的行,以确定所述给定位位置的部分积;一个或更多个累加器,其被配置为累加所述给定位位置的确定的部分积;以及一个或更多个移位寄存器,其被配置为在顺序地累加所述第一存储位置的多行上的多个位位置的确定的部分积之后将累加值移位,作为所述一组乘数与所述一组被乘数的矩阵点积。
108.示例2包括如示例1所述的设备,还包括:提前终止逻辑,其被配置为在所述第二存储位置中的所述一组被乘数的预定数量的位位置已被处理之后,确定当前累加的部分积是否满足预定标准。
109.示例3包括如示例2所述的设备,其中所述提前终止逻辑被配置为确定当前累加的部分积是否小于零。
110.示例4包括如示例1至3中任一项所述的设备,还包括:缓冲器,其被配置为如果当前累加值满足预定标准,则在顺序地累加所述第一存储位置的所述多行上的所述多个位位置的确定的部分积之后,有条件地缓冲所述当前累加值。
111.示例5包括如示例1至3中任一项所述的设备,其中:所述第一存储位置包括电阻式随机存取存储器(rram);以及所述第二存储位置包括一组寄存器。
112.示例6包括如示例5所述的设备,其中所述一组寄存器存储所述一组被乘数中的相应被乘数。
113.示例7包括如示例5所述的设备,其中所述一组寄存器存储所述一组被乘数中的相
应被乘数的所述给定位位置。
114.示例8包括如示例1至3中任一项所述的设备,其中:所述第一存储位置包括电阻式随机存取存储器(rram);以及所述第二存储位置包括静态随机存取存储器(sram)。
115.示例9包括一种设备,其包括:第一存储位置,其被配置为存储一组乘数;第二存储位置,其被配置为存储一组被乘数;位屏蔽逻辑,其被配置为:顺序地访问所述第二存储位置的各个行,以确定所述第二存储位置中的给定行的给定位位置是否为非零值;以及当所述第二存储位置中的所述给定行的给定位位置为非零值时,有条件地顺序访问所述第一存储位置中的对应于所述第二存储位置中的给定行的行;逻辑与电路,其被配置为当所述第二存储位置中的所述给定行的所述给定位位置是非零值时,将所述第二存储位置的所述给定行的所述给定位位置和所述第一存储位置的所述给定行有条件地逐位与运算,以生成所述给定位位置的部分积;一个或更多个累加器,其被配置为当所述第二存储位置中的所述给定行的位位置为非零值时,有条件地累加所述给定位位置的所述部分积;一个或更多个移位寄存器,其被配置为在相应方向上移位所述累加值,其中所述第二存储位置中的所述给定位位置在预定方向上顺序地移位。
116.示例10包括如示例9所述的设备,还包括:提前终止逻辑,其被配置为在所述第二存储位置中的所述一组被乘数的预定数量的位位置已被处理之后,确定当前累加的部分积是否满足预定标准。
117.示例11包括如示例10所述的设备,其中所述提前终止逻辑被配置为确定当前累加的部分积是否小于零。
118.示例12包括如示例9至11中任一项所述的设备,还包括:缓冲器,其被配置为如果当前累加值满足预定标准,则在顺序地累加所述第一存储位置的多行上的多个位位置的确定的部分积之后,有条件地缓冲所述当前累加值。
119.示例13包括如示例9所述的设备,其中:所述第一存储位置包括电阻式随机存取存储器(rram);以及所述第二存储位置包括一组寄存器。
120.示例14包括如示例13所述的设备,其中所述一组寄存器存储所述一组被乘数中的相应被乘数。
121.示例15包括如示例13所述的设备,其中所述一组寄存器存储所述一组被乘数中的相应被乘数的所述给定位位置。
122.示例16包括如示例9至11中任一项所述的设备,其中:所述第一存储位置包括电阻式随机存取存储器(rram);以及所述第二存储位置包括静态随机存取存储器(sram)。
123.示例17包括如示例9至11中任一项所述的设备,还包括:所述第一存储位置包括被配置为存储第一矩阵的一组乘数的第一部分和被配置为存储第二矩阵的一组乘数的第二部分;所述第二存储位置包括被配置为存储第三矩阵的一组被乘数的第一部分和被配置为存储第四矩阵的一组被乘数的第二部分;所述位屏蔽逻辑进一步被配置为顺序地访问所述第二存储位置的所述第一部分和所述第二部分的相应行;以及逻辑或电路,其被配置为对所述第二存储位置的所述第一部分和所述第二部分的给定访问行的给定位位置进行或运算;所述位屏蔽逻辑进一步被配置为当所述第二存储位置的所述第一部分和所述第二部分的所述给定访问行的所述给定位位置的逻辑或为非零值时,有条件地顺序访问所述第一存储位置的所述第一部分和所述第二部分的对应行;所述逻辑与电路进一步被配置为当所述
第二存储位置的所述第一部分和所述第二部分的所述给定访问行的所述给定位位置的所述逻辑或为非零值时,将所述第二存储位置的所述给定行的所述给定位位置和所述第一存储位置的所述给定行有条件地逐位与运算;以及所述一个或更多个累加器进一步被配置为当所述第二存储位置的所述第一部分和所述第二部分的所述给定访问行的所述给定位位置的逻辑或为非零值时,有条件地累加所述给定位位置的所述部分积。
124.出于说明和描述的目的,已经呈现了本技术的特定实施例的前述描述。它们不旨在是详尽的或将本发明限制于所公开的精确形式,并且显然根据上述教导,许多修改和变化是可能的。选择和描述实施例以便最好地解释本技术的原理及其实际应用,从而使本领域的其他技术人员能够最好地利用本技术和具有适合于预期的特定用途的各种修改的各种实施例。本发明的范围旨在由所附权利要求及其等同物限定。
再多了解一些

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

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

相关文献