机器学习硬件加速器的制作方法


机器学习硬件加速器


背景技术:



1.机器学习(ml)是一种帮助软件系统学习以从数据中识别模式,而无需直接编程来这样做的人工智能(ai)。机器学习可以涉及广泛的技术。ml技术的示例包括神经网络和深度学习。广义上讲,ml技术以两个阶段操作,即:(a)训练阶段,在此阶段,模型和/或权重基于接收到的训练数据进行调整;和(b)操作阶段,在此阶段,这些模型和/或权重应用于接收到的实际数据。
2.ml技术在智能系统中非常有用,以检测或识别环境的多个方面。此类检测或识别场景的示例包括语音识别、视频和/或图像中的对象识别、手势和运动识别、声音签名检测、异常检测等。机器学习技术能够消耗大量的处理、数据和功率资源。这些要求对在便携式、电池供电和/或低功耗设备上执行复杂的ml技术提出了挑战。为了解决这些挑战,一种解决方法将部分或所有ml操作的处理卸载到远程网络(如云端),并将卸载后的ml操作的结果返回给设备。然而,该解决方法能够将不相关的信息发送到云端进行处理。例如,“始终开启”的设备能够不断监听特定的命令或关键字,捕获大量不相关的音频,并将不相关的音频上传到云端中进行处理,这会造成浪费带宽、处理能力和潜在的隐私问题。


技术实现要素:



