本公开的实施例涉及到消息传递系统的接口,并且更具体地,涉及用于消息传递计算系统的存储器映射接口。
技术实现要素:
根据本公开的实施例,提供了用于将存储器映射系统与消息传递系统对接的方法和计算机程序产品。接收写入请求。写入请求包括写入数据和写入地址。写入地址是存储器映射内的存储器地址。将写入地址转换成神经网络地址。神经网络地址识别目的地神经网络的至少一个输入位置。根据神经网络地址经由网络将写入数据发送到目的地神经网络的至少一个输入位置。经由网络从源神经网络接收消息。该消息包括数据和至少一个地址。基于所述至少一个地址确定缓冲器中的位置。数据被存储在缓冲器中的位置处。缓冲器可经由存储器映射来访问。
根据本公开的实施例,提供了用于与神经网络处理系统进行对接的系统。一种神经网络处理系统,包括通过网络互连的至少一个神经网络处理核。接口可操作地连接到网络。接口包括存储器映射。该存储器映射包括对应于到神经网络处理器系统的输入的第一区域和对应于来自神经网络处理器系统的输出的第二区域。该接口适于接收包括写入数据和写入地址的写入请求。写入地址对应于存储器映射的第一区域内的位置。该接口适于经由网络将写入数据发送到目的地神经网络处理核的至少一个输入位置。该接口适于接收包括读取地址的读取请求。读取地址对应于存储器映射的第二区域内的位置。该接口适于将读取数据返回给读取请求的发起者。所读取的数据包括源神经网络处理核的输出。
附图说明
现在将参考附图仅通过示例的方式描述本发明的实施例,附图中:
图1示出了根据本公开的实施方式的示例性存储器映射(mm)系统。
图2示出了根据本公开实施例的示例性消息传递(mp)系统。
图3描绘了根据本公开的实施例的神经突触核。
图4描绘了根据本公开的实施例的神经突触核和网状网路由器。
图5示出了根据本公开实施例的组合的存储器映射和消息传递系统。
图6示出了根据本公开的实施例的示例性核的输入和输出缓冲器。
图7示出了根据本公开的实施例的示例性存储器映射。
图8示出了根据本公开的实施例的用于消息传递系统的示例性存储器映射接口。
图9示出了根据本公开的实施例的将存储器映射系统和消息传递系统对接的方法。
图10描述了根据本发明实施例的计算节点。
具体实施方式
各种传统的计算系统经由共享存储器/存储器映射(mm)范例在系统组件之间通信。相反,各种并行的分布式计算系统,例如神经突触系统,经由消息传递(mp)范例相互通信。本公开提供了这两种类型的系统之间的有效接口。
本文提供的各种示例性实施例是就基于神经突触尖峰的系统来描述的。然而,应当理解,本公开适用于任何消息传递系统,包括分布式系统、神经突触系统和其它非冯·诺依曼系统。
在各种神经突触系统中,称为神经突触核的极低功率神经突触处理单元的阵列提供解决百万兆级(exascale)和大数据问题的架构。这些核使用尖峰来编码信息。在神经突触核的网络中,每个核上的神经元可以连接到任何其他神经突触核(包括其自身)的任何轴突。当神经元出现尖峰时,其发送递送到目的地核上的目标轴突的尖峰分组。
在数字尖峰神经形态系统中,信息由尖峰表示和递送,其中每个尖峰是携带一个或多个比特的信息的数字分组。例如,ibmtruenorth芯片是数字尖峰神经形态系统,其中每个尖峰携带单个信息比特(二进制尖峰)。诸如truenorth等尖峰神经网络基于通过交换式通信线路来递送信息的分组,由此显著减少所需布线。尖峰的存在被视为接收1,其不存在表示0。可以使用若干不同的尖峰编码方案将更多的值编码成二进制尖峰。
从源核上的源神经元到目的地核上的目标轴突的尖峰通信将实际上需要经由水平或垂直或两者的组合中的2d网格中的路由器遍历特定数目的跳,以被递送到目的地核上的目标轴突。尖峰分组遍历的每一跳消耗功率和能量。
在诸如truenorth的示例性神经形态系统内,对于尖峰从其源神经元行进到其目的地轴突允许固定时间量。该固定窗口被称为记号(tick)。尖峰的行程所需的时间基于尖峰必须行进的距离以及尖峰行进经过的2-d网格路由、芯片和板接口的数量而变化。
在每个记号上,核中的神经元被顺序地处理,从第一神经元开始并且继续直到最后的神经元。因此,除了上述传输延迟之外,每个尖峰还基于核上的哪个神经元生成它而被延迟某一附加固定量。例如,在诸如每个核具有256个神经元的truenorth的示例性神经形态系统中,直到处理了前面的255个神经元才处理第256个神经元。
根据本公开的各种实施例,神经突触程序表示神经突触网络。神经突触程序包括与神经突触网络相关的信息。在一些实施例中,所述信息包括神经元特性和动力学,其确定电子神经元对输入尖峰的响应。例如,神经元特性和动力学可以包括阈值参数、泄漏参数、延迟参数或重置参数。在一些实施例中,神经突触程序信息包括神经元的突触连接(例如,经由突触交叉开关形成的突触连接)。在一些实施例中,神经突触程序信息包括轴突特性(例如,轴突类型)。在一些实施例中,神经突触程序信息包括神经元的输出尖峰应当被递送到的一个或多个目的地(例如,目标轴突)。
根据各种实施例,神经突触网络表示神经突触程序的实例化。神经突触网络可以以硬件、以仿真或以这两者实例化。例如,神经突触程序可引起神经突触网络的一个或多个实例,其中实例可驻留在单核、多核或多个芯片上。
根据各种实施例,神经形态核电路表示由神经突触程序描述的示例神经突触网络。
根据各种实施例,小核或小核编程语言表示提供神经突触程序的抽象的软件。神经突触程序的组成可通过组成小核来创建。
truenorth程序是神经突触核及其外部输入和输出的网络的完整规范。在各种实施例中,采用分治方法,由此通过互连神经突触核的一组较小网络来构造神经突触核的大型网络,其中,较小网络中的每一个又可通过互连一组甚至更小的网络等直到由作为基本的不可分割的构建块的单个神经突触核组成的网络来构造。这种编程范例被称为corelet编程。
参考图1,示出了示例性存储器映射系统100。存储器映射101被分段,并且区域102…105被分配给各种系统组件。计算核106…109(例如一个或多个芯片上的处理器核)连接到总线110。每个核106…109连接到总线110,并且可以通过共享存储器111…112相互通信,其对应于存储器映射102…103的可寻址区域。每个核106…109可通过存储器映射101的可寻址区域104与子系统113通信。类似地,每个核106…109可通过存储器映射101的可寻址区域105与外部系统114通信。
存储器映射(mm)地址与全局存储器映射相关,在该示例中,从0x00000000到0xffffffff。
参考图2,示出了示例性消息传递(mp)系统200。多个核201…209和209中的每一个都包括计算核210、存储器211和通信接口212。每个核201…209通过网络213连接。通信接口212包括输入缓冲器214和输出缓冲器215,用于向/从网络213注入和接收分组。这样,核201…209可通过传递消息来相互通信。
类似地,子系统216可以经由具有输入缓冲器218和输出缓冲器219的通信接口217连接到网络213。外部系统可以经由接口220连接到网络213。这样,核201…209可通过传递消息与子系统和外部系统通信。
消息传递(mp)地址与核本地的网络地址有关。例如,单个核可以通过其在芯片上的x、y位置来识别,而本地地址可以用于各个核本地的缓冲器或存储器。
现在参考图3,描绘了根据本公开的实施例的神经突触核。在一些实施例中,神经突触核300包括被表示为行的轴突301、被表示为列的树突302、被表示为行-列接合的突触303、以及从树突接收输入的神经元304。在一些实施方案中,存在256个轴突和256个神经元。在这样的实施方案中,存在256×256=65,536个突触。信息从轴突301流到由突触303调制的神经元304。在各种实施例中,突触可以是二进制的,并且可以与突触权重相关联。
在一些实施例中,多个神经突触核被平铺在芯片上。在示例性实施例中,64乘64的核网格被平铺,从而产生4,096个核,总共1,048,576个神经元和268,435,456个突触。在这样的实施例中,神经元、突触和短距离连接性由核电路实现。长距离连接是逻辑上的。图4中描绘了示例性实施例。网状网路由器401提供核之间的通信。同样在给定的核上,提供了神经元到核402和核到轴突403的通信链路。
现在参考图5,根据本公开的各种实施例示出了组合的存储器映射和消息传递系统500。全局存储器映射101内的存储器空间501被提供用于与消息传递系统对接。接口220在存储器映射和消息传递系统的域之间转换地址。这样,消息传递系统中的每个核的消息传递i/o缓冲器出现在存储器映射101中并且可通过其访问。
现在参考图6,根据本公开的各种实施例示出了示例性核201的输入和输出缓冲器214、215。在该示例性核中,计算核210提供神经元计算,例如如在上面关于图3-4描述的神经突触系统中那样。通信接口212提供来自神经元计算210的神经尖峰事件。在诸如以上描述的神经突触系统中,本地存储器211包括突触交叉开关和到核的本地参数。
在该示例性实施例中,输出缓冲器215包括在多个输出时间(to)来自每个输出神经元(no)的数据。输入缓冲器214类似地包括在多个输入时间(ti)处要注入到每个输入轴突(ai)的数据。
现在参考图7,根据本公开的各种实施例示出了示例性存储器映射101。存储器映射101的消息传递部分被分割成输入(轴突)区域702和输出(神经元)区域701。对于co个输出核,输出存储器区域701的大小为co*to*no*bo,其中bo为每个轴突的输出数据的比特数。同样,对于ci个输入核,输入存储器区域大小为ci*ti*ai*bi,其中bi是每个神经元的输入数据的位数。
现在参考图8,根据本公开的实施例示出了用于消息传递系统的示例性存储器映射接口。接口801耦合到总线802且可通过其访问。在接口801处接收写入请求,其可经由存储器映射寻址。写入请求被定向到存储器地址。接口801的地址转换单元803将存储器地址变换为消息核地址。如上所述,存储器地址可以是存储器内的偏移的中间值(inter),而核地址可以包括核名称或x、y核地址。然后使用从地址转换单元803输出的消息地址将写入的数据递送到目的地核。如上所述,数据可通过网络804传输,然后被添加到核心806中包括的输入缓冲器805。
接口801还包括输出缓冲器807。缓冲器807存储来自消息传递系统的消息,并且可以由如上所述的存储器映射系统直接读取。核心808通过网络804将输出消息推送到输出缓冲器807。在一些实施例中,每个核包括输出缓冲器,而在一些实施例中,输出被直接发送到网络而不在核上缓冲。在该示例性实施例中,数据被写入核输入缓冲器以供摄取到轴突,并且提供统一的输出缓冲器,数据从输出神经元被读取到该统一的输出缓冲器。从该统一的缓冲器,核输出数据可经由该存储器映射读取。如图所示,在一些实施例中,无论是统一的还是分离的输出缓冲器,都物理上位于接口块801中,而不是位于各个核805、808中。统一的输出缓冲器的大小为co*to*no*bo。
如上所述,各种实施例提供从存储器映射到消息传递域的地址转换。接收存储器映射写入请求。将存储器地址变换为用于路由消息分组的地址。例如,在一些实施例中,提供x、y核地址。在一些实施例中,这种地址转换是在算法上执行的。在一些实施例中,通过查找表(lut)提供该地址转换。在一些实施例中,使用算法地址转换和查找表的组合。
如上所述,各种实施例提供从消息传递到存储器映射域的地址转换。消息分组地址用于将给定核的输出消息路由到输出缓冲器,并索引至输出缓冲器中的适当位置。输出缓冲器是全局存储器映射的一部分,并且可以通过存储器映射域中的总线上的读操作来读取。在读取输出缓冲器的一段之后,可以将其清除,以准备从消息传递系统进行随后的写入。
在各种实施例中,接口单元具有连接到存储器映射系统的标准总线接口。在各种实施例中,总线符合高级可扩展接口(axi)或其它高级微控制器总线架构(amba)标准。在各种实施例中,接口单元具有连接到消息传递系统的接口。在各种实施例中,接口符合标准通信协议,诸如地址事件表示(aer)或消息传递接口(mpi)。
本公开的系统支持任意总线协议。因此,一些实施例包括直接存储器存取(dma),而一些实施例不包括。例如,一些实施例,实施单总线事务。一些实施例实现存储器映射i/o(mmio)或端口映射i/o(pmio)。一些实施例实施突发总线事务(例如,dma)。dma可以阻塞直接到写入地址转换单元的传送,或者直接从输出缓冲器读取传送整个帧,从而提高某些使用情况下的性能。在使用dma的一些实施例中,提供一个或多个dma总线主控器。
本公开对于在片上系统(soc)中集成存储器映射和消息传递系统是有用的。在一些这样的实施例中,消息传递系统可以是驻留在标准总线(例如amba或axi)上的ip块。
在上述一些实施例中,在存储器映射域中的地址和消息传递域中的地址之间存在1:1映射,这些地址经由接口单元被转换。然而,在一些实施例中,使用源域中的地址和数据的组合来寻址目的地域。在这样的实施例中,消息本身包括寻址信息。这样的实施例要求源处理器是明确计算地址的源域,以便将它们插入输出数据中(或从中移除)。这减少了通过对数据中的一些地址进行编码所需的存储器空间的大小。
例如,在时间/神经元阵列到存储器空间的1:1映射中,允许处理器单独地和直接地寻址消息传递域中的每个局部地址。这导致了大的存储器空间,但是不需要处理器的地址计算。或者,所有地址可以被编码在数据中。在这种情况下,存储器映射地址空间被减少到后面有fifo的单个地址。这导致了小的存储器空间,所有地址计算都由处理器进行。组合这些方法允许存储器空间的大小在这两个极端之间的某处,从而导致在两个接口之间的解码逻辑(和计算)的复杂性与消耗多少存储器空间之间的折衷。
将了解,本公开的系统和方法适合于与各种外围装置集成。根据本公开的总线可以具有多个总线主控器,例如用于传感器、致动器、神经突触系统、处理器或外围设备。每个系统组件被分配存储器空间,并且当它控制总线时,可以发送到任何其它系统组件的存储器空间。仲裁器控制在任何给定时间哪个总线主控器具有总线。在一些实施例中,dma引擎用于在组件存储器空间之间传输数据。这样,在传统的处理器系统、消息传递系统和诸如传感器和致动器的外围设备之间提供了无缝系统集成。
根据本公开的组合的存储器映射/消息传递系统可以在同一管芯上实现,以最小化功耗和等待时间(通过最小化数据行进距离),同时维持吞吐量。在各种实施例中提供接口处的流水线操作以根据需要满足吞吐量目标。这样的系统还可以被实现为单独的管芯或芯片,以允许使用各种工艺技术,诸如pcm、忆阻器、纳米管或光学器件。在一些实施例中,串行器/解串器(serdes)用于增加用于更长通信距离的接口块性能。根据各种实施例,物理通信原语可以使用诸如以太网和pcie的接口来实现。
在各种替代实施例中,直接对核输入缓冲器进行写入以供摄取到轴突,同时从核输出缓冲器读取神经元输出。在这样的实施例中,读取操作生成读取请求消息,保存地址,并将读取请求消息发送到核。核以与读取地址相关的数据消息进行响应。然后在总线上返回数据。这通常导致比在单个接口实施例中维持输出缓冲器更多的开销,并且因此具有更高的等待时间。
在各种替代实施例中,输入对核缓冲器进行写入以供摄取到轴突,同时从主存储器中的输出缓冲器读取神经元输出。在这样的实施例中,使用dma将消息传递输出推送到主存储器。这最小化了输出缓冲器所需的存储器的大小,特别是对于空间稀疏的输出。然而,这样的dma引擎必须能够执行任意存储器访问(分散写入)。这种操作通常是低效的,因此这种实施例通常表现不如在接口中包括单个输出缓冲器的那些实施例。
现在参考图9,根据本公开的实施例示出了一种将存储器映射系统和消息传递系统对接的方法。在901,接收写入请求。写入请求包括第一数据和第一目标地址。第一目标地址是存储器映射内的存储器地址。在902处,将第一目标地址转换成第二目标地址。第二目标地址识别目的地核。在903,根据第二目标地址经由消息传递系统将第一数据发送到目的地核。
在904,经由消息传递系统从源核接收消息。该消息包括第二数据。在905,基于源核来确定缓冲器中的位置。在906,将第二数据存储在缓冲器中的第一位置。缓冲器可经由存储器映射来访问。应当理解,在任何给定的实施例中,步骤901-903可以与步骤904-906分开执行,并且类似地,根据消息是从消息传递系统流出还是流向消息传递系统,给定的实施例可以仅包括步骤901-903或仅包括步骤904-906。
根据各种实施例,提供了用于无缝地互连存储器映射(mm)系统和消息传递(mp)系统的方法和系统。在一些实施例中,消息传递系统是神经突触系统。在一些实施例中,存储器映射和消息传递系统被集成在片上系统(soc)上。在一些实施例中,接口单元在存储器映射地址和消息传递地址之间进行变换。在一些实施例中,mm到mp地址变换通过查找表或通过其组合以算法方式执行。在一些实施例中,mp到mm地址变换是使用输出缓冲器执行的。在一些实施例中,系统之间的地址映射由地址和数据的组合提供。在一些实施例中,存储器映射系统包括多个总线主控器或外围设备。
现在参考图10,示出了计算节点的示例的示意图。计算节点10仅是合适的计算节点的一个示例,并且不旨在对本文所述的本发明的实施例的使用范围或功能提出任何限制。无论如何,计算节点10能够被实现和/或执行上文阐述的任何功能。
在计算节点10中,存在计算机系统/服务器12,其可与许多其它通用或专用计算系统环境或配置一起操作。适合与计算机系统/服务器12一起使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络pc、小型计算机系统、大型计算机系统、以及包括任何上述系统或设备的分布式云计算环境等。
计算机系统/服务器12可以在计算机系统可执行指令的一般上下文中描述,诸如由计算机系统执行的程序模块。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器12可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
如图10所示,计算节点10中的计算机系统/服务器12以通用计算设备的形式示出。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c 等,以及传统的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
1.一种系统,包括:
神经网络处理器系统,包括通过网络互连的至少一个神经网络处理核;
操作地连接到所述网络的接口,所述接口包括存储器映射,所述存储器映射包括对应于到所述神经网络处理器系统的输入的第一区域和对应于来自所述神经网络处理器系统的输出的第二区域。
2.根据权利要求1所述的系统,其中:
所述接口适于接收包括写入数据和写入地址的写入请求,所述写入地址对应于所述存储器映射的所述第一区域内的位置;
所述接口适于经由所述网络将所述写入数据发送到目的地神经网络处理核的至少一个输入位置;
所述接口适于接收包括读取地址的读取请求,所述读取地址对应于所述存储器映射的所述第二区域内的位置;
所述接口适于将读取数据返回给读取请求的发起者,所述读取数据包括源神经网络处理核的输出。
3.根据权利要求2所述的系统,其中所述接口包括地址转换器,所述地址转换器适于:
将所述写入地址转换成目标地址,所述目标地址识别所述目的地神经网络处理核的所述至少一个输入位置。
4.根据权利要求2所述的系统,其中所述接口包括地址转换器,并且其中:
所述接口适于经由所述网络从所述源神经网络处理核接收消息,所述消息包括数据和至少一个地址;
所述地址转换器适于基于所述至少一个地址确定所述存储器映射的所述第二区域内的地址;
所述接口适于响应于包括第二区域内的地址的读取请求而提供数据。
5.根据权利要求2所述的系统,还包括:
操作地耦合到所述接口的总线,其中:
所述接口适于经由所述总线接收所述写入请求;
所述接口适于经由所述总线接收所述读取请求。
6.根据权利要求2所述的系统,其中所述至少一个神经网络处理核包括神经突触核,并且所述网络包括核间网络,所述神经突触核具有多个输入轴突和输出神经元。
7.根据权利要求6所述的系统,其中目的地神经网络处理核是神经突触核,并且其中写入地址对应于神经突触核的一个或多个输入轴突,并且其中写入数据包括到神经突触核的多个轴突输入。
8.根据权利要求6所述的系统,其中源神经网络处理核是神经突触核,并且其中读取地址对应于神经突触核的一个或多个输出神经元,并且其中读取数据包括神经突触核的多个神经元输出。
9.根据权利要求3所述的系统,其中所述转换包括应用预定函数。
10.根据权利要求3所述的系统,其中所述转换包括访问查找表。
11.根据权利要求2所述的系统,其中所述接口包括缓冲器,并且其中:
所述接口适于经由所述网络从所述源神经网络处理核接收消息,所述消息包括消息数据和至少一个地址;
所述接口适于将消息数据存储在缓冲器中的位置处,并且其中该至少一个地址对应于缓冲器中的该位置。
12.根据权利要求1所述的系统,还包括:
传感器,其操作地连接至所述接口,所述传感器适于经由所述接口将传感器输出传输至所述神经网络处理器系统。
13.根据权利要求1所述的系统,还包括:
致动器,其操作地连接到所述接口,所述致动器适于经由所述接口从所述神经网络处理器系统接收输入。
14.根据权利要求1所述的系统,还包括:
计算节点,其操作地耦合到所述接口,所述计算节点适于经由dma访问所述接口。
15.根据权利要求1所述的系统,还包括:
计算节点,其操作地耦合到所述接口,所述计算节点适于经由总线访问所述接口。
16.根据权利要求15所述的系统,其中,所述计算节点、所述接口和所述神经网络处理器系统位于单个芯片上。
17.一种方法,包括:
接收包括写入数据和写入地址的写入请求,所述写入地址是存储器映射内的存储器地址;
将所述写入地址转换成神经网络地址,所述神经网络地址识别至少一个目的地神经网络输入位置;
根据所述神经网络地址经由网络将所述写入数据发送到至少目的地神经网络输入位置。
18.根据权利要求17所述的方法,其中,所述写入请求是经由总线接收的。
19.根据权利要求17所述的方法,其中,所述网络是核间网络。
20.根据权利要求17所述的方法,其中所述目的地神经网络包括神经突触核。
21.根据权利要求17所述的方法,其中所述转换包括应用预定函数。
22.根据权利要求17所述的方法,其中所述转换包括访问查找表。
23.根据权利要求17所述的方法,其中所述写入数据包括多个轴突输入。
24.根据权利要求17所述的方法,还包括:
在所述目的地神经网络的输入缓冲器处接收所述写入数据。
25.一种方法,包括:
经由网络从源神经网络接收消息,所述消息包括数据和至少一个地址;
将所述数据存储在缓冲器中的位置处,所述缓冲器可经由存储器映射来访问。
26.根据权利要求25所述的方法,还包括:
接收包括读取地址的读取请求,所述读取地址是所述存储器映射内的存储器地址并且对应于所述缓冲器中的所述位置;
将所述数据返回到所述读取请求的发起者。
27.根据权利要求26所述的方法,其中,所述读取请求是经由总线接收的。
28.根据权利要求25所述的方法,其中所述源神经网络是神经突触核。
29.根据权利要求25所述的方法,其中所述数据包括多个神经元输出。
30.一种用于将存储器映射系统与消息传递系统对接的计算机程序产品,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有随其体现的程序指令,所述程序指令可由处理器执行以使所述处理器执行一种方法,所述方法包括:
接收包括写入数据和写入地址的写入请求,所述写入地址是存储器映射内的存储器地址;
将所述写入地址转换成神经网络地址,所述神经网络地址识别目的地神经网络的至少一个输入位置;
根据所述神经网络地址经由网络将所述写入数据发送到所述目的地神经网络的所述至少一个输入位置;
经由所述网络从源神经网络接收消息,所述消息包括数据和至少一个地址;
基于所述至少一个地址确定缓冲器中的位置;
将所述数据存储在缓冲器中的所述位置处,所述缓冲器可经由所述存储器映射来访问。
技术总结