数据传输装置和方法与流程

文档序号:21030916发布日期:2020-06-09 20:11阅读:171来源:国知局
数据传输装置和方法与流程
本申请涉及信息处理
技术领域
,特别是涉及一种数据传输装置和方法。
背景技术
:随着信息技术的不断发展和人们日益增长的需求,人们对信息及时性的要求越来越高。对于高速i/o设备以及神经网络处理器中批量数据处理的情况,通常采用直接内存存取(directmemoryaccess,dma)进行外部设备与系统内存之间的数据交换。在多核处理器系统中,多核处理器通常执行多线程任务,处理器核工作过程中往往会被线程调度机制中断,由于线程切换,通常的数据传输技术无法保证原子性。技术实现要素:基于此,有必要针对上述技术问题,提供一种能够确保处理器核一旦开始工作就一直运行到结束,中间不会被任何线程打断,从而实现原子操作的数据传输装置和方法。第一方面,提供一种数据传输装置,包括:数据i/o单元、仲裁单元以及直接内存访问单元;所述数据i/o单元,用于接收核标识,并将接收到的所述核标识传递给所述仲裁单元;所述仲裁单元连接于所述数据i/o单元与所述直接内存访问单元之间,用于对所述核标识进行存储和仲裁,并将仲裁结果发送至所述直接内存访问单元;所述直接内存访问单元,用于根据所述仲裁结果进行数据读写。第二方面,本申请实施例提供了另一种数据传输装置,包括:状态缓存单元、系统内存、总线以及直接内存访问单元;所述状态缓存单元与所述系统内存连接,用于存储与所述系统内存中的访存地址对应的状态标识;所述系统内存通过所述总线与所述直接内存访问单元连接,用于存储输入数据;所述总线,用于传递访存响应信息;所述直接内存访问单元,用于根据所述状态标识以及所述访存响应信息,与所述系统内存进行数据交互。第三方面,本申请实施例提供了一种神经网络运算装置,该神经网络运算装置包括一个或者多个上述数据传输装置。该神经网络运算装置用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过i/o接口传递给其他处理装置。第四方面,本申请实施例提供了一种组合处理装置,该组合处理装置包括如第三方面所述的机器学习处理装置、通用互联接口,和其他处理装置。该神经网络运算装置与上述其他处理装置进行交互,共同完成用户指定的操作。该组合处理装置还可以包括存储装置,该存储装置分别与所述神经网络运算装置和所述其他处理装置连接,用于保存所述神经网络运算装置和所述其他处理装置的数据。第五方面,本申请实施例提供了一种神经网络芯片,该神经网络芯片包括上述第一方面和第二方面所述的数据传输装置、上述第三方面所述的神经网络运算装置或者上述第四方面所述的组合处理装置。第六方面,本申请实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述第五方面所述的神经网络芯片;第七方面,本申请实施例提供了一种板卡,该板卡包括上述第六方面所述的神经网络芯片封装结构。第八方面,本申请实施例提供了一种电子装置,该电子装置包括上述第六方面所述的神经网络芯片或者上述第七方面所述的板卡。第九方面,本申请实施例还提供了一种数据传输方法,包括:通过数据i/o单元接收核标识;判断仲裁单元中是否存储有预存核标识;若所述仲裁单元中存储有预存核标识,则将接收到的所述核标识与所述预存核标识进行比较;根据所述仲裁单元的比较结果,执行访存操作。第十方面,本申请实施例还提供了另一种数据传输方法,包括:向系统内存发起访存请求;获取所述访存请求对应的访存地址;获取所述访存地址对应的状态标识;获取总线返回的访存响应信息;根据所述状态标识以及所述访存响应信息,执行访存操作。上述数据传输装置和方法,通过设置缓存锁以及锁定访存地址的方式,实现原子访存操作,从而确保处理器核一旦开始工作就一直运行到结束,中间不会被任何线程打断。另外,上述数据传输装置和方法,还可以通过设置总线锁,能够配合独占总线的方式,实现总线控制权。附图说明图1为一个实施例中数据传输装置1000的结构框架图;图2为一个实施例中数据传输装置1000的工作流程示意图;图3为一个实施例中数据传输装置2000的结构框架图;图4为一个实施例中数据传输装置3000的结构框架图;图5为一个实施例中数据传输装置4000的结构框架图;图6a为一个实施例中数据传输装置4000a的工作流程示意图;图6b为一个实施例中数据传输装置4000b的工作流程示意图;图7为一个实施例中数据传输装置5000的结构框架图;图8为一个实施例中数据传输装置6000的结构框架图;图9为一个实施例中数据传输装置7000的结构框架图;图10为一个实施例中主处理电路的结构示意图;图11为一个实施例中数据传输装置8000的结构框架图;图12为一个实施例中组合处理装置的结构示意图;图13为另一个实施例中组合处理装置的结构示意图;图14为一个实施例中板卡的结构示意图;图15为一个实施例中数据传输方法的流程示意图;图16为一个实施例中判断是否执行访存操作的流程示意图;图17为一个实施例中数据传输方法的工作流程示意图;图18为另一个实施例中数据传输方法的流程示意图;图19为另一个实施例中数据传输方法的流程示意图;图20为另一个实施例中数据传输方法的流程示意图;图21为另一个实施例中数据传输方法的流程示意图;图22为另一个实施例中判断是否执行访存操作的流程示意图;图23为另一个实施例中数据传输方法的工作流程示意图;图24为另一个实施例中数据传输方法的流程示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选的还包括没有列出的步骤或单元,或可选的还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。在一个实施例中,如图1所示,提供了一种数据传输装置1000,该装置包括:数据i/o单元203、仲裁单元1002以及直接内存访问单元50。数据i/o单元203,用于接收核标识,并将接收到的所述核标识传递给仲裁单元1002;仲裁单元1002连接于数据i/o单元203与直接内存访问单元50之间,用于对接收到的核标识进行存储和仲裁,并将仲裁结果发送至直接内存访问单元50;直接内存访问单元50,用于根据仲裁结果进行数据读写。其中,数据i/o单元203可与多个处理器核连接,用于接收不同处理器核的核标识,并将接收到的不同处理器核的核标识传递给仲裁单元1002。其中,仲裁单元1002串联于数据i/o单元203和直接内存访问单元50之间,用于接收数据i/o单元203传递的不同处理器核的核标识,并将不同处理器核的核标识进行存储;仲裁单元1002还用于对发起访存请求或要求总线控制权的处理器核进行核标识仲裁,即将发起访存请求或要求总线控制权的处理器核的核标识与当前正在工作的处理器的核标识进行比较,若发起访存请求或要求总线控制权的处理器核的核标识与当前正在工作的处理器的核标识一致,则向直接内存访问单元50发送握手成功的信号,允许该处理器核享有总线控制权;若发起访存请求或要求总线控制权的处理器核的核标识与当前正在工作的处理器的核标识不一致,则向直接内存访问单元50发送握手失败的信号,禁止该处理器核访问总线和系统内存,需在队列中等待。其中,直接内存访问单元50用于接收仲裁单元1002发送的仲裁结果,若仲裁结果为允许该处理器核享有总线控制权,则执行该处理器核与系统内存1004之间的数据传输;若仲裁结果为禁止该处理器核访问总线和系统内存;则禁止执行一切操作,包括禁止执行该处理器核与系统内存1004之间的数据传输,以及禁止执行核内总线上的数据传输。上述数据传输装置中,通过数据i/o单元实现处理器核与仲裁单元之间的核标识传递,通过仲裁单元对处理器核进行核标识仲裁,并将仲裁结果发送至直接内存访问单元,直接内存访问单元根据仲裁结果与系统内存进行数据交互,能够确保处理器核一旦开始工作就一直运行到结束,中间不会被任何线程打断,从而实现原子访问操作。在其中一个实施例中,如图2所示,多核处理器中,多个处理器核(例如:处理器核1005a和处理器核1005b)共享一块存储空间,即系统内存1004;处理器核1005a和处理器核1005b分别通过数据i/o单元203与仲裁单元1002连接;直接内存访问单元50通过总线与系统内存1004连接。处理器核1005a首先向直接内存访问单元50发起访存请求,译码器通过识别该访存请求的name域,解析该访存请求为原子操作;若此时仲裁单元1002中未存储有核标识(coreid),则将处理器核1005a的coreid存储至仲裁单元1002中,同时直接内存访问单元50接管总线控制权,实现处理器核1005a与系统内存1004之间的数据传输。例如:处理器核1005a的核标识coreid=1,处理器核1005a发起访存请求,仲裁单元1002将处理器核1005a的核标识coreid=1进行存储,此时仅允许coreid=1的处理器核访问总线和系统内存。在其中一个实施例中,请一并参阅如图2,处理器核1005a访问系统内存1004的过程中,若有其他处理器核(例如处理器核1005b)发起访存请求或任何中断总线控制的线程,一律视为无效,包括禁止访问总线、系统内存1004以及其他任何中断当前线程的操作,需等待处理器核1005a访存结束后,处理器核1005b方可恢复握手信号(valid&ready)。例如:若处理器核1005a正在访存进行数据传输,此时处理器核1005b也发起访存请求,仲裁单元1002对处理器核1005b进行核标识仲裁,通过比较得知处理器核1005b的核标识coreid≠1,仲裁单元1002向直接内存访问单元50发送握手失败的信号,禁止处理器核1005b访问总线和系统内存1004,需在队列中等待,直接内存访问单元50收到该仲裁结果后,将处理器核1005b的握手信号拉低,禁止处理器核1005b执行访存操作。当处理器核1005a访存结束后,通过总线广播结束信号,并释放总线控制权,此时处理器核1005b的握手信号重新恢复为valid&ready,可以重新发起访存请求。在其中一个实施例中,如图3所示,提供了一种数据传输装置2000,该装置包括:数据i/o单元203、仲裁单元2002以及直接内存访问单元50。数据i/o单元203,用于接收核标识,并将接收到的所述核标识传递给仲裁单元2002;仲裁单元2002设置于直接内存访问单元50内部,用于对接收到的核标识进行存储和仲裁,并将仲裁结果发送至直接内存访问单元50;直接内存访问单元50包括仲裁单元2002,用于根据仲裁结果进行数据读写。其中,多核处理器中,多个处理器核共享一块存储空间,即系统内存2004;每一处理器核通过数据i/o单元203与仲裁单元2002连接;直接内存访问单元50通过总线与系统内存2004连接。上述数据传输装置中,将仲裁单元设置在直接内存访问单元内部,能够减少电路连线,在实现原子访问操作的同时提高访存效率。在其中一个实施例中,如图4所示,提供了一种数据传输装置3000,该装置包括:数据i/o单元203、仲裁单元3002以及直接内存访问单元50。数据i/o单元203,用于接收核标识,并将接收到的所述核标识传递给仲裁单元3002;仲裁单元3002包括接收模块3002a、存储模块3002b、比较模块3002c以及发送模块3002d,仲裁单元3002通过接收模块3002a与数据i/o单元203连接,通过发送模块3002d与直接内存访问单元50连接;接收模块3002a,用于接收核标识;存储模块3002b,用于对接收到的核标识进行存储;比较模块3002c,用于将接收到的核标识与存储模块3002b中存储的核标识进行比较,判断接收到的核标识与存储模块3002b中存储的核标识是否一致,得到仲裁结果;发送模块3002d,用于将仲裁结果发送至直接内存访问单元50;直接内存访问单元50,用于根据仲裁结果进行数据读写。其中,多核处理器中,多个处理器核共享一块存储空间,即系统内存3004;每一处理器核通过数据i/o单元203与仲裁单元3002连接;直接内存访问单元50通过总线与系统内存3004连接。上述数据传输装置中,通过改进仲裁单元的电路结构,能够在实现原子访问操作的同时保证部分应用场景下的功能完整性。在一个实施例中,如图5所示,提供了一种数据传输装置4000,该装置包括:状态缓存单元4001、系统内存4002、总线4003以及直接内存访问单元50。状态缓存单元4001与系统内存4002连接,用于存储与系统内存4002中的访存地址对应的状态标识;系统内存4002通过总线4003与直接内存访问单元50连接,用于存储输入数据;总线4003,用于传递访存响应信息;直接内存访问单元50,用于根据状态标识以及访存响应信息,与系统内存4002进行数据交互。其中,状态缓存单元4001中存储的状态标识,用于表示该状态标识所对应的访存地址是否被占用。例如:系统内存4002中的访存地址a[0]所对应的状态标识state=1,则表示地址a[0]已被占用。其中,系统内存4002为共享内存,也就是说,多核处理器中的多个处理器核均可以访问系统内存4002,与系统内存4002进行数据读写。系统内存4002通过直接内存访问单元50实现与多核处理器之间的数据传输。其中,总线4003用于传递直接内存访问单元50对系统内存4003进行访问时的响应信息,当允许当前处理器核执行访存操作时,总线4003会向当前处理器核返回访存成功的响应信息;当不允许当前处理器核执行访存操作时,总线4003会向当前处理器核返回访存失败的响应信息。具体地,通过在总线上增加额外的位宽来存放访存地址、状态标识以及写响应或读响应等访存响应信息。其中,若系统内存4002中的访存地址未被占用(访存地址a[0]所对应的状态标识state=0),且当前处理器核收到总线4003返回的访存成功的响应信息,则表示允许当前处理器核执行访存操作,直接内存访问单元50可与系统内存4002之间进行数据传输;若系统内存4002中的访存地址已被占用(访存地址a[0]所对应的状态标识state=1),且当前处理器核未收到总线4003返回的访存成功的响应信息,则表示不允许当前处理器核执行访存操作,禁止直接内存访问单元50与系统内存4002之间进行数据传输。上述数据传输装置中,通过状态缓存单元标识系统内存中的访存地址是否被占用,直接内存访问单元根据状态缓存单元的状态标识以及总线返回的访存响应信息,与系统内存进行数据交互,能够通过锁定访存地址实现原子访问操作。在其中一个实施例中,如图6a所示,多核处理器中,多个处理器核(例如:处理器核4005a和处理器核4005b)共享一块存储空间,即系统内存4002。当处理器核4005a向系统内存4002发起访存请求时,也就是说,当处理器核4005a需要向系统内存4002写数据时,首先判断处理器核4005a的cache缓存中是否存储有需要写入访存地址中的数据,若处理器核4005a的cache缓存中存储有需要写入访存地址中的数据,则向直接内存访问单元50发起访存请求,将系统内存4002中的访存地址对应的状态标识设置为被占用,同时向总线4003返回访存成功的响应信息,此时只有处理器核4005a能够向该访存地址写数据。例如:处理器核4005a向系统内存4002中addr[0]的访存地址发起访存请求,则将addr[0]的访存地址对应的状态标识state设置为1(假设state=1表示访存地址被占用),同时向总线4003返回处理器核4005a访存成功的响应信息,此时只有处理器核4005a能够向addr[0]这个访存地址进行数据读写。在其中一个实施例中,如图6b所示,多核处理器中,多个处理器核(例如:处理器核4005a和处理器核4005b)共享一块存储空间,即系统内存4002。当处理器核4005a向系统内存4002发起访存请求时,也就是说,当处理器核4005a需要向系统内存4002写数据时,首先判断处理器核4005a的cache缓存中是否存储有需要写入访存地址中的数据,若处理器核4005a的cache缓存中未存储有需要写入访存地址中的数据,则向仲裁单元4006发送处理器核4005a的核标识coreid=1,并通过仲裁单元4006进行核标识仲裁,从而启用总线锁接管总线的控制权,将所需数据读取到处理器核4005a的cache缓存中,随后向直接内存访问单元50发起访存请求,将系统内存4002中的访存地址对应的状态标识设置为被占用,同时向总线4003返回访存成功的响应信息,此时只有处理器核4005a能够向该访存地址写数据。在其中一个实施例中,请一并参阅图6a,处理器核4005a访问系统内存4002的过程中,若有其他处理器核4005b向已被占用的访存地址发起访存请求时,一律视为无效,禁止向系统内存4002中已被占用的访存地址进行数据读写,需等待已被占用的访存地址数据更新后,也就是说,已被占用的访存地址对应的状态标识重新设置为未被占用后,方可对该访存地址执行访存操作。例如:若处理器核4005a正在对系统内存4002中addr[0]的访存地址进行数据读写,此时处理器核4005b也向系统内存4002中addr[0]的访存地址发起访存请求,此时处理器核4005b看到addr[0]的访存地址对应的状态标识state=1,也就是说,处理器核4005b看到addr[0]的访存地址已被占用,无法对该访存地址进行数据读写;同时,处理器核4005b不会收到总线4003返回的访存成功的响应信息(写成功信号或读成功信号),处理器核4005b只能在队列中等待。当处理器核4005a访存结束后,系统内存4002中addr[0]的访存地址对应的状态标识state重新设置为0(假设state=0表示访存地址未被占用),此时处理器核4005b可以重新发起访存请求,向系统内存4002中addr[0]的访存地址进行数据读写。上述数据传输装置中,避免了多核处理器中多个处理器核向同一访存地址重复发送访存请求,节省了总线位宽。在一个实施例中,如图7所示,提供了一种数据传输装置5000,该装置包括:状态缓存单元5001、系统内存5002、总线5003以及直接内存访问单元50。状态缓存单元5001设置于系统内存5002内部,用于存储与系统内存5002中的访存地址对应的状态标识;系统内存5002包括状态缓存单元5001,系统内存5002通过总线5003与直接内存访问单元50连接,用于存储输入数据;总线5003,用于传递访存响应信息;直接内存访问单元50,用于根据状态标识以及访存响应信息,与系统内存5002进行数据交互。上述数据传输装置中,将状态缓存单元设置在系统内存内部,能够减少电路连线,在实现原子访问操作的同时提高访存效率。在其中一个实施例中,如图8所示,提供了一种数据传输装置6000,该装置包括:控制器单元11和运算单元12,其中,控制器单元11和运算单元12连接,该运算单元12包括:一个主处理电路和多个从处理电路;控制器单元11,用于获取输入数据以及计算指令;在一种可选方案中,具体的,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据i/o接口或i/o引脚。上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。控制器单元11,还用于解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给所述主处理电路;主处理电路101,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;多个从处理电路102,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;主处理电路101,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。本申请提供的技术方案将运算单元设置成一主多从结构,对于正向运算的计算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。可选的,数据传输装置6000还可以包括:存储单元10和直接内存访问单元50,存储单元10可以包括:寄存器、缓存中的一个或任意组合,具体的,所述缓存,用于存储所述计算指令;所述寄存器,用于存储所述输入数据和标量;所述缓存为高速暂存缓存。直接内存访问单元50用于从存储单元10读取或存储数据。可选的,该控制器单元包括:指令存储单元110、指令处理单元111和存储队列单元113;指令存储单元110,用于存储所述人工神经网络运算关联的计算指令;所述指令处理单元111,用于对所述计算指令解析得到多个运算指令;存储队列单元113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令和/或计算指令。举例说明,在一个可选的技术方案中,主运算处理电路也可以包括一个控制器单元,该控制器单元可以包括主指令处理单元,具体用于将指令译码成微指令。当然在另一种可选方案中,从运算处理电路也可以包括另一个控制器单元,该另一个控制器单元包括从指令处理单元,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制信号。在一种可选方案中,该计算指令的结构可以如表1所示。表1操作码寄存器或立即数寄存器/立即数...上表中的省略号表示可以包括多个寄存器或立即数。在另一种可选方案中,该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表2所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。表2上述寄存器可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据,该数据具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维张量。在另一种可选实施例中,运算单元12如图9所示,可以包括一个主处理电路101和多个从处理电路102。在一个实施例里,如图9所示,多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,需要说明的是,如图14所示的k个从处理电路仅包括第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,即该k个从处理电路为多个从处理电路中直接与主处理电路连接的从处理电路。k个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发。可选的,如图10所示,该主处理电路还可以包括:转换处理电路110、激活处理电路111、加法处理电路112中的一种或任意组合;转换处理电路110,用于将主处理电路接收的数据块或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路接收的数据块或中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换);激活处理电路111,用于执行主处理电路内数据的激活运算;加法处理电路112,用于执行加法运算或累加运算。所述主处理电路,用于确定所述输入神经元为广播数据,权值为分发数据,将分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述从处理电路;所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述主处理电路;所述主处理电路,用于将多个从处理电路发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。所述从处理电路包括:乘法处理电路;所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;转发处理电路(可选的),用于将接收到的数据块或乘积结果转发。累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。另一个实施例里,该运算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令。在一种可选实施例中,运算单元12如图11所示,可以包括分支处理电路103;其具体的连接结构如图11所示,其中,主处理电路101与分支处理电路103(一个或多个)连接,分支处理电路103与一个或多个从处理电路102连接;分支处理电路103,用于执行转发主处理电路101与从处理电路102之间的数据或指令。本申请还揭露了一个神经网络运算装置,其包括一个或多个在本申请中提到的计算装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的机器学习运算,执行结果通过i/o接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。该神经网络运算装置具有较高的兼容性,可通过pcie接口与各种类型的服务器相连接。本申请还揭露了一个组合处理装置,其包括上述的神经网络运算装置,通用互联接口,和其他处理装置。神经网络运算装置与其他处理装置进行交互,共同完成用户指定的操作。图12为组合处理装置的示意图。其他处理装置,包括中央处理器cpu、图形处理器gpu、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为神经网络运算装置与外部数据和控制的接口,包括数据搬运,完成对本神经网络运算装置的开启、停止等基本控制;其他处理装置也可以和神经网络运算装置协作共同完成运算任务。通用互联接口,用于在所述神经网络运算装置与其他处理装置间传输数据和控制指令。该神经网络运算装置从其他处理装置中获取所需的输入数据,写入神经网络运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入神经网络运算装置片上的控制缓存;也可以读取神经网络运算装置的存储模块中的数据并传输给其他处理装置。可选的,该结构如图13所示,还可以包括存储装置,存储装置分别与所述神经网络运算装置和所述其他处理装置连接。存储装置用于保存在所述神经网络运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本神经网络运算装置或其他处理装置的内部存储中无法全部保存的数据。该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的soc片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。在一些实施例里,还申请了一种芯片,其包括了上述神经网络运算装置或组合处理装置。在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。参阅图14,图14提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是ddrsdram(doubledataratesdram,双倍速率同步动态随机存储器)。ddr不需要提高时钟频率就能加倍提高sdram的速度。ddr允许在时钟脉冲的上升沿和下降沿读出数据。ddr的速度是标准sdram的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个ddr4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位ddr4控制器,上述72位ddr4控制器中64bit用于传输数据,8bit用于ecc校验。可以理解,当每一组所述存储单元中采用ddr4-31200颗粒时,数据传输的理论带宽可达到251600mb/s。在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。ddr在一个时钟周期内可以传输两次数据。在所述芯片中设置控制ddr的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准pcie接口。比如,待处理的数据由服务器通过标准pcie接口传递至所述芯片,实现数据转移。优选的,当采用pcie3.0x16接口传输时,理论带宽可达到116000mb/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过spi接口电连接。所述控制器件可以包括单片机(microcontrollerunit,mcu)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。在一些实施例里,申请了一种电子设备,其包括了上述板卡。电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。在一个实施例中,如图15所示,提供了一种数据传输方法,该方法可在如图1至图4所示的数据传输装置上运行,所述方法包括以下步骤:步骤202,通过数据i/o单元接收核标识。其中,数据i/o单元指的是连接处理器核与仲裁单元的硬件接口,数据i/o单元可与多个处理器核连接;核标识指的是处理器核的id号,用于标识处理器核,例如:coreid=1表示处理器核的id号为1。具体地,将处理器核的核标识传递给数据i/o单元,数据i/o单元接收该核标识并传递给仲裁单元。步骤204,查询仲裁单元中是否存储有预存核标识。其中,仲裁单元指的是对接收到的核标识进行存储和仲裁硬件模块;预存核标识指的是当前享有总线控制权的处理器核的核标识。具体地,若当前总线为空闲状态,则仲裁单元中未存储有预存核标识;若当前总线为被占用状态,则仲裁单元中存储有预存核标识,即存储有当前享有总线控制权的处理器核的核标识。例如:coreid=1的处理器核享有当前总线控制权,则仲裁单元中存储的预存核标识coreid=1。步骤206,若所述仲裁单元中存储有预存核标识,则将接收到的所述核标识与所述预存核标识进行比较。具体地,若仲裁单元中未存储有预存核标识,则直接将接收到的核标识进行存储,并允许该处理器核占用总线;若仲裁单元中存储有预存核标识,则将接收到的核标识与预存核标识进行比较,判断二者是否一致。步骤208,根据所述仲裁单元的比较结果,判断是否执行访存操作。其中,访存操作指的是处理器核访问系统内存的操作,包括从系统内存中读取数据以及向系统内存中写数据。具体地,根据仲裁单元接收到的核标识与预存核标识是否一致,判断是否允许该处理器享有总线控制权。作为一种可选的实施方式,通过仲裁单元中的比较模块,将仲裁单元接收到的核标识与预存核标识进行比较,判断接收到的核标识与预存核标识是否一致,得到比较结果,并将比较结果发送至直接内存访问单元,直接内存访问单元根据该比较结果,判断是否允许该处理器享有总线控制权。上述数据传输方法中,通过数据i/o单元接收核标识,通过仲裁单元将接收到的核标识与预存核标识进行比较,并根据比较结果,判断是否执行访存操作。该方法能够实现原子操作,避免处理器核工作过程中被其他线程中断。在其中一个实施例中,如图16所示,步骤208具体包括以下步骤:步骤2082,若所述核标识与所述预存核标识匹配,则通过直接内存访问单元与系统内存进行数据交互。具体地,当仲裁单元接收到的核标识与预存核标识一致时,则允许该处理器访问总线以及系统内存。例如:如图17所示,预存核标识coreid=1,仲裁单元接收到的核标识coreid=1,则判断仲裁单元接收到的核标识与预存核标识一致,允许核标识coreid=1的处理器核通过直接内存访问(dma)单元与系统内存进行数据交互。步骤2084,若所述核标识与所述预存核标识不匹配,则禁止访问总线以及系统内存。具体地,当仲裁单元接收到的核标识与预存核标识不一致时,则禁止该处理器访问总线以及系统内存,需在队列中等待。例如:如图17所示,预存核标识coreid=1,仲裁单元接收到的核标识coreid=2,则判断仲裁单元接收到的核标识与预存核标识不一致,核标识coreid=2的处理器核的总线握手信号被拉低,禁止核标识coreid=2的处理器核通过直接内存访问(dma)单元与系统内存进行数据交互。在一个实施例中,如图18所示,提供了一种数据传输方法,该方法可在如图1至图4所示的数据传输装置上运行,所述方法还包括以下步骤:步骤302,访存结束后,释放总线的控制权。具体地,占用总线的处理器核执行访存操作结束后,即占用总线的处理器核与系统内存之间的数据传输结束后,通过总线广播访存结束的信号,释放该处理器核的总线控制权,其他在队列中等待的处理器核的总线握手信号重新恢复为valid&read。步骤304,清除所述仲裁单元中的预存核标识。具体地,占用总线的处理器核执行访存操作结束后,总线恢复空闲状态,将仲裁单元中的预存核标识清除,继续等待接收数据i/o单元传递的核标识。上述数据传输方法中,访存结束后及时释放总线的控制权,便于其他处理器核进行后续的访存操作,从而提高原子访存操作过程中总线的使用效率。在一个实施例中,如图19所示,提供了一种数据传输方法,该方法可在如图5至图7所示的数据传输装置上运行,所述方法包括以下步骤:步骤402,向系统内存发起访存请求。其中,系统内存指的是片外共享内存,即多核处理器中,多个处理器核的共享存储空间,系统内存可用于对片上数据进行临时存储;访存请求指的是处理器核向系统内存发起的读数据请求或写数据请求。具体地,处理器核向系统内存发起数据读写请求,多核处理器中,多个处理器核可同时向系统内存发起数据读写请求。步骤404,获取所述访存请求对应的访存地址。其中,访存地址指的是系统内存中用于存放发起访存请求的处理器核所需数据的地址,也就是说,处理器核所需的数据存放在系统内存中的特定地址中,需先获取该访存地址,才能通过寻址获取该访存地址中存放的数据。具体地,处理器核从系统内存中获取其所需数据存放的访存地址。步骤406,获取所述访存地址对应的状态标识。其中,状态标识存储在状态缓存单元中,用于标识系统内存中的访存地址是否被占用,状态标识与访存地址一一对应,也就是说,每一个访存地址均对应一个状态标识。具体地,根据处理器核的访存请求对应的访存地址,获取该访存地址对应的状态标识,从而根据该状态标识,判断该状态标识对应的访存地址是否被占用。步骤408,获取总线返回的访存响应信息。其中,访存响应信息包括访存成功信息和访存失败信息,访存成功指的是处理器核与总线握手成功;访存失败信息指的是处理器核与总线握手失败,需在队列中继续等待。具体地,处理器核获取总线返回的访问系统内存是否成功的响应信息。步骤410,根据所述状态标识以及所述访存响应信息,判断是否执行访存操作。其中,访存操作指的是处理器核访问系统内存的操作,包括从系统内存中读取数据以及向系统内存中写数据。具体地,根据步骤406中获取的状态标识以及步骤408中获取的总线返回的访存响应信息,判断是否允许该处理器核与系统内存之间进行数据读写。上述数据传输方法中,获取访存地址对应的状态标识以及总线返回的访存响应信息,并根据该状态标识以及该访存响应信息,判断是否执行访存操作。该方法能够实现与系统内存之间进行原子读写操作,避免数据读写过程中被其他线程中断。在一个实施例中,如图20所示,提供了一种数据传输方法,该方法可在如图5至图7所示的数据传输装置上运行,所述方法还包括以下步骤:步骤502,判断存储单元中是否存储有所述访存地址的数据。其中,存储单元指的是处理器核内部的片上存储空间,包括缓存、寄存器的任意组合,用于存储输入数据以及输入数据中的标量数据。具体地,处理器核执行原子访存操作之前,先访问核内缓存(cache),判断核内缓存中是否存储有需要写入访存地址中的数据,即cache是否命中。步骤504,若所述存储单元中未存储有所述访存地址的数据,则启用总线锁接管总线控制权。其中,总线锁指的是能够执行原子操作、使正在工作的处理器核独占总线的数据传输装置,可参阅数据传输装置1000、数据传输装置2000以及数据传输装置3000的装置结构。具体地,若核内缓存中未存储有需要写入访存地址中的数据,即cache未命中,则启用总线锁接管总线的控制权,将所需数据读取到核内缓存中;若核内缓存中存储有需要写入访存地址中的数据,即cache命中,则可执行如图19所示的步骤。步骤506,将所述访存地址的数据存储至所述存储单元。具体地,通过启用总线锁,将需要写入访存地址中的数据存储至核内缓存中。上述数据传输方法中,通过启用总线锁,能够确保需要写入访存地址中的数据已预先存储在存储单元中。在其中一个实施例中,如图21所示,处理器核向访存地址发起访存请求后。还包括以下步骤:步骤602,将所述访存地址对应的状态标识设置为被占用。具体地,处理器核更改状态标识,将与访存地址对应的状态缓存单元中的状态标识设置为被占用。步骤604,向所述总线返回访存成功的响应信息。具体地,处理器核向总线返回握手成功的响应信息,此时只有该处理器核能够向该访存地址进行数据读写。上述数据传输方法中,当cache命中时启用锁定访存地址的方式,能够在实现原子访存操作的同时,减少了锁定总线的时间,提高了原子访存过程中总线的使用效率。在其中一个实施例中,如图22所示,步骤410具体包括以下步骤:步骤4102,判断所述状态标识是否为被占用。具体地,根据与访存地址对应的状态标识,判断该访存地址是否被占用。例如:如图23所示,若访存地址对应的状态标识state=1(假设state=1表示访存地址被占用),则表示该访存地址已被占用。步骤4104,判断是否接收到所述总线返回的访存成功的响应信息。其中,处理器核发起访存请求后,会接收到总线返回的响应信息,该响应信息包括访存成功的响应信息以及访存失败的响应信息。具体地,根据处理器核接收到的响应信息,判断该响应信息是否为访存成功的响应信息。步骤4106,根据所述状态标识是否为被占用以及是否接收到所述总线返回的访存成功的响应信息,判断是否执行访存操作。具体地,若访存地址对应的状态标识为未被占用且接收到访存成功的响应信息,则通过直接内存访问单元向系统内存中的该地址进行数据读写;若访存地址对应的状态标识为被占用且未接收到访存成功的响应信息,则禁止访问总线以及系统内存。在一个实施例中,如图24所示,提供了一种数据传输方法,该方法可在如图5至图7所示的数据传输装置上运行,所述方法还包括以下步骤:步骤702,访存结束后,释放总线的控制权。具体地,占用总线的处理器核执行访存操作结束后,即占用总线的处理器核与系统内存之间的数据传输结束后,通过总线广播访存结束的信号,释放该处理器核的总线控制权,其他在队列中等待的处理器核的总线握手信号重新恢复为valid&read。步骤704,将所述访存地址对应的状态标识设置为未被占用。具体地,访存地址中的数据被更新后,即锁定访存地址的处理器核执行原子访存操作结束后,该访存地址被释放,将该访存地址对应的状态标识重新设置为可用(即未被占用)状态,继续等待其他处理器核向该访存地址进行数据读写。上述数据传输方法中,访存结束后及时释放总线的控制权,且释放锁定的访存地址,便于其他处理器核进行后续的访存操作,从而提高原子访存操作过程中的数据传输效率。应该理解的是,虽然图15-24的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图15-24中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1