3.在存储器设备中,一种静态随机存取存储器(sram)电路包括按行和列排列并配置为存储数据的sram单元的阵列。sram阵列被配置为:在sram阵列中的查表中存储用于机器学习(ml)过程的第一组信息;以及从查表沿着sram单元的行连续地访问来自选择的sram单元组的信息。存储器控制器电路被配置为基于用于ml过程的第二组信息来选择sram单元组。
4.在另一方面中,一种系统包括耦合到存储器电路的一个或多个微处理器。存储器电路包括静态随机存取存储器(sram)电路,静态随机存取存储器(sram)电路包括按行和列排列并配置为存储数据的sram单元的阵列,sram阵列被配置为:在sram阵列中的查表中存储用于机器学习(ml)过程的第一组信息;以及从查表沿着sram单元的行连续地访问来自选择的sram单元组的信息。存储器控制器电路被配置为基于用于ml过程的第二组信息来选择sram单元组。
5.在另一方面中,一种方法包括接收用于机器学习(ml)过程的第一组信息;将第一组信息存储在sram单元的阵列中的查表中,sram单元按行和列排列;基于用于ml过程的第二组信息选择sram单元组;以及从查表沿着sram单元的行连续地访问来自选择的sram单元组的信息。
附图说明
6.图1在该说明书的多个方面中图示了示例分布式算术(da)计算。
7.图2a、图2b和图2c是在该说明书的多个方面中的da电路的框图。
8.图3在该说明书的多个方面中图示了ml网络的示例层。
9.图4在该说明书的多个方面中图示了示例sram存储器电路。
10.图5在该说明书的多个方面中图示了卷积层的示例操作。
11.图6在该说明书的多个方面中图示了具有进位保存加法器和移位器的示例累加器电路。
12.图7在该说明书的多个方面中图示了包括多个累加器电路的示例列选择电路。
13.图8在该说明书的多个方面中图示了用于预计算数据的电路。
14.图9在该说明书的多个方面中图示了用于增加ml过程的处理吞吐量的技术。
15.图10是在该说明书的多个方面中的计算设备的实施例的框图。
具体实施方式
16.为了提高设备的效率,专用硬件与更通用的硬件一起或代替更通用的硬件执行特定的操作。一个示例是图形处理单元(gpu)以及中央处理单元(cpu)。在该说明书的多个方面中,基于分布式算法(da)和近存储器计算的ml硬件加速器可以提高操作ml网络的效率。
17.图1在该说明书的多个方面中图示了示例da计算100。分布式算法是一种用于通过使用加法和移位运算代替硬件乘法器来高效求解乘法和累加运算的技术。da计算可以是但不一定是位串行操作,该位串行操作通过预先计算某些常用值并根据需要将这些值存储在查表(lut)中,在单个步骤中形成一对向量的点积。例如,形式为的等式(其中an是固定系数,xn是接收到的数据,n是和的数量)可以以y=a[0]x[0]+a[1]x[1]...a[n]x[n]形式展开。其中接收到的数据x是k位长(例如,8位、16位等),并且其中x[0][0]表示x[0]的最低有效位(lsb)[0],则该等式可以如图1所示展开。在该示例中,每个x都是单个二进制位,即逻辑0或逻辑1。da计算不是通过将a[0]与x[0][0]相乘,将a[0]与x[0][1]*21相乘,并将这些相乘步骤的结果相加来执行计算,而是有效地垂直考虑等式。因此,在该示例中,lut中,da计算将x[n][i]的可能值(例如该示例中的十六个可能值)映射到在a[0]、a[1]、a[2]和a[3]的线性组合,如图1的102a-102d所示,并且如下面的表1所示。
[0018]
表1
[0019]
x[0][i]x[1][i]x[2][i]x[3][i] y0000 00001 a[3]0010 a[2]0011 a[2]+a[3]0100 a[1]0101 a[1]+a[3]0110 a[1]+a[2]0111 a[1]+a[2]+a[3]1000 a[0]1001 a[0]+a[3]1010 a[0]+a[2]1011 a[0]+a[2]+a[3]
1100 a[0]+a[1]1101 a[0]+a[1]+a[3]1110 a[0]+a[1]+a[2]1111 a[0]+a[1]+a[2]+a[3]
[0020]
因此,电路200(图2a)可以通过将正被处理到lut的x[n][i]位的值映射到适当的y值来求解使用da的等式。例如,对于i=1位,其中x[0][1]是0,x[1][1]是1,x[2][1]是0,x[3][1]是1,y值是a[1]+a[3]。从lut 202读取a[1]+a[3]的值并将其置于累加器204中。从lut读取x的下一个值,其中i=2,并通过执行来自lut的值的左移位或右移位,有效地与累加器204的内容相乘。
[0021]
因此,一个示例对累加器204的内容执行右移206,然后(经由加法器208)将结果加到累加器204的内容。对接收数据的所有k位重复该过程,以确定等式的解。通常,与求解此类等式的常规技术相比,使用da求解会增加许多加法运算,但不需要复杂的乘法运算。这有助于da计算比传统技术更高效,因为与传统技术的复杂乘法运算相比,lut查、位移位和加法步骤消耗的处理、数据和功率资源的量更少。使用da计算,评估加权和的另一种方法是使用x[i]以及使用a[i]填充lut以寻址lut。
[0022]
在某些情况下,可以减小lut的大小,诸如通过使用多个较小的lut或偏移二进制编码。图2b图示了使用偏移二进制编码的示例da电路250。在偏移二进制编码的这个示例中,通过一组异或(xor)门210提供接收的位值,以通过用异或门210有效地替换来自lut 212的一个x值(诸如x[0][i])来生成对称lut 212。被替换的x值的值改变查值的符号,并且可以基于基于符号的x[0]的值从累加器214值加或减去查值。在某些情况下,可以基于init向mux 216提供的初始化信号将累加器初始化为lut的第一值,诸如-1/2(a[0]+a[1]+a[2]+a[3]]或0,0,0。
[0023]
作为更详细的示例,lut 212可以耦合到多路复用器(mux)276,如图2c的另一示例da电路275所示。接收的值指示可以在x0-x3处向xor门278提供来自lut的哪个地址。在某些情况下,xor门278可以对应于图2b的xor门210。将要被访问的lut的地址提供给mux 276,并且然后可以提供lut的寻址部分处的值。在某些情况下,诸如在开始计算时,利用一个值,诸如第一地址处的lut的值,诸如000,累加器可以被初始化。在这种情况下,初始化信号可以由init提供。一组与(and)门280确保提供给mux 276的地址对应于第一地址,诸如000。初始化信号还可指示累加器282不执行来自lut的输出的右移。在某些情况下,da技术可被修改以执行ml技术。
[0024]
图3图示了ml网络300的示例层。通常,通过ml网络处理接收到的数据可以描述为两个向量的点积,这两个向量是:输入向量和权重向量。该示例ml网络300包括具有输入和输出特征映射的一层,作为1x1卷积层。该示例解决了单层,但ml网络能够包括多层。这些层表示一组卷积运算,该一组卷积运算可包括一组矩阵乘法。通常,每层将m个维度为w*h的输入特征映射(x)转换为n个输出特征映射y。卷积运算包括重复h*w次的核运算(kw*kh)。在该示例中,由于存在单层,所以kw和kh=1。第一层x[m]利用一组连接联接到第二层,该连接表示由第一层应用于接收的数据的一组权重,以生成提供给第二层的输出。这些权重通常在训练阶段被限定,并且能够根据输入向量中到x层的给定输入的位置,以及x层的输出所对应的y层中的位置而变化。例如,目标为y[n]的x[m]的输入可乘以某个权重a[m,n],然后可
将到y[n]中的每个输入求和以确定y[n]的值。然后,可以确定y的一个或多个lut作为针对x层的权重a的函数,并且可以如上所述使用da来执行针对ml网络300的这些计算。
[0025]
通常,静态随机存取存储器(sram)的速度和简单性已允许在包括微处理器的单个集成电路中制造sram,例如用于近处理器高速缓存。在本说明的多个方面中,可以修改突发sram以帮助加快基于ml网络的操作的处理。结合美国专利号9734896,对突发sram作了进一步的详细描述,该专利通过引用并入本文。通常,在传统的sram中(诸如具有8的mux因数),对于每个读取周期,可以对八位线进行预充电,但基于列解码器地址仅读取单列。在读取值后,在读取另一个值之前,这些线再次进行预充电/再充电。相比之下,突发sram允许以每个周期一个输出的速率从sram提供或突发多个存储器值,无需额外时间和/或电源进行位线预充电/再充电。
[0026]
图4图示了示例sram存储器电路400。图4图示了sram存储器电路400的代表性实施方式,但也可以有其他实施方式。在图4中,sram单元401a-401c的阵列排列在第一列中,单元403a-403c排列在第二列中。这些单元排列在行a-c中,其中字线wla-wlc将单元连接到行解码器405。实际生产的sram设备可包括数千或上万个sram单元(或更多)。字线wla-wlc由行解码器405提供。列解码器407具有耦合到y选择多路复用器409的控制线,y选择多路复用器409具有接收位线对blt0、blc0到bltn、blcn的输入,并且具有耦合到感测放大器413的一对互补输出yt、yc。感测放大器413锁存所选位线对上的差分电压并提供信号data(数据)。真位线对和补位线对blt0、blc0至bltn、blcn分别耦合至预充电电路411a-411n。预充电控制电路415向预充电电路提供预充电控制信号pre_bl。
[0027]
在操作中,当时钟信号clk变高时,sram存储器电路400存储器访问周期开始。输入地址add被锁存,并且行解码器405开始解码地址字段的一部分,并在由地址的一部分选择的字线wla-wlc中选择的一条上提供高电压。列解码器407开始于解码地址字段add的第二部分并向y选择多路复用器409提供选择信号。y选择多路复用器确定位线对blt0、blc0-bltn、blcn中的哪一个被选择。
[0028]
当选择的字线wla-wlc上的字线电压升高时,沿选择的行的sram单元的互补位线耦合到每个sram单元内的存储节点。随着sram单元中的差分电压与位线共享,每列中互补位线对上的电压开始分散。沿活动行的每个位线将转换为相应列中的sram单元的存储节点的差分电压值。
[0029]
列选择多路复用器409随后将选择的位线对耦合到互补输出信号yt和yc。列解码器407基于输入地址add的列部分确定选择的列。然后感测放大器413接收差分电压信号,感测差分电压、锁存和放大它,并提供来自所选sram单元的数据作为输出数据信号data。
[0030]
如上所述,存储器访问周期包括在每个时钟周期期间在sram存储器电路400内执行的几个步骤。在某些情况下,可以执行沿特定行排列的sram单元的多个顺序(例如,连续或背靠背)sram读取。在第一sram单元访问新寻址行之前(或者,对于通电、复位或唤醒操作后的第一sram访问),预充电操作对sram阵列中的所有互补位线对进行预充电。为第一sram单元确定用于连续访问的选择的行线,并且行解码器断言选择的字线,诸如wla。当字线电压沿在sram阵列中的特定行升高到用于sram单元的晶体管阈值电压以上时,耦合到sram单元的互补位线对各个沿所选行线接收对应于每个sram单元内的存储的数据的差分电压。列解码器同时解码地址字段的列部分,并控制y选择多路复用器以选择用于读取操作的列。然
后由感测放大器413执行感测操作,并且当感测放大器413提供锁存的感测数据时,第一读取数据变得可用。
[0031]
在第一sram存储单元访问之后,通过选择连续访问中的下一个寻址列(位于sram阵列中的同一行上,并且可选地与先前访问的sram单元的列相邻)来访问第二sram单元。该列的对应的位线对然后耦合到感测放大器413(或另一感测放大器),感测差分电压,并提供来自该sram单元的数据。sram阵列可配置有任意数量的列和一个或更多个相应的多路复用器和感测放大器。在某些情况下,sram阵列可包括八列单元,并且y选择多路复用器同样可以配置为从一行中的单元执行八次读取。lut值能够存储在sram阵列中,因此sram阵列的八列对应于八位宽lut的值。然后可以通过访问一行中单元的多个背靠背访问来执行对lut的连续访问。对给定行执行连续访问,但是给定行的列的特定顺序可以是任何顺序。例如,在八个条目查表中,ml过程可以进行八个背靠背访问,但这些访问能够是来自lut的条目编号1、5、3、2、5、6、4、7。
[0032]
因此,将lut存储在突发sram中允许从sram一次一个地读取多个lut值(存储在lut中)。如上所述,基于da的计算包括在lut中的k次查对应于接收的数据的每个位的值。然而,这些查可以不是连续的,因为查值取决于接收的位值。替代地,接收的位值驱动y选择多路复用器,因此为接收的位值返回适当的lut值。
[0033]
图5图示了卷积层500的示例操作。在某些情况下,操作500可与lut和累加器一起实现。在操作500中,接收的值可存储在位移位寄存器502中。这些位移位寄存器502耦合到开关电路,诸如异或门504的链,其结合图6进一步描述。每个周期将接收的值的位i提供给开关,并且每个位经由列解码器和y选择多路复用器选择适当的列以读取存储在sram单元508中的lut的值。然后可以将lut的输出提供给累加器电路506。这有助于允许sram基于接收到的位突发适当的lut值。
[0034]
例如,在具有64个输入y=a0.x0+a1.x1+a2.x2+

