CN112486872A - 数据处理方法及装置 - Google Patents
数据处理方法及装置 Download PDFInfo
- Publication number
- CN112486872A CN112486872A CN202011360968.7A CN202011360968A CN112486872A CN 112486872 A CN112486872 A CN 112486872A CN 202011360968 A CN202011360968 A CN 202011360968A CN 112486872 A CN112486872 A CN 112486872A
- Authority
- CN
- China
- Prior art keywords
- matrix
- data
- matrix calculation
- calculation result
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 22
- 239000011159 matrix material Substances 0.000 claims abstract description 425
- 238000004364 calculation method Methods 0.000 claims abstract description 298
- 230000005540 biological transmission Effects 0.000 claims abstract description 56
- 238000000034 method Methods 0.000 claims abstract description 32
- 238000012545 processing Methods 0.000 claims abstract description 25
- 239000002699 waste material Substances 0.000 abstract description 7
- 238000004891 communication Methods 0.000 abstract description 6
- 239000013598 vector Substances 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 101100011511 Mus musculus Elovl6 gene Proteins 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1684—Details of memory controller using multiple buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
本申请公开了一种数据处理方法及装置,属于通信技术领域。所述方法包括:接收针对写入内存的第一矩阵数据与第二矩阵数据的矩阵计算指令;响应于所述矩阵计算指令,调用设置于所述内存中的矩阵计算单元,根据所述矩阵计算指令的计算方式,对所述第一矩阵数据和所述第二矩阵数据进行计算,得到矩阵计算结果;根据所述矩阵计算指令对应的数据传输方式,传输所述矩阵计算结果。本申请可以降低处理器和内存之间因大量数据搬运造成的时间浪费,且提高了处理器的利用率及数据处理效率。
Description
技术领域
本申请属于通信技术领域,具体涉及一种数据处理方法及装置。
背景技术
计算机系统中的处理器内部的数据处理速度和内存接口之间的速度差异越来越大,处理器在处理涉及到需要大量数据搬运的计算时,数据在内存和处理器之间的传输浪费了大量的时间,处理器不能被高效的利用。而在处理器涉及到大量矩阵运算时,需要在处理器和内存之间搬运大量的数据,并在处理器内部缓存再计算,此种处理方式极大的浪费了处理时间,降低了处理器的利用率,且数据的处理效率较低。
发明内容
本申请实施例的目的是提供一种数据处理方法及装置,能够解决现有的数据处理方式浪费数据处理时间,降低了处理器的利用率,且数据处理效率较低的问题。
为了解决上述技术问题,本申请是这样实现的:
第一方面,本申请实施例提供了一种数据处理方法,该方法包括:
接收针对写入内存的第一矩阵数据与第二矩阵数据的矩阵计算指令;
响应于所述矩阵计算指令,调用设置于所述内存中的矩阵计算单元,根据所述矩阵计算指令的计算方式,对所述第一矩阵数据和所述第二矩阵数据进行计算,得到矩阵计算结果;
根据所述矩阵计算指令对应的数据传输方式,传输所述矩阵计算结果。
第二方面,本申请实施例提供了一种数据处理装置,该装置包括:
矩阵计算指令接收模块,用于接收针对写入内存的第一矩阵数据与第二矩阵数据的矩阵计算指令;
矩阵计算结果获取模块,用于响应于所述矩阵计算指令,调用设置于所述内存中的矩阵计算单元,根据所述矩阵计算指令的计算方式,对所述第一矩阵数据和所述第二矩阵数据进行计算,得到矩阵计算结果;
矩阵计算结果传输模块,用于根据所述矩阵计算指令对应的数据传输方式,传输所述矩阵计算结果。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的数据处理方法的步骤。
第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的数据处理方法的步骤。
第五方面,本申请实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的数据处理方法。
在本申请实施例中,通过接收针对写入内存的第一矩阵数据与第二矩阵数据的矩阵计算指令,响应于矩阵计算指令,调用设置于内存中的矩阵计算单元,根据矩阵计算指令的计算方式,对第一矩阵数据和第二矩阵数据进行计算,得到矩阵计算结果,根据矩阵计算指令对应的数据传输方式,传输矩阵计算结果。本申请实施例通过预先在内存中设置矩阵计算单元进行相应的矩阵数据的计算,实现在内存内部快速完成大量矩阵运算,降低处理器和内存之间因大量数据搬运造成的时间浪费,且提高了处理器的利用率及数据处理效率。
附图说明
图1为本申请实施例提供的一种数据处理方法的步骤流程图;
图2为本申请实施例提供的一种内存架构的示意图;
图3为本申请实施例提供的一种连续地址行存储矩阵数据的示意图;
图4为本申请实施例提供的一种连续地址列存储矩阵数据的示意图;
图5为本申请实施例提供的一种连续地址列输出矩阵数据的示意图;
图6为本申请实施例提供的一种连续地址行输出矩阵数据的示意图;
图7为本申请实施例提供的一种数据处理装置的结构示意图;
图8为本申请实施例提供的一种电子设备的结构示意图;
图9为本申请实施例提供的另一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的数据处理方法进行详细地说明。
参照图1,示出了本申请实施例提供的一种数据处理方法的步骤流程图,如图1所示,该数据处理方法具体可以包括如下步骤:
步骤101:接收针对写入内存的第一矩阵数据与第二矩阵数据的矩阵计算指令。
本申请实施例可以应用于利用内存中的矩阵计算单元进行矩阵计算,并将矩阵计算结果传输至处理器的场景中。
第一矩阵数据和第二矩阵数据是指预先存储于内存内的需要进行矩阵计算的矩阵数据。例如,在内存内保存的矩阵数据包括矩阵数据A、矩阵数据B和矩阵数据C,若需要对矩阵数据A和矩阵数据B进行点乘计算,此时,可以将矩阵数据A作为第一矩阵数据,将矩阵数据B作为第二矩阵数据,或者将矩阵数据B作为第一矩阵数据,并将矩阵数据A作为第二矩阵数据等。
可以理解地,上述示例仅是为了更好地理解本申请实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
在本实施例中,写入内存的矩阵数据可以为内存增加矩阵写入的指令,以保证从非易失存储器读出的矩阵能够有效的被存储,同时方便MALU进行计算。增加的指令分别为wmc(write matrix column),wmr(write matrix row)。现将这两个指令说明如下:
1、WMC(write matrix column)
该指令用于将从nand等非易失存储上读取的矩阵数据,按照连续地址列(CACM)的方式写入内存当中。内存的CA bus发送该指令,完成后发送NOP,之后发送要写入的地址,地址完成后,DATA Bus开始传送矩阵数据,CA Bus此时等待一个NOP后接着发送矩阵的Row大小和Column大小信息。内存按照接收到的Row和Column信息来判断DATA Bus上的数据量。
所有DATA Bus上的写入数据都按照之前所述的连续地址列(CACM)的方式进行解析、存储。
2、WMR(write matrix row)
该指令用于将从nand等非易失存储上读取的矩阵数据,按照连续地址行(CARM)的方式写入内存当中。
内存的CA bus发送该指令,完成后发送NOP,之后发送要写入的地址,地址完成后,DATA Bus开始传送矩阵数据,CA Bus此时等待一个NOP后接着发送矩阵的Row大小和Column大小信息。内存按照接收到的Row和Column信息来判断DATA Bus上的数据量。
所有DATA Bus上的写入数据都按照之前所述的连续地址行(CARM)的方式进行解析、存储。
矩阵计算指令是指发出的用于对矩阵数据A和矩阵数据B进行计算的指令,在本示例中,矩阵计算指令可以为点乘计算指令,也可以为加法计算指令,还可以为内积计算指令等,具体地,可以根据业务需求而定,本实施例对此不加以限制。
在需要进行矩阵数据的计算时,可以向内存发送针对第一矩阵数据和第二矩阵数据的矩阵计算指令。
在接收到针对写入内存的第一矩阵数据和第二矩阵数据的矩阵计算指令之后,执行步骤102。
步骤102:响应于所述矩阵计算指令,调用设置于所述内存中的矩阵计算单元,根据所述矩阵计算指令的计算方式,对所述第一矩阵数据和所述第二矩阵数据进行计算,得到矩阵计算结果。
矩阵计算单元是指预先设置于内存内的进行矩阵数据计算的单元,如图2所示,为实现内存能够进行矩阵运算,需要在现有的内存结构上增加新的计算单元(接口基本保持现有设计,仅增加一个IO(Input/Output,输入/输出)接口),根据本申请的指令设计,需要在内存内增加矩阵计算单元(本实施例中称之为MatrixArithmetic Logic Unit,MALU,包括向量乘法器、向量加法器等),如图2所示,CA Bus、DATA Bus为数据总线。
矩阵计算单元专门用来处理新增加的矩阵相关的计算指令。对于任意矩阵数据Am×p与Bp×n矩阵内积乘法,可以用系数公式(1)表示:
上述公式(1)中,Am,~表示A矩阵的第m行向量,B~,n表示B矩阵的第n列向量。
除此之外,矩阵的点乘、系数乘法和矩阵加减法和都可以用普通的加法器和反相器实现。新增加的向量乘法器、加法器、反相器,构成内存内支持矩阵运算的计算单元MALU。
矩阵计算结果是指对第一矩阵数据和第二矩阵数据进行相应计算之后所得到的结果。
在接收到针对写入内存中的第一矩阵数据和第二矩阵数据的矩阵计算指令之后,可以响应该矩阵计算指令,并调用设置于内存中的矩阵计算单元,根据矩阵计算指令的计算方式,对第一矩阵数据和第二矩阵数据进行计算,得到矩阵计算结果。例如,在矩阵计算指令对应的计算方式为内积计算时,可以对第一矩阵数据和第二矩阵数据进行内积计算,以得到内积计算结果,并将内积计算结果作为两个矩阵数据的计算结果,即矩阵计算结果。而在矩阵计算指令对应的计算方式为加法计算时,可以对第一矩阵数据和第二矩阵数据进行加法计算,以得到加法计算结果,并将加法计算结果作为两个矩阵数据的计算结果,即矩阵计算结果。
可以理解地,上述示例仅是为了更好地理解本申请实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
在调用设置于内存中的矩阵计算单元,根据矩阵计算指令的计算方式,对第一矩阵数据和第二矩阵数据进行计算,得到矩阵计算结果之后,执行步骤103。
步骤103:根据所述矩阵计算指令对应的数据传输方式,传输所述矩阵计算结果。
数据传输方式是指矩阵计算指令内添加的进行矩阵数据传输的方式,在本实施例中,数据传输方式可以包括:连续地址行传输方式和连续地址列传输方式。
在获取到第一矩阵数据和第二矩阵数据对应的矩阵计算结果之后,可以根据矩阵计算指令对应的数据传输方式传输矩阵计算结果。
本申请实施例通过预先在内存中设置矩阵计算单元进行相应的矩阵数据的计算,实现在内存内部快速完成大量矩阵运算,降低处理器和内存之间因大量数据搬运造成的时间浪费,且提高了处理器的利用率及数据处理效率。
在本实施例中,可以在内存外部设置一个状态标识,通过状态标识来判定矩阵计算单元的运行状态,避免出现本次运算还未完成,就有下次计算请求的需求的问题,具体地,可以结合下述具体实现方式进行详细描述。
在本申请的一种具体实现方式中,在上述步骤102之前,还可以包括:
步骤A1:根据所述矩阵计算单元对应的状态标识,确定所述矩阵计算单元的运行状态。
在本实施例中,状态标识是指用于指示矩阵计算单元的运行状态的标识,在本示例中,为解决计算需求的冲突,需要在可计算内存外部增加信号源MatrixBusy,当MatrixBusy管脚处于繁忙状态时CA Bus上的关于矩阵的计算指令都无效。只有当MatrixBusy管脚处于空闲状态时,才能响应相应的矩阵计算指令。
当然,不仅限于此,在具体实现方式中,还可以设置其它方式作为矩阵计算单元的状态标识获取方式,具体地,可以根据业务需求而定,本实施例对此不加以限制。
在接收到第一矩阵数据和第二矩阵数据的矩阵计算指令之后,可以根据矩阵计算单元对应的状态标识,确定出矩阵计算单元的运行状态。
在确定出矩阵计算单元的运行状态之后,执行步骤A2,或者,执行步骤A3。
步骤A2:在所述运行状态为空闲状态的情况下,执行上述步骤102。
步骤A3:在所述运行状态为非空闲状态的情况下,缓存所述矩阵计算指令。
在确定矩阵计算单元的运行状态为空闲状态的情况下,可以执行调用设置于内存中的矩阵计算单元,根据矩阵计算指令的计算方式,对第一矩阵数据和第二矩阵数据进行计算,得到矩阵计算结果的步骤。
而在确定矩阵计算单元的运行状态为非空闲状态的情况下,则缓存矩阵计算指令,在矩阵计算单元当前的计算任务完成之后,再执行缓存的矩阵计算指令。
本申请实施例通过预先添加矩阵计算单元的运行状态标识,可以避免出现矩阵计算单元繁忙,且接收的计算任务过多导致系统出现异常的情况。
在本实施例中,可以根据数据传输方式对矩阵计算结果进行传输,具体地,可以结合下述具体实现方式进行详细描述。
在本实施例中,增加的指令针对已经存储在内存上分别以CARM方式存储的矩阵A和以CACM方式存储的矩阵B进行内积的运算(A、B矩阵必须按照以上方式存储,该系列操作指令默认A、B矩阵采用以上的方式进行存储)。为此,增加的指令分别为miprc(matrixinner product read column),miprr(matrix inner product read row),mipsc(matrixinner product store column),mipsr(matrix inner product store row)。
在本申请的另一种具体实现方式中,上述步骤103可以包括:
子步骤B1:在所述数据传输方式为连续列传输方式的情况下,将所述矩阵计算结果按照所述连续列传输方式传输至命令地址总线,并通过所述命令地址总线将所述矩阵计算结果传输至处理器。
在本实施例中,连续列传输方式是指按照连续列的方式进行矩阵数据传输的方式,矩阵计算指令的计算方式以内积计算方式为例,此时,矩阵计算指令为MIPRC指令,该指令通过处理器发向可计算内存,可计算内存将内部的两个矩阵进行矩阵内积运算,并将计算结果按照列信息格式返回到可计算内存接口处。该指令首先发出,然后跟着矩阵A的地址,矩阵A的行列大小,之后是矩阵B的地址以及矩阵B的行列大小。在经过一段延时之后,经过MALU计算单元的处理,按照连续列的方式将计算结果输出到DATA Bus上。在计算A与B的内积的时候,是按照向量的方式进行的,在MALU内部实际进行的运算可以如图5所示,由于该指令默认A、B向量的存储方式分别为CARM和CACM,MALU只需要将连续地址的行列数据读入MALU单元缓存,并在向量乘法器中作向量计算,就能迅速输出该位置的计算结果。按照上图的方式进行计算,该计算顺序就可以输出正确的CACM计算结果a11a21...amn。得到的结果持续的送出到DATA bus。
在数据传输方式为连续行传输方式的情况下,可以将矩阵计算结果按照连续列传输方式传输至命令地址总线,并通过命令地址总线将传输至处理器。
子步骤B2:在所述数据传输方式为连续行传输方式的情况下,将所述矩阵计算结果按照所述连续行方式传输传输至命令地址总线,并通过所述命令地址总线将所述矩阵计算结果传输至处理器。
在本实施例中,连续行传输方式是指按照连续行的方式进行矩阵数据传输的方式,矩阵计算指令的计算方式以内积计算方式为例,此时,矩阵计算指令为MIPRR指令,该指令通过处理器发向可计算内存,可计算内存将内部的两个矩阵进行矩阵内积运算,并将计算结果按照行信息格式返回到可计算内存接口处。该指令首先发出,然后跟着矩阵A的地址,矩阵A的行列大小,之后是矩阵B的地址以及矩阵B的行列大小。在经过一段延时之后,经过MALU计算单元的处理,按照连续行的方式将计算结果输出到DATA Bus上。在计算A与B的内积的时候,是按照向量的方式进行的,在MALU内部实际进行的运算可以如图6所示,由于该指令默认A、B向量的存储方式分别为CARM和CACM,MALU只需要将连续地址的行列数据读入MALU单元缓存,并在向量乘法器中作向量计算,就能迅速输出该位置的计算结果。按照上图的方式进行计算,该计算顺序就可以输出正确的CARM计算结果a11a21...amn。得到的结果持续的送出到DATA bus。
当然,在本实施例中,矩阵数据的计算还可以包括矩阵的点乘计算和矩阵的加法计算,具体地,可以进行如下详细描述。
一、矩阵的点乘计算
为内存增加矩阵加法指令,以支持任意大小的矩阵加法运算。矩阵的加法运算要求A、B矩阵拥有同样的大小以及相同的存储方式。
矩阵的加法,是指两个同样大小的矩阵,将其对应位置上的元素进行相加,得到的矩阵就是加法的结果。矩阵的加法计算只需要普通的加法器即可。
为此,增加的指令分别为marc(matrix addition read column),marr(matrixaddition read row),masc(matrix addition store column),masr(matrix additionstore row)。现将这几种指令说明如下:
a)MARC
该指令通过处理器发向可计算内存,可计算内存将内部的两个矩阵(均以CACM方式存储,该指令会默认A、B矩阵为CACM存储)进行矩阵加法运算,并将计算结果按照列信息格式返回到可计算内存接口处。
该指令首先发出,然后跟着矩阵A的地址,矩阵A的行列大小,之后是矩阵B的地址(因为矩阵B与矩阵A同大小,所以无需矩阵B的大小信息)。在经过一段延时之后,经过MALU计算单元的处理,按照连续列的方式将计算结果输出到DATA Bus上。
MALU按照顺序读入矩阵A、B的元素做简单加法后,直接逐个将计算结果输出到IO端口。
b)MARR
该指令通过处理器发向可计算内存,可计算内存将内部的两个矩阵(均以CARM方式存储,该指令会默认A、B矩阵为CARM存储)进行矩阵加法运算,并将计算结果按照行信息格式返回到可计算内存接口处。
该指令首先发出,然后跟着矩阵A的地址,矩阵A的行列大小,之后是矩阵B的地址(因为矩阵B与矩阵A同大小,所以无需矩阵B的大小信息)。在经过一段延时之后,经过MALU计算单元的处理,按照连续列的方式将计算结果输出到DATA Bus上。
MALU按照顺序读入矩阵A、B的元素做简单加法后,直接逐个将计算结果输出到IO端口。
c)MASC
该指令通过处理器发向可计算内存,可计算内存将内部的两个矩阵(均以CACM方式存储,该指令会默认A、B矩阵为CACM存储)进行矩阵加法运算,并将计算结果按照列信息格式写入到指定内存地址的连续空间上。
首先发出该指令,然后跟着矩阵A的地址,行列大小,之后是矩阵B的地址和行列大小,最后是计算结果将被存入的地址C。
一旦指令有效,MatrixBusy进入繁忙状态,计算存储完成后,MatrixBusy变成空闲状态。
d)MASR
该指令通过处理器发向可计算内存,可计算内存将内部的两个矩阵(均以CARM方式存储,该指令会默认A、B矩阵为CARM存储)进行矩阵加法运算,并将计算结果按照行信息格式写入到指定内存地址的连续空间上。
首先发出该指令,然后跟着矩阵A的地址,行列大小,之后是矩阵B的地址和行列大小,最后是计算结果将被存入的地址C。
一旦指令有效,MatrixBusy进入繁忙状态,计算存储完成后,MatrixBusy变成空闲状态。
本申请实施例通过结合不同的指令实现不同的矩阵数据计算,及矩阵计算结果的传输,能够实现不同方式的计算结果的传输,实现了矩阵计算结果的传输,提高了处理器的利用效率。
在本实施例中,如果不需要将矩阵计算结果传输至处理器,则可以按照数据写入方式写入内存,具体地,可以结合下述具体实现方式进行如下详细描述。
在本申请的另一种具体实现方式中,在上述步骤102之后,还可以包括:
步骤C1:根据所述矩阵计算指令对应的数据写入方式,将所述矩阵计算结果写入所述内存。
在本申请实施例中,数据写入方式(即数据存储方式)是指用于将矩阵数据写入内存的方式。
在得到第一矩阵数据和第二矩阵数据的矩阵计算结果之后,可以根据矩阵计算指令的数据写入方式,将矩阵计算结果写入内存,即在矩阵计算指令中包含了矩阵计算结果是否写入内存的条件,在该矩阵计算指令中包含有写入内存的条件时,即该矩阵计算指令中包含了数据写入方式,在得到第一矩阵数据和第二矩阵数据的矩阵计算结果之后,可以按照数据写入方式将矩阵计算结果写入内存。
在本实施例中,数据写入方式可以包括连续列写入方式和连续行写入方式,对于这两种数据写入方式将结合下述具体实现方式进行详细描述。
在本实施例中,该发明的矩阵在内存中有两种存储方式,分别是按照连续地址行存储和按照连续地址列存储两种方式。
在本申请的另一种具体实现方式中,上述步骤C1可以包括:
子步骤D1:在所述数据写入方式为连续列写入方式的情况下,将所述矩阵计算结果按照所述连续列写入方式写入所述内存。
在本实施例中,连续列写入方式是指按照连续列的方式将矩阵数据写入内存的方式。
在矩阵计算指令中包含的数据写入方式为连续列写入方式,且获取到第一矩阵数据和第二矩阵数据的矩阵计算结果之后,可以将矩阵计算结果按照连续列写入方式写入内存,例如,如图4所示,按照列遍历的方式,将所有矩阵元素在连续地址上进行存储。存储在内存单元上的数据与传统内存上的数据并无不同,使用传统内存的read指令,读取的就是随机数据,按照该发明的指令进行操作,就是矩阵数据。
子步骤D2:在所述数据写入方式为连续行写入方式的情况下,将所述矩阵计算结果按照所述连续行写入方式写入所述内存。
在本实施例中,连续行写入方式是指按照连续行的方式将矩阵数据写入内存的方式。
在矩阵计算指令中包含的数据写入方式为连续行写入方式,且获取到第一矩阵数据和第二矩阵数据的矩阵计算结果之后,可以将矩阵计算结果按照连续行写入方式写入内存,例如,如图4所示,按照行遍历的方式,将所有矩阵元素在连续地址上进行存储。存储在内存单元上的数据与传统内存上的数据并无不同,使用传统内存的read指令,读取的就是随机数据,按照该发明的指令进行操作,就是矩阵数据。
在本实施例中,为了能够充分利用本发明的可计算内存的矩阵运算能力,需要编译器层面进行修改,将矩阵相关的计算转化为以上指令,同时针对矩阵运算的部分要有相应的编码指导,以保证对内存计算资源的充分利用。
本申请实施例提供的数据处理方法,通过接收针对写入内存的第一矩阵数据与第二矩阵数据的矩阵计算指令,响应于矩阵计算指令,调用设置于内存中的矩阵计算单元,根据矩阵计算指令的计算方式,对第一矩阵数据和第二矩阵数据进行计算,得到矩阵计算结果,根据矩阵计算指令对应的数据传输方式,传输矩阵计算结果。本申请实施例通过预先在内存中设置矩阵计算单元进行相应的矩阵数据的计算,实现在内存内部快速完成大量矩阵运算,降低处理器和内存之间因大量数据搬运造成的时间浪费,且提高了处理器的利用率及数据处理效率。
需要说明的是,本申请实施例提供的数据处理方法,执行主体可以为数据处理装置,或者该数据处理装置中的用于执行数据处理方法的控制模块。本申请实施例中以数据处理装置执行数据处理方法为例,说明本申请实施例提供的数据处理装置。
参照图7,示出了本申请实施例提供的一种数据处理装置的结构示意图,如图7所示,该数据处理装置700具体可以包括如下模块:
矩阵计算指令接收模块710,用于接收针对写入内存的第一矩阵数据与第二矩阵数据的矩阵计算指令;
矩阵计算结果获取模块720,用于响应于所述矩阵计算指令,调用设置于所述内存中的矩阵计算单元,根据所述矩阵计算指令的计算方式,对所述第一矩阵数据和所述第二矩阵数据进行计算,得到矩阵计算结果;
矩阵计算结果传输模块730,用于根据所述矩阵计算指令对应的数据传输方式,传输所述矩阵计算结果。
可选地,还包括:
运行状态确定模块,用于根据所述矩阵计算单元对应的状态标识,确定所述矩阵计算单元的运行状态;
计算结果执行模块,用于在所述运行状态为空闲状态的情况下,执行所述矩阵计算结果获取模块;
矩阵计算指令缓存模块,用于在所述运行状态为非空闲状态的情况下,缓存所述矩阵计算指令。
可选地,所述矩阵计算结果传输模块730包括:
第一计算结果传输单元,用于在所述数据传输方式为连续列传输方式的情况下,将所述矩阵计算结果按照所述连续列传输方式传输至命令地址总线,并通过所述命令地址总线将所述矩阵计算结果传输至处理器;
第二计算结果传输单元,用于在所述数据传输方式为连续行传输方式的情况下,将所述矩阵计算结果按照所述连续行方式传输传输至命令地址总线,并通过所述命令地址总线将所述矩阵计算结果传输至处理器。
可选地,还包括:
计算结果写入模块,用于根据所述矩阵计算指令对应的数据写入方式,将所述矩阵计算结果写入所述内存。
可选地,所述计算结果写入模块包括:
第一计算结果写入单元,用于在所述数据写入方式为连续列写入方式的情况下,将所述矩阵计算结果按照所述连续列写入方式写入所述内存;
第二计算结果写入单元,用于在所述数据写入方式为连续行写入方式的情况下,将所述矩阵计算结果按照所述连续行写入方式写入所述内存。
本申请实施例提供的数据处理装置,通过接收针对写入内存的第一矩阵数据与第二矩阵数据的矩阵计算指令,响应于矩阵计算指令,调用设置于内存中的矩阵计算单元,根据矩阵计算指令的计算方式,对第一矩阵数据和第二矩阵数据进行计算,得到矩阵计算结果,根据矩阵计算指令对应的数据传输方式,传输矩阵计算结果。本申请实施例通过预先在内存中设置矩阵计算单元进行相应的矩阵数据的计算,实现在内存内部快速完成大量矩阵运算,降低处理器和内存之间因大量数据搬运造成的时间浪费,且提高了处理器的利用率及数据处理效率。
本申请实施例中的数据处理装置可以是装置,也可以是终端中的部件、集成电路、或芯片。该装置可以是移动电子设备,也可以为非移动电子设备。示例性的,移动电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、可穿戴设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本或者个人数字助理(personaldigital assistant,PDA)等,非移动电子设备可以为服务器、网络附属存储器(NetworkAttached Storage,NAS)、个人计算机(personal computer,PC)、电视机(television,TV)、柜员机或者自助机等,本申请实施例不作具体限定。
本申请实施例中的数据处理装置可以为具有操作系统的装置。该操作系统可以为安卓(Android)操作系统,可以为ios操作系统,还可以为其他可能的操作系统,本申请实施例不作具体限定。
本申请实施例提供的数据处理装置能够实现图1的方法实施例实现的各个过程,为避免重复,这里不再赘述。
可选地,如图8所示,本申请实施例还提供一种电子设备800,包括处理器801,存储器802,存储在存储器802上并可在所述处理器801上运行的程序或指令,该程序或指令被处理器801执行时实现上述数据处理方法实施例的或指令,该程序或指令被处理器执行时实现上述数据处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。
本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述数据处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
接收针对写入内存的第一矩阵数据与第二矩阵数据的矩阵计算指令;
响应于所述矩阵计算指令,调用设置于所述内存中的矩阵计算单元,根据所述矩阵计算指令的计算方式,对所述第一矩阵数据和所述第二矩阵数据进行计算,得到矩阵计算结果;
根据所述矩阵计算指令对应的数据传输方式,传输所述矩阵计算结果。
2.根据权利要求1所述的方法,其特征在于,在所述调用设置于所述内存中的矩阵计算单元,根据所述矩阵计算指令的计算方式,对所述第一矩阵数据和所述第二矩阵数据进行计算,得到矩阵计算结果之前,还包括:
根据所述矩阵计算单元对应的状态标识,确定所述矩阵计算单元的运行状态;
在所述运行状态为空闲状态的情况下,执行所述调用设置于所述内存中的矩阵计算单元,根据所述矩阵计算指令的计算方式,对所述第一矩阵数据和所述第二矩阵数据进行计算,得到矩阵计算结果的步骤;
在所述运行状态为非空闲状态的情况下,缓存所述矩阵计算指令。
3.根据权利要求1所述的方法,其特征在于,所述根据所述矩阵计算指令对应的数据传输方式,传输所述矩阵计算结果,包括:
在所述数据传输方式为连续列传输方式的情况下,将所述矩阵计算结果按照所述连续列传输方式传输至命令地址总线,并通过所述命令地址总线将所述矩阵计算结果传输至处理器;
在所述数据传输方式为连续行传输方式的情况下,将所述矩阵计算结果按照所述连续行方式传输传输至命令地址总线,并通过所述命令地址总线将所述矩阵计算结果传输至处理器。
4.根据权利要求1所述的方法,其特征在于,在所述调用设置于所述内存中的矩阵计算单元,根据所述矩阵计算指令的计算方式,对所述第一矩阵数据和所述第二矩阵数据进行计算,得到矩阵计算结果之后,还包括:
根据所述矩阵计算指令对应的数据写入方式,将所述矩阵计算结果写入所述内存。
5.根据权利要求4所述的方法,其特征在于,所述根据所述矩阵计算指令对应的数据写入方式,将所述矩阵计算结果写入所述内存,包括:
在所述数据写入方式为连续列写入方式的情况下,将所述矩阵计算结果按照所述连续列写入方式写入所述内存;
在所述数据写入方式为连续行写入方式的情况下,将所述矩阵计算结果按照所述连续行写入方式写入所述内存。
6.一种数据处理装置,其特征在于,包括:
矩阵计算指令接收模块,用于接收针对写入内存的第一矩阵数据与第二矩阵数据的矩阵计算指令;
矩阵计算结果获取模块,用于响应于所述矩阵计算指令,调用设置于所述内存中的矩阵计算单元,根据所述矩阵计算指令的计算方式,对所述第一矩阵数据和所述第二矩阵数据进行计算,得到矩阵计算结果;
矩阵计算结果传输模块,用于根据所述矩阵计算指令对应的数据传输方式,传输所述矩阵计算结果。
7.根据权利要求6所述的装置,其特征在于,还包括:
运行状态确定模块,用于根据所述矩阵计算单元对应的状态标识,确定所述矩阵计算单元的运行状态;
计算结果执行模块,用于在所述运行状态为空闲状态的情况下,执行所述矩阵计算结果获取模块;
矩阵计算指令缓存模块,用于在所述运行状态为非空闲状态的情况下,缓存所述矩阵计算指令。
8.根据权利要求6所述的装置,其特征在于,所述矩阵计算结果传输模块包括:
第一计算结果传输单元,用于在所述数据传输方式为连续列传输方式的情况下,将所述矩阵计算结果按照所述连续列传输方式传输至命令地址总线,并通过所述命令地址总线将所述矩阵计算结果传输至处理器;
第二计算结果传输单元,用于在所述数据传输方式为连续行传输方式的情况下,将所述矩阵计算结果按照所述连续行方式传输传输至命令地址总线,并通过所述命令地址总线将所述矩阵计算结果传输至处理器。
9.根据权利要求6所述的装置,其特征在于,还包括:
计算结果写入模块,用于根据所述矩阵计算指令对应的数据写入方式,将所述矩阵计算结果写入所述内存。
10.根据权利要求9所述的装置,其特征在于,所述计算结果写入模块包括:
第一计算结果写入单元,用于在所述数据写入方式为连续列写入方式的情况下,将所述矩阵计算结果按照所述连续列写入方式写入所述内存;
第二计算结果写入单元,用于在所述数据写入方式为连续行写入方式的情况下,将所述矩阵计算结果按照所述连续行写入方式写入所述内存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011360968.7A CN112486872B (zh) | 2020-11-27 | 2020-11-27 | 数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011360968.7A CN112486872B (zh) | 2020-11-27 | 2020-11-27 | 数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112486872A true CN112486872A (zh) | 2021-03-12 |
CN112486872B CN112486872B (zh) | 2024-07-19 |
Family
ID=74936520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011360968.7A Active CN112486872B (zh) | 2020-11-27 | 2020-11-27 | 数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112486872B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4731724A (en) * | 1984-11-23 | 1988-03-15 | Sintra | System for simultaneous transmission of data blocks or vectors between a memory and one or a number of data-processing units |
SU1695319A1 (ru) * | 1989-09-25 | 1991-11-30 | Физико-механический институт им.Г.В.Карпенко | Матричное вычислительное устройство |
JP2009020900A (ja) * | 1993-09-17 | 2009-01-29 | Renesas Technology Corp | 半導体集積回路装置、データ処理装置及びマイクロコンピュータ |
CN108845828A (zh) * | 2018-05-29 | 2018-11-20 | 深圳市国微电子有限公司 | 一种协处理器、矩阵运算加速方法及系统 |
CN109710213A (zh) * | 2018-12-25 | 2019-05-03 | 广东浪潮大数据研究有限公司 | 一种稀疏矩阵加速计算方法、装置、设备及其系统 |
CN111143766A (zh) * | 2019-12-24 | 2020-05-12 | 上海寒武纪信息科技有限公司 | 人工智能处理器处理二维复数矩阵的方法和设备 |
-
2020
- 2020-11-27 CN CN202011360968.7A patent/CN112486872B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4731724A (en) * | 1984-11-23 | 1988-03-15 | Sintra | System for simultaneous transmission of data blocks or vectors between a memory and one or a number of data-processing units |
SU1695319A1 (ru) * | 1989-09-25 | 1991-11-30 | Физико-механический институт им.Г.В.Карпенко | Матричное вычислительное устройство |
JP2009020900A (ja) * | 1993-09-17 | 2009-01-29 | Renesas Technology Corp | 半導体集積回路装置、データ処理装置及びマイクロコンピュータ |
CN108845828A (zh) * | 2018-05-29 | 2018-11-20 | 深圳市国微电子有限公司 | 一种协处理器、矩阵运算加速方法及系统 |
CN109710213A (zh) * | 2018-12-25 | 2019-05-03 | 广东浪潮大数据研究有限公司 | 一种稀疏矩阵加速计算方法、装置、设备及其系统 |
CN111143766A (zh) * | 2019-12-24 | 2020-05-12 | 上海寒武纪信息科技有限公司 | 人工智能处理器处理二维复数矩阵的方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112486872B (zh) | 2024-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109213962B (zh) | 运算加速器 | |
CN111310910B (zh) | 一种计算装置及方法 | |
CN111857820B (zh) | 一种用于执行矩阵加/减运算的装置和方法 | |
CN107957976B (zh) | 一种计算方法及相关产品 | |
US11853767B2 (en) | Inter-core data processing method, system on chip and electronic device | |
CN111190854B (zh) | 通信数据处理方法、装置、设备、系统和存储介质 | |
CN108108190B (zh) | 一种计算方法及相关产品 | |
US11880684B2 (en) | RISC-V-based artificial intelligence inference method and system | |
US20190294442A1 (en) | Computer system and memory access technology | |
CN110825436A (zh) | 应用于人工智能芯片的计算方法和人工智能芯片 | |
CN107957975B (zh) | 一种计算方法及相关产品 | |
CN110163349B (zh) | 一种网络模型的计算方法及装置 | |
CN107943756B (zh) | 一种计算方法及相关产品 | |
CN107957977A (zh) | 一种计算方法及相关产品 | |
CN108090028B (zh) | 一种计算方法及相关产品 | |
CN112486872B (zh) | 数据处理方法及装置 | |
WO2024045665A1 (zh) | 多点乘运算系统、方法、图形处理器、电子装置及设备 | |
US10127040B2 (en) | Processor and method for executing memory access and computing instructions for host matrix operations | |
CN109522125B (zh) | 一种矩阵乘积转置的加速方法、装置及处理器 | |
CN108037908B (zh) | 一种计算方法及相关产品 | |
CN115994040A (zh) | 计算系统以及进行数据广播和数据归约的方法及存储介质 | |
WO2022007597A1 (zh) | 矩阵运算的方法和加速器 | |
CN113591031A (zh) | 低功耗矩阵运算方法及装置 | |
CN112073505A (zh) | 在云服务器上进行卸载的方法、控制装置、存储介质 | |
CN110147222B (zh) | 运算装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |