掌桥专利:专业的专利平台
掌桥专利
首页

数据处理装置、方法、加速单元、电子设备及存储介质

文献发布时间:2024-07-23 01:35:21


数据处理装置、方法、加速单元、电子设备及存储介质

技术领域

本发明实施例涉及人工智能芯片技术领域,特别是涉及一种数据处理装置、方法、加速单元、一种电子设备以及一种计算机可读存储介质。

背景技术

根据发展历史可知,DNN(Deep Neural Network,深度神经网络)在通用处理器上运行,虽然该解决方案仍然被广泛采用,但它们不足以满足功率范围低于瓦特或几瓦特的应用领域。为此,出现了定制化硬件平台,以实现DNN的低功耗和高效执行,但代价是电路设计耗时,并且在一定程度上限制了计算规模,并且通常还需要对DNN进行硬件感知训练。

独立于硬件平台,无论是通用处理器还是ASIC(Application SpecificIntegrated Circuit,集成电路),都可以根据所使用的计算范例获得不同的性能。一般来说,冯·诺依曼架构由于需要将数据从内存移动到计算单元而在性能上受到内在限制:在现代DNN模型中,参数数量可能达到数亿从内存中检索它们会严重影响性能。这种现象也称为冯·诺依曼瓶颈,引发了许多针对替代性非冯·诺依曼范式的研究工作。

目前的AI芯片的架构中的一些架构只是实现了近存储计算,即计算单元与存储单元相邻,使用高速互联总线连接,提高带宽,缩短数据路径,但还是存在计算单元算力高,数据传输带宽有限的矛盾。

发明内容

本发明实施例是提供一种数据处理装置、方法、加速单元、电子设备以及计算机可读存储介质,以解决现有AI芯片的架构会存在计算单元算力高,但数据传输带宽有限的问题。

本发明实施例公开了一种数据处理装置,包括:交叉矩阵、输入内存、矢量运算单元、输出内存和微控制器;

所述输入内存用于存储所述数据处理装置需要进行运算操作的数据;

所述交叉矩阵和所述矢量运算单元用于实现所述数据处理装置的运算操作;

所述输出内存用于存储所述数据处理装置进行所述运算操作结束后得到的数据;

所述微控制器用于实现所述数据处理装置的逻辑功能。

本发明实施例公开了一种数据处理方法,应用于数据处理装置,所述装置包括:交叉矩阵、输入内存、矢量运算单元、输出内存和微控制器,所述方法包括:

通过所述输入内存存储所述数据处理装置需要进行运算操作的数据;

通过所述交叉矩阵和所述矢量运算单元执行所述数据处理装置的所述运算操作;

通过所述输出内存存储所述数据处理装置进行所述运算操作结束后得到的数据;

通过所述微控制器实现所述输入内存的数据存储,将所述输入内存中的数据发送至所述交叉矩阵和所述矢量运算单元中以进行所述运算操作,将进行所述运算操作结束后得到的数据发送至所述输出内存中进行数据存储。

本发明实施例公开了一种用于神经网络模型执行的加速单元,所述加速单元包括:多个内存计算核、片内互联总线、内存读写电路和高速数字接口,所述内存计算核包括交叉矩阵、输入内存、矢量运算单元、输出内存和微控制器;

所述多个内存计算核之间通过所述片内互联总线实现通信;

所述内存读写电路和所述高速数字接口用于将输入数据加载到所述内存计算核的输入内存中;

所述交叉矩阵和所述矢量运算单元用于执行所述神经网络模型的运算;

所述输出内存用于缓存所述交叉矩阵和所述矢量运算单元执行所述神经网络模型的运算后得到的输出数据;

通过所述片内互联总线将所述内存计算核得到的输出数据作为所述输入数据,加载到下一内存计算核的输入内存中;

所述微控制器用于实现所述内存计算核的逻辑功能。

本发明实施例还公开了一种数据处理方法,应用于执行神经网络模型的加速单元,所述加速单元包括:多个内存计算核、片内互联总线、内存读写电路和高速数字接口,所述内存计算核包括交叉矩阵、输入内存、矢量运算单元、输出内存和微控制器,所述多个内存计算核之间通过所述片内互联总线实现通信,所述方法包括:

确定执行所述神经网络模型的目标内存计算核以及所述目标内存计算核之间的数据传输路径;

根据所述数据传输路径,通过所述内存读写电路和所述高速数字接口将所述神经网络模型的图片数据加载到第一内存计算核的输入内存中;

通过所述第一内存计算核的交叉矩阵和所述第一内存计算核的矢量运算单元执行所述第一内存计算核的运算,得到所述第一内存计算核的激活数据;

通过所述第一内存计算核的输出内存缓存所述第一内存计算核的激活数据;所述第一内存计算核的激活数据为所述第一内存计算核的运算结束后得到的运算结果;

根据所述数据传输路径,通过所述内存读写电路和所述高速数字接口将所述第一内存计算核的激活数据加载到第二内存计算核的输入内存中,并通过所述第二内存计算核的交叉矩阵和所述第二内存计算核的矢量运算单元执行所述第二内存计算核的运算,得到所述第二内存计算核的激活数据,并缓存在所述第二内存计算核的输出内存中;其中,所述第一内存计算核和所述第二内存计算核属于所述目标内存计算核中的部分内存计算核,所述第一内存计算核的运算和所述第二内存计算核的运算属于所述神经网络模型的运算;

通过所述内存读写电路和所述高速数字接口将所述第二内存计算核的激活数据输出至所述神经网络模型,以使所述神经网络模型完成所述图片数据的处理过程。

可选地,所述通过所述第一内存计算核的交叉矩阵和所述第一内存计算核的矢量运算单元执行所述第一内存计算核的运算,得到所述第一内存计算核的激活数据,包括:

通过层内并行方法将所述神经网络模型的核矩阵映射到所述第一内存计算核的交叉矩阵中,通过所述第一内存计算核的交叉矩阵和所述图片数据进行卷积运算,得到所述第一内存计算核的卷积结果,通过所述第一内存计算核的矢量运算单元对所述卷积结果进行激活和池化运算,得到所述第一内存计算核的激活数据。

可选地,所述核矩阵包括多个权重矩阵,所述层内并行方法包括输入通道并行、输出通道并行、输入特征图并行和输出特征图并行。

可选地,所述通过层内并行方法将所述神经网络模型的核矩阵映射到所述第一内存计算核的交叉矩阵中,通过所述第一内存计算核的交叉矩阵和所述图片数据进行卷积运算,得到所述第一内存计算核的卷积结果,通过所述第一内存计算核的矢量运算单元对所述卷积结果进行激活和池化运算,得到所述第一内存计算核的激活数据,包括:

当所述层内并行方法为所述输入通道并行时,将所述图片数据和所述核矩阵的输入通道进行拆分,得到多个第一拆分矩阵,将所述多个第一拆分矩阵分别映射到所述第一内存计算核的交叉矩阵中,进行所述卷积运算、所述激活和池化运算,得到多个第一输出结果,将所述多个第一输出结果进行相加得到第一激活数据;

当所述层内并行方法为所述输出通道并行时,将所述多个权重矩阵分别映射到所述第一内存计算核的交叉矩阵中,进行所述卷积运算、所述激活和池化运算,得到多个第二输出结果,将所述多个第二输出结果进行拼接得到第二激活数据;

当所述层内并行方法为所述输入特征图并行时,将多个所述神经网络模型的核矩阵分别映射到所述第一内存计算核的交叉矩阵中,进行所述卷积运算、所述激活和池化运算,得到多个第三激活数据;

当所述层内并行方法为所述输出特征图并行时,将所述激活数据进行维度拆分,得到多个第二拆分矩阵,将所述多个第二拆分矩阵分别映射到所述第一内存计算核的交叉矩阵中,进行所述卷积运算、所述激活和池化运算,得到多个第四输出结果,将所述多个第四输出结果进行拼接得到第四激活数据;

将所述第一激活数据、所述第二激活数据、所述第三激活数据和所述第四激活数据作为所述第一内存计算核的激活数据。

可选地,所述将所述神经网络模型的核矩阵映射到所述第一内存计算核的交叉矩阵中,包括:

根据所述核矩阵的输出通道数量,将所述核矩阵映射到所述第一内存计算核的交叉矩阵的相邻列上。

可选地,所述核矩阵包括多个权重矩阵,在所述将所述神经网络模型的核矩阵映射到所述第一内存计算核的交叉矩阵中之后,所述方法还包括:

