CN106909320B - 一种多维数据扩充传输的方法、装置以及系统 - Google Patents

一种多维数据扩充传输的方法、装置以及系统 Download PDF

Info

Publication number
CN106909320B
CN106909320B CN201710090184.9A CN201710090184A CN106909320B CN 106909320 B CN106909320 B CN 106909320B CN 201710090184 A CN201710090184 A CN 201710090184A CN 106909320 B CN106909320 B CN 106909320B
Authority
CN
China
Prior art keywords
module
data
pad
former
later
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
Application number
CN201710090184.9A
Other languages
English (en)
Other versions
CN106909320A (zh
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.)
Suzhou Ruixin Integrated Circuit Technology Co ltd
Original Assignee
Beijing Zhongke Rui Core Technology 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 Beijing Zhongke Rui Core Technology Co Ltd filed Critical Beijing Zhongke Rui Core Technology Co Ltd
Priority to CN201710090184.9A priority Critical patent/CN106909320B/zh
Publication of CN106909320A publication Critical patent/CN106909320A/zh
Application granted granted Critical
Publication of CN106909320B publication Critical patent/CN106909320B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明提供了一种多维数据扩充传输的方法、装置以及系统,其中,于数据传输前需要确定对数据集的每一维度的扩充区域的位置、扩充区域的大小和扩充区域填充的数值,并根据上述设定构建多个控制寄存器,在从主机的存储区向片上存储传输数据时,可以同时将数据集扩充为程序员设定的格式,无需在片上或者在主机端对数据进行拷贝,既能够节约memory的空间,也可以减少传输的时间。

Description

