神经网络运算设备和方法技术

技术编号:21400287 阅读:18 留言:0更新日期:2019-06-19 07:20
本发明专利技术公开了一种神经网络处理模块,其映射单元接收到输入神经元和权值后,对该输入神经元和/或权值进行处理,以得到处理后的输入神经元和处理后的权值;神经网络处理模块的运算单元对处理后的输入神经元和处理后的权值进行人工神经网络运算。采用本发明专利技术实施例可减少装置的额外开销,并减小访问量,提高了神经网络运算效率。

【技术实现步骤摘要】
神经网络运算设备和方法
本专利技术涉及神经网络领域,尤其涉及一种神经网络运算设备和方法。
技术介绍
人工神经网络(ArtificialNeuralNetworks,ANNs)简称为神经网络(NeuralNetworks,NNs)。它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间的相互连接关系,从而达到处理信息的目的。神经网络是一个高计算量和高访存的算法,权值越多,计算量和访存量。都会增大。为了减小计算量和权值数量,从而降低访存量,因此提出了稀疏神经网络。稀疏神经网络的定义为:在神经网络中,值为0的权值的数目很多,并且值为非0的权值分布没有规律,则称该神经网络为稀疏神经网络。定义权值为0的元素数量与神经网络所有权值元素数量的比值为神经网络的稀疏度,如图1a所示。现有技术中,GPU在执行图形图像运算以及科学计算时会涉及稀疏神经网络的计算,但是由于GPU是专门用来执行图形图像运算以及科学计算的设备,没有对稀疏的卷积神经网络运算的专门支持,仍然需要大量的前端译码工作才能执行稀疏的人工神经网络运算,带来了大量的额外开销。另外GPU只有较小的片上缓存,多层人工神经网络的模型数据(权值)需要反复从片外搬运,片外带宽成为了主要性能瓶颈,同时带来了巨大的功耗开销。
技术实现思路
本专利技术实施例提供一种神经网络运算设备及方法,通过对神经网络数据进行处理,减小了在进行人工神经网络运算之前译码的工作量,进而减小了额外的开销,并且提高了运算速率。第一方面,本专利技术实施例提供了一种神经网络运算模块,包括:映射单元,用于接收输入数据之后,对所述输入数据进行处理,以得到处理后的输入数据,所述输入数据包括至少一个输入神经元和至少一个权值,所述处理后的输入数据包括处理后的输入神经元和处理后的权值;存储单元,用于存储所述处理后的输入神经元、处理后的权值、神经网络指令和运算结果;直接存储访问单元,用于在所述存储单元与指令缓存单元、第一输入缓存单元、第二输入缓存单元和输出缓存单元进行数据的读写;所述指令缓存单元,用于缓存所述直接存储访问单元读取所述神经网络指令;所述第一输入缓存单元,用于缓存所述直接存储访问单元读取的第一缓存数据,所述第一缓存数据为所述处理后的输入神经元或所述处理后的权值;所述第二输入缓存单元,用于缓存所述直接存储访问单元读取的第二缓存数据,所述第二缓存数据为所述处理后的权值或所述处理后的输入神经元,且所述第二缓存数据与所述第二缓存数据不一致;指令控制单元,用于从所述指令缓存单元中获取所述神经网络指令,并将所述神经网络指令译码成运算单元执行的微指令;所述运算单元,用于从所述第一输入缓存单元和所述第二输入缓存单元中获取所述处理后的输入神经元和所述处理后的权值后,根据所述微指令对所述处理后的输入神经元和所述处理后的权值进行人工神经网络运算,以得到所述运算结果;所述输出缓存单元,用于缓存所述运算结果。第二方面,本专利技术实施例提供了另一种神经网络运算模块,包括:存储单元,用于存储输入数据、神经网络指令和运算结果,所述输入数据包括至少一个输入神经元和至少一个权值;直接内存访问直接存储访问单元,用于在所述存储单元与指令缓存单元、映射单元和输出缓存单元进行数据的读写;映射单元,用于通过所述直接存储访问单元获取所述输入数据后,对所述输入数据进行处理,以得到处理后的输入数据,所述处理后的输入数据包括处理后的输入神经元和处理后的权值,并将所述处理后的输入神经元和所述处理后的权值存储到第一输入缓存单元和第二输入缓存单元中;所述第一输入缓存单元,用于缓存第一缓存数据,所述第一缓存数据为所述处理后的输入神经元或处理后的权值;所述第二输入缓存单元,用于缓存第二缓存数据,所述第二缓存数据为所述处理后的输入神经元或处理后的权值,且所述第二缓存数据与所述第一缓存数据不一致;所述指令缓存单元,用于缓存所述直接存储访问单元读取神经网络指令;指令控制单元,用于从所述指令缓存单元中获取所述神经网络指令,并将所述神经网络指令译码成运算单元执行的微指令;所述运算单元,用于从所述第一输入缓存单元和所述第二输入缓存单元中获取所述处理后的输入神经元和所述处理后的权值后,根据所述微指令对所述处理后的输入神经元和所述处理后的权值进行人工神经网络运算,以得到所述运算结果;所述输出缓存单元,用于缓存所述运算结果。第三方面,本专利技术实施例提供了另一种神经网络运算模块,包括:存储单元,用于存储第一输入数据及所述第一输入数据的连接关系数据、处理后的第二输入数据、神经网络指令和运算结果,所述第一输入数据为输入神经元权值,所述第一输入数据的连接关系数据为输入神经元的连接关系数据或者权值的连接关系数据,所述处理后的第二输入数据为处理后的输入神经元或者处理后的权值;直接内存访问直接存储访问单元,用于在所述存储单元与指令缓存单元、映射单元、第一输入缓存单元和输出缓存单元进行数据的读写;映射单元,用于通过所述直接存储访问单元获取所述第一输入数据和所述第一输入数据的连接关系数据后,根据所述第一输入数据的连接关系数据对所述第一输入数据进行处理,以得到处理后的第一输入数据,并将所述处理后的第一输入数据存储到第一输入缓存单元中,所述处理后的第一输入数据为处理后的输入神经元或者处理后的权值;所述第一输入缓存单元,用于缓存所述处理后的第一输入数据;所述第二输入缓存单元,用于缓存所述处理后的第二输入数据,且所述处理后的第一输入数据与所述处理后的第二输入数据不一致;所述指令缓存单元,用于缓存所述直接存储访问单元读取神经网络指令;指令控制单元,用于从所述指令缓存单元中获取所述神经网络指令,并将所述神经网络指令译码成运算单元执行的微指令;所述运算单元,用于从所述第一输入缓存单元和所述第二输入缓存单元中获取所述处理后的第一输入数据和所述处理后的第二输入数据后,根据所述微指令对所述处理后的第一输入数据和所述处理后的第二输入数据进行人工神经网络运算,以得到所述运算结果;所述输出缓存单元,用于缓存所述运算结果。第四方面,本专利技术实施例提供了一种神经网络运算方法,包括:对输入数据进行处理,以得到处理后的输入数据;获取神经运算指令,将所述神经运算指令译码成微指令;根据所述微指令对所述处理后的输入数据进行人工神经网络运算,以得到运算结果。第五方面,本专利技术实施例提供了一种神经网络运算装置,该神经网络运算装置包括一个或者多个第一方面所述的神经网络运算模块、第二方面所述的神经网络运算模块或者第三方面所述的神经网络运算模块。该神经网络运算装置用于从其他处理装置中获取待运算数据和控制信息,并执行指定的神经网络运算,将执行结果通过I/O接口传递给其他处理装置;当所述神经网络运算装置包含多个所述神经网络运算模块时,所述多个所述神经网络运算模块间可以通过特定的结构进行连接并传输数据;其中,多个所述神经网络运算模块通过快速外部设备互连总线(PeripheralComponentInterconnect-Express,PCI-E或PCIe)PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述神经网络运算模块共享同一控制系统或拥有各自的控制系统;多个所述神经网络运算本文档来自技高网...