将映射后的所述多个权重矩阵在所述第一内存计算核的交叉矩阵上进行位置偏移。

可选地,所述将所述神经网络模型的图片数据加载到第一内存计算核的输入内存中,包括:

将所述图片数据中彼此相邻的像素加载到所述第一内存计算核的输入内存中;

或,将所述图片数据中不同的像素加载到所述第一内存计算核的输入内存中的一个存储基本单元中,并将包含所述图片数据的最后一个像素的存储基本单元的剩余位留空;所述图片数据中不同的像素属于同一行像素;

或,将所述图片数据中相同的像素加载到所述第一内存计算核的输入内存中的两个存储基本单元中,并将包含所述图片数据的最后一个像素存储基本单元的剩余位留空。

可选地,在所述根据所述数据传输路径,通过所述内存读写电路和所述高速数字接口将所述第一内存计算核的激活数据加载到第二内存计算核的输入内存中之前,所述方法还包括:

通过所述第一内存计算核的微控制器实现所述第一内存计算核的逻辑功能。

可选地,所述微控制器为基于精简指令集原则的开源指令集架构的内核,所述微控制器包括片内互联总线控制模块、直接内存访问模块、矩阵运算控制模块、矢量运算控制模块、外部总线模块核和内部总线模块。

可选地,所述通过所述第一内存计算核的微控制器实现所述第一内存计算核的逻辑功能,包括:

通过所述第一内存计算核的片内互联总线控制模块对所述片内互联总线进行配置,接收数据包并解析,发送数据包并打包,缓存数据,并与所述第一内存计算核的直接内存访问模块进行交互,将所述图片数据加载到所述第一内存计算核的输入内存中;

通过所述第一内存计算核的直接内存访问模块实现所述第一内存计算核的数据交互;

通过所述第一内存计算核的矩阵运算控制模块实现所述图片数据的加载、存储和计算;

通过所述第一内存计算核的矢量运算控制模块扩展所述第一内存计算核的算子。

可选地,所述直接内存访问模块包括第一内存访问模块和第二内存访问模块,所述通过所述第一内存计算核的直接内存访问模块实现所述第一内存计算核的数据交互,包括:

通过所述第一内存计算核的第一内存访问模块实现所述第一内存计算核和剩余内存计算核之间的数据交互;所述剩余内存计算核为所述目标内存计算核中除所述第一内存计算核的内存计算核;

通过所述第一内存计算核的第二内存访问模块实现所述第一内存计算核中的数据交互。

可选地,所述通过所述第一内存计算核的矢量运算控制模块扩展所述第一内存计算核的算子,包括:

通过所述第一内存计算核的矢量运算控制模块采用所述基于精简指令集原则的开源指令集架构的指令集编写扩展算子,以扩展所述第一内存计算核的算子;所述扩展算子为所述神经网络模型运算所需的算子,且为所述第一内存计算核不能实现的算子。

本发明实施例还公开了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口以及所述存储器通过所述通信总线完成相互间的通信;

所述存储器,用于存放计算机程序;

所述处理器,用于执行存储器上所存放的程序时,实现如本发明实施例所述的方法。

本发明实施例还公开了一种计算机程序产品,该程序产品被存储在存储介质中,该计算机程序产品被至少一个处理器执行以实现如本发明实施例所述的方法。

本发明实施例还公开了一种计算机可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如本发明实施例所述的方法。

本发明实施例包括以下优点:

本发明实施例提供了一种数据处理装置,包括:交叉矩阵、输入内存、矢量运算单元、输出内存和微控制器;所述输入内存用于存储所述数据处理装置需要进行所述运算操作的数据;所述交叉矩阵和所述矢量运算单元用于实现所述数据处理装置的运算操作;所述输出内存用于存储所述数据处理装置进行所述运算操作结束后得到的数据;所述微控制器用于实现所述数据处理装置的逻辑功能。本发明实施例通过该数据处理装置,可以实现将存储单元和计算单元放置在一个装置中,避免了计算单元算力高,数据传输带宽有限的矛盾,以省去外部存储器和处理器间的数据传输,因此大幅度降低了计算时间复杂度。

本发明实施例提供了一种数据处理方法,应用于数据处理装置,通过所述输入内存存储所述数据处理装置需要进行运算操作的数据;通过所述交叉矩阵和所述矢量运算单元执行所述数据处理装置的所述运算操作;通过所述输出内存存储所述数据处理装置进行所述运算操作结束后得到的数据;通过所述微控制器实现所述输入内存的数据存储,将所述输入内存中的数据发送至所述交叉矩阵和所述矢量运算单元中以进行所述运算操作,将进行所述运算操作结束后得到的数据发送至所述输出内存中进行数据存储。本发明实施例通过该数据处理方法,可以实现通过一个装置实现数据的存储和计算,避免了计算单元算力高,数据传输带宽有限的矛盾,以省去外部存储器和处理器间的数据传输,因此大幅度降低了计算时间复杂度。

本发明实施例提供了一种用于神经网络模型执行的加速单元,包括:多个内存计算核、片内互联总线、内存读写电路和高速数字接口,所述内存计算核包括交叉矩阵、输入内存、矢量运算单元、输出内存和微控制器;所述多个内存计算核之间通过所述片内互联总线实现通信;所述内存读写电路和所述高速数字接口用于将输入数据加载到所述内存计算核的输入内存中;所述交叉矩阵和所述矢量运算单元用于执行所述神经网络模型的运算;所述输出内存用于缓存所述交叉矩阵和所述矢量运算单元执行所述神经网络模型的运算后得到的输出数据;通过所述片内互联总线将所述内存计算核得到的输出数据作为所述输入数据,加载到下一内存计算核的输入内存中;所述微控制器用于实现所述内存计算核的逻辑功能。本发明实施例通过该加速单元,将执行神经网络模型的运算的多个内存计算核集成在一个加速单元中,不仅可以实现将存储单元和计算单元放置在内存计算核中,还可以实现多个内存计算核之间的数据传输,避免了计算单元算力高,数据传输带宽有限的矛盾,以省去外部存储器和处理器间的数据传输,因此不仅大幅度降低了计算时间复杂度,还加速神经网络模型的执行。

本发明实施例提供了一种数据处理方法,应用于执行神经网络模型的加速单元,确定执行所述神经网络模型的目标内存计算核以及所述目标内存计算核之间的数据传输路径;根据所述数据传输路径,通过所述内存读写电路和所述高速数字接口将所述神经网络模型的图片数据加载到第一内存计算核的输入内存中;通过所述第一内存计算核的交叉矩阵和所述第一内存计算核的矢量运算单元执行所述第一内存计算核的运算,得到所述第一内存计算核的激活数据;通过所述第一内存计算核的输出内存缓存所述第一内存计算核的激活数据;所述第一内存计算核的激活数据为所述第一内存计算核的运算结束后得到的运算结果;根据所述数据传输路径,通过所述内存读写电路和所述高速数字接口将所述第一内存计算核的激活数据加载到第二内存计算核的输入内存中,并通过所述第二内存计算核的交叉矩阵和所述第二内存计算核的矢量运算单元执行所述第二内存计算核的运算,得到所述第二内存计算核的激活数据,并缓存在所述第二内存计算核的输出内存中;其中,所述第一内存计算核和所述第二内存计算核属于所述目标内存计算核中的部分内存计算核,所述第一内存计算核的运算和所述第二内存计算核的运算属于所述神经网络模型的运算;通过所述内存读写电路和所述高速数字接口将所述第二内存计算核的激活数据输出至所述神经网络模型,以使所述神经网络模型完成所述图片数据的处理过程。本发明实施例通过该数据处理方法,可以通过内存计算(IMC,In-Memory Computing),执行神经网络模型的卷积层操作,由于在内存中计算,所以内存中保存了神经网络模型的权重和输入图片(或中间计算得到的激活数据),省去了外部存储器和处理器间的数据传输,因此大幅度降低了计算时间复杂度。通过加速单元结构内部的内存计算核(IMC core)执行神经网络模型的运算,在执行运算过程中,中间结果必须缓存在内存计算核的本地存储器,通过将中间计算得到的激活数据传输到下一内存计算核中,优化了加速单元结构内部的数据流,有效地处理数据,通过加速单元可以实现神经网络模型的高吞吐量、高效率执行,进而加速神经网络模型的运算过程。

附图说明

图1(a)是传统的卷积神经网络计算方式的示意图;