一种多维数据扩充传输的方法、装置以及系统
技术领域
本发明涉及数据扩充领域,具体而言,涉及一种多维数据扩充传输的方法、装置以及系统。
背景技术
目前,深度学习、人工智能以及大数据应用等领域中,处理多维矩阵或图像的应用越来越多。在处理过程中,可能需要对数据集进行一些扩充处理,例如以下两种情况:
(1)输入数据集不规则,需要补全的情况。例如,在调用openBLAS库的GEMM时,该函数是将矩阵切割成固定大小的块后进行加速,如果输入矩阵的行和列无法对应地整除加速块的行和列,即无法全部切分成需要的固定大小的块,这时就需要对矩阵进行填充。
(2)在输入集的边界处理时,需要在超出输入集边界的地方取0或MAX,或者某个特定数的情况。例如,sift的卷积过程中,为了防止图片卷积后出现黑边,需要在边界处理时改变卷积核的大小,或者是不改变卷积核而是将图片的边界扩大,即超出部分采用输入集的边界值。
面对上述两种情况时,目前比较常用处理方式有两种,其中一种是在程序中写分支语句,当超出输入数据集的大小时,采取对应的方式进行解决;另一种是将数据集进行读取,改变其结构后,再存入memory中。
但在目前很多片上结构、加速器中,上述方法不能很好的解决问题。在很多的加速器上,每个PE较为简单,可能只由几个计算部件组成,无法支持分支指令;而片上存储是有限的,如果在片上展开矩阵,那么片上存储的利用率会降低,而且增加了很多读写操作,加速器的效率也会降低。而在主机端对数据展开的话,加速器需要等待主机将数据集展开,传输到片上后再进行处理,这样会增加等待时间,并且增加了传输的数据集的量,传输速度会进一步受到memory的带宽影响。
综上可知,从主机向片上存储比较小的片上系统或加速器传输一些不规则的数据集或者是需要对边界进行处理的数据集时,片上的计算单元无法使用分支指令,且在片上进行数据扩充会占用比较大的片上存储,而在主机端进行数据扩充会增加传输的数据量和传输时间。
发明内容
本发明提供一种多维数据扩充传输的方法、装置以及系统,用以通过硬件的方式于主机端向片上传输数据的同时将数据集进行扩充。
为达到上述目的,本发明提供了一种多维数据扩充传输的方法,该方法用于将一数据集从一主机传输至一片上系统或加速器中,并于传输的同时对该数据集进行扩充,当该多维数据为二维数据时,其包括以下步骤:
S1:确定需要传输的数据集A的行数row0、列数col0和首地址a0,其中,数据集A位于一主机的存储区;
S2:确定对数据集A的每一维度的扩充区域的位置、扩充区域的大小和扩充区域填充的数值,其中,二维扩充区域为2D former和2D latter,一维扩充区域为1D former和1Dlatter,2D former和2D latter之间为数据集A的二维区域2D middle,1D former和1Dlatter为数据集A的一维区域1D middle;
S3:根据S2的结果确定扩充后的数据集B的行数row1、列数col1以及接收数据的首地址a1,其中,数据集B位于一片上系统或加速器的存储区,接收数据的首地址a1即为数据集B的首地址,并且数据集B的2D former、2D latter、1D former、1D latter、2D middle和1D middle所在的区域与数据集A中的相应区域对应;
S4:根据S2的结果,分别构建一2D控制模块与一1D控制模块,其中,2D控制模块包括2D former模块、2D middle模块和2D latter模块,1D控制模块包括1D former、1Dmiddle模块和1D latter模块,并且分别为2D former模块、2D latter模块、1D former模块和1D latter模块构建多个控制寄存器,多个控制寄存器的名称及其功能定义如下表:
Figure BDA0001228703030000031
S5:启动数据传输过程,以将数据集A及其扩充区域传输至以首地址a1为起始地址的存储区,2D控制模块首先向其中的2D former模块发送开始传输命令;
S6:2D former模块接收到开始传输命令后查看自身Pad_valid中写入的数值,若为0则不填充数据,若为1则进一步查看Pad_type中写入的值;
S7:若pad_type中写入的值为0则执行步骤S8-S11,通过步骤S8-S11向数据集B的2D former区域写入一个固定的数,若pad_type中写入的值为1则执行步骤S12-S16,通过步骤S12-S16将数据集B的2D former区域降维为多个1D区域并对多个1D区域完成数据写入,每个1D区域中的1D middle所在区域写入的均是数据集A的上边界;
S8:进一步查看Pad_num_type中写入的值,若Pad_num_type中写入的值为0,2Dformer模块则从Pad_num中读取数据,若为1则从Pad_num索引的地址中读取数据;
S9:2D former模块将读取到的数据与Pad_length中写入的数值发送至一2Dpadding模块,2D padding模块读取col1的值并向一store模块发送Pad_length*col1次写请求,写请求中包括步骤S8中读取到的数据以及每写入一次数据后,下次写入数据的首地址;
S10:store模块根据上一步骤接收到的消息从接收数据的首地址a1开始进行数据写入,store模块每完成一次写入后自动记录下次写入数据的首地址,直至Pad_length*col1次写请求全部完成;
S11:2D padding模块向2D former模块发送写入完成消息;
S12:2D former模块向1D控制模块发送写入开始消息,消息包括数据集A的首地址a0、row0、col0;
S13:1D控制模块向1D former模块发送开始消息,1D former模块查看自身Pad_valid、Pad_length、Pad_type、Pad_num_type和Pad_num中写入的数值并向store模块发送Pad_length次写请求,store模块进行数据写入,直至Pad_length次写请求全部完成,此处的Pad_length为1D former模块对应的名称为Pad_length的控制寄存器中写入的数值;
S14:1D former模块向1D middle模块发送消息,1D middle模块读取步骤S12中接收到的首地址a0和col0并从首地址a0开始读取col0个数据并向store模块发送col0次写请求,store模块进行数据写入直至col0次写请求全部完成;
S15:1D middle模块向1D latter模块发送消息,1D latter模块根据上述步骤S13中1D former模块控制的写入方式进行数据写入;
S16:1D latter模块完成写入后,1D控制模块向2D former模块发送一写入完成消息;
S17:2D former模块接收到1D latter模块发送的写入完成消息后,发送写入下一行数据的消息至1D控制模块,1D控制模块控制写入数据集B中的下一行数据,直至Pad_length个消息全部完成,此处的Pad_length为2D former模块对应的控制寄存器中定义的数值,其中,向数据集B写入每一行数据均通过步骤S13~S16进行;
S18:2D former模块向2D middle模块发送开始传输命令;
S19:2D middle模块读取row0的数值并向1D控制模块发送消息,消息中包括首地址a0、row0、col0以及根据row0、col0推算出的数据集A每行的首地址;
S20:1D控制模块按照S13到S15的步骤向数据集B写入数据;
S21:1D控制模块完成写入后向2D middle模块发送一写入完成消息;
S22:2D middle模块接收到1D latter模块发送的写入完成消息后,发送写入下一行数据的消息至1D控制模块,1D控制模块控制写入数据集B中的下一行数据,直至row0个消息全部完成,其中,向数据集B写入每一行数据均通过步骤S20~S21进行;
S23:2D middle模块向2D latter模块发送写入完成消息,2D latter模块按照步骤S6~S17中2D former模块的数据写入方式进行数据写入;
S24:2D former模块向2D控制模块发送写入完成消息,数据扩充传输过程结束。
在本发明的一实施例中,对于2D former模块、2D latter模块、1D former模块和1D latter模块中的任一模块而言,当Pad_num_type中写入的值为1时,2D former模块、2Dlatter模块、1D former模块或1D latter模块将Pad_num内的内存地址读取出并发送至一load模块,并由load模块将该内存地址中存储的数据读取出并返回给2D former模块、2Dlatter模块、1D former模块或1D latter模块。
在本发明的一实施例中,步骤S13中,当1D former模块的Pad_valid=1以及Pad_type=1时,1D former模块将数据集A的首地址a0处的数据读取Pad_length次并向store模块发送Pad_length次写请求,store模块从数据集B的首地址开始进行数据写入。
在本发明的一实施例中,步骤S15中,当1D latter模块的Pad_valid=1以及Pad_type=1时,1D latter模块将步骤S14步骤中地址指针最后一次指向的数据读取Pad_length次并向store模块发送Pad_length次写请求,store模块从步骤S14最后写入地址的下一个地址开始进行数据写入,此处的Pad_length为1D latter模块对应的名称为Pad_length的控制寄存器中写入的数值。
本发明还提供了一种多维数据扩充传输的装置,该装置用于实施上述多维数据扩充传输的方法。
本发明还提供了一种多维数据扩充传输的系统,该系统用于实施上述多维数据扩充传输的方法。
本发明提供的多维数据扩充传输的方法、装置以及系统在从主机的存储区向片上存储传输数据时,可以同时将数据集扩充为程序员设定的格式,无需在片上或者在主机端对数据进行拷贝,既能够节约memory的空间,也可以减少传输的时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a为一维数组的填充区域示意图;
图1b为二维数组填充区域示意图;
图1c为三维数组的填充区域示意图;
图2为2D数据的传输模式示意图;
图3为3D模块的传输模式示意图;
图4为本发明提供的多维数据扩充传输的装置/系统与其他模块的位置关系示意图;
图5为扩充后的得到数据集B的一示意图;
图6为扩充后的得到数据集B的另一示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明对于不同的数据维度,填充区域也相应不同,如图1a、图1b和图1c所示,其中,图1a为一维数组的填充区域示意图,图1b为二维数组填充区域示意图,图1c为三维数组的填充区域示意图,对于图1a中的一维数组,需要填充的区域为101和102,对于图1b中的二维数组,需要填充的区域为103-106,对于图1c中的三维数组,需要填充的区域为107-112。也即,n维数据的填充区域为2n个。其中,对于每一个填充区域,可以根据实际需要配置是否填充区域(填充区域可以为空,即不进行任何填充),也可以根据需要配置填充的具体数据。另外,由于n维数据的填充区域为2n个,因此,数据维度增加的同时,相应的用于进行数据扩充的硬件规模也要增加。本发明以二维数据为例进行了研究,其中,将每一维度的数据分为三个部分,分别为原区域和两个填充区域,原区域称之为middle,两个填充区域分别位于原区域之前和之后,分别称之为former和latter。
在本发明中,每个维度都会按照former、middle、latter的顺序进行数据扩充和传输。对于middle而言,高维数据是先分解成多个低维数据,直到分解成一维数据,然后再进行传输。例如,3D的数据H*W*L传输会分解成H次2D数据传输,每次2D数据传输会分解为W次1D数据传输。而分解后的低维数据也是由former、middle、latter的结构构成。
本发明对填充区域(former、latter)有两种填充模式,当填充数据为一个固定的数时,可以通过多维填充模块(即后面的padding模块)直接向目的地址发送写请求,将多维的区域用固定的数字填充。当填充的数据需要是原数据块的边界时,就会同数据传输一样进行高维向低维的分解,并且是将低维的数据边界传输Pad_length次,这样就会填满整个填充区域。这个数据边界是指与填充区域相接的数据,如2D former对应的数据边界就是2维数据的第一行,3D latter的数据边界是3维数据的最后一个面。
本发明的结构图可以参考图2和图3,因为每个维度都会分成former、middle、latter三部分填充,所以每个维度都需要分别构建三个对应模块,每个维度的三个模块组成该维度的控制模块。former、middle、latter模块都包含各自的控制寄存器。高维分解为低维的过程是通过高维向低维发送消息实现的。比如要2D former要进行n行数据的填充,那么它就要向1D control发送n次消息。Padding模块除一维外不同维度各有一个,可以直接向store模块发送消息填充数据。最右边有load和store模块,它们控制和内存、片上存储通信的消息格式,同时store模块会记录片上存储上的下一个数存放的地址偏移。可以看到,随着装置可以支持的维度的增加,硬件逻辑的复杂度也会增加,装置的面积也会因此增加。所以,在实际硬件实现时,要按照整个硬件系统需要支持的数据集的最高维度来实现,这样才能充分支持该硬件系统所面向的应用。
本发明公开了一种多维数据扩充传输的方法,该方法用于将一数据集从一主机传输至一片上系统或加速器中,并于传输的同时对该数据集进行扩充,当该多维数据为二维数据时,其包括以下步骤:
S1:确定需要传输的数据集A的行数row0、列数col0和首地址a0,其中,数据集A位于一主机的存储区;
S2:确定对数据集A的每一维度的扩充区域的位置、扩充区域的大小和扩充区域填充的数值,其中,二维扩充区域为2D former和2D latter,一维扩充区域为1D former和1Dlatter,2D former和2D latter之间为数据集A的二维区域2D middle,1D former和1Dlatter为数据集A的一维区域1D middle;
S3:根据S2的结果确定扩充后的数据集B的行数row1、列数col1以及接收数据的首地址a1,其中,数据集B位于一片上系统或加速器的存储区,接收数据的首地址a1即为数据集B的首地址,并且数据集B的2D former、2D latter、1D former、1D latter、2D middle和1D middle所在的区域与数据集A中的相应区域对应;
S4:根据S2的结果,分别构建一2D控制模块与一1D控制模块,其中,2D控制模块包括2D former模块、2D middle模块和2D latter模块,1D控制模块包括1D former、1Dmiddle模块和1D latter模块,并且分别为2D former模块、2D latter模块、1D former模块和1D latter模块构建多个控制寄存器,多个控制寄存器的名称及其功能定义如下表:
Figure BDA0001228703030000091
Figure BDA0001228703030000101
对于对2D的former、latter来讲,Pad_length就是它们的行数,对3D的former、latter来说,Pad_length则是它们的平面个数;填充数据的类型(Pad_type),即填充一个固定的数或原数据块的边界;配置在pad_num中的是存放的内容格式,如果是0,则在pad_num中存放数值,如果是1则pad_num存放的是索引填充数值的内存地址。
S5:启动数据传输过程,以将数据集A及其扩充区域传输至以首地址a1为起始地址的存储区,2D控制模块首先向其中的2D former模块发送开始传输命令;
S6:2D former模块接收到开始传输命令后查看自身Pad_valid中写入的数值,若为0则不填充数据,若为1则进一步查看Pad_type中写入的值;
S7:若pad_type中写入的值为0则执行步骤S8-S11,通过步骤S8-S11向数据集B的2D former区域写入一个固定的数,若pad_type中写入的值为1则执行步骤S12-S16,通过步骤S12-S16将数据集B的2D former区域降维为多个1D区域并对多个1D区域完成数据写入,每个1D区域中的1D middle所在区域写入的均是数据集A的上边界;
S8:进一步查看Pad_num_type中写入的值,若Pad_num_type中写入的值为0,2Dformer模块则从Pad_num中读取数据,若为1则从Pad_num索引的地址中读取数据;
S9:2D former模块将读取到的数据与Pad_length中写入的数值发送至一2Dpadding模块,2D padding模块读取col1的值并向一store模块发送Pad_length*col1次写请求,写请求中包括步骤S8中读取到的数据以及每写入一次数据后,下次写入数据的首地址;
S10:store模块根据上一步骤接收到的消息从接收数据的首地址a1开始进行数据写入,store模块每完成一次写入后自动记录下次写入数据的首地址,直至Pad_length*col1次写请求全部完成;
S11:2D padding模块向2D former模块发送写入完成消息;
S12:2D former模块向1D控制模块发送写入开始消息,消息包括数据集A的首地址a0、row0、col0;
S13:1D控制模块向1D former模块发送开始消息,1D former模块查看自身Pad_valid、Pad_length、Pad_type、Pad_num_type和Pad_num中写入的数值并向store模块发送Pad_length次写请求,store模块进行数据写入,直至Pad_length次写请求全部完成,此处的Pad_length为1D former模块对应的名称为Pad_length的控制寄存器中写入的数值;
S14:1D former模块向1D middle模块发送消息,1D middle模块读取步骤S12中接收到的首地址a0和col0并从首地址a0开始读取col0个数据并向store模块发送col0次写请求,store模块进行数据写入直至col0次写请求全部完成;
S15:1D middle模块向1D latter模块发送消息,1D latter模块根据上述步骤S13中1D former模块控制的写入方式进行数据写入;
S16:1D latter模块完成写入后,1D控制模块向2D former模块发送一写入完成消息;
S17:2D former模块接收到1D latter模块发送的写入完成消息后,发送写入下一行数据的消息至1D控制模块,1D控制模块控制写入数据集B中的下一行数据,直至Pad_length个消息全部完成,此处的Pad_length为2D former模块对应的控制寄存器中定义的数值,其中,向数据集B写入每一行数据均通过步骤S13~S16进行;
S18:2D former模块向2D middle模块发送开始传输命令;
S19:2D middle模块读取row0的数值并向1D控制模块发送消息,消息中包括首地址a0、row0、col0以及根据row0、col0推算出的数据集A每行的首地址;
S20:1D控制模块按照S13到S15的步骤向数据集B写入数据;
S21:1D控制模块完成写入后向2D middle模块发送一写入完成消息;
S22:2D middle模块接收到1D latter模块发送的写入完成消息后,发送写入下一行数据的消息至1D控制模块,1D控制模块控制写入数据集B中的下一行数据,直至row0个消息全部完成,其中,向数据集B写入每一行数据均通过步骤S20~S21进行;
S23:2D middle模块向2D latter模块发送写入完成消息,2D latter模块按照步骤S6~S17中2D former模块的数据写入方式进行数据写入;
S24:2D former模块向2D控制模块发送写入完成消息,数据扩充传输过程结束。
在本发明的一实施例中,对于2D former模块、2D latter模块、1D former模块和1D latter模块中的任一模块而言,当Pad_num_type中写入的值为1时,2D former模块、2Dlatter模块、1D former模块或1D latter模块将Pad_num内的内存地址读取出并发送至一load模块,并由load模块将该内存地址中存储的数据读取出并返回给2D former模块、2Dlatter模块、1D former模块或1D latter模块。
在本发明的一实施例中,步骤S13中,当1D former模块的Pad_valid=1以及Pad_type=1时,1D former模块将数据集A的首地址a0处的数据读取Pad_length次并向store模块发送Pad_length次写请求,store模块从数据集B的首地址开始进行数据写入。
在本发明的一实施例中,步骤S15中,当1D latter模块的Pad_valid=1以及Pad_type=1时,1D latter模块将步骤S14步骤中地址指针最后一次指向的数据读取Pad_length次并向store模块发送Pad_length次写请求,store模块从步骤S14最后写入地址的下一个地址开始进行数据写入,此处的Pad_length为1D latter模块对应的名称为Pad_length的控制寄存器中写入的数值。
以下以两个具体实例说明控制寄存器与扩充后的得到数据集B的关系:
(一)当各控制寄存器的配置如下时:
填充区域 Pad_valid Pad_length Pad_type Pad_num_type Pad_num
2D former 1 3 1 - -
2D latter 1 2 1 - -
1D former 1 2 1 - -
1D latter 1 3 0 0 Y
配置后的数据集B如图5所示,其中,白色处填充数据A-O处对应数据集A,2Dformer、2D latter、1D former和1D latter所在区域如图5所示。
由图5可以看出,当2D former的Pad_type为1时,2D former的middle区域的每一行填充的数据均为数据集A的第一行的数据。
(二)当各控制寄存器的配置如下时:
Figure BDA0001228703030000131
Figure BDA0001228703030000141
配置后的数据集B如图6所示,其中,白色处填充数据A-O处对应数据集A,2Dformer、2D latter和1D latter所在区域如图5所示,需要注意的是,由于1D former对应的Pad_valid为0,也既对该区域不填充任何数据,因此,图6中不存在1D former区域。
本发明还提供了一种多维数据扩充传输的装置,该装置用于实施上述多维数据扩充传输的方法。
本发明还提供了一种多维数据扩充传输的系统,该系统用于实施上述多维数据扩充传输的方法。
如图4所示为本发明提供的多维数据扩充传输的装置/系统与其他模块的位置关系示意图,可见,本发明提供的多维数据扩充传输的装置/系统可以单独形成一个模块,也可以做为DMA的一部分。
本发明在传输数据时,可以同时将数据集扩充为程序员所配置的格式。这样可以减少对内存的读写次数,减少传输时间和内存占用。以2维数据为例,假设读写内存和片上存储的延迟相同(实际上片上存储的延迟要更小),用m表示,需要传输的原数据的大小为H*W,要添加的行和列为pad_h、pad_w。那么把该数据在内存上展开再传输需要(H*W*m+(H+pad_h)(W+pad_w)*3m)次读写,即从内存中读出H*W大小的数据,改变成大小为(H+pad_h)(W+pad_w)的矩阵再存入内存中,然后通过DMA或者其他数据传输方式将(H+pad_h)(W+pad_w)的矩阵读出再写入片上存储。而使用了本发明后,最多只需要(H+pad_h)(W+pad_w)*2m次读写。可以看出,本发明能够减少大量的读写操作和传输时间,同时节约(H+pad_h)(W+pad_w)的内存空间。
本发明提供的多维数据扩充传输的方法、装置以及系统在从主机的存储区向片上存储传输数据时,可以同时将数据集扩充为程序员设定的格式,无需在片上或者在主机端对数据进行拷贝,既能够节约memory的空间,也可以减少传输的时间。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。

