1、(10)申请公布号 CN 102947818 A (43)申请公布日 2013.02.27 C N 1 0 2 9 4 7 8 1 8 A *CN102947818A* (21)申请号 201180031201.2 (22)申请日 2011.01.21 61/346,441 2010.05.19 US G06F 15/18(2006.01) G06F 9/06(2006.01) G06N 3/06(2006.01) (71)申请人加利福尼亚大学董事会 地址美国加利福尼亚州 (72)发明人 DA帕尔默 M弗罗雷亚 (74)专利代理机构北京安信方达知识产权代理 有限公司 11262 代理人张春媛
2、阎娬斌 (54) 发明名称 神经处理单元 (57) 摘要 本文公开的主题提供了用于基于神经的处理 的方法、装置和制造物品。一方面,提供了一种方 法。该方法可包括从第一存储器读取基于至少一 个连接值存储的上下文信息;从第二存储器读取 与至少一个连接值相匹配的激活值;通过第一处 理器将上下文信息和激活值发送至多个微引擎中 的至少一个微引擎,从而将该至少一个微引擎配 置为神经元;及在该至少一个微引擎上生成表示 神经元的输出的值。还公开了相关装置、系统、方 法和物品。 (30)优先权数据 (85)PCT申请进入国家阶段日 2012.12.24 (86)PCT申请的申请数据 PCT/US2011/022
3、155 2011.01.21 (87)PCT申请的公布数据 WO2011/146147 EN 2011.11.24 (51)Int.Cl. 权利要求书3页 说明书9页 附图10页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 3 页 说明书 9 页 附图 10 页 1/3页 2 1.一种方法,包括: 从第一存储器读取基于至少一个连接值存储的上下文信息; 从第二存储器读取与所述至少一个连接值相匹配的激活值; 通过第一处理器将上下文信息和激活值发送至多个微引擎中的至少一个微引擎,从而 将所述至少一个微引擎配置为神经元;及 在所述至少一个微引擎上生成表示神经元的输出的值。
4、2.根据权利要求1所述的方法,其中,从第一存储器读取还包括: 读取包括上下文信息的数据结构,该上下文信息基于用于在多个微引擎上实施的神经 元的连接值而连续地存储在存储器中。 3.根据权利要求1所述的方法,其中,数据结构包括多个块,所述多个块中的每个块均 包括限定在神经元上的执行的类型、表示包括所述至少一个连接值的上下文信息在第一存 储器中的存储位置的第一地址,以及表示激活值在第二存储器中的存储位置的第二地址。 4.根据权利要求1所述的方法,其中,数据结构包括多个顺序块,所述多个顺序块中的 每个顺序块均包括连接值以及神经元类型,该神经元类型限定在所述多个微引擎中的一个 上实施的相应神经元。 5.
5、根据权利要求4所述的方法,其中,每个顺序块作为包被发送至所述多个微引擎中 的至少一个上,并且其中,所述多个微引擎中的每一个均包括至少一个处理器和至少一个 存储器。 6.根据权利要求1所述的方法,其中,数据结构包括多个顺序块,每个顺序块均包括神 经元类型和用于相应神经元的多个连接值。 7.根据权利要求1所述的方法,其中,第一处理器与第一存储器相连以使得能够从第 一存储器进行读取。 8.根据权利要求1所述的方法,其中,生成包括: 在所述至少一个微引擎上基于上下文信息和激活值生成所述值,而不访问第一存储器 和第二存储器以获得额外的上下文信息。 9.根据权利要求1所述的方法,其中,第一存储器和第二存储
6、器实施在集成电路的同 一存储器中。 10.根据权利要求1所述的方法,还包括: 将所述值至少发送至第二存储器。 11.一种装置,包括: 第一存储器,包括基于至少一个连接值存储的上下文信息; 第二存储器,包括与所述至少一个连接值相匹配的激活值; 第一处理器,配置为发送读取自第一存储器的上下文信息和读取自第二存储器的激活 值;及 第二组处理器中的至少一个,配置为接收读取自第一存储器的上下文信息和读取自第 二存储器的激活值,并生成表示一组神经元中的至少一个的输出的至少一个值。 12.根据权利要求11所述的装置,其中,第一存储器还包括数据结构,该数据结构包括 上下文信息,该上下文信息基于用于在第二组处理
7、器上实施的神经元组中的至少一个的连 接值而连续地存储在存储器中。 权 利 要 求 书CN 102947818 A 2/3页 3 13.根据权利要求11所述的装置,其中,数据结构包括多个块,所述多个块中的每个块 均包括神经元类型、表示上下文信息在第一存储器中的存储位置的第一地址,以及表示激 活值在第二存储器中的存储位置的第二地址。 14.一种计算机程序制品,包括机器可读介质,该机器可读介质存储指令,当指令由至 少一个可编程处理器执行时,使得所述至少一个可编程处理器执行下述操作: 从第一存储器读取基于至少一个连接值存储的上下文信息; 从第二存储器读取与所述至少一个连接值相匹配的激活值; 通过第一处
8、理器将上下文信息和激活值发送至多个微引擎中的至少一个中,从而将所 述至少一个微引擎配置为神经元;及 在所述至少一个微引擎上生成表示神经元的输出的值。 15.根据权利要求14所述的计算机程序制品,其中,从第一存储器读取还包括: 读取包括上下文信息的数据结构,该上下文信息基于用于在所述多个微引擎上实施的 神经元的连接值而连续地存储在存储器中。 16.根据权利要求14所述的计算机程序制品,其中,数据结构包括多个块,所述多个块 中的每个块均包括限定在神经元上的执行的类型、表示包括所述至少一个连接值的上下文 信息在第一存储器中的存储位置的第一地址,以及表示激活值在第二存储器中的存储位置 的第二地址。 1
9、7.一种装置,包括: 第一存储器,包括存储在块中的上下文信息,其中,每个块包括用于神经元的至少一个 连接值和表示神经元类型的信息; 存储器控制器,与第一存储器接口并控制读取第一存储器和写入第一存储器中的至少 一种; 第一处理器,配置为从存储器控制器和第一存储器接收上下文信息,其中,第一处理器 还被配置为转发上下文信息; 接口,其配置为: 接收由第一处理器转发的上下文信息, 将多个激活值中的至少一个与所述至少一个连接值相匹配, 抽取所述多个激活值中的匹配的至少一个,及 转发所述多个激活值中抽取的至少一个和所述至少一个连接值;以及 第二组处理器中的至少一个,配置为接收所述多个激活值中转发的至少一个
10、和所述至 少一个连接值,并生成表示被配置为神经元组中的至少一个的第二组处理器中的至少一个 的输出的至少一个值。 18.一种计算机程序制品,包括机器可读介质,该机器可读介质存储指令,当指令由至 少一个可编程处理器执行时,使得所述至少一个可编程处理器执行下述操作: 从第一存储器读取存储在块中的上下文信息,其中,每个块包括至少一个用于神经元 的连接值和表示神经元类型的信息; 在与第一存储器连接的存储器控制器上控制读取第一存储器和写入第一存储器中的 至少一种; 在第一处理器上接收来自存储器控制器和第一存储器的上下文信息,其中,第一处理 权 利 要 求 书CN 102947818 A 3/3页 4 器还
11、被配置为将上下文信息转发至接口; 在接收上接收由第一处理器转发的上下文信息 在接口上将多个激活值中的至少一个与至少一个连接值相匹配; 在接口上抽取匹配的多个激活值中的至少一个; 在接口上转发抽取的多个激活值中的至少一个和至少一个连接值; 在第二组处理器中的一个或多个上接收转发的多个激活值中的至少一个和转发的至 少一个连接值;及 在第二组处理器中的一个或多个上生成输出。 19.一种方法,包括: 从第一存储器读取存储在块中的上下文信息,其中,每个块包括用于神经元的至少一 个连接值和表示神经元类型的信息; 在与第一存储器接口的存储器控制器上控制读取第一存储器和写入第一存储器中的 至少一种; 在第一处
12、理器上接收来自存储器控制器和第一存储器的上下文信息,其中,第一处理 器还被配置为将上下文信息转发至接口; 在接口上接收由第一处理器转发的上下文信息 在接口上将多个激活值中的至少一个与所述至少一个连接值相匹配; 在接口上抽取所述多个激活值中匹配的至少一个激活值; 在接口上转发所述多个激活值中抽取的至少一个激活值和所述至少一个连接值; 在第二组处理器中的一个或多个处理器上接收所述多个激活值中转发的至少一个激 活值和转发的至少一个连接值;及 在第二组处理器中的所述一个或多个处理器上生成输出。 20.一种装置,包括: 用于读取基于至少一个连接值存储的上下文信息的器件; 用于读取与所述至少一个连接值相匹
13、配的激活值的器件; 用于将上下文信息和激活值发送至多个微引擎中的至少一个微引擎从而将所述至少 一个微引擎配置为神经元的器件;及 用于生成表示神经元的输出的值的器件。 权 利 要 求 书CN 102947818 A 1/9页 5 神经处理单元 0001 相关申请的交叉引用 0002 本申请根据35U.S.C.119(e)要求下述临时申请的权益,并通过引用将该临时 申请全文并入本文中:于2010年5月19日提交的、题为“NeuralProcessing Unit”的系列 号为61/346,441的临时申请。 技术领域 0003 本申请涉及数据处理,具体地,涉及基于神经的处理。 背景技术 0004
14、可以基于限定神经元、树突和轴突的行为的各种神经模型来实施基于神经的数据 处理。在一些实例中,可利用数量巨大的平行神经元和这些神经元之间的连接来实施基于 神经的数据处理。基于神经的处理的平行性质使得其十分适于处理诸如数据处理、信号处 理、预测、分类的任务及类似任务。 发明内容 0005 本文公开的主题提供了用于神经处理的方法、装置和制造物品。 0006 一方面,提供了一种方法。该方法可包括从第一存储器读取基于至少一个连接值 存储的上下文信息(context information);从第二存储器读取与所述至少一个连接值相 匹配的激活值;通过第一处理器将上下文信息和激活值发送至多个微引擎中的至少一
15、个微 引擎,从而将所述至少一个微引擎配置为神经元;及在所述至少一个微引擎上生成表示神 经元的输出的值。 0007 方法的实施方式包括本文描述的一个或多个特征(包括下述特征中的一个或多 个)。从第一存储器读取还可包括读取包括上下文信息的数据结构,该上下文信息基于用 于在多个微引擎上实施的神经元的连接值而连续地存储在存储器中。数据结构可包括多个 块,多个块中的每一个块均包括限定在神经元上的执行的类型、表示包括至少一个连接值 的上下文信息在第一存储器中的存储位置的第一地址以及表示激活值在第二存储器中的 存储位置的第二地址。数据结构可包括多个顺序块,多个顺序块中的每一个均包括连接值 以及神经元类型,该
16、神经元类型限定实施在多个微引擎中的一个上的相应神经元。顺序块 可作为包被发送至多个微引擎中的至少一个,并且其中,多个微引擎中的每一个均包括至 少一个处理器和至少一个存储器。数据结构可包括多个顺序块,每个顺序块均包括神经元 类型和用于相应神经元的多个连接值。第一处理器可与第一存储器相连以使得能够从第一 存储器读取。可在至少一个微引擎上基于上下文信息和激活值生成值,而不访问第一存储 器和第二存储器以获得额外的上下文信息。第一存储器和第二存储器可实施在集成电路的 同一存储器中。生成的值可至少发送至第二存储器。 0008 还描述了包括有形嵌入的机器可读介质的物品,该机器可读介质是可操作的以使 得一个或
17、多个机器(例如计算机等)实施本文描述的操作。类似地,还描述了可包括处理 说 明 书CN 102947818 A 2/9页 6 器和连接至处理器的存储器的系统。存储器可包括一个或多个程序,该程序使得处理器执 行本文描述的一项或多项操作。 0009 本文描述的主题的一种或多种变形的详情在附图和下文的说明书中阐述。根据说 明书、附图以及权利要求,本文描述的主题的特征和优点将变得显而易见。 附图说明 0010 附图中: 0011 图1示出了神经元的框图; 0012 图2示出了神经处理单元(NPU)的框图; 0013 图3A-B示出了用于顺序存储背景信息的数据结构的实例; 0014 图4示出了用于基于背
18、景信息配置神经元的方法; 0015 图5示出了神经处理单元的另一框图; 0016 图6示出了包括多个神经处理单元的系统的框图; 0017 图7示出了用于配置神经元的另一方法; 0018 图8示出了配置用于基于上下文信息实施神经元的微引擎的实例。 0019 图9示出了包括多个神经处理单元的系统的框图。 0020 类似的标记可能指示相同或类似的元件。 具体实施方式 0021 本文公开的主题涉及由包括上下文信息的至少一个包配置的神经处理单元 (NPU)。如本文所使用的,上下文信息指用于将处理器配置为神经处理单元的信息。此外, 即使不是全部的上下文信息,也是一部分上下文信息可以基于连接值顺序地存储在存
19、储器 中以通过神经处理单元辅助处理。 0022 在解释神经处理单元的详情之前,下文提供了对由利用神经处理单元实施的神经 元所执行的处理的描述。 0023 图1描述了包括神经元Aj 150的系统100,神经元150可由神经处理单元实施。 尽管图1描述了单个神经元150,但系统100也可包括多个神经元。 0024 神经元150可基于激活值Ai(t-1)(对应于A 0 -A 8 )160A-I、连接Wij165A-I(标记 为c oj 至c 8j )以及输入值110A-I(标记为S 0 -S 8 )生成输出Aj(t)170。输入值110A-I可能 接收自其他神经元的输出、存储器和/或提供值(例如电压
20、值)的一个或多个传感器。激 活值Ai(t-1)可接收自存储器并可对应于输出(例如,系统100的先前周期或时期(例如, 在t-1时)的先前激活值),然而,激活值也可以由主计算机提供。连接Wij 165A-I(也被 称为权值、连接权值和连接值)可接收自存储器和/或由主计算机提供。 0025 通过示例性的方式说明,在给定时间t,每个激活值160A-I都被乘以一个相应的 连接165A-I。例如,连接权值c oj 165A乘以激活值A 0 160A,连接权值c 1j 165B乘以激活值 A 1 160B,以此类推。随后对结果(即,连接和激活值的乘法的结果)求和,最终的和值经由 基底函数K的运算以在时间t
21、为节点A j 150产生输出A j (t)170。输出170可在随后的时 间(例如,在t+1时)用作激活值。 0026 系统100可包括多个神经元,例如神经元150,并且每个神经元可实施在本 说 明 书CN 102947818 A 3/9页 7 文描述的神经处理单元上。此外,可根据神经模型配置神经元,神经模型的实例如下: 等式1 0027 其中: 0028 K对应于基底函数(其实例包括sigmoid函数、小波函数以及任意其他基底函 数), 0029 Aj(t)对应于由给定神经元(例如,第j个神经元)在给定时间t提供的输出值, 0030 Ai(t-1)对应于在先前时间t-1时用于第j个神经元的分
22、配给连接i的在先输出 值(或激活值), 0031 Wij表示用于第j个神经元的第i个连接值, 0032 j根据神经元的数量而变化并识别给定神经元, 0033 i从0到n-1变化,以及 0034 n对应于至神经元的连接的数量。 0035 尽管本说明书将等式1作为神经模型的实例,但其他模型也可以用于限定神经元 的类型。此外,在一些实施中,每个连接可以与多种神经元类型中的一种相关联。例如,连 接Wij 165A-C可以实施对应于第一种类型神经元的第一神经模型,而连接Wij 165D-E可 以实施对应于第二种类型神经元的第二神经模型。在该实例中,上下文信息将包括连接值 以及表示神经元类型的信息。 00
23、36 图2描述了配置用于操作为神经元(例如上文关于图1描述的神经元150)的神 经处理单元200的示例性实施方式。神经处理单元200包括第一存储器(例如顺序存储器 205)、处理器210、第二存储器(例如静态随机存取存储器215(标记为SRAM)以及一个或 多个处理器(例如一个或多个配置为实施神经元的微引擎220A-E)。 0037 尽管图2描述了单个神经处理单元200,但在一些实施中,系统可包括多个神经处 理单元。例如,多个神经处理单元可实施在集成电路和/或专用集成电路上以提供神经处 理系统。 0038 顺序存储器205可以实施为任意类型的存储器,例如随机存取存储器、动态随机 存取存储器、双
24、数据率同步动态存取存储器、闪存、铁电随机存取存储器、机械、磁盘驱动 器、光驱动器以及类似物。顺序存储器205可包括上下文信息,上下文信息如果不包括所有 的,也包括一些用于将微引擎(例如微引擎220A)配置为神经元的信息。例如,顺序存储器 205可包括数据结构,该数据结构包括下列各项中的一项或多项:神经元的标识(例如,正 在配置j个神经元中的哪一个);每个连接i的连接值Wij,使用的基底函数K的表示和/ 或先前激活值Ai(t-1)。 0039 在一些实施中,从顺序存储器205以包格式获得上下文信息。术语“包”指包括上 下文信息和/或指向上下文信息的指针的容器。包提供连接值和其他信息(例如,配置神
25、 经元类型的指令,基底函数K的表示,第j个神经元的标识,等等),但从另一存储器(例如, 静态随机存取存储器215)获得先前激活值Ai(t-1)。读取自顺序存储器205的包可包括配 置为结合图3A-3B描述的数据结构的上下文信息。在一些实施中,顺序存储器205还可从 主计算机接收上下文信息。 0040 处理器210可实施为任意类型的处理器,例如,配置为处理超长指令字(VLIW)的 说 明 书CN 102947818 A 4/9页 8 中央处理器单元,然而也可以使用其他类型的处理器。处理器210可从顺序存储器205检 索上下文信息(格式化为一个或多个包)。 0041 一个或多个额外的神经处理单元(
26、也被称为簇)可从处理器210接收上下文信 息,并且/或者经由连接230为处理器210提供上下文信息。处理器210还可存储和/或 检索中间值,例如来自静态随机存取存储器215的先前激活值Ai(t-1)。 0042 处理器210可将包括从存储器205获得的上下文信息以及任意中间值(例如,从 静态随机存取存储器215获得的先前激活值Ai(t-1)的包路由至微引擎,从而将微引擎配 置为神经元。 0043 在一些实施中,存储器205中的上下文信息被组织在顺序块中,如下文结合图 3A-3B描述的那样。从存储器205中的顺序块读取存储器205中的上下文信息以将微引擎 配置为神经元。此外,如果系统包括多个神经
27、元,则处理器210可将包括上下文信息的一组 包路由至每个微引擎220A-E,从而将每个微引擎配置为根据模型(例如上文中等式1的神 经模型)运行的神经元。此外,可以为每个连接、神经元和/或时期持续地重复微引擎的配 置和执行。 0044 每个微引擎220A-E可实施为处理器,例如,中央处理单元、精简指令集处理器及 类似物。在利用精简指令集处理器的实施中,精简指令集处理器的功能可能被限制,由此降 低了芯片(例如集成电路)上使用的空间/尺寸。在任意情况下,微引擎220A-E都可以通 过处理器210提供的上下文信息来配置,从而使得神经元能够实施在微引擎上。 0045 图3A描述了存储在顺序存储器(例如顺
28、序存储器205)中的数据结构300的实 例。在图3A的实例中,顺序存储器被配置为顺序地存储可读取和/或写入的上下文信息的 块310A-B,直到数据结构300的末端,随后,读取和/或写入将在存储器的起始端(例如块 310A)重新开始。块310A-B对应于神经元处理系统的多个神经元中的每一个。 0046 例如,对于给定的神经元(例如第j个神经元),块310A可存储上下文信息。具体 地,块310A可包括限定神经元类型320的信息。类型320限定了神经元的种类以及执行神 经元的方式。例如,类型320可限定神经模型、限定第j个神经元使用的等式1或基底函数 K。在该实例中,神经元类型可具有相应的代码组,该
29、代码组加载到微引擎中以使得微引擎 能够处理上下文信息并生成输出。此外,在一些实施中,支持多种神经元类型,从而系统利 用用于上下文信息中表示的神经元类型的相应代码组配置微引擎。 0047 块310A中的上下文信息也可包括用在顺序存储器中的地址330以存储块310A。 地址330使得当块310A的内容改变时能够写回到顺序存储器中,例如通过改变用于学习和 塑性的权值。块310A中的上下文信息也可包括激活地址340,该激活地址340与块310A的 神经元的给定连接相关联。举例来说,激活地址340可使得能够从静态随机存取存储器215 加载块310A中正使用的连接的激活值。块310A还可包括使用的连接值3
30、50A-N。例如,对 于具有10个连接的给定神经元j,块310A将包括对应于W 0j 至W 9j 的10个连接值。 0048 数据结构300可以为每个由中央处理系统实施的神经元包括其他块,例如块310B 或类似物。数据结构300的使用可允许为每个神经元顺序地读取上下文信息(格式化为基 于包的格式),并且随后在微引擎上配置和执行这些神经元。在一些实施中,数据结构300 可以在神经元的微引擎执行期间减小(如果没有消除的话)由微引擎对存储器205和215 的低效、随机、存储器读取。 说 明 书CN 102947818 A 5/9页 9 0049 图3B描述了存储在顺序存储器中的数据结构305的另一实
31、例。在图3B的示例中, 每个块390A-C可包括用于神经元的单个连接值。具体地,块390A包括第一连接350A和用 于配置第一神经元的其他上下文信息320-340,块390B包括第一连接值333和用于配置第 二神经元的其他上下文信息,以此类推,直到一组神经元的所有第一连接值已经配置为执 行。一旦执行,举例来说,输出激活值可存储在静态随机存取存储器215中,随后,处理用于 神经元的下一组连接。块390C包括第二连接350B和用于配置第一神经元的其他上下文信 息。一旦利用第二连接值配置,就处理用于神经元的第二组连接,产生另一组输出激活值。 可以为至神经元的每个连接重复该过程,直到所有的连接都被处理
32、,此时,该过程从数据结 构305的块390A上的第一连接开始重复。 0050 在一些实施方式中,当处理器执行神经模型并检索执行该模型所需的数据时,数 据结构300和305可降低存储器存取的数量。例如,在典型的未根据本文描述的数据结构 配置的微处理器中,举例来说,由于从0至n、1至i以及1至j的索引,微处理器将需要对 存储器进行大量的数据随机抽取,从而执行等式1的神经模型。相比之下,在一些实施中, 本文描述的微引擎可以通过连续地将存储器中的如示例性数据结构300和305中所述的上 下文信息排序而降低(如果没有消除的话)随机抽取次数。此外,在一些实施中,系统200 的随机抽取可以被限制为处理器20
33、5从静态随机存取存储器215检索激活值。在一些实施 中,第一处理器(例如处理器210)处理所有的从存储器205和215的与上文所述的索引相 关联的存储器抽取,并且第二处理器(例如微引擎)在不存取存储器205和215的情况下 实施神经元。此外,微引擎可配置为利用从其寄存器存储器(下文结合图5描述)存取的 数据运行神经元。此外,在一些实施中,包括第一和第二处理器的该系统可有助于高效地处 理,举例来说,尤其是在与神经模型(例如等式1)关联的稀疏矩阵的情况下。 0051 图4描述了方法400,其可以由本文描述的神经处理系统实施。图4的描述也涉及 图2和图3A-3B。 0052 在步骤492,处理器21
34、0可以从存储器205顺序地读取。这种顺序读取可包括从存 储器205中的连续地址的块中读取包括上下文信息的多个包中的至少一个。例如,可以如 图3A-B中描述的那样在块中顺序地读取数据。上下文信息可包括用于根据神经模型(例 如等式1)将微引擎配置为神经元的信息。例如,从顺序存储器205中接收的包可提供连接 值和其他信息(例如,表明神经元类型的指令、激活值,等等)以配置神经元。 0053 在步骤493中,处理器210还可以从静态随机存取存储器215读取先前激活值 Ai(t-1)。参考图3A-B,处理器210可接收包括连接值350A、神经元类型320、顺序存储器中 的地址330以及静态随机存取存储器2
35、15中的地址340的包。处理器210随后可利用地址 340定位静态随机存取存储器215,并随后利用查找表确定对应于连接值350A的激活值。 0054 在步骤494中,处理器210可将上下文信息和激活值转发至微引擎中以配置微引 擎。例如,处理器210可将包括上下文信息(例如,连接值350A、神经元类型320以及类似 物)和从静态随机存取存储器215获得的激活值的至少一个包转发至微引擎220A中。当 微引擎接收至少一个包时,微引擎220A可基于神经元类型(例如,通过加载用于由神经元 类型320表示的神经元类型的代码组/指令)配置其自身并且随后利用连接值350A、激活 值和其他可提供给微引擎的上下文
36、信息执行神经元。 0055 在步骤496中,配置的至少一个微引擎为给定的时间t生成输出,例如Aj(t)。输 说 明 书CN 102947818 A 6/9页 10 出Aj(t)也可提供给处理器210,而处理器210可将输出Aj(t)路由至静态随机存取存储器 215或其他神经处理单元230。可以为系统的每个连接、神经元和/或时期重复方法290。 0056 图5描述了神经处理单元500的另一示例性实施。神经处理单元500在一些方面 类似于系统200,但还包括存储器接口505、应用接口510和调度器520。存储器接口505连 接至顺序存储器205和处理器210,并且应用接口510连接至处理210和调
37、度器520,调度 器520进一步连接至微引擎220A-E。 0057 存储器接口505控制对顺序存储器205的存取。例如,存储器接口505可以顺序 地索引至存储器205中,从而检测传递给处理器210的上下文信息的下一个包。 0058 处理器210还可以配置为路由器。当处理器210以包的形式从顺序存储器205和 /或存储器215接收上下文信息时,处理器210随后可将基于包的上下文信息路由至微引 擎以将微引擎配置为神经元。在执行神经元之后,包处理器210还可接收由微引擎生成的 输出值Aj(t)。接收的输出值Aj(t)随后可经由连接565A-D提供给其他神经处理单元和/ 或存储在存储器中,例如静态随
38、机存取存储器215。 0059 在从主计算机初始加载数据以配置系统500期间,举例来说,处理器210可将数据 块从主计算机移动至顺序存储器205中的顺序位置和其他位置(例如静态随机存取存储器 215)、经由连接565A-D移动至其他相邻的神经处理单元和/或一个或多个微引擎220A-E 中。 0060 在微引擎上的神经元的执行期间,处理器210可将连接权值与激活值相匹配。例 如,处理器210可从顺序存储器205接收包括用于第j个神经元的第i个连接的连接权值 Wij的包。对于第i个连接,处理器210随后可将连接权值Wij与存储在静态随机存取存储 器215中的先前激活值Ai(t-1)相匹配。在一些实
39、施中,查找表用于将每个连接权值Wij 与存储在静态随机存取存储器215中的相应激活值Ai(t-1)相匹配。 0061 应用接口510提供了至每个微引擎220A-E的接口。在一些实施中,应用接口510 可从静态随机存取存储器215抽取与包括在接收包中的连接值相匹配的激活值。匹配激活 值的地址可包括在从处理器210接收的包中。例如,匹配激活地址的地址可以作为神经元 静态随机存取存储器激活地址340存储在包中。包括上下文信息(例如,神经元类型、连接 值、激活值及类似物)的包随后被转发至微引擎。 0062 调度器520为在应用接口510和微引擎220A-E之间交换的包提供包处理和排序。 在一些实施中,
40、调度器520为包括上下文信息的包选择目的微引擎。调度器520还可利用 上下文信息加载包括微引擎寄存器的微引擎并将输出数据从微引擎220A-E发送至其他神 经处理单元、静态随机存取存储器215和/或顺序存储器205。 0063 神经处理单元500可通过连接565A-D(标记为北、东、西和南)连接至其他神经处 理单元。例如,神经处理单元500可具有至四个其他神经处理单元(例如,神经处理单元北 单元500、神经处理单元南单元500、神经处理单元东单元500、神经处理单元西单元500)的 连接565A-D。此外,每个其他神经处理单元可连接至四个其他的神经处理单元,并且在一些 实施中,每个神经处理单元可
41、实施在一个或多个专用集成电路上。 0064 图6描述了包括四个神经处理单元660A-D的系统600的示例。每个神经处理单 元可包括顺序存储器632(标记为DDR2)、存储控制器634、存储器接口636、应用接口640、 静态随机存取存储器642、调度器644以及多个微引擎646(标记为NME)。 说 明 书CN 102947818 A 10 7/9页 11 0065 在图6所示的实施中,每个神经处理单元660A-D连接至路由器610,可如上文关于 处理器210描述的那样实施路由器610。然而,在一些实施中,路由器610还可以配置为非 阻塞、交叉开关(crossbar)包路由器,其在输入和输出之
42、间提供多个平行路径,例如存储 器接口和应用接口。 0066 下文提供了神经处理单元660A内的元件的描述,但其他神经处理单元660B-D可 以以类似于神经处理单元660A的方式配置。此外,包括神经处理单元660A-D的系统600 可以实施在芯片上,例如专用集成电路(ASIC),并且,尽管在图6中仅示出了四个神经处理 单元660A-D,但系统600也可包括其他数量的神经处理单元。 0067 顺序存储器632可以如上文中关于顺序存储器205描述的那样来实施。在图6的 实例中,顺序存储器632可实施为双数据率同步动态存取存储器,然而也可以使用其他类 型的存储器。顺序存储器632可以电连接至存储器控制
43、器634以允许读取并写入顺序存储 器632。 0068 存储器控制器634可控制对顺序存储器632的读取和写入。上下文信息可以存储 在顺序存储器632的顺序地址中,并且上下文信息可以基于包的形式从存储器632中读取 或写入存储器632中。当实施基于包的格式时,包可以经由至存储器接口636的电连接而 提供给路由器610或从路由器610接收。此外,在一些实施中,存储器控制器634可提供接 口,该接口根据从存储器(例如存储器632)获得的数据生成包并将生成的包发送至路由器 610。存储器控制器634还可从路由器610接收包并将包的内容写入存储器632中。不同 类型的存储器(从静态随机存取存储器、动态
44、随机存取存储器到更持久的光存储机构)可 用在存储器632上,而不论所使用的存储器类型,存储器控制器634处理包并将包寻址到存 储器中。 0069 存储器接口636可以以类似于上述的存储器接口505的方式实施。在图6的实例 中,存储器接口636可缓冲发送给或接收自存储控制器634的包。 0070 路由器610可电连接至660A-D上的每个应用接口和连接692A-C上。连接692A-C 可提供至其他设备的连接,例如,其他神经处理单元、存储器、主计算机和类似物。在一些实 施中,连接692C可实施为PCI接口以允许以最高至132兆比特/每秒的速度将数据发送给 路由器610(并从路由器610发送出去)。
45、连接692C也可以为系统600处理加载、调试和处 理数据。例如,连接692A-C可用于将系统600连接至主计算机。主计算机可提供包括激活 值的上下文信息、接收微引擎生成的输出值并为每个微引擎提供代码以将微引擎配置为神 经元。 0071 应用接口640可以以类似于应用接口510的方式实施。然而,在图6的实例中, 应用接口640可以电连接至静态随机存取存储器642和调度器644。静态随机存取存储器 642可以以类似于静态随机存取存储器215的方式实施,而调度器644可以以类似于调度器 520的方式实施。调度器644电连接至多个微引擎646(标记为NME),微引擎646可以以类 似于微引擎220A-
46、E的方式实施。 0072 图7描述了方法700,其可以由本文描述的神经处理单元实施。同样,将结合图 3A-B和图6描述方法700。 0073 在步骤793中,存储器控制器634可从存储器632的顺序地址读取数据。这种读 取操作可包括读取包括上下文信息的多个包中的至少一个以根据神经模型将微引擎配置 说 明 书CN 102947818 A 11 8/9页 12 为神经元。存储器控制器634可以为存储器接口636提供读取包,在提供给路由器610之 前,包可以在存储接口636排序。存储器控制器634还可控制向存储器632写入数据(例 如从路由器610接收的包)。 0074 在步骤794中,路由器610
47、可从存储器接口636接收多个包中的至少一个并随后 将接收的包提供给660A-D上的应用接口中的一个。例如,路由器610可将包括用于第j个 神经元的第i个连接的连接权值Wij的至少一个包路由至应用接口640。 0075 在步骤797中,应用接口可从存储器抽取匹配激活值。例如,应用接口640可将连 接权值与先前激活值Ai(t-1)相匹配并随后从存储器(例如静态随机存取存储器642)抽 取匹配激活值。对于接收的每个包而言,应用接口640可读取包括在包中的连接权值Wij 并随后确定存储在静态随机存取存储器642中的匹配激活值。如所述,应用接口640可基 于表明抽取哪个激活值的查找表来确定匹配。 007
48、6 在步骤798中,应用接口(例如应用接口640)随后可以向调度器(例如调度器 644)提供上下文信息(例如,连接权值Wij、匹配激活值Ai(t-1)以及类似物)。随后,调度 器644将该上下文信息提供给微引擎646中的一个以将微引擎配置为神经元。 0077 在步骤799中,配置的微引擎生成输出,例如Aj(t)。输出Aj(t)可以提供给调度 器644和应用接口640,其可将输出Aj(t)提供给静态随机存取存储器642或其他神经处 理单元600B-D。可以为神经元的每个连接和神经处理系统的每个神经元重复方法700。此 外,方法700可以重复多次。 0078 图8示出了微引擎800的实例,其可用在
49、微引擎220A-E和/或微引擎646上。微 引擎800可包括寄存器存储器820、中央处理单元830和程序存储器850。微引擎800可电 连接至调度器520以允许微引擎800从调度器520接收包括上下文信息、激活值和类似物 的包并为调度器520提供输出激活。 0079 在一些实施中,微引擎800接收包括上下文信息的包,例如,图3B中描述的块 390A。微引擎800将块390A存储在寄存器820中。随后,微引擎800可访问程序存储器850 以获取指令(例如程序代码),从而根据由存储在寄存器820中的块390A的上下文信息所 表明的神经类型320来配置微引擎。然后,微引擎800利用包括在寄存器820处存储的的块 中的上下文信息(例如,激活值和连接值)执行指令。随后,输出被发送至调度器520,然后 进一步被路由至其他设备,例如静态随机存取存储器、另一神经处理单元和/或主计算机。 输出可用作随后时间的激活。 0080 寄存器820可从调度器520接收上下文信息,该上
copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1