图1(b)是本发明实施例中提供的一种内存计算方案的示意图;

图2是本发明实施例中提供的一种数据处理装置的结构示意图;

图3是本发明实施例中提供的一种数据处理方法的步骤流程图;

图4是本发明实施例中提供一种用于神经网络模型执行的加速单元

图5是本发明实施例中提供的多个内存计算核之间的通信示意图;

图6是本发明实施例中提供的一种数据处理方法的步骤流程图;

图7是一个简单的卷积神经网络计算过程的示意图;

图8是本发明实施例中提供的一种以两个卷积层映射到两个内存计算核中的示意图;

图9是一个神经网络模型对n个批次输入进行流水并行推理的示意图;

图10是本发明实施例提供的四种层内并行方法的示意图;

图11是一种核矩阵在交叉矩阵上的映射的示意图;

图12是本发明实施例中提供的一个输入特征图和核权重的卷积的示意图;

图13是本发明实施例中提供的一种核矩阵在交叉矩阵上的映射的示意图;

图14是本发明实施例中提供的数据存储方式的示意图;

图15是本发明实施例中提供的一种微控制器的功能模块示意图;

图16是本发明实施例中提供的一种加速单元的计算过程的示意图;

图17是实现本发明各个实施例的一种电子设备的硬件结构示意图;

图18是本发明实施例中提供的一种计算机可读介质的示意图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

内存计算(IMC)是一种非冯诺依曼范式,最近已成为深度学习应用中很有发展前途的节能、高吞吐量的一种硬件。IMC的一个突出应用是通过将神经网络层的突触权重映射到以IMC为核心的设备上以O(1)时间复杂度执行矩阵矢量乘法。然而,由于与其他硬件的计算方式有明显的不同,用IMC设计深度学习硬件时需要重新设计架构。本发明专注于卷积神经网络(CNN,Convolutional Neural Networks)推理的特定应用IMC core,并提供用于实现IMC core的各种架构组件的方法及在这些架构组件上部署卷积神经网络并加速计算的方法。

卷积神经网络通常由多个卷积层组成,每个卷积层包含卷积运算、激活运算、池化运算等,乘加运算是主要运算,占总计算量的90%以上。此例虽然是比较简单的网络,但代表性很强,复杂的模型通常是由这些简单的网络通过不同类型的叠加而成,核心算法依然是矩阵乘的乘加运算。

卷积运算的特点:

运算类型单一,乘加运算为主,其他类型计算占比很小;

模型共享:卷积神经网络模型被多张图片共享,即推理过程中模型不变,图片不断变换,易于实现多张图片并行计算;

图片共享:当前卷积层的输入feature(特征)数据被当前卷积层的所有的kernel(卷积核)共享,每个卷积层(Convolution layer)只需加载一次feature数据;

每个卷积层中每个kernel与feature的运算都是独立的,kernel之间不具有相关性,很容易实现kernel的并行运算;

每个kernel与feature计算时,每个输出结果是kernel与位置相对应的部分feature数据乘加运算得到的,因此,可以将feature划分为多个部分,同时与同一个kernel做卷积运算,实现feature的并行运算;

由以上特点可知,卷积神经网络的计算特别适合大规模并行运算。

参照图1(a)示出了传统的卷积神经网络计算方式的示意图,处理器从外部存储器里读取输入图片(X)和突触权重(w)(或中间得到的激活数据b),缓存到处理的高速缓冲存储器(Cache)里,处理器的运算整列,完成Y=w*X+b的计算后,将处理结果存回外部存储器里。根据前文所述,卷积神经网络的核心运算为矩阵乘的乘加运算。传统AI处理器提升算力的方法即在芯片中堆叠大量的乘加运算单元(PE),以适应卷积神经网络的大规模乘加运算,但是与此同时,所需要的乘数和被乘数也剧烈增加,导致数据传输带宽不满足需求,即数据传输的矛盾之处。

为了解决这个问题,参照图1(b),示出了本发明实施例中提供的一种内存计算方案的示意图,利用一组基于电阻或基于电荷的存储器件,例如忆阻器,通过将这些设备组织在交叉矩阵配置中,内存计算相当于将图1(a)中的PE计算整列集成到图1(b)中。根据它们的物理属性,可以以O(1)时间复杂度执行矩阵矢量乘法,这与传统架构的O(N^2)截然不同。由于在内存中计算,而内存中保存了卷积神经网络的核权重和输入图片(或中间计算得到的处理结果),省去了外部存储器和处理器间的数据传输,因此计算时间复杂度大幅度降低。其中,内存计算(IMC0)通过引脚和芯片进行连接。

参照图2,示出了本发明实施例中提供的一种数据处理装置的结构示意图,所述装置具体包括了交叉矩阵、输入内存、矢量运算单元、输出内存和微控制器。本发明实施例中的数据处理装置即内存计算核(IMC core)。

所述输入内存用于存储所述数据处理装置需要进行运算操作的数据;

所述交叉矩阵和所述矢量运算单元用于实现所述数据处理装置的运算操作;

所述输出内存用于存储所述数据处理装置进行所述运算操作结束后得到的数据;

所述微控制器用于实现所述数据处理装置的逻辑功能。

本发明实施例通过该数据处理装置,可以实现将存储单元和计算单元放置在一个装置中,避免了计算单元算力高,数据传输带宽有限的矛盾,以省去外部存储器和处理器间的数据传输,因此大幅度降低了计算时间复杂度。

参照图3,示出了本发明实施例中提供的一种数据处理方法的步骤流程图,应用于图2的数据处理装置,所述方法包括:

步骤301、通过所述输入内存存储所述数据处理装置需要进行运算操作的数据;

步骤302、通过所述交叉矩阵和所述矢量运算单元执行所述数据处理装置的所述运算操作;

步骤303、通过所述输出内存存储所述数据处理装置进行所述运算操作结束后得到的数据;

步骤304、通过所述微控制器实现所述输入内存的数据存储,将所述输入内存中的数据发送至所述交叉矩阵和所述矢量运算单元中以进行所述运算操作,将进行所述运算操作结束后得到的数据发送至所述输出内存中进行数据存储。

本发明实施例通过该数据处理方法,可以实现通过一个装置实现数据的存储和计算,避免了计算单元算力高,数据传输带宽有限的矛盾,以省去外部存储器和处理器间的数据传输,因此大幅度降低了计算时间复杂度。

参照图4,示出了本发明实施例中提供的一种用于神经网络模型执行的加速单元,包括:多个内存计算核、片内互联总线、内存读写电路和高速数字接口,所述内存计算核包括交叉矩阵、输入内存、矢量运算单元、输出内存和微控制器;本发明实施例中的加速单元即人工智能芯片(AI processor)。

所述多个内存计算核之间通过所述片内互联总线实现通信;

所述内存读写电路和所述高速数字接口用于将输入数据加载到所述内存计算核的输入内存中;具体的,IMC core与外部的数据交换通过高速数字接口和内存读写电路实现的,这部分的功能与DDR(Double Data Rate,双倍数据速率)相似,实现与外部数据的高速交互。

所述交叉矩阵和所述矢量运算单元用于执行所述神经网络模型的运算;所述输出内存用于缓存所述交叉矩阵和所述矢量运算单元执行所述神经网络模型的运算后得到的输出数据;通过所述片内互联总线将所述内存计算核得到的输出数据作为所述输入数据,加载到下一内存计算核的输入内存中;所述微控制器用于实现所述内存计算核的逻辑功能。

本发明实施例通过该加速单元,将执行神经网络模型的运算的多个内存计算核集成在一个加速单元中,不仅可以实现将存储单元和计算单元放置在内存计算核中,还可以实现多个内存计算核之间的数据传输,避免了计算单元算力高,数据传输带宽有限的矛盾,以省去外部存储器和处理器间的数据传输,因此不仅大幅度降低了计算时间复杂度,还加速神经网络模型的执行。

