CN114489806A - 处理器装置及多维数据读写方法、计算设备 - Google Patents

处理器装置及多维数据读写方法、计算设备 Download PDF

Info

Publication number
CN114489806A
CN114489806A CN202110111073.8A CN202110111073A CN114489806A CN 114489806 A CN114489806 A CN 114489806A CN 202110111073 A CN202110111073 A CN 202110111073A CN 114489806 A CN114489806 A CN 114489806A
Authority
CN
China
Prior art keywords
address
structured data
data
structured
target
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.)
Pending
Application number
CN202110111073.8A
Other languages
English (en)
Inventor
李颖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Muxi Integrated Circuit Shanghai Co ltd
Original Assignee
Muxi Integrated Circuit Shanghai Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Muxi Integrated Circuit Shanghai Co ltd filed Critical Muxi Integrated Circuit Shanghai Co ltd
Priority to CN202110111073.8A priority Critical patent/CN114489806A/zh
Publication of CN114489806A publication Critical patent/CN114489806A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本申请实施例公开了一种处理器装置及多维数据读写方法、计算设备。该处理器装置中地址计算单元用于执行所述结构化数据读写指令,以获得执行张量运算的多维张量数据中目标结构化数据的存储地址;高速缓存单元用于根据所述目标结构化数据的存储地址,从存储器读取所述目标结构化数据;所述结构化数据读写指令包括用于指示所述目标结构化数据的基地址的第一指令域、用于指示所述目标结构化数据的统一地址偏移的第二指令域、用于指示所述目标结构化数据的结构化地址偏移的第三指令域和用于指示所述目标结构化数据的返回寄存器地址的第四指令域。本申请实施例可以减少处理核心中地址计算指令的次数,提高计算性能,并降低处理器功耗。

Description

