CN114692839A - 数据处理装置、数据处理方法及相关产品 - Google Patents

数据处理装置、数据处理方法及相关产品 Download PDF

Info

Publication number
CN114692839A
CN114692839A CN202011563214.1A CN202011563214A CN114692839A CN 114692839 A CN114692839 A CN 114692839A CN 202011563214 A CN202011563214 A CN 202011563214A CN 114692839 A CN114692839 A CN 114692839A
Authority
CN
China
Prior art keywords
data
index
elements
address
fused
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
CN202011563214.1A
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.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp 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 Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN202011563214.1A priority Critical patent/CN114692839A/zh
Publication of CN114692839A publication Critical patent/CN114692839A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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
    • 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)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Neurology (AREA)
  • Image Processing (AREA)

Abstract

本披露公开了一种数据处理装置、数据处理方法及相关产品。该数据处理装置可以实现为计算装置包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本披露的方案提供了数据融合相关操作的专用指令,其可以简化处理,提高机器的处理效率。

Description

数据处理装置、数据处理方法及相关产品
技术领域
本披露一般地涉及数据处理领域。更具体地,本披露涉及数据处理装置、数据处理方法、芯片和板卡。
背景技术
近年来,随着深度学习的迅猛发展,使得计算机视觉、自然语言处理等一系列领域的算法性能都有了跨越式的进展。然而深度学习算法是一种计算密集型和存储密集型的工具,随着信息处理任务的日趋复杂,对算法实时性和准确性要求不断增高,神经网络往往会被设计得越来越深,使得其计算量和存储空间需求越来越大,导致现存的基于深度学习的人工智能技术难以直接应用在硬件资源受限的手机、卫星或嵌入式设备上。
因此,深度神经网络模型的压缩、加速、优化变得格外重要。大量的研究试着在不影响模型精度的前提下,减少神经网络的计算和存储需求,对深度学习技术在嵌入端、移动端的工程化应用具有十分重要的意义。稀疏化正是模型轻量化方法之一。
网络参数稀疏化是通过适当的方法减少较大网络中的冗余成分,以降低网络对计算量和存储空间的需求。现有的硬件和/或指令集不能有效地支持稀疏化处理和/或与稀疏化后相关的处理。
发明内容
为了至少部分地解决背景技术中提到的一个或多个技术问题,本披露的方案提供了一种数据处理装置、数据处理方法、芯片和板卡。
在第一方面中,本披露公开一种数据处理装置,包括:控制电路,其配置用于解析融合指令,所述融合指令指示对多路待融合的数据执行融合处理;存储电路,其配置用于存储融合处理前和/或融合处理后的信息;以及运算电路,其配置用于根据所述融合指令,将所述多路待融合的数据中数据元素按照其对应的索引,归并为一路有序的融合处理后数据,其中具有相同索引的数据元素合并成运算结构体元素,所述数据元素包括标量、向量或更高维数据中任一。
在第二方面中,本披露提供一种芯片,包括前述第一方面任一实施例的数据处理装置。
在第三方面中,本披露提供一种板卡,包括前述第二方面任一实施例的芯片。
在第四方面中,本披露提供一种数据处理方法,包括:解析融合指令,所述融合指令指示对多路待融合的数据执行融合处理;根据所述融合指令,将所述多路待融合的数据中数据元素按照其对应的索引,归并为一路有序的融合处理后数据,其中具有相同索引的数据元素合并成运算结构体元素,所述数据元素包括标量、向量或更高维数据中任一;以及输出所述融合处理后数据。
通过如上所提供的数据处理装置、数据处理方法、芯片和板卡,本披露实施例提供了一种融合指令,用于执行与多路数据的归并排序融合相关的操作。在一些实施例中,融合指令是硬件指令,通过专门的硬件电路来实现数据融合处理。在一些实施例中,该数据处理装置可以根据融合指令,将多路有序的数据按索引顺序合并为一路有序的融合数据,并且索引相同的数据元素可以合并,并以运算结构体的形式表示,从而便于后续的计算处理。在一些实施例中,融合指令中可以包括操作模式位来指示融合指令为归并排序融合处理,或者,融合指令本身可以指示归并排序融合处理操作。在一些实施例中,待融合的数据元素可以是向量或更高维数据。例如,待融合的数据中的数据元素可以是基于雷达的物体检测中的稀疏化后的有效数据元素,从而本披露实施例提供的数据融合指令和融合操作可以支持雷达算法中相关的处理。通过提供专门的融合指令来执行与多路数据的融合处理相关的操作,可以简化处理。进一步地,通过提供专门的数据融合相关操作的硬件实现,可以加速处理,由此提高机器的处理效率。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1是示出本披露实施例的板卡的结构图;
图2是示出本披露实施例的组合处理装置的结构图;
图3是示出本披露实施例的单核或多核计算装置的处理器核的内部结构示意图;
图4是示出根据本披露实施例的数据融合处理的示例性原理图;
图5是示出本披露实施例的数据处理装置的结构示意图;
图6是示出本披露一个实施例的用于数据融合处理的示例性电路图;
图7是示出本披露另一实施例的运算结构体的示例;
图8是示出本披露又一实施例的运算结构体的示例;
图9示例性示出融合指令中的各个地址的指向内容;
图10示出根据本披露实施例的数据存储空间的示意图;
图11示出根据本披露实施例的数据分块在数据存储空间中的示意图;
图12示出根据本披露另一实施例的数据处理装置的结构框图;以及
图13示出根据本披露实施例的数据处理方法的示例性流程图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中可能出现的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本披露的具体实施方式。
图1示出本披露实施例的一种板卡10的结构示意图。如图1所示,板卡10包括芯片101,其是一种系统级芯片(System on Chip,SoC),或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和强大的计算能力。
芯片101通过对外接口装置102与外部设备103相连接。外部设备103例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如PCIe接口等。
板卡10还包括用于存储数据的存储器件104,其包括一个或多个存储单元105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(Micro Controller Unit,MCU)。
图2是示出此实施例的芯片101中的组合处理装置的结构图。如图2中所示,组合处理装置20包括计算装置201、接口装置202、处理装置203和存储装置204。
计算装置201配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。
接口装置202用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。
处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。
存储装置204用以存储待处理的数据,其可以是DRAM,为DDR内存,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。
图3示出了计算装置201为单核或多核装置时处理器核的内部结构示意图。计算装置301用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,计算装置301包括三大模块:控制模块31、运算模块32及存储模块33。
控制模块31用以协调并控制运算模块32和存储模块33的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)311及指令译码单元(instructiondecode unit,IDU)312。取指单元311用以获取来自处理装置203的指令,指令译码单元312则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块32和存储模块33。
运算模块32包括向量运算单元321及矩阵运算单元322。向量运算单元321用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元322负责深度学习算法的核心计算,即矩阵乘及卷积。
存储模块33用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)331、参数存储单元(weight RAM,WRAM)332、直接内存访问模块(direct memory access,DMA)333。NRAM 331用以存储输入神经元、输出神经元和计算后的中间结果;WRAM 332则用以存储深度学习网络的卷积核,即权值;DMA 333通过总线34连接DRAM 204,负责计算装置301与DRAM 204间的数据搬运。
本披露的实施例基于前述硬件环境,提供一种数据处理装置,支持数据融合操作。如背景技术所提到的,网络参数稀疏化可以有效降低网络对计算量和存储空间的需求。但是网络参数稀疏化之后对后续的处理也会带来一系列影响。例如,在稀疏矩阵乘法运算中,可能需要对运算中间得到的向量进行排序累加,以获得预期运算结果。又例如,在雷达算法中,需要对基于雷达的物体检测中稀疏化后的数据进行融合处理。鉴于此,本披露的实施例提供了一种数据融合处理的硬件方案,以简化并加速此类处理。
图4示出根据本披露实施例的数据融合处理的示例性原理。图中示例性示出了4路待融合的数据,每路数据包括6个数据元素。数据元素可以是标量、向量或更高维度的张量。图中数据元素示例性示出为向量,例如D11,D12,…D46。这些向量具有统一的向量长度,例如D11为(d1,d2,d3,…,dn),长度为n。每个数据元素具有关联的索引,用于指示该数据元素在对应的一路数据中的位置信息。例如,原始的一路数据可能包括1000个数据元素,但是仅部分位置上的数据元素是有效的,此时,可以将这些有效元素提取出来形成上述待融合数据,同时提取这些有效元素对应的索引以指示其在原始数据中的位置,这些索引形成上述待融合索引。
图中示意性示出了对应的4路待融合的索引,每路索引对应一路待融合的数据。第1路索引用于标识第1路数据中各数据元素的位置信息,第2路索引用于标识第2路数据中各数据元素的位置信息,以此类推。进一步地,每路索引中的索引元素均有序存储,并与对应的一路数据中的数据元素一一对应。在图中示例中,各路索引中的索引元素均按照第一顺序(例如,从小到大的顺序)排列,每路数据中的数据元素也按照对应索引的顺序有序排列。例如,第1路索引中的第1个索引元素指示第1路数据中的第1个数据元素的索引为0,也即首个元素;第1路索引中的第2个索引元素指示第1路数据中的第2个数据元素的索引为2,也即第3个元素;以此类推。
经过数据融合后,这4路数据按照其对应的索引,归并为一路有序的融合数据,并且具有相同索引的数据元素合并成一个融合数据元素。如图所示,融合后的索引包括16个索引元素,按照第二顺序(例如,从小到大的顺序)排列,其中去除了待融合索引中重复的索引元素,如图中深色方块所示。相应地,融合后的数据也包括16个数据元素,按照对应索引的顺序有序排列,并且具有相同索引的数据元素进行合并,如图中深色方块所示。由于数据元素可能是向量或更高维度的张量,因此在本披露的一些实施例中,至少针对具有相同索引的数据元素的合并,可以采用运算结构体元素的形式来表示。
在此示例中,通过加法算式示意性表示具有相同索引的数据元素的合并。例如,对于融合后索引元素“0”,其对应的融合数据元素为各路数据的首个数据元素之和(D11+D21+D31+D41)。又例如,对于融合后索引元素“9”,其对应的融合数据元素为第1路第5个数据元素与第4路第3个数据元素之和(D15+D43)。当数据元素为向量时,融合数据元素为对应的向量和。融合数据元素的具体表示方式将在后面描述。
本领域技术人员可以理解,上面提到的第一顺序与第二顺序可以相同,也可以不同,并且二者都可以选自以下任一:从小到大的顺序,或从大到小的顺序。本领域技术人员还可以理解,尽管在图中示出各路数据具有相等的数据元素个数,但是各路数据中的数据元素个数可以相同,也可以不同,本披露在此方面没有限制。
图5示出根据本披露实施例的数据处理装置500的结构框图。数据处理装置500例如可以实现在图2的计算装置201中。如图所示,数据处理装置500可以包括控制电路510、存储电路520和运算电路530。
控制电路510的功能可以类似于图3的控制模块31,其例如可以包括取指单元,用以获取来自例如图2的处理装置203的指令,以及指令译码单元,用于将获取的指令进行译码,并将译码结果作为控制信息发送给运算电路530和存储电路520。
在一个实施例中,控制电路510可以配置用于解析融合指令,其中融合指令指示对多路待融合的数据执行融合处理。
存储电路520可以配置用于存储各种信息,这些信息至少包括融合处理前和/或融合处理后的信息。存储电路例如可以是图3的WRAM 332。
运算电路530可以配置用于根据融合指令执行相应的操作。具体地,运算电路530可以将多路待融合的数据中数据元素按照其对应的索引,归并为一路有序的融合处理后数据,其中具有相同索引的数据元素合并为运算结构体元素。数据元素可以是标量、向量或更高维数据中的任一。
在一个实施例中,运算电路530还可以包括运算处理电路(未示出),其可以配置成根据运算指令对运算电路执行运算前的数据进行预处理或者对运算后的数据进行后处理。在一些应用场景中,前述的预处理和后处理可以例如包括数据拆分和/或数据拼接操作。
可以采取多种方式来实施运算电路。图6示出根据本披露一个实施例的用于数据融合处理的示例性电路图。
如图所示,在一个实施例中,存储电路可以示例性划分为两部分:第一存储电路622和第二存储电路624。
第一存储电路622可以配置用于存储待融合的K路数据和这K路数据对应的K路索引,K>1。这K路索引中的索引元素指示K路数据中对应的数据元素的索引信息,也即索引元素与数据元素具有一一对应的关系。此外,这K路索引中每路索引的索引元素均按第一顺序有序排列,并且K路数据中每路数据的数据元素按照对应索引的顺序有序排列。
图中示例性示出了图4所示的4路索引以及对应的4路数据。由于数据元素可能是向量或更高维度的数据,为了简便起见,可以使用这些数据元素的存储地址来代替,图中各个数据元素用符号Pt来标识,代表指向对应的数据元素(例如向量、三维张量等)的存储地址的指针。可以理解,具体的数据元素也会存储在存储电路中,为了清楚起见,图中未示出。在一些实施例中,每路索引可以是连续存储的,例如作为一个向量进行存储,从而可以根据每路索引的起始地址或向量的起始地址来访问该路索引/索引向量。对应地,每路数据也可以是连续存储的,例如作为一个向量进行存储,从而可以根据每路数据的起始地址或向量的起始地址来访问该路数据/数据向量,不过此时,数据向量中的向量元素是指向最终的数据元素的指针。
第二存储电路624可以配置用于存储运算电路输出的融合处理后数据。这些数据包括:对K路索引排序融合后的融合索引、融合数据、以及运算结构体。融合索引中的融合索引元素按第二顺序有序排列,并且融合数据中的融合数据元素与融合索引元素一一对应,按照融合索引的顺序有序排列。运算结构体至少包括用于表示由相同索引的数据元素构成的融合数据元素的运算结构体元素。
从图中示例可以看出,待融合的4路数据变成了一路融合数据,相应的4路索引也变成了一路融合索引,其中融合索引元素按照从小到大的顺序排列,大小相同的索引元素被去除。与之对应的融合数据元素按照融合索引的顺序排列,每个融合数据元素可以是一个地址指针,指向对应的最终数据元素。在一些实施例中,每个最终数据元素的存储空间可以是固定大小的。由此,当这些数据元素连续存储时,可以通过首地址偏移固定量来确定后续的地址。例如,图中示例性示出第1个融合数据元素可以是地址base_addr,不防假设每个最终数据元素占据的地址大小为offset,则第2个融合数据元素可以是地址base_addr+offset,第3个融合数据元素可以是地址base_addr+2*offset,以此类推。
在这些地址指向的最终数据元素中,有些因为其索引在待融合索引中是唯一的,不需要累加,因此是原始数据元素;而有些因为存在多个具有相同索引的原始数据元素,因此需要进行累加。在本披露的实施例中,至少对于由具有相同索引的数据元素构成的融合数据元素,其指向的最终数据元素可以不立即运算获得,而是通过运算结构体中关联的运算结构体元素来表示。后面将结合具体电路详细描述运算结构体的方面。
在一些实施例中,运算电路可以包括排序电路632和输出电路636,以协同实现排序累加融合功能。具体地,排序电路632用于将K路索引按照索引元素的大小排序,并有序输出给输出电路636。输出电路636则可以至少在从排序电路接收到相同的索引元素时,生成表示该相同的索引元素对应的数据元素的累加运算的运算结构体元素,并去除重复的索引元素。
在一些实施例中,排序电路632可以包括比较电路631和缓冲电路633。比较电路631实现比较功能,其对多路待融合的索引中的索引元素的大小进行比较,并提交比较结果给控制电路610以供排序。控制电路610根据比较结果确定索引元素在缓冲电路633中的插入位置。缓冲电路633用于缓存已比较的索引元素以及与其对应的数据元素的信息,并按索引元素的大小顺序缓存。
具体地,比较电路631可以配置用于将待融合索引中的索引元素与缓冲电路633中未输出的索引元素进行比较,并输出比较结果给控制电路610。而缓冲电路633可以配置用于根据控制电路610的控制,有序存储已比较的索引元素以及与其对应的数据元素的信息,以及有序输出已比较的索引元素以及与其对应的数据元素的信息。
在一些实施例中,缓冲电路633可以配置成缓存K个索引元素,这K个索引元素按照大小排序。本领域技术人员可以理解,缓冲电路也可以配置成缓存更多的索引元素,本披露实施例在此方面没有限制。取决于缓冲电路633中的排序方式以及期望输出的排序方式,诸如从小到大,或从大到小,每次可以按照指定顺序输出当前序列中的首个索引元素或末个索引元素。例如,在图中的示例中,缓冲电路633从左到右按照从大到小的顺序缓存索引元素,每次输出最右边的一个索引元素,也即当前序列中最小的索引元素,例如“7”。
在这些实施例中,比较电路631可以包括K-1路比较器,配置用于将待融合的索引元素分别与缓冲电路633中未输出的索引元素进行比较,也即与当前序列输出首个或末个索引元素后剩余的K-1个索引元素进行比较,生成比较结果并输出给控制电路610。
例如,对于待融合的4路数据,图中示出了3路比较器,其将从第一存储电路622接收的指定索引元素(此时为9)与缓冲电路633中当前未输出的3个索引元素进行比较,图中为左边的三个索引元素100、10和9。
在一些实施例中,比较器的比较结果可以使用位图来表示。例如,如果待融合的索引元素(例如,9)大于等于缓冲电路中的索引元素,则比较器可以输出“1”,否则,输出“0”;反过来也可以。在图中的示例中,待融合的索引元素(9)与缓冲电路中的各个索引元素(100、10和9)的比较结果为“001”,输出给控制电路610。
控制电路610可以配置用于根据接收的比较结果,确定该待融合的索引元素在缓冲电路633的当前序列中的插入位置。具体地,控制电路610可以进一步配置用于根据位图中比特位的变化位置,确定插入位置。在图中的示例中,比较结果为“001”,说明当前待融合的索引元素小于缓冲电路中左起第1个和第2个索引元素,大于等于左起第3个索引元素,则插入位置在第2个索引元素与第3个索引元素之间,也即在“10”和“9”之间。
在一些实施例中,缓冲电路633可以配置用于根据控制电路610的指示,在插入位置中插入该待融合的索引元素。在图中示例中,缓冲电路633中插入该索引元素之后的序列变为“100,10,9,9”。
为了使得在融合处理中能够获取到索引对应的数据,在一些实施例中,缓冲电路633可以进一步配置用于:按索引元素的值顺序,有序存储已比较的索引元素以及与其对应的数据元素。如图所示,缓冲电路633除了缓存索引元素,还缓存与其对应的数据元素的信息。因此,每次对索引元素进行比较确定插入位置之后,可以将与该索引元素对应的数据元素信息也一并插入到缓存电路中。由于数据元素可以是标量、向量或更高维的张量,因此,可以使用指向数据元素的地址来代表该数据元素。例如,在图中的示例中,待融合的K路数据中的每个元素是一个地址,分别指向对应的数据元素,而无论该数据元素是标量、向量还是高维张量。在本文的描述中,数据元素可能指代地址,也可能指代最终的标量、向量或高维张量数据,本领域技术人员基于上下文的描述,可以区分其含义。
接着,缓冲电路633可以输出最右端的索引元素“9”。此时,控制电路610可以进一步配置用于根据缓冲电路中输出的索引元素,确定待融合的下一索引元素的访存信息。具体地,控制电路根据输出的索引元素在K路索引中属于哪一路索引,从该路索引中取出下一待融合的索引元素,送到比较电路631进行比较。
进一步地,在有序输出时,缓冲电路633可以配置成按索引元素的值顺序(例如,从小到大),有序输出已比较的索引元素作为融合索引,并同步输出与其对应的数据元素作为融合数据。输出的数据提供给输出电路636做进一步处理。
为了清楚起见,图中还示出了缓冲电路633中随排序进度缓存过的索引序列。如图所示,初始地,K路索引中各路的首个索引元素按照从大到小的顺序存储在缓冲电路633中。在一些实现中,这4个索引元素可以一次性取出、排序并存储在缓冲电路中。在另一些实现中,可以将缓冲电路中的数据初始化为负数,按顺序(例如,按照从第1路到第4路的顺序)逐个取出各路索引的首个索引元素,与缓冲电路中的数据进行比较,并放入合适位置。在此示例中,4路索引的首个索引元素都是0,因此可以根据取数的顺序,按照各路索引的序号排列,例如第1路的“0”放置在最右边,第2路的“0”放置在右边第2位置,以此类推。
接着,缓冲电路中最右边的属于第1路的“0”被输出。根据这个输出的索引元素属于哪一路索引,从对应的该路索引中取出下一待融合的索引元素,也即第1路第2个索引元素“2”。“2”被送入比较电路与缓冲电路中剩余的三个“0”进行比较,比较结果为“111”,也即比缓冲电路中现有的三个数“0”都大,因此“2”被插入在序列最尾端,此时缓冲电路中的序列变为“2,0,0,0”。
接着,缓冲电路中最右边的属于第2路的“0”被输出,因此取出第2路第2个元素“3”与缓冲电路中剩余的“2,0,0”进行比较,比较结果为“111”,因此“3”被插入在序列最尾端,此时缓冲电路中的序列变为“3,2,0,0”。
接着,缓冲电路中最右边的属于第3路的“0”被输出,因此取出第3路第2个元素“100”与缓冲电路中剩余的“2,0,0”进行比较,比较结果为“111”,因此“100”被插入在序列最尾端,此时缓冲电路中的序列变为“100,3,2,0”。
接着,输出缓冲电路最右边的属于第4路的“0”,取出第4路第2个元素“2”与缓冲电路中剩余的“100,3,2”进行比较,比较结果为“001”,因此“2”被插入在序列最右边第1个元素之后,此时缓冲电路中的序列变为“100,3,2,2”。
依次类推,可以逐个将K路索引中的索引元素进行比较,并根据大小排序插入到缓冲电路中的合适位置,再由缓冲电路输出。例如,缓冲电路每次输出的最小索引元素可以按顺序输出给输出电路636。本领域技术人员可以理解,如果缓冲电路的空间足够,也可以在排序完成之后再统一输出归并排序后的元素。
从输出的归并排序后的索引元素可以看出,当存在大小相同的索引元素时,排序电路632仍然保留这些大小相同的索引元素,不会进行去重操作,而是提供给输出电路636进行处理。
在一些实施例中,输出电路636可以包括比较器637、缓冲器635和结构体生成器639。
比较器637可以配置用于将从排序电路632有序输出的索引元素与上一个融合索引元素进行比较并输出比较结果。比较结果可以是“1”指示相同,“0”指示不相同;反之亦然。
缓冲器635可以配置用于根据比较器637的比较结果来控制输出索引元素。在一些实施例中,缓冲器635可以仅当比较结果指示不相同时,输出当前索引元素作为新的融合索引元素。换言之,当比较结果指示相同时,缓冲器635不输出当前索引元素,也即丢弃与上一个融合索引元素重复的索引元素。如图所示,第二存储电路624中的融合索引不存在重复的融合索引元素。
结构体生成器639可以配置用于根据比较器637的比较结果,来控制数据元素的累加,生成相应的运算结构体元素。具体地,至少当比较结果指示相同时,基于索引元素对应的数据元素,生成运算结构体元素,该运算结构体元素表示将当前数据元素累加到上一次融合索引元素对应的融合数据元素的累加运算。
图6的实施例中示出了一种生成运算结构体元素的方式。在此实施例中,除了针对具有相同索引的数据元素融合而成的融合数据元素生成运算结构体元素之外,针对其他融合数据元素也生成运算结构体元素。具体地,在这种实施例中,当比较器637的比较结果指示不相同时,基于当前索引元素对应的数据元素,生成运算结构体元素,其中该运算结构体元素表示将当前数据元素与0相加的累加运算。通过这种方式,可以为所有融合数据元素生成运算结构体元素,从而统一表达方式,简化操作,为后续运算提供灵活处理。
图6中示例性示出了当前实施方式下所生成的运算结构体。如图所示,当输出电路636接收到排序电路632输出的第1个“0”时,由于这是首个元素,因此,比较器637会输出例如“0”以指示与上一融合索引元素(例如初始化为负数)不相同。缓冲器635输出索引“0”作为首个融合索引元素。结构体生成器639基于比较器637的结果,为新的融合数据元素分配地址,例如首个融合数据元素的地址为base_addr。此时,即使认为索引不相同,也为该融合数据元素生成关联的运算结构体元素,只不过是当前数据元素与0相加的累加运算,例如{add_zero,Pt11,base_addr},其中add_zero表示0值的地址,Pt11表示当前数据元素的地址,base_addr表示结果的存放地址,其对应于上面分配的首个融合数据元素的地址。生成的运算结构体元素可以存储在第二存储电路624的运算结构体中。
每个运算结构体元素可以包括三个要素,分别指示两个加数和一个加法结果,例如{src0_addr,src1_addr,dst_addr},其中src0_addr表示第1加数的地址,src1_addr表示第2加数的地址,dst_addr表示加法和的地址。
接着,排序电路632输出第2个“0”,由于上一个融合索引元素为“0”,因此,比较器637会输出例如“1”以指示与上一融合索引元素(“0”)相同。此时,缓冲器635不输出。结构体生成器639基于比较器637的结果,认为没有产生新的融合数据元素,因此不分配地址,也即融合数据中没有新的元素。此时,结构体生成器639还会生成表示数据元素累加的运算结构体元素,其将数据元素累加到上一融合索引元素对应的融合数据元素中,例如{base_addr,Pt21,base_addr},其中base_addr表示上一融合索引元素对应的融合数据元素的地址,也即上一步分配的首个融合数据元素的地址,Pt21表示当前数据元素的地址,base_addr表示结果的存放地址,也即将数据元素累加到上面分配的首个融合数据元素上。生成的运算结构体元素同样存储在第二存储电路624的运算结构体中。
当排序电路632继续输出第3个、第4个“0”时,融合索引不会增加,相应的融合数据中的融合数据元素也不会增加,结构体生成器会输出关联的结构体运算元素:{base_addr,Pt31,base_addr},{base_addr,Pt41,base_addr}。
接着,排序电路632会输出第1个“2”,参考前面步骤,此时缓冲器635输出索引“2”作为第2个融合索引元素。结构体生成器639基于比较器637的结果,为新的融合数据元素分配地址,例如在首个融合数据元素的地址基础上加上偏移量offset。该偏移量为对应的最终数据元素(例如标量、向量或高维张量)的存储地址大小。此时,为该新的融合数据元素生成关联的运算结构体元素,例如{add_zero,Pt12,base_addr+offset}。生成的运算结构体元素存储在第二存储电路624的运算结构体中。
当排序电路632输出第2个“2”时,融合索引不会增加,相应的融合数据中的融合数据元素也不会增加,结构体生成器会输出关联的结构体运算元素:{base_addr+offset,Pt42,base_addr+offset}。
依照上述描述,本领域技术人员可以类似地推导出其他融合结果,此处不再一一描述。
图7示出了根据另一实施例生成的运算结构体元素的示例。在此实施例中,对于在待融合数据中索引不存在重复的数据元素,可以不生成运算结构体元素,从而避免冗余计算。
具体的,当比较器637指示当前输出的索引元素与上一融合索引元素相同时,可以生成表示将当前对应的数据元素累加到上一融合索引元素对应的融合数据元素上的运算结构体元素。而当比较器637指示当前输出的索引元素与上一融合索引元素不相同时,可以直接输出当前索引元素作为新的融合索引元素,并且直接为新的融合数据元素分配地址,该地址处存放对应的原始数据元素。
下面结合图6的数据示例描述图7中运算结构体元素的生成过程。如图所示,当输出电路636接收到排序电路632输出的第1个“0”时,由于这是首个元素,因此,比较器637会输出例如“0”以指示与上一融合索引元素(例如初始化为负数)不相同。缓冲器635输出索引“0”作为首个融合索引元素。结构体生成器639基于比较器637的结果,为新的融合数据元素分配地址,例如首个融合数据元素的地址为base_addr。此时,由于索引不相同,因此不需要累加,可以直接将该索引元素对应的原始数据元素挪到所分配的地址base_addr处。这种方式可以确保融合数据的地址是连续的,能够为后续的访问提供便利。
接着,排序电路632输出第2个“0”,由于上一个融合索引元素为“0”,因此,比较器637会输出例如“1”以指示与上一融合索引元素(“0”)相同。此时,缓冲器635不输出。结构体生成器639基于比较器637的结果,认为没有产生新的融合数据元素,因此不分配地址,也即融合数据中没有新的元素。此时,结构体生成器639会生成表示数据元素累加的运算结构体元素,其将数据元素累加到上一融合索引元素对应的融合数据元素中,例如{base_addr,Pt21,base_addr},其中base_addr表示上一融合索引元素对应的融合数据元素的地址,也即上一步分配的首个融合数据元素的地址,请注意,此时base_addr在上一步中已经放入了Pt11所指向的数据元素。Pt21表示当前数据元素的地址,base_addr表示结果的存放地址,也即将数据元素累加到上面分配的首个融合数据元素上。生成的运算结构体元素存储在第二存储电路的运算结构体中。
当排序电路632继续输出第3个、第4个“0”时,融合索引不会增加,相应的融合数据中的融合数据元素也不会增加,结构体生成器会输出关联的结构体运算元素:{base_addr,Pt31,base_addr},{base_addr,Pt41,base_addr}。
接着,排序电路632会输出第1个“2”,参考前面步骤,此时缓冲器635输出索引“2”作为第2个融合索引元素。结构体生成器639基于比较器637的结果,为新的融合数据元素分配地址,例如在首个融合数据元素的地址基础上加上偏移量offset。该偏移量为对应的最终数据元素(例如标量、向量或高维张量)的存储地址大小。此时,由于索引不相同,因此不需要累加,可以直接将该索引元素对应的原始数据元素(也即Pt12指向的数据元素)挪到所分配的地址base_addr+offset处。
当排序电路632输出第2个“2”时,融合索引不会增加,相应的融合数据中的融合数据元素也不会增加,结构体生成器会输出关联的结构体运算元素:{base_addr+offset,Pt42,base_addr+offset}。
依照上述描述,本领域技术人员可以类似地推导出其他融合结果,例如对于融合索引“3”和“5”,不存在索引相同的情况,因此,只需要执行数据搬运,而无需生成运算结构体元素。
图7的实施例通过在融合过程中执行数据搬运,确保了融合数据中融合数据元素的地址是连续的,并且对于无需累加的数据元素,不需要运算结构体元素来表示,节省了后续可能的运算量。
图8示出了根据又一实施例生成的运算结构体元素的示例。与图7的实施例类似地,在此实施例中,对于在待融合数据中索引不存在重复的数据元素,可以不生成运算结构体元素,从而避免冗余计算。
具体的,当比较器637指示当前输出的索引元素与上一融合索引元素相同时,可以生成表示将当前对应的数据元素累加到上一融合索引元素对应的融合数据元素上的运算结构体元素。而当比较器637指示当前输出的索引元素与上一融合索引元素不相同时,可以直接输出当前索引元素作为新的融合索引元素,并且保留对应的数据元素的地址,也即融合数据元素与融合前数据元素相同,都指向相同的地址。
下面结合图6的数据示例描述图8中运算结构体元素的生成过程。如图所示,当输出电路636接收到排序电路632输出的第1个“0”时,由于这是首个元素,因此,比较器637会输出例如“0”以指示与上一融合索引元素(例如初始化为负数)不相同。缓冲器635输出索引“0”作为首个融合索引元素。结构体生成器639基于比较器637的结果,将当前索引元素对应的数据元素作为新的融合数据元素,例如此时为Pt11。此时,由于索引不相同,因此不需要累加。
接着,排序电路632输出第2个“0”,由于上一个融合索引元素为“0”,因此,比较器637会输出例如“1”以指示与上一融合索引元素(“0”)相同。此时,缓冲器635不输出。结构体生成器639基于比较器637的结果,认为没有产生新的融合数据元素,因此对于融合数据元素不做任何操作,仅生成表示数据元素累加的运算结构体元素,其将数据元素累加到上一融合索引元素对应的融合数据元素中,例如{Pt11,Pt21,Pt11},其中Pt11表示上一融合索引元素对应的融合数据元素的地址。Pt21表示当前数据元素的地址,累加结果仍然放在该融合数据元素的初始地址中,也即Pt11。生成的运算结构体元素存储在第二存储电路的运算结构体中。
当排序电路632继续输出第3个、第4个“0”时,融合索引不会增加,相应的融合数据中的融合数据元素也不会增加,结构体生成器会输出关联的结构体运算元素:{Pt11,Pt31,Pt11},{Pt11,Pt41,Pt11}。
接着,排序电路632会输出第1个“2”,参考前面步骤,此时缓冲器635输出索引“2”作为第2个融合索引元素。结构体生成器639基于比较器637的结果,将当前索引元素对应的数据元素作为新的融合数据元素,例如此时为Pt12。此时,由于索引不相同,因此不需要累加。
当排序电路632输出第2个“2”时,融合索引不会增加,相应的融合数据中的融合数据元素也不会增加,结构体生成器会输出关联的结构体运算元素:{Pt12,Pt42,Pt12}。
依照上述描述,本领域技术人员可以类似地推导出其他融合结果,例如对于融合索引“3”和“5”,不存在索引相同的情况,因此,只需要将对应的数据元素作为新的融合数据元素即可,例如Pt22和Pt13,而无需生成运算结构体元素。
图8的实施例相比于图7减少了融合过程中的数据搬运,代价是融合数据中融合数据元素的地址是不连续的。此外,对于无需累加的数据元素,不需要运算结构体元素来表示,节省了后续可能的运算量。
本领域技术人员可以理解,还可以设计其他形式的硬件电路来实现上述归并排序融合处理,本披露在此方面没有限制。
在本披露实施例中,可以通过调用融合指令来利用上述示例性硬件电路实施数据的归并排序融合处理。此时,融合指令的操作对象包括输入的待融合的K路数据、K路数据对应的K路索引、K路数据的尺寸、以及输出的一路融合索引、一路融合数据和关联的运算结构体,K>1。在这些对象中,K路索引中的索引元素指示K路数据中对应的数据元素的索引信息;K路索引中每路索引的索引元素均按第一顺序有序排列;K路数据中每路数据的数据元素按照对应索引的顺序有序排列;融合索引中的融合索引元素按第二顺序有序排列;融合数据中的融合数据元素与融合索引元素一一对应;并且至少由相同索引的数据元素构成的融合数据元素通过运算结构体中关联的运算结构体元素来表示。
在一些实施例中,融合指令的操作对象还可以包括输出的融合索引元素总个数,用于指示输出的一路融合索引中的索引元素个数。可以理解,由于融合数据与融合索引具有一一对应的关系,因此,此操作对象同样也只是输出的一路融合数据中的数据元素个数。
在一些实施例中,融合指令的操作对象还可以包括输出的运算结构体元素总个数,用于指示运算结构体中的运算结构体元素总个数。
如前面所提到的,第一顺序与第二顺序可以相同也可以不同,并且第一顺序和第二顺序可以选自以下任一:从小到大的顺序,或从大到小的顺序。
在一些实施例中,融合指令的至少一个操作对象可以使用地址来表征。
图9示例性示出了融合指令中的各个地址的指向内容。
例如,输入的K路数据可以通过第一地址来指示,第一地址包括K个元素,其中第i个元素表示第i路数据的地址,并且第i路数据中每个数据元素也是一个地址,指向预定长度的向量,其中0<i≤K。
在一些实施例中,第一地址可以标记为data_addr。该地址中元素个数为K个,即表示K路数据的融合操作。data_addr是一个三级指针,其中K个元素表示待融合的K路数据(例如,向量)的起始地址。进一步地,该K路数据(向量)中的每一个元素也是一个地址,指向一个大小例如为offset的向量。
输入的K路索引可以通过第二地址来指示,第二地址包括K个元素,其中第i个元素表示第i路数据关联的第i路索引的地址,其中0<i≤K。
如前面所提到的,待融合的K路数据可以具有一一对应的K路索引,因此第二地址可以标记为index_addr。该地址中元素个数为K个,即表示基于该K路索引进行融合。同样地,index_addr是一个二级指针,其中K个元素表示待融合的K路索引(例如,向量)的起始地址。
输入的K路数据的尺寸可以通过第三地址来指示。第三地址是一个一级指针,可以标记为size_addr,其同样包括K个元素,第i个元素表示第i路数据中数据元素的个数,其中0<i≤K。由于K路数据与K路索引具有一一对应关系,因此,size_addr中的第i个元素也表示第i路索引中的索引元素个数。
在一些实施例中,输入的K路索引中的索引元素按照例如从小到大的顺序有序排列,最后输出的一路融合索引元素也可以按照从小到大有序排列。在本披露的归并排序融合处理中,当有重复的索引时,会对索引去重,并且将对应的数据元素融合为若干运算结构体元素,以作为一个融合数据元素。
输出的一路融合数据可以存放在第四地址中,也即在融合指令中通过第四地址来指示。第四地址可以标记为out_data_addr,也即输出的一路融合数据的地址。第四地址是一个二级指针,其包括L个元素,其中第j个元素表示这一路融合数据中的第j个融合数据元素,每个融合数据元素是一个地址,其指向预定长度(例如,offset)的向量,L表示融合的数据元素总个数,L>1,0<j≤L。
输出的一路融合索引可以存放在第五地址中,也即在融合指令中通过第五地址来指示。第五地址可以标记为out_index_addr,也即输出的一路融合索引的地址。第五地址是一个一级指针,其包括L个元素,其中第j个元素表示这一路融合索引中的第j个融合索引元素,L表示融合的索引元素总个数,L>1,0<j≤L。输出的融合数据与输出的融合索引也具有一一对应的关系。
输出的运算结构体可以存放在第六地址中,也即在融合指令中通过第六地址来指示。第六地址可以标记为op_addr,也即输出的一路运算结构体的地址。在一些实施例中,第六地址是一个一级指针,其包括M个元素,其中每个元素是一个运算结构体元素。
每个运算结构体元素包括三个子元素,每个子元素是一个地址,分别为两个加数的地址和一个加法结果的地址。在一些实施例中,一个运算结构体元素可以包括三个32比特的元素,用于表示三个地址。
可选地或附加地,在一些实施例中,融合指令的操作对象还可以包括输出的融合数据元素总个数。例如在融合处理结束后,会返回输出的融合数据元素的总个数,用于指示输出的这一路融合数据中的数据元素个数,也即上面的L值。该数据例如可以写回到参数gpr_id0中。
可选地或附加地,在一些实施例中,融合指令的操作对象还可以包括输出的运算结构体元素总个数。例如在融合处理结束后,会返回输出的运算结构体元素的总个数,用于指示输出的这一路运算结构体中的运算结构体元素个数,也即上面的M值。该数据例如可以写回到参数gpr_id1中。
随着人工智能技术的发展,在诸如图像处理和模式识别等的任务中,面向的操作数往往是多维向量(即,张量数据)的数据类型,仅仅使用标量或向量操作无法使硬件高效地完成运算任务。因此,在本披露的一些实施例中,还提供了涉及张量数据的融合指令。该融合指令的至少一个操作对象包括张量数据,该张量数据通过至少一个描述符来指示。具体地,描述符可以指示以下至少一项信息:张量数据的形状信息、张量数据的空间信息。张量数据的形状信息可以用于确定与该操作数对应的张量数据在数据存储空间中的数据地址。张量数据的空间信息可以用于确定指令之间的依赖关系,进而可以确定例如指令的执行顺序。
在一种可能的实现中,张量数据的空间信息可以通过空间标识(ID)来指示。空间ID也可以称为空间别名,其指代用于存储对应的张量数据的一个空间区域,该空间区域可以是一段连续的空间,也可以是多段空间,本披露对于空间区域的具体组成形式没有限制。不同的空间ID表示所指向的空间区域不存在依赖关系。
下面将结合附图详细描述张量数据的形状信息的各种可能实现方式。
张量可以包含多种形式的数据组成方式。张量可以是不同维度的,比如标量可以看作是0维张量,向量可以看作1维张量,而矩阵可以是2维或2维以上的张量。张量的形状包括张量的维度、张量各个维度的尺寸等信息。举例而言,对于三维张量:
x3=[[[1,2,3],[4,5,6]];[[7,8,9],[10,11,12]]]
该张量的形状或维度可以表示为X3=(2,2,3),也即通过三个参数表示该张量为三维张量,且该张量的第一维度的尺寸为2、第二维度的尺寸为2、而第三维度的尺寸为3。在存储器中存储张量数据时,根据其数据地址(或存储区域)无法确定张量数据的形状,进而也无法确定多个张量数据之间相互关系等相关信息,导致处理器对张量数据的存取效率较低。
在一种可能的实现方式中,可以用描述符指示N维的张量数据的形状,N为正整数,例如N=1、2或3,或者为零。上面示例中的三维张量用描述符可以表示为(2,2,3)。需要说明的是,本披露对于描述符指示张量形状的方式没有限制。
在一种可能的实现方式中,N的取值可以根据张量数据的维数(也称为阶数)来确定,也可以根据张量数据的使用需要进行设定。例如,在N的取值为3时,张量数据为三维的张量数据,描述符可用来指示该三维的张量数据在三个维度方向上的形状(例如偏移量、尺寸等)。应当理解,本领域技术人员可以根据实际需要对N的取值进行设置,本披露对此不作限制。
虽然张量数据可以是多维的,但是因为存储器的布局始终是一维的,因此张量与存储器上的存储之间存在对应关系。张量数据通常被分配在连续的存储空间中,也即可以将张量数据进行一维展开(例如,行优先方式),存储在存储器上。
张量与底层存储之间的这种关系可以通过维度的偏移量(offset)、维度的尺寸(size)、维度的步长(stride)等来表示。维度的偏移量是指在该维度上相对参考位置的偏移。维度的尺寸是指该维度的大小,也即该维度上元素的个数。维度的步长指的是在该维度下,相邻元素之间的间隔,例如上面三维张量的步长为(6,3,1),也即第一维的步长是6,第二维的步长是3,第三维的步长是1。
图10示出根据本披露实施例的数据存储空间的示意图。如图10所示,数据存储空间101采用行优先的方式存储了一个二维数据,可通过(x,y)来表示(其中,X轴水平向右,Y轴垂直向下)。X轴方向上的尺寸(每行的尺寸,或总列数)为ori_x(图中未示出),Y轴方向上的尺寸(总行数)为ori_y(图中未示出),数据存储空间101的起始地址PA_start(基准地址)为第一个数据块102的物理地址。数据块103是数据存储空间101中的部分数据,其在X轴方向上的偏移量105表示为offset_x,在Y轴方向上的偏移量104表示为offset_y,在X轴方向上的尺寸表示为size_x,在Y轴方向上的尺寸表示为size_y。
在一种可能的实现方式中,使用描述符来定义数据块103时,描述符的数据基准点可以使用数据存储空间101的第一个数据块,可以约定描述符的基准地址为数据存储空间101的起始地址PA_start。然后可以结合数据存储空间101在X轴的尺寸ori_x、在Y轴上的尺寸ori_y,以及数据块103在Y轴方向的偏移量offset_y、X轴方向上的偏移量offset_x、X轴方向上的尺寸size_x以及Y轴方向上的尺寸size_y来确定数据块103的描述符的内容。
在一种可能的实现方式中,可以使用下述公式(1)来表示描述符的内容:
Figure BDA0002860962660000231
应当理解,虽然上述示例中,描述符的内容表示的是二维空间,但本领域技术人员可以根据实际情况对描述符的内容表示的具体维度进行设置,本披露对此不作限制。
在一种可能的实现方式中,可以约定描述符的数据基准点在数据存储空间中的基准地址,在基准地址的基础上,根据处于N个维度方向的对角位置的至少两个顶点相对于数据基准点的位置,确定张量数据的描述符的内容。
举例来说,可以约定描述符的数据基准点在数据存储空间中的基准地址PA_base。例如,可以在数据存储空间81中选取一个数据(例如,位置为(2,2)的数据)作为数据基准点,将该数据在数据存储空间中的物理地址作为基准地址PA_base。可以根据对角位置的两个顶点相对于数据基准点的位置,确定出图10中数据块103的描述符的内容。首先,确定数据块103的对角位置的至少两个顶点相对于数据基准点的位置,例如,使用左上至右下方向的对角位置顶点相对于数据基准点的位置,其中,左上角顶点的相对位置为(x_min,y_min),右下角顶点的相对位置为(x_max,y_max),然后可以根据基准地址PA_base、左上角顶点的相对位置(x_min,y_min)以及右下角顶点的相对位置(x_max,y_max)确定出数据块103的描述符的内容。
在一种可能的实现方式中,可以使用下述公式(2)来表示描述符的内容(基准地址为PA_base):
Figure BDA0002860962660000241
应当理解,虽然上述示例中使用左上角和右下角两个对角位置的顶点来确定描述符的内容,但本领域技术人员可以根据实际需要对对角位置的至少两个顶点的具体顶点进行设置,本披露对此不作限制。
在一种可能的实现方式中,可根据描述符的数据基准点在数据存储空间中的基准地址,以及描述符所指示的张量数据的数据描述位置与数据地址之间的映射关系,确定张量数据的描述符的内容。其中,数据描述位置与数据地址之间的映射关系可以根据实际需要进行设定,例如,描述符所指示的张量数据为三维空间数据时,可以使用函数f(x,y,z)来定义数据描述位置与数据地址之间的映射关系。
在一种可能的实现方式中,可以使用下述公式(3)来表示描述符的内容:
Figure BDA0002860962660000242
在一种可能的实现方式中,描述符还用于指示N维的张量数据的地址,其中,描述符的内容还包括表示张量数据的地址的至少一个地址参数,例如描述符的内容可以是下式(4):
Figure BDA0002860962660000243
其中PA为地址参数。地址参数可以是逻辑地址,也可以是物理地址。在对描述符进行解析时可以以PA为向量形状的顶点、中间点或预设点中的任意一个,结合X方向和Y方向的形状参数得到对应的数据地址。
在一种可能的实现方式中,张量数据的地址参数包括描述符的数据基准点在该张量数据的数据存储空间中的基准地址,基准地址包括该数据存储空间的起始地址。
在一种可能的实现方式中,描述符还可以包括表示张量数据的地址的至少一个地址参数,例如描述符的内容可以是下式(5):
Figure BDA0002860962660000251
其中PA_start为基准地址参数,不再赘述。
应当理解,本领域技术人员可以根据实际情况对数据描述位置与数据地址之间的映射关系进行设定,本披露对此不作限制。
在一种可能的实现方式中,可以在一个任务中设定约定的基准地址,此任务下指令中的描述符均使用此基准地址,描述符内容中可以包括基于此基准地址的形状参数。可以通过设定此任务的环境参数的方式确定此基准地址。基准地址的相关描述和使用方式可参见上述实施例。此种实现方式下,描述符的内容可以更快速地被映射为数据地址。
在一种可能的实现方式中,可以在各描述符的内容中包含基准地址,则各描述符的基准地址可不同。相对于利用环境参数设定共同的基准地址的方式,此种方式中的各描述符可以更加灵活地描述数据,并使用更大的数据地址空间。
在一种可能的实现方式中,可根据描述符的内容,确定与处理指令的操作数对应的数据在数据存储空间中的数据地址。其中,数据地址的计算由硬件自动完成,且描述符的内容的表示方式不同时,数据地址的计算方法也会不同。本披露对数据地址的具体计算方法不作限制。
例如,操作数中描述符的内容是使用公式(1)表示的,描述符所指示的张量数据在数据存储空间中的偏移量分别为offset_x和offset_y,尺寸为size_x*size_y,那么,该描述符所指示的张量数据在数据存储空间中的起始数据地址PA1(x,y)可以使用下述公式(6)来确定:
PA1(x,y)=PA_start+(offset_y-1)*ori_x+offset_x (6)
根据上述公式(6)确定的数据起始地址PA1(x,y),结合偏移量offset_x和offset_y,以及存储区域的尺寸size_x和size_y,可确定出描述符所指示的张量数据在数据存储空间中的存储区域。
在一种可能的实现方式中,当操作数还包括针对描述符的数据描述位置时,可根据描述符的内容以及数据描述位置,确定操作数对应的数据在数据存储空间中的数据地址。通过这种方式,可以对描述符所指示的张量数据中的部分数据(例如一个或多个数据)进行处理。
例如,操作数中描述符的内容是使用公式(2)表示的,描述符所指示的张量数据在数据存储空间中偏移量分别为offset_x和offset_y,尺寸为size_x*size_y,操作数中包括的针对描述符的数据描述位置为(xq,yq),那么,该描述符所指示的张量数据在数据存储空间中的数据地址PA2(x,y)可以使用下述公式(7)来确定:
PA2(x,y)=PA_start+(offset_y+yq-1)*ori_x+(offset_x+xq) (7)
在一种可能的实现方式中,描述符可以指示分块的数据。数据分块在很多应用中可以有效地加快运算速度,提高处理效率。例如,在图形处理中,卷积运算经常使用数据分块进行快速运算处理。
图11示出根据本披露实施例的数据分块在数据存储空间中的示意图。如图11所示,数据存储空间1100同样采用行优先的方式存储二维数据,可通过(x,y)来表示(其中,X轴水平向右,Y轴垂直向下)。X轴方向上的尺寸(每行的尺寸,或总列数)为ori_x(图中未示出),Y轴方向上的尺寸(总行数)为ori_y(图中未示出)。不同于图10的张量数据,图11中存储的张量数据包括多个数据分块。
在这种情况下,描述符需要更多的参数来表示这些数据分块。以X轴(X维度)为例,可以涉及如下参数:ori_x,x.tile.size(分块中的尺寸1102),x.tile.stride(分块中的步长1104,即第一个小块的第一个点与第二个小块的第一个点的距离),x.tile.num(分块数量,图中示出为3个分块),x.stride(整体的步长,即第一行的第一个点到第二行第一个点的距离)等。其他维度可以类似地包括对应的参数。
在一种可能的实现方式中,描述符可以包括描述符的标识和/或描述符的内容。其中,描述符的标识用于对描述符进行区分,例如描述符的标识可以为其编号;描述符的内容可以包括表示张量数据的形状的至少一个形状参数。例如,张量数据为3维数据,在该张量数据的三个维度中,其中两个维度的形状参数固定不变,其描述符的内容可包括表示该张量数据的另一个维度的形状参数。
在一种可能的实现方式中,描述符的标识和/或内容可以存储在描述符存储空间(内部存储器),例如寄存器、片上的SRAM或其他介质缓存等。描述符所指示的张量数据可以存储在数据存储空间(内部存储器或外部存储器),例如片上缓存或片下存储器等。本披露对描述符存储空间及数据存储空间的具体位置不作限制。
在一种可能的实现方式中,描述符的标识、内容以及描述符所指示的张量数据可以存储在内部存储器的同一块区域,例如,可使用片上缓存的一块连续区域来存储描述符的相关内容,其地址为ADDR0-ADDR1023。其中,可将地址ADDR0-ADDR63作为描述符存储空间,存储描述符的标识和内容,地址ADDR64-ADDR1023作为数据存储空间,存储描述符所指示的张量数据。在描述符存储空间中,可用地址ADDR0-ADDR31存储描述符的标识,地址ADDR32-ADDR63存储描述符的内容。应当理解,地址ADDR并不限于1位或一个字节,此处用来表示一个地址,是一个地址单位。本领域技术人员可以实际情况确定描述符存储空间、数据存储空间以及其具体地址,本披露对此不作限制。
在一种可能的实现方式中,描述符的标识、内容以及描述符所指示的张量数据可以存储在内部存储器的不同区域。例如,可以将寄存器作为描述符存储空间,在寄存器中存储描述符的标识及内容,将片上缓存作为数据存储空间,存储描述符所指示的张量数据。
在一种可能的实现方式中,在使用寄存器存储描述符的标识和内容时,可以使用寄存器的编号来表示描述符的标识。例如,寄存器的编号为0时,其存储的描述符的标识设置为0。当寄存器中的描述符有效时,可根据描述符所指示的张量数据的大小在缓存空间中分配一块区域用于存储该张量数据。
在一种可能的实现方式中,描述符的标识及内容可存储在内部存储器,描述符所指示的张量数据可存储在外部存储器。例如,可以采用在片上存储描述符的标识及内容、在片下存储描述符所指示的张量数据的方式。
在一种可能的实现方式中,与各描述符对应的数据存储空间的数据地址可以是固定地址。例如,可以为张量数据划分单独的数据存储空间,每个张量数据在数据存储空间的起始地址与描述符一一对应。在这种情况下,负责对计算指令进行解析的电路或模块(例如本披露计算装置外部的实体)可以根据描述符来确定与操作数对应的数据在数据存储空间中的数据地址。
在一种可能的实现方式中,在与描述符对应的数据存储空间的数据地址为可变地址时,描述符还可用于指示N维的张量数据的地址,其中,描述符的内容还可包括表示张量数据的地址的至少一个地址参数。例如,张量数据为3维数据,在描述符指向该张量数据的地址时,描述符的内容可包括表示该张量数据的地址的一个地址参数,例如张量数据的起始物理地址,也可以包括该张量数据的地址的多个地址参数,例如张量数据的起始地址+地址偏移量,或张量数据基于各维度的地址参数。本领域技术人员可以根据实际需要对地址参数进行设置,本披露对此不作限制。
在一种可能的实现方式中,张量数据的地址参数可以包括描述符的数据基准点在该张量数据的数据存储空间中的基准地址。其中,基准地址可根据数据基准点的变化而不同。本披露对数据基准点的选取不作限制。
在一种可能的实现方式中,基准地址可以包括数据存储空间的起始地址。在描述符的数据基准点是数据存储空间的第一个数据块时,描述符的基准地址即为数据存储空间的起始地址。在描述符的数据基准点是数据存储空间中第一个数据块以外的其他数据时,描述符的基准地址即为该数据块在数据存储空间中的地址。
在一种可能的实现方式中,张量数据的形状参数包括以下至少一种:数据存储空间在N个维度方向的至少一个方向上的尺寸、该存储区域在N个维度方向的至少一个方向上的尺寸、该存储区域在N个维度方向的至少一个方向上的偏移量、处于N个维度方向的对角位置的至少两个顶点相对于数据基准点的位置、描述符所指示的张量数据的数据描述位置与数据地址之间的映射关系。其中,数据描述位置是描述符所指示的张量数据中的点或区域的映射位置,例如,张量数据为3维数据时,描述符可使用三维空间坐标(x,y,z)来表示该张量数据的形状,该张量数据的数据描述位置可以是使用三维空间坐标(x,y,z)表示的、该张量数据映射在三维空间中的点或区域的位置。
应当理解,本领域技术人员可以根据实际情况选择表示张量数据的形状参数,本披露对此不作限制。通过在数据存取过程中使用描述符,可建立数据之间的关联,从而降低数据存取的复杂度,提高指令处理效率。
图12示出根据本披露另一实施例的数据处理装置1200的结构框图。数据处理装置1200例如可以实现在图2的计算装置201中。图12的数据处理装置1200与图5的不同之处在,图12的数据处理装置1200还包括张量接口电路1212,用于实现与张量数据的描述符相关的功能。类似地,数据处理装置1200还可以包括控制电路1210、存储电路1220和运算电路1230,这些电路的具体功能和实现与图5的那些类似,因此此处不再复述。
张量接口电路(Tensor interface Unit,TIU)1212可以配置成在控制电路1210的控制下,实现与描述符相关联的操作。这些操作可以包括但不限于描述符的注册、修改、注销、解析;对描述符内容的读写等。本披露对张量接口单元的具体硬件类型不作限制。通过这种方式,可以通过专用的硬件实现与描述符相关联的操作,进一步提高张量数据的存取效率。
在一些实施例中,张量接口电路1212可以配置成对指令的操作数中包括的张量数据的形状信息进行解析,以确定与该操作数对应的数据在数据存储空间中的数据地址。
可选地或附加地,在又一些实施例中,张量接口电路1212可以配置成对两条指令的操作数中包括的张量数据的空间信息(例如,空间ID)进行比较,以判断这两条指令的依赖关系,进而确定指令的乱序执行、同步等操作。
尽管在图12中将控制电路1210和张量接口电路1212示出为两个分离的模块,但是本领域技术人员可以理解,这两个电路也可以实现为一个模块或更多模块,本披露在此方面没有限制。
与数据融合相关的操作可以存在多种,例如归并排序处理、排序累加、排序融合处理等。可以设计多种指令方案来实现与数据融合相关的操作。
在一种方案中,可以设计一条融合指令,指令中可以包括操作模式位来指示融合指令的不同操作模式,从而执行不同的操作。
在另一种方案中,可以设计多条融合指令,每条指令对应一种或多种不同的操作模式,从而执行不同的操作。在一种实现中,可以针对每种操作模式设计一条对应的融合指令。在另一种实现中,可以根据操作模式的特性分类,针对每类操作模式设计一条融合指令。进一步地,当某一类操作模式中包括多个操作模式时,可以在融合指令中包括操作模式位来指示相应的操作模式。
无论采取哪种方案,融合指令可以通过操作模式位和/或指令本身来指示其对应的操作模式。
在本披露的上下文中,前述的融合指令可以是在一条或多条多级运算流水线内部运行的微指令或控制信号,其可以包括(或者说指示)一个或多个需多级运算流水线执行的运算操作。根据不同的运算操作场景,运算操作可以包括但不限于卷积操作、矩阵乘法操作等算术运算、与操作、异或操作、或操作等逻辑运算、移位操作,或者前述各类运算操作的任意多种组合。
图13示出了根据本披露实施例的数据处理方法1300的示例性流程图。
如图13所示,在步骤1310中,解析融合指令,该融合指令指示对多路待融合的数据执行融合处理。该步骤例如可以由图5的控制电路510或图12的控制电路1210来执行。接着,在步骤1320中,根据融合指令,将多路待融合的数据中数据元素按照其对应的索引,归并为一路有序的融合处理后数据,其中具有相同索引的数据元素合并成运算结构体元素,其中数据元素可以包括标量、向量或更高维数据中任一。最后,在步骤1330中,输出融合处理后数据。步骤1320和1330例如可以由图5的运算电路530或图12的运算电路1230来执行。
本领域技术人员可以理解,上述方法的各个步骤分别对应于前面结合示例电路图描述的各个电路,因此前面描述的特征可以同样地适用于方法步骤,在此不再重复。
从上面描述可知,本披露实施例提供了一种融合指令,用于执行多路待融合数据的融合处理。在一些实施例中,融合指令是硬件指令,通过专门的硬件电路来实现数据融合处理,可以加快处理速度,从而更好地支持与稀疏化后的处理相关的操作,例如支持雷达算法中的运算。在一些实施例中,融合指令可以将多路有序的数据合并为一路有序的融合数据,并且索引相同的数据可以合并,并以运算结构体的形式表示,从而便于后续的计算处理。在一些实施例中,融合指令中可以包括操作模式位来指示融合指令为归并排序融合处理操作,或者,融合指令本身可以指示归并排序融合处理操作。通过提供专门的融合指令来执行与多路数据的融合处理相关的操作,可以简化处理。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如中央处理器、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
依据以下条款可更好地理解前述内容:
条款1、一种数据处理装置,包括:
控制电路,其配置用于解析融合指令,所述融合指令指示对多路待融合的数据执行融合处理;
存储电路,其配置用于存储融合处理前和/或融合处理后的信息;以及
运算电路,其配置用于根据所述融合指令,将所述多路待融合的数据中数据元素按照其对应的索引,归并为一路有序的融合处理后数据,其中具有相同索引的数据元素合并成运算结构体元素,所述数据元素包括标量、向量或更高维数据中任一。
条款2、根据条款1所述的数据处理装置,其中所述融合指令的操作对象包括输入的待融合的K路数据、所述K路数据对应的K路索引、所述K路数据的尺寸、以及输出的一路融合索引、一路融合数据和关联的运算结构体,K>1,其中:
所述K路索引中的索引元素指示所述K路数据中对应的数据元素的索引信息;
所述K路索引中每路索引的索引元素均按第一顺序有序排列;
所述K路数据中每路数据的数据元素按照对应索引的顺序有序排列;
所述融合索引中的融合索引元素按第二顺序有序排列;
所述融合数据中的融合数据元素与所述融合索引元素一一对应;并且
至少由相同索引的数据元素构成的融合数据元素通过所述运算结构体中关联的运算结构体元素来表示。
条款3、根据条款2所述的数据处理装置,其中所述第一顺序与第二顺序相同或不同,并且所述第一顺序和第二顺序选自以下任一:从小到大的顺序,或从大到小的顺序。
条款4、根据条款2-3任一所述的数据处理装置,其中所述运算电路包括排序电路和输出电路,其中
所述排序电路配置用于将所述K路索引按照索引元素的大小排序并有序输出给所述输出电路;并且
所述输出电路配置用于至少当从所述排序电路接收到相同的索引元素时,生成表示所述相同的索引元素对应的数据元素的累加运算的运算结构体元素,并去除重复的索引元素。
条款5、根据条款4所述的数据处理装置,其中所述排序电路包括比较电路和缓冲电路,其中:
所述比较电路配置用于将所述K路索引中待排序的索引元素与所述缓冲电路中未输出的索引元素进行比较,并输出比较结果给所述控制电路;并且
所述缓冲电路配置用于根据所述控制电路的控制,有序存储已比较的索引元素以及与其对应的数据元素的信息,以及有序输出已比较的索引元素以及与其对应的数据元素的信息。
条款6、根据条款5所述的数据处理装置,其中所述比较电路包括:
K-1路比较器,配置用于将所述K路索引中待排序的索引元素分别与所述缓冲电路中当前序列的K-1个索引元素进行比较,生成比较结果并输出给所述控制电路。
条款7、根据条款6所述的数据处理装置,其中所述控制电路配置用于根据所述比较结果,确定所述待排序的索引元素在所述缓冲电路中当前序列中的插入位置。
条款8、根据条款7所述的数据处理装置,其中所述比较结果使用位图来表示,并且所述控制电路进一步配置用于:根据所述位图中比特位的变化位置,确定所述插入位置。
条款9、根据条款7-8任一所述的数据处理装置,其中所述缓冲电路配置用于根据所述控制电路的指示,在所述插入位置中插入所述待排序的索引元素以及与其对应的数据元素的信息。
条款10、根据条款5-9任一所述的数据处理装置,其中所述缓冲电路进一步配置用于按指定顺序输出当前序列中的首个或末个索引元素以及与其对应的数据元素的信息。
条款11、根据条款10所述的数据处理装置,其中所述控制电路进一步配置用于:根据所述缓冲电路中输出的索引元素,确定待排序的下一索引元素的访存信息。
条款12、根据条款4-11任一所述的数据处理装置,其中所述输出电路包括比较器、缓冲器和结构体生成器,其中:
所述比较器配置用于将从所述排序电路输出的索引元素与上一个融合索引元素进行比较并输出比较结果;
所述缓冲器配置用于仅当所述比较结果指示不相同时,输出所述索引元素作为新的融合索引元素;并且
所述结构体生成器配置用于当所述比较结果指示相同时,基于所述索引元素对应的数据元素,生成运算结构体元素,所述运算结构体元素表示将所述数据元素累加到上一次融合索引元素对应的融合数据元素的累加运算。
条款13、根据条款12所述的数据处理装置,其中所述结构体生成器进一步配置用于,当所述比较结果指示不相同时,基于所述索引元素对应的数据元素,生成运算结构体元素,其中所述运算结构体元素表示将所述数据元素与0相加的累加运算。
条款14、根据条款12-13任一所述的数据处理装置,其中每个运算结构体元素包括三个要素,分别指示两个加数和一个加法结果。
条款15、根据条款1-14任一所述的数据处理装置,其中所述待融合的数据中的数据元素是基于雷达的物体检测中的稀疏化后的有效数据元素,并且所述索引指示所述有效数据元素在稀疏化前的数据中的位置信息。
条款16、根据条款2-15任一所述的数据处理装置,其中所述融合指令的操作对象还包括输出的融合索引元素总个数,用于指示所述输出的一路融合索引中的索引元素总个数。
条款17、根据条款2-16任一所述的数据处理装置,其中所述融合指令的操作对象还包括输出的运算结构体元素总个数,用于指示所述运算结构体中的运算结构体元素总个数。
条款18、根据条款2-17任一所述的数据处理装置,其中
所述输入的K路数据通过第一地址来指示,第一地址包括K个元素,第i个元素表示第i路数据的地址,第i路数据中每个数据元素是一个地址,指向预定长度的向量,其中0<i≤K。
条款19、根据条款2-18任一所述的数据处理装置,其中
所述K路索引通过第二地址来指示,第二地址包括K个元素,第i个元素表示与第i路数据关联的第i路索引的地址,其中0<i≤K。
条款20、根据条款2-19任一所述的数据处理装置,其中
所述K路数据的尺寸通过第三地址来指示,第三地址包括K个元素,第i个元素表示第i路数据中数据元素的个数,其中0<i≤K。
条款21、根据条款2-20任一所述的数据处理装置,其中
所述一路融合数据通过第四地址来指示,第四地址包括L个元素,第j个元素表示所述一路融合数据中的第j个数据元素,每个数据元素是一个地址,指向预定长度的向量,L表示所述融合数据中的数据元素总个数,L≥1,0<j≤L。
条款22、根据条款2-21任一所述的数据处理装置,其中
所述一路融合索引通过第五地址来指示,第五地址包括L个元素,第j个元素表示所述一路融合索引中的第j个索引元素,L表示所述融合索引中的索引元素总个数,L≥1,0<j≤L。
条款23、根据条款2-22任一所述的数据处理装置,其中
所述运算结构体通过第六地址来指示,第六地址包括M个元素,每个元素是一个结构体。
条款24、根据条款23所述的数据处理装置,其中
所述结构体包括三个子元素,每个子元素是一个地址,分别指向两个加数和一个加法结果。
条款25、根据条款2-17任一所述的数据处理装置,其中,至少一个所述操作对象包括张量数据,并且所述张量数据通过至少一个描述符来指示,所述描述符指示以下至少一项信息:张量数据的形状信息和张量数据的空间信息;并且
所述数据处理装置还包括张量接口电路,其配置用于对所述描述符进行解析,以供获取所述张量数据。
条款26、根据条款25所述的数据处理装置,其中所述张量接口电路进一步配置用于:
根据所述形状信息,确定所述张量数据在数据存储空间中的数据地址;和/或
根据所述空间信息,确定指令之间的依赖关系。
条款27、根据条款25-26任一所述的数据处理装置,其中所述张量数据的形状信息包括表示N维张量数据的形状的至少一个形状参数,N为正整数,所述张量数据的形状参数包括以下至少一种:
所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、所述张量数据的存储区域在N个维度方向的至少一个方向上的尺寸、所述存储区域在N个维度方向的至少一个方向上的偏移量、处于N个维度方向的对角位置的至少两个顶点相对于数据基准点的位置、所述张量数据的数据描述位置与数据地址之间的映射关系。
条款28、根据条款25-26任一所述的数据处理装置,其中所述张量数据的形状信息指示包括多个数据块的N维张量数据的形状的至少一个形状参数,N为正整数,所述形状参数包括以下至少一种:
所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、单个数据块的存储区域在N个维度方向的至少一个方向上的尺寸、所述数据块在N个维度方向的至少一个方向上的分块步长、N个维度方向的至少一个方向上的数据块数量、所述数据块在N个维度方向的至少一个方向上的整体步长。
条款29、根据条款1-28任一所述的数据处理装置,其中
所述融合指令中包括操作模式位来指示所述融合指令的融合处理操作,或者所述融合指令本身指示所述融合处理操作。
条款30、一种芯片,包括根据条款1-29任一所述的数据处理装置。
条款31、一种板卡,包括根据条款30所述的芯片。
条款32、一种数据处理方法,包括:
解析融合指令,所述融合指令指示对多路待融合的数据执行融合处理;
根据所述融合指令,将所述多路待融合的数据中数据元素按照其对应的索引,归并为一路有序的融合处理后数据,其中具有相同索引的数据元素合并成运算结构体元素,所述数据元素包括标量、向量或更高维数据中任一;以及
输出所述融合处理后数据。
条款33、根据条款32所述的方法,其中所述融合指令的操作对象包括输入的待融合的K路数据、所述K路数据对应的K路索引、所述K路数据的尺寸、以及输出的一路融合索引、一路融合数据和关联的运算结构体,K>1,其中:
所述K路索引中的索引元素指示所述K路数据中对应的数据元素的索引信息;
所述K路索引中每路索引的索引元素均按第一顺序有序排列;
所述K路数据中每路数据的数据元素按照对应索引的顺序有序排列;
所述融合索引中的融合索引元素按第二顺序有序排列;
所述融合数据中的融合数据元素与所述融合索引元素一一对应;并且
至少由相同索引的数据元素构成的融合数据元素通过所述运算结构体中关联的运算结构体元素来表示。
条款34、根据条款33所述的数据处理方法,其中所述第一顺序与第二顺序相同或不同,并且所述第一顺序和第二顺序选自以下任一:从小到大的顺序,或从大到小的顺序。
条款35、根据条款33-34任一所述的数据处理方法,进一步包括:
排序电路将所述K路索引按照索引元素的大小排序并有序输出给输出电路;以及
至少当从所述排序电路接收到相同的索引元素时,所述输出电路生成表示所述相同的索引元素对应的数据元素的累加运算的运算结构体元素,并去除重复的索引元素。
条款36、根据条款35所述的数据处理方法,其中所述排序电路包括比较电路和缓冲电路,并且所述方法进一步包括:
所述比较电路将所述K路索引中待排序的索引元素与所述缓冲电路中未输出的索引元素进行比较,并输出比较结果给控制电路;以及
所述缓冲电路根据所述控制电路的控制,有序存储已比较的索引元素以及与其对应的数据元素的信息,以及有序输出已比较的索引元素以及与其对应的数据元素的信息。
条款37、根据条款36所述的数据处理方法,其中所述比较电路包括K-1路比较器,并且所述方法包括:
所述K-1路比较器将所述K路索引中待排序的索引元素分别与所述缓冲电路中当前序列的K-1个索引元素进行比较,生成比较结果并输出给所述控制电路。
条款38、根据条款37所述的数据处理方法,进一步包括:
所述控制电路根据所述比较结果,确定所述待排序的索引元素在所述缓冲电路中当前序列中的插入位置。
条款39、根据条款38所述的数据处理方法,其中所述比较结果使用位图来表示,并且所述方法进一步包括:所述控制电路根据所述位图中比特位的变化位置,确定所述插入位置。
条款40、根据条款38-39任一所述的数据处理方法,进一步包括:
所述缓冲电路根据所述控制电路的指示,在所述插入位置中插入所述待排序的索引元素以及与其对应的数据元素的信息。
条款41、根据条款36-40任一所述的数据处理方法,进一步包括:
所述缓冲电路按指定顺序输出当前序列中的首个或末个索引元素以及与其对应的数据元素的信息。
条款42、根据条款41所述的数据处理方法,进一步包括:
所述控制电路根据所述缓冲电路中输出的索引元素,确定待排序的下一索引元素的访存信息。
条款43、根据条款35-42任一所述的数据处理方法,其中所述输出电路包括比较器、缓冲器和结构体生成器,并且所述方法包括:
所述比较器将从所述排序电路输出的索引元素与上一个融合索引元素进行比较并输出比较结果;
所述缓冲器仅当所述比较结果指示不相同时,输出所述索引元素作为新的融合索引元素;以及
当所述比较结果指示相同时,所述结构体生成器基于所述索引元素对应的数据元素,生成运算结构体元素,所述运算结构体元素表示将所述数据元素累加到上一次融合索引元素对应的融合数据元素的累加运算。
条款44、根据条款43所述的数据处理方法,进一步包括:
当所述比较结果指示不相同时,所述结构体生成器基于所述索引元素对应的数据元素,生成运算结构体元素,其中所述运算结构体元素表示将所述数据元素与0相加的累加运算。
条款45、根据条款43-44任一所述的数据处理方法,其中每个运算结构体元素包括三个要素,分别指示两个加数和一个加法结果。
条款46、根据条款32-45任一所述的数据处理方法,其中所述待融合的数据中的数据元素是基于雷达的物体检测中的稀疏化后的有效数据元素,并且所述索引指示所述有效数据元素在稀疏化前的数据中的位置信息。
条款47、根据条款33-46任一所述的数据处理方法,其中所述融合指令的操作对象还包括输出的融合索引元素总个数,用于指示所述输出的一路融合索引中的索引元素总个数。
条款48、根据条款33-47任一所述的数据处理方法,其中所述融合指令的操作对象还包括输出的运算结构体元素总个数,用于指示所述运算结构体中的运算结构体元素总个数。
条款49、根据条款33-48任一所述的数据处理方法,其中
所述输入的K路数据通过第一地址来指示,第一地址包括K个元素,第i个元素表示第i路数据的地址,第i路数据中每个数据元素是一个地址,指向预定长度的向量,其中0<i≤K。
条款50、根据条款33-49任一所述的数据处理方法,其中
所述K路索引通过第二地址来指示,第二地址包括K个元素,第i个元素表示与第i路数据关联的第i路索引的地址,其中0<i≤K。
条款51、根据条款33-50任一所述的数据处理方法,其中
所述K路数据的尺寸通过第三地址来指示,第三地址包括K个元素,第i个元素表示第i路数据中数据元素的个数,其中0<i≤K。
条款52、根据条款33-51任一所述的数据处理方法,其中
所述一路融合数据通过第四地址来指示,第四地址包括L个元素,第j个元素表示所述一路融合数据中的第j个数据元素,每个数据元素是一个地址,指向预定长度的向量,L表示所述融合数据中的数据元素总个数,L≥1,0<j≤L。
条款53、根据条款33-52任一所述的数据处理方法,其中
所述一路融合索引通过第五地址来指示,第五地址包括L个元素,第j个元素表示所述一路融合索引中的第j个索引元素,L表示所述融合索引中的索引元素总个数,L≥1,0<j≤L。
条款54、根据条款33-53任一所述的数据处理方法,其中
所述运算结构体通过第六地址来指示,第六地址包括M个元素,每个元素是一个结构体。
条款55、根据条款54所述的数据处理方法,其中
所述结构体包括三个子元素,每个子元素是一个地址,分别指向两个加数和一个加法结果。
条款56、根据条款33-48任一所述的数据处理方法,其中,至少一个所述操作对象包括张量数据,并且所述张量数据通过至少一个描述符来指示,所述描述符指示以下至少一项信息:张量数据的形状信息和张量数据的空间信息;并且所述方法还包括:
对所述描述符进行解析,以供获取所述张量数据。
条款57、根据条款56所述的数据处理方法,其中对所述描述符进行解析包括:
根据所述形状信息,确定所述张量数据在数据存储空间中的数据地址;和/或
根据所述空间信息,确定指令之间的依赖关系。
条款58、根据条款56-57任一所述的数据处理方法,其中所述张量数据的形状信息包括表示N维张量数据的形状的至少一个形状参数,N为正整数,所述张量数据的形状参数包括以下至少一种:
所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、所述张量数据的存储区域在N个维度方向的至少一个方向上的尺寸、所述存储区域在N个维度方向的至少一个方向上的偏移量、处于N个维度方向的对角位置的至少两个顶点相对于数据基准点的位置、所述张量数据的数据描述位置与数据地址之间的映射关系。
条款59、根据条款56-57任一所述的数据处理方法,其中所述张量数据的形状信息指示包括多个数据块的N维张量数据的形状的至少一个形状参数,N为正整数,所述形状参数包括以下至少一种:
所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、单个数据块的存储区域在N个维度方向的至少一个方向上的尺寸、所述数据块在N个维度方向的至少一个方向上的分块步长、N个维度方向的至少一个方向上的数据块数量、所述数据块在N个维度方向的至少一个方向上的整体步长。
条款60、根据条款32-59任一所述的数据处理方法,其中
所述融合指令中包括操作模式位来指示所述融合指令的融合处理操作,或者所述融合指令本身指示所述融合处理操作。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。

Claims (60)

1.一种数据处理装置,包括:
控制电路,其配置用于解析融合指令,所述融合指令指示对多路待融合的数据执行融合处理;
存储电路,其配置用于存储融合处理前和/或融合处理后的信息;以及
运算电路,其配置用于根据所述融合指令,将所述多路待融合的数据中数据元素按照其对应的索引,归并为一路有序的融合处理后数据,其中具有相同索引的数据元素合并成运算结构体元素,所述数据元素包括标量、向量或更高维数据中任一。
2.根据权利要求1所述的数据处理装置,其中所述融合指令的操作对象包括输入的待融合的K路数据、所述K路数据对应的K路索引、所述K路数据的尺寸、以及输出的一路融合索引、一路融合数据和关联的运算结构体,K>1,其中:
所述K路索引中的索引元素指示所述K路数据中对应的数据元素的索引信息;
所述K路索引中每路索引的索引元素均按第一顺序有序排列;
所述K路数据中每路数据的数据元素按照对应索引的顺序有序排列;
所述融合索引中的融合索引元素按第二顺序有序排列;
所述融合数据中的融合数据元素与所述融合索引元素一一对应;并且
至少由相同索引的数据元素构成的融合数据元素通过所述运算结构体中关联的运算结构体元素来表示。
3.根据权利要求2所述的数据处理装置,其中所述第一顺序与第二顺序相同或不同,并且所述第一顺序和第二顺序选自以下任一:从小到大的顺序,或从大到小的顺序。
4.根据权利要求2-3任一所述的数据处理装置,其中所述运算电路包括排序电路和输出电路,其中
所述排序电路配置用于将所述K路索引按照索引元素的大小排序并有序输出给所述输出电路;并且
所述输出电路配置用于至少当从所述排序电路接收到相同的索引元素时,生成表示所述相同的索引元素对应的数据元素的累加运算的运算结构体元素,并去除重复的索引元素。
5.根据权利要求4所述的数据处理装置,其中所述排序电路包括比较电路和缓冲电路,其中:
所述比较电路配置用于将所述K路索引中待排序的索引元素与所述缓冲电路中未输出的索引元素进行比较,并输出比较结果给所述控制电路;并且
所述缓冲电路配置用于根据所述控制电路的控制,有序存储已比较的索引元素以及与其对应的数据元素的信息,以及有序输出已比较的索引元素以及与其对应的数据元素的信息。
6.根据权利要求5所述的数据处理装置,其中所述比较电路包括:
K-1路比较器,配置用于将所述K路索引中待排序的索引元素分别与所述缓冲电路中当前序列的K-1个索引元素进行比较,生成比较结果并输出给所述控制电路。
7.根据权利要求6所述的数据处理装置,其中所述控制电路配置用于根据所述比较结果,确定所述待排序的索引元素在所述缓冲电路中当前序列中的插入位置。
8.根据权利要求7所述的数据处理装置,其中所述比较结果使用位图来表示,并且所述控制电路进一步配置用于:根据所述位图中比特位的变化位置,确定所述插入位置。
9.根据权利要求7-8任一所述的数据处理装置,其中所述缓冲电路配置用于根据所述控制电路的指示,在所述插入位置中插入所述待排序的索引元素以及与其对应的数据元素的信息。
10.根据权利要求5-9任一所述的数据处理装置,其中所述缓冲电路进一步配置用于按指定顺序输出当前序列中的首个或末个索引元素以及与其对应的数据元素的信息。
11.根据权利要求10所述的数据处理装置,其中所述控制电路进一步配置用于:根据所述缓冲电路中输出的索引元素,确定待排序的下一索引元素的访存信息。
12.根据权利要求4-11任一所述的数据处理装置,其中所述输出电路包括比较器、缓冲器和结构体生成器,其中:
所述比较器配置用于将从所述排序电路输出的索引元素与上一个融合索引元素进行比较并输出比较结果;
所述缓冲器配置用于仅当所述比较结果指示不相同时,输出所述索引元素作为新的融合索引元素;并且
所述结构体生成器配置用于当所述比较结果指示相同时,基于所述索引元素对应的数据元素,生成运算结构体元素,所述运算结构体元素表示将所述数据元素累加到上一次融合索引元素对应的融合数据元素的累加运算。
13.根据权利要求12所述的数据处理装置,其中所述结构体生成器进一步配置用于,当所述比较结果指示不相同时,基于所述索引元素对应的数据元素,生成运算结构体元素,其中所述运算结构体元素表示将所述数据元素与0相加的累加运算。
14.根据权利要求12-13任一所述的数据处理装置,其中每个运算结构体元素包括三个要素,分别指示两个加数和一个加法结果。
15.根据权利要求1-14任一所述的数据处理装置,其中所述待融合的数据中的数据元素是基于雷达的物体检测中的稀疏化后的有效数据元素,并且所述索引指示所述有效数据元素在稀疏化前的数据中的位置信息。
16.根据权利要求2-15任一所述的数据处理装置,其中所述融合指令的操作对象还包括输出的融合索引元素总个数,用于指示所述输出的一路融合索引中的索引元素总个数。
17.根据权利要求2-16任一所述的数据处理装置,其中所述融合指令的操作对象还包括输出的运算结构体元素总个数,用于指示所述运算结构体中的运算结构体元素总个数。
18.根据权利要求2-17任一所述的数据处理装置,其中
所述输入的K路数据通过第一地址来指示,第一地址包括K个元素,第i个元素表示第i路数据的地址,第i路数据中每个数据元素是一个地址,指向预定长度的向量,其中0<i≤K。
19.根据权利要求2-18任一所述的数据处理装置,其中
所述K路索引通过第二地址来指示,第二地址包括K个元素,第i个元素表示与第i路数据关联的第i路索引的地址,其中0<i≤K。
20.根据权利要求2-19任一所述的数据处理装置,其中
所述K路数据的尺寸通过第三地址来指示,第三地址包括K个元素,第i个元素表示第i路数据中数据元素的个数,其中0<i≤K。
21.根据权利要求2-20任一所述的数据处理装置,其中
所述一路融合数据通过第四地址来指示,第四地址包括L个元素,第j个元素表示所述一路融合数据中的第j个数据元素,每个数据元素是一个地址,指向预定长度的向量,L表示所述融合数据中的数据元素总个数,L≥1,0<j≤L。
22.根据权利要求2-21任一所述的数据处理装置,其中
所述一路融合索引通过第五地址来指示,第五地址包括L个元素,第j个元素表示所述一路融合索引中的第j个索引元素,L表示所述融合索引中的索引元素总个数,L≥1,0<j≤L。
23.根据权利要求2-22任一所述的数据处理装置,其中
所述运算结构体通过第六地址来指示,第六地址包括M个元素,每个元素是一个运算结构体元素。
24.根据权利要求23所述的数据处理装置,其中
所述运算结构体元素包括三个子元素,每个子元素是一个地址,分别指向两个加数和一个加法结果。
25.根据权利要求2-17任一所述的数据处理装置,其中,至少一个所述操作对象包括张量数据,并且所述张量数据通过至少一个描述符来指示,所述描述符指示以下至少一项信息:张量数据的形状信息和张量数据的空间信息;并且
所述数据处理装置还包括张量接口电路,其配置用于对所述描述符进行解析,以供获取所述张量数据。
26.根据权利要求25所述的数据处理装置,其中所述张量接口电路进一步配置用于:
根据所述形状信息,确定所述张量数据在数据存储空间中的数据地址;和/或
根据所述空间信息,确定指令之间的依赖关系。
27.根据权利要求25-26任一所述的数据处理装置,其中所述张量数据的形状信息包括表示N维张量数据的形状的至少一个形状参数,N为正整数,所述张量数据的形状参数包括以下至少一种:
所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、所述张量数据的存储区域在N个维度方向的至少一个方向上的尺寸、所述存储区域在N个维度方向的至少一个方向上的偏移量、处于N个维度方向的对角位置的至少两个顶点相对于数据基准点的位置、所述张量数据的数据描述位置与数据地址之间的映射关系。
28.根据权利要求25-26任一所述的数据处理装置,其中所述张量数据的形状信息指示包括多个数据块的N维张量数据的形状的至少一个形状参数,N为正整数,所述形状参数包括以下至少一种:
所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、单个数据块的存储区域在N个维度方向的至少一个方向上的尺寸、所述数据块在N个维度方向的至少一个方向上的分块步长、N个维度方向的至少一个方向上的数据块数量、所述数据块在N个维度方向的至少一个方向上的整体步长。
29.根据权利要求1-28任一所述的数据处理装置,其中
所述融合指令中包括操作模式位来指示所述融合指令的融合处理操作,或者所述融合指令本身指示所述融合处理操作。
30.一种芯片,包括根据权利要求1-29任一所述的数据处理装置。
31.一种板卡,包括根据权利要求30所述的芯片。
32.一种数据处理方法,包括:
解析融合指令,所述融合指令指示对多路待融合的数据执行融合处理;
根据所述融合指令,将所述多路待融合的数据中数据元素按照其对应的索引,归并为一路有序的融合处理后数据,其中具有相同索引的数据元素合并成运算结构体元素,所述数据元素包括标量、向量或更高维数据中任一;以及
输出所述融合处理后数据。
33.根据权利要求32所述的方法,其中所述融合指令的操作对象包括输入的待融合的K路数据、所述K路数据对应的K路索引、所述K路数据的尺寸、以及输出的一路融合索引、一路融合数据和关联的运算结构体,K>1,其中:
所述K路索引中的索引元素指示所述K路数据中对应的数据元素的索引信息;
所述K路索引中每路索引的索引元素均按第一顺序有序排列;
所述K路数据中每路数据的数据元素按照对应索引的顺序有序排列;
所述融合索引中的融合索引元素按第二顺序有序排列;
所述融合数据中的融合数据元素与所述融合索引元素一一对应;并且
至少由相同索引的数据元素构成的融合数据元素通过所述运算结构体中关联的运算结构体元素来表示。
34.根据权利要求33所述的数据处理方法,其中所述第一顺序与第二顺序相同或不同,并且所述第一顺序和第二顺序选自以下任一:从小到大的顺序,或从大到小的顺序。
35.根据权利要求33-34任一所述的数据处理方法,进一步包括:
排序电路将所述K路索引按照索引元素的大小排序并有序输出给输出电路;以及
至少当从所述排序电路接收到相同的索引元素时,所述输出电路生成表示所述相同的索引元素对应的数据元素的累加运算的运算结构体元素,并去除重复的索引元素。
36.根据权利要求35所述的数据处理方法,其中所述排序电路包括比较电路和缓冲电路,并且所述方法进一步包括:
所述比较电路将所述K路索引中待排序的索引元素与所述缓冲电路中未输出的索引元素进行比较,并输出比较结果给控制电路;以及
所述缓冲电路根据所述控制电路的控制,有序存储已比较的索引元素以及与其对应的数据元素的信息,以及有序输出已比较的索引元素以及与其对应的数据元素的信息。
37.根据权利要求36所述的数据处理方法,其中所述比较电路包括K-1路比较器,并且所述方法包括:
所述K-1路比较器将所述K路索引中待排序的索引元素分别与所述缓冲电路中当前序列的K-1个索引元素进行比较,生成比较结果并输出给所述控制电路。
38.根据权利要求37所述的数据处理方法,进一步包括:
所述控制电路根据所述比较结果,确定所述待排序的索引元素在所述缓冲电路中当前序列中的插入位置。
39.根据权利要求38所述的数据处理方法,其中所述比较结果使用位图来表示,并且所述方法进一步包括:所述控制电路根据所述位图中比特位的变化位置,确定所述插入位置。
40.根据权利要求38-39任一所述的数据处理方法,进一步包括:
所述缓冲电路根据所述控制电路的指示,在所述插入位置中插入所述待排序的索引元素以及与其对应的数据元素的信息。
41.根据权利要求36-40任一所述的数据处理方法,进一步包括:
所述缓冲电路按指定顺序输出当前序列中的首个或末个索引元素以及与其对应的数据元素的信息。
42.根据权利要求41所述的数据处理方法,进一步包括:
所述控制电路根据所述缓冲电路中输出的索引元素,确定待排序的下一索引元素的访存信息。
43.根据权利要求35-42任一所述的数据处理方法,其中所述输出电路包括比较器、缓冲器和结构体生成器,并且所述方法包括:
所述比较器将从所述排序电路输出的索引元素与上一个融合索引元素进行比较并输出比较结果;
所述缓冲器仅当所述比较结果指示不相同时,输出所述索引元素作为新的融合索引元素;以及
当所述比较结果指示相同时,所述结构体生成器基于所述索引元素对应的数据元素,生成运算结构体元素,所述运算结构体元素表示将所述数据元素累加到上一次融合索引元素对应的融合数据元素的累加运算。
44.根据权利要求43所述的数据处理方法,进一步包括:
当所述比较结果指示不相同时,所述结构体生成器基于所述索引元素对应的数据元素,生成运算结构体元素,其中所述运算结构体元素表示将所述数据元素与0相加的累加运算。
45.根据权利要求43-44任一所述的数据处理方法,其中每个运算结构体元素包括三个要素,分别指示两个加数和一个加法结果。
46.根据权利要求32-45任一所述的数据处理方法,其中所述待融合的数据中的数据元素是基于雷达的物体检测中的稀疏化后的有效数据元素,并且所述索引指示所述有效数据元素在稀疏化前的数据中的位置信息。
47.根据权利要求33-46任一所述的数据处理方法,其中所述融合指令的操作对象还包括输出的融合索引元素总个数,用于指示所述输出的一路融合索引中的索引元素总个数。
48.根据权利要求33-47任一所述的数据处理方法,其中所述融合指令的操作对象还包括输出的运算结构体元素总个数,用于指示所述运算结构体中的运算结构体元素总个数。
49.根据权利要求33-48任一所述的数据处理方法,其中
所述输入的K路数据通过第一地址来指示,第一地址包括K个元素,第i个元素表示第i路数据的地址,第i路数据中每个数据元素是一个地址,指向预定长度的向量,其中0<i≤K。
50.根据权利要求33-49任一所述的数据处理方法,其中
所述K路索引通过第二地址来指示,第二地址包括K个元素,第i个元素表示与第i路数据关联的第i路索引的地址,其中0<i≤K。
51.根据权利要求33-50任一所述的数据处理方法,其中
所述K路数据的尺寸通过第三地址来指示,第三地址包括K个元素,第i个元素表示第i路数据中数据元素的个数,其中0<i≤K。
52.根据权利要求33-51任一所述的数据处理方法,其中
所述一路融合数据通过第四地址来指示,第四地址包括L个元素,第j个元素表示所述一路融合数据中的第j个数据元素,每个数据元素是一个地址,指向预定长度的向量,L表示所述融合数据中的数据元素总个数,L≥1,0<j≤L。
53.根据权利要求33-52任一所述的数据处理方法,其中
所述一路融合索引通过第五地址来指示,第五地址包括L个元素,第j个元素表示所述一路融合索引中的第j个索引元素,L表示所述融合索引中的索引元素总个数,L≥1,0<j≤L。
54.根据权利要求33-53任一所述的数据处理方法,其中
所述运算结构体通过第六地址来指示,第六地址包括M个元素,每个元素是一个运算结构体元素。
55.根据权利要求54所述的数据处理方法,其中
所述运算结构体元素包括三个子元素,每个子元素是一个地址,分别指向两个加数和一个加法结果。
56.根据权利要求33-48任一所述的数据处理方法,其中,至少一个所述操作对象包括张量数据,并且所述张量数据通过至少一个描述符来指示,所述描述符指示以下至少一项信息:张量数据的形状信息和张量数据的空间信息;并且所述方法还包括:
对所述描述符进行解析,以供获取所述张量数据。
57.根据权利要求56所述的数据处理方法,其中对所述描述符进行解析包括:
根据所述形状信息,确定所述张量数据在数据存储空间中的数据地址;和/或
根据所述空间信息,确定指令之间的依赖关系。
58.根据权利要求56-57任一所述的数据处理方法,其中所述张量数据的形状信息包括表示N维张量数据的形状的至少一个形状参数,N为正整数,所述张量数据的形状参数包括以下至少一种:
所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、所述张量数据的存储区域在N个维度方向的至少一个方向上的尺寸、所述存储区域在N个维度方向的至少一个方向上的偏移量、处于N个维度方向的对角位置的至少两个顶点相对于数据基准点的位置、所述张量数据的数据描述位置与数据地址之间的映射关系。
59.根据权利要求56-57任一所述的数据处理方法,其中所述张量数据的形状信息指示包括多个数据块的N维张量数据的形状的至少一个形状参数,N为正整数,所述形状参数包括以下至少一种:
所述张量数据所在的数据存储空间在N个维度方向的至少一个方向上的尺寸、单个数据块的存储区域在N个维度方向的至少一个方向上的尺寸、所述数据块在N个维度方向的至少一个方向上的分块步长、N个维度方向的至少一个方向上的数据块数量、所述数据块在N个维度方向的至少一个方向上的整体步长。
60.根据权利要求32-59任一所述的数据处理方法,其中
所述融合指令中包括操作模式位来指示所述融合指令的融合处理操作,或者所述融合指令本身指示所述融合处理操作。
CN202011563214.1A 2020-12-25 2020-12-25 数据处理装置、数据处理方法及相关产品 Pending CN114692839A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011563214.1A CN114692839A (zh) 2020-12-25 2020-12-25 数据处理装置、数据处理方法及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011563214.1A CN114692839A (zh) 2020-12-25 2020-12-25 数据处理装置、数据处理方法及相关产品

Publications (1)

Publication Number Publication Date
CN114692839A true CN114692839A (zh) 2022-07-01

Family

ID=82130927

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011563214.1A Pending CN114692839A (zh) 2020-12-25 2020-12-25 数据处理装置、数据处理方法及相关产品

Country Status (1)

Country Link
CN (1) CN114692839A (zh)

Similar Documents

Publication Publication Date Title
CN109104876B (zh) 一种运算装置及相关产品
Yu et al. Lite-hrnet: A lightweight high-resolution network
CN110163334B (zh) 集成电路芯片装置及相关产品
CN112799599B (zh) 一种数据存储方法、计算核、芯片和电子设备
CN112070202B (zh) 一种融合图的生成方法、生成装置和计算机可读存储介质
WO2021118857A1 (en) Hardware accelerator having reconfigurable instruction set
WO2022134873A1 (zh) 数据处理装置、数据处理方法及相关产品
CN114692844A (zh) 数据处理装置、数据处理方法及相关产品
CN114692839A (zh) 数据处理装置、数据处理方法及相关产品
WO2022001500A1 (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法
CN115221104A (zh) 数据处理装置、数据处理方法及相关产品
CN114692838A (zh) 数据处理装置、数据处理方法及相关产品
CN114692840A (zh) 数据处理装置、数据处理方法及相关产品
CN114281561A (zh) 处理单元、用于处理单元的同步方法及相应产品
CN114691560A (zh) 数据处理电路、数据处理方法及相关产品
CN113867799A (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法
CN114692841A (zh) 数据处理装置、数据处理方法及相关产品
CN114691559A (zh) 数据处理电路、数据处理方法及相关产品
CN114691561A (zh) 数据处理电路、数据处理方法及相关产品
CN113469365B (zh) 基于神经网络模型的推理和编译方法及其相关产品
WO2022134872A1 (zh) 数据处理装置、数据处理方法及相关产品
CN114692074A (zh) 矩阵乘法电路、方法及相关产品
CN114692847B (zh) 数据处理电路、数据处理方法及相关产品
US20230161626A1 (en) Point cloud adjacency-map and hash-map accelerator
CN114692846A (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