数据处理方法和设备与流程

文档序号:18888350发布日期:2019-10-15 21:18阅读:136来源:国知局
数据处理方法和设备与流程

本专利文件披露的内容包含受版权保护的材料。该版权为版权所有人所有。版权所有人不反对任何人复制专利与商标局的官方记录和档案中所存在的该专利文件或者该专利披露。

本申请涉及信息技术领域,并且更具体地,涉及一种数据处理方法和设备。



背景技术:

矩阵是计算机中常用的一种数据结构。在计算机应用中,例如在科学和工程计算、游戏、图像处理等领域中经常需要用到矩阵的转置运算。

在对矩阵进行转置时,需要将数据按行或按列存储到寄存器中,并从该寄存器中按列或按行读取,由此实现矩阵的转置。

现有的处理方法是设置两个寄存器,将需要转置的一组数据沿一个方向读进第一寄存器,然后沿另一个方向从第一寄存器读出,在第一寄存器读出数据的同时,将另一个需要转置的一组数据读进第二寄存器,即需要两个寄存器交替使用,在计算机处理过程中,寄存器资源起到很重要的作用,如何在矩阵转置过程中,避免寄存器资源的浪费是一项亟待解决的问题。



技术实现要素:

本申请实施例提供一种数据处理方法和设备,可以避免寄存器资源的浪费。

第一方面,提供了一种数据处理方法,包括:将第一矩阵中的数据写入寄存器;针对该寄存器中的该第一矩阵的数据,执行多次读取操作,其中,每次读取操作读取至少一个数据;在每次读取操作之后,在该寄存器中的目标写入位置,写入第二矩阵的至少一个数据,其中,该目标写入位置为每次读取操作的读取位置。

第二方面,提供了一种控制器,包括写入单元和读取单元;其中,该写入单元用于:将第一矩阵中的数据写入寄存器;该读取单元用于:针对该寄存器中的该第一矩阵的数据,执行多次读取操作,其中,每次读取操作读取至少一个数据;该写入单元进一步用于:在每次读取操作之后,在该寄存器中的目标写入位置,写入第二矩阵的至少一个数据,其中,该目标写入位置为每次读取操作的读取位置。

第三方面,提供了一种数据处理设备,包括控制器以及寄存器;其中,该控制器用于向该寄存器中写入数据以及读取该寄存器中的数据;其中,该控制器具体用于:将第一矩阵中的数据写入寄存器;针对该寄存器中的该第一矩阵的数据,执行多次读取操作,其中,每次读取操作读取至少一个数据;在每次读取操作之后,在该寄存器中的目标写入位置,写入第二矩阵的至少一个数据,其中,该目标写入位置为每次读取操作的读取位置。

第四方面,提供了一种计算机存储介质,该介质中存储代码,该代码用于:将第一矩阵中的数据写入寄存器;针对该寄存器中的该第一矩阵的数据,执行多次读取操作,其中,每次读取操作读取至少一个数据;在每次读取操作之后,在该寄存器中的目标写入位置,写入第二矩阵的至少一个数据,其中,该目标写入位置为每次读取操作的读取位置。

第五方面,提供了一种计算机程序产品,该程序产品包括代码,该代码用于:将第一矩阵中的数据写入寄存器;针对该寄存器中的该第一矩阵的数据,执行多次读取操作,其中,每次读取操作读取至少一个数据;在每次读取操作之后,在该寄存器中的目标写入位置,写入第二矩阵的至少一个数据,其中,该目标写入位置为每次读取操作的读取位置。

因此,在本申请实施例中,可以针对寄存器中的第一矩阵的数据执行多次读取操作,在每次读取操作之后,控制器在寄存器中的读取位置再写入第二矩阵的数据,从而可以避免读取操作之后的寄存器的空置,从而可以避免寄存器资源的浪费

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据本申请实施例的计算机系统的示意性框图。

图2是根据本申请实施例的数据处理方法的示意性流程图。

图3是根据本申请实施例的在寄存器中写入和读取矩阵的数据的示意性图。

图4是根据本申请实施例的在寄存器中写入和读取矩阵的数据的示意性图。

图5是根据本申请实施例的控制器的示意性框图。

图6是根据本申请实施例的数据处理设备的示意性框图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