处理器装置及多维数据读写方法、计算设备
技术领域
本申请涉及处理器技术领域,具体而言,涉及一种处理器装置及多维数据读写方法、计算设备。
背景技术
CPU、GPU等多核处理芯片通常可用于执行深度学习计算,深度学习一般使用张量作为输入输出数据的存储对象。张量(Tensor)包含三个属性,如:轴(维度)的个数,也称为张量的秩或阶;形状,即每个轴的维度;数据类型。张量是一个定义在的一些向量空间和一些对偶空间的笛卡儿积上的多重线性映射。深度学习计算一般使用零阶(维)到四阶(维)张量,但处理视频数据时可能会用到五阶(维)张量。在同构的意义下,零阶(维)张量为标量(Scalar),一阶(维)张量可以理解为向量(Vector),二阶(维)张量可以理解为矩阵(Matrix),三阶(维)张量可以理解成立方体,四阶(维)张量可以理解成立方体组成的一个向量,五阶(维)张量可以理解成立方体组成的矩阵,依次类推。
在深度学习的卷积运算中,每个乘加运算需要读入输入数据和权重数据,由于计算机系统采用64位地址,每个64位的地址计算需要至少三条指令,因此读取每个乘加运算的输入数据和权重数据将带来读写性能的下降和寄存器读写功耗的开销。即使通过优化数据到共享内存,简化地址计算从64位地址到32位地址,以将地址计算所需的三条指令减少到一条指令,并且还可以通过多倍数据复用来继续减少地址计算,但是卷积运算中所需的读取数据的地址计算仍然占据较高的比率,影响了多核处理芯片计算性能,增加了处理器功耗。
发明内容
为了解决上述问题,本申请的目的是提出一种处理器装置及多维数据读写方法、计算设备,以减少处理核心中地址计算指令的次数,提高计算性能,并降低处理器功耗。
第一方面,本申请提出一种处理器装置,包括:
一个或多个单指令多线程处理单元,所述单指令多线程处理单元用于执行一个或多个线程束,所述线程束包括对多维张量数据执行张量运算的多个线程;
指令调度单元,用于发送结构化数据读写指令给地址计算单元,所述结构化数据读写指令用于读写所述多维张量数据中的目标结构化数据;
地址计算单元,用于执行所述结构化数据读写指令,以获得所述目标结构化数据的存储地址;
高速缓存单元,用于根据所述目标结构化数据的存储地址,从存储器读取所述目标结构化数据;
其中,所述结构化数据读写指令包括用于指示所述目标结构化数据的基地址的第一指令域、用于指示所述目标结构化数据的统一地址偏移的第二指令域、用于指示所述目标结构化数据的结构化地址偏移的第三指令域和用于指示所述目标结构化数据的返回寄存器地址的第四指令域。
在优选的实施方式中,所述多维张量数据包括多个通道,所述目标结构化数据的基地址包括该目标结构化数据的第一元素对应于所述多个通道中的第一通道中的元素位置的地址。
在优选的实施方式中,所述统一地址偏移包括所述目标结构化数据的第一元素所处的通道相对于第一通道的地址偏移。
在优选的实施方式中,所述结构化地址偏移包括所述目标结构化数据中的各元素相对于第一元素的地址偏移。
在优选的实施方式中,所述第三指令域指示所述目标结构化数据的结构化地址偏移包括指示指向第一结构化地址偏移寄存器的间接寻址寄存器,所述第一结构化地址偏移寄存器用于保存所述第一元素的结构化地址偏移。
在优选的实施方式中,所述返回寄存器地址包括保存所述目标结构化数据的返回寄存器中第一寄存器的地址。
在优选的实施方式中,所述结构化数据读写指令还包括用于指示返回数据的数量的第五指令域。
在优选的实施方式中,所述地址计算单元用于根据所述结构化数据读写指令中指示的所述目标结构化数据的基地址、统一地址偏移和结构化地址偏移来计算得到所述目标结构化数据中各元素的存储地址。
在优选的实施方式中,所述地址计算单元用于根据所述第五指令域所指示的返回数据的数量,从所述第一结构化地址偏移寄存器开始读取对应数量的结构化地址偏移寄存器中存储的结构化地址偏移。
在优选的实施方式中,所述处理器装置还包括输出队列,用于保存所述高速缓存单元从存储器读取的所述目标结构化数据。
在优选的实施方式中,所述输出队列还用于根据所述第五指令域所指示的返回数据的数量和所述第四指令域指示的所述目标结构化数据的返回寄存器地址,将所述读取的目标结构化数据写入从返回寄存器地址开始的对应数量的返回寄存器中。
在优选的实施方式中,所述结构化数据读写指令还包括用于指示地址偏移模式的第六指令域。
在优选的实施方式中,所述结构化数据读写指令还包括用于指示所述目标结构化数据的数据类型的第七指令域。
在优选的实施方式中,对于所述线程束中不同的线程,所述目标结构化数据的基地址不同,所述目标结构化数据的统一地址偏移和结构化地址偏移相同。
第二方面,本申请提出一种多维数据读写方法,应用于处理器装置,包括:
执行结构化数据读写指令,以获得执行张量运算的多维张量数据中目标结构化数据的存储地址;其中,所述结构化数据读写指令包括用于指示所述目标结构化数据的基地址的第一指令域、用于指示所述目标结构化数据的统一地址偏移的第二指令域、用于指示所述目标结构化数据的结构化地址偏移的第三指令域和用于指示所述目标结构化数据的返回寄存器地址的第四指令域;
根据所述目标结构化数据的存储地址,从存储器读取所述目标结构化数据;
根据所述目标结构化数据的返回寄存器地址,将所述目标结构化数据写入从所述返回寄存器地址开始的连续的一组寄存器中。
在优选的实施方式中,所述多维张量数据包括多个通道,所述目标结构化数据的基地址包括该目标结构化数据的第一元素对应于所述多个通道中的第一通道中的元素位置的地址。
在优选的实施方式中,所述统一地址偏移包括所述目标结构化数据的第一元素所处的通道相对于第一通道的地址偏移。
在优选的实施方式中,所述结构化地址偏移包括所述目标结构化数据中的各元素相对于第一元素的地址偏移。
在优选的实施方式中,所述第三指令域指示所述目标结构化数据的结构化地址偏移包括指示指向第一结构化地址偏移寄存器的间接寻址寄存器,所述第一结构化地址偏移寄存器用于保存所述第一元素的结构化地址偏移。
在优选的实施方式中,所述返回寄存器地址包括保存所述目标结构化数据的返回寄存器中第一寄存器的地址。
在优选的实施方式中,所述结构化数据读写指令还包括用于指示返回数据的数量的第五指令域。
在优选的实施方式中,所述执行结构化数据读写指令,以获得执行张量运算的多维张量数据中目标结构化数据的存储地址包括:根据结构化数据读写指令中指示的所述目标结构化数据的基地址、统一地址偏移和结构化地址偏移来计算得到所述目标结构化数据中各元素的存储地址。
在优选的实施方式中,所述执行结构化数据读写指令,以获得执行张量运算的多维张量数据中目标结构化数据的存储地址还包括:根据所述第五指令域所指示的返回数据的数量,从第三指令域所指示的第一结构化地址偏移寄存器开始读取对应数量的结构化地址偏移寄存器中存储的结构化地址偏移。
在优选的实施方式中,所述根据所述目标结构化数据的返回寄存器地址,将所述目标结构化数据写入从所述返回寄存器地址开始的连续的一组寄存器中包括:根据所述第五指令域所指示的返回数据的数量,将所述目标结构化数据写入从所述返回寄存器地址开始的对应数量的返回寄存器中。
在优选的实施方式中,所述结构化数据读写指令还包括用于指示地址偏移模式的第六指令域。
在优选的实施方式中,所述结构化数据读写指令还包括用于指示所述目标结构化数据的数据类型的第七指令域。
在优选的实施方式中,对于所述处理器装置中运行的线程束中不同的线程,所述目标结构化数据的基地址不同,所述目标结构化数据的统一地址偏移和结构化地址偏移相同。
第三方面,本申请提出一种计算设备,包括如前述任一实施方式所述的处理器装置。
相对于现有技术,本申请至少具有如下有益效果:本申请实施例改进了多核处理芯片中多维张量数据的读写方式,实现了统一化的结构化数据读写,这种多维数据读写方式与数据维度、卷积运算类型、核函数大小等无关,使得多核处理芯片用于深度学习计算时,可以减少处理核心中地址计算指令的次数,提高计算性能,并降低处理器功耗。
附图说明
结合附图,并通过以下非限制性实施方式的详细描述将更充分地理解本申请的特征、目的和优点,其中:
图1是现有的图形处理单元(GPU)芯片100的一种示例性结构的示意图;
图2是根据本申请一实施例的处理器装置200的部分结构示意图;
图3是示例性地描述一维到四维张量数据的元素偏移位置的示意图;
图4是以NCHW格式存储的四维张量数据的输入通道和输出通道的示意图;
图5是以NCHW格式存储的四维张量数据的前三个输入通道的示意图;
图6是根据本申请一实施例的多维数据读写方法的流程示意图。
具体实施方式
下面通过实施例,并结合附图,对本申请的技术方案进行清楚、完整地说明,但是本申请不限于以下所描述的实施例。基于以下实施例,本领域普通技术人员在没有创造性劳动的前提下所获得的所有其它实施例,都属于本申请保护的范围。为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
应理解,本申请中诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件或其组合的存在,并不排除一个或多个其它特征、数字、步骤、行为、部件或其组合存在或被添加的可能性。本申请中“多个”通常可以解释为两个或两个以上的含义。
图1是现有的可用于执行深度学习计算的图形处理单元(GPU)芯片100的一种示例性结构的示意图。如图1所示,GPU芯片100通常包含一个或者多个流处理器110。流处理器(SP)110通过交叉开关矩阵或者交叉开关网络116与一个或多个二级缓存117以及PCIE控制器120进行数据的读写。除此之外,GPU芯片100还可以包含视频编解码121和/或其他处理核心(图中未示出)。
流处理器110包括指令调度器(SEQ)111、一个或多个单指令多线程(SIMT)处理单元112、一个或多个一级缓存113、内存管理单元(MMU)114和共享内存115。多个单指令多线程(SIMT)处理单元112可以读写共享内存115的数据,从而实现多个线程之间的数据交换。
除此之外,流处理器110还可以包含存储地址计算单元和数据读写控制单元(图中未示出),存储地址计算单元用于计算数据读写外部存储的地址,而数据读写控制单元用于从一级缓存113读取数据,然后将数据写入单指令多线程(SIMT)处理单元112,或者将单指令多线程(SIMT)处理单元112的存储指令和数据发给一级缓存113。
单指令多线程(SIMT)处理单元112中,线程束(WARP)是执行运算指令的基本单位,线程束(WARP)包括以不同数据资源并行执行同一运算指令的多个线程。线程束中并行执行的线程数即为线程束的大小(WARPSIZE),通常采用16,32或64个并行线程数。一个单指令多线程(SIMT)处理单元可以包括8-16个WARP,而一个流处理器可以达到32-128个WARP。
在机器学习中,卷积(Convolution)是神经网络的核心计算之一,与卷积运算相关的计算参数一般包括:
批尺寸(batch Size)N,即单次训练用的样本数;
输入通道数C,即输入数据的通道数量;
输入尺寸H*W,其中H为单个通道的输入数据的高,W为单个通道的输入数据的宽;
输出通道数K,即输出数据的通道数量;
输出尺寸Hout*Wout,其中Hout为单个通道的输出数据的高,Win为单个通道的输出数据的宽;
核函数(Kernel)尺寸R*S,即卷积核的尺寸。
假设输入数据保存在张量IN,输出数据保存在张量OUT,权重数据保存在张量WT,则权重数据为4维张量K*C*S*R,输入数据为4维张量N*C*H*W,输出数据为4维张量N*K*Hout*Wout。那么,深度学习的卷积运算可以用下述伪代码(Pseudo)表达:
Figure BDA0002916793390000061
Figure BDA0002916793390000071
上述伪代码中执行乘加运算,需要对每一个输入数据IN和每一个权重数据WT计算地址,并进行读操作。对于采用64位地址的计算机系统而言,每个64位的地址计算至少需要执行三条指令。如果上述卷积运算中,参数N=64,C=1024,H=35,W=35,K=1024,R=3,S=3,最坏情况下计算输入数据的地址需要64*1024*32*32*3*3*3条指令。如前所述,即使通过优化数据到共享内存,简化地址计算从64位地址到32位地址,以将地址计算所需的三条指令减少到一条指令,并且还可以通过多倍数据复用来继续减少地址计算,但是卷积运算中所需的读取数据的地址计算仍然占据较高的比率,影响了多核处理芯片计算性能,增加了处理器功耗。
为解决这个问题,本申请实施例改进了多核处理芯片中多维数据读写方式,实现了统一化的结构化数据读写指令,从而使得多核处理芯片用于深度学习计算时,可以减少处理核心中地址计算指令的次数,提高计算性能,并降低处理器功耗。
图2是根据本申请一实施例的处理器装置200的部分结构示意图。如图2所示,本申请实施例的处理器装置200包括:
一个或多个单指令多线程处理单元210,所述单指令多线程处理单元210用于执行一个或多个线程束,所述线程束包括对多维张量数据执行张量运算的多个线程;
指令调度单元220,用于发送结构化数据读写指令给地址计算单元,所述结构化数据读写指令用于读写所述多维张量数据中的目标结构化数据;
地址计算单元230,用于执行所述结构化数据读写指令,以获得所述目标结构化数据的存储地址;
高速缓存单元240,用于根据所述目标结构化数据的存储地址,从存储器读取所述目标结构化数据;
其中,所述结构化数据读写指令包括用于指示所述目标结构化数据的基地址的第一指令域、用于指示所述目标结构化数据的统一地址偏移的第二指令域、用于指示所述目标结构化数据的结构化地址偏移的第三指令域和用于指示所述目标结构化数据的返回寄存器地址的第四指令域。
本实施例中,所述多维张量数据可以包括多个通道,所述张量运算可以包括但不限于深度学习的卷积运算等。
本实施例中,所述第一指令域指示所述目标结构化数据的基地址,该基地址可以是该目标结构化数据的第一元素对应于所述多个通道中的第一通道中的元素位置的地址。对于一个线程束中每个不同的线程,该基地址可以不同。
本实施例中,所述第二指令域指示所述目标结构化数据的统一地址偏移,该统一地址偏移可以是多维张量数据中的该目标结构化数据的第一元素所处的通道相对于第一通道的地址偏移。对于一个线程束中每个不同的线程,该统一地址偏移可以是相同的。
本实施例中,所述第三指令域指示所述目标结构化数据的结构化地址偏移,该结构化地址偏移可以是多维张量数据中的该目标结构化数据的各元素相对于第一元素的地址偏移。对于一个线程束中每个不同的线程,该结构化地址偏移可以是相同的。在一些实施方式中,所述第三指令域可以指示指向第一结构化地址偏移寄存器的间接寻址寄存器,所述第一结构化地址偏移寄存器用于保存所述第一元素的结构化地址偏移。
本实施例中,所述第四指令域指示所述目标结构化数据的返回寄存器地址,该返回寄存器地址可以是保存所述目标结构化数据的返回寄存器中第一寄存器的地址。
在一些实施方式中,所述结构化数据读写指令还可以包括用于指示返回数据的数量的第五指令域。返回数据的数量可以包括1,2,3,4,8,16等多种数量的情形。
在一些实施方式中,地址计算单元230可以根据结构化数据读写指令中指示的所述目标结构化数据的基地址、统一地址偏移和结构化地址偏移来计算得到所述目标结构化数据中各元素的存储地址。各元素的存储地址可以是该目标结构化数据的基地址、统一地址偏移和对应于该元素的结构化地址偏移的求和。
其中,地址计算单元230可以根据所述第五指令域所指示的返回数据的数量,从第三指令域所指示的第一结构化地址偏移寄存器开始读取对应数量的结构化地址偏移寄存器中存储的结构化地址偏移。
在一些实施方式中,处理器装置200还可以包括输出队列250(图中未示出),用于保存高速缓存单元240从存储器读取的所述目标结构化数据。在一些实施方式中,输出队列250可以根据所述第五指令域所指示的返回数据的数量和所述第四指令域指示的所述目标结构化数据的返回寄存器地址,将所述读取的目标结构化数据写入从返回寄存器地址开始的对应数量的返回寄存器中。
在一些实施方式中,所述结构化数据读写指令还可以包括用于指示地址偏移模式的第六指令域。地址偏移模式可以包括32位地址偏移模式和16位地址偏移模式。
在一些实施方式中,所述结构化数据读写指令还可以包括用于指示目标结构化数据的数据类型的第七指令域。数据类型可以包括DWORDs、Double DWORDs、WORD、BYTE等多种类型。
本申请实施例通过处理器装置中地址计算单元执行结构化数据读写指令,改进了多核处理芯片中多维张量数据的读写方式,实现了统一化的结构化数据读写,这种多维数据读写方式与数据维度、卷积运算类型、核函数大小等无关,使得多核处理芯片用于深度学习计算时,可以减少处理核心中地址计算指令的次数,提高计算性能,并降低处理器功耗。
以下结合具体的指令示例进一步说明本申请实施例的具体实施方式。
1.指令定义
将本申请实施例中结构化数据读写指令命名为Structure_load,该指令的示例性的定义如下表所示:
Figure BDA0002916793390000091
Figure BDA0002916793390000101
2.多维张量数据的地址计算
设一个多维张量数据的维数为j,每一维的维度大小为Mi,该多维张量数据可表达为(Mj-1,Mj-2,…,M1,M0)。
设多维张量数据的基地址为base_address,每个元素包含element_size个字节。那么元素M[mj-1,mj-2,…,m1,m0]的地址计算公式为:
Address[mj-1,mj-2,…,m1,m0]=base_address+(mj-1*Mj-2*…*M1*M0+
mj-2*…*M1*M0+
…+
m1*M0+
m0)*element_size。
图3是示例性地描述一维到四维张量数据的元素偏移位置的示意图。如图3所示,采用NCHW格式的四维张量数据的任意一个元素可以表示为(n,c,h,w),其中NCHW格式表示四维张量数据的排列顺序为[N,C,H,W],N、C、H、W参数的含义如前述所述。根据前述多维张量数据的地址计算公式,该四维张量数据中的任一元素(n,c,h,w)的地址计算公式可以概括为:
Address[n,c,h,w]=base_address+(n*C*H*W+
c*H*W+
h*W+
w)*element_size。
类似地,采用NHWC格式的四维张量数据的任意一个元素可以表示为(n,h,w,c),其中NHWC格式表示四维张量数据的排列顺序为[N,H,W,C],则任意一个元素(n,h,w,c)的地址计算公式可以概括为:
Address[n,h,w,c]=base_address+(n*H*W*C+
h*W*C+
w*C+
c)*element_size。
图4示出了一个以NCHW格式存储的四维张量数据的其中一个输入通道数据H*W和执行卷积运算后的输出通道数据。如图4所示。其中,H、W已经包含了填充(padding),水平方向大小为W个DWORD的宽度,高度方向大小为H个DWORD的高度。对于输出数据的任意一个元素,如果它在通道中的位置为(h,w),并且执行3*3卷积运算,那么输入数据的每个通道需要9个元素,这9个元素相对于第0元素的当前通道位置(h,w)的结构化地址偏移(以DWORD双字为单位)依次为:
Structured_offsets(0)=0*W
Structured_offsets(1)=0*W+1
Structured_offsets(2)=0*W+2
Structured_offsets(3)=1*W
Structured_offsets(4)=1*W+1
Structured_offsets(5)=1*W+2
Structured_offsets(6)=2*W
Structured_offsets(7)=2*W+1
Structured_offsets(8)=2*W+2
根据本申请实施例,那么最终参与3*3卷积运算的9个元素的地址计算公式为:
Final_Address[i]=Structured Base Address+Unified_address_offset+Structured_offsets[i];
上述公式中,Final_Address[i]表示第i元素的存储地址,Structured BaseAddress表示这9个元素的基地址,Unified_address_offset表示这9个元素的统一地址偏移,Structured_offsets[i]表示第i元素的结构化地址偏移,其中i为大于等于0、小于9的整数。
其中,Structured Base Address可以是9个元素中第0元素(元素从0编号,也可称为第一元素)所对应的第0通道(通道从0编号,也可称为第一通道)的元素位置的地址。按照上文中NCHW格式的地址计算公式,可以得出:
Structured Base Address=base_address+n*C*H*W+h*W+w;
其中,Unified_address_offset可以是第0元素所处的通道相对于第0通道的地址偏移。那么,
对于第0通道而言,Unified_address_offset=0;
对于第c通道而言,Unified_address_offset=c*H*W。
图5是以NCHW格式存储的四维张量数据的前三个输入通道的示意图。对于图5所示的结构化数据,由于每通道有9个数据元素,如果采用返回16个数据的结构化数据读写指令,那么16个数据的分布可能有如下情况:
1)分布在2个通道H*W,第0通道9个数据,第1通道7个数据;
2)分布在2个通道H*W,第0通道8个数据,第1通道8个数据;
3)分布在2个通道H*W,第0通道7个数据,第1通道9个数据;
4)分布在3个通道H*W,第0通道6个数据,第1通道9个数据,第2通道1个数据;
5)分布在3个通道H*W,第0通道5个数据,第1通道9个数据,第2通道2个数据;
6)分布在3个通道H*W,第0通道4个数据,第1通道9个数据,第2通道3个数据;
7)分布在3个通道H*W,第0通道3个数据,第1通道9个数据,第2通道4个数据;
8)分布在3个通道H*W,第0通道2个数据,第1通道9个数据,第2通道5个数据;
9)分布在3个通道H*W,第0通道1个数据,第1通道9个数据,第2通道6个数据。
因此,应用程序最多需要读入三个通道的结构化地址偏移Structured offsets为9+9+6=24个。
对于NCHW格式的多维张量数据,假设N=32,C=256,H=35,W=35,即数据按照32*256*35*35排列,执行3*3卷积运算,每个通道需要读取3*3个数据元素,那么以BYTE(字节)为地址计算单位,1DWORD等于4个字节,所需要的24个结构化地址偏移Structured offsets的计算如下所示:
Structured_offsets[0]=4*(0);
Structured_offsets[1]=4*(1);
Structured_offsets[2]=4*(2);
Structured_offsets[3]=4*(35+0);
Structured_offsets[4]=4*(35+1);
Structured_offsets[5]=4*(35+2);
Structured_offsets[6]=4*(35*2+0);
Structured_offsets[7]=4*(35*2+1);
Structured_offsets[8]=4*(35*2+2);
Structured_offsets[9]=4*(35*35+0);
Structured_offsets[10]=4*(35*35+1);
Structured_offsets[11]=4*(35*35+2);
Structured_offsets[12]=4*(35*35+35+0);
Structured_offsets[13]=4*(35*35+35+1);
Structured_offsets[14]=4*(35*35+35+2);
Structured_offsets[15]=4*(35*35+35*2+0);
Structured_offsets[16]=4*(35*35+35*2+1);
Structured_offsets[17]=4*(35*35+35*2+2);
Structured_offsets[18]=4*(2*35*35+0);
Structured_offsets[19]=4*(2*35*35+1);
Structured_offsets[20]=4*(2*35*35+2);
Structured_offsets[21]=4*(2*35*35+35+0);
Structured_offsets[22]=4*(2*35*35+35+1);
Structured_offsets[23]=4*(2*35*35+35+2)。
假设结构化地址偏移从通用寄存器(GPR)W4开始保存,上述24个结构化地址偏移依次保存在通用寄存器W4-W27中,一个结构化数据读写指令最多可以使用16个连续的结构化地址偏移。需要说明的是,本申请实施例仅是示意性地举例,实际上24个结构化地址偏移也可以从任何一个Wn开始的连续24个寄存器保存。
类似地,对于NHWC格式的多维张量数据,结构化地址偏移也可以同样根据前述的元素地址计算公式进行推导得出,其他更高维数据也可以类似推导得出其结构化数据地址偏移。假设N=32,H=35,W=35,C=256,即数据按照32*35*35*256排列,执行3*3卷积运算,那么以BYTE(字节)为地址计算单位,参与卷积运算的9个元素的结构化地址偏移Structured offsets的计算如下所示:
Structured_offsets[0]=4*(0)*256;
Structured_offsets[1]=4*(1)*256;
Structured_offsets[2]=4*(2)*256;
Structured_offsets[3]=4*(35+0)*256;
Structured_offsets[4]=4*(35+1)*256;
Structured_offsets[5]=4*(35+2)*256;
Structured_offsets[6]=4*(35*2+0)*256;
Structured_offsets[7]=4*(35*2+1)*256;
Structured_offsets[8]=4*(35*2+2)*256。
3.指令应用示例
以下结合具体的结构化数据读写指令的应用示例进行进一步解释说明本申请实施例。
假设处理器装置中多个SIMT单元执行运算需要一次读入4个数据元素,用本申请的结构化数据读写指令可以表示为:
Structure_load_X4R8,R6,w3,w4
其中,X4表示该指令返回数据的数量Return Data Count,即返回四个数据;R8表示数据返回寄存器中第一个寄存器的地址Dest GPR,即返回数据依次保存在R8,R9,R10,R11四个寄存器中;R6表示返回数据的基地址的寄存器Structured Base Address GPR,该基地址对于执行运算的每个线程Thread不同;w3表示返回数据的统一地址偏移UnifiedAddress OffsetGPR,该统一地址偏移对于执行运算的每个线程Thread相同,假设返回数据位于第36通道,则w3是第0元素相对于第0通道的地址偏移,以字节为地址计算单位,w3=35*35*36*4;w4表示指向结构化地址偏移寄存器的间接寻址寄存器Structured OffsetsGPR,对于执行运算的每个线程Thread相同,假设值为W8,则表示四个返回数据的结构化地址偏移分别保存在W8,W9,W10,W11四个寄存器中。
需要说明的是,除了上述指令域之外,上述指令中还可以包括地址偏移模式Offset Mode和数据类型DataType的指令域,如地址偏移模式Offset Mode的值为0,则上述w4中存储的是32位地址。如果数据类型DataType的值为0,则数据类型为DWORDs,即上述指令返回四个DWORDs的数据。
那么,上述指令返回四个数据的地址Address0-Address4可以分别计算如下:
Address0=R6+w3+W8;
Address1=R6+w3+W9;
Address2=R6+w3+W10;
Address3=R6+w3+W11。
图6是根据本申请一实施例的多维数据读写方法的流程示意图。如图6所示,本申请实施例的多维数据读写方法可以适用于前述任一实施方式的处理器装置,所述方法包括以下步骤:
步骤S610,执行结构化数据读写指令,以获得执行张量运算的多维张量数据中目标结构化数据的存储地址;其中,所述结构化数据读写指令包括用于指示所述目标结构化数据的基地址的第一指令域、用于指示所述目标结构化数据的统一地址偏移的第二指令域、用于指示所述目标结构化数据的结构化地址偏移的第三指令域和用于指示所述目标结构化数据的返回寄存器地址的第四指令域;
步骤S620,根据所述目标结构化数据的存储地址,从存储器读取所述目标结构化数据;
步骤S630,根据所述目标结构化数据的返回寄存器地址,将所述目标结构化数据写入从所述返回寄存器地址开始的连续的一组寄存器中。
本实施例中,所述多维张量数据包括多个通道,张量运算可以包括但不限于深度学习的卷积运算等。
本实施例中,所述第一指令域指示所述目标结构化数据的基地址,该基地址可以是多维张量数据中的该目标结构化数据的第一元素对应于所述多个通道中的第一通道中的元素位置的地址。对于一个线程束中每个不同的线程,该基地址可以不同。
本实施例中,所述第二指令域指示所述目标结构化数据的统一地址偏移,该统一地址偏移可以是多维张量数据中的该目标结构化数据的第一元素所处的通道相对于第一通道的地址偏移。对于一个线程束中每个不同的线程,该统一地址偏移可以是相同的。
本实施例中,所述第三指令域指示所述目标结构化数据的结构化地址偏移,该结构化地址偏移可以是多维张量数据中的该目标结构化数据的各元素相对于第一元素的地址偏移。对于一个线程束中每个不同的线程,该结构化地址偏移可以是相同的。在一些实施方式中,所述第三指令域可以包括指向第一结构化地址偏移寄存器的间接寻址寄存器,所述第一结构化地址偏移寄存器用于保存所述第一元素的结构化地址偏移。
本实施例中,所述第四指令域指示所述目标结构化数据的返回寄存器地址,该返回寄存器地址可以是保存所述目标结构化数据的返回寄存器中第一寄存器的地址。
在一些实施方式中,所述结构化数据读写指令还可以包括用于指示返回数据的数量的第五指令域。返回数据的数量可以包括1,2,3,4,8,16等多种数量的情形。
在一些实施方式中,所述方法的步骤S610中,所述执行结构化数据读写指令,以获得执行张量运算的多维张量数据中目标结构化数据的存储地址包括:根据结构化数据读写指令中指示的所述目标结构化数据的基地址、统一地址偏移和结构化地址偏移来计算得到所述目标结构化数据中各元素的存储地址。各元素的存储地址可以是该目标结构化数据的基地址、统一地址偏移和对应于该元素的结构化地址偏移的求和。
在一些实施方式中,所述方法的步骤S610中,所述执行结构化数据读写指令,以获得执行张量运算的多维张量数据中目标结构化数据的存储地址还包括:根据所述第五指令域所指示的返回数据的数量,从第三指令域所指示的第一结构化地址偏移寄存器开始读取对应数量的结构化地址偏移寄存器中存储的结构化地址偏移。
在一些实施方式中,所述方法的步骤S630中,所述根据所述目标结构化数据的返回寄存器地址,将所述目标结构化数据写入从所述返回寄存器地址开始的连续的一组寄存器中包括:根据所述第五指令域所指示的返回数据的数量,将所述读取的目标结构化数据写入从所述返回寄存器地址开始的对应数量的返回寄存器中。
在一些实施方式中,所述结构化数据读写指令还可以包括用于指示地址偏移模式的第六指令域。地址偏移模式可以包括32位地址偏移模式和16位地址偏移模式。
在一些实施方式中,所述结构化数据读写指令还可以包括用于指示目标结构化数据的数据类型的第七指令域。数据类型可以包括DWORDs、Double DWORDs、WORD、BYTE等多种类型。
本申请实施例的多维数据读写方法通过执行结构化数据读写指令,改进了多核处理芯片中多维张量数据的读写方式,实现了统一化的结构化数据读写,这种多维数据读写方式与数据维度、卷积运算类型、核函数大小等无关,使得多核处理芯片用于深度学习计算时,可以减少处理核心中地址计算指令的次数,提高计算性能,并降低处理器功耗。
本申请实施例还提出一种计算设备,包括如前述任一实施方式所述的处理器装置。
需要说明的是,在一些实施方式中,计算设备可以例如包括至少一个处理器装置、关联的存储器和多个输入/输出(I/O)器件。当执行计算机程序时,计算设备可以根据计算机程序处理信息并且经由输入/输出(I/O)器件产生输出信息。任何包括本申请实施例所描述的处理器装置的计算设备,包括但不限于个人计算机、膝上型电脑、平板电脑、服务器、工作站、移动终端设备、图形处理设备以及其他嵌入处理器装置的计算机系统等,均属于本申请保护的范围。
本申请实施例的部分特征可以在计算机程序或用于在计算机系统上运行的计算机程序产品中被实现,可以包括用于当在诸如计算机系统的可编程装置上运行时执行根据本申请的方法步骤或使得可编程的装置能够执行根据本申请的装置或设备的功能的代码部分。
本申请实施例的处理器装置及多维数据读写方法可以应用于中央处理单元(CPU)、图形处理单元(GPU)、数字处理单元(DSP)、现场可编程门阵列(FGPA)、人工智能芯片(AI)、视频编解码芯片(Video Code)等多核处理器芯片中,来提高计算处理性能,降低处理器功耗。
本申请实施例中所涉及到的步骤、单元或模块可以通过硬件电路或者软硬件逻辑相结合的方式实现。本申请的实施方式并不限于上述实施例所述,在不偏离本申请的精神和范围的情况下,本领域普通技术人员可以在形式和细节上对本申请做出各种改变和改进,这些均被认为落入了本申请的保护范围。