+a63.x63的单输出计算(例如卷积)中,十六个8条目lut可由四个权重(a0-a3、a4-a7、a8-a11、

、a60-a63)的组构成。累加器电路506的输出寄存器可以初始化为全零。对于16个lut中的每个lut,接收的位以4(x[4i]、x[4i+1]、x[4i+2]、x[4i+3],对于i=0到15)的组加载到地址寄存器中。可以基于lut中的第一地址(0,0,0)初始化输出寄存器。然后,lut中的每组条目一次(例如,在该示例中为八次),操作包括将地址寄存器右移位1以获得下一个地址位(x0、x1、x2、x3),执行异或操作以获得lut地址位(a0、a1、a2)和符号控制信号,读取lut[i][a0:a1:a2]的内容,以及有条件地对右移位累加器求和(例如,加或减)。在某些情况下,累加器电路506包括被配置为执行适当的位移位的逻辑和加法逻辑,如结合图2a和图2b所述,并结合图6进一步描述。
[0035]
图6图示了具有进位保存加法器和移位器的示例累加器电路600。累加器电路600每时钟周期接收一个位/比特,该位可被加到任何先前接收的位中,以在多个时钟周期内在位寄存器中累积结果。累加器电路600包括异或电路608和一组1位全加器602和寄存器位604。每个加法器可以接收:i1和i2处的位;以及ci处的进位输入信号。此外,每个加法器可以提供:在co处的进位输出信号;和在s处的和。加法器的数量可以基于接收的比特的预期数量。因此,例如,如果预期接收的数据的16位,则累加器电路600可以包括16个加法器。加法器可被配置为将进位输出线耦合到进位输入线。对于n位[n

0]的第一值,第一值的每一位可以在该位的相应的加法器602的i1处接收,并且可以在第一时钟周期中在s处将和输出
到寄存器y16到y07中。该输出和被提供给加法器602的i2以用于第二值。然后可以在相应加法器602的i1处接收n位[n

0]的第二值,并在第二时钟周期中与i2处的值做加法。如果需要进位,则在co处提供适当的值并存储在进位寄存器606中以用作下一个值的进位信号ci。寄存器y07中的值可以移位到寄存器y06中,并且寄存器y06中的任何值都可以移位到寄存器y05中,以此类推。在符号控制寄存器610中记录值,指示操作是加法还是减法。对于每个接收到的值,例如对于lut中的值,重复该模式,并且总和的输出值在寄存器y00-y07中可用。如果需要对值进行减法,则符号控制信号可以提供给多路复用器610,从而使得多路复用器610通过执行减法的一补运算(ones complement operation)来反转其输入。为了完成减法运算,通过在包括位s07-s00的符号控制寄存器612中设置值来执行二补运算,记录减法运算。在对每个接收到的值求和之后,符号控制寄存器s07-s00中的值被加到寄存器中以获得最终结果。当来自sram的输出(诸如sram单元508)在k个周期内突发时,可以将其提供给累加器电路600。这种一次一位的加法有助于减少所需的时间量(而不是读取整个突发、执行k位加法和左移位)。此外,加法器602的这种结构利用了sram如何将数据突发出来的优势,因此加法器的结构可以放置在非常靠近sram(在同一集成电路上)的位置,并在发送到cpu之前进行处理。
[0036]
在神经网络的卷积层中,相同的卷积核应用于整个输入特征映射。在该说明书的多个方面中,通过同时使用相同lut处理多组接收数据来增加ml硬件加速器的吞吐量。图7图示了包括多个累加器电路的示例列选择电路700。列选择电路700不同于图5的列选择电路500,因为列选择电路700在sram上(诸如在感测放大器上)具有第二读取端口,并且具有耦合到异或门704链和累加器电路706b的第二组位移位寄存器702。例如,可以同时访问输入特征映射的两个相邻数据。ml网络可以使用相同的权重来处理两个接收到的数据集,因此可以同时向两组累加器电路706a、706b提供来自sram突发的针对特定lut值的输出。累加器电路706a、706b随后可以执行适当的位移位和加法操作。该示例图示了同时处理两组接收的数据,但是可以同时处理任意数量的接收的数据组。
[0037]
如上所述,ml网络可以包括各种层。这些层可以包括卷积层、深度层、点层、完全连接层等。每种类型的层的处理能够略有不同。例如,如结合图4-图7所述的电路可完全支持卷积层或深度层。完全连接的层具有维度为1*1的输入特征映射,因此与卷积层相比,减少了单个输入中权重的重用。然而,多个输入(例如结合图7描述的)仍然可以使用相同的权重。这有助于完全连接的层受益于图7中所述的多个累加器电路,并且加速了这些层的操作。这可以通过使用接收到的数据填充lut和使用权重访问lut来实现。在这种情况下,lut内容是在运行时计算的。
[0038]
在某些情况下,ml网络可包括分别具有+1/-1或+1/0/-1的值的二元或三元权重。在这种情况下,基于权重构建lut可能相对低效,因为在这种情况下,核心卷积主要包括加法或减法函数。替代地,可以基于接收到的数据a[k]和访问lut的权重来填充lut中的信息。这是因为权重被限定为固定值,而不是根据节点变化。接收到的数据未知,因此可以在运行时预计算数据值,并基于权重将其放入lut中。
[0039]
图8图示了用于预计算数据800的电路。通常,lut的内容基于接收到的数据,该数据基于ml过程(例如,ml算法)的输入而变化。在该示例中,接收的数据的a[k]位可被提供给一组1位加法和减法电路(与权重为+1/-1相关),以便预计算一组可能的输出值。例如,对于
四位的接收的数据,a[0]可以与a[1]做加法或做减法,反之亦然,并且在单个(十二个时钟周期)运算中,这些结果既可以加到a[2]和a[3]的加减结果中,也可以从这些结果中减去,反之亦然,以获得十二个可能的输出值。该逐位加法和移位过程可针对每组四个接收位重复以填充lut。通过预计算至少一些可能的输出值,对于具有8位接收数据和具有逐点或完全连接层的64位输入(m)到64位输出(y)的二进制网络,处理层所需的64*64个总加法可以减少到16*64个加法,加上预计算可能输出值所需的12个加法。在某些情况下,预计算的可能输出值能够填充lut。
[0040]
图9图示了用于增加由上述电路实现的ml过程(例如,ml算法)的处理吞吐量的技术900。在框902处,接收用于ml过程的第一组信息。在第一示例中,接收适用于ml过程的节点的权重。在第二示例中,在运行时,对ml过程的接收数据进行预处理,以确定一组可能的输出值。在框904处,第一组信息通过sram单元阵列存储在查表中,其中sram单元以行和列的形式排列。例如,第一数据写入sram阵列,因此sram阵列包括针对第一组信息的查表。在框906处,基于用于ml过程的第二组信息选择sram单元组。在第一示例中,接收到的数据可以以逐位方式使用以选择将提供其数据的特定行的sram单元。在框908处,存储在查表中的数据可以基于特定行的选择的sram单元从sram阵列中的查表连续地突发出来。
[0041]
如图10所示,计算设备1000包括处理元件,诸如处理器1005(例如,微处理器),其包含一个或多个硬件处理器,其中每个硬件处理器可以具有单个或多个处理器核。处理器的示例包括但不限于中央处理单元(cpu)或微处理器。尽管在图10中未示出,但是形成处理器1005的处理元件还可以包括一个或多个其他类型的硬件处理部件,诸如图形处理单元(gpu)、专用集成电路(asic)、现场可编程门阵列(fpga)和/或数字信号处理器(dsp)。在某些情况下,处理器1005可被配置为执行结合图7的模块710-716、724-730描述的任务。
[0042]
如图10所示,存储器1010可以操作地且通信地耦合到处理器1005。存储器1010可以是配置为存储各种类型的数据的非暂时性计算机可读存储介质。例如,存储器1010可以包括一个或多个易失性设备,例如随机存取存储器(ram)。在某些情况下,如图4-图8所描述的sram和电路可以是存储器1010的一部分。非易失性存储设备1020可以包括一个或多个磁盘驱动器、光盘驱动器、固态驱动器(ssd)、抽头驱动器、闪存、电可编程只读存储器(eeprom)和/或配置为在断电或关机操作后在一段时间内保持数据的任何其他类型的存储器。非易失性存储设备1020还可以存储在执行这种程序时加载到ram中的程序。
[0043]
软件程序可以用各种计算语言为各种软件平台和/或操作系统开发、编码和编译,并随后由处理器1005加载和执行。在一个实施例中,软件程序的编译过程可以将以编程语言编写的程序代码转换为另一种计算机语言,因此处理器1005能够执行编程代码。例如,软件程序的编译过程可以生成可执行程序,该可执行程序为处理器1005提供编码指令(例如,机器代码指令),以完成特定的、非通用的、特定的计算功能。
[0044]
在编译过程之后,编码的指令然后可以作为计算机可执行指令或过程步骤从存储设备1020、存储器1010加载到处理器1005和/或嵌入处理器1005内(例如,经由高速缓存或内部rom)。处理器1005可被配置为执行所存储的指令或过程步骤,以便执行将计算设备转换为非通用、特定、特别编程的机器或装置的指令或过程步骤。在执行计算机可执行指令或过程步骤以指示计算设备1000内的一个或多个部件期间,处理器1005可以访问存储的数据(例如,由存储设备1020存储的数据)。存储设备1020可以被分区或分割成多个部分,这些部
分可以由不同的软件程序访问。例如,存储设备1020可以包括指定用于特定目的的部分,例如存储用于更新计算设备1000的软件的程序指令或数据。在一个实施例中,要更新的软件包括计算设备的rom或固件。在某些情况下,计算设备1000可以包括多个操作系统。例如,计算设备1000可以包括用于正常操作的通用操作系统。计算设备1000还可以包括另一操作系统,诸如引导加载程序,用于执行特定任务,诸如升级和恢复通用操作系统,并允许在通过通用操作系统通常不可用的级别上访问计算设备1000。通用操作系统和另一操作系统都可以访问指定用于特定目的的存储设备1020的部分。
[0045]
通信接口1025可以包括配置成与一个或多个无线电通信设备接口的无线电通信接口。在某些情况下,耦合到处理器1005的元件可以集成在与处理器1005共享的硬件上。例如,通信接口1025、存储设备1020和存储器1010可以与诸如数字无线电的其他元件一起集成在单个集成电路或封装中,诸如集成在片上系统(soc)中。计算设备1000还可以包括输入(和/或输出)设备1030,例如传感器、相机、人类输入设备(例如,鼠标、键盘、触摸屏)、监视器、显示屏、触觉或运动发生器、扬声器、灯光等。处理过的数据,诸如来自输入设备1030的数据,可以经由通信接口1025从计算设备1000向一个或多个其他设备提供。
[0046]
在权利要求的范围内,在所描述的示例中可以进行修改,并且其他示例是可能的。