Claims (6)

1.一种多维数据扩充传输的方法,该方法用于将一数据集从一主机传输至一片上系统或加速器中,并于传输的同时对该数据集进行扩充,当该多维数据为二维数据时,其特征在于,包括以下步骤:
S1:确定需要传输的数据集A的行数row0、列数col0和首地址a0,其中,数据集A位于一主机的存储区;
S2:确定对数据集A的每一维度的扩充区域的位置、扩充区域的大小和扩充区域填充的数值,其中,二维扩充区域为2D former和2D latter,一维扩充区域为1D former和1Dlatter,2D former和2D latter之间为数据集A的二维区域2D middle,1D former和1Dlatter之间为数据集A的一维区域1D middle,1D middle为数据集A于一维空间中占据的原始区域,2D middle为数据集A于二维空间中占据的原始区域;
S3:根据S2的结果确定扩充后的数据集B的行数row1、列数col1以及接收数据的首地址a1,其中,数据集B位于一片上系统或加速器的存储区,接收数据的首地址a1即为数据集B的首地址,并且数据集B的2D former、2D latter、1D former、1D latter、2D middle和1Dmiddle所在的区域与数据集A中的相应区域对应;
S4:根据S2的结果,分别构建一2D控制模块与一1D控制模块,其中,2D控制模块包括2Dformer模块、2D middle模块和2D latter模块,1D控制模块包括1D former、1D middle模块和1D latter模块,并且分别为2D former模块、2D latter模块、1D former模块和1Dlatter模块构建多个控制寄存器,多个控制寄存器的名称及其功能定义如下表:
Figure FDA0002213293580000011
Figure FDA0002213293580000021
S5:启动数据传输过程,以将数据集A及其扩充区域传输至以首地址a1为起始地址的存储区,2D控制模块首先向其中的2D former模块发送开始传输命令;
S6:2D former模块接收到开始传输命令后查看自身Pad_valid中写入的数值,若为0则不填充数据,若为1则进一步查看Pad_type中写入的值;
S7:若pad_type中写入的值为0则执行步骤S8-S11,通过步骤S8-S11向数据集B的2Dformer区域写入一个固定的数,若pad_type中写入的值为1则执行步骤S12-S16,通过步骤S12-S16将数据集B的2D former区域降维为多个1D区域并对多个1D区域完成数据写入,每个1D区域中的1D middle所在区域写入的均是数据集A的上边界;
S8:进一步查看Pad_num_type中写入的值,若Pad_num_type中写入的值为0,2D former模块则从Pad_num中读取数据,若为1则从Pad_num索引的地址中读取数据;
S9:2D former模块将读取到的数据与Pad_length中写入的数值发送至一2D padding模块,2D padding模块读取col1的值并向一store模块发送Pad_length*col1次写请求,写请求中包括步骤S8中读取到的数据以及每写入一次数据后,下次写入数据的首地址;
S10:store模块根据上一步骤接收到的消息从接收数据的首地址a1开始进行数据写入,store模块每完成一次写入后自动记录下次写入数据的首地址,直至Pad_length*col1次写请求全部完成;
S11:2D padding模块向2D former模块发送写入完成消息,之后跳转至步骤S18;
S12:2D former模块向1D控制模块发送写入开始消息,消息包括数据集A的首地址a0、row0、col0;
S13:1D控制模块向1D former模块发送开始消息,1D former模块查看自身Pad_valid、Pad_length、Pad_type、Pad_num_type和Pad_num中写入的数值并向store模块发送Pad_length次写请求,store模块进行数据写入,直至Pad_length次写请求全部完成,此处的Pad_length为1D former模块对应的名称为Pad_length的控制寄存器中写入的数值;
S14:1D former模块向1D middle模块发送消息,1D middle模块读取步骤S12中接收到的首地址a0和col0并从首地址a0开始读取col0个数据并向store模块发送col0次写请求,store模块进行数据写入直至col0次写请求全部完成;
S15:1D middle模块向1D latter模块发送消息,1D latter模块根据上述步骤S13中1Dformer模块控制的写入方式进行数据写入;
S16:1D latter模块完成写入后,1D控制模块向2D former模块发送一写入完成消息;
S17:2D former模块接收到1D latter模块发送的写入完成消息后,发送写入下一行数据的消息至1D控制模块,1D控制模块控制写入数据集B中的下一行数据,直至Pad_length个消息全部完成,此处的Pad_length为2D former模块对应的控制寄存器中定义的数值,其中,向数据集B写入每一行数据均通过步骤S13~S16进行;
S18:2D former模块向2D middle模块发送开始传输命令;
S19:2D middle模块读取row0的数值并向1D控制模块发送消息,消息中包括首地址a0、row0、col0以及根据row0、col0推算出的数据集A每行的首地址;
S20:1D控制模块按照S13到S15的步骤向数据集B写入数据;
S21:1D控制模块完成写入后向2D middle模块发送一写入完成消息;
S22:2D middle模块接收到1D latter模块发送的写入完成消息后,发送写入下一行数据的消息至1D控制模块,1D控制模块控制写入数据集B中的下一行数据,直至row0个消息全部完成,其中,向数据集B写入每一行数据均通过步骤S20~S21进行;
S23:2D middle模块向2D latter模块发送写入完成消息,2D latter模块按照步骤S6~S17中2D former模块的数据写入方式进行数据写入;
S24:2D former模块向2D控制模块发送写入完成消息,数据扩充传输过程结束。
2.根据权利要求1所述的多维数据扩充传输的方法,其特征在于,对于2D former模块、2D latter模块、1D former模块和1D latter模块中的任一模块而言,当Pad_num_type中写入的值为1时,2D former模块、2D latter模块、1D former模块或1D latter模块将Pad_num内的内存地址读取出并发送至一load模块,并由load模块将该内存地址中存储的数据读取出并返回给2D former模块、2D latter模块、1D former模块或1D latter模块。
3.根据权利要求1所述的多维数据扩充传输的方法,其特征在于,步骤S13中,当1Dformer模块的Pad_valid=1以及Pad_type=1时,1D former模块将数据集A的首地址a0处的数据读取Pad_length次并向store模块发送Pad_length次写请求,store模块从数据集B的首地址开始进行数据写入。
4.根据权利要求1所述的多维数据扩充传输的方法,其特征在于,步骤S15中,当1Dlatter模块的Pad_valid=1以及Pad_type=1时,1D latter模块将步骤S14步骤中地址指针最后一次指向的数据读取Pad_length次并向store模块发送Pad_length次写请求,store模块从步骤S14最后写入地址的下一个地址开始进行数据写入,此处的Pad_length为1Dlatter模块对应的名称为Pad_length的控制寄存器中写入的数值。
5.一种多维数据扩充传输的装置,其特征在于,该装置用于实施权利要求1所述的方法。
6.一种多维数据扩充传输的系统,其特征在于,该系统用于实施权利要求1所述的方法。
CN201710090184.9A 2017-02-20 2017-02-20 一种多维数据扩充传输的方法、装置以及系统 Active CN106909320B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710090184.9A CN106909320B (zh) 2017-02-20 2017-02-20 一种多维数据扩充传输的方法、装置以及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710090184.9A CN106909320B (zh) 2017-02-20 2017-02-20 一种多维数据扩充传输的方法、装置以及系统