除非另有说明,本申请实施例所使用的所有技术和科学术语与本申请的技术领域的技术人员通常理解的含义相同。本申请中所使用的术语只是为了描述具体的实施例的目的,不是旨在限制本申请的范围。

图1是根据本申请实施例的计算机系统100的示意性框图。

如图1所示,该系统100包括处理器110和外部存储系统120(可以为任意的可访问存储器,包括外部高速缓冲存储器和外部随机存取存储器(random-accessmemory,ram)等)。

计算机系统100的处理器110可以包括寄存器112。寄存器112并不限于特定类型的存储器电路。本申请实施例的寄存器可以存储并提供矩阵数据。

本申请的计算机系统100可以包括一个或多个输入/输出(input/output,i/o)装置130,包括像监视器这样的显示装置。i/o装置还可以包括输入装置,诸如键盘和像鼠标、轨迹球或轨迹板这样的光标控制器。此外,i/o装置还可以包括网络连接器使得计算机系统100成为局域网(localareanetwork,lan)或广域网(wideareanetwork,wan)的一部分,i/o装置130,即用于声音记录和/或回放的装置,诸如与用于语音识别的录制话音输入的麦克风耦合的音频数字化器。i/o装置130还可以包括可用于捕获视频图像的视频数字化装置、像打印机这样的硬拷贝装置和只读光盘(compactdiscread-onlymemory,cd-rom)装置。

可选地,在本申请实施例中,外部存储系统120可以包括用于存储计算机程序产品的计算机可读介质,在该介质上可以存储可用于编程(即定义其操作)计算机(或其他电子设备)的指令,以便根据本申请执行处理。该计算机可读介质可以包括但不限于软盘、光盘、cd、cd-rom和磁光盘、只读存储器(read-onlymemory,rom)、ram、可擦除可编程只读存储器(erasableprogrammableread-onlymemory,eprom)、电可擦除可编程只读存储器(electricallyerasableprogrammablereadonlymemory,eeprom)、磁或光卡、快闪存储器,等等。

因此,计算机可读介质包括适于存储电子指令的任一类型的介质/机器可读介质。此外,还可以将本申请作为计算机程序产品下载。就这点而论,还可以将该程序从远程计算机(例如,服务器)传送到请求计算机(例如,客户端)。可以通过通信链路(例如,调制解调器、网络连接等等)将该程序作为包含在载波或其他传播介质中的数据信号传送。

计算机系统100可以是具有适当寄存器结构的处理器的通用计算机,或可以被配置用于特定目的或嵌入式应用。本申请实施例的方法可包含在目的在于控制计算机系统的操作(尤其是处理器和寄存器的操作)的机器可执行指令中。这些指令可用于使被用指令编程的通用或专用处理器执行本申请的步骤。或者,可由包含执行步骤的硬连线逻辑的特定硬件元件执行本申请的步骤,或者由已编程计算机元件和常规的硬件元件的组合来执行本申请的步骤。

图2是根据本申请实施例的数据处理方法200的示意性流程图。如图2所示,该方法200包括以下内容中的至少部分内容。

在210中,控制器针对第一矩阵中的数据,将该第一矩阵中的数据写入寄存器。

应理解,本申请实施例不对每个寄存器的存储大小进行限定,可以将存储一个矩阵中的一个数据元素的存储空间称为一个寄存器,也可以将存储一个完整矩阵的存储空间称为一个寄存器或寄存器组等。

可选地,在本申请实施例中,第一矩阵的行数可以等于第一矩阵的列数,或者,第一矩阵的行数不等于第一矩阵的列数。

在220中,控制器针对该寄存器中的该第一矩阵的数据,执行多次读取操作,其中,每次读取操作读取至少一个数据。

可选地,在本申请实施例中,不同次读取操作读取的数据量可以相同,也可以不同。

在230中,在每次读取操作之后,控制器在该寄存器中的目标写入位置,写入第二矩阵的至少一个数据,其中,该目标写入位置为该每次读取操作的读取位置。

可选地,在本申请实施例中,第二矩阵的行数可以等于第二矩阵的列数,或者,第二矩阵的行数不等于第二矩阵的列数。

可选地,在本申请实施例中,第二矩阵的行数可以等于第一矩阵的行数,以及第二矩阵的列数可以等于该第一矩阵的列数。