Claims (28)

1.一种处理器装置,其特征在于,包括:
一个或多个单指令多线程处理单元,所述单指令多线程处理单元用于执行一个或多个线程束,所述线程束包括对多维张量数据执行张量运算的多个线程;
指令调度单元,用于发送结构化数据读写指令给地址计算单元,所述结构化数据读写指令用于读写所述多维张量数据中的目标结构化数据;
地址计算单元,用于执行所述结构化数据读写指令,以获得所述目标结构化数据的存储地址;
高速缓存单元,用于根据所述目标结构化数据的存储地址,从存储器读取所述目标结构化数据;
其中,所述结构化数据读写指令包括用于指示所述目标结构化数据的基地址的第一指令域、用于指示所述目标结构化数据的统一地址偏移的第二指令域、用于指示所述目标结构化数据的结构化地址偏移的第三指令域和用于指示所述目标结构化数据的返回寄存器地址的第四指令域。
2.根据权利要求1所述的处理器装置,其特征在于,所述多维张量数据包括多个通道,所述目标结构化数据的基地址包括该目标结构化数据的第一元素对应于所述多个通道中的第一通道中的元素位置的地址。
3.根据权利要求2所述的处理器装置,其特征在于,所述统一地址偏移包括所述目标结构化数据的第一元素所处的通道相对于第一通道的地址偏移。
4.根据权利要求3所述的处理器装置,其特征在于,所述结构化地址偏移包括所述目标结构化数据中的各元素相对于第一元素的地址偏移。
5.根据权利要求4所述的处理器装置,其特征在于,所述第三指令域指示所述目标结构化数据的结构化地址偏移包括指示指向第一结构化地址偏移寄存器的间接寻址寄存器,所述第一结构化地址偏移寄存器用于保存所述第一元素的结构化地址偏移。
6.根据权利要求5所述的处理器装置,其特征在于,所述返回寄存器地址包括保存所述目标结构化数据的返回寄存器中第一寄存器的地址。
7.根据权利要求6所述的处理器装置,其特征在于,所述结构化数据读写指令还包括用于指示返回数据的数量的第五指令域。
8.根据权利要求7所述的处理器装置,其特征在于,所述地址计算单元用于根据所述结构化数据读写指令中指示的所述目标结构化数据的基地址、统一地址偏移和结构化地址偏移来计算得到所述目标结构化数据中各元素的存储地址。
9.根据权利要求8所述的处理器装置,其特征在于,所述地址计算单元用于根据所述第五指令域所指示的返回数据的数量,从所述第一结构化地址偏移寄存器开始读取对应数量的结构化地址偏移寄存器中存储的结构化地址偏移。
10.根据权利要求9所述的处理器装置,其特征在于,所述处理器装置还包括输出队列,用于保存所述高速缓存单元从存储器读取的所述目标结构化数据。
11.根据权利要求10所述的处理器装置,其特征在于,所述输出队列还用于根据所述第五指令域所指示的返回数据的数量和所述第四指令域指示的所述目标结构化数据的返回寄存器地址,将所述读取的目标结构化数据写入从返回寄存器地址开始的对应数量的返回寄存器中。
12.根据权利要求11所述的处理器装置,其特征在于,所述结构化数据读写指令还包括用于指示地址偏移模式的第六指令域。
13.根据权利要求12所述的处理器装置,其特征在于,所述结构化数据读写指令还包括用于指示所述目标结构化数据的数据类型的第七指令域。
14.根据权利要求8所述的处理器装置,其特征在于,对于所述线程束中不同的线程,所述目标结构化数据的基地址不同,所述目标结构化数据的统一地址偏移和结构化地址偏移相同。
15.一种多维数据读写方法,应用于处理器装置,其特征在于,包括:
执行结构化数据读写指令,以获得执行张量运算的多维张量数据中目标结构化数据的存储地址;其中,所述结构化数据读写指令包括用于指示所述目标结构化数据的基地址的第一指令域、用于指示所述目标结构化数据的统一地址偏移的第二指令域、用于指示所述目标结构化数据的结构化地址偏移的第三指令域和用于指示所述目标结构化数据的返回寄存器地址的第四指令域;
根据所述目标结构化数据的存储地址,从存储器读取所述目标结构化数据;
根据所述目标结构化数据的返回寄存器地址,将所述目标结构化数据写入从所述返回寄存器地址开始的连续的一组寄存器中。
16.根据权利要求15所述的多维数据读写方法,其特征在于,所述多维张量数据包括多个通道,所述目标结构化数据的基地址包括该目标结构化数据的第一元素对应于所述多个通道中的第一通道中的元素位置的地址。
17.根据权利要求16所述的多维数据读写方法,其特征在于,所述统一地址偏移包括所述目标结构化数据的第一元素所处的通道相对于第一通道的地址偏移。
18.根据权利要求17所述的多维数据读写方法,其特征在于,所述结构化地址偏移包括所述目标结构化数据中的各元素相对于第一元素的地址偏移。
19.根据权利要求18所述的多维数据读写方法,其特征在于,所述第三指令域指示所述目标结构化数据的结构化地址偏移包括指示指向第一结构化地址偏移寄存器的间接寻址寄存器,所述第一结构化地址偏移寄存器用于保存所述第一元素的结构化地址偏移。
20.根据权利要求19所述的多维数据读写方法,其特征在于,所述返回寄存器地址包括保存所述目标结构化数据的返回寄存器中第一寄存器的地址。
21.根据权利要求20所述的多维数据读写方法,其特征在于,所述结构化数据读写指令还包括用于指示返回数据的数量的第五指令域。
22.根据权利要求21所述的多维数据读写方法,其特征在于,所述执行结构化数据读写指令,以获得执行张量运算的多维张量数据中目标结构化数据的存储地址包括:根据结构化数据读写指令中指示的所述目标结构化数据的基地址、统一地址偏移和结构化地址偏移来计算得到所述目标结构化数据中各元素的存储地址。
23.根据权利要求22所述的多维数据读写方法,其特征在于,所述执行结构化数据读写指令,以获得执行张量运算的多维张量数据中目标结构化数据的存储地址还包括:根据所述第五指令域所指示的返回数据的数量,从第三指令域所指示的第一结构化地址偏移寄存器开始读取对应数量的结构化地址偏移寄存器中存储的结构化地址偏移。
24.根据权利要求23所述的多维数据读写方法,其特征在于,所述根据所述目标结构化数据的返回寄存器地址,将所述目标结构化数据写入从所述返回寄存器地址开始的连续的一组寄存器中包括:根据所述第五指令域所指示的返回数据的数量,将所述目标结构化数据写入从所述返回寄存器地址开始的对应数量的返回寄存器中。
25.根据权利要求24所述的多维数据读写方法,其特征在于,所述结构化数据读写指令还包括用于指示地址偏移模式的第六指令域。
26.根据权利要求25所述的多维数据读写方法,其特征在于,所述结构化数据读写指令还包括用于指示所述目标结构化数据的数据类型的第七指令域。
27.根据权利要求22所述的多维数据读写方法,其特征在于,对于所述处理器装置中运行的线程束中不同的线程,所述目标结构化数据的基地址不同,所述目标结构化数据的统一地址偏移和结构化地址偏移相同。
28.一种计算设备,其特征在于,包括如权利要求1-14任一项所述的处理器装置。
CN202110111073.8A 2021-01-26 2021-01-26 处理器装置及多维数据读写方法、计算设备 Pending CN114489806A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110111073.8A CN114489806A (zh) 2021-01-26 2021-01-26 处理器装置及多维数据读写方法、计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110111073.8A CN114489806A (zh) 2021-01-26 2021-01-26 处理器装置及多维数据读写方法、计算设备

