CN114489803A - 处理装置、处理方法及相关产品 - Google Patents
处理装置、处理方法及相关产品 Download PDFInfo
- Publication number
- CN114489803A CN114489803A CN202011270359.2A CN202011270359A CN114489803A CN 114489803 A CN114489803 A CN 114489803A CN 202011270359 A CN202011270359 A CN 202011270359A CN 114489803 A CN114489803 A CN 114489803A
- Authority
- CN
- China
- Prior art keywords
- coordinate space
- data
- tensor data
- bound
- range
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 132
- 238000003672 processing method Methods 0.000 title claims abstract description 24
- 238000013500 data storage Methods 0.000 claims description 49
- 238000000034 method Methods 0.000 claims description 21
- 230000008569 process Effects 0.000 claims description 6
- 238000000638 solvent extraction Methods 0.000 claims description 6
- 230000000903 blocking effect Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 13
- 238000013473 artificial intelligence Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000000670 limiting effect Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 239000013598 vector Substances 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Image Generation (AREA)
Abstract
本披露公开了一种处理装置、处理方法及相关产品。该处理装置可以实现为计算装置包括在组合处理装置中,该组合处理装置还可以包括接口装置和其他处理装置。该计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于存储该计算装置和其他处理装置的数据。本披露的方案提供了指令并行的解决方案,其可以提高指令并行度,从而提高机器的处理效率。
Description
技术领域
本披露涉及处理器领域,特别是涉及一种处理装置、处理方法、芯片和板卡。
背景技术
指令系统是计算机软件和硬件交互的接口,是计算机系统结构中一个非常重要的部分。随着人工智能技术的不断发展,需要处理的数据量和数据维度都在不断增大。因此,如何合理、科学地控制指令的执行,尤其是提高指令并行的程度,提高机器的性能,这是处理器领域中的一个重要问题。
发明内容
为了解决如上所提到的一个或多个技术问题,本披露在多个方面中提出了增强指令并行的解决方案。通过本披露的指令系统,可以提高指令并行程度,由此提高机器的处理效率。
在第一方面中,本披露提供一种处理装置,包括控制单元和执行单元,其中:所述控制单元配置用于:获取指令的第一操作;以及向所述执行单元发送所述第一操作以及指示允许所述第一操作使用的张量数据的第一坐标空间范围的信息;并且所述执行单元配置用于:向所述控制单元发送指示执行所述第一操作时将使用的所述张量数据的第二坐标空间范围的信息;以及在所述第一坐标空间范围与所述第二坐标空间范围的交集所确定的第三坐标空间范围内,执行所述第一操作。
在第二方面中,本披露提供一种芯片,包括前述第一方面任一实施例的处理装置。
在第三方面中,本披露提供一种板卡,包括前述第二方面任一实施例的芯片。
在第四方面中,本披露提供一种处理方法,所述方法包括:获取指令的第一操作;确定允许所述第一操作使用的张量数据的第一坐标空间范围;确定执行所述第一操作时将使用的所述张量数据的第二坐标空间范围;以及在所述第一坐标空间范围与所述第二坐标空间范围的交集所确定的第三坐标空间范围内,执行所述第一操作。
通过如上所提供的处理装置、处理方法、芯片和板卡,本披露实施例在指令的操作执行过程中,对操作使用的张量数据的坐标空间范围进行限制,从而在硬件的并行执行时,既能保证执行顺序的一致性,又能提高操作的并行程度,由此确保了处理的准确和效率。进一步地,坐标空间的使用,可以简化软件侧的代码编写,便于指令的执行。
附图说明
通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1A示出根据本披露实施例的数据存储空间的示意图;
图1B示出根据本披露实施例的数据分块在数据存储空间中的示意图;
图2示出根据本披露实施例的处理装置的示意性框图;
图3A-图3B示出根据本披露实施例的坐标空间范围的示意图;
图4示出根据本披露实施例的处理方法的示意性流程图;
图5示出根据本披露实施例的一种组合处理装置的结构图;以及
图6示出根据本披露实施例的一种板卡的结构示意图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中可能使用的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
计算机通过执行指令来处理各种数据。为了指出数据的来源、操作结果的去向及所执行的操作,一条指令通常包含下列信息:
(1)操作码(Operation Code,OP),用来表示该指令所要完成的操作(例如,加、减、乘、除、数据传送等),它具体说明了操作的性质及功能。一台计算机可能有几十条至几百条指令,每一条指令都有一个相应的操作码,计算机通过识别该操作码来完成不同的操作。
(2)操作数,用来描述该指令的操作对象。操作数可以涉及被操作对象的数据类型、访存地址、寻址方式等。操作数可以直接给出被操作对象,或者指出被操作对象的存储器地址或寄存器地址(即寄存器名)。
传统的处理器的指令被设计为能够执行基本的单数据标量操作。这里,单数据标量操作指的是指令的每一个操作数都是一个标量数据。然而,随着人工智能技术的发展,在诸如图像处理和模式识别等的任务中,面向的操作数往往是多维向量(即,张量数据)的数据类型,仅仅使用标量操作无法使硬件高效地完成运算任务。因此,如何高效地执行多维的张量数据处理也是当前计算领域亟需解决的问题。
在本披露的实施例中,提供了一种指令系统,其中在指令的操作数中包括描述符,通过该描述符可以快速获取与张量数据相关的信息。具体地,描述符可以指示以下至少一项信息:张量数据的形状信息、张量数据的空间信息。张量数据的形状信息可以用于确定与该操作数对应的张量数据在数据存储空间中的数据地址。张量数据的空间信息可以用于确定指令之间的依赖关系,进而可以确定例如指令的执行顺序。张量数据的空间信息可以通过空间标识(ID)来指示。空间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。
图1A示出根据本披露实施例的数据存储空间的示意图。如图1A所示,数据存储空间21采用行优先的方式存储了一个二维数据,可通过(x,y)来表示(其中,X轴水平向右,Y轴垂直向下)。X轴方向上的尺寸(每行的尺寸,或总列数)为ori_x(图中未示出),Y轴方向上的尺寸(总行数)为ori_y(图中未示出),数据存储空间21的起始地址PA_start(基准地址)为第一个数据块22的物理地址。数据块23是数据存储空间21中的部分数据,其在X轴方向上的偏移量25表示为offset_x,在Y轴方向上的偏移量24表示为offset_y,在X轴方向上的尺寸表示为size_x,在Y轴方向上的尺寸表示为size_y。
在一种可能的实现方式中,使用描述符来定义数据块23时,描述符的数据基准点可以使用数据存储空间21的第一个数据块,可以约定描述符的基准地址为数据存储空间21的起始地址PA_start。然后可以结合数据存储空间21在X轴的尺寸ori_x、在Y轴上的尺寸ori_y,以及数据块23在Y轴方向的偏移量offset_y、X轴方向上的偏移量offset_x、X轴方向上的尺寸size_x以及Y轴方向上的尺寸size_y来确定数据块23的描述符的内容。
在一种可能的实现方式中,可以使用下述公式(1)来表示描述符的内容:
应当理解,虽然上述示例中,描述符的内容表示的是二维空间,但本领域技术人员可以根据实际情况对描述符的内容表示的具体维度进行设置,本披露对此不作限制。
在一种可能的实现方式中,可以约定描述符的数据基准点在数据存储空间中的基准地址,在基准地址的基础上,根据处于N个维度方向的对角位置的至少两个顶点相对于数据基准点的位置,确定张量数据的描述符的内容。
举例来说,可以约定描述符的数据基准点在数据存储空间中的基准地址PA_base。例如,可以在数据存储空间21中选取一个数据(例如,位置为(2,2)的数据)作为数据基准点,将该数据在数据存储空间中的物理地址作为基准地址PA_base。可以根据对角位置的两个顶点相对于数据基准点的位置,确定出图1A中数据块23的描述符的内容。首先,确定数据块23的对角位置的至少两个顶点相对于数据基准点的位置,例如,使用左上至右下方向的对角位置顶点相对于数据基准点的位置,其中,左上角顶点的相对位置为(x_min,y_min),右下角顶点的相对位置为(x_max,y_max),然后可以根据基准地址PA_base、左上角顶点的相对位置(x_min,y_min)以及右下角顶点的相对位置(x_max,y_max)确定出数据块23的描述符的内容。
在一种可能的实现方式中,可以使用下述公式(2)来表示描述符的内容(基准地址为PA_base):
应当理解,虽然上述示例中使用左上角和右下角两个对角位置的顶点来确定描述符的内容,但本领域技术人员可以根据实际需要对对角位置的至少两个顶点的具体顶点进行设置,本披露对此不作限制。
在一种可能的实现方式中,可根据描述符的数据基准点在数据存储空间中的基准地址,以及描述符所指示的张量数据的数据描述位置与数据地址之间的映射关系,确定张量数据的描述符的内容。其中,数据描述位置与数据地址之间的映射关系可以根据实际需要进行设定,例如,描述符所指示的张量数据为三维空间数据时,可以使用函数f(x,y,z)来定义数据描述位置与数据地址之间的映射关系。
在一种可能的实现方式中,可以使用下述公式(3)来表示描述符的内容:
在一种可能的实现方式中,描述符还用于指示N维的张量数据的地址,其中,描述符的内容还包括表示张量数据的地址的至少一个地址参数,例如描述符的内容可以是下式(4):
其中PA为地址参数。地址参数可以是逻辑地址,也可以是物理地址。在对描述符进行解析时可以以PA为向量形状的顶点、中间点或预设点中的任意一个,结合X方向和Y方向的形状参数得到对应的数据地址。
在一种可能的实现方式中,张量数据的地址参数包括描述符的数据基准点在该张量数据的数据存储空间中的基准地址,基准地址包括该数据存储空间的起始地址。
在一种可能的实现方式中,描述符还可以包括表示张量数据的地址的至少一个地址参数,例如描述符的内容可以是下式(5):
其中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)
在一种可能的实现方式中,描述符可以指示分块的数据。数据分块在很多应用中可以有效地加快运算速度,提高处理效率。例如,在图形处理中,卷积运算经常使用数据分块进行快速运算处理。
图1B示出根据本披露实施例的数据分块在数据存储空间中的示意图。如图1B所示,数据存储空间26同样采用行优先的方式存储二维数据,可通过(x,y)来表示(其中,X轴水平向右,Y轴垂直向下)。X轴方向上的尺寸(每行的尺寸,或总列数)为ori_x(图中未示出),Y轴方向上的尺寸(总行数)为ori_y(图中未示出)。不同于图1A的张量数据,图1B中存储的张量数据包括多个数据分块。
在这种情况下,描述符需要更多的参数来表示这些数据分块。以X轴(X维度)为例,可以涉及如下参数:ori_x,x.tile.size(分块中的尺寸27),x.tile.stride(分块中的步长28,即第一个小块的第一个点与第二个小块的第一个点的距离),x.tile.num(分块数量,图1B中示出为3个分块),x.stride(整体的步长,即第一行的第一个点到第二行第一个点的距离)等。其他维度可以类似地包括对应的参数。
在一种可能的实现方式中,描述符可以包括描述符的标识和/或描述符的内容。其中,描述符的标识用于对描述符进行区分,例如描述符的标识可以为其编号;描述符的内容可以包括表示张量数据的形状的至少一个形状参数。例如,张量数据为3维数据,在该张量数据的三个维度中,其中两个维度的形状参数固定不变,其描述符的内容可包括表示该张量数据的另一个维度的形状参数。
在一种可能的实现方式中,与各描述符对应的数据存储空间的数据地址可以是固定地址。例如,可以为张量数据划分单独的数据存储空间,每个张量数据在数据存储空间的起始地址与描述符一一对应。在这种情况下,负责对计算指令进行解析的电路或模块(例如本披露计算装置外部的实体)可以根据描述符来确定与操作数对应的数据在数据存储空间中的数据地址。
在一种可能的实现方式中,在与描述符对应的数据存储空间的数据地址为可变地址时,描述符还可用于指示N维的张量数据的地址,其中,描述符的内容还可包括表示张量数据的地址的至少一个地址参数。例如,张量数据为3维数据,在描述符指向该张量数据的地址时,描述符的内容可包括表示该张量数据的地址的一个地址参数,例如张量数据的起始物理地址,也可以包括该张量数据的地址的多个地址参数,例如张量数据的起始地址+地址偏移量,或张量数据基于各维度的地址参数。本领域技术人员可以根据实际需要对地址参数进行设置,本披露对此不作限制。
在一种可能的实现方式中,张量数据的地址参数可以包括描述符的数据基准点在该张量数据的数据存储空间中的基准地址。其中,基准地址可根据数据基准点的变化而不同。本披露对数据基准点的选取不作限制。
在一种可能的实现方式中,基准地址可以包括数据存储空间的起始地址。在描述符的数据基准点是数据存储空间的第一个数据块时,描述符的基准地址即为数据存储空间的起始地址。在描述符的数据基准点是数据存储空间中第一个数据块以外的其他数据时,描述符的基准地址即为该数据块在数据存储空间中的地址。
在一种可能的实现方式中,张量数据的形状参数包括以下至少一种:数据存储空间在N个维度方向的至少一个方向上的尺寸、该存储区域在N个维度方向的至少一个方向上的尺寸、该存储区域在N个维度方向的至少一个方向上的偏移量、处于N个维度方向的对角位置的至少两个顶点相对于数据基准点的位置、描述符所指示的张量数据的数据描述位置与数据地址之间的映射关系。其中,数据描述位置是描述符所指示的张量数据中的点或区域的映射位置,例如,张量数据为3维数据时,描述符可使用三维坐标空间(x,y,z)来表示该张量数据的形状,该张量数据的数据描述位置可以是使用三维空间坐标(x,y,z)表示的、该张量数据映射在三维空间中的点或区域的位置。
应当理解,本领域技术人员可以根据实际情况选择表示张量数据的形状参数,本披露对此不作限制。通过在数据存取过程中使用描述符,可建立数据之间的关联,从而降低数据存取的复杂度,提高指令处理效率。
当硬件并行执行指令时,如果并行执行的指令之间存在依赖关系,则可能导致执行结果错误。例如,如果并行执行的两条指令访问同一存储单元或同一数据,而且这两条指令中至少有一条是写该存储单元的指令,则这两条指令之间存在依赖关系,例如写后读依赖、写后写依赖、或者读后写依赖。此时,如果后一指令在前一指令之前执行,则会导致执行出错。因此必须保证这些指令执行时的顺序一致性,例如可以通过强制顺序执行,也即后一指令必须等待前一指令完成才能执行。
从前面对张量数据的描述可知,张量数据通常为多维数组,数据量较大,因此针对张量数据的指令处理时间相较于标量数据通常会更长。此时如果仍然按照以前的顺序执行方式来对张量数据进行处理,则处理时间过长,效率低下。鉴于此,在本披露的实施例中,提供了一种指令并行方案,其中基于指令的操作所使用的张量数据的坐标空间范围来对操作的并行执行进行限制,从而在硬件的并行执行时,既能保证执行顺序的一致性,又能提高操作的并行程度,由此确保了处理的准确和效率。
图2示出根据本披露实施例的处理装置的示意性框图。如图2所示,处理装置200包括控制单元210和执行单元220。
控制单元210可以配置用于控制处理装置200的操作,例如读取存储器或外部传入的指令,通过译码器211对指令进行解码(译码),向相应的部件发出微操作控制信号等。具体地,控制单元210可以配置成根据接收的指令,控制执行单元220执行相应的处理。指令可以包括但不限于数据存取指令、运算指令、描述符管理指令以及同步指令等。本披露对指令的具体类型及解码的具体方式不作限制。
解码后的指令包括操作码和操作数。当指令涉及对张量数据的处理时,该指令的至少一个操作数可以包括至少一个描述符,该描述符指示以下至少一项信息:张量数据的形状信息和张量数据的空间信息。
执行单元220配置用于在控制单元210的控制下执行具体的指令或操作。执行单元220例如可以包括但不限于算术逻辑单元(arithmetic and logic unit,ALU)、内存存取单元(memory access unit,MAU)、人工智能运算单元(neural functional unit,NFU)等。图2中示意性示出了两个功能单元221和222。本披露对执行单元的具体硬件类型不作限制。
处理装置200还可以包括存储单元230,其可以配置用于存储各种信息,包括但不限于指令、描述符相关联的信息、张量数据等。存储单元230可以包括各种存储资源,包括但不限于内部存储器和外部存储器。内部存储器例如可以包括寄存器、片上SRAM或其他介质缓存。外部存储器例如可以包括片下存储器。本披露对于存储单元的具体实现不作限制。
在一些实施例中,控制单元210可以配置用于:获取指令的第一操作;以及向执行单元220发送该第一操作以及指示允许该第一操作使用的张量数据的第一坐标空间范围的信息。
应当注意,本披露所涉及的操作,可以是处理器硬件支持的基本操作,也可以是将该基本操作进行解析后的微指令(例如请求信号等)。本披露对操作的具体类型不做限定。本披露的处理装置可以并行执行两个操作,也可以并行执行两个以上的操作,本披露对并行执行的操作的数量不做限定。并行执行的两个操作可以属于同一指令,也可以属于不同指令,本披露在此方面没有限制。
在一些实施例中,执行单元220可以配置用于:向控制单元210发送指示执行该第一操作时将使用的该张量数据的第二坐标空间范围的信息。进一步地,执行单元220可以配置成在第一坐标空间范围与第二坐标空间范围的交集所确定的第三坐标空间范围内,执行该第一操作。
在一些实施例中,当第三坐标空间范围为空时,控制单元210可以阻塞该第一操作。通过阻塞在后操作,可以强制存在依赖关系的多个操作按照预定顺序执行,从而保证结果正确性。
在本披露实施例中,通过限制操作执行时所能使用的张量数据的坐标空间范围,例如上面将操作限制在第三坐标空间范围内执行,可以在指令的并行执行时保证指令在每个坐标空间范围上的访问都是顺序的,由此确保了处理的准确和效率。
在一些实施例中,上述第一操作涉及对张量数据的处理。相应地,第一坐标空间范围和第二坐标空间范围可以分别为该张量数据的对应维度的形状坐标空间中的一部分。形状坐标空间映射到张量数据在存储单元230上的数据存储区域。通过将张量数据的形状坐标空间划分为若干坐标空间范围,并基于坐标空间范围的限制(例如,前后操作的坐标空间范围不重叠)来约束指令的并行执行,提高了处理的并行度,减小了处理时间。
如前面针对张量数据的形式信息所描述的,在描述符中可以使用数据描述位置来指示张量数据中的点或区域的映射位置。例如,张量数据为3维数据时,描述符可使用三维空间坐标(x,y,z)来表示该张量数据的形状,该张量数据的数据描述位置可以是使用三维空间坐标(x,y,z)表示的、该张量数据映射在三维空间中的点或区域的位置。因此,在本披露的实施例中,第一、第二和第三坐标空间范围也可以通过这种数据描述位置来表征,进一步地,可以通过N维空间坐标来表征。由于软件侧的编程通常使用空间坐标来引用张量数据中的数据点或数据块,因此,通过张量数据的坐标空间范围来约束操作的并行执行,可以简化软件侧的代码编程,更有利于指令的执行。
大部分情况下,对张量数据的访问通常是按照某个维度,访问坐标逐渐递增、从前到后地遍历张量数据中每个坐标点上的数据单元。因此,在一些实施例中,指示第一坐标空间范围的信息可以包括:允许该第一操作使用的张量数据的一个或多个维度的坐标空间上界。可选地或附加地,在一些实施例中,指示第二坐标空间范围的信息可以包括:预计该第一操作将使用的张量数据的一个或多个维度的坐标空间下界。通过利用张量数据的这种按照维度顺序访问的特性,可以仅使用坐标空间上界或坐标空间下界来表征第一坐标空间范围或第二坐标空间范围,由此可以简化控制信息和相应的控制方法。
图3A-图3B分别示意性示出根据本披露实施例的坐标空间范围的判断机制。图3A以二维数据为例进行示例性图示,然而本领域技术人员可以理解,同样的方案可以类似地应用于三维甚至更多维的张量数据上。
如图3A所示,二维张量数据在存储单元上占据数据存储区域300A,其采用行优先的方式进行存储。该数据存储区域300A在X轴方向上的尺寸用X最大坐标311A来表示,在Y轴方向上的尺寸用Y最大坐标321A来表示。该张量数据上的任意数据元素(例如数据点)可以通过二维空间坐标(x,y)来表示(其中,X轴水平向右,Y轴垂直向下)。显然,该张量数据上的任意数据元素的坐标均不会超过X最大坐标311A和Y最大坐标321A。
如前所述,控制单元210发送的、指示允许第一操作使用的第一坐标空间范围的信息可以是允许该第一操作使用的张量数据的一个或多个维度的坐标空间上界。例如,在图3A中,第一坐标空间范围可以通过X轴上的X上界312A以及Y轴上的Y上界322A来表征。在此示例中,X上界和Y上界表示第一操作访问的数据坐标在X维度上不能超过X上界312A,并且在Y维度上不能超过Y上界322A。图3A中将第一坐标空间范围用斜线阴影示出。
执行单元220发送的、指示执行该第一操作时将使用的第二坐标空间范围的信息可以是预计该第一操作将使用的张量数据的一个或多个维度的坐标空间下界。例如,在图3A中,第二坐标空间范围可以通过X轴上的X下界313A以及Y轴上的Y下界323A来表征。在此示例中,X下界和Y下界表示执行第一操作时,不会访问该张量数据中其X坐标低于X下界,且Y坐标低于Y下界的数据。图3A中将第二坐标空间范围用点填充示出。从图3A可以看出,第二坐标空间范围对应于数据存储区域300A内、其X坐标和Y坐标中任一超过对应下界(X下界或Y下界)的数据所在范围。
第一操作实际执行时可以操作的范围为第三坐标空间范围,其为第一坐标空间范围与第二坐标空间范围的交集。如图3A所示,在当前示例中,第三坐标空间范围为既存在斜线阴影又存在点填充的区域,也即图3A中的“反L型”区域。
在一些实施例中,指示上述各个坐标空间范围的信息可以只指示一个维度上的信息。
图3B仍然以二维数据为例进行示例性图示,但是仅给出了一个维度的信息,例如Y轴上的信息。
类似地,如图3B所示,二维张量数据在存储单元上占据数据存储区域300B,其采用行优先的方式进行存储。该数据存储区域300B在X轴方向上的尺寸用X最大坐标311B来表示,在Y轴方向上的尺寸用Y最大坐标321B来表示。
在此示例中,指示允许第一操作使用的第一坐标空间范围的信息仅给出该张量数据一个维度(例如Y轴)的坐标空间上界。例如,在图3B中,第一坐标空间范围仅通过Y轴上的Y上界322B来表征。此时,另一维度(例如X轴)无法判断,因此可以不对该维度进行限制。在此示例中,Y上界表示第一操作访问的数据坐标在Y维度上不能超过Y上界322B。图3B中将第一坐标空间范围用斜线阴影示出。
在此示例中,指示执行该第一操作时将使用的第二坐标空间范围的信息同样仅给出预计该第一操作将使用的张量数据的一个维度(例如,Y轴)的坐标空间下界。例如,在图3B中,第二坐标空间范围仅通过Y轴上的Y下界323B来表征。此时,另一维度(例如X轴)无法判断,因此可以不对该维度进行限制。在此示例中,Y下界表示执行第一操作时,不会访问该张量数据中其Y坐标低于Y下界的数据。图3B中将第二坐标空间范围用点填充示出。从图3B可以看出,第二坐标空间范围对应于数据存储区域300B内、其Y坐标超过Y下界的数据所在范围。
在此示例中,第一操作实际执行时可以操作的范围,也即第三坐标空间范围,为第一坐标空间范围与第二坐标空间范围的交集。如图3B所示,在当前示例中,第三坐标空间范围为既存在斜线阴影,又存在点填充的区域,也即图3B中间的矩形区域。
本领域技术人员可以理解,在采用坐标空间上界、坐标空间下界的方式来表征第一坐标空间范围和第二坐标空间范围时,其旨在提供一个当前操作可用的尽可能大的范围空间。就此而言,第一坐标空间范围可以是各坐标维度的上界(例如,图3A和图3B中的X最大坐标和Y最大坐标),也可以比这些上界要小;第二坐标空间范围可以是各坐标维度的下界(例如,图3A和图3B中的坐标原点),也可以比这些下界大。
虽然上面描述了通过坐标空间上界、坐标空间下界的方式来表征第一坐标空间范围和第二坐标空间范围的实施方式,但是本领域技术人员可以理解,也可以采取其他方式来表征第一坐标空间范围和第二坐标空间范围,本披露在此方面没有限制。
可以采取多种方式来确定第一坐标空间范围和第二坐标空间范围。
在一些实施例中,第一和第二坐标空间范围可以根据操作的执行动态地确定。在一些实现中,第一坐标空间范围可以基于以下至少一项来确定:操作的先后顺序;操作所涉及的操作数;从执行单元接收的指示在先操作的第二坐标空间范围的信息;以及张量数据的形状坐标空间的预先划分。在一些实施例中,在先操作是指正在执行的、与第一操作访问同一张量数据并存在依赖关系的操作。如前面所提到的,当前操作与在先操作可能存在三种依赖关系,例如写后读依赖、写后写依赖、或者读后写依赖。此时必须保证这些指令执行时的顺序一致性,因此基于在先操作的操作范围、操作状态等可以确定允许当前操作(此处为第一操作)使用的第一坐标空间范围。在又一些实施例中,例如,在采用坐标空间上界、下界方式来表征坐标空间范围的实施例中,可以根据前序操作或指令使用的该张量数据的坐标空间下界作为当前新指令使用的该张量数据的上界。
在一个示例中,当第一操作(也即当前操作)为读操作时,坐标空间上界由在先未结束的(也即前序操作或在先操作)针对该张量数据的写操作的坐标空间下界决定。优选地,由相关的坐标空间下界中的最小值决定。
在另一示例中,当第一操作为写操作时,坐标空间上界由在先未结束的针对该张量数据的写操作的坐标空间下界和针对所述张量数据的读操作的坐标空间下界决定。优选的,由相关的坐标空间下界中的最小值决定。通过选取最小值,可以确保第一操作的执行不会影响前序任一操作的执行。
可选地或附加地,第二坐标空间范围可以基于以下至少一项来确定:操作的执行范围;操作的访问模式;操作的当前执行状态;以及张量数据的形状坐标空间的预先划分。例如,在采用坐标空间上界、下界方式来表征坐标空间范围的实施例中,可以综合考虑上述因素来确定第二坐标空间范围,保证在按照维度访问张量数据时,对应维度上的坐标不小于该坐标空间下界。进一步地,尽量提供坐标空间下界的最大值,从而留给后续操作或指令的可访问空间范围也会越大。
在一个示例中,当第一操作的访问模式为顺序且连续访问时,坐标空间下界可以基于第一操作的后续访问的最小访问坐标来确定。例如,坐标空间下界可以确定为最小访问坐标-1。如图3A所示,当第一操作按照X维度访问数据时,假设所访问数据的最小X坐标为A,则X下界可以确定为A-1;当第一操作按照Y维度访问数据时,假设所访问数据的最小Y坐标为B,则Y下界可以确定为B-1。
在另一示例中,当第一操作的访问模式为有规律的访问时,坐标空间下界可以基于该规律来确定。例如,在卷积运算中,可能需要分块访问张量数据,因此可以根据卷积运算的分块规律来确定坐标空间下界。
在又一示例中,当无法确定第一操作的访问模式时,可以基于预定设置来确定坐标空间下界。例如,坐标空间下界可以是默认值。在图3B的示例中,X维度的X下界例如默认为0。
上文提到第一和第二坐标空间范围还可以结合对张量数据的形状坐标空间的预先划分来确定。具体地,可以首先将张量数据的形状坐标空间划分为若干个空间块,例如在各个维度上均匀或不均匀划分。接着,在每个空间块内,可以基于操作的执行动态地确定第一和第二坐标空间范围。具体的确定方式可以参考前文的描述,此处不再赘述。此时,前述实施例中的形状坐标空间300A、300B等可以相应地替换为当前空间块的区域。在这些实现中,当无法确定某一空间块内的第二坐标空间范围的精确位置时,可以默认为该空间块所对应的范围。
在一些实施例中,张量数据的形状坐标空间的预先划分可以基于以下至少一项来进行:硬件的处理能力;预先设定的参数;以及张量数据的形状坐标空间的大小。硬件的处理能力例如可以包括但不限于硬件所能处理的数据位宽。基于硬件所能处理的数据位宽,对张量数据的形状坐标空间进行分割,可以充分发挥硬件的处理能力,提高并行处理效率。预先设定的参数例如可以直接指定要划分的空间块数量、空间块各个维度的大小等等。基于张量数据的形状坐标空间的大小/尺寸,对张量数据的形状坐标空间进行分割。例如,张量数据为一个二维矩阵时,其大小为M行*N列(M、N均为正整数),则可以将每行平均分割成m份,每列平均分割成n份,从而总计m*n个空间块。
通过这种动态确定坐标空间范围的方式,可以尽可能地挖掘操作之间潜在的并行可能性,由此提高处理效率。
以上描述了在硬件并行执行操作时,为确保对数据处理的顺序一致性,同时提高并行处理效率,而对操作实际使用的空间范围进行约束的方案。本领域技术人员可以理解,当前操作(例如,前述第一操作)与在先操作(或前序操作)可以分别为并行执行的不同指令中的操作;并且当前操作与在先操作也可以分别为同一指令中的并行执行的不同操作,本披露在此方面没有限制。
回到图2,可选地或附加地,处理装置200还可以包括张量接口单元(Tensorinterface Unit,TIU)240。张量接口单元240可以配置成在控制单元210的控制下,实现与描述符相关联的操作。这些操作可以包括但不限于描述符的注册、修改、注销、解析;对描述符内容的读写等。本披露对张量接口单元的具体硬件类型不作限制。通过这种方式,可以通过专用的硬件实现与描述符相关联的操作,进一步提高张量数据的存取效率。
在本披露的一些实施例中,张量接口单元240可以配置成对指令的操作数中包括的描述符进行解析。例如,张量接口单元可以对描述符中包括的张量数据的形状信息进行解析,以便确定例如前述第二坐标空间范围。
尽管在图2中将控制单元210和张量接口单元240示出为两个分离的模块,但是本领域技术人员可以理解,这两个单元也可以实现为一个模块或更多模块,本披露在此方面没有限制。
数据处理装置200可以采用通用处理器(例如中央处理器CPU、图形处理器GPU)和/或专用处理器(例如人工智能处理器、科学计算处理器或数字信号处理器等)来实现,本披露对于数据处理装置的具体类型不作限制。
图4示出根据本披露实施例的处理方法400的示例性流程图。处理方法400例如可以由图2的处理装置200来实现。
如图4所示,方法400开始于步骤S410,获取指令的第一操作。该步骤例如可以由图2的控制单元210来执行。在一些实施例中,第一操作可以涉及对张量数据的处理。
接着,在步骤S420中,确定允许第一操作使用的张量数量的第一坐标空间范围。该步骤例如可以由图2的控制单元210来执行。第一坐标空间范围例如可以是第一操作所涉及的张量数据的形状坐标空间的一部分。
在一些实施例中,第一坐标空间范围的确定可以是基于操作的执行而动态确定的。例如,第一坐标空间范围可以基于以下至少一项来动态确定:操作的先后顺序;操作所涉及的操作数;在先操作的第二坐标空间范围;以及张量数据的形状坐标空间的预先划分。
在一些实施例中,确定第一坐标空间范围可以包括:确定允许第一操作使用的张量数据的一个或多个维度的坐标空间上界。
例如,在一个示例中,当第一操作为读操作时,根据在先未结束的针对该张量数据的写操作的坐标空间下界来确定第一操作的坐标空间上界。优选地,根据相关的坐标空间下界中的最小值确定。
在另一示例中,当第一操作为写操作时,根据在先未结束的针对该张量数据的写操作的坐标空间下界和针对该张量数据的读操作的坐标空间下界来确定第一操作的坐标空间上界。优选地,根据相关的坐标空间下界中的最小值确定。
本领域技术人员可以理解,可以采取多种规则来确定坐标空间上界以表征第一坐标空间范围,只需能够确保存在依赖关系的指令之间执行时的顺序一致性即可,本披露不限于上述示例。
接着,在步骤S430中,确定执行第一操作时将使用的张量数据的第二坐标空间范围。该步骤例如可以由图2的执行单元220来执行。第二坐标空间范围例如可以是第一操作所涉及的张量数据的形状坐标空间的一部分。
在一些实施例中,第二坐标空间范围的确定可以是基于操作的执行而动态确定的。例如,第二坐标空间范围可以基于以下至少一项来动态确定:操作的执行范围;操作的访问模式;操作的当前执行状态;以及张量数据的形状坐标空间的预先划分。
在一些实施例中,确定第二坐标空间范围可以包括:确定预计第一操作将使用的张量数据的一个或多个维度的坐标空间下界。
在一个示例中,当第一操作的访问模式为顺序且连续访问时,基于第一操作的后续访问的最小访问坐标来确定该坐标空间下界。
在另一示例中,当第一操作的访问模式为有规律的访问时,基于该规律来确定坐标空间下界。
在又一示例中,当无法确定第一操作的访问模式时,基于预定设置来确定坐标空间下界。
同样地,本领域技术人员可以理解,可以采取多种规则来确定坐标空间下界以表征第二坐标空间范围,只需能够确保存在依赖关系的指令之间执行时的顺序一致性即可,本披露不限于上述示例。
最后,在步骤S440中,在第一坐标空间范围与第二坐标空间范围的交集所确定的第三坐标空间范围内,执行该第一操作。该步骤例如可以由图2的执行单元220来执行。
上面已经参考流程图描述了本披露实施例的处理装置所执行的处理方法。本领域技术人员可以理解,由于基于所处理数据的空间范围对并行执行的操作进行约束,可以使得在保证操作执行的顺序一致性的同时,提高操作的并行程度,从而提高处理效率。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
进一步需要说明的是,虽然图4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
图5是示出根据本披露实施例的一种组合处理装置500的结构图。如图5中所示,该组合处理装置500包括计算处理装置502、接口装置504、其他处理装置506和存储装置508。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置510,该计算装置可以配置成图2所示的处理装置200,用于执行本文结合附图4所描述的操作。
在不同的实施例中,本披露的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。
在示例性的操作中,本披露的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics ProcessingUnit,GPU)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
在一个或多个实施例中,该其他处理装置可以作为本披露的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。
在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。
附加地或可选地,本披露的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
在一些实施例里,本披露还公开了一种芯片(例如图6中示出的芯片602)。在一种实现中,该芯片是一种系统级芯片(System on Chip,SoC),并且集成有一个或多个如图5中所示的组合处理装置。该芯片可以通过对外接口装置(如图6中示出的对外接口装置606)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如DRAM接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图6对该板卡进行详细地描述。
图6是示出根据本披露实施例的一种板卡600的结构示意图。如图6中所示,该板卡包括用于存储数据的存储器件604,其包括一个或多个存储单元610。该存储器件可以通过例如总线等方式与控制器件608和上文所述的芯片602进行连接和数据传输。进一步,该板卡还包括对外接口装置606,其配置用于芯片(或芯片封装结构中的芯片)与外部设备612(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准PCIE接口等。
在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(Micro ControllerUnit,MCU),以用于对所述芯片的工作状态进行调控。
根据上述结合图5和图6的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如CPU、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所述的处理装置,还包括存储单元,其中所述第一坐标空间范围和所述第二坐标空间范围分别为所述张量数据的形状坐标空间的一部分,所述形状坐标空间映射到所述张量数据在所述存储单元上的数据存储区域。
条款3.根据条款2所述的处理装置,其中所述第一坐标空间范围和所述第二坐标空间范围是基于操作的执行而动态确定的。
条款4.根据条款3所述的处理装置,其中所述第一坐标空间范围基于以下至少一项来动态确定:
操作的先后顺序;
操作所涉及的操作数;
从所述执行单元接收的指示在先操作的第二坐标空间范围的信息;以及
所述张量数据的形状坐标空间的预先划分。
条款5.根据条款3-4任一所述的处理装置,其中所述第二坐标空间范围基于以下至少一项来动态确定:
操作的执行范围;
操作的访问模式;
操作的当前执行状态;以及
所述张量数据的形状坐标空间的预先划分。
条款6.根据条款4-5任一所述的处理装置,其中:
所述指示所述第一坐标空间范围的信息包括:允许所述第一操作使用的所述张量数据的一个或多个维度的坐标空间上界;和/或
所述指示所述第二坐标空间范围的信息包括:预计所述第一操作将使用的所述张量数据的一个或多个维度的坐标空间下界。
条款7.根据条款6所述的处理装置,其中:
当所述第一操作为读操作时,所述坐标空间上界由在先未结束的针对所述张量数据的写操作的坐标空间下界决定;和/或
当所述第一操作为写操作时,所述坐标空间上界由在先未结束的针对所述张量数据的写操作的坐标空间下界和针对所述张量数据的读操作的坐标空间下界决定。
条款8.根据条款7所述的处理装置,其中所述坐标空间上界由相关的坐标空间下界中的最小值决定。
条款9.根据条款6-8任一所述的处理装置,其中:
当所述第一操作的访问模式为顺序且连续访问时,所述坐标空间下界基于所述第一操作的后续访问的最小访问坐标确定;
当所述第一操作的访问模式为有规律的访问时,所述坐标空间下界基于所述规律确定;和/或
当无法确定所述第一操作的访问模式时,所述坐标空间下界基于预定设置确定。
条款10.根据条款4-9任一所述的处理装置,其中所述张量数据的形状坐标空间的预先划分是基于以下至少一项而执行的:
硬件的处理能力;
预先设定的参数;以及
所述张量数据的形状坐标空间的大小。
条款11.根据条款1-10任一所述的处理装置,其中所述控制单元还配置用于:
当所述第三坐标空间范围为空时,阻塞所述第一操作。
条款12.根据条款4-11任一所述的处理装置,其中:
所述第一操作与所述在先操作分别为并行执行的不同指令中的操作;或者
所述第一操作与所述在先操作分别为同一指令中的并行执行的不同操作。
条款13.一种芯片,其特征在于,所述芯片包括如条款1-12任一所述的处理装置。
条款14.一种板卡,其特征在于,所述板卡包括条款13所述的芯片。
条款15.一种处理方法,所述方法包括:
获取指令的第一操作;
确定允许所述第一操作使用的张量数据的第一坐标空间范围;
确定执行所述第一操作时将使用的所述张量数据的第二坐标空间范围;以及
在所述第一坐标空间范围与所述第二坐标空间范围的交集所确定的第三坐标空间范围内,执行所述第一操作。
条款16.根据条款15所述的处理方法,其中所述第一坐标空间范围和所述第二坐标空间范围分别为所述张量数据的形状坐标空间的一部分,所述形状坐标空间映射到所述张量数据在存储单元上的数据存储区域。
条款17.根据条款16所述的处理方法,其中所述第一坐标空间范围和所述第二坐标空间范围是基于操作的执行而动态确定的。
条款18.根据条款17所述的处理方法,其中基于以下至少一项来动态确定所述第一坐标空间范围:
操作的先后顺序;
操作所涉及的操作数;
在先操作的第二坐标空间范围;以及
所述张量数据的形状坐标空间的预先划分。
条款19.根据条款17-18任一所述的处理方法,其中基于以下至少一项来动态确定所述第二坐标空间范围:
操作的执行范围;
操作的访问模式;
操作的当前执行状态;以及
所述张量数据的形状坐标空间的预先划分。
条款20.根据条款17-19任一所述的处理方法,其中:
确定所述第一坐标空间范围包括:确定允许所述第一操作使用的所述张量数据的一个或多个维度的坐标空间上界;和/或
确定所述第二坐标空间范围包括:确定预计所述第一操作将使用的所述张量数据的一个或多个维度的坐标空间下界。
条款21.根据条款20所述的处理方法,其中:
当所述第一操作为读操作时,根据在先未结束的针对所述张量数据的写操作的坐标空间下界来确定所述坐标空间上界;和/或
当所述第一操作为写操作时,根据在先未结束的针对所述张量数据的写操作的坐标空间下界和针对所述张量数据的读操作的坐标空间下界来确定所述坐标空间上界。
条款22.根据条款21所述的处理方法,其中所述坐标空间上界根据相关的坐标空间下界的最小值确定。
条款23.根据条款20-22任一所述的处理方法,其中:
当所述第一操作的访问模式为顺序且连续访问时,基于所述第一操作的后续访问的最小访问坐标来确定所述坐标空间下界;
当所述第一操作的访问模式为有规律的访问时,基于所述规律来确定所述坐标空间下界;和/或
当无法确定所述第一操作的访问模式时,基于预定设置来确定所述坐标空间下界。
条款24.根据条款18-23任一所述的处理方法,其中所述张量数据的形状坐标空间的预先划分是基于以下至少一项而执行的:
硬件的处理能力;
预先设定的参数;以及
所述张量数据的形状坐标空间的大小。
条款25.根据条款15-24任一所述的处理方法,还包括:
当所述第三坐标空间范围为空时,阻塞所述第一操作。
条款26.根据条款18-25任一所述的处理方法,其中:
所述第一操作与所述在先操作分别为并行执行的不同指令中的操作;或者
所述第一操作与所述在先操作分别为同一指令中的并行执行的不同操作。
Claims (26)
1.一种处理装置,包括控制单元和执行单元,其中:
所述控制单元配置用于:
获取指令的第一操作;以及
向所述执行单元发送所述第一操作以及指示允许所述第一操作使用的张量数据的第一坐标空间范围的信息;并且
所述执行单元配置用于:
向所述控制单元发送指示执行所述第一操作时将使用的所述张量数据的第二坐标空间范围的信息;以及
在所述第一坐标空间范围与所述第二坐标空间范围的交集所确定的第三坐标空间范围内,执行所述第一操作。
2.根据权利要求1所述的处理装置,还包括存储单元,其中所述第一坐标空间范围和所述第二坐标空间范围分别为所述张量数据的形状坐标空间的一部分,所述形状坐标空间映射到所述张量数据在所述存储单元上的数据存储区域。
3.根据权利要求2所述的处理装置,其中所述第一坐标空间范围和所述第二坐标空间范围是基于操作的执行而动态确定的。
4.根据权利要求3所述的处理装置,其中所述第一坐标空间范围基于以下至少一项来动态确定:
操作的先后顺序;
操作所涉及的操作数;
从所述执行单元接收的指示在先操作的第二坐标空间范围的信息;以及
所述张量数据的形状坐标空间的预先划分。
5.根据权利要求3-4任一所述的处理装置,其中所述第二坐标空间范围基于以下至少一项来动态确定:
操作的执行范围;
操作的访问模式;
操作的当前执行状态;以及
所述张量数据的形状坐标空间的预先划分。
6.根据权利要求4-5任一所述的处理装置,其中:
所述指示所述第一坐标空间范围的信息包括:允许所述第一操作使用的所述张量数据的一个或多个维度的坐标空间上界;和/或
所述指示所述第二坐标空间范围的信息包括:预计所述第一操作将使用的所述张量数据的一个或多个维度的坐标空间下界。
7.根据权利要求6所述的处理装置,其中:
当所述第一操作为读操作时,所述坐标空间上界由在先未结束的针对所述张量数据的写操作的坐标空间下界决定;和/或
当所述第一操作为写操作时,所述坐标空间上界由在先未结束的针对所述张量数据的写操作的坐标空间下界和针对所述张量数据的读操作的坐标空间下界决定。
8.根据权利要求7所述的处理装置,其中所述坐标空间上界由相关的坐标空间下界中的最小值决定。
9.根据权利要求6-8任一所述的处理装置,其中:
当所述第一操作的访问模式为顺序且连续访问时,所述坐标空间下界基于所述第一操作的后续访问的最小访问坐标确定;
当所述第一操作的访问模式为有规律的访问时,所述坐标空间下界基于所述规律确定;和/或
当无法确定所述第一操作的访问模式时,所述坐标空间下界基于预定设置确定。
10.根据权利要求4-9任一所述的处理装置,其中所述张量数据的形状坐标空间的预先划分是基于以下至少一项而执行的:
硬件的处理能力;
预先设定的参数;以及
所述张量数据的形状坐标空间的大小。
11.根据权利要求1-10任一所述的处理装置,其中所述控制单元还配置用于:
当所述第三坐标空间范围为空时,阻塞所述第一操作。
12.根据权利要求4-11任一所述的处理装置,其中:
所述第一操作与所述在先操作分别为并行执行的不同指令中的操作;或者
所述第一操作与所述在先操作分别为同一指令中的并行执行的不同操作。
13.一种芯片,其特征在于,所述芯片包括如权利要求1-12任一所述的处理装置。
14.一种板卡,其特征在于,所述板卡包括权利要求13所述的芯片。
15.一种处理方法,所述方法包括:
获取指令的第一操作;
确定允许所述第一操作使用的张量数据的第一坐标空间范围;
确定执行所述第一操作时将使用的所述张量数据的第二坐标空间范围;以及
在所述第一坐标空间范围与所述第二坐标空间范围的交集所确定的第三坐标空间范围内,执行所述第一操作。
16.根据权利要求15所述的处理方法,其中所述第一坐标空间范围和所述第二坐标空间范围分别为所述张量数据的形状坐标空间的一部分,所述形状坐标空间映射到所述张量数据在存储单元上的数据存储区域。
17.根据权利要求16所述的处理方法,其中所述第一坐标空间范围和所述第二坐标空间范围是基于操作的执行而动态确定的。
18.根据权利要求17所述的处理方法,其中基于以下至少一项来动态确定所述第一坐标空间范围:
操作的先后顺序;
操作所涉及的操作数;
在先操作的第二坐标空间范围;以及
所述张量数据的形状坐标空间的预先划分。
19.根据权利要求17-18任一所述的处理方法,其中基于以下至少一项来动态确定所述第二坐标空间范围:
操作的执行范围;
操作的访问模式;
操作的当前执行状态;以及
所述张量数据的形状坐标空间的预先划分。
20.根据权利要求17-19任一所述的处理方法,其中:
确定所述第一坐标空间范围包括:确定允许所述第一操作使用的所述张量数据的一个或多个维度的坐标空间上界;和/或
确定所述第二坐标空间范围包括:确定预计所述第一操作将使用的所述张量数据的一个或多个维度的坐标空间下界。
21.根据权利要求20所述的处理方法,其中:
当所述第一操作为读操作时,根据在先未结束的针对所述张量数据的写操作的坐标空间下界来确定所述坐标空间上界;和/或
当所述第一操作为写操作时,根据在先未结束的针对所述张量数据的写操作的坐标空间下界和针对所述张量数据的读操作的坐标空间下界来确定所述坐标空间上界。
22.根据权利要求21所述的处理方法,其中所述坐标空间上界根据相关的坐标空间下界中的最小值确定。
23.根据权利要求20-22任一所述的处理方法,其中:
当所述第一操作的访问模式为顺序且连续访问时,基于所述第一操作的后续访问的最小访问坐标来确定所述坐标空间下界;
当所述第一操作的访问模式为有规律的访问时,基于所述规律来确定所述坐标空间下界;和/或
当无法确定所述第一操作的访问模式时,基于预定设置来确定所述坐标空间下界。
24.根据权利要求18-23任一所述的处理方法,其中所述张量数据的形状坐标空间的预先划分是基于以下至少一项而执行的:
硬件的处理能力;
预先设定的参数;以及
所述张量数据的形状坐标空间的大小。
25.根据权利要求15-24任一所述的处理方法,还包括:
当所述第三坐标空间范围为空时,阻塞所述第一操作。
26.根据权利要求18-25任一所述的处理方法,其中:
所述第一操作与所述在先操作分别为并行执行的不同指令中的操作;或者
所述第一操作与所述在先操作分别为同一指令中的并行执行的不同操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011270359.2A CN114489803A (zh) | 2020-11-13 | 2020-11-13 | 处理装置、处理方法及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011270359.2A CN114489803A (zh) | 2020-11-13 | 2020-11-13 | 处理装置、处理方法及相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114489803A true CN114489803A (zh) | 2022-05-13 |
Family
ID=81491226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011270359.2A Pending CN114489803A (zh) | 2020-11-13 | 2020-11-13 | 处理装置、处理方法及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114489803A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2628208A (en) * | 2023-01-20 | 2024-09-18 | Advanced Risc Mach Ltd | Tracking buffer reduction and reuse in a processor |
-
2020
- 2020-11-13 CN CN202011270359.2A patent/CN114489803A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2628208A (en) * | 2023-01-20 | 2024-09-18 | Advanced Risc Mach Ltd | Tracking buffer reduction and reuse in a processor |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170004089A1 (en) | Patch memory system | |
US20210150325A1 (en) | Data processing method and apparatus, and related product | |
CN114580606A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN116775518A (zh) | 用于高效访问多维数据结构和/或其他大型数据块的方法和装置 | |
CN114489803A (zh) | 处理装置、处理方法及相关产品 | |
WO2022100345A1 (zh) | 处理方法、处理装置及相关产品 | |
CN113807507B (zh) | 数据处理方法及装置以及相关产品 | |
CN114281561A (zh) | 处理单元、用于处理单元的同步方法及相应产品 | |
CN114489805A (zh) | 处理方法、处理装置及相关产品 | |
CN116775519A (zh) | 用于高效访问多维数据结构和/或其他大型数据块的方法和装置 | |
CN111782274B (zh) | 数据处理装置及相关产品 | |
WO2022100286A1 (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN114489802A (zh) | 数据处理装置、数据处理方法及相关产品 | |
CN113867800A (zh) | 计算装置、集成电路芯片、板卡、电子设备和计算方法 | |
CN114489804A (zh) | 处理方法、处理装置及相关产品 | |
CN114489788A (zh) | 指令处理装置、指令处理方法及相关产品 | |
CN114489789A (zh) | 处理装置、处理方法及相关产品 | |
CN114691353A (zh) | 一种张量的读取方法、装置以及相关产品 | |
WO2022001499A1 (zh) | 一种计算装置、芯片、板卡、电子设备和计算方法 | |
JP7266121B2 (ja) | 計算装置、チップ、ボードカード、電子デバイスおよび計算方法 | |
WO2022062682A1 (zh) | 数据处理装置、集成电路芯片、设备及其实现的方法 | |
CN112395002B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN114282159A (zh) | 数据处理装置、集成电路芯片、设备及其实现的方法 | |
US20230334758A1 (en) | Methods and hardware logic for writing ray tracing data from a shader processing unit of a graphics processing unit | |
WO2022253287A1 (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 |