或者,在本申请实施例中,第二矩阵的行数可以等于第一矩阵的列数,以及第二矩阵的列数可以等于第一矩阵的行数。

可选地,在本申请实施例中,第一矩阵的数据也可以是在针对其他的矩阵(非第一矩阵和非第二矩阵)的每次读取操作之后逐步写入的。以及第二矩阵的写入方式以及读取之后的寄存器的利用也可以如第一矩阵。

具体地,针对所述寄存器中的所述第二矩阵的数据,执行多次读取操作,其中,每次读取操作读取所述第二矩阵至少一个数据;在所述每次读取操作之后,在所述寄存器中的目标写入位置,写入第三矩阵的至少一个数据,其中,所述目标写入位置为所述每次读取操作的读取位置。

换句话说,在本申请实施例的对矩阵的处理过程中,前一矩阵可以分多次读取,在每次读取操作之后,在前一矩阵的读取位置处写入后一矩阵的数据。

因此,在本申请实施例中,可以针对寄存器中的第一矩阵的数据执行多次读取操作,在每次读取操作之后,控制器在寄存器中的读取位置再写入第二矩阵的数据,从而可以避免读取操作之后的寄存器的空置,从而可以在不损失数据处理效率的情况下,避免寄存器资源的浪费。

可选地,在本申请实施例中,一次读取操作(读取第一矩阵中的数据)之后的用于写入第二矩阵的数据的写入操作可以在下次读取操作(读取第一矩阵中的数据)之前执行。

可选地,在本申请实施例中,在每次读取操作之后的同一时钟周期,在该寄存器中的目标写入位置,写入该第二矩阵的至少一个数据。

具体地,可以在一个时钟周期的较前的时间执行针对第一矩阵的读取操作,在该同一个时钟周期的靠后的时间执行针对第二矩阵的数据的写入操作。

由此,在读取操作的同一时钟周期,在读取位置写入另一矩阵的数据,可以进一步避免寄存器资源的浪费,并且可以提升数据处理效率。

可选地,在本申请实施例中,控制器针对第一矩阵的数据,按照第一数据顺序,将该第一矩阵中的数据写入寄存器;针对该寄存器中的该第一矩阵的数据,按照第二数据顺序,执行多次读取操作。

可选地,在本申请实施例中,该第一数据顺序可以是按矩阵的行进行写入的顺序,或者是按矩阵的列进行写入的顺序。

可选地,在本申请实施例中,该第二数据顺序可以是按矩阵的列进行读取的顺序,或者是矩阵的行进行读取的顺序。

可选地,在本申请实施例中,该第二数据顺序可以不同于第一数据顺序。

可选地,本申请实施例可以用于矩阵的转置操作。

具体地,在该第一数据顺序是按矩阵的行进行写入的顺序时,该第二数据顺序是按照矩阵的列进行读取的顺序。此时可选地,针对第一矩阵的每次写入操作可以写入一行的数据,以及每次读取操作可以读取该矩阵的一列的数据,从而可以实现第一矩阵的转置。

或者,在该第一数据顺序可以是按矩阵的列进行写入的顺序时,该第二数据顺序是按照矩阵的行进行读取的顺序。此时可选地,针对第一矩阵的每次写入操作可以写入一列的数据,以及每次读取操作可以读取该矩阵的一行的数据,从而可以实现第一矩阵的转置。

当然,该第一数据顺序也可以是其他的数据顺序,具体可以根据需要针对第一矩阵所需的处理而定,本申请实施例对此不做具体限定。

可选地,在本申请实施例中,控制器可以按照第一存储空间顺序,将该第一矩阵中的数据写入该寄存器;以及控制器可以按照第二存储空间顺序,针对该寄存器中的该第一矩阵的数据,执行多次读取操作。

可选地,在本申请实施例中,该第一存储空间顺序不同于该第二存储空间顺序。

可选地,在本申请实施例中,该第一存储空间顺序为按该寄存器的行进行写入的顺序,或者,该第一存储空间顺序为按该寄存器的列进行写入的顺序。

可选地,在本申请实施例中,该第二存储空间顺序是按该寄存器的列进行读取的顺序,或者,该第二存储空间顺序是按该寄存器的行进行读取的顺序。

