CN117033270B - 一种芯片、设备以及数据处理方法 - Google Patents
一种芯片、设备以及数据处理方法 Download PDFInfo
- Publication number
- CN117033270B CN117033270B CN202311291542.4A CN202311291542A CN117033270B CN 117033270 B CN117033270 B CN 117033270B CN 202311291542 A CN202311291542 A CN 202311291542A CN 117033270 B CN117033270 B CN 117033270B
- Authority
- CN
- China
- Prior art keywords
- data
- cross
- thread
- processing unit
- channel processing
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 29
- 238000012545 processing Methods 0.000 claims abstract description 391
- 239000013598 vector Substances 0.000 claims description 103
- 238000004364 calculation method Methods 0.000 claims description 88
- 238000006073 displacement reaction Methods 0.000 claims description 54
- 238000000034 method Methods 0.000 claims description 41
- 125000004122 cyclic group Chemical group 0.000 claims description 22
- 238000013507 mapping Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 claims description 4
- 238000012986 modification Methods 0.000 claims description 3
- 230000004048 modification Effects 0.000 claims description 3
- 238000004458 analytical method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 230000002093 peripheral effect Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
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/20—Handling requests for interconnection or transfer for access to input/output bus
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
Abstract
本申请公开了一种芯片、设备以及数据处理方法,属于计算机技术领域。该芯片包括跨通道处理单元、多路选择器和数据寄存器,跨通道处理单元具有获取数据寄存器中的数据组的能力;跨通道处理单元和多路选择器的输入端相连,多路选择器的输出端和数据寄存器相连;跨通道处理单元,用于获取数据寄存器保存的N个数据组,N为大于1的整数;跨通道处理单元,还用于根据对N个数据组中的至少一个数据组进行跨通道处理,得到N个运算结果;跨通道处理包括基于N个数据组中的第j个数据组得到N个运算结果中的第i个运算结果,i和j均为小于或等于N的正整数,i和j不同;多路选择器,用于将跨通道处理单元提供的N个运算结果写入数据寄存器。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种芯片、设备以及数据处理方法。
背景技术
直接内存访问(Direct Memory Access,DMA)是计算机总线架构提供的功能,将数据从磁盘驱动器等设备直接发送到计算机主板的内存上。
在相关技术中,在处理跨通道数据计算的过程中,需要基于直接内存访问和一级缓存(First-level Buffer)的复杂寻址模式,在缓存数据中查找待处理的数据,通过将查找到的数据顺序写入寄存器,以及对寄存器中的数据进行处理,实现跨通道数据计算。
然而,在相关技术中,需要频繁进行直接内存访问,处理效率较为低下。
发明内容
本申请提供了一种芯片、设备以及数据处理方法,所述技术方案如下:
根据本申请的一方面,提供了一种芯片,所述芯片包括跨通道处理单元、多路选择器和数据寄存器;所述跨通道处理单元和所述多路选择器的输入端相连,所述多路选择器的输出端和所述数据寄存器相连;
所述跨通道处理单元,用于获取所述数据寄存器保存的N个数据组,N为大于1的整数;
所述跨通道处理单元,还用于根据对所述N个数据组中的至少一个数据组进行跨通道处理,得到N个运算结果;所述跨通道处理包括基于所述N个数据组中的第j个数据组得到所述N个运算结果中的第i个运算结果,i和j均为小于或等于N的正整数,i和j不同;
所述多路选择器,用于将所述跨通道处理单元提供的所述N个运算结果写入所述数据寄存器。
在本申请的一个可选设计中,所述芯片还包括解析单元,所述解析单元和所述跨通道处理单元相连;
所述解析单元,用于向所述跨通道处理单元发送控制信息,所述控制信息用于指示所述跨通道处理单元对所述N个数据组的跨通道处理方式;
所述跨通道处理单元,还用于获取所述解析单元提供的控制信息。
根据本申请的另一方面,提供了一种芯片,所述芯片包括M组数据处理单元、多路选择器和数据寄存器,每组属于一个线程单元,所述芯片还包括跨线程处理单元;所述跨线程处理单元分别和M个多路选择器的输入端相连,M个线程单元与所述M个多路选择器一一对应,M为大于1的整数;
所述跨线程处理单元,用于获取所述M个线程单元一一对应的M个数据寄存器保存的L个数据组,所述M个数据寄存器中的每个数据寄存器保存有至少一个数据组,L为大于1的整数,且M小于或等于L;
所述跨线程处理单元,还用于根据对所述L个数据组中的至少一个数据组进行跨线程处理,得到L个运算结果,所述跨线程处理包括基于L个数据组中的第y个数据组得到所述L个运算结果中的第x个运算结果,所述第x个运算结果对应的线程单元和所述第y个数据组对应的线程单元不同,x和y均为小于或等于L的正整数,x和y不同;
所述多路选择器,用于将所述跨线程处理单元提供的所述L个运算结果写入所述M个数据寄存器。
根据本申请的另一方面,提供了一种计算机设备,所述计算机设备中包括如如上方面所述的芯片。
根据本申请的另一方面,提供了一种数据处理方法,该方法应用于一种包括跨通道处理单元的芯片中,所述芯片包括跨通道处理单元、多路选择器和数据寄存器;所述跨通道处理单元和所述多路选择器的输入端相连,所述多路选择器的输出端和所述数据寄存器相连;所述方法包括:
所述跨通道处理单元获取数据寄存器保存的N个数据组,N为大于1的整数;
所述跨通道处理单元根据对所述N个数据组中的至少一个数据组进行跨通道处理,得到N个运算结果;所述跨通道处理包括基于所述N个数据组中的第j个数据组得到所述N个运算结果中的第i个运算结果,i和j均为小于或等于N的正整数,i和j不同;
所述多路选择器将所述跨通道处理单元提供的所述N个运算结果写入所述数据寄存器。
在本申请的一个可选设计中,所述芯片包括M组所述跨通道处理单元、所述多路选择器和所述数据寄存器,每组属于一个线程单元,所述芯片还包括跨线程处理单元;所述跨线程处理单元分别和M个多路选择器的输入端相连,M个线程单元与所述M个多路选择器一一对应,M为大于1的整数;所述方法还包括:
所述跨线程处理单元获取所述M个线程单元一一对应的M个数据寄存器保存的L个数据组,所述M个数据寄存器中的每个数据寄存器保存有至少一个数据组,L为大于1的整数,且M小于或等于L;
所述跨线程处理单元根据对所述L个数据组中的至少一个数据组进行跨线程处理,得到L个运算结果,所述跨线程处理包括基于L个数据组中的第y个数据组得到所述L个运算结果中的第x个运算结果,所述第x个运算结果对应的线程单元和所述第y个数据组对应的线程单元不同,x和y均为小于或等于L的正整数,x和y不同;
所述多路选择器将所述跨线程处理单元提供的所述L个运算结果写入所述M个数据寄存器。
在本申请的一个可选设计中,所述跨线程处理单元包括级联连接的第一子单元和第二子单元;
所述根据对所述L个数据组中的至少一个数据组进行跨线程处理,得到L个运算结果,包括:
在所述L个数据组对应的M个线程单元之间的最大间距不超过第一门限的情况下,基于所述第一子单元对所述L个数据组中的至少一个数据组进行跨线程处理,得到所述L个运算结果;
在所述L个数据组对应的M个线程单元之间的最大间距超过第一门限的情况下,基于所述第二子单元对所述第一子单元转发的所述L个数据组中的至少一个数据组进行跨线程处理,得到所述L个运算结果。
在本申请的一个可选设计中,所述芯片中还包括N个执行流水线,所述N个执行流水线中的每个执行流水线的第一端和所述跨通道处理单元相连,所述N个执行流水线中的每个执行流水线的第二端和所述数据寄存器相连;
所述跨通道处理单元获取数据寄存器保存的N个数据组,包括:
所述跨通道处理单元接收所述N个执行流水线发送的所述N个数据组,所述N个执行流水线和所述N个数据组一一对应,所述执行流水线中的数据组是按照的所述数据寄存器保存的向量数据中的元素位置顺序获得的。
在本申请的一个可选设计中,所述芯片中还包括解析单元,所述方法还包括:
所述跨通道处理单元获取所述解析单元提供的控制信息,所述控制信息用于指示所述跨通道处理单元对所述N个数据组的跨通道处理方式。
根据本申请的另一方面,提供了一种数据处理方法,应用于一种包括跨线程处理单元的芯片中,所述芯片包括M组数据处理单元、所述多路选择器和所述数据寄存器,每组属于一个线程单元,所述芯片还包括跨线程处理单元;所述跨线程处理单元分别和M个多路选择器的输入端相连,M个线程单元与所述M个多路选择器一一对应,M为大于1的整数;所述方法包括:
所述跨线程处理单元获取所述M个线程单元一一对应的M个数据寄存器保存的L个数据组,所述M个数据寄存器中的每个数据寄存器保存有至少一个数据组,L为大于1的整数,且M小于或等于L;
所述跨线程处理单元根据对所述L个数据组中的至少一个数据组进行跨线程处理,得到L个运算结果,所述跨线程处理包括基于L个数据组中的第y个数据组得到所述L个运算结果中的第x个运算结果,所述第x个运算结果对应的线程单元和所述第y个数据组对应的线程单元不同,x和y均为小于或等于L的正整数,x和y不同;
所述多路选择器将所述跨线程处理单元提供的所述L个运算结果写入所述M个数据寄存器。
本申请提供的技术方案带来的有益效果至少包括:
通过芯片上部署的跨通道处理单元,实现了对第j个位置的数据组进行跨通道处理得到第i个位置的运算结果,能够进行向量数据中跨元素位置的处理;避免了使用直接内存访问和复杂寻址模式,节省了数据寻址造成的时间消耗和直接内存访问造成的总线资源开销,提高了处理效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个示例性实施例提供的计算机系统的示意图;
图2是本申请一个示例性实施例提供的数据处理方法的第一流程图;
图3是本申请一个示例性实施例提供的数据处理方法的第二流程图;
图4是本申请一个示例性实施例提供的循环位移的示意图;
图5是本申请一个示例性实施例提供的数据处理方法的第三流程图;
图6是本申请一个示例性实施例提供的乱序位移的示意图;
图7是本申请一个示例性实施例提供的数据处理方法的第四流程图;
图8是本申请一个示例性实施例提供的统计计算的示意图;
图9是本申请一个示例性实施例提供的数据处理方法的第五流程图;
图10是本申请一个示例性实施例提供的芯片的示意图;
图11是本申请一个示例性实施例提供的跨通道处理单元和跨线程处理单元的示意图;
图12是本申请一个示例性实施例提供的数据处理方法的第六流程图;
图13是本申请一个示例性实施例提供的数据处理方法的第七流程图;
图14是本申请一个示例性实施例提供的数据处理方法的第八流程图。
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请中涉及到的数据组等信息都是在充分授权的情况下获取的。
应当理解,尽管在本公开可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一参数也可以被称为第二参数,类似地,第二参数也可以被称为第一参数。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
图1示出了本申请一个实施例提供的电子设备的示意图。该电子设备可以实现成为数据处理方法的系统架构。本实施例中的电子设备100为具有数据处理能力的设备。示例性的,电子设备100是包括有一个或多个处理核心的芯片,比如4核心处理器、8核心处理器等。处理器可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。示例性的,上述处理器可以是中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)、人工智能(Artificial Intelligence,AI)处理器中的至少之一,也可以是具有数据处理能力的其他设备,本申请不进行限制。
电子设备100中的数据寄存器110是一种高速存储器件,用于暂时存储处理指令、数据和地址等信息。电子设备100中的跨通道处理单元120是具有数据处理能力的器件,比如处理器中的一个或多个处理核心。跨通道处理单元120具有获取数据寄存器110中存储的数据组的能力。
可选的,数据寄存器110和跨通道处理单元120之间具有多个并行排列的执行流水线(Execute Pipeline,EX_PIP),图中以数据寄存器110和跨通道处理单元120之间具有第一流水线114和第二流水线115为例进行介绍。示例性的,第一流水线114的第一端和跨通道处理单元120相连,第一流水线114的第二端和数据寄存器110相连。相似的,第二流水线115的第一端和跨通道处理单元120相连,第二流水线115的第二端和数据寄存器110相连。
示例性的,电子设备100能够将跨通道处理单元120的输出数据写入数据寄存器110。可选的,数据寄存器110和跨通道处理单元120之间连接有多路选择器(multiplexer,Mux)130。示例性的,跨通道处理单元120和多路选择器130的第一端相连,多路选择器130的第二端和数据寄存器110相连。跨通道处理单元120将输入发送至多路选择器130,由多路选择器130在数据寄存器110中写入数据。
图2示出了本申请一个示例性实施例提供的数据处理方法的第一流程图。该方法可以应用于一种包括跨通道处理单元的芯片中。该方法包括:
步骤510:跨通道处理单元获取数据寄存器保存的N个数据组;
示例性的,N个数据组中的一个数据组可以包括一个或多个待处理数据;进一步的,在数据组包括多个待处理数据的情况下,多个待处理数据在所属的向量数据中的元素位置相同。
示例性的,芯片中的跨通道处理单元(Cross Lane Unit,CLU),用于获取数据寄存器保存的N个数据组,跨通道处理单元具有获取数据寄存器中的数据组的能力;进一步的,跨通道处理单元可以和数据寄存器相连,直接获取数据寄存器保存的N个数据组;跨通道处理单元也可以接收芯片上的其他器件(比如执行流水线)发送的N个数据组,实现间接获取数据寄存器保存的N个数据组;本申请对此不进行限制。示例性的,跨通道处理单元具有获取数据寄存器中的数据组的能力;跨通道处理单元和多路选择器的输入端相连,多路选择器的输出端和数据寄存器相连。
步骤520:跨通道处理单元根据对N个数据组中的至少一个数据组进行跨通道处理,得到N个运算结果;
示例性的,N个运算结果是基于N个数据组的运算结果;示例性的,N个运算结果中的任意一个运算结果是对至少一个数据组进行运算得到的。
示例性的,N个运算结果中存在第i个运算结果;第i个运算结果是N个运算结果中的至少一个运算结果。跨通道处理包括基于N个数据组中的第j个数据组得到第i个运算结果,i和j均为小于或等于N的正整数,i和j不同。
示例性的,第i个运算结果是基于第j个数据组中的部分或全部数据得到的,示例性的,第i个运算结果是基于第j个数据组中待处理数据得到的;第j个数据组中的待处理数据也称为第一待处理数据,N个运算结果中的第i个运算结果是基于第一待处理数据得到的。
示例性的,N个运算结果顺序组成运算结果向量,N个数据组顺序组成待处理向量;也即运算结果向量是N个运算结果顺序组成的向量,待处理向量是N个数据组顺序组成的向量。第i个运算结果在运算结果向量中的元素位置和第一待处理数据在待处理向量中的元素位置不同,即是对应于上文中的i和j不同;需要说明的是,在数据组包括多个待处理数据的情况下,待处理向量中的各个元素在数据寄存器中归属的向量数据相同,各个元素归属的向量数据是第一待处理数据在数据寄存器中存储的一个向量数据。
示例性的,跨通道处理的具体实现方式包括但不限于基本四则运算、修改位置、计算平均值、方差等处理方式中的至少之一。示例性的,芯片中的跨通道处理单元,用于根据对N个数据组中的至少一个数据组进行跨通道处理,得到N个运算结果。
步骤530:多路选择器将N个运算结果写入数据寄存器;
示例性的,芯片中的多路选择器,用于将跨通道处理单元提供的N个运算结果写入数据寄存器。示例性的,N个运算结果在数据寄存器中的写入位置可以是预先设置的,也可以是由多路选择器确定的;本实施例不进行限制。
综上所述,本实施例提供的方法,通过芯片上部署的跨通道处理单元,实现了对第j个位置的数据组进行跨通道处理得到第i个位置的运算结果,能够进行向量数据中跨元素位置的处理;避免了使用直接内存访问和复杂寻址模式,节省了数据寻址造成的时间消耗和直接内存访问造成的总线资源开销,提高了处理效率。
图3示出了本申请一个示例性实施例提供的数据处理方法的第二流程图。该方法可以应用于一种包括跨通道处理单元的芯片中。即在图2示出的实施例中,步骤520可以实现为步骤522:
步骤522:跨通道处理单元将N个待处理数据中的第j个待处理数据循环位移为第i个运算结果,得到N个运算结果;
在本实施例中,对N个数据组进行跨通道处理的方式为循环位移,N个数据组中的每个数据组中的待处理数据的数量为一个N个数据组和N个待处理数据一一对应。其中,i的取值为mod(j+k,N)。
示例性的,循环位移用于指示修改待处理数据在向量数据中的位置;比如将N个待处理数据中头部移出的数据转移至尾部。具体的,循环位移的步长为k,进一步的,将第j个待处理数据向N个待处理数据中的在后位置进行循环位移时,k为正整数;反之,k的取值为负整数。
示例性的,mod为求余函数;第j个待处理数据是N个待处理数据中的任意一个待处理数据。mod(j+k,N)用于指示(j+k)除以N的余数。
示例性的,图4示出了本申请一个示例性实施例提供的循环位移的示意图。图中以针对8个待处理数据进行循环位移为例进行说明,8个待处理数据顺序组成待处理向量,待处理向量为:[a0,a1,a2,a3,a4,a5,a6,a7];经过循环位移得到的8个运算结果顺序组成运算结果向量,运算结果向量为:[a2,a3,a4,a5,a6,a7,a0,a1]。可以看出,循环位移用于指示将每个待处理数据向N个待处理数据中的在前位置进行循环位移,循环向前向位移两个元素位置,即位移步长为-2。可以理解的,在不同的示例中循环位移的位移方向和位移距离可以和本实施例不同。
示例性的,N个待处理数据和N个运算结果一一对应;以图4为例,N个运算结果中的任一运算结果均与N个待处理数据中唯一一个待处理数据相同,即N个待处理数据和N个运算结果一一对应。
示例性的,第一运算结果是N个运算结果中的任意一个运算结果;第一运算结果是基于第一待处理数据得到的,具体的,将第一待处理数据确定为第一运算结果。
在本实施例中,N个待处理数据顺序组成待处理向量。第一运算结果在运算结果向量中的元素位置和第一待处理数据在待处理向量中的元素位置不同。以图4为例,比如:第一运算结果对应于运算结果向量中的第二个元素位置,即a3;循环位移用于将第一待处理数据确定为第一运算结果。在待处理向量中,第一待处理数据对应于待处理向量中的第四个元素位置,即a3;第一运算结果在运算结果向量中的元素位置(第二个元素位置)和第一待处理数据在待处理向量中的元素位置(第四个元素位置)不同。循环位移用于将第j个待处理数据循环位移为第mod(j+k,N)个运算结果,在上述例子中,j为4,k为-2;即是将第四个待处理数据循环位移为第二个运算结果。
示例性的,芯片中的跨通道处理单元,用于将N个待处理数据中的第j个待处理数据循环位移为第mod(j+k,N)个运算结果,得到N个运算结果。
综上所述,本实施例提供的方法,通过芯片上部署的跨通道处理单元,实现了对N个待处理数据分别进行循环位移得到N个运算结果,能够通过循环位移修改待处理数据在向量数据中的位置;避免了使用直接内存访问和复杂寻址模式,节省了数据寻址造成的时间消耗和直接内存访问造成的总线资源开销,提高了处理效率。
图5示出了本申请一个示例性实施例提供的数据处理方法的第三流程图。该方法可以应用于一种包括跨通道处理单元的芯片中。即在图2示出的实施例中,步骤520可以实现为步骤524:
步骤524:跨通道处理单元在第i个位移数据指示的数据序号为ki的情况下,将N个顺序数据中的第ki个顺序数据乱序位移为第i个运算结果,得到N个运算结果;
在本实施例中,对N个数据组进行跨通道处理的方式为为乱序位移,乱序位移用于修改顺序数据在所属的向量数据中的位置。具体的,每个数据组中的待处理数据包括顺序数据和位移数据,顺序数据是按照顺序排列的原始数据,位移数据用于指示进行乱序位移的数据序号。i和ki均为小于或等于N的正整数,存在至少一组i和ki不同。
示例性的,图6示出了本申请一个示例性实施例提供的乱序位移的示意图。图中以针对8个顺序数据进行乱序位移为例进行说明,8个顺序数据组成有待处理向量,待处理向量为:[b0,b1,b2,b3,b4,b5,b6,b7];8个位移数据按照顺序排列的向量记为位移向量;具体的,位移向量为:[2,1,3,0,6,5,7,4];示例性的,位移向量的第一个元素位置的元素填充内容为2(即第一个位移数据指示的数据序号为2);用于指示运算结果向量中第一元素位置的元素填充内容为数据序号为2的顺序数据,即b2。经过乱序位移得到的8个运算结果顺序组成运算结果向量,运算结果向量为:[b2,b1,b3,b0,b6,b5,b7,b8]。可以看出,位移数据指示了对顺序数据进行乱序位移的数据序号。可以理解的,在不同的示例中位移数据指示的位移位置可以和本实施例不同。
示例性的,N个位移数据和N个顺序数据一一对应;以图6为例,N个位移数据中的任一位移数据均用于指示N个顺序数据中唯一一个顺序数据的位移位置,即N个位移数据和N个顺序数据一一对应。示例性的,N个顺序数据中的任一顺序数据均与N个运算结果中的唯一一个运算结果相同,N个顺序数据和N个运算结果一一对应。
示例性的,第一待处理数据是N个顺序数据中的至少一个顺序数据。第一运算结果是基于第一待处理数据得到的,具体的,将N个顺序数据中的第一待处理数据确定为第一运算结果。
在本实施例中,N个顺序数据组成有待处理向量;进一步的,N个顺序数据按照N个数据组的顺序组成有待处理数据。第一运算结果在运算结果向量中的元素位置和第一待处理数据在待处理向量中的元素位置不同,即是对应于上文中的i和ki不同。以图6为例,比如:第一运算结果对应于运算结果向量中的第一个元素位置,即b2;将第一待处理数据确定为第一运算结果。在待处理向量中,第一待处理数据对应于待处理向量中的第三个元素位置,即b2;第一运算结果在运算结果向量中的元素位置(第一个元素位置)和第一待处理数据在待处理向量中的元素位置(第三个元素位置)不同。乱序位移用于将第ki个顺序数据乱序位移为第i个运算结果,在上述例子中,ki为3,i为1,存在有一组i和ki不同。
示例性的,芯片中的跨通道处理单元,用于在第i个位移数据指示的数据序号为ki的情况下,将N个顺序数据中的第ki个顺序数据乱序位移为第i个运算结果,得到N个运算结果。
需要说明的是,本实施例并不限制存在有第二运算结果和第二待处理数据;第二运算结果在运算结果向量中的元素位置和第二待处理数据在待处理向量中的元素位置相同,即并不限制存在i和ki相同的情况;以图6为例,比如:第二运算结果对应于运算结果向量中的第二个元素位置,即b1;将第二待处理数据确定为第二运算结果。在待处理向量中,第二待处理数据对应于待处理向量中的第二个元素位置,即b1;第二运算结果在运算结果向量中的元素位置(第二个元素位置)和第二待处理数据在待处理向量中的元素位置(第二个元素位置)相同。乱序位移用于将第ki个顺序数据乱序位移为第i个运算结果,在上述例子中,ki为2,i为2,存在有i和ki相同。
综上所述,本实施例提供的方法,通过芯片上部署的跨通道处理单元,实现了对顺序数据进行乱序位移得到N个运算结果,能够通过乱序位移修改顺序数据在所属的向量数据中的位置,避免了使用直接内存访问和复杂寻址模式,节省了数据寻址造成的时间消耗和直接内存访问造成的总线资源开销,提高了处理效率。
图7示出了本申请一个示例性实施例提供的数据处理方法的第四流程图。该方法可以应用于一种包括跨通道处理单元的芯片中。即在图2示出的实施例中,步骤520可以实现为步骤526:
步骤526:跨通道处理单元将第i个数据组中的第一计算因子和第j个数据组中的第二计算因子统计计算为第i个运算结果,得到N个运算结果;
在本实施例中,对N个数据组进行跨通道处理的方式为统计计算,N个数据组中的每个数据组包括第一计算因子和第二计算因子;统计计算用于对不同数据组中的至少两个计算因子进行四则运算、计算平均值、方差等统计计算中的至少之一。示例性的,i和j之间具有一一对应的映射关系,i和j均为小于或等于N的正整数,且i和j不同;示例性的,进行统计计算的两个计算因子所属的数据组不同。
示例性的,图8示出了本申请一个示例性实施例提供的统计计算的示意图。图中以针对4个数据组进行统计计算为例进行说明,每个数据组中的待处理数据是两个计算因子;由数据组中的计算因子组成的待处理向量的数量和每个数据组包括的计算因子的数量相同;比如在图8中组成有第一待处理向量和第二待处理向量;第一待处理向量是数据组中的第一计算因子组成的,第一待处理向量为:[c0,c1,c2,c3];第二待处理向量是数据组中的第二计算因子组成的,第二待处理向量为:[c4,c5,c6,c7];统计计算用于对不同数据组中的至少两个计算因子进行乘法计算;经过统计计算得到的4个运算结果顺序组成运算结果向量,运算结果向量为:[c8,c9,c10,c11]。其中,c8为c0和c5的乘积,c9为c1和c6的乘积,c10为c2和c7的乘积,c11为c3和c4的乘积。在一个示例中,针对一次统计计算,统计计算中利用的计算因子的数量和每个数据组中包括的计算因子的数量相同。
示例性的,第一运算结果是N个运算结果中的任意一个运算结果,第一运算结果对应于第一计算因子和第二计算因子;以图6为例,N个运算结果中的第一运算结果是基于第一待处理向量中唯一确定的一个元素,和第二待处理向量中唯一确定的一个元素进行乘积计算确定的,即第一运算结果对应于第一计算因子和第二计算因子。
示例性的,第一运算结果是基于第一计算因子和第二计算因子进行统计计算得到的,第一计算因子所属的第一数据组和第二计算因子所属的第二数据组不同。以图8为例,比如:第一运算结果对应于运算结果向量中的第一个元素位置,即c8;将第一计算因子和第二计算因子的乘积确定为第一运算结果。在第一待处理向量中,第一计算因子对应于待处理向量中的第一个元素位置,即c0,是第一个数据组中的第一计算因子;在第二待处理向量中,第二计算因子对应于待处理向量中的第二个元素位置,即c5,是第一个数据组中的第二计算因子;第一计算因子所属的第一数据组和第二计算因子所属的第二数据组不同。也即是说,第一计算因子在第一待处理向量中的元素位置(第一个元素位置)和第二计算因子在第二待处理向量中的元素位置(第二个元素位置)不同。统计计算用于指示将第i个数据组中的第一计算因子和第j个数据组中的第二计算因子统计计算为第i个运算结果,在上述例子中,i为1,j为2;i和j不同。
示例性的,芯片中的跨通道处理单元,用于将第i个数据组中的第一计算因子和第j个数据组中的第二计算因子统计计算为第i个运算结果,得到N个运算结果。
综上所述,本实施例提供的方法,通过芯片上部署的跨通道处理单元,实现了对两个计算因子进行统计计算得到N个运算结果,能够通过统计计算对不同数据组中的至少两个计算因子进行计算,避免了使用直接内存访问和复杂寻址模式,节省了数据寻址造成的时间消耗和直接内存访问造成的总线资源开销,提高了处理效率。
接下来,对芯片中的数据寄存器和数据组进行介绍。
示例性的,N个数据组中的一个数据组对应的位置信息用于指示数据组中的待处理数据在所属的向量数据中的元素位置;示例性的,待处理数据所属的向量数据存储在数据寄存器中,向量数据包括至少两个向量元素,待处理数据的元素位置用于指示携带有待处理数据的向量元素在向量数据中的位置。在一个示例中,向量数据为[s1,s2,s3],包括三个向量元素;待处理数据为s2,待处理数据的位置信息用于指示向量数据中的第二个元素位置。
示例性的,在数据组包括多个待处理数据的情况下,多个待处理数据在所属的向量数据中的元素位置相同。参考上文中的示例,多个待处理数据的位置信息相同,均用于指示待处理数据对应于向量数据中的第二个元素位置。
示例性的,N个数据组中的不同数据组对应的位置信息不同;N为大于1的整数。
图9示出了本申请一个示例性实施例提供的数据处理方法的第五流程图。该方法可以应用于一种包括跨通道处理单元的芯片中。即在图2示出的实施例的基础上,还包括步骤542、步骤544和步骤546:
步骤542:跨线程处理单元获取M个线程单元一一对应的M个数据寄存器保存的L个数据组;
示例性的,L个数据组中的一个数据组可以包括一个或多个待处理数据;进一步的,在数据组包括多个待处理数据的情况下,多个待处理数据在所属的向量数据中的元素位置相同。关于数据组和数据寄存器的介绍可以参考上文中的N个数据组。
芯片包括M组跨通道处理单元、多路选择器和数据寄存器,每组属于一个线程单元,芯片还包括跨线程处理单元;示例性的,芯片包括M个部件组,每个部件组至少包括跨通道处理单元、多路选择器和数据寄存器。M个部件组和M个线程单元一一对应。
芯片中的跨线程处理单元(Cross Thread Unit,CTU)用于获取M个数据寄存器保存的L个数据组,跨线程处理单元具有获取M个线程单元一一对应的M个数据寄存器中的数据组的能力;进一步的,跨线程处理单元可以和数据寄存器相连,直接获取L个数据组;跨线程处理单元也可以接收芯片上的其他器件(比如跨通道处理单元或执行流水线)发送的L个数据组,实现间接获取L个数据组;本申请对此不进行限制。
示例性的,M个数据寄存器中的每个数据寄存器保存有至少一个数据组。示例性的,不同数据寄存器提供的数据组的数量可以是相同的,也可以是不同的,本实施例对此不进行限制。示例性的,L为大于1的整数,M为大于1的整数,且M小于或等于L。示例性的,跨线程处理单元分别和M个线程单元一一对应的M个多路选择器的输入端相连,M个多路选择器中的每个多路选择器和所属线程单元中的数据寄存器相连。
步骤544:跨线程处理单元根据对L个数据组中的至少一个数据组进行跨线程处理,得到L个运算结果;
示例性的,L个运算结果是基于L个数据组的运算结果;示例性的,L个运算结果中的任意一个运算结果是对至少一个数据组进行运算得到的。
示例性的,L个运算结果中存在第x个运算结果;第x个运算结果是L个运算结果中的至少一个运算结果。跨线程处理包括基于L个数据组中的第y个数据组得到第x个运算结果,x和y均为小于或等于L的正整数,x和y不同。示例性的,第x个运算结果对应的线程单元和第y个数据组对应的线程单元不同;示例性的,第x个数据组对应的线程单元和第y个数据组对应的线程单元不同。关于L个运算结果组成运算结果向量的介绍参考上文中的步骤520,在这里不再重复。
步骤546:多路选择器将跨线程处理单元提供的L个运算结果写入M个数据寄存器;
示例性的,芯片中的多路选择器,用于将跨线程处理单元提供的L个运算结果写入数据寄存器。示例性的,数据寄存器接收的运算结果的顺序和保存的数据组的顺序相同;数据寄存器保存有第a个数据组的情况下,将第a个运算结果写入该数据寄存器。
示例性的,L个运算结果在数据寄存器中的写入位置可以是预先设置的,也可以是由多路选择器确定的;本实施例不进行限制。
综上所述,本实施例提供的方法,通过芯片上部署的跨线程处理单元,实现了对第y个位置的数据组进行跨线程处理得到第x个位置的运算结果,能够进行向量数据中跨元素位置的处理;避免了使用直接内存访问和复杂寻址模式,节省了数据寻址造成的时间消耗和直接内存访问造成的总线资源开销,提高了处理效率。
图10示出了本申请一个示例性实施例提供的芯片的示意图。
在本实施例中,芯片包括指令发射单元602、跨线程处理单元680和M个并行排列的线程单元;其中,M个并行排列的线程单元包括第一线程单元610、第二线程单元630至第M线程单元650。示例性的,第一线程单元610的标识号为0,也称线程单元0(Thread0);第二线程单元630的标识号为1,也称线程单元1(Thread1);第M线程单元650的标识号为M-1,也称线程单元M-1(Thread M-1)。
指令发射单元602用于对针对跨线程处理单元680或线程单元中的跨通道处理单元的指令进行解析,生成控制信息,将控制信息发送至跨线程处理单元680或线程单元中;需要说明的是,本实施例中各个硬件之间的连线上的箭头仅用于对数据流动方向进行示例性展示,并不对二者之间的连接方式进行限制。
以M个并行排列的线程单元中的第一线程单元610为例进行说明,第一线程单元610中包括有第一数据寄存器612、执行流水线a、执行流水线b、第一跨通道处理单元620和第一多路选择器614;在图中仅示出了第一线程单元610有两个并列的执行流水线,在不同的实现方式中,线程单元中可以包括有更多个并列的执行流水线。
示例性的,每个执行流水线的第一端和第一跨通道处理单元620相连,每个执行流水线的第二端和第一数据寄存器612相连;在一个数据传递方式中,第一数据寄存器612按照向量数据中的元素位置将数据顺序写入执行流水线a、执行流水线b;执行流水线a、执行流水线b向第一跨通道处理单元620提供执行流水线上的数据。在另一个数据传递方式中,第一数据寄存器612按照向量数据中的元素位置将数据顺序写入第一跨通道处理单元620,即也可以将第一数据寄存器612和第一跨通道处理单元620直接相连。
相似的,在图中第一数据寄存器612和跨线程处理单元680直接相连,但也不排除通过执行流水线a、执行流水线b分别和跨线程处理单元680相连的方式获取第一数据寄存器612中的数据。
示例性的,第一多路选择器614分别和第一跨通道处理单元620、跨线程处理单元680执行流水线a、执行流水线b相连,第一多路选择器614将上述器件提供的数据写入第一数据寄存器612。
示例性的,第二线程单元630中包括有第二数据寄存器632、执行流水线c、执行流水线d、第二跨通道处理单元640和第二多路选择器634;第M线程单元650中包括有第M数据寄存器652、执行流水线e、执行流水线f、第M跨通道处理单元660和第M多路选择器654。相似的,第二线程单元630至第M线程单元650与第一线程单元610具有相似的硬件结构和连接关系。关于第二线程单元630至第M线程单元650的介绍请参考上文中关于第一线程单元610的介绍,在这里不再重复。
在一种可选实现方式中,对跨线程处理进行进一步介绍。
在一个示例中,L个数据组中的每个数据组中的待处理数据的数量为一个,L个数据组和L个待处理数据一一对应。
跨线程处理单元,还用于将L个待处理数据中的第y个待处理数据循环位移为第x个运算结果,得到L个运算结果。
其中,x的取值为mod(y+k,L),k是循环位移的步长,mod为求余函数;第y个待处理数据是L个待处理数据中的任意一个待处理数据。
在另一个示例中,L个数据组中的每个数据组包括顺序数据和位移数据,顺序数据是按照顺序排列的原始数据,位移数据用于指示进行乱序位移的数据序号。
跨线程处理单元,还用于在第x个位移数据指示的数据序号为kx的情况下,将L个顺序数据中的第kx个顺序数据乱序位移为第x个运算结果,得到L个运算结果。
其中,x和kx均为小于或等于L的正整数,至少一组x和kx不同。
在另一个示例中,L个数据组中的每个数据组包括第一计算因子和第二计算因子。
跨线程处理单元,还用于将第x个数据组中的第一计算因子和第y个数据组中的第二计算因子统计计算为第x个运算结果,得到L个运算结果;
其中,x和y之间具有一一对应的映射关系,x和y均为小于或等于L的正整数,且x和y不同。
示例性的,关于循环位移、乱序位移、统计计算的详细介绍可以参考上文中的图3至图8,在这里不再赘述。
在一种可选实现方式中,在图9示出的实施例中的步骤544可以实现为如下两个子步骤中的至少之一:
子步骤44a:在L个数据组对应的M个线程单元之间的最大间距不超过第一门限的情况下,基于第一子单元对L个数据组中的至少一个数据组进行跨线程处理,得到L个运算结果;
在本实施例中,跨线程处理单元包括级联连接的第一子单元和第二子单元;示例性的,第一子单元连接在第二子单元之前;第二子单元获取的数据是经过第一子单元转发得到的。
示例性的,第一子单元用于接收最大间距不超过第一门限的线程单元对应的数据组。示例性的,第一子单元和最大间距不超过第一门限的多个线程单元连接,基于上述连接关系,第一子单元具有接收最大间距不超过第一门限的线程单元对应的数据组的能力。示例性的,线程单元具有连续编号,多个线程单元之间的最大间距,用于指示多个线程单元的编号之间的最大差值。示例性的,第一门限是预先设置的,比如基于第一子单元和多个线程单元的连接关系设置的。
示例性的,在L个数据组对应的M个线程单元之间的最大间距不超过第一门限的情况下,第一子单元接收得到L个数据组中的全部数据组,第一子单元具有对数据组进行跨线程处理的计算能力,且第一子单元获取了全部的L个数据组,以实现基于第一子单元对L个数据组中的至少一个数据组进行跨线程处理,得到L个运算结果。
示例性的,芯片中的第一子单元,用于在L个数据组对应的M个线程单元之间的最大间距不超过第一门限的情况下,对L个数据组中的至少一个数据组进行跨线程处理,得到L个运算结果。
需要说明的是,本实施例对跨线程处理的具体方式不进行限制,本实施例能够和上文中介绍的跨线程处理的具体方式结合,以实现循环位移、乱序位移、统计计算中的任意之一。
子步骤44b:在L个数据组对应的M个线程单元之间的最大间距超过第一门限的情况下,基于第二子单元对第一子单元转发的L个数据组中的至少一个数据组进行跨线程处理,得到L个运算结果;
示例性的,第二子单元用于接收最大间距超过第一门限的线程单元对应的数据组。进一步的,第二子单元用于接收最大间距超过第一门限且不超过第二门限的线程单元对应的数据组。更进一步的,第二门限是第一门限的整数倍。
示例性的,第二子单元和至少两个第一子单元连接;如上文介绍,第一子单元和最大间距不超过第一门限的多个线程单元连接,基于上述连接关系,第一子单元具有接收最大间距不超过第一门限的线程单元对应的数据组的能力。可以理解的,基于第二子单元和至少两个第一子单元的连接关系,第一子单元具有接收最大间距超过第一门限的线程单元对应的数据组的能力。
示例性的,芯片中的第二子单元,用于在L个数据组对应的M个线程单元之间的最大间距超过第一门限的情况下,对第一子单元转发的L个数据组中的至少一个数据组进行跨线程处理,得到L个运算结果。
示例性的,在L个数据组对应的M个线程单元之间的最大间距超过第一门限的情况下,基于一个第一子单元无法接收得到L个数据组中的全部数据组。第一子单元向第二子单元转发接收到的数据组,第二子单元接收至少两个第一子单元转发的数据组,得到L个数据组中的全部数据组;第二子单元具有对数据组进行跨线程处理的计算能力,且第二子单元获取了全部的L个数据组,以实现基于第二子单元对L个数据组中的至少一个数据组进行跨线程处理,得到L个运算结果。
和上文相似的,本实施例对跨线程处理的具体方式不进行限制,本实施例能够和上文中介绍的跨线程处理的具体方式结合,以实现循环位移、乱序位移、统计计算中的任意之一。
综上所述,本实施例提供的方法,通过芯片上部署的跨线程处理单元,实现了对M个线程单元对应的L个数据组进行跨线程处理得到运算结果;避免了使用直接内存访问和复杂寻址模式,节省了数据寻址造成的时间消耗和直接内存访问造成的总线资源开销,提高了处理效率。
需要说明的是,本实施例仅示出了跨线程处理单元包括级联连接的第一子单元和第二子单元,即两级级联结构;在不同实现方式中,可以根据需要,跨线程处理单元包括更多级联连接的子单元。
在一个示例中,图11示出了本申请一个示例性实施例提供的跨通道处理单元和跨线程处理单元的示意图。
在本实施例中,跨线程处理单元700包括四级级联结构,分别为第一级子单元至第四级子单元;本实施例中的跨线程处理单元用于接收16个线程单元提供的数据组。
示例性的,第一级子单元的数量为八个;其中,第一个一级子单元711分别和第一线程单元、第二线程单元相连,获取对应线程单元的数据组。相似的,第二个一级子单元712分别和第三线程单元、第四线程单元相连;第三个一级子单元713分别和第五线程单元、第六线程单元相连;第四个一级子单元714分别和第七线程单元、第八线程单元相连;第五个一级子单元715分别和第九线程单元、第十线程单元相连;第六个一级子单元716分别和第十一线程单元、第十二线程单元相连;第七个一级子单元717分别和第十三线程单元、第十四线程单元相连;第八个一级子单元718分别和第十五线程单元、第十六线程单元相连。
示例性的,第二级子单元的数量为四个;其中,第一个二级子单元721分别和第一个一级子单元711、第二个一级子单元712相连。示例性的,第一个二级子单元721基于和第一个一级子单元711、第二个一级子单元712之间的连接关系,以及第一个一级子单元711与两个线程单元、第二个一级子单元712与两个线程单元之间的连接关系;能够获取第一线程单元至第四线程单元中的数据组。相似的,第二个二级子单元722分别和第三个一级子单元713、第四个一级子单元714相连;第三个二级子单元723分别和第五个一级子单元715、第六个一级子单元716相连;第四个二级子单元724分别和第七个一级子单元717、第八个一级子单元718相连。
示例性的,第三级子单元的数量为两个;其中,第一个三级子单元731分别和第一个二级子单元721、第二个二级子单元722相连。示例性的,第一个三级子单元731基于和第一个二级子单元721、第二个二级子单元722之间的连接关系,第一个二级子单元721和第一个一级子单元711、第二个一级子单元712之间的连接关系,第二个二级子单元722和第三个一级子单元713、第四个一级子单元714之间的连接关系,以及第一个一级子单元711至第四个一级子单元714分别与两个线程单元之间的连接关系;能够获取第一线程单元至第八线程单元中的数据组。相似的,第二个三级子单元732分别和第三个二级子单元723、第四个二级子单元724相连。
示例性的,第四级子单元的数量为一个;四级子单元741分别和第一个三级子单元731、第二个三级子单元732相连;四级子单元741能够获取第一线程单元至第十六线程单元中的数据组。
图12示出了本申请一个示例性实施例提供的数据处理方法的第六流程图。该方法可以应用于一种包括跨通道处理单元的芯片中。即在图2示出的实施例中,步骤510可以实现为步骤512,还包括步骤515:
步骤512:跨通道处理单元接收N个执行流水线发送的N个数据组;
示例性的,芯片中还包括N个执行流水线,每个执行流水线的第一端和跨通道处理单元相连,每个执行流水线的第二端和数据寄存器相连;关于执行流水线的连接关系,可以参考图1。
示例性的,N个执行流水线和N个数据组一一对应,执行流水线中的数据组是按照的数据寄存器保存的向量数据中的元素位置顺序获得的;示例性的,数据寄存器按照向量数据中的元素位置顺序向执行流水线发送数据。示例性的,执行流水线上的数据是向量数据中的一个元素位置上的数据。
示例性的,芯片中的执行流水线,用于向跨通道处理单元发送数据组,数据组是按照数据寄存器保存的向量数据中的元素位置顺序的;跨通道处理单元,还用于接收N个执行流水线发送的N个数据组,N个执行流水线和N个数据组一一对应。
需要说明的是,本步骤能够和图2中的步骤520、530组合成为新的实施例单独实施,本申请对此不进行限制。
步骤515:跨通道处理单元获取解析单元提供的控制信息;
示例性的,控制信息用于指示跨通道处理单元对N个数据组的跨通道处理方式;在一个示例中,控制信息用于指示对N个数据组的跨通道处理方式为循环位移、乱序位移、统计计算中的任意之一。
示例性的,解析单元对针对跨通道处理单元的指令进行解析,生成控制信息,将控制信息发送至跨通道处理单元;相应的,跨通道处理单元获取解析单元提供的控制信息。示例性的,解析单元也称为指令发射单元(Instruction Issue Unit,INSTR_ISSUE)。
示例性的,芯片中的解析单元,用于向跨通道处理单元发送控制信息,控制信息用于指示跨通道处理单元对N个数据组的跨通道处理方式;跨通道处理单元,还用于获取解析单元提供的控制信息。
需要说明的是,在实施例中步骤515可以在步骤512的之前、之后或同时执行,本实施例对步骤515和步骤512的执行时序不进行限制。
需要说明的是,本步骤能够和图2中的步骤510、步骤520、530组合成为新的实施例单独实施,本申请对此不进行限制。相似的,步骤515和图2中的步骤510、步骤520、530组合成为新的实施例的情况下,步骤515可以在步骤510的之前、之后或同时执行。
综上所述,本实施例提供的方法,通过芯片上部署的跨通道处理单元,实现了对第j个位置的数据组中的待处理数据进行跨通道处理得到第i个位置的运算结果,能够进行向量数据中跨元素位置的处理;避免了使用直接内存访问和复杂寻址模式,节省了数据寻址造成的时间消耗和直接内存访问造成的总线资源开销,提高了处理效率。
接下来,对执行流水线进行介绍。
图13示出了本申请一个示例性实施例提供的数据处理方法的第七流程图。该方法可以应用于一种包括执行流水线的芯片中。该方法包括:
步骤752:获取解析单元提供的控制信息;
示例性的,用于指示执行流水线对数据组进行点对点计算的处理方式,比如乘积计算、求和计算、求差计算、除法计算中的任意之一。
步骤754:执行流水线获取数据寄存器中的数据组;
示例性的,芯片上部署有一个或多个执行流水线,以其中的任意一个执行流水线为例进行介绍,一个执行流水线获取数据寄存器中的一个数据组;和上文中的介绍相似的,数据组包括多个待处理数据,多个待处理数据在所属的向量数据中的元素位置相同。
步骤756:执行流水线对数据组内的两个计算因子进行点对点计算处理,得到流水线运算结果;
示例性的,数据组包括的多个待处理数据为两个计算因子;以点对点计算处理是乘积计算为例,流水线运算结果是数据组内的两个计算因子的乘积。
步骤758:将流水线运算结果写入数据寄存器;
示例性的,芯片中包括多路选择器,基于多路选择器,将执行流水线提供的流水线运算结果写入数据寄存器。示例性的,流水线运算结果在数据寄存器中的写入位置可以是预先设置的,也可以是由多路选择器确定的。
图14示出了本申请一个示例性实施例提供的数据处理方法的第八流程图。该方法可以应用于一种包括跨线程处理单元的芯片中。该方法包括:
步骤810:跨线程处理单元获取M个线程单元一一对应的M个数据寄存器保存的L个数据组;
示例性的,L个数据组中的一个数据组可以包括一个或多个待处理数据;进一步的,在数据组包括多个待处理数据的情况下,多个待处理数据在所属的向量数据中的元素位置相同。关于数据组和数据寄存器的介绍可以参考上文中的N个数据组。
芯片包括M组数据处理单元、多路选择器和数据寄存器,每组属于一个线程单元,芯片还包括跨线程处理单元;示例性的,芯片包括M个部件组,每个部件组至少包括数据处理单元、多路选择器和数据寄存器。
芯片中的跨线程处理单元(Cross Thread Unit,CTU)用于获取M个数据寄存器保存的L个数据组,跨线程处理单元具有获取M个线程单元一一对应的M个数据寄存器中的数据组的能力;进一步的,跨线程处理单元可以和数据寄存器相连,直接获取L个数据组;跨线程处理单元也可以接收芯片上的其他器件(比如数据处理单元)发送的L个数据组,实现间接获取L个数据组;本申请对此不进行限制。示例性的,数据处理单元可以为跨通道处理单元和/或执行流水线。
示例性的,M个数据寄存器中的每个数据寄存器保存有至少一个数据组。示例性的,不同数据寄存器提供的数据组的数量可以是相同的,也可以是不同的,本实施例对此不进行限制。示例性的,L为大于1的整数,M为大于1的整数,且M小于或等于L。示例性的,跨线程处理单元分别和M个线程单元一一对应的M个多路选择器的输入端相连,M个多路选择器中的每个多路选择器和所属线程单元中的数据寄存器相连。
步骤820:跨线程处理单元根据对L个数据组中的至少一个数据组进行跨线程处理,得到L个运算结果;
示例性的,L个运算结果是基于L个数据组的运算结果;示例性的,L个运算结果中的任意一个运算结果是对至少一个数据组进行运算得到的。
示例性的,L个运算结果中存在第x个运算结果;第x个运算结果是L个运算结果中的至少一个运算结果。跨线程处理包括基于L个数据组中的第y个数据组得到第x个运算结果,x和y均为小于或等于L的正整数,x和y不同。示例性的,第x个运算结果对应的线程单元和第y个数据组对应的线程单元不同;示例性的,第x个数据组对应的线程单元和第y个数据组对应的线程单元不同。关于L个运算结果组成运算结果向量的介绍参考上文中的步骤520,在这里不再重复。
步骤830:多路选择器将跨线程处理单元提供的L个运算结果写入M个数据寄存器;
示例性的,芯片中的多路选择器,用于将跨线程处理单元提供的L个运算结果写入数据寄存器。示例性的,数据寄存器接收的运算结果的顺序和保存的数据组的顺序相同;数据寄存器保存有第a个数据组的情况下,将第a个运算结果写入该数据寄存器。
示例性的,L个运算结果在数据寄存器中的写入位置可以是预先设置的,也可以是由多路选择器确定的;本实施例不进行限制。
在一种可选实现方式中,M个线程单元中的至少一个线程单元包括的数据处理单元为跨通道处理单元,跨通道处理单元具有获取所属线程单元上的数据寄存器中的数据组的能力;跨通道处理单元和所属线程单元上的多路选择器的输入端相连,多路选择器的输出端和所属线程单元上的数据寄存器相连。
在本实施例的基础上还包括:获取数据寄存器保存的N个数据组,N为大于1的整数。
根据对N个数据组中的至少一个数据组进行跨通道处理,得到N个运算结果;跨通道处理包括基于N个数据组中的第j个数据组得到N个运算结果中的第i个运算结果,i和j均为小于或等于N的正整数,i和j不同。
将跨通道处理单元提供的N个运算结果写入数据寄存器。
在另一种可选实现方式中,跨线程处理单元包括级联连接的第一子单元和第二子单元;本实施例中的步骤820可以实现为如下至少之一。
在L个数据组对应的M个线程单元之间的最大间距不超过第一门限的情况下,对L个数据组中的至少一个数据组进行跨线程处理,得到L个运算结果;
在L个数据组对应的M个线程单元之间的最大间距超过第一门限的情况下,对第一子单元转发的L个数据组中的至少一个数据组进行跨线程处理,得到L个运算结果。
需要说明的是,本实施例中的跨通道处理、跨线程处理以及关于跨通道处理单元、跨线程处理单元的介绍,可以参考图2至13的各个实施例,在这里不再一一重复。
综上所述,本实施例提供的方法,通过芯片上部署的跨线程处理单元,实现了对第y个位置的数据组进行跨线程处理得到第x个位置的运算结果,能够进行向量数据中跨元素位置的处理;避免了使用直接内存访问和复杂寻址模式,节省了数据寻址造成的时间消耗和直接内存访问造成的总线资源开销,提高了处理效率。
本领域普通技术人员可以理解,上述实施例可以独立实施,也可以将上述实施例进行自由组合,组合出新的实施例实现本申请的数据处理方法。
在本申请的一个实施例中,提供了一种芯片,所述芯片包括跨通道处理单元、多路选择器和数据寄存器;所述跨通道处理单元和所述多路选择器的输入端相连,所述多路选择器的输出端和所述数据寄存器相连;
所述跨通道处理单元,用于获取所述数据寄存器保存的N个数据组,N为大于1的整数;
所述跨通道处理单元,还用于根据对所述N个数据组中的至少一个数据组进行跨通道处理,得到N个运算结果;所述跨通道处理包括基于所述N个数据组中的第j个数据组得到所述N个运算结果中的第i个运算结果,i和j均为小于或等于N的正整数,i和j不同;
所述多路选择器,用于将所述跨通道处理单元提供的所述N个运算结果写入所述数据寄存器。
在本实施例的一个可选实现方式中,所述N个数据组中的每个数据组中的待处理数据的数量为一个,所述N个数据组和N个待处理数据一一对应;
所述跨通道处理单元,还用于将所述N个待处理数据中的第j个待处理数据循环位移为所述第i个运算结果,得到所述N个运算结果;
其中,i的取值为mod(j+k,N),k是循环位移的步长,mod为求余函数;所述第j个待处理数据是所述N个待处理数据中的任意一个待处理数据。
在本实施例的一个可选实现方式中,所述N个数据组中的每个数据组包括顺序数据和位移数据,所述顺序数据是按照顺序排列的原始数据,所述位移数据用于指示进行乱序位移的数据序号;
所述跨通道处理单元,还用于在第i个位移数据指示的数据序号为ki的情况下,将N个所述顺序数据中的第ki个顺序数据乱序位移为所述第i个运算结果,得到所述N个运算结果;
其中,i和ki均为小于或等于N的正整数,至少一组i和ki不同。
在本实施例的一个可选实现方式中,所述N个数据组中的每个数据组包括第一计算因子和第二计算因子;
所述跨通道处理单元,还用于将第i个数据组中的所述第一计算因子和第j个数据组中的所述第二计算因子统计计算为所述第i个运算结果,得到所述N个运算结果;
其中,i和j之间具有一一对应的映射关系,i和j均为小于或等于N的正整数,且i和j不同。
在本实施例的一个可选实现方式中,所述芯片包括M组所述跨通道处理单元、所述多路选择器和所述数据寄存器,每组属于一个线程单元,所述芯片还包括跨线程处理单元;所述跨线程处理单元分别和M个多路选择器的第一端相连,M个线程单元与所述M个多路选择器一一对应,M为大于1的整数;
所述跨线程处理单元,用于获取所述M个线程单元一一对应的M个数据寄存器保存的L个数据组,所述M个数据寄存器中的每个数据寄存器保存有至少一个数据组,L为大于1的整数,且M小于或等于L;
所述跨线程处理单元,还用于根据对所述L个数据组中的至少一个数据组进行跨线程处理,得到L个运算结果,所述跨线程处理包括基于L个数据组中的第y个数据组得到所述L个运算结果中的第x个运算结果,所述第x个运算结果对应的线程单元和所述第y个数据组对应的线程单元不同,x和y均为小于或等于L的正整数,x和y不同;
所述多路选择器,用于将所述跨线程处理单元提供的所述L个运算结果写入所述M个数据寄存器。
在本实施例的一个可选实现方式中,所述跨线程处理单元包括级联连接的第一子单元和第二子单元;
所述第一子单元,用于在所述L个数据组对应的M个线程单元之间的最大间距不超过第一门限的情况下,对所述L个数据组中的至少一个数据组进行跨线程处理,得到所述L个运算结果;
所述第二子单元,用于在所述L个数据组对应的M个线程单元之间的最大间距超过第一门限的情况下,对所述第一子单元转发的所述L个数据组中的至少一个数据组进行跨线程处理,得到所述L个运算结果。
在本实施例的一个可选实现方式中,所述N个数据组中的一个数据组对应的位置信息用于指示所述数据组中的待处理数据在所属的向量数据中的元素位置,所述N个数据组中的不同数据组对应的位置信息不同。
在本实施例的一个可选实现方式中,所述芯片还包括N个执行流水线,所述N个执行流水线中的每个执行流水线的第一端和所述跨通道处理单元相连,所述N个执行流水线中的每个执行流水线的第二端和所述数据寄存器相连;
所述执行流水线,用于向所述跨通道处理单元发送数据组,所述数据组是按照所述数据寄存器保存的向量数据中的元素位置顺序写入所述执行流水线的;
所述跨通道处理单元,还用于接收所述N个执行流水线发送的所述N个数据组,所述N个执行流水线和所述N个数据组一一对应。
在本实施例的一个可选实现方式中,所述芯片还包括解析单元,所述解析单元和所述跨通道处理单元相连;
所述解析单元,用于向所述跨通道处理单元发送控制信息,所述控制信息用于指示所述跨通道处理单元对所述N个数据组的跨通道处理方式;
所述跨通道处理单元,还用于获取所述解析单元提供的控制信息。
在本申请的一个实施例中,提供了一种芯片,所述芯片包括M组数据处理处理单元、多路选择器和数据寄存器,每组属于一个线程单元,所述芯片还包括跨线程处理单元;所述跨线程处理单元分别和M个多路选择器的第一端相连,M个线程单元与所述M个多路选择器一一对应,所述M个多路选择器中的每个多路选择器和所属线程单元中的数据寄存器相连;M为大于1的整数;
所述跨线程处理单元,用于获取所述M个线程单元一一对应的M个数据寄存器保存的L个数据组,所述M个数据寄存器中的每个数据寄存器保存有至少一个数据组,L为大于1的整数,且M小于或等于L;
所述跨线程处理单元,还用于根据对所述L个数据组中的至少一个数据组进行跨线程处理,得到L个运算结果,所述跨线程处理包括基于L个数据组中的第y个数据组得到所述L个运算结果中的第x个运算结果,所述第x个运算结果对应的线程单元和所述第y个数据组对应的线程单元不同,x和y均为小于或等于L的正整数,x和y不同;
所述多路选择器,用于将所述跨线程处理单元提供的所述L个运算结果写入所述M个数据寄存器。
在本实施例的一个可选实现方式中,所述M个线程单元中的至少一个线程单元包括的数据处理单元为跨通道处理单元,所述跨通道处理单元具有获取所属线程单元上的数据寄存器中的数据组的能力;所述跨通道处理单元和所属线程单元上的多路选择器的输入端相连,所述多路选择器的输出端和所属线程单元上的数据寄存器相连;
所述跨通道处理单元,用于获取所述数据寄存器保存的N个数据组,N为大于1的整数;
所述跨通道处理单元,还用于根据对所述N个数据组中的至少一个数据组进行跨通道处理,得到N个运算结果;所述跨通道处理包括基于所述N个数据组中的第j个数据组得到所述N个运算结果中的第i个运算结果,i和j均为小于或等于N的正整数,i和j不同;
所述多路选择器,用于将所述跨通道处理单元提供的所述N个运算结果写入所述数据寄存器。
在本实施例的一个可选实现方式中,所述跨线程处理单元包括级联连接的第一子单元和第二子单元;
所述第一子单元,用于在所述L个数据组对应的M个线程单元之间的最大间距不超过第一门限的情况下,对所述L个数据组中的至少一个数据组进行跨线程处理,得到所述L个运算结果;
所述第二子单元,用于在所述L个数据组对应的M个线程单元之间的最大间距超过第一门限的情况下,对所述第一子单元转发的所述L个数据组中的至少一个数据组进行跨线程处理,得到所述L个运算结果。
需要说明的一点是,上述实施例提供的芯片在实现其功能时,仅以上述各个器件的划分进行举例说明,实际应用中,可以根据实际需要而将上述功能分配由不同的功能器件完成,即将设备的内容结构划分成不同的功能器件,以完成以上描述的全部或者部分功能。
关于上述实施例中的芯片,其中各个器件执行操作的具体方式已经在相关的数据处理方法的实施例中进行了详细描述;各个器件执行操作取得的技术效果与相关的数据处理方法的实施例中的技术效果相同,此处将不做详细阐述说明。
本申请实施例还提供了一种计算机设备,所述计算机设备中包括如如上方面所述的芯片。示例性的,本实施例中的计算机设备包括:处理器和存储器,存储器中存储有计算机程序;所述处理器为上方面所述的芯片。
在一个示例中,处理器可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray, PLA)中的至少一种硬件形式来实现。处理器也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(CentralProcessing Unit,CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器可以在集成有图像处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器中的非暂态的计算机可读存储介质用于存储至少一个指令。
进一步的,该计算机设备可以为终端或服务器。
以计算机设备为服务器为例,服务器包括处理器和存储器,在一些实施例中,服务器还可选包括有:输入接口和输出接口。处理器、存储器和输入接口、输出接口之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与输入接口、输出接口相连。输入接口、输出接口可被用于将输入/输出(Input/Output,I/O)相关的至少一个外围设备连接到处理器和存储器。在一些实施例中,处理器、存储器和输入接口、输出接口被集成在同一芯片或电路板上;在一些其他实施例中,处理器、存储器和输入接口、输出接口中的任意一个或两个可以在单独的芯片或电路板上实现,本申请实施例对此不加以限定。
以计算机设备为终端为例,终端包括处理器和存储器,在一些实施例中,终端还可选包括有:外围设备接口和至少一个外围设备。处理器、存储器和外围设备接口之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口相连。具体地,外围设备包括:射频电路、触摸显示屏、摄像头组件、音频电路和电源中的至少一种。
本领域技术人员可以理解,上述示出的结构并不构成对计算机设备的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (20)
1.一种芯片,其特征在于,所述芯片包括跨通道处理单元、多路选择器和数据寄存器;所述跨通道处理单元和所述多路选择器的输入端相连,所述多路选择器的输出端和所述数据寄存器相连;
所述跨通道处理单元,用于获取所述数据寄存器保存的N个数据组,N为大于1的整数;
所述跨通道处理单元,还用于根据对所述N个数据组中的至少一个数据组进行跨通道处理,得到N个运算结果;所述跨通道处理包括基于所述N个数据组中的第j个数据组中的部分或全部数据执行基本四则运算、修改位置、计算平均值、计算方差中的至少一种,得到所述N个运算结果中的第i个运算结果,i和j均为小于或等于N的正整数,i和j不同;
所述多路选择器,用于将所述跨通道处理单元提供的所述N个运算结果写入所述数据寄存器。
2.根据权利要求1所述的芯片,其特征在于,所述N个数据组中的每个数据组中的待处理数据的数量为一个,所述N个数据组和N个待处理数据一一对应;
所述跨通道处理单元,还用于将所述N个待处理数据中的第j个待处理数据循环位移为所述第i个运算结果,得到所述N个运算结果;
其中,i的取值为mod(j+k,N),k是循环位移的步长,mod为求余函数;所述第j个待处理数据是所述N个待处理数据中的任意一个待处理数据。
3.根据权利要求1所述的芯片,其特征在于,所述N个数据组中的每个数据组包括顺序数据和位移数据,所述顺序数据是按照顺序排列的原始数据,所述位移数据用于指示进行乱序位移的数据序号;
所述跨通道处理单元,还用于在第i个位移数据指示的数据序号为ki的情况下,将N个所述顺序数据中的第ki个顺序数据乱序位移为所述第i个运算结果,得到所述N个运算结果;
其中,i和ki均为小于或等于N的正整数,至少一组i和ki不同。
4.根据权利要求1所述的芯片,其特征在于,所述N个数据组中的每个数据组包括第一计算因子和第二计算因子;
所述跨通道处理单元,还用于将第i个数据组中的所述第一计算因子和第j个数据组中的所述第二计算因子统计计算为所述第i个运算结果,得到所述N个运算结果;
其中,i和j之间具有一一对应的映射关系,i和j均为小于或等于N的正整数,且i和j不同。
5.根据权利要求1至4任一所述的芯片,其特征在于,所述芯片包括M组所述跨通道处理单元、所述多路选择器和所述数据寄存器,每组属于一个线程单元,所述芯片还包括跨线程处理单元;所述跨线程处理单元分别和M个多路选择器的输入端相连,M个线程单元与所述M个多路选择器一一对应,M为大于1的整数;
所述跨线程处理单元,用于获取所述M个线程单元一一对应的M个数据寄存器保存的L个数据组,所述M个数据寄存器中的每个数据寄存器保存有至少一个数据组,L为大于1的整数,且M小于或等于L;
所述跨线程处理单元,还用于根据对所述L个数据组中的至少一个数据组进行跨线程处理,得到L个运算结果,所述跨线程处理包括基于L个数据组中的第y个数据组得到所述L个运算结果中的第x个运算结果,所述第x个运算结果对应的线程单元和所述第y个数据组对应的线程单元不同,x和y均为小于或等于L的正整数,x和y不同;
所述多路选择器,用于将所述跨线程处理单元提供的所述L个运算结果写入所述M个数据寄存器。
6.根据权利要求5所述的芯片,其特征在于,所述跨线程处理单元包括级联连接的第一子单元和第二子单元;
所述第一子单元,用于在所述L个数据组对应的M个线程单元之间的最大间距不超过第一门限的情况下,对所述L个数据组中的至少一个数据组进行跨线程处理,得到所述L个运算结果;
所述第二子单元,用于在所述L个数据组对应的M个线程单元之间的最大间距超过第一门限的情况下,对所述第一子单元转发的所述L个数据组中的至少一个数据组进行跨线程处理,得到所述L个运算结果。
7.根据权利要求1至4任一所述的芯片,其特征在于,所述N个数据组中的一个数据组对应的位置信息用于指示所述数据组中的待处理数据在所属的向量数据中的元素位置,所述N个数据组中的不同数据组对应的位置信息不同。
8.根据权利要求1至4任一所述的芯片,其特征在于,所述芯片还包括N个执行流水线,所述N个执行流水线中的每个执行流水线的第一端和所述跨通道处理单元相连,所述N个执行流水线中的每个执行流水线的第二端和所述数据寄存器相连;
所述执行流水线,用于向所述跨通道处理单元发送数据组,所述数据组是按照所述数据寄存器保存的向量数据中的元素位置顺序写入所述执行流水线的;
所述跨通道处理单元,还用于接收所述N个执行流水线发送的所述N个数据组,所述N个执行流水线和所述N个数据组一一对应。
9.一种芯片,其特征在于,所述芯片包括M组数据处理单元、多路选择器和数据寄存器,每组属于一个线程单元,所述芯片还包括跨线程处理单元;所述跨线程处理单元分别和M个多路选择器的输入端相连,M个线程单元与所述M个多路选择器一一对应,M为大于1的整数;
所述跨线程处理单元,用于获取所述M个线程单元一一对应的M个数据寄存器保存的L个数据组,所述M个数据寄存器中的每个数据寄存器保存有至少一个数据组,L为大于1的整数,且M小于或等于L;
所述跨线程处理单元,还用于根据对所述L个数据组中的至少一个数据组进行跨线程处理,得到L个运算结果,所述跨线程处理包括基于L个数据组中的第y个数据组得到所述L个运算结果中的第x个运算结果,所述第x个运算结果对应的线程单元和所述第y个数据组对应的线程单元不同,x和y均为小于或等于L的正整数,x和y不同;
所述多路选择器,用于将所述跨线程处理单元提供的所述L个运算结果写入所述M个数据寄存器。
10.根据权利要求9所述的芯片,其特征在于,所述M个线程单元中的至少一个线程单元包括的数据处理单元为跨通道处理单元;所述跨通道处理单元和所属线程单元上的多路选择器的输入端相连,所述多路选择器的输出端和所属线程单元上的数据寄存器相连;
所述跨通道处理单元,用于获取所述数据寄存器保存的N个数据组,N为大于1的整数;
所述跨通道处理单元,还用于根据对所述N个数据组中的至少一个数据组进行跨通道处理,得到N个运算结果;所述跨通道处理包括基于所述N个数据组中的第j个数据组得到所述N个运算结果中的第i个运算结果,i和j均为小于或等于N的正整数,i和j不同;
所述多路选择器,用于将所述跨通道处理单元提供的所述N个运算结果写入所述数据寄存器。
11.根据权利要求9所述的芯片,其特征在于,所述跨线程处理单元包括级联连接的第一子单元和第二子单元;
所述第一子单元,用于在所述L个数据组对应的M个线程单元之间的最大间距不超过第一门限的情况下,对所述L个数据组中的至少一个数据组进行跨线程处理,得到所述L个运算结果;
所述第二子单元,用于在所述L个数据组对应的M个线程单元之间的最大间距超过第一门限的情况下,对所述第一子单元转发的所述L个数据组中的至少一个数据组进行跨线程处理,得到所述L个运算结果。
12.一种计算机设备,其特征在于,所述计算机设备中包括如权利要求1至11任一所述的芯片。
13.一种数据处理方法,其特征在于,应用于一种包括跨通道处理单元的芯片中,所述芯片包括跨通道处理单元、多路选择器和数据寄存器;所述跨通道处理单元和所述多路选择器的输入端相连,所述多路选择器的输出端和所述数据寄存器相连;所述方法包括:
所述跨通道处理单元获取数据寄存器保存的N个数据组,N为大于1的整数;
所述跨通道处理单元根据对所述N个数据组中的至少一个数据组进行跨通道处理,得到N个运算结果;所述跨通道处理包括基于所述N个数据组中的第j个数据组中的部分或全部数据执行基本四则运算、修改位置、计算平均值、计算方差中的至少一种,得到所述N个运算结果中的第i个运算结果,i和j均为小于或等于N的正整数,i和j不同;
所述多路选择器将所述跨通道处理单元提供的所述N个运算结果写入所述数据寄存器。
14.根据权利要求13所述的方法,其特征在于,所述N个数据组中的每个数据组中的待处理数据的数量为一个,所述N个数据组和N个待处理数据一一对应;
所述跨通道处理单元根据对所述N个数据组中的至少一个数据组进行跨通道处理,得到N个运算结果,包括:
所述跨通道处理单元将所述N个待处理数据中的第j个待处理数据循环位移为所述第i个运算结果,得到所述N个运算结果;
其中,i的取值为mod(j+k,N),k是循环位移的步长,mod为求余函数;所述第j个待处理数据是所述N个待处理数据中的任意一个待处理数据。
15.根据权利要求13所述的方法,其特征在于,所述N个数据组中的每个数据组包括顺序数据和位移数据,所述顺序数据是按照顺序排列的原始数据,所述位移数据用于指示进行乱序位移的数据序号;
所述跨通道处理单元根据对所述N个数据组中的至少一个数据组进行跨通道处理,得到N个运算结果,包括:
所述跨通道处理单元在第i个位移数据指示的数据序号为ki的情况下,将N个所述顺序数据中的第ki个顺序数据乱序位移为所述第i个运算结果,得到所述N个运算结果;
其中,i和ki均为小于或等于N的正整数,至少一组i和ki不同。
16.根据权利要求13所述的方法,其特征在于,所述跨通道处理为统计计算处理,所述N个数据组中每个数据组中包括第一计算因子和第二计算因子;
所述跨通道处理单元根据对所述N个数据组中的至少一个数据组进行跨通道处理,得到N个运算结果,包括:
所述跨通道处理单元将第i个数据组中的所述第一计算因子和第j个数据组中的所述第二计算因子统计计算为所述第i个运算结果,得到所述N个运算结果;
其中,i和j之间具有一一对应的映射关系,i和j均为小于或等于N的正整数,且i和j不同。
17.根据权利要求13至16任一所述的方法,其特征在于,所述芯片包括M组所述跨通道处理单元、所述多路选择器和所述数据寄存器,每组属于一个线程单元,所述芯片还包括跨线程处理单元;所述跨线程处理单元分别和M个多路选择器的输入端相连,M个线程单元与所述M个多路选择器一一对应,M为大于1的整数;所述方法还包括:
所述跨线程处理单元获取所述M个线程单元一一对应的M个数据寄存器保存的L个数据组,所述M个数据寄存器中的每个数据寄存器保存有至少一个数据组,L为大于1的整数,且M小于或等于L;
所述跨线程处理单元根据对所述L个数据组中的至少一个数据组进行跨线程处理,得到L个运算结果,所述跨线程处理包括基于L个数据组中的第y个数据组得到所述L个运算结果中的第x个运算结果,所述第x个运算结果对应的线程单元和所述第y个数据组对应的线程单元不同,x和y均为小于或等于L的正整数,x和y不同;
所述多路选择器将所述跨线程处理单元提供的所述L个运算结果写入所述M个数据寄存器。
18.一种数据处理方法,其特征在于,应用于一种包括跨线程处理单元的芯片中,所述芯片包括M组数据处理单元、多路选择器和数据寄存器,每组属于一个线程单元,所述芯片还包括跨线程处理单元;所述跨线程处理单元分别和M个多路选择器的输入端相连,M个线程单元与所述M个多路选择器一一对应,M为大于1的整数;所述方法包括:
所述跨线程处理单元获取所述M个线程单元一一对应的M个数据寄存器保存的L个数据组,所述M个数据寄存器中的每个数据寄存器保存有至少一个数据组,L为大于1的整数,且M小于或等于L;
所述跨线程处理单元根据对所述L个数据组中的至少一个数据组进行跨线程处理,得到L个运算结果,所述跨线程处理包括基于L个数据组中的第y个数据组得到所述L个运算结果中的第x个运算结果,所述第x个运算结果对应的线程单元和所述第y个数据组对应的线程单元不同,x和y均为小于或等于L的正整数,x和y不同;
所述多路选择器将所述跨线程处理单元提供的所述L个运算结果写入所述M个数据寄存器。
19.根据权利要求18所述的方法,其特征在于,所述M个线程单元中的至少一个线程单元包括的数据处理单元为跨通道处理单元;所述跨通道处理单元和所属线程单元上的多路选择器的输入端相连,所述多路选择器的输出端和所属线程单元上的数据寄存器相连,所述方法还包括;
所述跨通道处理单元获取所述数据寄存器保存的N个数据组,N为大于1的整数;
所述跨通道处理单元根据对所述N个数据组中的至少一个数据组进行跨通道处理,得到N个运算结果;所述跨通道处理包括基于所述N个数据组中的第j个数据组得到所述N个运算结果中的第i个运算结果,i和j均为小于或等于N的正整数,i和j不同;
所述多路选择器将所述跨通道处理单元提供的所述N个运算结果写入所述数据寄存器。
20.根据权利要求18所述的方法,其特征在于,所述跨线程处理单元包括级联连接的第一子单元和第二子单元;
所述根据对所述L个数据组中的至少一个数据组进行跨线程处理,得到L个运算结果,包括:
在所述L个数据组对应的M个线程单元之间的最大间距不超过第一门限的情况下,基于所述第一子单元对所述L个数据组中的至少一个数据组进行跨线程处理,得到所述L个运算结果;
在所述L个数据组对应的M个线程单元之间的最大间距超过第一门限的情况下,基于所述第二子单元对所述第一子单元转发的所述L个数据组中的至少一个数据组进行跨线程处理,得到所述L个运算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311291542.4A CN117033270B (zh) | 2023-10-08 | 2023-10-08 | 一种芯片、设备以及数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311291542.4A CN117033270B (zh) | 2023-10-08 | 2023-10-08 | 一种芯片、设备以及数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117033270A CN117033270A (zh) | 2023-11-10 |
CN117033270B true CN117033270B (zh) | 2024-01-26 |
Family
ID=88645237
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311291542.4A Active CN117033270B (zh) | 2023-10-08 | 2023-10-08 | 一种芯片、设备以及数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117033270B (zh) |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567246A (zh) * | 2011-12-29 | 2012-07-11 | 中国人民解放军国防科学技术大学 | 一种支持操作乱序执行的与非型快闪存储控制器 |
CN104322062A (zh) * | 2012-06-26 | 2015-01-28 | 英特尔公司 | 跨层跨通道样本预测 |
CN108701102A (zh) * | 2017-10-31 | 2018-10-23 | 深圳市大疆创新科技有限公司 | 直接存储器访问控制器、数据读取方法和数据写入方法 |
CN109871290A (zh) * | 2019-03-07 | 2019-06-11 | 腾讯科技(深圳)有限公司 | 应用于Java的调用堆栈追踪方法、装置和存储介质 |
CN110266817A (zh) * | 2019-07-15 | 2019-09-20 | 武汉天喻信息产业股份有限公司 | 基于区块链的跨通道数据分享模型、分享方法和装置 |
CN111538679A (zh) * | 2020-05-12 | 2020-08-14 | 中国电子科技集团公司第十四研究所 | 一种基于内嵌dma的处理器数据预取设计 |
CN111586408A (zh) * | 2019-02-19 | 2020-08-25 | 诺基亚技术有限公司 | 用于跨通道残差编码和解码的量化参数得出 |
CN113590198A (zh) * | 2020-05-01 | 2021-11-02 | 英特尔公司 | 使用脉动阵列在并行计算机器中计算高效的跨通道运算 |
CN114153785A (zh) * | 2021-11-29 | 2022-03-08 | 北京志凌海纳科技有限公司 | 基于远程直接内存访问的内存管理方法和设备 |
CN114647602A (zh) * | 2022-05-24 | 2022-06-21 | 沐曦集成电路(上海)有限公司 | 一种跨芯片访问控制的方法、装置、设备及介质 |
CN114675884A (zh) * | 2020-12-24 | 2022-06-28 | 英特尔公司 | 用于优化在部分宽度处理器上的跨通道紧缩数据指令实现方式的方法、系统和装置 |
CN115984666A (zh) * | 2022-12-30 | 2023-04-18 | 南方科技大学 | 跨通道金字塔池化方法、系统、卷积神经网络及处理方法 |
CN116225999A (zh) * | 2023-05-04 | 2023-06-06 | 太初(无锡)电子科技有限公司 | 一种dma数据传输方法及系统 |
CN116523518A (zh) * | 2023-07-03 | 2023-08-01 | 中铱数字科技有限公司 | 一种基于区块链的跨通道数据访问方法、系统及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10817441B2 (en) * | 2019-03-29 | 2020-10-27 | Intel Corporation | Shared accelerator memory systems and methods |
-
2023
- 2023-10-08 CN CN202311291542.4A patent/CN117033270B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567246A (zh) * | 2011-12-29 | 2012-07-11 | 中国人民解放军国防科学技术大学 | 一种支持操作乱序执行的与非型快闪存储控制器 |
CN104322062A (zh) * | 2012-06-26 | 2015-01-28 | 英特尔公司 | 跨层跨通道样本预测 |
CN108701102A (zh) * | 2017-10-31 | 2018-10-23 | 深圳市大疆创新科技有限公司 | 直接存储器访问控制器、数据读取方法和数据写入方法 |
CN111586408A (zh) * | 2019-02-19 | 2020-08-25 | 诺基亚技术有限公司 | 用于跨通道残差编码和解码的量化参数得出 |
CN109871290A (zh) * | 2019-03-07 | 2019-06-11 | 腾讯科技(深圳)有限公司 | 应用于Java的调用堆栈追踪方法、装置和存储介质 |
CN110266817A (zh) * | 2019-07-15 | 2019-09-20 | 武汉天喻信息产业股份有限公司 | 基于区块链的跨通道数据分享模型、分享方法和装置 |
CN113590198A (zh) * | 2020-05-01 | 2021-11-02 | 英特尔公司 | 使用脉动阵列在并行计算机器中计算高效的跨通道运算 |
CN111538679A (zh) * | 2020-05-12 | 2020-08-14 | 中国电子科技集团公司第十四研究所 | 一种基于内嵌dma的处理器数据预取设计 |
CN114675884A (zh) * | 2020-12-24 | 2022-06-28 | 英特尔公司 | 用于优化在部分宽度处理器上的跨通道紧缩数据指令实现方式的方法、系统和装置 |
CN114153785A (zh) * | 2021-11-29 | 2022-03-08 | 北京志凌海纳科技有限公司 | 基于远程直接内存访问的内存管理方法和设备 |
CN114647602A (zh) * | 2022-05-24 | 2022-06-21 | 沐曦集成电路(上海)有限公司 | 一种跨芯片访问控制的方法、装置、设备及介质 |
CN115984666A (zh) * | 2022-12-30 | 2023-04-18 | 南方科技大学 | 跨通道金字塔池化方法、系统、卷积神经网络及处理方法 |
CN116225999A (zh) * | 2023-05-04 | 2023-06-06 | 太初(无锡)电子科技有限公司 | 一种dma数据传输方法及系统 |
CN116523518A (zh) * | 2023-07-03 | 2023-08-01 | 中铱数字科技有限公司 | 一种基于区块链的跨通道数据访问方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117033270A (zh) | 2023-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109542515B (zh) | 运算装置及方法 | |
US10067901B2 (en) | Methods and apparatuses for providing data received by a state machine engine | |
US20210279074A1 (en) | Overflow detection and correction in state machine engines | |
CN110738015B (zh) | 片上系统及其fpga内核信息处理方法 | |
CN111159075B (zh) | 数据传输方法和数据传输装置 | |
EP2875433A1 (en) | Methods and systems for handling data received by a state machine engine | |
JP2010521728A (ja) | データ圧縮のための回路及びこれを用いるプロセッサ | |
US10430210B2 (en) | Systems and devices for accessing a state machine | |
CN102567258B (zh) | 多维dma传输装置与方法 | |
KR20190028426A (ko) | Simd 아키텍처에서 레인 셔플을 위한 셔플러 회로 | |
CN111338695A (zh) | 基于流水线技术的数据处理方法及相关产品 | |
US11947979B2 (en) | Systems and devices for accessing a state machine | |
US20230176999A1 (en) | Devices for time division multiplexing of state machine engine signals | |
US11586922B2 (en) | Tensor dropout in a neural network | |
US9570125B1 (en) | Apparatuses and methods for shifting data during a masked write to a buffer | |
WO2015094721A2 (en) | Apparatuses and methods for writing masked data to a buffer | |
CN117033270B (zh) | 一种芯片、设备以及数据处理方法 | |
US11328209B1 (en) | Dual cycle tensor dropout in a neural network | |
CN111260043A (zh) | 数据选择器、数据处理方法、芯片及电子设备 | |
CN112380154A (zh) | 数据传输方法和数据传输装置 | |
CN111381802B (zh) | 数据比较器、数据处理方法、芯片及电子设备 | |
CN112506815B (zh) | 数据传输方法和数据传输装置 | |
CN116126920A (zh) | 数据处理方法、装置、设备及存储介质 | |
JP2018120323A (ja) | 情報処理システム、情報処理装置、周辺装置、データ転送方法、及びデータ転送プログラム | |
CN114840470A (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 |