在本发明实施例中,加速单元的核心是IMC core,IMC core围绕执行矩阵矢量乘法的交叉矩阵构建,并具有用于CNN所需附加功能的外围电路。如图2所示,IMC core由交叉矩阵、输入内存、矢量运算单元、输出内存和微控制器组成。交叉矩阵是存算一体的,可以是基于SRAM(Static Random-Access Memory,静态随机存取存储器)、DRAM(Dynamic Random-Access Memory,动态随机存取存储器)、FLASH(Flash Memory,闪存)、ReRAM(ResistiveRandom-Access Memory,阻变随机存取存储器)、PCM(Phase-Change Memory,相变存储器)、FeFET(Ferroelectric Field-Effect Transistor,铁电场效应晶体管)、MRAM(Magnetoresistive Random-Access Memory,磁阻随机存取存储器)等不同的媒介,实现矩阵乘的乘加运算(即卷积层中的卷积运算)。输入内存用于缓存输入图片数据或上一层计算得到的激活数据,矢量运算单元则是实现高效的激活、池化运算(卷积层中的非线性运算),输出内存缓存当前IMC core的计算结果。整个IMC core的逻辑控制由微控制器(MC)实现,MC为开源的riscv(基于精简指令集原则的开源指令集架构)内核,实现的功能有:缓存并译码控制指令;实现与片内互联总线(NOC)连接,实现其他模块与输入内存/输出内存的数据交换;控制存算阵列和矢量运算单元的运算。

参照图5,示出了本发明实施例中提供的多个内存计算核之间的通信示意图,具体是通过片内互联总线实现通信。

参照图6,示出了本发明实施例中提供的一种数据处理方法的步骤流程图,所述方法包括:

步骤601、确定目标内存计算核以及目标内存计算核之间的数据传输路径;

在本发明实施例的加速单元结构中,根据神经网络模型的输入数据的大小确定需要用到加速单元内部多少个内存计算核,因此在IMC core进行运算前需要确定本次神经网络模型进行推理所需的目标内存计算核,并且为了提高神经网络模型推理的效率,可以提前确定目标内存计算核之间的数据传输路径。

步骤602、根据所述数据传输路径,通过所述内存读写电路和所述高速数字接口将所述神经网络模型的图片数据加载到第一内存计算核的输入内存中;

在本发明实施例中的神经网络模型,可以是卷积神经网络,也可以是其他深度学习的神经网络模型,为方便后续方案的描述,将神经网络模型定义为卷积神经网络。

卷积神经网络的运算输入有两部分:图片数据和突触权重(由神经网络模型训练所得的常量,也称为神经网络模型数据)。使用本发明实施例中的加速单元进行卷积神经网络的运算时,首先需要将图片数据通过高速数字接口和内存读写电路加载到第一个IMCcore的输入内存中。

步骤603、通过所述第一内存计算核的交叉矩阵和所述第一内存计算核的矢量运算单元执行所述第一内存计算核的运算,得到所述第一内存计算核的激活数据;

卷积神经网络架构通常由一系列互连层组成,每层由可学习参数和通常一个激活函数定义。激活函数的结果称为激活。顾名思义,CNN的每一层都对激活执行卷积。卷积层将大小为Hin *Win*Cin的特征图输入量转换为大小为Hout*Wout*Cout的特征图输出量。除非另有说明,本发明中考虑Hin=Hout=H和Win=Wout= W的输入和输出量。此处需注意,这些假设不会影响一般性,因为对于涉及池化、跨步和填充的层,在设计各种架构选择时遵循的方法将保持不变。此外,我们将沿H和W标记的平面的激活称为位于(H,W)平面上。

每个卷积层由许多点积组成。具体来说,位于(H,W)平面中的每个输出元素都是由大小为F1*F2*Cin的输入元素与该层的相同大小的参数矩阵(也称为内核)之间的点积运算得到的。通过应用Cout不同的核权重来执行Cout次点积,以获得输出数据的所有Cout输出通道。矩阵矢量乘法的结果称为预激活。在对内核权重进行操作之后,产生的预激活会经历后处理,通常涉及加法和乘法缩放,称为批量归一化和非线性激活函数。考虑到上述操作,将上一层的激活转换为下一层预激活的矩阵矢量乘法特别适合IMC core,而预激活的后续操作更适合标准数字处理单元。

在卷积神经网络中,每层卷积层结构一致,都是由卷积运算和其他非线性运算组成。在本发明实施例中,通过IMC core实现卷积层的功能,需要通过交叉矩阵实现矩阵乘的乘加运算(即卷积层中的卷积运算),还需要通过矢量运算单元实现高效的激活、池化运算(卷积层中的非线性运算),即可以理解为本发明实施例中的交叉矩阵得到的结果为与激活,通过矢量运算单元对产生的预激活进行后处理。

为实现在交叉矩阵中实现卷积层的卷积运算,需要将卷积神经网络的核权重搬移到IMC core中,在本发明实施例中可以通过将卷积神经网络的核权重映射到IMC core的交叉矩阵中。本发明实施例解决了传统AI芯片架构中计算模块与数据存储模块分离导致的芯片算力与总线带宽的矛盾,使用存算一体的IMC结构,只需将卷积神经网络的核权重搬移到IMC CORE中即可直接运算,不需要再次把核权重搬移到计算单元(即避开了冯诺依曼瓶颈),解决了芯片算力受总线带宽制约的限制。

步骤604、通过所述第一内存计算核的输出内存缓存所述第一内存计算核的激活数据;所述第一内存计算核的激活数据为所述第一内存计算核的运算结束后得到的运算结果;

在本发明实施例中,当第一内存计算核的交叉矩阵和矢量运算单元完成卷积层的运算后,会得到第一内存计算核相对应的激活数据(即第一内存计算核的计算结果),此时,需要将该计算结果缓存在第一内存计算核的输出内存中。

步骤605、根据所述数据传输路径,通过所述内存读写电路和所述高速数字接口将所述第一内存计算核的激活数据加载到第二内存计算核的输入内存中,并通过所述第二内存计算核的交叉矩阵和所述第二内存计算核的矢量运算单元执行所述第二内存计算核的运算,得到所述第二内存计算核的激活数据,并缓存在所述第二内存计算核的输出内存中;其中,所述第一内存计算核和所述第二内存计算核属于所述目标内存计算核中的部分内存计算核;

与冯-诺依曼计算范式相反,IMC认为矩阵矢量乘法的一个操作数是物理实例化并准备执行的。在推理CNN的情况下,矩阵矢量乘法的两个操作数如上所述是激活数据和核权重。基于IMC的硬件功能固有,每一层卷积层的核权重在 IMC 内核中的计算内存设备上物理实例化,并在执行期间固定在其分配的内存计算核上。这与冯-诺依曼硬件模型形成鲜明对比,在冯-诺依曼硬件模型中,每一层卷积层的核权重必须从内存中获取,并且不能同时使用。因此,为了提高 IMC core的利用率,我们原则上希望跨层并行化操作。CNN是一类特别适合这种特定并行化的神经网络,因为正如前面部分所述,与其他类神经网络相反,每个卷积层的矩阵矢量运算仅取决于前一个卷积层或多个卷积层产生的像素总体的子集(即中间计算得到的激活数据)。在本发明实施例中,提出了一种通过流水线跨不同层的矩阵矢量乘法来执行此类网络推理的方法。

假设有一个通过通信结构互连的IMC core阵列。从根本上说,数据流意味着每个IMC core独立运行,从与其互连的IMC core接收像素,并在收到足够多的像素后根据它正在执行的卷积层的参数触发自己的计算。计算完成后,它将向需要它的IMC core提供数据。数据流的执行将在很大程度上取决于互连IMC core阵列的通信结构。本发明中使用了高速的片内互联总线NOC,该结构允许任何IMC core通过点对点连接与任何其他IMC core进行通信,以获取IMC core需要的数据。

因此,在本发明实施例中,在得到第一内存计算核相对应的激活数据(即第一内存计算核的计算结果)之后,不仅需要该计算结果缓存在第一内存计算核的输出内存中,还需要加载到第二内存计算核的输入内存中,重复第一内存计算核的计算过程。

参照图7,示出了一个简单的卷积神经网络计算过程的示意图,包含了两个卷积层(卷积运算+非线性运算)和一个全连接层(平铺),其中非线性运算包括激活和池化。

参照图8,示出了本发明实施例中提供的一种以两个卷积层映射到两个内存计算核中的示意图,具体是将核权重w(突触权重,由神经网络模型训练所得的常量,也称为神经网络模型数据)加载到第一内存计算核和第二内存计算核的交叉矩阵中,将图片数据(或上一层卷积层运算得到的激活数据)加载到第一内存计算核的输入内存中,由微控制器控制卷积时序,完成卷积运算,然后将计算结果在矢量运算单元中完成激活和池化运算,得到激活数据,将激活数据缓存在第一内存计算和的输出内存中,第二内存计算核完成第二个卷积层的运算,将第一内存计算核对应的激活数据缓存到输入内存中,重复第一内存计算核的计算过程。