技术特征:


1.一种存储器设备,包括:静态随机存取存储器电路即sram电路,其包括按行和列排列并配置为存储数据的sram单元的阵列,sram阵列被配置为:在所述sram阵列中的查表中存储用于机器学习过程即ml过程的第一组信息;并且从所述查表沿所述sram单元的行连续访问来自选择的sram单元组的信息;以及存储器控制器电路,其被配置为基于用于所述ml过程的第二组信息来选择所述sram单元组。2.根据权利要求1所述的存储器设备,还包括:第一开关电路,其被配置为基于来自所述第二组信息的位值来选择所述查表的列;以及第一累加器电路,其被配置为:接收从所选择的sram单元组访问的信息;以及当连续地访问接收的信息的第一位时,对第一位执行第一逐位加法和移位。3.根据权利要求2所述的存储器设备,还包括:第二开关电路,其被配置成基于来自第三组信息的位值来选择所述查表的列;以及第二累加器电路,其被配置为:接收从所述选择的sram单元组访问的所述信息;以及在连续访问接收的信息的第二位时,对第二位执行第二逐位加法和移位。4.根据权利要求3所述的存储器设备,其中所述第一累加器电路和所述第二累加器电路包括一组1位全加器。5.根据权利要求1所述的存储设备,其中所述第一组信息基于适用于所述ml过程的一个或更多个权重,并且所述第二组信息包括用于所述ml过程的输入数据。6.根据权利要求1所述的存储设备,其中所述第一组信息包括用于所述ml过程的输入数据,并且所述第二组信息基于适用于所述ml过程的一个或更多个权重。7.根据权利要求6所述的存储器设备,还包括被配置为基于所述输入数据计算一组可能的结果的电路。8.一种系统,包括:耦合到存储器电路的一个或更多个微处理器,所述存储器电路包括:静态随机存取存储器电路即sram电路,其包括按行和列排列并配置为存储数据的sram单元的阵列,sram阵列被配置为:在所述sram阵列中的查表中存储用于机器学习过程即ml过程的第一组信息;以及从所述查表沿所述sram单元的行连续访问来自选择的一组所述sram单元的信息;以及存储器控制器电路,其被配置为基于用于所述ml过程的第二组信息来选择该组所述sram单元。9.根据权利要求8所述的系统,其中所述存储器电路包括:第一开关电路,其被配置为基于来自所述第二组信息的位值来选择所述查表的列;以及第一累加器电路,其被配置为:接收从所述选择的一组所述sram单元访问的所述信息;以及当连续地访问接收的信息的第一位时,对第一位执行第一逐位加法和移位。10.根据权利要求9所述的系统,其中所述存储器电路包括:
第二开关电路,其被配置成基于来自第三组信息的位值来选择所述查表的列;以及第二累加器电路,其被配置为:接收从所述选择的一组所述sram单元访问的所述信息;以及在连续访问接收的信息的第二位时,对第二位执行第二逐位加法和移位。11.根据权利要求10所述的系统,其中第一累加器电路和第二累加器电路包括一组1位全加器。12.根据权利要求8所述的系统,其中所述第一组信息基于适用于所述ml过程的一个更或多个权重,并且所述第二组信息包括用于所述ml过程的输入数据。13.根据权利要求8所述的系统,其中所述第一组信息包括用于所述ml过程的输入数据,并且所述第二组信息基于适用于所述ml过程的一个或更多个权重。14.根据权利要求13所述的系统,其中所述存储器电路包括被配置为基于所述输入数据计算一组可能的结果的电路。15.一种方法,包括:接收用于机器学习过程即ml过程的第一组信息;将所述第一组信息存储在sram单元的阵列中的查表中,所述sram单元按行和列排列;基于用于所述ml过程的第二组信息选择一组所述sram单元;以及从所述查表沿所述sram单元的行连续访问来自所选择的一组所述sram单元的信息。16.根据权利要求15所述的方法,还包括:基于来自所述第二组信息的位值选择所述查表的列;接收从所述选择的一组所述sram单元访问的所述信息;以及当连续地访问接收的信息的第一位时,对第一位执行第一逐位加法和移位。17.根据权利要求16所述的方法,其进一步包括:基于来自第三组信息的位值选择所述查表的列;接收从所述选择的一组所述sram单元访问的所述信息;以及在连续访问接收的信息的第二位时,对所述第二位执行第二逐位加法和移位。18.根据权利要求15所述的方法,其中所述第一组信息基于适用于所述ml过程的一个或更多个权重,并且所述第二组信息包括用于所述ml过程的输入数据。19.根据权利要求15所述的方法,其中所述第一组信息包括用于所述ml过程的输入数据,并且所述第二组信息基于适用于所述ml过程的一个或更多个权重。20.根据权利要求19所述的方法,还包括基于所述输入数据预计算一组可能的结果。

技术总结


本申请公开机器学习硬件加速器。在存储器设备中,静态随机存取存储器(SRAM)电路包括按行和列排列并配置为存储数据的SRAM单元阵列[401、403]。SRAM阵列[401、403]被配置为:在SRAM阵列[401、403]中的查表中存储用于机器学习(ML)过程的第一组信息;以及从查表沿着SRAM单元的行连续地访问来自选择的SRAM单元组的信息。存储器控制器电路被配置为基于用于ML过程的第二组信息来选择SRAM单元组。ML过程的第二组信息来选择SRAM单元组。ML过程的第二组信息来选择SRAM单元组。


技术研发人员:

M

受保护的技术使用者:

德克萨斯仪器股份有限公司

技术研发日:

2021.09.29

技术公布日:

2022/4/1

本文发布于:2024-09-23 11:18:12,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/13197.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   电路   多个   累加器
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议