可选地,在本申请实施例中,在该第一存储空间顺序为按该寄存器的行进行写入的顺序时,该第二存储空间顺序是按该寄存器的列进行读取的顺序。此时可选地,在针对该第一矩阵的每次写入操作中,在该寄存器的一行写入该第一矩阵的数据,以及每次读取操作读取该寄存器的一列数据。

可选地,在本申请实施例中,在该第一存储空间顺序为按该寄存器的列进行写入的顺序,该第二存储空间顺序是按该寄存器的行进行读取的顺序。此时可选地,在针对该第一矩阵的每次写入操作中,在该寄存器的一列写入该第一矩阵的数据,以及每次读取操作读取该寄存器的一行数据。

可选地,在本申请实施例中,寄存器的一行可存储的数据量可以等于寄存器的一列可存储的数据量。

可选地,在本申请实施例中,寄存器的一行可以理解为一行存储空间,以及,寄存器的一列可以理解为一列存储空间。

应理解,在本申请实施例中,按照数据顺序读写矩阵的数据以及按照寄存器的存储空间顺序读写矩阵的数据,这两种实现方式是可以结合使用的。

例如,在本申请实施例中,寄存器的行数可以等于矩阵的行数,寄存器的列数可以等于矩阵的列数,此时,可以将矩阵的各行数据分别写入到寄存器的各行,或者,可以将矩阵的各列数据分别写入到寄存器的各列。

例如,在对多个矩阵的数据进行处理时,前一矩阵的行数可以等于后一矩阵的列数以及前一矩阵的列数可以等于后一矩阵的行数。同时,寄存器的行数可以等于前一矩阵的行数,寄存器的列数可以等于前一矩阵的列数,此时,将前一矩阵的各行可以写入到寄存器的各行,然后按寄存器的列进行数据的读取,从而可以实现前一矩阵的转置,在写入后一矩阵时,可以将后一矩阵的各行,写入到寄存器的各列中,然后,按寄存器的行进行数据的读取,从而可以实现后一矩阵的转置。

例如,在对多个矩阵的数据进行处理时,前一矩阵的行数可以等于后一矩阵的列数以及前一矩阵的列数可以等于后一矩阵的行数。同时,寄存器的行数可以等于后一矩阵的行数,寄存器的列数可以等于后一矩阵的列数,此时,将前一矩阵的各行可以写入到寄存器的各列中,然后按寄存器的行进行数据的读取,从而可以实现前一矩阵的转置,在写入后一矩阵时,可以将后一矩阵的各行,写入到寄存器的各行中,然后,按寄存器的列进行数据的读取,从而可以实现后一矩阵的转置。

应理解,在本申请实施例中,寄存器也可以不进行列和行的划分。例如,可以对寄存器的各个存储空间进行编号,按照存储空间的编号,进行矩阵的数据的写入和读取。

例如,寄存器可以分为存储空间1(也可以称为寄存器)1,2,3,4,5,6,7,8,9。对于3×3的矩阵而言,可以将矩阵的第一行数据写入存储空间1,2,3,将矩阵的第二行数据写入存储空间4,5,6,将矩阵的第三行数据写入存储空间7,8,9,第一次读取操作可以读取存储空间1,4,7中的数据,第二次读取操作可以读取存储空间2,5,8中的数据,第三次读取操作可以读取存储空间3,6,9中的数据,从而可以实现该3×3的矩阵的转置。

应理解,本申请实施例提到的矩阵(例如,第一矩阵,第二矩阵和第三矩阵)包括多个数字,是数学意义上的矩阵,写入寄存器并从寄存器读取的过程,可以实现矩阵的转置(或者,其他形式的矩阵变换),转置后的矩阵可以被结合其他数字或矩阵进行处理。但是在写入到寄存器时,可以对该多个数字以矩阵的排布形式进行存储,也可以其他的形式进行存储,以及,在写入到寄存器之前存储时,可以对该多个数字以矩阵的排布形式进行存储,也可以其他形式进行存储。

为了更加清楚地理解本申请,以下将结合图3,以及以对多个2×2的矩阵进行转置为例进行详细说明。