需要注意的是,内存计算核的数量和卷积层的数量并不是绝对的关系,内存计算核的数量具体需要根据卷积层需要处理的数据量以及内存计算核决定,有可能一个内存计算核可以处理多层卷积层,也有可能一层卷积层需要多个内存计算核才能实现。也即,第一内存计算核和第二内存计算核中的“第一”和“第二”仅用于表示内存计算核之间的数据流的先后顺序,并非用于表示内存计算核的数量。

参照图9,示出了一个神经网络模型对n个批次输入进行流水并行推理的示意图。假设此时的卷积神经网络包含n层计算层(包括卷积层和全连接层,或其他矩阵乘层),将CNN模型内核部署在第一行的n个集成内存计算(IMC)单元上;其他行的IMC单元,重复第一行IMC单元加载的核权重,如图6所示。IMC单元的行数即输入图片的批次大小。使用流水并行的方法,即可同时推理n个批次(每个批次的大小是rows number)的图片。大致过程为:在时钟步骤0时,第一列IMC单元只推理批次0输入图片的第一层;步骤1时,第一列IMC单元开始推理下一个批次的输入图片,而第二列IMC单元开始推理批次0的第二层;以此类推至最后一列IMC单元,步骤n时,第n列IMC单元推理的是批次0图片的最后一层。

本发明实施例与冯诺依曼结构最大的差别是存算一体,且每个IMC上有单独的输入内存、输出内存和逻辑控制模块,这种架构使得AI芯片不需花费大量的时间加载庞大的卷积神经网络的同时,还可灵活配置多个IMC core之间的关系,从而使得AI芯片更加灵活,如上举例为一种神经网络模型在AI芯片上的流水并行。除此之外,如果内存空间允许,可以加载多个神经网络模型并行执行或流水线执行。

步骤606、通过所述内存读写电路和所述高速数字接口将所述第二内存计算核的激活数据输出至所述神经网络模型,以使所述神经网络模型完成所述图片数据的处理过程。

如图8所示,假设第二内存计算核完成计算过程后即完成了卷积神经网络中所有卷积层的运算,此时会得到第二内存计算核对应的激活数据,为了让卷积神经网络完成剩余的运算,需要将第二内存计算核对应的激活数据发送至卷积神经网络中,以使卷积神经网络继续完成对于输入的图片数据的处理过程。

本发明实施例中的加速单元结构,适用于卷积神经网络,解决了传统AI芯片架构中计算模块与数据存储模块分离导致的芯片算力与总线带宽的矛盾,使用存算一体的IMC结构,只需将卷积神经网络的核权重搬移到IMC CORE中即可直接运算,不需要再次把核权重搬移到计算单元(即避开了冯诺依曼瓶颈),解决了芯片算力受总线带宽制约的限制。

本发明实施例提供了一种数据处理方法,应用于执行神经网络模型的加速单元,确定执行所述神经网络模型的目标内存计算核以及所述目标内存计算核之间的数据传输路径;根据所述数据传输路径,通过所述内存读写电路和所述高速数字接口将所述神经网络模型的图片数据加载到第一内存计算核的输入内存中;通过所述第一内存计算核的交叉矩阵和所述第一内存计算核的矢量运算单元执行所述第一内存计算核的运算,得到所述第一内存计算核的激活数据;通过所述第一内存计算核的输出内存缓存所述第一内存计算核的激活数据;所述第一内存计算核的激活数据为所述第一内存计算核的运算结束后得到的运算结果;根据所述数据传输路径,通过所述内存读写电路和所述高速数字接口将所述第一内存计算核的激活数据加载到第二内存计算核的输入内存中,并通过所述第二内存计算核的交叉矩阵和所述第二内存计算核的矢量运算单元执行所述第二内存计算核的运算,得到所述第二内存计算核的激活数据,并缓存在所述第二内存计算核的输出内存中;其中,所述第一内存计算核和所述第二内存计算核属于所述目标内存计算核中的部分内存计算核,所述第一内存计算核的运算和所述第二内存计算核的运算属于所述神经网络模型的运算;通过所述内存读写电路和所述高速数字接口将所述第二内存计算核的激活数据输出至所述神经网络模型,以使所述神经网络模型完成所述图片数据的处理过程。

本发明实施例通过该数据处理方法,可以通过内存计算(IMC,In-MemoryComputing),执行神经网络模型的卷积层操作,由于在内存中计算,所以内存中保存了神经网络模型的权重和输入图片(或中间计算得到的激活数据),省去了外部存储器和处理器间的数据传输,因此大幅度降低了计算时间复杂度。通过加速单元结构内部的内存计算核(IMC core)执行神经网络模型的运算,在执行运算过程中,中间结果必须缓存在内存计算核的本地存储器,通过将中间计算得到的激活数据传输到下一内存计算核中,优化了加速单元结构内部的数据流,有效地处理数据,通过加速单元可以实现神经网络模型的高吞吐量、高效率执行,进而加速神经网络模型的运算过程。

在本发明的一种实施例中,所述步骤603、通过所述第一内存计算核的交叉矩阵和所述第一内存计算核的矢量运算单元执行所述第一内存计算核的运算,得到所述第一内存计算核的激活数据,包括:

通过层内并行方法将所述神经网络模型的核矩阵映射到所述第一内存计算核的交叉矩阵中,通过所述第一内存计算核的交叉矩阵和所述图片数据进行卷积运算,得到所述第一内存计算核的卷积结果,通过所述第一内存计算核的矢量运算单元对所述卷积结果进行激活和池化运算,得到所述第一内存计算核的激活数据。所述核矩阵包括多个权重矩阵,所述层内并行方法包括输入通道并行、输出通道并行、输入特征图并行和输出特征图并行。

在卷积神经网络中,每层卷积层结构一致,都是由卷积运算和其他非线性运算组成。在本发明实施例中,通过IMC core实现卷积层的功能,需要通过交叉矩阵实现矩阵乘的乘加运算(即卷积层中的卷积运算),还需要通过矢量运算单元实现高效的激活、池化运算(卷积层中的非线性运算),即可以理解为本发明实施例中的交叉矩阵得到的结果为与激活,通过矢量运算单元对产生的预激活进行后处理。

为实现在交叉矩阵中实现卷积层的卷积运算,需要将卷积神经网络的核权重搬移到IMC core中,在本发明实施例中可以通过将卷积神经网络的核权重映射到IMC core的交叉矩阵中。本发明实施例解决了传统AI芯片架构中计算模块与数据存储模块分离导致的芯片算力与总线带宽的矛盾,使用存算一体的IMC结构,只需将卷积神经网络的核权重搬移到IMC CORE中即可直接运算,不需要再次把核权重搬移到计算单元(即避开了冯诺依曼瓶颈),解决了芯片算力受总线带宽制约的限制。

根据前述卷积神经网络的特点,设计了适合本发明实施例中的AI芯片架构的层内并行方法,层内并行方法是指在某一个卷积层内部的运算,CNN通常由多个卷积层组成,而层间并行方法则是指多个卷积层同时并行运算。层内并行方法包括输入通道并行、输出通道并行、输入特征图并行和输出特征图并行四种并行方法。

通过上述论述,可以证明本发明实施例中提供的AI芯片架构可灵活多变的映射CNN网络,适用于各种各样的CNN网络或自然语言(NLP)神经网络模型推理或训练运算。这种灵活性,可以实现卷积运算的各种并行化运算方法,也即前述的四种层内并行方法。

在本发明的一种实施例中,所述通过层内并行方法将所述神经网络模型的核矩阵映射到所述第一内存计算核的交叉矩阵中,通过所述第一内存计算核的交叉矩阵和所述图片数据进行卷积运算,得到所述第一内存计算核的卷积结果,通过所述第一内存计算核的矢量运算单元对所述卷积结果进行激活和池化运算,得到所述第一内存计算核的激活数据,包括:

当所述层内并行方法为所述输入通道并行时,将所述图片数据和所述核矩阵的输入通道进行拆分,得到多个第一拆分矩阵,将所述多个第一拆分矩阵分别映射到所述第一内存计算核的交叉矩阵中,进行所述卷积运算、所述激活和池化运算,得到多个第一输出结果,将所述多个第一输出结果进行相加得到第一激活数据;

当所述层内并行方法为所述输出通道并行时,将所述多个权重矩阵分别映射到所述第一内存计算核的交叉矩阵中,进行所述卷积运算、所述激活和池化运算,得到多个第二输出结果,将所述多个第二输出结果进行拼接得到第二激活数据;