Publications (1)

Publication Number Publication Date
CN114489806A true CN114489806A (zh) 2022-05-13

Family

ID=81491807

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110111073.8A Pending CN114489806A (zh) 2021-01-26 2021-01-26 处理器装置及多维数据读写方法、计算设备

Country Status (1)

Country Link
CN (1) CN114489806A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115658146A (zh) * 2022-12-14 2023-01-31 成都登临科技有限公司 一种ai芯片、张量处理方法及电子设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115658146A (zh) * 2022-12-14 2023-01-31 成都登临科技有限公司 一种ai芯片、张量处理方法及电子设备

Similar Documents

Publication Publication Date Title
US11113057B2 (en) Streaming engine with cache-like stream data storage and lifetime tracking
US20230185649A1 (en) Streaming engine with deferred exception reporting
US11099933B2 (en) Streaming engine with error detection, correction and restart
Garland et al. Understanding throughput-oriented architectures
US11068164B2 (en) Streaming engine with fetch ahead hysteresis
KR20160134713A (ko) 태스크 간 통신을 지원하는 하드웨어-기반의 원자 동작들
US11709778B2 (en) Streaming engine with early and late address and loop count registers to track architectural state
CN108734623B (zh) 在低功率结构中维护数据的系统和方法
CN112506567B (zh) 数据读取方法和数据读取电路
US11550586B2 (en) Method and tensor traversal engine for strided memory access during execution of neural networks
CN114489806A (zh) 处理器装置及多维数据读写方法、计算设备
CN114489791B (zh) 处理器装置及其指令执行方法、计算设备
CN114398593A (zh) 向量矩阵乘法加速方法、单元、加速单元和片上系统
CN114626540A (zh) 处理器和相关产品
JP2010244095A (ja) データ処理装置、印刷システムおよびプログラム

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