集成计算装置、集成电路芯片、板卡和计算方法与流程

文档序号:28268095发布日期:2021-12-31 19:05阅读:282来源:国知局
集成计算装置、集成电路芯片、板卡和计算方法与流程

1.本披露一般地涉及数据处理领域。更具体地,本披露涉及一种集成计算装置、集成电路芯片、板卡和使用前述集成计算装置来执行运算操作的方法。


背景技术:

2.现有的人工智能运算往往包含大量的数据运算,如卷积运算、图像处理等。随着数据量的增多,例如矩阵运算的数据运算所涉及的运算量和存储量都会由于数据规模的增大而急剧增加。现有的运算方式中,通常利用中央处理器(“cpu”)或者图像处理单元(“gpu”)等通用处理器进行运算。然而,通用处理器往往由于其通用性特征以及使用的器件冗余性较高,从而使其功耗开销较大,因此导致其使用性能受限。
3.另外,现有的运算处理电路通常采用单一的硬件架构,只能单一地处理某一类架构下的运算,而无法根据实际需求灵活地选择适合的处理电路。另外,对于一些采用硬连接方式的固定硬件架构来说,当数据规模扩大或数据格式发生变化时,不仅可能会出现不能支持某类运算的情形,而且会在运算过程中使其运算性能极大受限,甚至达到不能操作的情形。


技术实现要素:

4.为了至少解决上述现有技术中存在的缺陷,本披露提供了一种支持多种类型运算和操作模式、提高运算效率并且节省运算成本和开销的解决方案。具体地,本披露在如下的多个方面中提供前述的解决方案。
5.在第一方面中,本披露提供一种集成计算装置,包括主控制电路、第一主处理电路和第二主处理电路,其中:
6.所述主控制电路,其配置成获取计算指令并对所述计算指令进行解析以获得运算指令,并且将所述运算指令发送至所述第一主处理电路和所述第二主处理电路中的至少一个;
7.所述第一主处理电路,其包括一组或多组流水运算电路,其中每组流水运算电路配置成根据接收到的数据和所述运算指令执行流水操作;以及
8.所述第二主处理电路,其包括多个子处理电路,其中每个子处理电路配置成根据接收到的数据和所述运算指令执行多线程操作。
9.在第二方面中,本披露提供一种集成电路芯片,包括前述及其稍后描述的多个实施例的集成计算装置。
10.在第三方面中,本披露提供一种板卡,包括前述的集成电路芯片。
11.在第四方面中,本披露提供一种使用集成计算装置来执行运算操作的方法,其中所述集成计算装置包括主控制电路、第一主处理电路和第二主处理电路,所述方法包括:
12.利用所述主控制电路来获取计算指令并对所述计算指令进行解析以获得运算指令,并将所述运算指令发送至所述第一主处理电路和所述第二主处理电路中的至少一个;
13.利用包括在所述第一主处理电路中的一组或多组流水运算电路来根据接收到的数据和所述运算指令执行流水操作;以及
14.利用包括在所述第二主处理电路中的多个子处理电路来根据接收到的数据和所述运算指令执行多线程操作。
15.通过利用本披露的集成计算装置、集成电路芯片、板卡和方法,可以克服单一类型硬件架构下的操作限制,提升包括例如人工智能领域在内的各类数据处理领域在数据处理和运算方面的运行效率,减小数据运算的时间和功耗,并降低运算的开销和成本。
附图说明
16.通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
17.图1是示出根据本披露实施例的集成计算装置的总体架构图;
18.图2是示出根据本披露实施例的集成计算装置的示例具体架构图;
19.图3是示出根据本披露实施例的第一主处理电路的示例结构图;
20.图4a,4b和4c是示出根据本披露实施例的数据转换电路所执行的矩阵转换示意图;
21.图5a,5b,5c和5d是示出根据本披露实施例的多个子处理电路的多种连接关系的示意图;
22.图6a,6b,6c和6d是示出根据本披露实施例的多个子处理电路的另外多种连接关系的示意图;
23.图7a和图7b是分别示出根据本披露实施例的子处理电路的不同环路结构的示意图;
24.图8a和图8b是分别示出根据本披露实施例的子处理电路的另外不同环路结构的示意图;
25.图9是示出根据本披露实施例的集成计算装置和从处理电路的示意架构图;
26.图10是示出根据本披露实施例的使用集成计算装置来执行运算操作的方法的简化流程图;
27.图11是示出根据本披露实施例的一种组合处理装置的结构图;以及
28.图12是示出根据本披露实施例的一种板卡的结构示意图。
具体实施方式
29.下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
30.下面结合附图来详细描述本公开的具体实施方式。
31.图1是示出根据本披露实施例的集成计算装置100的总体架构图。如图1中所示,本披露的集成计算装置100可以包括主控制电路102、第一主处理电路104和第二主处理电路
106。在执行例如计算操作的各种运算操作中,所述主控制电路可以配置成获取计算指令并对所述计算指令进行解析以获得运算指令,并且将运算指令发送到所述第一主处理电路和所述第二主处理电路中的至少一个。根据本披露的方案,计算指令可以是一种形式的硬件指令并且包括一个或多个操作码,而每个操作码可以表示将要由第一主处理电路或第二主处理电路执行的一个或多个具体的操作。这些操作可以根据应用场景的不同而包括不同类型的操作,例如可以包括加法操作或乘法操作等算术运算、逻辑运算、比较运算或者查表运算,或者前述各类运算的任意多种组合。相应地,在本披露中,运算指令可以是根据计算指令解析后得到的处理电路内部执行的一个或多个微指令。具体地,一个运算指令中可以包括对应于计算指令中的一个操作码的一个或多个微指令,以完成一个或多个操作。
32.在一个实施例中,在解析所述计算指令的过程中,所述主控制电路102可以配置成获取所述计算指令中的指令标识信息,并且根据所述指令标识信息将所述运算指令发送到所述第一主处理电路和所述第二主处理电路中的至少一个。可以看出,借助于前述的指令标识信息,主控制电路可以针对性地向指令标识信息中标识的第一主处理电路和/或第二主处理电路发送运算指令。进一步,根据应用场景的不同,在解析所述计算指令后获得的运算指令可以是经主控制电路译码后的运算指令或者可以是未经主控制电路译码的运算指令。当运算指令是未经主控制电路译码的运算指令时,则第一主处理电路和第二主处理电路内可以包括相应的译码电路来执行运算指令的译码,以例如得到多个微指令。
33.在另一个实施例中,在解析所述计算指令的过程中,所述主控制电路可以配置成对获取的计算指令进行译码,并且接着根据所述译码的结果以及所述第一主处理电路和第二主处理电路的工作状态,将所述运算指令发送给所述第一主处理电路和第二主处理电路中的至少一个。在该实施例中,第一主处理电路和第二主处理电路二者都支持非特定的相同类型运算。因此,为了提高主处理电路的利用率和提高运算效率,可以将运算指令发送给使用占用率不高或处于空闲态的主处理电路。
34.在一个或多个实施例中,所述第一主处理电路104可以包括一组或多组流水运算电路,其中每组流水运算电路可以配置成根据接收到的数据和运算指令执行流水操作。在一些应用场景中,每组流水运算电路可以包括至少一个运算器(例如一个或多个加法器),以执行一级流水运算。进一步,当每组流水运算电路包括的运算器需要进行分级或者包括多种类型的运算器时,则该组流水运算电路可以构成一条多级运算流水线,并且可以配置成执行多级流水运算。例如,一组流水运算电路的结构可以包括第一级加法器、第二级乘法器、第三级加法器构成的三级流水,以执行加法和乘法操作。又例如,一组流水运算电路的结构可以包括如乘法器、加法器、非线性运算器构成的三级流水,用于流水完成加法、乘法和激活操作。
35.在一些实施例中,所述第二主处理电路106可以包括多个子处理电路,其中每个子处理电路可以配置成根据接收到的数据和运算指令执行多线程操作。在不同的应用场景中,多个子处理电路之间的连接方式既可以是通过硬线布置的硬连接方式,或者可以是根据例如微指令进行配置的逻辑连接方式,以形成多种子处理电路阵列的拓扑结构。例如,前述的多个子处理电路之间可以一维或多维阵列的拓扑结构进行连接排布(如图5与图6中示出的),并且每个子处理电路可以在一定范围内与指定方向和预定间隔模式的其他子处理电路进行连接。进一步,多个子处理电路可以经所述连接而串接形成一个或多个闭合的环
路(如图7与图8中示出的)。
36.图2是示出根据本披露实施例的集成计算装置200的示例具体架构图。从图2中可以看出,集成计算装置200不仅包括图1中的集成计算装置100的主控制电路102、第一主处理电路104和第二主处理电路106,还进一步示出了第一主处理电路104和第二主处理电路106中包含的多个电路,因此关于图1描述的技术细节同样也适用于图2所示出的内容。鉴于前文已经结合图1对主控制电路、第一主处理电路以及第二主处理电路的功能进行了详细描述,下文将不再赘述。
37.如图2所示,第一主处理电路104可以包括多组流水运算电路109,其中所述每组流水运算电路可以包括一个或多个运算器,并且当所述每组流水运算电路包括多个运算器时,所述多个运算器可以配置成执行多级流水运算,也即构成一条多级运算流水线。
38.在一些应用场景中,本披露的流水运算电路可以支持一元运算(即只有一项输入数据的情形)。以神经网络中的scale层+relu层处的运算操作为例,假设待执行的计算指令表达为result=relu(a*ina+b),其中ina是输入数据(例如可以是向量或矩阵),a、b均为运算常量。对于该计算指令,可以应用本披露的包括乘法器、加法器、非线性运算器的一组三级流水运算电路来执行运算。具体来说,可以利用第一级流水的乘法器计算输入数据ina与a的乘积,以获得第一级流水运算结果。接着,可以利用第二级流水的加法器,对该第一级流水运算结果(a*ina)与b执行加法运算获得第二级流水运算结果。最后,可以利用第三级流水的relu激活函数,对该第二级流水运算结果(a*ina+b)进行激活操作,以获得最终的运算结果result。
39.在一些应用场景中,本披露的流水运算电路可以支持二元运算(例如卷积计算指令result=conv(ina,inb))或三元运算(例如卷积计算指令result=conv(ina,inb,bias)),其中输入数据ina、inb与bias既可以是向量(例如可以是整型、定点型或浮点型数据),也可以是矩阵。这里以卷积计算指令result=conv(ina,inb)为例,可以利用三级流水运算电路结构中包括的多个乘法器、至少一个加法树和至少一个非线性运算器来执行该计算指令所表达的卷积运算,其中两个输入数据ina和inb可以例如是神经元数据。具体来说,首先可以利用三级流水运算电路中的第一级流水乘法器进行计算,从而可以获得第一级流水运算结果product=ina*inb(视为运算指令中的一条微指令,其对应于乘法操作)。继而可以利用第二级流水运算电路中的加法树对第一级流水运算结果“product”执行加和操作,以获得第二级流水运算结果sum。最后,利用第三级流水运算电路的非线性运算器对“sum”执行激活操作,从而得到最终的卷积运算结果。
40.在一个应用场景中,每组流水运算电路包括的一个或多个运算器既可以执行上述的算术四则运算,还可以进行查表或数据类型转换等多种运算操作。例如在数据类型转换的运算操作中,当输入数据ina为浮点型32位数据(表示为float32)时,可以根据实际运算需求,利用运算器转换成所需的浮点型16位数据(表示为float16)、定点型32位数据(表示为fix32)或整型8位数据(表示为int8)等数据类型。根据操作需求的不同,本披露的流水运算电路不但可以支持上述多种数据类型的转换操作,还可以支持多种数据类型的求绝对值操作和硬化操作等功能。
41.在一个实施例中,第一主处理电路104还可以包括运算处理电路111,其可以配置成根据运算指令对所述流水运算电路执行运算前的数据(例如输入神经元)进行预处理或
者对运算后的数据(例如输出神经元)进行后处理。在一些实施例中,运算处理电路111还可以与图9中示出的从处理电路112配合使用,以完成预期的运算操作。在一些应用场景中,前述的预处理和后处理可以例如包括数据拆分和/或数据拼接操作。在对数据执行拆分操作的场景中,假设在对一个指定位宽、按行排列的数据n(例如可以是按矩阵排列的形式)执行运算前,运算处理电路可以对该数据n分别按偶数行(表示为n_2i,其中i可以是大于或等于0的自然数)和奇数行(表示为n_2i+1)进行拆分。进一步,在对数据执行拼接操作的场景中,可以根据预定的要求将前例中拆分后的该数据n的偶数行“n_2i”的低256位作为低位与其奇数行“n_2i+1”的低256位作为高位进行拼接,由此组成一个具有512位的新数据。
42.在另一些应用场景中,在针对执行运算后获得的数据m(例如可以是按矩阵排列的形式)进行处理操作时,运算处理电路可以将数据m偶数行的低256位,先以8位作为1个单位数据进行拆分,以得到32个偶数行单位数据(分别表示为m_2i0至m_2i
31
)。类似地,可以将数据m奇数行的低256位也以8位作为1个单位数据进行拆分,以得到32个奇数行单位数据(分别表示为m_(2i+1)0至m_(2i+1)
31
)。进一步,将拆分后的32个奇数行单位数据与32个偶数行单位数据,根据数据位由低到高、先偶数行后奇数行的顺序依次交替布置。具体地,将偶数行单位数据0(m_2i0)布置在低位,再顺序布置奇数行单位数据0(m_(2i+1)0)。接着,布置偶数行单位数据1(m_2i1)
……
。以此类推,当完成奇数行单位数据31(m_(2i+1)
31
)的布置时,64个单位数据拼接组成一个512位的新数据。
43.在一个实施例中,第一主处理电路104还可以包括数据转换电路113,其可以配置成根据所述运算指令执行数据转换操作。在一些运算操作中,当数据是矩阵时,数据转换操作可以是针对矩阵元素的排列位置进行的变换。该变换可以例如包括矩阵转置与镜像(稍后结合图4a-图4c描述)、矩阵按照预定的角度(例如是90度、180度或270度)旋转和矩阵维度的转换。
44.进一步,第二主处理电路106可以包括多个子处理电路115。其中每个子处理电路可以包括逻辑运算电路1151,其可以配置成根据运算指令和接收到的数据执行逻辑运算,例如对接收到的数据执行与或非、移位操作或比较操作等逻辑运算操作。进一步,每个子处理电路还可以包括算术运算电路1153,其可以配置成执行算术运算操作,例如加法、减法或乘法等线性运算。
45.在一个实施例中,每个子处理电路可以包括存储电路1152,其包括数据存储电路和/或谓词存储电路,其中所述数据存储电路可以配置成存储所述子处理电路的运算数据(例如像素)与中间运算结果中的至少一项。进一步,所述谓词存储电路可以配置成存储利用所述运算指令获取的每个所述子处理电路的谓词存储电路序号和谓词信息。在具体的存储应用中,存储电路1152可以根据实际需要采用寄存器或者静态随机存取存储器“sram”等存储器来实现。
46.在一个应用场景中,谓词存储电路可以包括a个1位寄存器,以用于存储谓词信息。进一步,可以用b位的二进制数来表示a个1位寄存器的序号,其中b>=log2(a)。例如,假设子处理电路中的谓词存储电路可以包括从00000~11111顺序编号的32个1位寄存器。由此,该子处理电路可以根据接收到的运算指令中指定的寄存器序号“00101”来读取对应序号为“00101”的寄存器中的谓词信息。
47.在一个实施例中,所述谓词存储电路可以配置成根据所述运算指令对所述谓词信
息进行更新。例如,可以根据运算指令中的配置信息直接更新谓词信息,或者也可以根据运算指令中提供的配置信息存储地址来获取配置信息,以便对谓词信息进行更新。在子处理电路执行运算的过程中,谓词存储电路还可以根据每个所述子处理电路的比较结果(其在本披露的上下文中是运算结果的一种形式)对所述谓词信息进行更新。例如,可以利用所述子处理电路接收到的输入数据与其数据存储电路中的存储数据进行比较来更新谓词信息。当所述输入数据大于所述存储数据时,则设置该子处理电路的谓词信息为1。反之,当所述输入数据小于所述存储数据时,则设置所述谓词信息为0,或者维持其原数值不变。
48.在执行运算操作前,每个子处理电路可以根据运算指令中的信息,来判断该子处理电路是否执行该运算指令的操作。进一步,每个所述子处理电路可以配置成根据所述运算指令中的所述谓词存储电路序号来获取对应于所述谓词存储电路的所述谓词信息,并且根据所述谓词信息来确定该所述子处理电路是否执行所述运算指令。例如,当子处理电路根据所述运算指令中指定的谓词存储电路序号读取谓词信息获得的数值是1时,则表示该子处理电路执行所述运算指令(如可以是令子处理电路读取该指令中指向的数据,并且将读取的数据存入该子处理电路的数据存储电路)。反之,当子处理电路根据所述运算指令中指定的谓词存储电路序号读取谓词信息获得的数值是0时,则表示该子处理电路不执行所述运算指令。
49.在一个实施例中,所述第二主处理电路106还可以包括数据处置电路117,其可以包括前处置电路和后处置电路中的至少一个。所述前处置电路可以配置成在所述子处理电路执行运算前对运算数据进行预处理操作(稍后结合图7b描述),例如执行数据拼接或数据摆放操作。所述后处置电路可以配置成在所述子处理电路执行运算后对运算结果进行后处理操作,例如执行数据还原或数据压缩。
50.为了实现数据的传递和存储,本披露的集成计算装置200还可以包括主存储电路108,其可以接收并存储来自于主控制电路的数据,以作为第一和/或第二主处理电路的输入数据。具体地,可以根据存储方式或存储数据的特征进一步对主存储电路进行划分,所述主存储电路108可以包括主存储模块119和主缓存模块121中的至少一个。其中所述主存储模块119可以配置成存储用于第一主处理电路和/或第二主处理电路中待执行运算的数据(例如可以是神经网络中的神经元或像素数据)与执行运算后的运算结果(例如可以是神经网络中的卷积运算结果)。所述主缓存模块121可以配置成缓存所述第一主处理电路与所述第二主处理电路中至少一个执行运算后的中间运算结果。
51.在主存储电路与第一主处理电路的交互应用中,第一主处理电路中的流水运算电路还可以借助于存储在主存储电路中的掩码进行对应的操作。例如,在执行运算的过程中,该流水运算电路可以从主存储电路中读取一个掩码,并且可以利用该掩码来表示该流水运算电路中执行运算操作的数据是否有效。主存储电路不仅可以进行内部的存储应用,还具有与本披露的集成计算装置外的存储装置进行数据交互的功能,例如可以通过直接存储器访问(“dma”)与外部的存储装置进行数据交换。
52.上文结合图1-图2对集成计算装置的架构及其功能进行了详细描述,下文将结合图3、图4a至图4c对第一主处理电路的具体应用做出示例性说明。
53.图3是示出根据本披露实施例的第一主处理电路的示例结构图。鉴于上文对第一主处理电路架构功能进行了详细描述,下文将结合第一主处理电路中多组流水运算电路之
间,以及多级流水间的协作关系做出进一步地说明。
54.如图3所示,第一主处理电路104可以包括一组或多组流水运算电路109(如图中所示出的两组)。每组流水运算电路可以包括一级或多级流水运算电路(如图中每组中所示出的第一级流水运算电路~第n级流水运算电路)。所述一级或多级流水运算电路根据接收到的数据和运算指令可以执行一级或多级流水操作。在多级流水操作的应用中,一组流水运算电路的结构可以包括计数器、加法器、乘法器、加法树、累加器和非线性运算器等一种或多种类型的多个运算器,以用于执行多级流水运算。进一步,根据应用场景的不同,多级流水运算可以串行或者并行地执行流水运算。正如本领域技术人员所理解的,本披露的一条运算指令可以通过一组多级流水运算电路来执行。该运算指令包括多个串行的操作,可以通过一组流水运算电路中的第一级、第二级或第n级流水运算电路各执行一个操作,以完成该运算指令。例如,前文结合图2描述地利用三级流水运算电路执行的卷积运算即为串行流水运算。进一步,当多组流水运算电路109都执行运算操作时,其可以同时执行多条运算指令,也即多条指令间的并行操作。
55.在一些应用场景中,可以对运算操作中将不使用的一级或多级流水运算电路执行旁路操作,即可以根据运算操作的需要选择性地使用多级流水运算电路的一级或多级,而无须令运算操作经过所有的多级流水操作。以计算欧式距离的运算操作为例,假设其计算指令表示为dis=sum((ina-inb)^2),可以只使用由加法器、乘法器、加法树和累加器构成的若干级流水运算电路来进行运算以获得最终的运算结果,而对于未使用的流水运算电路,可以在流水运算操作前或操作中予以旁路。
56.在前述的流水操作中,每组流水运算电路可以独立地执行所述流水操作。然而,多组中的每组流水运算电路也可以协同地执行所述流水操作。例如,第一组流水运算电路中的第一级、第二级执行串行流水运算后的输出可以作为另一组流水运算电路的第三级流水的输入。又例如,第一组流水运算电路中的第一级、第二级执行并行流水运算,并分别输出各自流水运算的结果,作为另一组流水运算电路的第一级和/或第二级流水操作的输入。
57.图4a,4b和4c是示出根据本披露实施例的数据转换电路所执行的矩阵转换示意图。为了更好地理解第一主处理电路中的数据转换电路113执行的转换操作,下面将以原始矩阵进行的转置操作与水平镜像操作为例做进一步描述。
58.如图4a所示,原始矩阵是(m+1)行
×
(n+1)列的矩阵。根据应用场景的需求,数据转换电路可以对图4a中示出的原始矩阵进行转置操作转换,以获得如图4b所示出的矩阵。具体来说,数据转换电路可以将原始矩阵中元素的行序号与列序号进行交换操作以形成转置矩阵。具体来说,在图4a示出的原始矩阵中坐标是第1行第0列的元素“10”,其在图4b示出的转置矩阵中的坐标则是第0行第1列。以此类推,在图4a示出的原始矩阵中坐标是第m+1行第0列的元素“m0”,其在图4b示出的转置矩阵中的坐标则是第0行第m+1列。
59.如图4c所示,数据转换电路可以对图4a示出的原始矩阵进行水平镜像操作以形成水平镜像矩阵。具体来说,所述数据转换电路可以通过水平镜像操作,将原始矩阵中从首行元素到末行元素的排列顺序转换成从末行元素到首行元素的排列顺序,而对原始矩阵中元素的列号保持不变。具体来说,图4a示出的原始矩阵中坐标分别是第0行第0列的元素“00”与第1行第0列的元素“10”,在图4c中示出的水平镜像矩阵中的坐标则分别是第m+1行第0列与第m行第0列。以此类推,在图4a示出的原始矩阵中坐标是第m+1行第0列的元素“m0”,在图
4c示出的水平镜像矩阵中的坐标则是第0行第0列。
60.图5a,5b,5c和5d是示出根据本披露实施例的多个子处理电路的多种连接关系的示意图。本披露的多个子处理电路之间可以一维或多维阵列的拓扑结构进行连接。当多个子处理电路之间以多维阵列进行连接时,所述多维阵列可以是二维阵列,并且位于所述二维阵列中的所述子处理电路可以在其行方向、列方向或对角线方向的至少一个方向上,以预定的二维间隔模式与同行、同列或同对角线上的其余一个或多个所述子处理电路连接。其中所述预定的二维间隔模式可以与所述连接中间隔的子处理电路的数目相关联。图5a至图5c示例性示出的是多个子处理电路之间的多种形式的二维阵列的拓扑结构。
61.如图5a所示,五个子处理电路连接形成一个简单的二维阵列。具体来说,以一个子处理电路作为二维阵列的中心,向相对于该子处理电路的水平和垂直的四个方向上各连接一个子处理电路,从而形成一个具有三行和三列大小的二维阵列。进一步,由于位于二维阵列中心的子处理电路分别与同行的前一列和后一列相邻的子处理电路、与同列的上一行和下一行相邻的子处理电路直接连接,从而间隔的子处理电路的数目(简称“间隔数目”)为0。
62.如图5b所示,四行四列的子处理电路可以连接形成一个二维torus阵列,其中每个子处理电路分别与其相邻的前一行和后一行、前一列和后一列的子处理电路进行连接,即相邻子处理电路连接的间隔数目均为0。进一步,位于该二维torus阵列中每行或每列的第一个子处理电路还与该行或该列的最后一个子处理电路相连,每行或每列首尾相连的子处理电路之间的间隔数目均为2。
63.如图5c所示,四行四列的子处理电路还可以连接形成一个相邻子处理电路之间的间隔数目为0、不相邻子处理电路之间的间隔数目为1的二维阵列。进一步,该二维阵列中同行或同列相邻的子处理电路直接连接,即间隔数目为0,而同行或同列不相邻的子处理电路与间隔数目为1的子处理电路进行连接。可以看出,当多个子处理电路连接形成二维阵列时,图5b和图5c示出的同行或同列的子处理电路之间可以有不同的间隔数目。类似地,在一些场景中,也可以不同的间隔数目将对角线方向上的子处理电路进行连接。
64.如图5d所示,利用四个如图5b示出的二维torus阵列,可以按照预定的间隔排列成四层二维torus阵列进行连接,以形成一个三维torus阵列。该三维torus阵列在二维torus阵列的基础上,利用与行间、列间类似的间隔模式进行层间连接。例如,首先将相邻层同行同列的子处理电路直接相连,即间隔数目为0。接着,将第一层和最后一层同行同列的子处理电路进行连接,即间隔数目为2。最终可以形成四层四行四列的三维torus阵列。
65.通过上面这些示例,本领域技术人员可以理解子处理电路的其他多维阵列的连接关系可以在二维阵列的基础上,通过增加新的维度和增加子处理电路的数目来形成。在一些应用场景中,本披露的方案也可以通过使用配置指令来对子处理电路配置逻辑连接。换句话说,尽管子处理电路之间可能存在硬线连接,但本披露的方案也可以通过配置指令来选择性地令一些子处理电路连接,或者选择性地旁路一些子处理电路,以形成一个或多个逻辑连接。在一些实施例中,还可以根据实际运算的需求(例如数据类型的转换)来调整前述的逻辑连接。总之,针对于不同的计算场景,本披露的方案可以对子处理电路的连接进行配置,包括例如配置成矩阵或者配置成一个或多个闭合的计算环路。
66.图6a,6b,6c和6d是示出根据本披露实施例的多个子处理电路的另外多种连接关系的示意图。从图中可以看出,图6a至6d是在图5a至图5d示出的多个子处理电路形成的多
维阵列的又一种示例性连接关系,鉴于此,结合图5a至图5d所描述的技术细节也同样适用于图6a至图6d所示出的内容。
67.如图6a所示,二维阵列的子处理电路包括位于二维阵列中心的中心子处理电路和与该中心子处理电路同行和同列的四个方向上分别连接的三个子处理电路。因此,该中心子处理电路与其余子处理电路之间连接的间隔数目分别是0、1和2。如图6b所示,二维阵列的子处理电路包括位于二维阵列中心的中心子处理电路、和与该子处理电路同行的两个相对方向上的三个子处理电路,以及与该子处理电路同列的两个相对方向上的一个子处理电路。因此,中心子处理电路与同行的子处理电路之间连接的间隔数目分别为0和2,与同列的子处理电路之间连接的间隔数目均为0。
68.正如图5d所示出的,多个子处理电路形成的多维阵列可以由多个层构成的三维阵列。其中所述三维阵列的每个层可以包括沿其行方向和列方向排列的多个所述子处理电路的二维阵列。进一步,位于所述三维阵列中的所述子处理电路可以在其行方向、列方向、对角线方向和层方向的至少一个方向上以预定的三维间隔模式与同行、同列、同对角线或不同层上的其余一个或多个子处理电路连接。进一步,所述预定的三维间隔模式与所述连接中相互间隔的子处理电路的数目可以和间隔的层数目相关。下面将结合图6c与图6d对三维阵列的连接方式作出进一步描述。
69.图6c示出多个子处理电路连接形成的多层多行多列的三维阵列。以位于第l层、第r行、第c列(表示为(l,r,c))的子处理电路为例,其位于阵列中心位置,并且分别与同层同行的前一列(l,r,c-1)处的子处理电路和后一列(l,r,c+1)处的子处理电路、同层同列的前一行(l,r-1,c)处的子处理电路和后一行(l,r+1,c)处的子处理电路,以及同行同列不同层的前一层(l-1,r,c)处的子处理电路和后一层(l+1,r,c)处的子处理电路进行连接。进一步,(l,r,c)处的子处理电路与其他子处理电路在行方向、列方向和层方向上连接的间隔数目均为0。
70.图6d示出当多个子处理电路之间在行方向、列方向、和层方向上连接的间隔数目均为1时的三维阵列。以位于阵列中心位置(l,r,c)的子处理电路为例,其分别与同层同行不同列的前后各间隔一列的(l,r,c-2)和(l,r,c+2)处的子处理电路、同层同列不同行的前后各间隔一行的(l,r-2,c)和(l,r+2,c)处的子处理电路进行连接。进一步,其与同行同列不同层的前后各间隔一层的(l-2,r,c)和(l+2,r,c)处的子处理电路进行连接。类似地,其余的同层同行间隔一列的(l,r,c-3)与(l,r,c-1)处的子处理电路彼此进行连接,而(l,r,c+1)与(l,r,c+3)处的子处理电路彼此进行连接。接着,同层同列间隔一行的(l,r-3,c)与(l,r-1,c)处的子处理电路彼此进行连接、(l,r+1,c)与(l,r+3,c)处的子处理电路彼此进行连接。另外,同行同列间隔一层的(l-3,r,c)与(l-1,r,c)处的子处理电路彼此进行连接、而(l+1,r,c)与(l+3,r,c)处的子处理电路彼此进行连接。
71.上文对多个子处理电路形成的多维阵列的连接关系进行了示例性描述,下文将结合图7与图8对子处理电路形成的环路结构做出进一步示例性说明。
72.图7a和图7b是分别示出根据本披露实施例的子处理电路的不同环路结构的示意图。如图7a所示,四个相邻的子处理电路115顺序编号为“0、1、2和3”。接着,从子处理电路0开始按照顺时针方向将该四个子处理电路顺序相连,并且子处理电路3与子处理电路0进行连接,以使四个子处理电路串联形成一个闭合的环路(简称“成环”)。从该环路中可以看出,
图7a中示出的子处理电路的间隔数目为0或2,例如子处理电路0与1之间间隔数目为0,而子处理电路3与0之间间隔数目为2。进一步,所示环路中的四个子处理电路的物理地址可以为0-1-2-3,而其逻辑地址同样为0-1-2-3。需要注意的是,图7a所示出的连接顺序仅仅是示例性的而非限制性的,本领域技术人员根据实际计算需要,也可以以逆时针方向对四个子处理电路进行串联连接以形成闭合的环路。
73.在一些实际场景中,当一个子处理电路支持的数据位宽不能满足运算数据的位宽要求时,可以利用多个子处理电路组合成一个子处理电路组以表示一个数据。例如,假设一个子处理电路可以处理8位数据。当需要处理32位的数据时,则可以将4个子处理电路进行组合成为一个子处理电路组,以便对4个8位数据进行连接以形成一个32位数据。进一步,前述4个8位子处理电路形成的一个子处理电路组可以充当图7b中示出的一个子处理电路115,从而可以支持更高位宽的运算操作。
74.从图7b中可以看出,其所示出的子处理电路的布局与图7a示出的类似,但图7b中子处理电路之间连接的间隔数目与图7a不同。如图7b所示,以0、1、2和3顺序编号的四个子处理电路按顺时针方向从子处理电路0开始,顺序连接子处理电路1、子处理电路3和子处理电路2,并且子处理电路2连接至子处理电路0,从而串联形成一个闭合的环路。从该环路中可以看出,图7b中示出的子处理电路的间隔数目为0或1,例如子处理电路0与1之间间隔为0,而子处理电路1与3之间间隔为1。进一步,所示闭合环路中的四个子处理电路的物理地址可以为0-1-2-3,而逻辑地址则为0-1-3-2。因此,当需要对高比特位宽的数据进行拆分以分配给不同的子处理电路时,可以根据子处理电路的逻辑地址对数据顺序进行重新排列和分配。
75.上述的拆分和重新排列的操作可以由结合图2描述的前处置电路来执行。特别地,该前处置电路可以根据多个子处理电路的物理地址和逻辑地址来对输入数据进行重新排列,以用于满足数据运算的要求。假设四个顺序排列的子处理电路0至子处理电路3如图7a中所示出的连接,由于连接的物理地址和逻辑地址都为0-1-2-3,因此前处置电路可以将输入数据(例如像素数据)aa0、aa1、aa2和aa3依次传送到对应的子处理电路中。然而,当前述的四个子处理电路按图7b所示出的连接时,其物理地址保持0-1-2-3不变,而逻辑地址变为0-1-3-2,此时前处置电路需要将输入数据aa0、aa1、aa2和aa3重新排列为aa0-aa1-aa3-aa2,以传送到对应的子处理电路中。基于上述的输入数据重排列,本披露的方案可以保证数据运算顺序的正确性。类似地,如果前述获得的四个运算输出结果(例如是像素数据)的顺序是bb0-bb1-bb3-bb2,可以利用结合图2描述的后处置电路将运算输出结果的顺序还原调整为bb0-bb1-bb2-bb3,以用于保证输入数据和输出结果数据之间的排列一致性。
76.图8a和图8b是分别示出根据本披露实施例的子处理电路的另外不同环路结构的示意图,其中示出更多的子处理电路以不同方式进行排列和连接,以形成闭合的环路。
77.如图8a所示,以0,1