当所述层内并行方法为所述输入特征图并行时,将多个所述神经网络模型的核矩阵分别映射到所述第一内存计算核的交叉矩阵中,进行所述卷积运算、所述激活和池化运算,得到多个第三激活数据;

当所述层内并行方法为所述输出特征图并行时,将所述激活数据进行维度拆分,得到多个第二拆分矩阵,将所述多个第二拆分矩阵分别映射到所述第一内存计算核的交叉矩阵中,进行所述卷积运算、所述激活和池化运算,得到多个第四输出结果,将所述多个第四输出结果进行拼接得到第四激活数据;

将所述第一激活数据、所述第二激活数据、所述第三激活数据和所述第四激活数据作为所述第一内存计算核的激活数据。

参照图10,示出了本发明实施例提供的四种层内并行方法的示意图。四种层内并行方法的具体描述如下:

输入通道并行:如图10所示,将输入特征图的通道拆分为两部分,对应的核矩阵通道也拆分为2部分,即输入特征图和核矩阵的通道都拆分为C/2,分别映射到不同的内存计算核上,将不同的输出结果做加法即可得到最终的激活数据(特征图);

输出通道并行:如图10所示,将不同的核矩阵映射到不同的内存计算核上,每个核矩阵生成一个通道的输出,最后将不同的输出特征图拼接在一起可得到最终的激活数据(特征图);

输入特征图并行:如图10所示,即多个神经网络模型(卷积神经网络)重复多次布置在芯片上,多个神经网络模型同时运算(推理);

输出特征图并行:如图10所示,将输出特征图在H或W维度拆分为多份,同时在多个内存计算核上运算(推理),最后将不同的输出特征图拼接在一起可得到最终的激活数据(特征图)。

通过以上四种层内并行方法,可以提高卷积神经网络的处理效率,进而加速卷积神经网络的推理过程。

在本发明的一种实施例中,所述将所述神经网络模型的核矩阵映射到所述第一内存计算核的交叉矩阵中,包括:

根据所述核矩阵的输出通道数量,将所述核矩阵映射到所述第一内存计算核的交叉矩阵的相邻列上。

核权重(也称为突触权重)负责矩阵矢量乘法,组成一个卷积层。在本发明实施例中,将大小为F1*F2*Cin*Cout的核权重总体矩阵称为核矩阵。另外,为了简洁起见,将所有通道中(H,W)平面中一个位置的激活称为一个像素。

参照图11,示出了一种核矩阵在交叉矩阵上的映射的示意图,不失一般性,假设一个内核权重可映射到一个计算存储设备上,考虑到DNN中权重的常见精度要求以及内存提供的有效精度,对内存计算核来讲这是一个合理的假设。然而,本发明实施例中可以轻松扩展到将单个核权重映射到多个设备上的情况。根据这种映射方法,核矩阵被展开,使得与一个输出通道相关联的核权重沿着交叉矩阵的一列放置。这样,核矩阵的输出通道列被映射到交叉矩阵的相同数量的相邻列上。基于这种物理布局,如执行一个矩阵矢量乘法:首先,从输入内存中检索的输入数据(图片数据或激活数据)被展开并提供在交叉矩阵的输入行处,与内核矩阵的相应行匹配。然后,从每一列读回单个通道的预激活(即卷积结果)并将其转换为数字值(IMC实现卷积的本质是数模转换,模拟信号叠加,模数转换)。预激活随后将进行数字处理(激活和池化),原则上实现非线性函数和所需的任何其他数字处理。

在本发明的一种实施例中,所述核矩阵包括多个权重矩阵,在所述将所述神经网络模型的核矩阵映射到所述第一内存计算核的交叉矩阵中之后,所述方法还包括:

将映射后的所述多个权重矩阵在所述第一内存计算核的交叉矩阵上进行位置偏移。

从根本上来说,将核矩阵映射到交叉矩阵的问题是将(F1*F2*Cin)*Cout元素的形状映射到由计算内存元素组成的固定大小的网格上。在图10中,先将某个权重核矩阵铺开为F*F*C_I的一维矩阵,然后映射到交叉矩阵上。尽管F1、F2、Cin、Cout参数随层和网络的不同而变化,但用于图像分类的最先进的CNN通常F1=F2。根据这一评估,本发明实施例将F1=F2=3且Cin=Cout,这是CNN架构中最常见的超参数集。关于交叉矩阵的维数,实际实现似乎采用正方形大小,主要是为了通用性以及在矩阵也设计用于训练DNN的情况下执行反向读取操作的可能性。基于这些考虑,核矩阵通常看起来具有等于F1*F2=9的纵横比(即行大小为F*F*C,而列大小为C,它们需要的行比列多9倍),并且映射到纵横比等于1的交叉矩阵网格上,这意味着在CNN执行期间,大量交叉开关矩阵设备最终将被取消映射,因此未被利用,此时通过复制核矩阵来并行化卷积层计算的方法来避免这个问题。对于一个卷积层我们将内核矩阵的多个副本映射到交叉矩阵上,以便并行执行同一层的多个矩阵矢量乘法。映射到交叉开关阵列上的内核副本的数量实际上代表了可以在阵列上并行执行的点积的数量。因此,内核副本的数量相当于点积的并行度。

参照图12,示出了本发明实施例中提供的一个输入特征图和核权重的卷积的示意图,具体是一个4*4*C_I的输入特征图与3*3*C_I的权重核的卷积,步长为1时,卷积分共有4步,生成一个2*2*1的输出特征图,这种情况下可将3个内核副本共4个内核映射到交叉矩阵上,此时1步卷积计算即可完成,因为此时并行度为4,1步内处理了4个卷积运算。这种方法提升了交叉矩阵的列利用率,进而提升内存计算核的运算效率,加速神经网络模型的推理过程,这也是典型的面积换时间的手段。

参照图13,示出了本发明实施例中提供的一种核矩阵在交叉矩阵上的映射的示意图。因为卷积运算还需要输入特征图数据,所以特征图在交叉矩阵上的映射相同,将内核权重对应的做卷积运算的输入特征图数据铺展开为F*F*C_I的一维数据,映射到相应的内核权重对应的交叉矩阵的位置,保证卷积运算的输入feature与内核权重是正确对应的。根据图10所示的卷积过程,两步卷积对应的输入特征图数据是有一部分重叠的,如图11所示,重叠了2*3*C_I的数据,所以当前的卷积运算可以复用一部分上一步卷积运算的输入特征图数据,此时为了复用输入特征图数据,将当前的权重映射做对应行的偏移,如图12所示,偏移了1*3*C_I行,意味着本次卷积复用了上一步的2*3*C_I的特征图数据,只需要重新读取1*3*C_I的新的特征图数据即可,解决了交叉矩阵不能充分利用的问题。

在本发明实施例中,设计了内存计算核中卷积核权重的映射方法,这种映射方法可以根据内存计算核的交叉矩阵的规模设计合适的并行都,提高计算效率。另外,输入特征图数据的服用减少了数据读取的时间,进一步提高了计算效率。

在本发明的一种实施例中,所述将所述神经网络模型的图片数据加载到第一内存计算核的输入内存中,包括:

将所述图片数据中彼此相邻的像素加载到所述第一内存计算核的输入内存中;

或,将所述图片数据中不同的像素加载到所述第一内存计算核的输入内存中的一个存储基本单元中,并将包含所述图片数据的最后一个像素的存储基本单元的剩余位留空;所述图片数据中不同的像素属于同一行像素;

或,将所述图片数据中相同的像素加载到所述第一内存计算核的输入内存中的两个存储基本单元中,并将包含所述图片数据的最后一个像素存储基本单元的剩余位留空。

数据存储在IMC core的输入内存中。输入内存的目的是缓存像素,这些像素是在交叉矩阵上执行的矩阵矢量乘法的输入矢量。在每个时间步,如果满足计算条件,每个IMCcore必须获取给定数量的像素并将它们提供给交叉矩阵接口以计算矩阵矢量乘法。此外,IMC core可能必须存储从其他IMC core接收的像素。我们假设输入内存是静态随机存取存储器(SRAM),在ASIC中SRAM通常用在cache之后。