Publications (2)

Publication Number Publication Date
CN106909320A CN106909320A (zh) 2017-06-30
CN106909320B true CN106909320B (zh) 2020-01-21

Family

ID=59208434

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710090184.9A Active CN106909320B (zh) 2017-02-20 2017-02-20 一种多维数据扩充传输的方法、装置以及系统

Country Status (1)

Country Link
CN (1) CN106909320B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108629409B (zh) * 2018-04-28 2020-04-10 中国科学院计算技术研究所 一种基于主成分分析减少io开销的神经网络处理系统
TWI764311B (zh) * 2020-10-08 2022-05-11 大陸商星宸科技股份有限公司 記憶體存取方法及智慧處理裝置
CN114091085B (zh) * 2022-01-10 2022-04-15 北京一流科技有限公司 用于二元操作的数据访问控制系统及其方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1828773A (zh) * 2005-03-04 2006-09-06 中国科学院计算技术研究所 多维数组在动态随机存取存储器上的快速读写方法及装置
CN1971537A (zh) * 2005-11-25 2007-05-30 杭州中天微系统有限公司 一种矩阵数据存取方法及其矩阵数据存储装置
CN103095795A (zh) * 2011-10-28 2013-05-08 三星Sds株式会社 用于传输数据的设备和方法
CN104899182A (zh) * 2015-06-09 2015-09-09 中国人民解放军国防科学技术大学 一种支持可变分块的矩阵乘加速方法
CN105229696A (zh) * 2013-04-15 2016-01-06 微软技术许可有限责任公司 用于多维数据存取的并行存储器
CN106095436A (zh) * 2016-06-12 2016-11-09 浪潮(苏州)金融技术服务有限公司 一种使用多维化技术构建数据组件的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013157068A (ja) * 2012-01-31 2013-08-15 Toshiba Corp データ記憶制御装置、データ記憶装置、及びデータ記憶方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1828773A (zh) * 2005-03-04 2006-09-06 中国科学院计算技术研究所 多维数组在动态随机存取存储器上的快速读写方法及装置
CN1971537A (zh) * 2005-11-25 2007-05-30 杭州中天微系统有限公司 一种矩阵数据存取方法及其矩阵数据存储装置
CN103095795A (zh) * 2011-10-28 2013-05-08 三星Sds株式会社 用于传输数据的设备和方法
CN105229696A (zh) * 2013-04-15 2016-01-06 微软技术许可有限责任公司 用于多维数据存取的并行存储器
CN104899182A (zh) * 2015-06-09 2015-09-09 中国人民解放军国防科学技术大学 一种支持可变分块的矩阵乘加速方法
CN106095436A (zh) * 2016-06-12 2016-11-09 浪潮(苏州)金融技术服务有限公司 一种使用多维化技术构建数据组件的方法

Also Published As

Publication number Publication date
CN106909320A (zh) 2017-06-30

Similar Documents

Publication Publication Date Title
US11321423B2 (en) Operation accelerator
US9367892B2 (en) Processing method and apparatus for single-channel convolution layer, and processing method and apparatus for multi-channel convolution layer
US10831693B1 (en) Multicast master
CN106909320B (zh) 一种多维数据扩充传输的方法、装置以及系统
CN112416433B (zh) 一种数据处理装置、数据处理方法及相关产品
CN111324294B (zh) 存取张量数据的方法和装置
CN109416755B (zh) 人工智能并行处理方法、装置、可读存储介质、及终端
WO2023045445A1 (zh) 数据处理装置、数据处理方法及相关产品
CN112005251B (zh) 运算处理装置
CN114995782B (zh) 数据处理方法、装置、设备和可读存储介质
US11138106B1 (en) Target port with distributed transactions
JP2022508028A (ja) 3次元画像処理におけるデータの読み書き方法とシステム、記憶媒体及び端末
US20220391471A1 (en) Method, circuit, and soc for performing matrix multiplication operation
KR20210014561A (ko) 다수 컨벌루션 윈도우 중의 이미지 데이터를 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체
CN111125628A (zh) 人工智能处理器处理二维数据矩阵的方法和设备
US11874898B2 (en) Streaming-based artificial intelligence convolution processing method and apparatus, readable storage medium and terminal
CN112988621A (zh) 一种张量数据的数据载入装置及方法
CN111143766A (zh) 人工智能处理器处理二维复数矩阵的方法和设备
CN108960203B (zh) 一种基于fpga异构计算的车辆检测方法
CN116051345A (zh) 图像数据处理方法、装置、计算机设备及可读存储介质
US11500632B2 (en) Processor device for executing SIMD instructions
CN116415100A (zh) 业务处理方法、装置、处理器及计算设备
CN114691353A (zh) 一种张量的读取方法、装置以及相关产品
US20230168809A1 (en) Intelligence processor device and method for reducing memory bandwidth
US12073490B2 (en) Processing system that increases the capacity of a very fast memory

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
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Room 135, 1st floor, building 15, Chuangke Town, Wenquan Town, Haidian District, Beijing

Patentee after: Beijing Zhongke Ruixin Technology Group Co.,Ltd.

Address before: 1 wensong Road, Zhongguancun environmental protection park, Beiqing Road, Haidian District, Beijing

Patentee before: SMARTCORE (BEIJING) Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210526

Address after: 100086 No. 1103, 11 / F, block B, building 1, yard 65, Zhichun Road, Haidian District, Beijing

Patentee after: Beijing Zhongke Ruizi Technology Co.,Ltd.

Address before: Room 135, 1st floor, building 15, Chuangke Town, Wenquan Town, Haidian District, Beijing

Patentee before: Beijing Zhongke Ruixin Technology Group Co.,Ltd.

PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A method, device and system for multidimensional data expansion transmission

Effective date of registration: 20210823

Granted publication date: 20200121

Pledgee: Zhongxin Suzhou Industrial Park Venture Capital Co.,Ltd.

Pledgor: Beijing Zhongke Ruizi Technology Co.,Ltd.

Registration number: Y2021990000746

PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20220517

Granted publication date: 20200121

Pledgee: Zhongxin Suzhou Industrial Park Venture Capital Co.,Ltd.

Pledgor: Beijing Zhongke Ruizi Technology Co.,Ltd.

Registration number: Y2021990000746

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230717

Address after: 215125 11-303, creative industrial park, No. 328, Xinghu street, Suzhou Industrial Park, Suzhou City, Jiangsu Province

Patentee after: Suzhou Ruixin integrated circuit technology Co.,Ltd.

Address before: 100086 No. 1103, 11 / F, block B, building 1, yard 65, Zhichun Road, Haidian District, Beijing

Patentee before: Beijing Zhongke Ruizi Technology Co.,Ltd.