CN112817664B - 一种数据处理系统、方法及芯片 - Google Patents
一种数据处理系统、方法及芯片 Download PDFInfo
- Publication number
- CN112817664B CN112817664B CN202110415936.0A CN202110415936A CN112817664B CN 112817664 B CN112817664 B CN 112817664B CN 202110415936 A CN202110415936 A CN 202110415936A CN 112817664 B CN112817664 B CN 112817664B
- Authority
- CN
- China
- Prior art keywords
- data
- parameters
- parameter
- chip
- cycle
- 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.)
- Active
Links
Images
Classifications
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明实施例公开了一种数据处理系统、方法及芯片,系统包括:参数计算模块和命令执行模块,参数计算模块与命令执行模块电连接;其中:参数计算模块用于获取在数据循环操作启动时通过芯片软件配置的循环操作配置参数,在确定数据循环操作处于继续执行状态的情况下,根据循环操作配置参数生成数据循环操作参数,并向命令执行模块发送数据循环操作参数;其中,循环操作配置参数包括固定配置参数和/或规律变化配置参数;命令执行模块用于根据数据循环操作参数持续自动执行数据循环操作。本发明实施例的技术方案能够提高数据循环操作处理的高效性,从而减轻芯片的软件负载,进而提高芯片的整体工作性能。
Description
技术领域
本发明实施例涉及芯片技术领域,尤其涉及一种数据处理系统、方法及芯片。
背景技术
芯片,又称微电路(microcircuit)、微芯片(microchip)、集成电路(integratedcircuit, IC),是指内含集成电路的硅片,体积很小,常常是计算机或其他电子设备的一部分。
在芯片工作时,存在同一种操作命令需要被多次循环执行的应用场景,这类数据处理操作可以称为循环执行的数据处理操作。目前,现有的循环执行的数据处理操作的解决方法主要通过在芯片的软件层面(下文简称芯片软件)使用循环语句(如for循环)多次调用操作函数来实现。
在现有的芯片对于循环执行的数据处理操作中,芯片硬件每次只完成对应命令的单次执行,因此需要多次配置硬件,启动硬件操作。在硬件每执行完一次操作后,软件还需要查看当前状态,再触发下一次的执行。由此可见,现有技术中芯片对于循环执行的数据处理操作会导致很多不必要的时间消耗在硬件配置和硬件状态查询中,从而影响芯片最终的性能效率。
发明内容
本发明实施例提供一种数据处理系统、方法及芯片,能够提高数据循环操作处理的高效性,从而减轻芯片的软件负载,进而提高芯片的整体工作性能。
第一方面,本发明实施例提供了一种数据处理系统,配置于芯片,包括参数计算模块和命令执行模块,所述参数计算模块与所述命令执行模块电连接;其中:
所述参数计算模块用于获取在数据循环操作启动时通过芯片软件配置的循环操作配置参数,在确定数据循环操作处于继续执行状态的情况下,根据所述循环操作配置参数生成数据循环操作参数,并向所述命令执行模块发送所述数据循环操作参数;其中,所述循环操作配置参数包括固定配置参数和/或规律变化配置参数;
所述命令执行模块用于根据所述数据循环操作参数持续自动执行数据循环操作。
第二方面,本发明实施例还提供了一种数据处理方法,应用于芯片,包括:
获取在数据循环操作启动时通过芯片软件配置的循环操作配置参数;其中,所述循环操作配置参数包括固定配置参数和/或规律变化配置参数;
在根据所述循环操作配置参数确定数据循环操作处于继续执行状态的情况下,根据所述循环操作配置参数生成数据循环操作参数;
根据所述数据循环操作参数持续自动执行数据循环操作处理。
第三方面,本发明实施例还提供了一种芯片,所述芯片包括第一方面中任意所述的数据处理系统。
本发明实施例通过参数计算模块和命令执行模块构成一种数据处理系统,以通过参数计算模块获取在数据循环操作启动时通过芯片软件配置的循环操作配置参数,在确定数据循环操作处于继续执行状态的情况下,根据循环操作配置参数生成数据循环操作参数,并向命令执行模块发送数据循环操作参数,以使命令执行模块根据数据循环操作参数持续自动执行数据循环操作,解决现有循环执行的数据处理操作中存在的数据处理效率低且影响芯片整体性能等问题,能够提高数据循环操作处理的高效性,从而减轻芯片的软件负载,进而提高芯片的整体工作性能。
附图说明
图1是本发明实施例一提供的一种数据处理系统的示意图;
图2是本发明实施例一提供的一种数据处理系统的示意图;
图3是本现有技术中芯片工作流程示意图;
图4是本发明实施例三提供的一种芯片工作流程示意图;
图5是本发明实施例三提供的一种对张量数据进行“Z”扫描切片的效果示意图;
图6是本发明实施例四提供的一种数据处理方法的流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。
另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
本发明实施例的说明书和权利要求书及附图中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有设定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
实施例一
图1是本发明实施例一提供的一种数据处理系统的示意图,该数据处理系统可以配置于芯片内部,如图1所示,数据处理系统可以包括参数计算模块110和命令执行模块120,参数计算模块110与命令执行模块120电连接;其中:参数计算模块110用于获取在数据循环操作启动时通过芯片软件配置的循环操作配置参数,在确定数据循环操作处于继续执行状态的情况下,根据循环操作配置参数生成数据循环操作参数,并向命令执行模块120发送数据循环操作参数;其中,循环操作配置参数包括固定配置参数和/或规律变化配置参数;命令执行模块120用于根据数据循环操作参数持续自动执行数据循环操作。
其中,参数计算模块110可以用于获取芯片软件初始配置的参数,并通过具体的硬件电路利用获取的参数进行参数计算,得到芯片的硬件结构(下文简称芯片硬件)执行数据处理操作需要的相关参数。命令执行模块120可以用于通过具体的硬件电路执行相关的操作命令。数据处理系统中的参数计算模块110和命令执行模块120均属于芯片硬件。可以理解的是,当芯片用于执行不同功能的数据处理时,其对应的参数计算模块110和命令执行模块120的硬件电路的组成结构可能也不同。同时,参数计算模块110采用的参数计算的表达式也不同。数据循环操作也即对数据循环执行的操作,如循环遍历数据存储地址获取数据,或对大型数据循环遍历切分等,只要能够对数据进行循环操作即可,本发明实施例并不对数据循环操作的具体循环操作类型进行限定。循环操作配置参数可以是芯片通过芯片软件在数据循环操作启动时一次性配置的硬件参数,用于指示芯片硬件独立完成整个数据循环操作。例如,循环操作配置参数可以包括但不限于循环搬移数据的起止地址和循环总次数等。继续执行状态也即需要数据继续执行循环操作的状态。例如,当循环总次数为10,参数计算模块110计算得到的当前循环次数为5时,表明数据循环操作处于继续执行状态。数据循环操作参数可以是参数计算模块生成的,用于指示命令执行模块120完成循环操作命令的硬件参数。固定配置参数可以是固定不变的参数,规律变化配置参数可以是随每次循环操作规律变化的参数。
可以理解的是,大部分数据循环操作类型,在数据循环操作的过程中,硬件参数有些是固定不变的,有些则是规律变化的。因此,对于包括固定配置参数和/或规律变化配置参数的数据循环操作来说,芯片软件后续的硬件参数配置完全可以通过硬件直接计算,而不需要芯片软件参与介入。
考虑到上述问题,在本发明实施例中,芯片可以通过芯片软件在数据循环操作初始化启动时配置整个数据循环操作需要的命令及循环操作配置参数,并触发芯片硬件根据循环操作配置参数开始执行数据循环操作。相应的,芯片软件可以将配置的循环操作配置参数发送至参数计算模块110。由于循环操作配置参数中的参数类型为固定配置参数和/或规律变化配置参数,可以由芯片硬件直接计算。因此,参数计算模块110如果确定数据循环操作处于继续执行状态,则可以根据接收的循环操作配置参数计算每次数据循环操作对应的数据循环操作参数发送给命令执行模块120。相应的,命令执行模块120可以根据接收的数据循环操作参数持续自动执行每次的数据循环操作,直至数据循环操作处理完成。在参数计算模块110和命令执行模块120交互执行数据循环操作的过程中,无需芯片软件的参与,芯片软件可以释放资源去执行其他任务,在等芯片硬件执行完数据循环操作后,可以进行后续的数据处理过程。
可选的,参数计算模块110可以根据循环操作配置参数计算当前循环次数,并根据当前循环次数计算当前循环操作需要的数据循环操作参数,返回给命令执行模块120。相应的,命令执行模块120接收到参数计算模块发送的数据循环操作参数后,可以根据数据循环操作参数执行当前循环操作命令。也即,参数计算模块110和命令执行模块120可以以单次的循环操作为单位进行数据交互,完成每次的数据循环操作处理。或者,也还可以由参数计算模块110计算多次循环操作需要的数据循环操作参数,返回给命令执行模块120。相应的,命令执行模块120接收到参数计算模块发送的数据循环操作参数后,可以根据数据循环操作参数执行多次的循环操作命令。本发明实施例并不对参数计算模块110和命令执行模块120之间的数据交互方式进行限定。
也即,在本发明实施例中,芯片软件仅需要在数据循环操作开始时配置循环操作配置参数,而不需要在数据循环操作的过程中频繁介入,后续过程可以由芯片硬件自动计算每次循环操作中的参数的变化,并根据计算得到的参数自动完成多次整体的循环操作。也即,芯片硬件能够自动完成每次循环操作后的同步处理,并自动触发下一次循环操作,直到循环次数达到设定值。由此可见,在本发明实施例中,可以通过芯片硬件直接实现同一相同数据操作的多次循环执行。这种数据处理方式可以有效减轻软件工作负载,提高数据处理速度和效率,进而提高芯片的整体工作性能。
需要说明的是,本发明实施例所提供的数据处理系统可以执行各种类型的循环操作类型,只要循环操作中涉及到的参数是固定配置参数和/或规律变化配置参数即可,因此可以应用于多种数据循环处理场景中。
在本发明的一个可选实施例中,参数计算模块具体用于:根据循环操作配置参数计算首次数据循环操作参数;将首次数据循环操作参数发送至命令执行模块;根据循环操作配置参数计算更新数据循环操作参数;将更新数据循环操作参数发送至命令执行模块;命令执行模块具体用于:根据首次数据循环操作参数执行首次数据循环操作处理;根据更新数据循环操作参数再次自动执行数据循环操作处理。
其中,首次数据循环操作参数可以是用于执行第一次数据循环操作处理的数据循环操作参数。更新数据循环操作参数可以是用于执行后续的数据循环操作处理的数据循环操作参数,例如,当循环总次数为3时,更新数据循环操作参数可以是第二次和第三次的数据循环操作处理的数据循环操作参数。首次数据循环操作处理可以是第一次数据循环操作处理。
可选的,在参数计算模块110获取到循环操作配置参数之后,可以首先根据循环操作配置参数计算第一次执行数据循环操作处理的首次数据循环操作参数,并将计算得到的首次数据循环操作参数发送至命令执行模块120。命令执行模块120可以根据首次数据循环操作参数执行首次数据循环操作处理。可选的,命令执行模块120在每次执行完数据循环操作处理之后,可以向参数计算模块110反馈处理完成的信息,以使参数计算模块110在确定数据循环操作处于继续执行状态的情况下,继续根据循环操作配置参数计算更新数据循环操作参数,并将更新数据循环操作参数发送至命令执行模块120,以使命令执行模块120根据更新数据循环操作参数再次自动执行数据循环操作处理。例如,当命令执行模块120完成首次数据循环操作处理之后,参数计算模块110继续根据循环操作配置参数计算更新数据循环操作参数,并将更新数据循环操作参数发送至命令执行模块120,以使命令执行模块120根据更新数据循环操作参数自动执行第二次的数据循环操作处理。如果参数计算模块110确定数据循环操作处于继续执行状态,则可以继续根据循环操作配置参数再次计算更新数据循环操作参数,并将更新数据循环操作参数发送至命令执行模块120,以使命令执行模块120根据更新数据循环操作参数自动执行第三次的数据循环操作处理。以此类推,直至完成所有的数据循环操作处理。
在本发明的一个可选实施例中,循环操作配置参数可以包括循环总次数;如图2所示,数据处理系统还可以包括循环次数判断模块130,循环次数判断模块与参数计算模块电连接,并与命令执行模块电连接,循环次数判断模块用于:计算更新数据循环操作参数对应的当前循环次数;在确定当前循环次数与循环总次数不相同的情况下,确定数据循环操作处于继续执行状态,并生成状态指示指令;其中,状态指示指令用于指示数据循环操作处于继续执行状态;向参数计算模块和命令执行模块发送状态指示指令。
其中,循环总次数用于规定数据循环操作处理的循环数量。循环次数判断模块130可以用于计算当前的循环次数是否为最终的循环次数,以确定数据循环操作处理是否完成。当前循环次数也即当前循环的次数。状态指示指令可以是用于指示数据循环操作处于继续执行状态的指令。
在本发明实施例中,数据处理系统还可以包括循环次数判断模块130。循环次数判断模块130可以集成在参数计算模块110中,作为参数计算模块110中的一个子模块来判断数据循环操作是否处于继续执行状态,也即判断是否继续执行数据循环操作。可选的,循环次数判断模块130还可以独立于参数计算模块110独自完成数据循环操作状态的判断。具体的,循环次数判断模块130可以在命令执行模块120根据更新数据循环操作参数执行当前循环操作命令之后,触发循环次数判断模块130计算更新数据循环操作参数对应的当前循环次数。循环次数判断模块130可以根据计算得到的当前循环次数与循环总次数进行对比。如果确定当前循环次数与循环总次数不相同,表明数据循环操作处于继续执行状态,也即需要继续执行数据循环操作。此时,触发循环次数判断模块130可以生成状态指示指令,并将生成状态指示指令发送至参数计算模块110和命令执行模块120,以指示参数计算模块110继续根据循环操作配置参数计算更新数据循环操作参数,并将更新数据循环操作参数发送至命令执行模块120,并触发命令执行模块120继续自动执行数据循环操作处理。
在本发明的一个可选实施例中,命令执行模块120还可以用于:获取芯片硬件数据处理终止状态;将芯片硬件数据处理终止状态进行返回。
其中,芯片硬件数据处理终止状态可以是芯片硬件完成数据循环操作处理的状态,可以包括芯片硬件的状态,也可以包括最终的数据处理状态,本发明实施例对此并不进行限制。
相应的,当命令执行模块120执行完最后一次数据循环操作处理后,循环次数判断模块130可以确定停止执行数据循环操作,表明数据循环操作处于停止执行状态。循环次数判断模块130可以向命令执行模块120发送状态指示指令,以指示命令执行模块120停止执行数据循环操作处理。此时,命令执行模块120可以获取芯片硬件数据处理终止状态,并将芯片硬件数据处理终止状态返回至芯片软件。因此,芯片软件只需要在循环开始时配置参数,在循环结束时查看状态,不需要在循环过程中的频繁介入,从而给软件工作减负。
本发明实施例通过参数计算模块和命令执行模块构成一种数据处理系统,以通过参数计算模块获取在数据循环操作启动时通过芯片软件配置的循环操作配置参数,在确定数据循环操作处于继续执行状态的情况下,根据循环操作配置参数生成数据循环操作参数,并向命令执行模块发送数据循环操作参数,以使命令执行模块根据数据循环操作参数持续自动执行数据循环操作,解决现有循环执行的数据处理操作中存在的数据处理效率低且影响芯片整体性能等问题,能够提高数据循环操作处理的高效性,从而减轻芯片的软件负载,进而提高芯片的整体工作性能。
实施例二
本实施例以上述实施例为基础进行具体化,限定了数据循环操作可以包括内存搬移的循环操作;循环操作配置参数可以包括:内存起始地址、内存目的地址、数据搬移长度、第一数据搬移偏移量、第二数据搬移偏移量和循环总次数。
其中,内存搬移的循环操作可以用于采用循环处理的方式进行内存搬移。内存起始地址可以是搬移内存的起始地址,内存目的地址可以是搬移内存的目的地址。数据搬移长度可以是每次搬移数据的长度。第一数据搬移偏移量可以是每次搬移数据的内存起始地址的偏移量,第二数据搬移偏移量可以是每次搬移数据的内存目的地址的偏移量。或者,第一数据搬移偏移量可以是每次搬移数据的内存目的地址的偏移量,第二数据搬移偏移量可以是每次搬移数据的内存起始地址的偏移量。本发明实施例并不对第一数据搬移偏移量和第二数据搬移偏移量的具体偏移量类型进行限定。
在内存数据搬移场景中,现有技术可以通过芯片软件中的for循环,实现不同地址内存搬移的操作。
在一个具体的例子中,假设循环总次数为10次,每次搬移时的起始地址src_addr递增相应的偏移量src_offset,目的地址dst_addr也需要递增相应的偏移量dst_offset,每次搬移的数据长度为length。则for循环语句的具体内容可以为:
for(i=0;i<10;i++)
{
memcopy(src_addr+src_offset*i, dst_addr+dst_offset*i, length);
}
上述例子中,就是目前芯片常见的用软件的方式来实现内存搬移的循环操作。可见,每次执行循环操作时,芯片软件都需要重新配置硬件参数,这是需要访问硬件寄存器资源的行为。而这多次的硬件配置中,配置的硬件参数大部分是一样的,只有少量硬件参数是随着循环次数的增加而改变,且变化规律是可以预测的。例如,src_addr、dst_addr、length,其中,length是固定的,在10次循环中不变,src_addr/dst_addr的每次变化也是有规律的,递增固定offset。因此,在芯片软件第一次配置参数后,无需反复计算后续循环的硬件参数,可以转移至芯片硬件进行计算。
采用本发明实施例所提供的数据处理系统,芯片可以通过芯片软件在数据循环操作启动时配置循环操作配置参数。例如,配置循环操作配置参数具体可以配置为:repeat_memcopy(src_addr, dst_addr, length, src_addr_inc=src_offset, dst_addr_inc=dst_offset, repeat_num=10)。在该配置循环操作配置参数中,repeat_memcopy()函数表示内存循环搬移函数,同时新增了src_addr_inc(表示source address的每次递增,如第一数据搬移偏移量)、dst_addr_inc(表示destination address的每次递增,如第二数据搬移偏移量)、repeat_num(表示循环总次数)。在该场景中,芯片软件只需要调用一次repeat_memcopy函数,对硬件寄存器资源进行一次访问配置,即可释放资源执行其他任务,交由芯片硬件独立完成所有的数据循环操作处理。等芯片硬件独立完成所有的数据循环操作处理之后,芯片软件可以获取芯片硬件数据处理终止状态,以再继续后续处理。
由此可见,本发明实施例所提供的数据处理系统处理内存搬移操作时,可以从整体上节省大量硬件的配置时间,并且循环总次数越大,收益越高。
实施例三
本实施例以上述实施例为基础进行具体化,限定了数据循环操作可以包括张量数据切片的循环操作;循环操作配置参数可以包括:待切片数据内存起始地址、待切片数据大小、待切片数据位置、切片大小、切片步长、切片数据存放地址、切片数据存放地址偏移量和循环总次数。
其中,张量(tensor)也即描述方阵的物理量。张量数据可以是具有不同维度尺寸的数据。示例性的,张量数据可以是0维张量的数据(标量)、1维张量的数据(向量)、2维张量的数据(矩阵)、3维张量的数据或4维张量的数据等,本发明实施例并不对张量数据的维度进行限定。张量数据切片的循环操作也即对张量数据进行循环切片的操作。所谓循环切片也即从张量数据中依次遍历获取部分相同大小的数据。待切片数据内存起始地址可以是原始数据的内存起始地址。待切片数据大小可以是原始数据的大小。所谓原始数据也即被遍历的数据。待切片数据位置可以是原始数据中开始遍历获取数据的位置,也即首次切片数据的位置,如数据组中的第二个数据位置等。切片大小可以是每次遍历原始数据获取的数据大小。切片步长可以是每次循环遍历原始数据的步长。切片数据存放地址可以是切片数据的存放地址,切片数据也即每次循环遍历原始数据得到的部分数据。切片数据存放地址偏移量可以是每次存放切片数据的偏移量。
张量数据可以广泛应用于多种场景中,如AI(Artificial Intelligence,人工智能)计算场景。在AI计算中,一种更为常见的典型的数据循环操作是对尺寸较大的张量数据进行切片。比如卷积时,需要用一个较小的卷积核,作用到一个尺寸较大的张量数据进行卷积处理。具体需要按照卷积核的大小,把输入的张量数据遍历处理一遍,即循环执行如下步骤:根据卷积核大小,对输入的张量数据切片;切片后的数据和卷积核进行卷积操作,得到一个结果;切片窗口移动到下一组数据切片位置。重复上述操作,直至遍历整个输入的张量数据,卷积完成。上述任务中的对输入的张量数据切片就是一个典型的相同操作多次循环执行的数据处理过程。在上述数据处理过程中,每次执行的操作都是切片,每次切片的数据尺寸是固定的。每次切片操作中不同的只有切片的起始位置,即地址偏移处理,而位置信息是规律变化的,根据当前切片操作的起始位置,以及切片大小,就可以通过芯片硬件计算出下一次切片的起始位置。
如果用传统的方法,就需要芯片软件通过for循环,实现多次的切片操作。在有些AI模型的应用中,循环次数可能达到数百次,每一次的硬件参数配置时间统计起来就是一个较长的时间消耗。
采用本发明实施例所提供的数据处理系统,芯片可以通过芯片软件在数据循环操作启动时配置循环操作配置参数。例如,配置循环操作配置参数具体可以配置为:repeat_slice(src_addr,src_size, slice_start_position, slice_size, slice_stride, dst_addr, dst_addr_inc, repeat_num)。在该配置循环操作配置参数中,repeat_slice()函数表示循环切片函数,src_addr表示待切片数据内存起始地址,src_size表示待切片数据大小,slice_start_position表示待切片数据位置(后续可简称slice_start),slice_size表示切片大小,slice_stride表示切片步长,dst_addr表示切片数据存放地址,dst_addr_inc表示切片数据存放地址偏移量,repeat_num表示循环总次数。
在该场景中,芯片软件同样只需要调用一次repeat_slice函数,对硬件寄存器资源进行一次访问配置,即可释放资源执行其他任务,交由芯片硬件独立完成所有的数据循环操作处理。等芯片硬件独立完成所有的数据循环操作处理之后,芯片软件可以获取芯片硬件数据处理终止状态,以再继续后续处理。
图3是本现有技术中芯片工作流程示意图,图4是本发明实施例三提供的一种芯片工作流程示意图。如图3所示,由于芯片软件的频繁介入,芯片硬件在执行过程中会出现间断,导致芯片硬件出现空闲状态,芯片硬件的实际利用率并不高。如图4所示,本发明具有数据处理系统的芯片在首次配置寄存器时花费时间较多,但是后续硬件执行命令就可以无缝连接起来,芯片软件不必在中间介入,总体时间可以实现大幅节省。
同时,数据处理系统执行张量数据切片的循环操作时,还可以通过控制循环的遍历规律,进而实现多种张量数据切片的变种。可选的,每次切片的数据流可以自由控制,从而控制切片数据扫描方向。比如对于3维的张量数据[C,H, W],可以按Z形,进行切片数据扫描,即先遍历W方向,再遍历H方向。或者,还可以按N形,进行切片数据扫描,即先遍历H方向,再遍历W方向。可选的,操作循环次数也可以自由控制,如可以设置为将输入数据切完为止,或者,可以指定按规定次数切片。还可以设置将同一张量数据,进行多次反复切片,即对张量数据切片完成后,再重新回到张量数据的初始位置,进行下一轮切片,实现张量内循环切片。或者,也还可以对多个张量数据进行切片,即对一个张量数据切完后,增加一个张量数据间的偏移量,跳到另一个同样大小的张量数据继续进行切片,实现张量间循环切片。
以上述场景中的3维张量数据循环切片为例,详细描述参数计算模块的工作过程:
首先,完成单笔的切片操作,参数计算模块需要配置如表1所示的参数。
表1 参数计算模块配置单笔切片的操作参数
完成张量数据的循环切片,参数计算模块还需要配置如表2所示的参数。
表2 参数计算模块配置张量数据循环切片的操作参数
图5是本发明实施例三提供的一种对张量数据进行“Z”扫描切片的效果示意图。在一个具体的例子中,如图5所示,如果切片是按“Z”形扫描,切片数据顺序为N000-N001-N002-N010-N011-N012-N020-N021-N022(其中Nxyz x/y/z为维度角标,对应C/H/W)。完成这一切片功能,需要实现下面的循环操作:
for(i=0;i<DIM2_SLICE_REPEAT_NUM; i++) {
for(j=0;j<DIM1_SLICE_REPEAT_NUM; j++) {
for(k=0; k<DIM0_SLICE_REPEAT_NUM; k++) {
slice(dim_src_size, slice_size, dim_start);
}}}
其中,dim表示dimension的简称。例如,DIM2_SLICE_REPEAT_NUM即为dimension2_slice_repeat_num,表示C方向切片数据的循环总次数。同理,DIM0_SLICE_REPEAT_NUM 表示W方向切片数据的循环总次数,DIM1_SLICE_REPEAT_NUM 表示H方向切片数据的循环总次数。slice()表示切片函数, dim_src_size表示某一维度待切片数据大小,dim_start表示某一维度切片起始位置。
因为每轮切片的数据尺寸大小是不变的,不同的只是每轮切片的起始位置,所以参数计算模块中需要完成切片数据起始位置的计算,计算表达式为:
dim0_repeat_slice_start = dim0_slice_start + dim0_slice_stride * k;
dim1_repeat_slice_start = dim1_slice_start + dim1_slice_stride * j;
dim2_repeat_slice_start = dim2_slice_start + dim2_slice_stride * i;
其中,dim表示dimension的简称。例如,dim0_repeat_slice_start即为dimension0_repeat_slice_start,表示W方向每次循环切片数据的起始位置,dim0_slice_start表示W方向首次切片数据起始位置,dim0_slice_stride表示W方向切片步长。Dim1_repeat_slice_start即为dimension1_repeat_slice_start,表示H方向每次循环切片数据的起始位置,dim1_slice_start表示H方向首次切片数据起始位置,dim1_slice_stride表示H方向切片步长。Dim2_repeat_slice_start即为dimension2_repeat_slice_start,表示C方向每次循环切片数据的起始位置,dim2_slice_start表示C方向首次切片数据起始位置,dim2_slice_stride表示C方向切片步长。
上式中,i、j、k的变化规律和上述for循环中的一致。上述计算表达式只是3维张量数据Z形扫描的张量数据内的重复循环切片,根据不同的需求,在不同的模式选择下,都可以通过芯片硬件计算出所需的参数。这样,对张量数据执行的后续的每一次循环切片,都不再需要芯片软件来配置新的参数。
上文以3维张量数据切片的循环操作为例,描述了本发明实施例的数据处理系统的工作流程和结构,但是本发明实施例所提供数据处理系统的适用范围更广泛,可以适用于更多循环操作,搭配不同的模式选择,可以得到不同的循环变种。需要注意的是,这些操作在循环过程中的参数变化必须是有规律的,或是固定不变的,这样才能够通过芯片硬件灵活实现。
实施例四
图6是本发明实施例四提供的一种数据处理方法的流程图,本实施例可适用于通过芯片硬件自动执行数据循环操作的情况,该方法可以由数据处理系统来执行,该系统可以由硬件的方式来实现,并一般可集成在芯片中,与芯片软件配合使用。相应的,如图6所示,该方法包括如下操作:
S410、获取在数据循环操作启动时通过芯片软件配置的循环操作配置参数;其中,所述循环操作配置参数包括固定配置参数和/或规律变化配置参数。
在本发明实施例中,芯片可以通过芯片软件在数据循环操作初始化启动时配置整个数据循环操作需要的命令及循环操作配置参数,并触发芯片硬件根据循环操作配置参数开始执行数据循环操作。相应的,芯片软件可以将配置的循环操作配置参数发送至参数计算模块。
S420、在根据所述循环操作配置参数确定数据循环操作处于继续执行状态的情况下,根据所述循环操作配置参数生成数据循环操作参数。
由于循环操作配置参数中的参数类型为固定配置参数和/或规律变化配置参数,可以由芯片硬件直接计算。因此,参数计算模块如果确定数据循环操作处于继续执行状态,则可以根据接收的循环操作配置参数计算每次数据循环操作对应的数据循环操作参数发送给命令执行模块。
S430、根据所述数据循环操作参数持续自动执行数据循环操作处理。
相应的,命令执行模块可以根据接收的数据循环操作参数持续自动执行每次的数据循环操作,直至数据循环操作处理完成。在参数计算模块和命令执行模块交互执行数据循环操作的过程中,无需芯片软件的参与,芯片软件可以释放资源去执行其他任务,在等芯片硬件执行完数据循环操作后,可以进行后续的数据处理过程。
可选的,参数计算模块可以根据循环操作配置参数计算当前循环次数,并根据当前循环次数计算当前循环操作需要的数据循环操作参数,返回给命令执行模块。相应的,命令执行模块接收到参数计算模块发送的数据循环操作参数后,可以根据数据循环操作参数执行当前循环操作命令。也即,参数计算模块和命令执行模块可以以单次的循环操作为单位进行数据交互,完成每次的数据循环操作处理。或者,也还可以由参数计算模块计算多次循环操作需要的数据循环操作参数,返回给命令执行模块。相应的,命令执行模块接收到参数计算模块发送的数据循环操作参数后,可以根据数据循环操作参数执行多次的循环操作命令。本发明实施例并不对参数计算模块和命令执行模块之间的数据交互方式进行限定。
也即,在本发明实施例中,芯片软件仅需要在数据循环操作开始时配置循环操作配置参数,而不需要在数据循环操作的过程中频繁介入,后续过程可以由芯片硬件自动计算每次循环操作中的参数的变化,并根据计算得到的参数自动完成多次整体的循环操作。也即,芯片硬件能够自动完成每次循环操作后的同步处理,并自动触发下一次循环操作,直到循环次数达到设定值。由此可见,在本发明实施例中,可以通过芯片硬件直接实现同一相同数据操作的多次循环执行。这种数据处理方式可以有效减轻软件工作负载,提高数据处理速度和效率,进而提高芯片的整体工作性能。
需要说明的是,本发明实施例所提供的数据处理系统可以执行各种类型的循环操作类型,只要循环操作中涉及到的参数是固定配置参数和/或规律变化配置参数即可,因此可以应用于多种数据循环处理场景中。
在本发明的一个可选实施例中,在所述获取在数据循环操作启动时通过芯片软件配置的循环操作配置参数之后,还可以包括:根据所述循环操作配置参数计算首次数据循环操作参数;根据所述首次数据循环操作参数执行首次数据循环操作处理;所述根据所述数据循环操作参数持续自动执行数据循环操作处理,包括:根据所述循环操作配置参数计算更新数据循环操作参数;根据所述更新数据循环操作参数再次自动执行数据循环操作处理。
可选的,在参数计算模块获取到循环操作配置参数之后,可以首先根据循环操作配置参数计算第一次执行数据循环操作处理的首次数据循环操作参数,并将计算得到的首次数据循环操作参数发送至命令执行模块。命令执行模块可以根据首次数据循环操作参数执行首次数据循环操作处理。可选的,命令执行模块在每次执行完数据循环操作处理之后,可以向参数计算模块反馈处理完成的信息,以使参数计算模块在确定数据循环操作处于继续执行状态的情况下,继续根据循环操作配置参数计算更新数据循环操作参数,并将更新数据循环操作参数发送至命令执行模块,以使命令执行模块根据更新数据循环操作参数再次自动执行数据循环操作处理。例如,当命令执行模块完成首次数据循环操作处理之后,参数计算模块继续根据循环操作配置参数计算更新数据循环操作参数,并将更新数据循环操作参数发送至命令执行模块,以使命令执行模块根据更新数据循环操作参数自动执行第二次的数据循环操作处理。如果参数计算模块确定数据循环操作处于继续执行状态,则可以继续根据循环操作配置参数再次计算更新数据循环操作参数,并将更新数据循环操作参数发送至命令执行模块,以使命令执行模块根据更新数据循环操作参数自动执行第三次的数据循环操作处理。以此类推,直至完成所有的数据循环操作处理。
在本发明的一个可选实施例中,所述循环操作配置参数可以包括循环总次数;所述根据所述循环操作配置参数确定数据循环操作处于继续执行状态,可以包括:计算所述更新数据循环操作参数对应的当前循环次数;在确定所述当前循环次数与所述循环总次数不相同的情况下,确定数据循环操作处于继续执行状态;生成状态指示指令;其中,所述状态指示指令用于指示数据循环操作处于继续执行状态。
在本发明实施例中,还可以通过循环次数判断模块确定数据循环操作是否处于继续执行状态。循环次数判断模块可以集成在参数计算模块中,作为参数计算模块中的一个子模块来判断数据循环操作是否处于继续执行状态,也即判断是否继续执行数据循环操作。可选的,循环次数判断模块还可以独立于参数计算模块独自完成数据循环操作状态的判断。具体的,循环次数判断模块可以在命令执行模块根据更新数据循环操作参数执行当前循环操作命令之后,触发循环次数判断模块计算更新数据循环操作参数对应的当前循环次数。循环次数判断模块可以根据计算得到的当前循环次数与循环总次数进行对比。如果确定当前循环次数与循环总次数不相同,表明数据循环操作处于继续执行状态,也即需要继续执行数据循环操作。此时,触发循环次数判断模块可以生成状态指示指令,并将生成状态指示指令发送至参数计算模块和命令执行模块,以指示参数计算模块继续根据循环操作配置参数计算更新数据循环操作参数,并将更新数据循环操作参数发送至命令执行模块,并触发命令执行模块继续自动执行数据循环操作处理。
在本发明的一个可选实施例中,在根据所述数据循环操作参数持续自动执行数据循环操作处理之后,还可以包括:获取芯片硬件数据处理终止状态;将所述芯片硬件数据处理终止状态进行返回。
相应的,当命令执行模块执行完最后一次数据循环操作处理后,循环次数判断模块可以确定停止执行数据循环操作,表明数据循环操作处于停止执行状态。循环次数判断模块可以向命令执行模块发送状态指示指令,以指示命令执行模块停止执行数据循环操作处理。此时,命令执行模块可以获取芯片硬件数据处理终止状态,并将芯片硬件数据处理终止状态返回至芯片软件。因此,芯片软件只需要在循环开始时配置参数,在循环结束时查看状态,不需要在循环过程中的频繁介入,从而给软件工作减负。
在本发明的一个可选实施例中,所述数据循环操作可以包括内存搬移的循环操作;所述循环操作配置参数可以包括:内存起始地址、内存目的地址、数据搬移长度、第一数据搬移偏移量、第二数据搬移偏移量和循环总次数。
在本发明的一个可选实施例中,所述数据循环操作可以包括张量数据切片的循环操作;所述循环操作配置参数可以包括:待切片数据内存起始地址、待切片数据大小、待切片数据位置、切片大小、切片步长、切片数据存放地址、切片数据存放地址偏移量和循环总次数。
本发明实施例通过获取在数据循环操作启动时通过芯片软件配置的循环操作配置参数,在确定数据循环操作处于继续执行状态的情况下,根据循环操作配置参数生成数据循环操作参数,以根据数据循环操作参数持续自动执行数据循环操作,解决现有循环执行的数据处理操作中存在的数据处理效率低且影响芯片整体性能等问题,能够提高数据循环操作处理的高效性,从而减轻芯片的软件负载,进而提高芯片的整体工作性能。
需要说明的是,以上各实施例中各技术特征之间的任意排列组合也属于本发明的保护范围。
实施例五
在上述实施例的基础上,本发明实施例五还提供了一种芯片,包括上述任一实施例所述数据处理系统。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种数据处理系统,其特征在于,配置于芯片,包括参数计算模块和命令执行模块,所述参数计算模块与所述命令执行模块电连接;其中:
所述参数计算模块用于获取在数据循环操作启动时通过芯片软件配置的循环操作配置参数,在确定数据循环操作处于继续执行状态的情况下,根据所述循环操作配置参数生成数据循环操作参数,并向所述命令执行模块发送所述数据循环操作参数;其中,所述循环操作配置参数为芯片通过芯片软件在数据循环操作启动时一次性配置的硬件参数,用于指示芯片硬件独立完成整个数据循环操作,所述循环操作配置参数包括固定配置参数和规律变化配置参数;所述数据循环操作参数为所述参数计算模块根据当前循环次数实时生成的,用于指示所述命令执行模块完成当前循环操作命令的硬件参数;
所述命令执行模块用于根据所述数据循环操作参数持续自动执行数据循环操作;
其中,所述参数计算模块和所述命令执行模块均为芯片硬件;所述参数计算模块通过硬件电路利用获取的参数进行参数计算;所述命令执行模块通过硬件电路执行操作命令。
2.根据权利要求1所述的系统,其特征在于, 所述参数计算模块具体用于:
根据所述循环操作配置参数计算首次数据循环操作参数;
将所述首次数据循环操作参数发送至所述命令执行模块;
根据所述循环操作配置参数计算更新数据循环操作参数;
将所述更新数据循环操作参数发送至所述命令执行模块;
所述命令执行模块具体用于:
根据所述首次数据循环操作参数执行首次数据循环操作处理;
根据所述更新数据循环操作参数再次自动执行数据循环操作处理。
3.根据权利要求2所述的系统,其特征在于,所述循环操作配置参数包括循环总次数;
所述系统还包括循环次数判断模块,所述循环次数判断模块与所述参数计算模块电连接,并与所述命令执行模块电连接,所述循环次数判断模块用于:
计算所述更新数据循环操作参数对应的当前循环次数;
在确定所述当前循环次数与所述循环总次数不相同的情况下,确定数据循环操作处于继续执行状态,并生成状态指示指令;其中,所述状态指示指令用于指示数据循环操作处于继续执行状态;
向所述参数计算模块和所述命令执行模块发送所述状态指示指令。
4.根据权利要求1-3任一所述的系统,其特征在于,所述命令执行模块还用于:
获取芯片硬件数据处理终止状态;
将所述芯片硬件数据处理终止状态进行返回。
5.根据权利要求1-3任一所述的系统,其特征在于,所述数据循环操作包括内存搬移的循环操作;
所述循环操作配置参数包括:内存起始地址、内存目的地址、数据搬移长度、第一数据搬移偏移量、第二数据搬移偏移量和循环总次数。
6.根据权利要求1-3任一所述的系统,其特征在于,所述数据循环操作包括张量数据切片的循环操作;
所述循环操作配置参数包括:待切片数据内存起始地址、待切片数据大小、待切片数据位置、切片大小、切片步长、切片数据存放地址、切片数据存放地址偏移量和循环总次数。
7.一种数据处理方法,其特征在于,应用于芯片,包括:
获取在数据循环操作启动时通过芯片软件配置的循环操作配置参数;其中,所述循环操作配置参数为芯片通过芯片软件在数据循环操作启动时一次性配置的硬件参数,用于指示芯片硬件独立完成整个数据循环操作,所述循环操作配置参数包括固定配置参数和规律变化配置参数;
在根据所述循环操作配置参数确定数据循环操作处于继续执行状态的情况下,根据所述循环操作配置参数生成数据循环操作参数;其中,所述数据循环操作参数为参数计算模块根据当前循环次数实时生成的,用于指示命令执行模块完成当前循环操作命令的硬件参数;
根据所述数据循环操作参数持续自动执行数据循环操作处理;
其中,所述参数计算模块和所述命令执行模块均为芯片硬件;所述参数计算模块通过硬件电路利用获取的参数进行参数计算;所述命令执行模块通过硬件电路执行操作命令。
8.根据权利要求7所述的方法,其特征在于,在所述获取在数据循环操作启动时通过芯片软件配置的循环操作配置参数之后,还包括:
根据所述循环操作配置参数计算首次数据循环操作参数;
根据所述首次数据循环操作参数执行首次数据循环操作处理;
所述根据所述数据循环操作参数持续自动执行数据循环操作处理,包括:
根据所述循环操作配置参数计算更新数据循环操作参数;
根据所述更新数据循环操作参数再次自动执行数据循环操作处理。
9.根据权利要求8所述的方法,其特征在于,所述循环操作配置参数包括循环总次数;
所述根据所述循环操作配置参数确定数据循环操作处于继续执行状态,包括:
计算所述更新数据循环操作参数对应的当前循环次数;
在确定所述当前循环次数与所述循环总次数不相同的情况下,确定数据循环操作处于继续执行状态;
生成状态指示指令;其中,所述状态指示指令用于指示数据循环操作处于继续执行状态。
10.一种芯片,其特征在于,所述芯片包括如权利要求1-6中任一所述数据处理系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110415936.0A CN112817664B (zh) | 2021-04-19 | 2021-04-19 | 一种数据处理系统、方法及芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110415936.0A CN112817664B (zh) | 2021-04-19 | 2021-04-19 | 一种数据处理系统、方法及芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112817664A CN112817664A (zh) | 2021-05-18 |
CN112817664B true CN112817664B (zh) | 2021-07-16 |
Family
ID=75863650
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110415936.0A Active CN112817664B (zh) | 2021-04-19 | 2021-04-19 | 一种数据处理系统、方法及芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112817664B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113722269B (zh) * | 2021-08-26 | 2023-01-24 | 北京大学 | 一种基于昇腾ai处理器的跨步切片算子处理方法及装置 |
CN116841564B (zh) * | 2023-08-29 | 2023-11-14 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、设备以及计算机可读存储介质 |
CN116821019B (zh) * | 2023-08-30 | 2023-11-14 | 腾讯科技(深圳)有限公司 | 数据处理方法、计算机设备及芯片 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004049154A2 (en) * | 2002-11-28 | 2004-06-10 | Koninklijke Philips Electronics N.V. | A loop control circuit for a data processor |
CN102508635B (zh) * | 2011-10-19 | 2014-10-08 | 中国科学院声学研究所 | 一种处理器装置及其循环处理方法 |
GB2548603B (en) * | 2016-03-23 | 2018-09-26 | Advanced Risc Mach Ltd | Program loop control |
CN107450888B (zh) * | 2016-05-30 | 2023-11-17 | 世意法(北京)半导体研发有限责任公司 | 嵌入式数字信号处理器中的零开销循环 |
CN108595210B (zh) * | 2018-04-09 | 2021-12-10 | 杭州中天微系统有限公司 | 实现零开销循环的处理器 |
CN112000370B (zh) * | 2020-08-27 | 2022-04-15 | 北京百度网讯科技有限公司 | 循环指令的处理方法、装置、设备和存储介质 |
-
2021
- 2021-04-19 CN CN202110415936.0A patent/CN112817664B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112817664A (zh) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112817664B (zh) | 一种数据处理系统、方法及芯片 | |
TWI748151B (zh) | 神經網絡計算加速器及其執行的方法 | |
US7954095B2 (en) | Analysis and selection of optimal function implementations in massively parallel computer | |
CA2446796C (en) | Planning and scheduling reconfigurable systems with alternative capabilities | |
CN105893126A (zh) | 一种任务调度方法及装置 | |
CN111190842B (zh) | 直接存储器访问、处理器、电子设备和数据搬移方法 | |
JP2013506911A (ja) | 多重プロセッサ式のプログラマブルロジックコントローラ及びこれを動作させるための方法 | |
CA2433379A1 (en) | Modulo scheduling of multiple instruction chains | |
CN116431315B (zh) | 批处理任务的处理方法、装置、电子设备及存储介质 | |
US7131085B2 (en) | Distributed BDD reordering | |
CN111158875A (zh) | 基于多模块的多任务处理方法、装置及系统 | |
US9141310B1 (en) | Methods and apparatuses for shared state information among concurrently running processes or threads | |
KR20100048843A (ko) | 로봇용 소프트웨어 컴포넌트 장치 및 이를 이용한 쓰레드 처리 방법 | |
GB2482141A (en) | Implementing UML activity diagrams Via task sequencing | |
US8595734B2 (en) | Reduction of processing time when cache miss occurs | |
CN109948785B (zh) | 一种高效的神经网络电路系统和方法 | |
Di Stefano et al. | On the implementation of parallel shortest path algorithms on a supercomputer | |
Sgall | On-line scheduling of parallel jobs | |
Firoz et al. | Comparison of single source shortest path algorithms on two recent asynchronous many-task runtime systems | |
US9158580B2 (en) | Data flows and their interaction with control flows | |
Martín Álvarez et al. | Efficient data redistribution for malleable applications | |
Maza | Parallel and distributed computing with Julia | |
CN116700911A (zh) | 算子调度方法、装置、电子设备和可读存储介质 | |
CN114398095A (zh) | 算子的卸载及注册方法、装置、存储介质及电子装置 | |
CN113592062A (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 |