一般来说,对于步长等于1的层的流水线操作,在每个时间节点IMC core必须获取等于内核大小的像素数,并存储从前一层(IMC core)接收的一个像素。像素的逻辑放置指的是算法要求的数据流要求的数据排列,本地内存中的物理放置则是内存里数据的存放顺序。鉴于像素获取模式与输入数据中像素的逻辑位置相关,原则上我们更愿意以模仿像素逻辑位置的方式将像素存储在输入内存中。但是,对于单个网络,不同的层通常可以具有不同的通道深度,如不同层的像素由不同数量的比特表示。此外,通道深度可能因网络而异。另一方面,诸如片上SRAM之类的存储器阵列具有以字组织的固定物理结构,每个字包含给定数量的位,字的深度即字的总个数。因此,在本发明实施例中通过三种将像素的变化多样的数据结构映射到输入内存上的方法。

参照图14,示出了本发明实施例中提供的数据存储方式的示意图,包括了字内相邻放置、内核级交错放置和像素级交错放置。

字内相邻放置:如图14所示,将彼此相邻的像素存储在内存中,以便不同的像素可以存储在同一个字上,这种放置模仿了数据的逻辑排列方式,以便输入数据中同一行上的相邻像素在输入内存上彼此相邻地存储。图14中突出显示的多个像素的字间相邻映射,每个像素都被相邻的映射,所以不同的通道的像素会被连续的映射到物理内存上。如果一个字内有足够的空间,则同一个字中可以存储不同的像素;例如,字1中的像素(0,0)和像素(0,1)就是这种情况。对于要缓存的给定数量的像素,此方法需要的内存量最小,但是,由于同一通道的像素可能存储在不同的字里,读取和写入内存时需要像素大小、字长信息、像素索引才能获取读取或输入内存地址。另外,由于输入像素块每行的像素占用的字长不同,无法以固定的时间步数读取输入模块的每行像素。

内核级交错放置:如图14所示,将不同的像素存储在同一个单词中,前提是它们属于必须计算矩阵矢量乘法的输入模块的单行。假设在下图中,特征图体积将与3x3内核进行卷积。图13中突出显示的部分中,属于卷积输入块的像素行为[(0,0),(0,1),(0,2)];[(1,0),(1,1),(1,2)];和[(2,0),(2,1),(2,2)]。图13中显示了输入内存上的映射。每行的像素在内存中彼此连续地存储。然而,包含特征图的最后一个像素的字内的剩余位留空。这种将部分内存留空以允许以更接近其逻辑定位的方式映射数据的做法有点类似于CPU内存管理中通常采用的内存交错概念。由于此方法将部分内存留空以适应像素在内存中的位置,因此它显然不会对一个像素卷使用可能的最小内存量。与以前的方法一样,根据时间步长,写入像素可能需要不同的周期数。此外,鉴于一个字中仍然可以存储不同的像素,因此写入需要位行索引。卷积过程中,在执行计算的每个时间步长,都会在内存中加载一行新的输入模块。由于我们连续放置输入模块行的像素,因此读取周期数在每个时间步都是恒定的,并且读取一行不需要位行索引。

像素级交错放置:如图14所示,不允许在同一个字中存储不同的像素,每个像素存储在两个存储器字中。存储每个像素的最后一个字的未占用部分留空。这与内核级交错放置的概念非常相似,这次应用于通道深度上的单个像素。此方法具有要存储的逻辑单元的最精细粒度,因此对本地内存的使用效率最低。由于每个像素都是单独交错的,因此不需要位线索引来写入或存储单词。同样与以前的方法相反,无论读取或存储的像素如何,读取和写入周期的次数都是恒定的。

在本发明实施例中,通过上述三种数据存储方式,可以减少数据存储的时间,并提高数据读取的效率,进一步提高了计算效率。

在本发明的一种实施例中,在所述步骤605、根据所述数据传输路径,通过所述内存读写电路和所述高速数字接口将所述第一内存计算核的激活数据加载到第二内存计算核的输入内存中之前,所述方法还包括:

通过所述第一内存计算核的微控制器实现所述第一内存计算核的逻辑功能。

在本发明实施例中,整个IMC core的逻辑控制由微控制器(MC)实现,MC为开源的riscv(基于精简指令集原则的开源指令集架构)内核,实现的功能有:缓存并译码控制指令;实现与片内互联总线(NOC)连接,实现其他模块与输入内存/输出内存的数据交换;控制存算阵列和矢量运算单元的运算。

因此,第一内存计算核的微控制器实现第一内存计算核的逻辑功能,同理,第二内存计算核或其他内存计算核同样是基于微控制器实现逻辑功能。

在本发明的一种实施例中,所述微控制器为基于精简指令集原则的开源指令集架构的内核,所述微控制器包括片内互联总线控制模块、直接内存访问模块、矩阵运算控制模块、矢量运算控制模块、外部总线模块核和内部总线模块。

在本发明实施例的AI芯片结构中,由于微控制器为基于精简指令集原则的开源指令集架构的内核,所以能够兼容RISC-V精简指令集,AI芯片也可以通过片上网格(Mesh)互联网络(NoC)互联起来,组成更大算力的架构,满足不同的终端算力需求。

参照图15,示出了本发明实施例中提供的一种微控制器的功能模块示意图,包括片内互联总线控制模块、直接内存访问模块、矩阵运算控制模块、矢量运算控制模块、外部总线模块、内部总线模块,微控制器为开源的riscv(基于精简指令集原则的开源指令集架构)内核。显然,IMC core的数据访存、数据的计算、与其他IMC core的交互等功能都是由微控制器(MC)实现。

在本发明的一种实施例中,所述通过所述第一内存计算核的微控制器实现所述第一内存计算核的逻辑功能,包括:

通过所述第一内存计算核的片内互联总线控制模块对所述片内互联总线进行配置,接收数据包并解析,发送数据包并打包,缓存数据,并与所述第一内存计算核的直接内存访问模块进行交互,将所述图片数据加载到所述第一内存计算核的输入内存中;

通过所述第一内存计算核的直接内存访问模块实现所述第一内存计算核的数据交互;

通过所述第一内存计算核的矩阵运算控制模块实现所述图片数据的加载、存储和计算;

通过所述第一内存计算核的矢量运算控制模块扩展所述第一内存计算核的算子。

片内互联总线控制模块:对NoC进行配置,接收或发送数据包、接收数据包解析或发送数据包打包、数据缓存等。该模块与RISC-V内核交互,可用于加载RISC-V的驱动程序;该模块与DMA(Direct Memory Access,直接内存访问)交互,可将外部的图像或语音等需要推理的数据以及神经网络模型数据加载到内存或IMC中,也可将推理出的结果数据发送到外部其他IMC core。

直接内存访问模块:包括CDMA(Code Division Multiple Access,码分多址)和SDMA(Space Division Multiple Access,空间分割多址),CDMA主要是与其他IMC core交互数据,SDMA主要是该IMC core的内部数据交互,如RISC-V与输入、输出内存的数据交互、输出内存与矢量运算单元缓存的交互等。

矩阵运算控制模块:IMC的数据加载和存储、数据的计算都需要按照特殊的方法进行,以提高IMC的硬件资源和算力。

矢量运算控制模块:该模块采用了与RISC-V矢量扩展指令配套的矢量运算单元,可直接使用RISC-V扩展的矢量指令编写矢量算子,如relu(激活)、norm(归一化)、softmax(归一化)等算子,补充IMC不能实现的神经网络模型推理所需要的算子。

在本发明的一种实施例中,所述直接内存访问模块包括第一内存访问模块和第二内存访问模块,所述通过所述第一内存计算核的直接内存访问模块实现所述第一内存计算核的数据交互,包括:

通过所述第一内存计算核的第一内存访问模块实现所述第一内存计算核和剩余内存计算核之间的数据交互;所述剩余内存计算核为所述目标内存计算核中除所述第一内存计算核的内存计算核;

通过所述第一内存计算核的第二内存访问模块实现所述第一内存计算核中的数据交互。

在本发明实施例中的直接内存访问模块,包括了CDMA和SDMA,通过不同的内存访问模块,将CDMA用于与其他IMC core交互数据,将SDMA用于IMC core的内部数据交互,如RISC-V与输入、输出内存的数据交互、输出内存与矢量运算单元缓存的交互等。

在本发明的一种实施例中,所述通过所述第一内存计算核的矢量运算控制模块扩展所述第一内存计算核的算子,包括:

通过所述第一内存计算核的矢量运算控制模块采用所述基于精简指令集原则的开源指令集架构的指令集编写扩展算子,以扩展所述第一内存计算核的算子;所述扩展算子为所述神经网络模型运算所需的算子,且为所述第一内存计算核不能实现的算子。