15顺序编号的16个子处理电路115从子处理电路0开始,顺序地每两个子处理电路进行连接和组合,以形成一个子处理电路组。例如,如图中所示,子处理电路0与子处理电路1连接形成一个子处理电路组
……
。以此类推,子处理电路14与子处理电路15连接以形成一个子处理电路组,最终形成八个子处理电路组。进一步,该八个子处理电路组也可以类似于前述的子处理电路的连接方式进行连接,包括按照例如预定的逻辑地址来进行连接,以形成一个子处理电路组的闭合的环路。
78.如图8b所示,多个子处理电路115以不规则或者说不统一的方式来连接,以形成一个闭合的环路。具体来说,在图8b中示出子处理电路之间可以间隔数目为0或3来形成闭合的环路,例如子处理电路0可以分别与子处理电路1(间隔数目为0)和子处理电路4(间隔数目为3)相连。
79.由上述结合图7a、7b、8a和8b的描述可知,本披露的子处理电路可以间隔有不同数目的子处理电路,以便连接成闭合的环路。当子处理电路总数变化时,也可以选择任意的中间间隔数目进行动态配置,从而连接成闭合的环路。还可以将多个子处理电路组合成为子处理电路组,并连接成子处理电路组的闭合的环路。另外,多个子处理电路的连接可以是硬件构成的硬连接方式,或者可以是软件配置的软连接方式。
80.图9是示出根据本披露实施例的集成计算装置和从处理电路的示意架构图。需要注意的是,本披露的集成计算装置和从处理电路的架构图仅是示意性的而非限制性的。本披露的方案除执行流水操作与多线程操作外,还可以与从处理电路配合执行其他类型的数据操作。
81.如图9所示,与图1-图2架构类似的集成计算装置包括主控制电路102、第一主处理电路104和第二主处理电路106。进一步,所述第一主处理电路和第二主处理电路中的至少一个可以通过互联电路110,与至少一个从处理电路112进行通信。其中所述互联电路110可以用于转发第一主处理电路或第二主处理电路与所述至少一个从处理电路之间传送的数据、运算指令或中间运算结果。在一个实施例中,所述至少一个从处理电路可以配置成通过互联电路接收从第一主处理电路和第二主处理电路中至少一个传输的数据和运算指令来并行执行中间运算,以得到多个中间运算结果。以及可以通过互联电路将所述多个中间运算结果传输给所述第一主处理电路或第二主处理电路中的至少一个。在另一个实施例中,所述第一主处理电路可以配置成以单指令多数据(single instruction multiple data,“simd”)方式接收并执行所述运算指令,而所述第二主处理电路可以配置成以单指令多线程(single instruction multiple thread,“simt”)方式接收并执行所述运算指令。
82.图10是示出根据本披露实施例的使用集成计算装置来执行运算操作的方法1000的简化流程图。所述集成计算装置可以应用如图1-图2所示出的架构。
83.如图10所示,在步骤1010处,方法1000可以利用所述主控制电路来获取计算指令,并且可以对所述计算指令进行解析以获得运算指令。而且可以将运算指令发送至所述第一主处理电路和所述第二主处理电路中的至少一个。在一个实施例中,主控制电路可以根据所述计算指令中的指令标识信息确定执行操作的第一和/或第二主处理电路,将所述运算指令发送至所述第一主处理电路和所述第二主处理电路中的至少一个,以执行运算指令指定地相应操作。
84.在一个或多个实施例中,在解析计算指令的过程中,主控制电路可以对计算指令执行译码操作,根据译码结果将所述运算指令发送给所述第一主处理电路和第二主处理电路中的至少一个。当第一主处理电路和第二主处理电路二者都支持非特定的相同类型运算时,主控制电路可以根据第一主处理电路与第二主处理电路的负载情况,发送运算指令给使用占用率不高或处于空闲态的主处理电路。进一步,根据应用场景的不同,在解析所述计算指令后获得的运算指令也可以是未经主控制电路译码的运算指令。而第一或第二主处理电路中可以包含相应的译码电路对接收到的运算指令进行译码,以例如生成多个微指令,
从而第一或第二主处理电路可以根据所述微指令执行后续操作。
85.接着,流程可以根据步骤1010处确定的执行下一步操作的第一主处理电路和第二主处理电路中的至少一个,前进到步骤1020和/或1030处。具体地,当执行步骤1020时,方法1000可以利用包括在所述第一主处理电路中的一组或多组流水运算电路,以及根据接收到的数据(例如神经元数据)和运算指令执行流水操作。在一个实施例中,多组流水运算电路中的各组可以独立地或协同地执行所述流水操作。具体来说,本披露的多组流水运算电路之间支持独立地完成各自的流水操作,并且可以相互之间并行地执行这些流水操作。进一步,这些并行的流水操作可以涉及相同或者不同的运算操作。相较而言,在协同地执行所述流水操作中,多组流水运算电路可以例如根据计算指令或者控制信号,在不同的组上执行流水操作时相互之间协作、等待或传递中间或结果数据以完成计算等操作。在另一个实施例中,每组流水运算电路可以包括一级流水操作(例如可以包括一个运算器或多个运算器)或多级流水操作(例如可以串行执行或并行执行操作)。
86.在步骤1030处,方法1000可以利用包括在所述第二主处理电路中的多个子处理电路来根据接收到的数据(例如像素数据)和运算指令执行多线程操作。在一个实施例中,多个子处理电路可以一维或多维阵列的拓扑结构进行连接,并且经过所述连接而串接的多个子处理电路阵列可以形成一个或多个闭合的环路。在另一个实施例中,多个子处理电路可以根据接收到的运算指令中的信息(例如谓词信息)判断是否执行该运算指令的操作。
87.图11是示出根据本披露实施例的一种组合处理装置1100的结构图。如图11中所示,该组合处理装置1100包括计算处理装置1102、接口装置1104、其他处理装置1106和存储装置1108。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置1110,该计算装置可以配置用于执行本文结合图1-图10所描述的操作。
88.在不同的实施例中,本披露的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。
89.在示例性的操作中,本披露的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(central processing unit,cpu)、图形处理器(graphics processing unit,gpu)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
90.在一个或多个实施例中,该其他处理装置可以作为本披露的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行
包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。
91.在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。
92.附加地或可选地,本披露的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
93.在一些实施例里,本披露还公开了一种芯片(例如图12中示出的芯片1202)。在一种实现中,该芯片是一种系统级芯片(system on chip,soc),并且集成有一个或多个如图11中所示的组合处理装置。该芯片可以通过对外接口装置(如图12中示出的对外接口装置1206)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如dram接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图12对该板卡进行详细地描述。
94.图12是示出根据本披露实施例的一种板卡1200的结构示意图。如图12中所示,该板卡包括用于存储数据的存储器件1204,其包括一个或多个存储单元1210。该存储器件可以通过例如总线等方式与控制器件1208和上文所述的芯片1202进行连接和数据传输。进一步,该板卡还包括对外接口装置1206,其配置用于芯片(或芯片封装结构中的芯片)与外部设备1212(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准pcie接口等。
95.在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(micro controller unit,mcu),以用于对所述芯片的工作状态进行调控。
96.根据上述结合图11和图12的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。
97.根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、pc设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、
电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
98.需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
99.在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
100.在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
101.在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于u盘、闪存盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
102.在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如cpu、gpu、fpga、dsp和asic等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(resistive random access memory,rram)、动态随机存取存储器(dynamic random access memory,dram)、静态随机存取存储器(static random access memory,sram)、增强动态随机存取存储器(enhanced dynamic random access memory,edram)、高带宽存储器(high bandwidth memory,hbm)、混合存储器立方体(hybrid memory cube,hmc)、rom和ram等。
103.依据以下条款可更好地理解前述内容:
104.条款1、一种集成计算装置,包括主控制电路、第一主处理电路和第二主处理电路,其中:
105.所述主控制电路,其配置成获取计算指令并对所述计算指令进行解析以获得运算指令,并且将运算指令发送至所述第一主处理电路和所述第二主处理电路中的至少一个;
106.所述第一主处理电路,其包括一组或多组流水运算电路,其中每组流水运算电路配置成根据接收到的数据和运算指令执行流水操作;以及
107.所述第二主处理电路,其包括多个子处理电路,其中每个子处理电路配置成根据接收到的数据和运算指令执行多线程操作。
108.条款2、根据条款1所述的集成计算装置,其中在解析所述计算指令中,所述主控制电路配置成:
109.获取所述计算指令中的指令标识信息;以及
110.根据所述指令标识信息将所述运算指令发送到所述第一主处理电路和所述第二主处理电路中的至少一个。
111.条款3、根据条款1所述的集成计算装置,其中在解析所述计算指令中,所述主控制电路配置成:
112.对所述计算指令进行译码;以及
113.根据所述译码的结果以及所述第一主处理电路和第二主处理电路的操作状态,将所述运算指令发送到所述第一主处理电路和所述第二主处理电路中的至少一个。
114.条款4、根据条款1所述的集成计算装置,其中所述多组流水运算电路中的各组独立地或协同地执行所述流水操作。
115.条款5、根据条款4所述的集成计算装置,其中所述每组流水运算电路包括一个或多个运算器,并且当所述每组流水运算电路包括多个运算器时,所述多个运算器配置成执行多级流水运算。
116.条款6、根据条款1所述的集成计算装置,其中所述第一主处理电路还包括运算处理电路,其配置成根据运算指令对所述流水运算电路执行运算前的数据进行预处理或者对运算后的数据进行后处理。
117.条款7、根据条款1所述的集成计算装置,其中所述第一主处理电路还包括数据转
换电路,其配置成根据所述运算指令执行数据转换操作。
118.条款8、根据条款1所述的集成计算装置,其中所述多个子处理电路以一维或多维阵列的拓扑结构连接。
119.条款9、根据条款8所述的集成计算装置,其中所述多维阵列是二维阵列,并且位于所述二维阵列中的所述子处理电路在其行方向、列方向或对角线方向的至少一个上以预定的二维间隔模式与同行、同列或同对角线的其余一个或多个所述子处理电路连接。
120.条款10、根据条款9所述的集成计算装置,其中所述预定的二维间隔模式与所述连接中间隔的子处理电路的数目相关联。
121.条款11、根据条款8所述的集成计算装置,其中所述多维阵列是由多个层构成的三维阵列,其中每个层包括沿行方向和列方向排列的多个所述子处理电路的二维阵列,其中:
122.位于所述三维阵列中的所述子处理电路在其行方向、列方向、对角线和层方向的至少一个上以预定的三维间隔模式与同行、同列、同对角线或不同层上的其余一个或多个子处理电路连接。
123.条款12、根据条款11所述的集成计算装置,其中所述预定的三维间隔模式与所述连接中相互间隔的子处理电路的数目和间隔的层数目相关。
124.条款13、根据条款8-12的任意一项所述的集成计算装置,其中经所述连接而串接的多个子处理电路形成一个或多个闭合的环路。
125.条款14、根据条款1所述的集成计算装置,其中所述多个子处理电路配置成根据运算指令判断是否参与运算。
126.条款15、根据条款1所述的集成计算装置,其中每个所述子处理电路包括:
127.逻辑运算电路,其配置成根据运算指令和数据执行逻辑运算;以及
128.存储电路,其包括数据存储电路,其中所述数据存储电路配置成存储所述子处理电路的运算数据与中间运算结果中的至少一项。
129.条款16、根据条款15所述的集成计算装置,其中所述存储电路还包括谓词存储电路,其中所述谓词存储电路配置成存储利用所述运算指令获取的每个所述子处理电路的谓词存储电路序号和谓词信息。
130.条款17、根据条款16所述的集成计算装置,其中所述谓词存储电路还配置成:
131.根据所述运算指令对所述谓词信息进行更新;或者
132.根据每个所述子处理电路的运算结果对所述谓词信息进行更新。
133.条款18、根据条款16所述的集成计算装置,其中每个所述子处理电路配置成:
134.根据所述运算指令中的所述谓词存储电路序号来获取对应于所述谓词存储电路的所述谓词信息;以及
135.根据所述谓词信息来确定该所述子处理电路是否执行所述运算指令。
136.条款19、根据条款1所述的集成计算装置,其中每个所述子处理电路包括算术运算电路,其配置成执行算术运算操作。
137.条款20、根据条款1所述的集成计算装置,其中所述第二主处理电路还包括数据处置电路,所述数据处置电路包括前处置电路和后处置电路中的至少一个,其中所述前处置电路配置成在所述子处理电路执行运算前对运算数据进行预处理操作,并且所述后处置电路配置成在所述子处理电路执行运算后对运算结果进行后处理操作。
138.条款21、根据条款1所述的集成计算装置,其中所述集成计算装置还包括主存储电路,所述主存储电路包括主存储模块和主缓存模块中的至少一个,其中所述主存储模块配置成存储用于主处理电路中执行运算的数据与执行运算后的运算结果,并且所述主缓存模块配置成缓存所述第一主处理电路与所述第二主处理电路中至少一个执行运算后的中间运算结果。
139.条款22、根据条款1-12或14-21的任意一项所述的集成计算装置,还包括:
140.至少一个从处理电路,其配置成用于根据从所述第一主处理电路和第二主处理电路中的至少一个传输的数据和运算指令来并行执行中间运算,以得到多个中间结果,并将所述多个中间结果传输给所述第一主处理电路和第二主处理电路中的至少一个。
141.条款23、根据条款22所述的集成计算装置,其中所述第一主处理电路配置成以simd方式接收并执行所述运算指令。
142.条款24、根据条款22所述的集成计算装置,其中所述第二主处理电路配置成以simt方式接收并执行所述运算指令。
143.条款25、一种集成电路芯片,包括根据条款1-24任意一项所述的集成计算装置。
144.条款26、一种板卡,包括根据条款25所述的集成电路芯片。
145.条款27、一种使用集成计算装置来执行运算操作的方法,其中所述集成计算装置包括主控制电路、第一主处理电路和第二主处理电路,所述方法包括:
146.利用所述主控制电路来获取计算指令并对所述计算指令进行解析以获得运算指令,并将运算指令发送至所述第一主处理电路和所述第二主处理电路中的至少一个;
147.利用包括在所述第一主处理电路中的一组或多组流水运算电路来根据接收到的数据和运算指令执行流水操作;以及
148.利用包括在所述第二主处理电路中的多个子处理电路来根据接收到的数据和运算指令执行多线程操作。
149.条款28、根据条款27所述的方法,其中在解析所述计算指令中,所述方法利用所述主控制电路来执行以下步骤:
150.获取所述计算指令中的指令标识信息;以及
151.根据所述指令标识信息将所述运算指令发送到所述第一主处理电路和所述第二主处理电路中的至少一个。
152.条款29、根据条款27所述的方法,其中在解析所述计算指令中,所述方法利用主控制电路来执行以下步骤:
153.对所述计算指令进行译码;以及
154.根据所述译码的结果以及所述第一主处理电路和第二主处理电路的操作状态,将所述运算指令发送到所述第一主处理电路和所述第二主处理电路中的至少一个。
155.条款30、根据条款27所述的方法,其中利用所述多组流水运算电路中的各组独立地或协同地执行所述流水操作。
156.条款31、根据条款30所述的方法,其中所述每组流水运算电路包括一个或多个运算器,并且当所述每组流水运算电路包括多个运算器时,所述方法利用多个运算器来执行多级流水运算。
157.条款32、根据条款27所述的方法,其中所述第一主处理电路还包括运算处理电路,
所述方法还包括利用所述运算处理电路来根据运算指令对所述流水运算电路执行运算前的数据进行预处理或者对运算后的数据进行后处理。
158.条款33、根据条款27所述的方法,其中所述第一主处理电路还包括数据转换电路,所述方法还包括利用所述数据转换电路来根据所述运算指令执行数据转换操作。
159.条款34、根据条款27所述的方法,其中所述多个子处理电路以一维或多维阵列的拓扑结构连接。
160.条款35、根据条款34所述的方法,其中所述多维阵列是二维阵列,并且位于所述二维阵列中的所述子处理电路被连接成在其行方向、列方向或对角线方向的至少一个上以预定的二维间隔模式与同行、同列或同对角线的其余一个或多个所述子处理电路连接。
161.条款36、根据条款35所述的方法,其中所述预定的二维间隔模式与所述连接中间隔的子处理电路的数目相关联。
162.条款37、根据条款34所述的方法,其中所述多维阵列是由多个层构成的三维阵列,其中每个层包括沿行方向和列方向排列的多个所述子处理电路的二维阵列,其中所述方法包括:
163.连接位于所述三维阵列中的所述子处理电路,使得所述子处理电路在其行方向、列方向、对角线和层方向的至少一个上以预定的三维间隔模式与同行、同列、同对角线或不同层上的其余一个或多个子处理电路连接。
164.条款38、根据条款37所述的方法,其中所述预定的三维间隔模式与所述连接中相互间隔的子处理电路的数目和间隔的层数目相关。
165.条款39、根据条款34-38的任意一项所述的方法,其中经所述连接而串接的多个子处理电路形成一个或多个闭合的环路。
166.条款40、根据条款27所述的方法,其中根据所述运算指令判断所述多个子处理电路是否参与运算。
167.条款41、根据条款27所述的方法,其中每个所述子处理电路包括逻辑运算电路和存储电路,其中所述存储电路包括数据存储电路,所述方法包括利用所述逻辑运算电路来根据运算指令和数据执行逻辑运算,利用所述数据存储电路来存储所述子处理电路的运算数据与中间运算结果中的至少一项。
168.条款42、根据条款41所述的方法,其中所述存储电路还包括谓词存储电路,其中所述方法包括利用所述谓词存储电路存储利用所述运算指令获取的每个所述子处理电路的谓词存储电路序号和谓词信息。
169.条款43、根据条款42所述的方法,其中利用所述谓词存储电路执行以下步骤:
170.根据所述运算指令对所述谓词信息进行更新;或者
171.根据每个所述子处理电路的运算结果对所述谓词信息进行更新。
172.条款44、根据条款42所述的方法,其中利用每个所述子处理电路执行以下步骤:
173.根据所述运算指令中的所述谓词存储电路序号来获取对应于所述谓词存储电路的所述谓词信息;以及
174.根据所述谓词信息来确定该所述子处理电路是否执行所述运算指令。
175.条款45、根据条款27所述的方法,其中每个所述子处理电路包括算术运算电路,并且所述方法利用所述算术运算电路执行算术运算操作。
176.条款46、根据条款27所述的方法,其中所述第二主处理电路还包括数据处置电路,所述数据处置电路包括前处置电路和后处置电路中的至少一个,其中所述方法包括在所述子处理电路执行运算前利用所述前处置电路对运算数据进行预处理操作,并且在所述子处理电路执行运算后利用所述后处置电路对运算结果进行后处理操作。
177.条款47、根据条款27所述的方法,其中所述集成计算装置还包括主存储电路,所述主存储电路包括主存储模块和主缓存模块中的至少一个,其中所述方法包括利用所述主存储模块存储用于主处理电路中执行运算的数据与执行运算后的运算结果,并且利用所述主缓存模块缓存所述第一主处理电路与所述第二主处理电路中至少一个执行运算后的中间运算结果。
178.条款48、根据条款27-38或40-47的任意一项所述的方法,其中所述集成计算装置还包括至少一个从处理电路,所述方法包括利用所述至少一个从处理电路来根据从所述第一主处理电路和第二主处理电路中的至少一个传输的数据和运算指令来并行执行中间运算,以得到多个中间结果,并将所述多个中间结果传输给所述第一主处理电路和第二主处理电路中的至少一个。
179.条款49、根据条款48所述的方法,其中所述第一主处理电路配置成以simd方式接收并执行所述运算指令。
180.条款50、根据条款48所述的方法,其中所述第二主处理电路配置成以simt方式接收并执行所述运算指令。
181.虽然本文已经示出和描述了本披露的多个实施例,但对于本领域技术人员显而易见的是,这样的实施例只是以示例的方式来提供。本领域技术人员可以在不偏离本披露思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本披露的过程中,可以采用对本文所描述的本披露实施例的各种替代方案。所附权利要求书旨在限定本披露的保护范围,并因此覆盖这些权利要求范围内的等同或替代方案。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1