如图3所示,寄存器可以包括寄存器r0,寄存器r1,寄存器r2和寄存器r3,需要对多个矩阵(包括矩阵以及矩阵进行转置。

首先,写地址初始值为0,控制器可以将数据a0,a1写入寄存器r0,r1(第一次写入操作),写入后写地址变为1,然后,可以将数据a2,a3写入寄存器r2,r3(第二次写入操作),写入后写地址变为2。

此时,读的使能(enable)打开,按照最快速的情况,控制器可以在写入数据a2和a3之后的下一个时钟周期将数据读走,其中,控制器可以根据下一时钟周期是否读,判断寄存器是否可写,如果读,则,读走数据a0,a2(第一次读取操作),并该同一时钟周期,将矩阵2中的数据b0,b1写入寄存组r0,r2(第三次写入操作),写入后写地址变为3。以及,在下一时钟周期,如果读(读地址1),读走a1,a3(第二次读取操作),并将第二矩阵的数据b2,b3写入寄存器组r1,r3(第四次写入操作),写入后写地址变为0。然后读地址2,读走b0,b2(第三次读取操纵),并将矩阵的数据c0和c1写入寄存器组r0,r1(第五次写入操作),写入后写地址变为1,以及,在下一时钟周期,如果读(读地址3),读走b1,b3(第四次读取操作),并将矩阵3的数据c2,c3写入寄存器组r1,r3(第六次写入操作),写入后写地址变为2,并以此类推。

再例如,如图4所示,假设需要对多个2行3列的矩阵(包括矩阵矩阵矩阵矩阵矩阵以及矩阵等)进行转置操作,以及寄存器的地址分别为r0,r1,r2,r3,r4和r5。

则可以在寄存器r0和r1中存储矩阵a的数据a0和a1(第一次写入操作),以及在寄存器r2和r3中存储矩阵a的数据a2和a3(第二次写入操作),以及在寄存器r4和r5中存储矩阵a的数据a4和a5(第三次写入操作)。在第一次读取操作时,可以读取寄存器r0和r3中的数据a0和a3,并在该位置写入矩阵b的数据b0和b1(第四次写入操作)。在第二次读取操作时,可以读取r1和r4中的数据a1和a4,并且在r1和r4中存入矩阵b的数据b2和b3(第五次写入操作)。在第三次读取操作时可以在寄存器r2和r5中读取数据a2和a5,并且在寄存器r2和r5的位置写入矩阵b的数据b4和b5(第六次写入操作)。在第四次读取操作时,可以在寄存器r0和r4中读取数据b0和b3,以及写入矩阵c中的数据c0和c1(第七次写入操作)。在第五次读取操作时可以在寄存器r3和r2中读取数据b1和b4,以及写入矩阵c中的数据c2和c3(第八次写入操作)。在第六次读取操作时可以在寄存器r1和r5中读取数据b2和b5,以及写入矩阵c中的数据c4和c5(第九次写入操作)。在第七次读取操作时可以在寄存器r0和r2中读取数据c0和c3,以及写入矩阵d中的数据d0和d1(第十次写入操作)。在第八次读取操作时,可以在寄存器r4和r1中读取数据c1和c4,以及在寄存器中写入矩阵d中的数据d2和d3(第十一次写入操作)。在第九次读取操作时,可以在寄存器r3和r5中读取数据c2和c5,以及写入矩阵d中的数据d4和d5(第十二次写入操作)。在第十次读取操作时,可以在寄存器r0和r1中读取数据d0和d3,以及写入矩阵e中的数据e0和e1(第十三次写入操作)。在第十一次读取操作时,可以在寄存器r2和r3中读取数据d1和d4以及写入矩阵e中的数据e2和e3(第十四次写入操作),在第十二次读取操作时,可以在寄存器r4和r5中读取数据d2和d5,以及写入矩阵e中的数据e4和e5(第十五次写入操作)。以及,在第十三次读取操作中,可以在寄存器r0和r3中读取数据e0和e3,以及写入矩阵f中的数据f0和f1(第十六次写入操作),以此类推。

应理解,图4所示的每次写入操作对应的数据量是相同的,但是每次写入操作对应的数据量也可以是不相同的,例如,可以在第一次写入操作中写入数据a0,a1和a2,第二次写入操作中写入的数据是a3,a4和a5,其他次写入操作的数据量可以是2个数据等。

可选地,在本申请实施例中,在针对第一矩阵执行读取操作时,基于当前读取操作次数,查找表项,以确定目标读取位置,该表项指示至少一个读取操作次数与至少一个读取位置的对应关系;基于该目标读取位置,执行该每次读取操作。

可选地,该表项可以是基于第二数据顺序设置的表项,此时,可以按照第二数据顺序进行第一矩阵的数据的读取。

或者,该表项可以是基于第二存储空间顺序设置的表项,此时,可以按照第二存储空间顺序进行第一矩阵的数据的读取。

其中,该当前读取操作次数可以是依据计数器的计数而定,其中,计数器可以在满足一定情况下清零,例如,每次读取一个新的矩阵的数据时开始对该计时器进行清零,或者在开始一个读取循环时对计数器进行清零。

其中,单次读取循环可以满足以下条件:对于不同次读取循环,同一读取操作次数对应的读取位置相同。以及进一步地,在同次读取循环中,不同的读取操作次数对应的读取位置不同。

例如,如图3所示的转置情况下,第一次读取操作对应的读取位置为寄存器r0和r2,第二次读取操作对应的读取位置为r1和r3,第三次读取操作对应的读取位置为r0和r1,第四次读取操作对应的读取位置为r2和r3,以及第五次读取操作对应的读取位置为寄存器r0和r1,则可以将第一,二,三和四次读取操作称为一次读取循环,以及将第五,六,七和八次读取操作称为一次读取循环。

例如,在如图4所示的转置情况下,在第一次和第十三次读取操作对应的读取位置为寄存器r0和r3,第二次和第十四次读取操作对应的读取位置为r1和r4,第三次和第十五次读取操作对应的读取位置为r2和r5等,由此可见,在图4所示的转置情况下,单次读取循环对应的读取操作为12次,在该12次的读取操作中,不同次的读取操作对应的读取位置是不同的。以及在不同次读取循环中,相同读取操作次数对应的读取位置是相同的,例如,第一次读取循环的第一次读取操作与第二次读取循环的第一次读取操作对应的读取位置是相同的。

其中,可以预存单次读取循环中读取操作次数与读取位置的对应关系,具体地,可以以表项的方式存储,从而可以通过查找表项的方式来确定每次读取操作对应的读取位置。

因此,在本申请实施例中,基于表项的方式确定每次读取操作对应的读取位置,可以实现快速获取待读取数据的读取位置。

并且,进一步地,存储单次读取循环中,至少一个读取操作次数与至少一个读取位置的对应关系,可以减少信息的存储量。

可选地,在本申请实施例中,基于当前写入操作次数,查找表项,以确定用于写入该第二矩阵的数据的目标写入位置,该表项指示至少一个写入操作次数与至少一个写入位置的对应关系。

其中,该当前写入次数可以是依据计数而定,其中,计数器可以在满足一定情况下清零,例如,每次写入一个新的矩阵时开始对该计数器清零,或者在开始一个写入循环时对计数器进行清零。

其中,单次写入循环可以满足以下条件:对于不同次写入循环,同一写入操作次数对应的写入位置相同。以及可选地,在同次写入循环中,不同的写入操作次数对应的写入位置不同。

例如,如图3所示的转置情况下,在第一次写入操作对应的写入位置为寄存器r0和r1,第二次写入操作对应的写入位置为r2和r3,第三次写入操作对应的写入位置为r0和r2,第四次写入操作对应的写入位置为r21和r3,以及第五次写入操作对应的写入位置为寄存器r0和r1,则可以将第一,二,三和四次写入操作称为一次写入循环,以及将第五,六,七和八次写入操作称为一次写入循环。

例如,在如图4所示的转置情况下,在第一次和第十三次读取写入操作对应的写入位置为寄存器r0和r1,第二次和第十四次写入操作对应的写入位置为r2和r3,第三次和第十五次写入操作对应的写入位置为r4和r5等,由此可见,在图4所示的转置情况下,单次写入循环对应的写入操作为12次,在该12次的写入操作中,不同次的写入操作对应的写入位置是不同的。以及在不同次写入循环中,相同写入操作次数对应的写入位置是相同的,例如,第一次写入循环的第一次写入操作与第二次写入循环的第一次写入操作对应的写入位置是相同的。

因此,在本申请实施例中,基于表项的方式确定每次写入操作对应的写入位置,可以实现快速获取目标写入位置。

并且,进一步地,存储单次写入循环中,至少一个写入操作次数与至少一个写入位置的对应关系,可以减少信息的存储量。

应理解,本申请实施例并不限于以上的描述,例如,可以在针对该第一矩阵的数据执行读取操作时,可以记录读取位置;将记录的该读取位置,确定为用于写入该第二矩阵的数据该目标写入位置。

也就是说,在每次读取寄存器中的数据时,可以实时记录该读取位置,并在同一时钟周期,在记录的该位置内写入其他矩阵的数据。

可选地,在本申请实施例中,在上述确定的目标写入位置,写入该第二矩阵的数据之前,控制器可以确定该目标写入位置中的数据已经被读取。

可选地,在本申请实施例中,控制器可以确定下一时钟周期寄存器是否可读,来判断该寄存器是否可写。

可选地,在本申请实施例中,确定该第一矩阵的待读取的数据已经被写入。

具体地,可以根据针对该第一矩阵已执行的写入操作次数,确定该第一矩阵的待读取的数据已经被写入。

例如,如图3所示的情况下,在针对矩阵(矩阵1或矩阵2)已执行两次写入操作时,则认为该第一矩阵的待读取的数据已经被写入。以及在如图4所示的情况下,在针对矩阵(矩阵a,b,c和d等)已执行三次写入操作时,则认为该第一矩阵的待读取的数据已经被写入。

可选地,在第一次读取操作之前,确定该第一矩阵的待读取的数据已经被写入。

具体地,在本申请实施例中,在用于对一些矩阵(例如,行数和列数相同的矩阵,且每次写入一列或一行的数据,以及每次读取一行或一列的数据)进行转置的情况下,如果第一次读取操作的数据被写入,此时意味着该矩阵的全部数据被写入,因此可以仅在第一次读取操作之前,确定该第一矩阵的待读取的数据已经被写入,可以不用在每次读取操作之前,均确定待读取的数据已经被写入。

但应理解,本申请实施例并不限于此,可以在每次读取操作之前,确定该第一矩阵的当前待读取的数据已经被写入。

可选地,在本申请实施例中,可以将数据读写的外部接口封装为fifo接口。

因此,在本申请实施例中,可以针对寄存器中的第一矩阵的数据执行多次读取操作,在每次读取操作之后,控制器在寄存器中的读取位置再写入第二矩阵的数据,从而可以避免读取操作之后的寄存器的空置,从而可以在降低数据处理速度的情况下,避免寄存器资源的浪费。

图5是根据本申请实施例的控制器300的示意性框图。该控制器300包括写入单元310和读取单元320;其中,

该写入单元310用于:将第一矩阵中的数据写入寄存器;

该读取单元320用于:针对该寄存器中的该第一矩阵的数据,执行多次读取操作,其中,每次读取操作读取至少一个数据;

该写入单元310进一步用于:在每次读取操作之后,在该寄存器中的目标写入位置,写入第二矩阵的至少一个数据,其中,该目标写入位置为每次读取操作的读取位置。

可选地,在本申请实施例中,该写入单元310进一步用于:针对该第一矩阵的数据,按照第一数据顺序,将该第一矩阵中的数据写入该寄存器;

该读取单元320进一步用于:

针对该寄存器中的该第一矩阵的数据,按照第二数据顺序,执行该多次读取操作。

可选地,在本申请实施例中,该第一数据顺序为按矩阵的行进行写入的顺序,该第二数据顺序是按矩阵的列进行读取的顺序。

可选地,在本申请实施例中,在针对该第一矩阵的每次写入操作中,该写入单元310写入该第一矩阵的一行数据;和/或,

该读取单元320在每次读取操作过程中,读取该第一矩阵的一列数据。

可选地,在本申请实施例中,该第一数据顺序为按矩阵的列进行写入的顺序,该第二数据顺序是按矩阵的行进行读取的顺序。

可选地,在本申请实施例中,在针对该第一矩阵的每次写入操作中,该写入单元310写入该第一矩阵的一列数据;和/或,

该读取单元320在每次读取操作的过程中,读取该第一矩阵的一行数据。

可选地,在本申请实施例中,该写入单元310进一步用于:

按照第一存储空间顺序,将该第一矩阵中的数据写入该寄存器;

该读取单元320进一步用于:

按照第二存储空间顺序,针对该寄存器中的该第一矩阵的数据,执行多次读取操作。

可选地,在本申请实施例中,该第一存储空间顺序为按该寄存器的行进行写入的顺序,该第二存储空间顺序是按该寄存器的列进行读取的顺序。

可选地,在本申请实施例中,在针对该第一矩阵的每次写入操作中,该写入单元310在该寄存器的一行写入该第一矩阵的数据;和/或

该读取单元320在每次读取操作的过程中,读取该寄存器的一列数据。

可选地,在本申请实施例中,该第一存储空间顺序为按该寄存器的列进行写入的顺序,该第二存储空间顺序是按该寄存器的行进行读取的顺序。

可选地,在本申请实施例中,在针对该第一矩阵的每次写入操作中,该写入单元310在该寄存器的一列写入该第一矩阵的数据;和/或,

该读取单元320在每次读取操作的过程中,读取该寄存器的一行数据。

可选地,在本申请实施例中,该写入单元310进一步用于:

在该读取操作之后的同一时钟周期,在该寄存器中的该目标写入位置,写入该第二矩阵的至少一个数据。

可选地,在本申请实施例中,该读取单元320进一步用于:

在针对该第一矩阵的数据执行每次读取操作时,记录读取位置;

该写入单元310进一步用于:将记录的该读取位置,确定为用于写入该第二矩阵的数据的该目标写入位置。

可选地,在本申请实施例中,该写入单元310进一步用于:

基于当前写入操作次数,查找第一表项,以确定用于写入该第二矩阵的数据的该目标写入位置,该第一表项指示至少一个写入操作次数与至少一个写入位置的对应关系。

可选地,在本申请实施例中,该第一表项指示单次写入循环中,至少一个写入操作次数与至少一个写入位置的对应关系;其中,

对于不同次写入循环,同一写入操作次数对应的写入位置相同。

可选地,在本申请实施例中,在同次写入循环中,不同的写入操作次数对应的写入位置不同。

可选地,在本申请实施例中,该读取单元320进一步用于:

在针对该第一矩阵执行每次读取操作时,基于当前读取操作次数,查找第二表项,以确定目标读取位置,该第二表项指示至少一个读取操作次数与至少一个读取位置的对应关系;

基于该目标读取位置,执行每次读取操作。

可选地,在本申请实施例中,该第二表项指示单次读取循环中,至少一个读取操作次数与至少一个读取位置的对应关系;其中,

对于不同次读取循环,同一读取操作次数对应的读取位置相同。

可选地,在本申请实施例中,在同次读取循环中,不同的读取操作次数对应的读取位置不同。

可选地,在本申请实施例中,该写入单元310进一步用于:

在该目标写入位置,写入该第二矩阵的数据之前,确定该目标写入位置中的数据已经被读取。

可选地,在本申请实施例中,该读取单元320进一步用于:

在第一次读取操作之前,确定该第一矩阵的第一次待读取的数据已经被写入。

可选地,在本申请实施例中,该读取单元320进一步用于:

在第一次读取操作之后的每次读取操作之前,确定当前次待读取的数据已经被写入。

可选地,在本申请实施例中,该读取单元320进一步用于:

根据针对该第一矩阵已执行的写入操作次数,确定该第一矩阵的待读取的数据已经被写入。

可选地,在本申请实施例中,该第一矩阵的行数等于该第二矩阵的行数,该第一矩阵的列数等于该第二矩阵的列数。

可选地,在本申请实施例中,该读取单元320进一步用于:

针对该寄存器中的该第二矩阵的数据,执行多次读取操作,其中,每次读取操作读取该第二矩阵至少一个数据;

该写入单元310进一步用于:在每次读取操作之后,在该寄存器中的目标写入位置,写入第三矩阵的至少一个数据,其中,该目标写入位置为每次读取操作的读取位置。

应理解,控制器300可以实现上述方法实施例中的控制器的相应操作,为了简洁,在此不再赘述。

图6是根据本申请实施例的数据处理设备400的示意性框图。如图6所示,该设备400包括控制器410以及寄存器420;其中,

该控制器410用于向该寄存器420中写入数据以及读取该寄存器中的数据。

可选地,该数据处理设备为中央处理单元(centerprocessingunit,cpu),或者也可以是其它类型的处理器,本申请实施例对此不作具体限定。

应理解,控制器410可以实现上述方法实施例中的控制器的相应操作,为了简洁,在此不再赘述。

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

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

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

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

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

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

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

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1