在本发明实施例中的矢量运算控制模块采用了与RISC-V矢量扩展指令配套的矢量运算单元,可直接使用RISC-V扩展的矢量指令编写矢量算子,如relu、norm、softmax等算子,补充IMC不能实现的神经网络模型推理所需要的算子。

在本发明实施例中,AI芯片是由多个IMC core通过网状NoC组成的,而每个IMCcore由存算一体的交叉矩阵和矢量运算单元、微控制器、输入/输出内存组成,所以整个AI芯片可以归纳为由存储资源、算力资源和控制器组成。AI芯片的推理计算过程可以看作数据在多个IMC core流动并被计算的过程。

所以AI芯片的编程模型可以理解为:为神经网络模型推理计算过程分配内存和算力、规划数据流的过程。参照图16,示出了本发明实施例中提供的一种加速单元的计算过程的示意图,整个计算过程的控制是由软件栈完成,软件栈分析神经网络模型的结构,将神经网络模型中各种计算转换为各种算子调用,实时分析整个AI芯片的内存资源、算力资源、带宽资源等,合理的为各种算子规划并分配内存资源和算力资源,以最大效率完成推理计算任务。软件栈的原理结构如下,最上层为AI实际应用业务,Host(主机)端导入神经网络模型,神经网络模型经过编译器的解析、优化等操作后生成固件可解析的神经网络模型和参数。运行时(runtime)发起推理任务,调用驱动将编译后的神经网络模型和参数写入到固件的内存空间,并产生固件中断,启动硬件设备的推理过程。固件接收到Host端的中断后,从指定的内存空间中读取Host端发送的神经网络模型参数,以配置寄存器的方式把神经网络模型参数配置到硬件设备,然后启动硬件完成推理任务。任务完成后,固件触发Host中断,通知Host端读取并处理推理结果。

本发明实施例提供了一种数据处理方法,应用于执行神经网络模型的加速单元,确定执行所述神经网络模型的目标内存计算核以及所述目标内存计算核之间的数据传输路径;根据所述数据传输路径,通过所述内存读写电路和所述高速数字接口将所述神经网络模型的图片数据加载到第一内存计算核的输入内存中;通过所述第一内存计算核的交叉矩阵和所述第一内存计算核的矢量运算单元执行所述第一内存计算核的运算,得到所述第一内存计算核的激活数据;通过所述第一内存计算核的输出内存缓存所述第一内存计算核的激活数据;所述第一内存计算核的激活数据为所述第一内存计算核的运算结束后得到的运算结果;根据所述数据传输路径,通过所述内存读写电路和所述高速数字接口将所述第一内存计算核的激活数据加载到第二内存计算核的输入内存中,并通过所述第二内存计算核的交叉矩阵和所述第二内存计算核的矢量运算单元执行所述第二内存计算核的运算,得到所述第二内存计算核的激活数据,并缓存在所述第二内存计算核的输出内存中;其中,所述第一内存计算核和所述第二内存计算核属于所述目标内存计算核中的部分内存计算核,所述第一内存计算核的运算和所述第二内存计算核的运算属于所述神经网络模型的运算;通过所述内存读写电路和所述高速数字接口将所述第二内存计算核的激活数据输出至所述神经网络模型,以使所述神经网络模型完成所述图片数据的处理过程。

本发明实施例通过该数据处理方法,可以通过内存计算(IMC,In-MemoryComputing),执行神经网络模型的卷积层操作,由于在内存中计算,所以内存中保存了神经网络模型的权重和输入图片(或中间计算得到的激活数据),省去了外部存储器和处理器间的数据传输,因此大幅度降低了计算时间复杂度。通过加速单元结构内部的内存计算核(IMC core)执行神经网络模型的运算,在执行运算过程中,中间结果必须缓存在内存计算核的本地存储器,通过将中间计算得到的激活数据传输到下一内存计算核中,优化了加速单元结构内部的数据流,有效地处理数据,通过加速单元可以实现神经网络模型的高吞吐量、高效率执行,进而加速神经网络模型的运算过程。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

另外,本发明实施例还提供了一种电子设备,包括:处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述数据处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述数据处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。

本发明实施例还提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述数据处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

图17为实现本发明各个实施例的一种电子设备的硬件结构示意图。

该电子设备1700包括但不限于:射频单元1701、网络模块1702、音频输出单元1703、输入单元1704、传感器1705、显示单元1706、用户输入单元1707、接口单元1708、存储器1709、处理器1710、以及电源1711等部件。本领域技术人员可以理解,图17中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。在本发明实施例中,电子设备包括但不限于手机、平板电脑、笔记本电脑、掌上电脑、车载终端、可穿戴设备、以及计步器等。

应理解的是,本发明实施例中,射频单元1701可用于收发信息或通话过程中,信号的接收和发送,具体的,将来自基站的下行数据接收后,给处理器1710处理;另外,将上行的数据发送给基站。通常,射频单元1701包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元1701还可以通过无线通信系统与网络和其他设备通信。

电子设备通过网络模块1702为用户提供了无线的宽带互联网访问,如帮助用户收发电子邮件、浏览网页和访问流式媒体等。

音频输出单元1703可以将射频单元1701或网络模块1702接收的或者在存储器1709中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元1703还可以提供与电子设备1700执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元1703包括扬声器、蜂鸣器以及受话器等。

输入单元1704用于接收音频或视频信号。输入单元1704可以包括图形处理器(Graphics Processing Unit,GPU)17041和麦克风17042,图形处理器17041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元1706上。经图形处理器17041处理后的图像帧可以存储在存储器1709(或其它存储介质)中或者经由射频单元1701或网络模块1702进行发送。麦克风17042可以接收声音,并且能够将这样的声音处理为音频数据。处理后的音频数据可以在电话通话模式的情况下转换为可经由射频单元1701发送到移动通信基站的格式输出。

电子设备1700还包括至少一种传感器1705,比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板17061的亮度,接近传感器可在电子设备1700移动到耳边时,关闭显示面板17061和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别电子设备姿态(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;传感器1705还可以包括指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等,在此不再赘述。

显示单元1706用于显示由用户输入的信息或提供给用户的信息。显示单元1706可包括显示面板17061,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode, OLED)等形式来配置显示面板17061。

用户输入单元1707可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元1707包括触控面板17071以及其他输入设备17072。触控面板17071,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板17071上或在触控面板17071附近的操作)。触控面板17071可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1710,接收处理器1710发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板17071。除了触控面板17071,用户输入单元1707还可以包括其他输入设备17072。具体地,其他输入设备17072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。

进一步的,触控面板17071可覆盖在显示面板17061上,当触控面板17071检测到在其上或附近的触摸操作后,传送给处理器1710以确定触摸事件的类型,随后处理器1710根据触摸事件的类型在显示面板17061上提供相应的视觉输出。虽然在图17中,触控面板17071与显示面板17061是作为两个独立的部件来实现电子设备的输入和输出功能,但是在某些实施例中,可以将触控面板17071与显示面板17061集成而实现电子设备的输入和输出功能,具体此处不做限定。

接口单元1708为外部装置与电子设备1700连接的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。接口单元1708可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到电子设备1700内的一个或多个元件或者可以用于在电子设备1700和外部装置之间传输数据。

存储器1709可用于存储软件程序以及各种数据。存储器1709可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1709可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

处理器1710是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器1709内的软件程序和/或模块,以及调用存储在存储器1709内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。处理器1710可包括一个或多个处理单元;优选的,处理器1710可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1710中。

电子设备1700还可以包括给各个部件供电的电源1711(比如电池),优选的,电源1711可以通过电源管理系统与处理器1710逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。

另外,电子设备1700包括一些未示出的功能模块,在此不再赘述。

如图18所示,在本发明提供的又一实施例中,还提供了一种计算机可读存储介质1801,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中所述的数据处理方法。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。

本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

相关技术
  • 数据处理方法、装置、计算机可读存储介质和电子设备
  • 路由数据处理方法、装置、电子设备及存储介质
  • 数据处理方法及装置、电子设备、存储介质
  • 屏幕布局数据处理方法、装置、电子设备及存储介质
  • 数据处理方法及装置、电子设备、存储介质
  • 字符串数据处理方法、装置、加速单元和计算机存储介质
  • 数据处理加速方法、装置、电子设备及存储介质
技术分类

06120116678668