本技术属于数据处理,具体涉及一种数据处理方法、用于执行该数据处理方法的矩阵转置系统以及包含该矩阵转置系统的芯片。
背景技术:
1、ai处理器,又称人工智能单元(artificial intelligent unit,aiu),其在运行时需要大量的转置操作,以实现输入矩阵的行列变换。由于ai处理中涉及大量神经网络层的操作,神经网络是针对输入矩阵的矩阵运算,而转置又是矩阵运算的基本操作,因此如果转置的性能无法匹配ai处理器的计算性能,转置会成为ai处理器的性能瓶颈。
2、目前,矩阵转置通常是由直接内存访问(dma,direct memory access)将矩阵搬移到ai处理器的一级缓存(l1 memory cache)中,然后通过算术逻辑单元(alu,arithmeticand logic unit)调用大量的加载/存储(load/store)指令完成转置操作,这样存在占用较大缓存空间、浪费算力、耗时长的问题。
技术实现思路
1、本技术的目的在于提供一种数据处理方法、数据处理装置、计算机可读存储介质以及电子设备,能够克服相关技术中存在的矩阵转置时占用较大缓存空间、浪费算力、耗时长的问题。
2、本技术的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本技术的实践而习得。
3、根据本技术实施例的一个方面,提供一种数据处理方法,应用于设置于直接内存访问中的矩阵转置系统,该方法包括:获取与目标矩阵对应的配置信息,根据所述配置信息确定与当前输入行向量对应的右移量,并根据所述右移量生成右移控制指令,所述当前输入行向量为所述目标矩阵中的行向量;响应所述右移控制指令,根据所述右移量对所述当前输入行向量进行循环右移,以获取与所述当前输入行向量对应的右移行向量;根据所述配置信息在动态缓存区中确定与所述目标矩阵对应的目标缓存区,并将所述右移行向量写入所述目标缓存区中;当完成所述目标矩阵的缓存后,阶梯读取所述目标缓存区中的列向量,并对每次读取的列向量进行循环左移形成左移列向量,以根据所述左移列向量确定与所述目标矩阵对应的转置矩阵。
4、根据本技术实施例的一个方面,提供一种矩阵转置系统,设置于直接内存访问中,该系统包括:循环右移控制单元,用于获取目标矩阵的配置信息,根据所述配置信息确定与当前输入行向量对应的右移量,并根据所述右移量生成右移控制指令,所述当前输入行向量为所述目标矩阵中的行向量;循环右移单元,与所述第二输入端口和所述循环右移控制单元连接,用于响应所述右移控制指令,根据所述右移控制指令中的右移量对所述当前输入行向量进行循环右移,以生成右移行向量;缓存控制单元,与所述循环右移控制单元连接,用于根据所述配置信息在动态缓存区中确定与所述目标矩阵对应的目标缓存区,以将所述右移行向量写入所述目标缓存区,以及在完成所述目标矩阵的缓存后,对所述目标缓存区中的数据进行阶梯读取,以获取列向量;循环左移控制单元,与所述缓存控制单元连接,用于根据所述目标矩阵的配置信息和当前读取时刻确定与当前读取的列向量对应的左移量,并根据所述左移量生成左移控制指令;循环左移单元,与所述动态缓存区和所述循环左移控制单元连接,用于响应所述左移控制指令,根据所述左移量对所述当前读取的列向量进行循环左移,以生成用于构建与所述目标矩阵对应的转置矩阵的左移列向量。
5、在本技术的一个实施例中,基于上述方案,所述矩阵转置系统还包括:第一输入端口,与所述循环右移控制单元连接,用于向所述循环右移控制单元输入命令,所述命令用于指示与所述目标矩阵对应的配置信息;第二输入端口,与所述循环右移单元连接,用于向所述循环右移单元输入所述目标矩阵中的行向量。
6、在本技术的一个实施例中,基于上述方案,所述矩阵转置系统还包括:输出网络控制单元,与所述循环左移控制单元连接,用于根据预设输出数据量和所述左移列向量包含的数据量确定输出列向量数,并根据所述输出列向量数生成输出控制指令;输出网络单元,与所述循环左移单元和所述输出网络控制单元连接,用于响应所述输出控制指令,将所述左移列向量根据输出列向量数进行输出并重组,以生成与所述目标矩阵对应的转置矩阵。
7、在本技术的一个实施例中,基于上述方案,所述矩阵转置系统还包括:命令队列缓存单元,与所述循环右移控制单元和所述缓存控制单元连接,用于缓存与多个转置任务对应的命令序列。
8、在本技术的一个实施例中,基于上述方案,所述矩阵转置系统还包括:打拍器,用于进行打拍处理,以控制所述矩阵转置系统中命令和数据的时序。
9、在本技术的一个实施例中,基于上述方案,所述矩阵转置系统包括:第一打拍器、第二打拍器、第三打拍器、第四打拍器、第五打拍器、第六打拍器和第七打拍器;其中,所述第一打拍器位于所述第一输入端口和所述循环右移控制单元之间,用于对所述第一输入端口输入的命令进行打拍处理;所述第二打拍器位于所述循环右移单元和所述缓存控制单元之间,用于对经所述第一打拍器打拍处理后的命令进行打拍处理;所述第三打拍器位于所述循环左移控制单元和所述输出网络控制单元之间,用于对经所述第二打拍器处理的命令进行打拍处理;所述第四打拍器位于所述第二输入端口和所述循环右移单元之间,用于对所述第二输入端口输入的行向量进行打拍处理;所述第五打拍器位于所述循环右移单元和所述动态缓存区之间,用于对所述右移行向量进行打拍处理;所述第六打拍器位于所述循环左移单元和所述输出网络单元之间,用于对所述左移列向量进行打拍;所述第七打拍器位于所述输出网络单元之后,用于对根据输出列向量数输出的左移列向量进行打拍处理;并且,通过所述第一打拍器打拍后的命令和所述第四打拍器打拍后的所述行向量同步输出,通过所述第二打拍器打拍后的命令和所述第五打拍器打拍后的所述右移行向量同步输出,通过所述第三打拍器打拍后的命令和所述第六打拍器打拍后的所述左移列向量同步输出。
10、在本技术的一个实施例中,基于上述方案,所述第一输入端口、所述第一打拍器、所述循环右移控制单元、所述第二打拍器、所述缓存控制单元、所述命令队列缓存单元、所述循环左移控制单元、所述第三打拍器和所述输出网络控制单元构成所述矩阵转置系统中的控制指令通路,所述第二输入端口、所述第四打拍器、所述循环右移单元、所述第五打拍器、所述动态缓存区、所述循环左移单元、所述第六打拍器、所述输出网络单元和所述第七打拍器构成所述矩阵转置系统中的数据通路。
11、在本技术的一个实施例中,基于上述方案,所述缓存控制单元包括依次连接的反压产生单元、写地址生成单元和读地址向量生成单元,其中所述反压产生单元与所述循环右移控制单元连接,用于根据所述动态缓存区的占用情况和所述目标矩阵的配置信息确定产生反压信号或者写入信号,所述写地址生成单元用于接收所述反压产生单元发送的写入信号,根据所述目标矩阵的配置信息为所述目标矩阵分配所述目标缓存区,所述读地址向量生成单元用于对所述目标缓存区中的数据进行阶梯读取,以获取所述列向量。
12、在本技术的一个实施例中,基于上述方案,所述读地址向量生成单元包括多个地址生成组件,各所述地址生成组件均为饱和减法单元,并且各所述地址生成组件与所述目标缓存区中各缓存单元一一对应,用于根据各所述缓存单元的序号和当前读取时刻确定与各所述缓存单元对应的读取地址,并根据所述读取地址生成读取信号。
13、在本技术的一个实施例中,所述配置信息包括所述目标矩阵的矩阵规格;基于上述方案,通过所述循环右移控制单元根据所述目标矩阵的矩阵规格确定所述当前输入行向量对应的行向量序号,其中所述行向量序号为从0开始递增的序号;将所述当前输入行向量对应的行向量序号作为与所述当前输入行向量对应的右移量。
14、在本技术的一个实施例中,基于上述方案,通过所述循环右移单元响应所述右移控制指令,根据所述右移量对所述当前输入行向量进行循环右移。
15、在本技术的一个实施例中,所述配置信息包括所述目标矩阵的矩阵规格;所述矩阵转置系统包括反压产生单元和写地址生成单元;所述缓存区包括多个缓存单元,并且各所述缓存单元包括多个缓存位;基于上述方案,通过所述反压产生单元获取所述动态缓存区中包含未写缓存位的目标缓存单元的数量和各所述目标缓存单元中未写缓存位的数量;当所述矩阵规格的列数小于或等于所述目标缓存单元的数量,且所述矩阵规格的行数小于或等于所述未写缓存位的数量时,通过所述写地址生成单元在所述目标缓存单元和所述未写缓存位中确定所述目标缓存区,以将所述右移行向量中各数据依序写入所述目标缓存区的未写缓存位中。
16、在本技术的一个实施例中,基于上述方案,当所述矩阵规格的行数大于各所述目标缓存单元中未写缓存位的数量,或者所述矩阵规格的列数大于所述目标缓存单元的数量时,所述反压产生单元生成反压信号,拒绝将所述右移行向量写入所述动态缓存区。
17、在本技术的一个实施例中,所述矩阵转置系统包括读地址向量生成单元,所述读地址向量生成单元包含多个读地址生成组件,并且各所述读地址生成组件与所述动态缓存区中各缓存单元一一对应;基于上述方案,获取所述目标缓存区中第n个缓存单元的序号与当前读取时刻之间的差值;当所述差值超出地址表示范围时,基于饱和减法确定位于所述第n个缓存单元的目标缓存位地址;读取所述目标缓存位中的数据,并根据从所述目标缓存区中所有缓存单元读取的数据构建所述列向量;其中,n和所述当前读取时刻均为非负整数,所述地址表示范围为所述缓存单元中第一个缓存位地址和最后一个缓存位地址所构建的范围。
18、在本技术的一个实施例中,基于上述方案,通过所述循环左移控制单元根据所述目标矩阵的矩阵规格确定当前读取时刻对应的左移量,并根据所述左移量生成左移控制指令;通过所述循环左移单元响应所述左移控制指令,根据所述左移量对所述列向量进行循环左移,以获取所述左移列向量。
19、在本技术的一个实施例中,基于上述方案,当获取与所述目标矩阵对应的所有左移列向量后,通过所述输出网络控制单元根据预设输出数据量和各所述左移列向量包含的数据量确定输出列向量数,并根据所述输出列向量数生成输出控制指令;通过所述输出网络单元响应所述输出控制指令,根据所述输出列向量数输出所述左移列向量,以便根据所述左移列向量重组获取所述转置矩阵。
20、在本技术的一个实施例中,基于上述方案,将与不同转置任务对应的命令按序缓存在命令队列单元中,以便根据所述命令队列单元中的命令存储顺序执行相应地任务。
21、根据本技术实施例的一个方面,提供一种芯片,该芯片包括上述实施例中所述的矩阵转置系统。
22、本技术实施例提供的数据处理方法,应用于设置于直接内存访问中的矩阵转置系统,在获取目标矩阵对应的配置信息后,根据该配置信息确定与当前输入行向量对应的右移量,当前输入行向量为目标矩阵中一行向量;接着根据右移量对当前输入行向量进行右移处理,以获取与当前输入行向量对应的右移行向量;然后根据配置信息在动态缓存区中确定与目标矩阵对应的目标缓存区,并将右移行向量写入目标缓存区中;当完成目标矩阵的缓存后,阶梯读取目标缓存区中的列向量,并对每次读取的列向量进行循环左移形成左移列向量,以根据左移列向量确定与目标矩阵对应的转置矩阵。本技术一方面能够在线处理矩阵转置任务,无需通过算术逻辑单元调用大量的load/store指令从一级缓存中读取矩阵数据进行转置,节省了缓存空间和算力,并提高了运行效率;另一方面能够通过动态缓存区对不同矩阵进行缓存空间的动态分配,进一步提高了缓存空间的利用率。
23、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。