【技术保护点】
1.一种神经网络运算模块,其特征在于,包括:映射单元,用于接收输入数据之后,对所述输入数据进行处理,以得到处理后的输入数据,所述输入数据包括至少一个输入神经元和至少一个权值,所述处理后的输入数据包括处理后的输入神经元和处理后的权值;存储单元,用于存储所述处理后的输入神经元、处理后的权值、神经网络指令和运算结果;指令控制单元,用于从指令缓存单元中获取所述神经网络指令,并将所述神经网络指令译码成运算单元执行的微指令;所述运算单元,用于从所述第一输入缓存单元和所述第二输入缓存单元中获取所述处理后的输入神经元和所述处理后的权值后,根据所述微指令对所述处理后的输入神经元和所述处理后的权值进行人工神经网络运算,以得到所述运算结果;输出缓存单元,用于缓存所述运算结果。

【技术特征摘要】
1.一种神经网络运算模块,其特征在于,包括:映射单元,用于接收输入数据之后,对所述输入数据进行处理,以得到处理后的输入数据,所述输入数据包括至少一个输入神经元和至少一个权值,所述处理后的输入数据包括处理后的输入神经元和处理后的权值;存储单元,用于存储所述处理后的输入神经元、处理后的权值、神经网络指令和运算结果;指令控制单元,用于从指令缓存单元中获取所述神经网络指令,并将所述神经网络指令译码成运算单元执行的微指令;所述运算单元,用于从所述第一输入缓存单元和所述第二输入缓存单元中获取所述处理后的输入神经元和所述处理后的权值后,根据所述微指令对所述处理后的输入神经元和所述处理后的权值进行人工神经网络运算,以得到所述运算结果;输出缓存单元,用于缓存所述运算结果。2.根据权利要求1所述的神经网络运算模块,其特征在于,所述神经网络运算模块还包括:直接存储访问单元,用于在所述存储单元与所述指令缓存单元、所述第一输入缓存单元、所述第二输入缓存单元和所述输出缓存单元之间进行数据的读写;所述指令缓存单元,用于缓存所述直接存储访问单元读取所述神经网络指令;所述第一输入缓存单元,用于缓存所述直接存储访问单元读取的第一缓存数据,所述第一缓存数据为所述处理后的输入神经元或所述处理后的权值;所述第二输入缓存单元,用于缓存所述直接存储访问单元读取的第二缓存数据,所述第二缓存数据为所述处理后的权值或所述处理后的输入神经元,且所述第一缓存数据与所述第二缓存数据不一致。3.根据权利要求1所述的神经网络运算模块,其特征在于,所述映射单元包括:第一稀疏处理单元,用于对第二输入数据进行处理,以得到第三输出数据和第二输出数据,并将所述第三输出数据传输至第一数据处理单元;所述第一数据处理单元,用于根据所述第三输出数据对第一输入数据进行处理,以得到第一输出数据;其中,当所述第一输入数据包括至少一个输入神经元,所述第二输入数据包括至少一个权值时,所述第一输出数据为处理后的输入神经元,所述第二输出数据为处理后的权值,所述第三输出数据为权值的连接关系数据;当所述第一输入数据包括至少一个权值,所述第二输入数据包括至少一个输入神经元时,所述第一输出数据为处理后的权值,所述第二输出数据为处理后的输入神经元,所述第三输出数据为输入神经元的连接关系数据。4.根据权利要求1所述的神经网络运算模块,其特征在于,所述映射单元包括:第二稀疏处理单元,用于接收到第三输入数据后,根据所述第三输入数据得到第一连接关系数据,并将该第一关系数据传输至连接关系处理单元;第三稀疏处理单元,用于接收到第四输入数据后,根据所述第四输入数据得到第二连接关系数据,并将该第二关系数据传输至所述连接关系处理单元;所述连接关系处理单元,用于根据所述第一连接关系数据和所述第二连接关系数据,以得到第三连接关系数据,并将该第三连接关系数据传输至第二数据处理单元;所述第二数据处理单元,用于在接收到所述第三输入数据,所述第四输入数据和所述第三连接关系数据后,根据所述第三连接关系数据对所述第三输入数据和所述第四输入数据进行处理,以得到第四输出数据和第五输出数据;其中,当所述第三输入数据包括至少一个输入神经元,第四输入数据包括至少一个权值时,所述第一连接关系数据为输入神经元的连接关系数据,所述第二连接关系数据为权值的连接关系数据,所述第四输出数据为处理后的输入神经元,所述第五输出数据为处理后的权值;当所述第三输入数据包括至少一个权值,所述第四输入数据包括至少一个输入神经元时,所述第一连接关系数据为权值的连接关系数据,所述第二连接关系数据为输入神经元的连接关系数据,所述第四输出数据为处理后的权值,所述第五输出数据为处理后的输入神经元。5.根据权利要求3或4所述的神经网络运算模块,其特征在于,所述输入神经元的连接关系数据和所述权值的连接关系数据均以直接索引或者步长索引的形式表示;当所述输入神经元的连接关系数据以直接索引的形式表示时,该连接关系数据为由0和1组成的字符串,0表示所述输入神经元的绝对值小于或者等于第一阈值,1表示所述输入神经元的绝对值大于所述第一阈值;当所述输入神经元的连接关系数据以步长索引形式表示时,该连接关系数据为绝对值大于所述第一阈值的输入神经元与上一个绝对值大于所述第一阈值的输入神经元之间的距离值组成的字符串;当所述权值的连接关系数据以直接索引的形式表示时,该连接关系数据为由0和1组成的字符串,0表示所述权值的绝对值小于或者等于第二阈值,即该权值对应的输入神经元与输出神经元之间没有连接,1表示所述权值的绝对值大于所述第二阈值,即该权值对应的输入神经元与输出神经元之间有连接;以直接索引形式表示权值的连接关系数据有两种表示顺序:以每个输出神经元与所有输入神经元的连接状态组成一个0和1的字符串来表示所述权值的连接关系数据;或者每个输入神经元与所有输出神经元的连接状态组成一个0和1的字符串来表示所述权值的连接关系数据;当所述权值的连接关系数据以步长索引的形式表示时,该连接关系数据为与输出神经元有连接的输入神经元的与上一个与该输出神经元有连接的输入神经元之间的距离值组成的字符串。6.根据权利要求5所述的神经网络运算模块,其特征在于,当所述第一连接关系数据和所述第二连接关系数据均以步长索引的形式表示,且表示所述第一连接关系数据和所述第二连接关系数据的字符串是按照物理地址由低到高的顺序存储时,所述连接关系处理单元具体用于:将所述第一连接关系数据的字符串中的每一个元素与存储物理地址低于该元素存储的物理地址的元素进行累加,得到的新的元素组成第四连接关系数据;同理,对所述第二连接关系数据的字符串进行同样的处理,得到第五连接关系数据;从所述第四连接关系数据的字符串和所述第五连接关系数据的字符串中,选取相同的元素,按照元素值从小到大的顺序排序,组成新的字符串;将所述新的字符串中每一个元素与其相邻的且值小于该元素值的元素进行相减,得到的元素组成所述第三连接关系数据。7.根据权利要求5所述的神经网络运算模块,其特征在于,当所述第一连接关系数据和所述第二连接关系数据均以直接索引的形式表示时,所述连接关系处理单元具体用于:对所述第一连接关系数据和所述第二连接关系数据进行与操作,以得到第三连接关系数据。8.根据权利要求5所述的神经网络运算模块,其特征在于,当所述第一连接关系数据与所述第二连接关系数据中任意一个以步长索引的形式表示,另一个以直接索引的形式表示时,所述连接关系处理单元具体用于:若所述第一关系数据是以步长索引的形式表示,将所述第一连接关系数据转换成以直接索引的形式表示的连接关系数据;若所述第二关系数据是以步长索引的形式表示,将所述第二连接关系数据转换成以直接索引的形式表示的连接关系数据;对所述第一连接关系数据和所述第二连接关系数据进行与操作,以得到第三连接关系数据。9.根据权利要求8所述的神经网络运算模块,其特征在于,当所述第一连接关系数据与所述第二连接关系数据中任意一个以步长索引的形式表示,另一个以直接索引的形式表示,且表示所述第一连接关系数据和所述第二连接关系数据的字符串是按照物理地址由低到高的顺序存储时,所述连接关系处理单元还具体用于:若所述第一关系数据是以步长索引的形式表示,将所述第二连接关系数据转换成以步长索引的形式表示的连接关系数据;若所述第二关系数据是以步长索引的形式表示,将所述第一连接关系数据转换成以步长索引的形式表示的连接关系数据;将所述第一连接关系数据的字符串中的每一个元素与存储物理地址低于该元素存储的物理地址的元素进行累加,得到的新的元素组成第四连接关系数据;同理,对所述第二连接关系数据的字符串进行同样的处理,得到第五连接关系数据;从所述第四连接关系数据的字符串和所述第五连接关系数据的字符串中,选取相同的元素,按照元素值从小到大的顺序排序,组成新的字符串;将所述新的字符串中每一个元素与其相邻的且值小于该元素值的元素进行相减,得到的元素组成所述第三连接关系数据。10.根据权利要求1-4任一项所述神经网络运算模块,其特征在于,所述映射单元对所述输入数据进行处理之前,所述映射单元还用于:对所述至少一个输入神经元进行分组,以得到M组输入神经元,所述M为大于或者等于1的整数;判断所述M组输入神经元的每一组输入神经元是否满足第一预设条件,所述第一预设条件包括一组输入神经元中绝对值小于或者等于第三阈值的输入神经元的个数小于或者等于第四阈值;当所述M组输入神经元任意一组输入神经元不满足所述第一预设条件时,将该组输入神经元删除;对所述至少一个权值进行分组,以得到N组权值,所述N为大于或者等于1的整数;判断所述N组权值的每一组权值是否满足第二预设条件,所述第二预设条件包括一组权值中绝对值小于或者等于第五阈值的权值的个数小于或者等于第六阈值;当所述N组权值任意一组权值不满足所述第二预设条件时,将该组权值删除。11.根据权利要求1-10任一项所述的神经网络运算模块,其特征在于,所述神经网络运算模块用于稀疏神经网络运算或者稠密神经网络运算。12.一种神经网络运算模块,其特征在于,包括:存储单元,用于存储输入数据、神经网络指令和运算结果,所述输入数据包括至少一个输入神经元和至少一个权值;映射单元,用于直接存储访问单元获取所述输入数据后,对所述输入数据进行处理,以得到处理后的输入数据,所述处理后的输入数据包括处理后的输入神经元和处理后的权值,并将所述处理后的输入神经元和所述处理后的权值存储到第一输入缓存单元和第二输入缓存单元中;指令控制单元,用于从指令缓存单元中获取所述神经网络指令,并将所述神经网络指令译码成运算单元执行的微指令;所述运算单元,用于从所述第一输入缓存单元和所述第二输入缓存单元中获取所述处理后的输入神经元和所述处理后的权值后,根据所述微指令对所述处理后的输入神经元和所述处理后的权值进行人工神经网络运算,以得到所述运算结果;输出缓存单元,用于缓存所述运算结果。13.根据权利要求12所述的神经网络运算模块,其特征在于,所述神经网络运算模块还包括:所述直接内存访问单元,用于在所述存储单元与所述指令缓存单元、所述映射单元和所述输出缓存单元之间进行数据的读写;所述第一输入缓存单元,用于缓存第一缓存数据,所述第一缓存数据为所述处理后的输入神经元或处理后的权值;所述第二输入缓存单元,用于缓存第二缓存数据,所述第二缓存数据为所述处理后的输入神经元或处理后的权值,且所述第二缓存数据与所述第一缓存数据不一致;所述指令缓存单元,用于缓存所述直接存储访问单元读取所述神经网络指令。14.根据权利要求12或13所述的神经网络运算模块,其特征在于,所述映射单元包括:第二稀疏处理单元,用于接收到第一输入数据后,根据所述第一输入数据以得到第一连接关系数据,并将该第一关系数据传输至连接关系处理单元;第三稀疏处理单元,用于接收到第二输入数据后,根据所述第二输入数据以得到第二连接关系数据,并将该第二关系数据传输至所述连接关系处理单元;所述连接关系处理单元,用于根据所述第一连接关系数据和所述第二连接关系数据,以得到第三连接关系数据,并将该第三连接关系数据传输至第二数据处理单元;所述第二数据处理单元,用于在接收到所述第一输入数据,所述第二输入数据和所述第三连接关系数据后,根据所述第三连接关系数据对所述第一输入数据和所述第二输入数据进行处理,以得到第一输出数据和第二输出数据;其中,当所述第一输入数据包括至少一个输入神经元,第二输入数据包括至少一个权值时,所述第一连接关系数据为输入神经元的连接关系数据,所述第二连接关系数据为权值的连接关系数据,所述第一输出数据为处理后的输入神经元,所述第二输出数据为处理后的权值;当所述第一输入数据包括至少一个权值,所述第二输入数据包括至少一个输入神经元时,所述第一连接关系数据为权值的连接关系数据,所述第二连接关系数据为输入神经元的连接关系数据,所述第一输出数据为处理后的权值,所述第二输出数据为处理后的输入神经元。15.根据权利要求14所述的神经网络运算模块,其特征在于,所述输入神经元的连接关系数据和所述权值的连接关系数据均以直接索引或者步长索引的形式表示;当所述输入神经元的连接关系数据以直接索引的形式表示时,该连接关系数据为由0和1组成的字符串,0表示所述输入神经元的绝对值小于或者等于第一阈值,1表示所述输入神经元的绝对值大于所述第一阈值;当所述输入神经元的连接关系数据以步长索引形式表示时,该连接关系数据为绝对值大于所述第一阈值的输入神经元与上一个绝对值大于所述第一阈值的输入神经元之间的距离值组成的字符串;当所述权值的连接关系数据以直接索引的形式表示时,该连接关系数据为由0和1组成的字符串,0表示所述权值的绝对值小于或者等于第二阈值,即该权值对应的输入神经元与输出神经元之间没有连接,1表示所述权值的绝对值大于所述第二阈值,即该权值对应的输入神经元与输出神经元之间有连接;以直接索引形式表示权值的连接关系数据有两种表示顺序:以每个输出神经元与所有输入神经元的连接状态组成一个0和1的字符串来表示所述权值的连接关系数据;或者每个输入神经元与所有输出神经元的连接状态组成一个0和1的字符串来表示所述权值的连接关系数据;当所述权值的连接关系数据以步长索引的形式表示时,该连接关系数据为与输出神经元有连接的输入神经元的与上一个与该输出神经元有连接的输入神经元之间的距离值组成的字符串。16.根据权利要求15所述的神经网络运算模块,其特征在于,当所述第一连接关系数据和所述第二连接关系数据均以步长索引的形式表示,且表示所述第一连接关系数据和所述第二连接关系数据的字符串是按照物理地址由低到高的顺序存储时,所述第二连接关系处理单元具体用于:将所述第一连接关系数据的字符串中的每一个元素与存储物理地址低于该元素存储的物理地址的元素进行累加,得到的新的元素组成第四连接关系数据;同理,对所述第二连接关系数据的字符串进行同样的处理,得到第五连接关系数据;从所述第四连接关系数据的字符串和所述第五连接关系数据的字符串中,选取相同的元素,按照元素值从小到大的顺序排序,组成新的字符串;将所述新的字符串中每一个元素与其相邻且值小于该元素值的元素进行相减,得到的元素组成所述第三连接关系数据。17.根据权利要求15所述的神经网络运算模块,其特征在于,所述第一连接关系数据和所述第二连接关系数据均以直接索引的形式表示,所述第二连接关系处理单元具体用于:对所述第一连接关系数据和所述第二连接关系数据进行与操作,以得到第三连接关系数据。18.根据权利要求15所述的神经网络运算模块,其特征在于,所述第一连接关系数据与所述第二连接关系数据中任意一个以步长索引的形式表示,另一个以直接索引的形式表示,所述第二连接关系处理单元具体用于:若所述第一关系数据是以步长索引的形式表示,将所述第一连接关系数据转换成以直接索引的形式表示的连接关系数据;若所述第二关系数据是以步长索引的形式表示,将所述第二连接关系数据转换成以直接索引的形式表示的连接关系数据;对所述第一连接关系数据和所述第二连接关系数据进行与操作,以得到所述第三连接关系数据。19.根据权利要求18所述的神经网络运算模块,其特征在于,当表示所述第一连接关系数据和所述第二连接关系数据的字符串是按照物理地址由低到高的顺序存储时所述第二连接关系处理单元还具体用于:若所述第一关系数据是以步长索引的形式表示,将所述第二连接关系数据转换成以步长索引的形式表示的连接关系数据;若所述第二关系数据是以步长索引的形式表示,将所述第一连接关系数据转换成以步长索引的形式表示的连接关系数据;将所述第一连接关系数据的字符串中的每一个元素与存储物理地址低于该元素...

【专利技术属性】
技术研发人员:不公告发明人
申请(专利权)人:北京中科寒武纪科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1