CN113867791A - 一种计算装置、芯片、板卡、电子设备和计算方法 - Google Patents

一种计算装置、芯片、板卡、电子设备和计算方法 Download PDF

Info

Publication number
CN113867791A
CN113867791A CN202010618129.4A CN202010618129A CN113867791A CN 113867791 A CN113867791 A CN 113867791A CN 202010618129 A CN202010618129 A CN 202010618129A CN 113867791 A CN113867791 A CN 113867791A
Authority
CN
China
Prior art keywords
processing
data
instructions
instruction
circuitry
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.)
Granted
Application number
CN202010618129.4A
Other languages
English (en)
Other versions
CN113867791B (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN202010618129.4A priority Critical patent/CN113867791B/zh
Priority to JP2021576577A priority patent/JP7266121B2/ja
Priority to PCT/CN2021/094725 priority patent/WO2022001457A1/zh
Publication of CN113867791A publication Critical patent/CN113867791A/zh
Application granted granted Critical
Publication of CN113867791B publication Critical patent/CN113867791B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本披露公开了一种计算装置、集成电路芯片、板卡和使用前述计算装置来执行运算操作的方法。其中该计算装置可以包括在组合处理装置中,该组合处理装置还可以包括通用互联接口和其他处理装置。所述计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与设备和其他处理装置连接,用于存储该设备和其他处理装置的数据。本披露的方案可以提升包括例如人工智能领域在内的各类数据处理领域运算的运行效率,从而降低运算的整体开销和成本。

Description

一种计算装置、芯片、板卡、电子设备和计算方法
技术领域
本披露一般地涉及计算领域。更具体地,本披露涉及一种计算装置、集成电路芯片、板卡、电子设备和计算方法。
背景技术
在计算系统中,指令集是用于执行计算和对计算系统进行控制的一套指令的集合,并且在提高计算系统中计算芯片(例如处理器)的性能方面发挥着关键性的作用。当前的各类计算芯片(特别是人工智能领域的芯片)利用相关联的指令集,可以完成各类通用或特定的控制操作和数据处理操作。然而,当前的指令集还存在诸多方面的缺陷。例如,现有的指令集受限于硬件架构而在灵活性方面表现较差。进一步,许多指令仅能完成单一的操作,而多个操作的执行则通常需要多条指令,这潜在地导致片内I/O数据吞吐量增大。另外,当前的指令在执行速度、执行效率和对芯片造成的功耗方面还有改进之处。
发明内容
为了至少解决上述现有技术中存在的问题,本披露提供一种适于执行超长指令字(“VLIW”)指令的硬件架构。通过利用该硬件架构来执行改进的VLIW指令,本披露的方案可以在包括增强硬件的处理性能、减小功耗、提高计算操作的执行效率和避免计算开销等多个方面获得技术优势。
在第一方面中,本披露的方案提供一种计算装置,包括控制电路和多个处理电路,其中:所述控制电路配置成获取超长指令字(VLIW)指令并对其进行解析,并且将解析后的VLIW指令发送至所述多个处理电路;以及所述多个处理电路以一维或多维阵列的结构连接成一个或多个处理电路阵列,并且所述一个或多个处理电路阵列配置成根据解析后的VLIW指令来执行多线程操作。
在第二方面中,本披露提供一种集成电路芯片,其包括如上所述以及如下文多个实施列中详细描述的计算装置。
在第三方面中,本披露提供一种板卡,其包括如上所述以及如下文多个实施例中详细描述的集成电路芯片。
在第四方面中,本披露提供一种电子设备,其包括如上所述以及如下文多个实施例中详细描述的集成电路芯片。
在第五方面中,本披露提供一种使用如上所述以及如下文多个实施例中详细描述的计算装置来执行计算操作的方法,其中所述计算装置包括控制电路和多个处理电路,所述方法包括:利用所述控制电路来获取超长指令字(VLIW)指令并对其进行解析以获得解析后的VLIW指令,并将解析后的VLIW指令发送至所述多个处理电路;以及将所述多个处理电路以一维或多维阵列的结构连接成一个或多个处理电路阵列,并且将所述一个或多个处理电路阵列配置成根据解析后的VLIW指令来执行多线程操作。
利用本披露提供的计算装置、集成电路芯片、板卡、电子设备和计算方法,可以依接收到的指令来对处理电路进行灵活地连接,从而可以高效地执行VLIW指令。进一步,基于本披露硬件架构而改进的VLIW指令可以在本披露的处理电路阵列上高效地执行,从而也提升了本披露硬件架构的处理性能。另外,基于本披露的硬件架构和VLIW指令的灵活配置和使用,可以改善多线程操作的执行效率,由此加速计算的执行。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1是示出根据本披露一个实施例的计算装置的框图;
图2是示出根据本披露另一个实施例的计算装置的框图;
图3是示出根据本披露又一个实施例的计算装置的框图;
图4是示出根据本披露实施例的计算装置的多种类型处理电路阵列的示例结构图;
图5a,5b,5c和5d是示出根据本披露实施例的多个处理电路的多种连接关系的示意图;
图6a,6b,6c和6d是示出根据本披露实施例的多个处理电路的另外多种连接关系的示意图;
图7a,7b、7c和7d是示出根据本披露实施例的处理电路的多种成环结构的示意图;
图8a,8b和8c是示出根据本披露实施例的处理电路的另外多种成环结构的示意图;
图9a,9b,9c和9d是示出根据本披露实施例的前操作电路所执行的数据拼接操作示意图;
图10a,10b和10c是示出根据本披露实施例的后操作电路所执行的数据压缩操作示意图;
图11是示出根据本披露实施例的使用计算装置来执行运算操作的方法的简化流程图;
图12是示出根据本披露实施例的一种组合处理装置的结构图;以及
图13是示出根据本披露实施例的一种板卡的结构示意图。
具体实施方式
本披露的方案提供一种支持VLIW指令执行的硬件架构。当该硬件架构实现于计算装置中时,该计算装置至少包括控制电路和多个处理电路,其中多个处理电路根据不同的配置来进行连接,以形成支持VLIW指令执行的各种阵列结构。根据实现方式的不同,本披露的VLIW指令在一些场景中可以结合单独的配置指令和数据读写指令来使用,而在另一些场景中可以与前述的配置指令和数据读写指令合并,以形成扩展的VLIW指令。借助于本披露的硬件架构和VLIW指令,可以高效地执行计算操作和数据读取,扩展了计算的应用场景并且减小了计算开销。
在本披露的上下文中,上述的VLIW指令、配置指令和数据读写指令可以是软件和硬件的交互接口的指令系统中的指令,其可以是二进制或其他形式的、供计算装置(或处理电路、处理器)等硬件接收并处理的机器语言。VLIW指令、配置指令和数据读写指令可以包括用于指示处理器操作的操作码和操作数。根据不同的应用场景,VLIW指令、配置指令和数据读写指令可以包括一个或多个操作码。而当前述VLIW指令、配置指令和数据读写指令包括一个操作码时,该操作码可以用于指示计算装置的多个操作。
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
图1是示出根据本披露一个实施例的计算装置100的框图。如图1中所示,该计算装置100包括控制电路102和多个处理电路104。在一个实施例中,所述控制电路配置成获取VLIW指令并且对其进行解析,并且将解析后的VLIW指令发送至多个处理电路104。在另一个实施例中,多个处理电路以一维或多维阵列的结构连接成一个或多个处理电路阵列,并且该一个或多个处理电路阵列配置成根据解析后的VLIW指令来执行多线程操作。在本披露中,解析后的VLIW指令可以包括运算指令、前处理指令、后处理指令和移动指令中的至少一种,并且运算指令、前处理指令、后处理指令和移动指令可以是在计算装置(或处理电路、处理器)内部运行的微指令或控制信号。
根据不同的应用场景,上述的连接既可以是多个处理电路之间基于硬件的配置连接(或称“硬连接”),也可以是在特定的硬件连接基础上,通过稍后描述的配置指令来进行逻辑配置连接(或称“软连接”)。为了实现前述对一个或多个处理电路的配置连接,本披露的控制电路还可以获取配置指令,并且多个处理电路根据接收到的配置指令来进行连接,以形成所述一个或多个处理电路阵列。在一个实施例中,所述处理电路阵列可以根据所述配置指令在一维或多维方向的至少一个维度方向上形成闭合的环路,即本披露上下文中的“成环结构”。
在一个实施例中,所述控制电路配置成根据所述配置指令将常数项和表项中的至少一个发送至所述处理电路阵列,以便执行所述多线程操作。在一个应用场景中,常数项和表项可以保存在控制电路的寄存器中,并且所述控制电路根据所述配置指令来从寄存器中读取常数项和表项。在另一个应用场景中,常数项和表项可以保存在片上存储电路(如图2或3中所示的存储电路)或片外存储电路上。在该情况下,配置指令中可以包括所述常数项和表项的存储地址,并且所述处理电路阵列可以根据存储地址来从相应的片上或片外存储电路中获取计算所需的常数项和/或表项。
在一个实施例中,所述控制电路可以包括一个或多个寄存器,其存储有关于所述处理电路阵列的配置信息,所述控制电路配置成根据所述配置指令从所述寄存器读取所述配置信息并向所述处理电路发送,以便所述处理电路以所述配置信息进行连接。在一个应用场景中,所述配置信息可以包括预设的、组成所述一个或多个处理电路阵列的处理电路的位置信息,该位置信息例如可以包括处理电路的坐标信息或标号信息。当所述处理电路阵列配置形成闭合环路时,所述配置信息还可以包括关于所述处理电路阵列形成闭合环路的成环配置信息。替代地,在一个实施例中,上述的配置信息也可以通过配置指令来直接携带而非从所述寄存器中读取。在该情况下,处理电路可以根据接收到的配置指令中的位置信息来直接进行配置,以便与其他处理电路形成无闭合环路的阵列或是进一步构成具有闭合环路的阵列。
在通过配置指令或通过从寄存器获得的配置信息来配置连接以形成二维阵列时,位于所述二维阵列中的所述处理电路配置成在其行方向、列方向或对角线方向的至少一个上以预定的二维间隔模式与同行、同列或同对角线的其余一个或多个所述处理电路连接,以便形成一个或多个闭合环路。这里,前述预定的二维间隔模式与所述连接中间隔的处理电路的数目相关联。
进一步,根据前述配置指令或配置信息来配置连接以形成三维阵列时,所述处理电路阵列以由多个层构成的三维阵列的成环方式进行连接,其中每个层包括沿行方向、列方向和对角线方向排列的多个所述处理电路的二维阵列,并且其中:位于所述三维阵列中的所述处理电路配置成在其行方向、列方向、对角线方向和层方向的至少一个上以预定的三维间隔模式与同行、同列、同对角线或不同层上的其余一个或多个处理电路连接,以便形成一个或多个闭合环路。这里,预定的三维间隔模式与待连接的处理电路之间的间隔数目和间隔层数相关联。
在一个实施例中,本披露的VLIW指令包括一条或多条运算指令,并且前述的一个或多个处理电路阵列可以配置成根据所述运算指令来执行多线程的运算操作。上述一条或多条运算指令可以是在计算装置(或处理电路、处理器)内部运行的微指令或控制信号,其可以包括(或者说指示)一个或多个需计算装置执行的操作。其中,运算操作可以包括加法操作、乘法操作、卷积运算操作、池化操作等各种操作,本披露不限制运算操作的具体类型。
在一个应用场景中,所述多个处理电路阵列可以配置成各自执行不同的运算指令。在另一个应用场景中,所述多个处理电路阵列中的至少两个处理电路阵列可以配置成执行相同的运算指令。在一个实施例中,所述VLIW指令还可以包括移动指令。处理电路阵列可以配置成根据该移动指令在处理电路间对数据执行移动操作。在一个应用场景中,移动指令还可以包括掩码指令,从而所述处理电路阵列可以配置成根据掩码指令对数据进行选择性地移动,例如对掩蔽的数据不进行移动而对未掩蔽的数据进行移动。在一个应用场景中,移动指令还可以包括寄存器标识信息,其用于指示在处理电路间移动数据的源寄存器和目标寄存器,从而处理电路可以配置成根据所述寄存器标识信息将数据从所述源寄存器向所述目标寄存器移动。
以上结合图1对本披露的计算装置进行了描述,通过利用计算装置中的一个或多个处理电路阵列并且基于该处理电路的操作功能,本披露的VLIW指令得以在计算装置上高效地执行,以完成多线程操作,从而提升了并行运算的执行效率并减小计算的开销。
图2是示出根据本披露另一个实施例的计算装置200的框图。从图中可以看出,除了包括与计算装置100相同的控制电路102和多个处理电路104以外,图2中的计算装置200还包括存储电路106。在一个实施例中,控制电路可以还配置成获取数据读写指令,并将所述数据读写指令发送至存储电路,以便存储电路根据数据读写指令来执行与多线程操作相关的数据的读取和写入操作。
在一个应用场景中,上述的存储电路可以在多个方向上配置有用于数据传输的接口,以便与多个处理电路104连接,从而可以对处理电路待运算的数据、执行运算过程中获得的中间结果以及执行运算过程后获得的运算结果进行相应地存储。鉴于前述情形,在一个应用场景中,本披露的存储电路可以包括主存储模块和/或主缓存模块,其中所述主存储模块配置成存储用于处理电路阵列中执行运算的数据与执行运算后的运算结果,并且所述主缓存模块配置成缓存所述处理电路阵列中执行运算后的中间运算结果。进一步,存储电路还可以具有用于与片外存储介质进行数据传输的接口,从而可以实现片上与片外系统之间的数据搬运。
图3是示出根据本披露又一个实施例的计算装置300的框图。从图中可以看出,除了包括与计算装置200相同的控制电路102、多个处理电路104和存储电路106以外,图3中的计算装置300还包括数据操作电路108,其包括前操作电路110和后操作电路112。基于这样的硬件架构,本披露的VLIW指令可以包括前处理指令和/或后处理指令,其中所述前操作电路可以配置成根据所述前处理指令对所述多线程操作的输入数据进行前处理操作,并且所述后操作电路可以配置成根据所述后处理指令对所述多线程操作的输出数据进行后处理操作。
在一个应用场景中,所述前操作电路可以根据运算数据的类型和各个处理电路的逻辑地址,将所述运算数据进行相应的拆分并将拆分后获得的多个子数据分别传递至阵列中对应的各个处理电路中以便运算。在另一应用场景中,所述前操作电路可以根据解析后的指令从多种数据拼接模式中选择一种数据拼接模式,以对输入的两个数据执行拼接操作。在一个应用场景中,所述后操作电路可以配置成对数据执行压缩操作,所述压缩操作包括利用掩码对数据进行筛选或通过给定阈值与数据大小的比较来进行筛选,从而实现数据的压缩。
图4是示出根据本披露实施例的计算装置400的多种类型处理电路阵列的示例结构图。从图中所示可知,图4所示出的计算装置400具有与图3所示出的计算装置300相类似的架构,因此关于图3中计算装置300的描述同样也适用于图4中示出的相同细节,因此下文不再赘述。
从图4中可以看出,多个处理电路可以包括例如多个第一类型处理电路104-1和多个第二类型处理电路104-2(在图中以不同背景颜色来区分)。所述多个处理电路可以通过物理连接进行排布以形成二维阵列。例如,如图中所示,所述二维阵列中有M行N列(表示为M*N)个第一类型处理电路,其中M和N是大于0的正整数。所述第一类型处理电路可以用于执行算术运算和逻辑运算,例如可以包括加法、减法和乘法等线性运算、比较运算和与或非等非线性运算,或者前述各类运算的任意多种组合。进一步,在M*N个第一类型处理电路阵列的外围的左、右两侧各有两列、共(M*2+M*2)个第二类型处理电路,并且在其外围的下侧有两行、共(N*2+8)个第二类型处理电路,即该处理电路阵列共有(M*2+M*2+N*2+8)个第二类型处理电路。在一个实施例中,所述第二类型处理电路可以用于对接收到的数据执行例如比较运算、查表运算或移位操作等非线性运算。
在一些应用场景中,第一类型处理电路与第二类型处理电路二者所应用的存储电路可以具有不同的存储规模和存储方式。例如,第一类型处理电路中的谓词存储电路可以利用多个经过编号的寄存器存储谓词信息。进一步,第一类型处理电路可以根据接收到的解析后的指令中指定的寄存器编号来存取对应编号的寄存器中的谓词信息。又例如,第二类型处理电路可以采用静态随机存取存储器(“SRAM”)的方式对谓词信息进行存储。具体来说,所述第二类型处理电路可以根据接收到的解析后的指令中指定的该谓词信息所在位置的偏移量来确定所述谓词信息在SRAM中的存储地址,并且可以对该存储地址中的谓词信息进行预定的读出或写入操作。
以上结合图1-图4对本披露的计算装置的基本组成和扩展架构进行了详细的描述,下面将对前文所提到的用于对处理电路的连接进行配置的配置指令、用于执行数据读写操作的数据读写指令和用于执行各种计算操作的VLIW指令进行详细的描述。
配置指令
如前所述,本披露的配置指令可以用于对处理电路进行配置以便执行后续的数据读写指令和VLIW指令。在示例性的实现中,该配置指令可以包括用于配置处理电路阵列的多个指令域。例如,该指令域可以用于指示以二维矩阵的结构连接的多个处理电路的属性,例如指示在水平方向或垂直方向上的处理电路的成环模式和数据类型、水平方向或垂直方向上处理电路的各种寄存器、常数项和表项的相关信息、存储器地址、谓词逻辑、用于谓词操作的指令域等各类配置信息。例如,成环模式可以包括4、8或16个处理电路连接成环,或16个第一类型处理电路和4个第二类型处理电路的成环方式,或者不成环。成环方式的不同将影响数据在处理阵列中的流动方式。下面就控制电路对配置指令的具体执行来进行示例性描述。
在配置指令的执行过程中,控制电路可以首先根据配置指令中用于谓词操作的指令域的值与内部谓词寄存器做查找比对,从而确定是否执行对处理电路的当前配置。当确定需要执行该配置时,控制电路可以从内部寄存器读取存储水平方向上处理电路的坐标的存储器,从而获取配置处理电路阵列的水平方向上的处理电路坐标。进一步,控制电路可以直接从立即数域段来获取水平方向上的成环方式信息。类似的操作也适用于垂直方向的处理电路的坐标和成环方式信息。
接着,控制电路可以将上述的坐标信息和成环方式信息一并发送到处理电路阵列,处理电路阵列可以根据坐标信息来配置处理电路阵列中的单个处理电路阵列的内部各类寄存器,例如可以将坐标信息写入并修改水平成环配置寄存器和垂直成环配置寄存器的值。这里,水平或垂直成环配置寄存器的值可以用来确定当前处理电路阵列的数据流动方向,也因此决定了阵列中处理电路的成环方式。
对于配置常数项,如果相关的指令域指示需要配置该常数项,则控制电路可以根据常数来源的不同,选择从寄存器中获取常数数值或直接从立即数域段来获取。例如,当配置指令中的常数指令域中指示常数项来自于寄存器时,则控制电路可以通过读取具有指定编号的寄存器以得到常数值。此后,控制电路可以将获取的常数值发送到处理电路阵列。
对于配置表项,在一些场景中,表项的大小可能超过指令的位宽且难以直接在指令里全部写完,因此表项内容往往预先存储在存储电路中。如果相关的指令域指示需要配置该表项,控制单元可以向存储电路请求读取配置表项的存储地址,而地址参数可以来自于配置指令中标识的寄存器位置。当存储电路(例如主存储模块)接收到该请求后,可以向处理电路阵列返回表项数据。在一个应用场景中,获取表项数据之后的处理电路阵列可以将得到配置的表项保存到内部的存储电路(或寄存器)中。在一个实施例中,整个处理电路阵列可以共享一份常数项和表项数据的存储。
数据读写指令
如前所述,本披露的控制电路可以将解析后的数据读写指令(包括读请求指令和/或写请求指令)发送到存储电路,以便所述存储电路根据所述数据读写指令来与处理电路阵列进行数据交互。在一个应用场景中,存储电路可以包括多个方向上的输入(或写)和输出(或读)端口,以便与处理电路阵列中的一个或多个处理电路进行连接。基于此,所述数据读写指令的多个指令域中包括具体的某个或某些读端口的读请求信息以及具体的某个或某些写端口的写请求信息等信息。
在一个实施例中,上述的读请求信息至少包括待读取的数据的地址信息和数据量信息,而所述写请求信息至少包括待写入的数据的地址信息和数据量信息。例如,对于多维数据来说,数据量信息可以包括请求的第一个维度的数据量大小、第二个维度的地址跨度大小、第二个维度的迭代次数,第三个维度的地址跨度大小和迭代次数,以此类推。
在执行数据读写指令过程中,控制电路在解析数据读写指令后,将获取到多个读写请求信息。接着,其可以根据谓词逻辑来判断每个请求是否需要执行。对于满足当前执行条件的读请求,控制电路将读请求信息发送到存储电路。此后,存储电路根据读请求信息从相应的存储地址中获取例如三维的多维数据,并将数据返回给处理电路阵列。相比而言,对于写请求,控制电路可以将写请求信息发送到处理电路阵列,以便在包含VLIW指令在内的程序块的执行过程中,控制数据从处理电路阵列输出后的输出方式。接着,处理电路阵列可以在后续指令执行过程中,根据前述的写请求信息将数据输出到存储电路。此后,存储电路将接收到的数据写回到本地存储空间中。
VLIW指令
本披露的VLIW指令可以包括一条或多条运算指令,并且处理电路阵列可以配置成根据所述运算指令来执行多线程的运算操作。在一个实施例中,多个处理电路阵列配置成各自执行不同的运算指令。在另一个实施例中,所述多个处理电路阵列中的至少两个处理电路阵列配置成执行相同的运算指令。
在一个应用场景中,本披露的VLIW指令可以包括用于指示处理电路阵列多个输入端口和输出端口的操作的指令域、处理电路阵列沿水平和/或垂直方向移动数据的指令域以及处理电路阵列所执行的具体操作的指令域等。
例如,处理电路阵列0号输入端口操作可以表示0号读数端口对输入数据的预处理操作。这里的预处理操作可以包括例如拼接、查表、数据类型转换等操作,其可以由图2或图3中的前操作电路110来执行。除此之外,通过指定输入数据的去向(例如上述的移动操作),输入数据可以被直接发送到处理电路执行后续的运算,也可以用于修改当前处理电路的内部寄存器的取值。在一个应用场景中,这里的内部寄存器可以包括内部的通用寄存器和具有特殊作用的寄存器例如谓词寄存器等。另外,输入端口操作的指令域还可以包括用于指示谓词信息的指令域,由此处理电路阵列中的每个处理电路会将谓词信息与其内部的谓词寄存器做比对,以确定是否执行当前输入端口的操作。
处理电路阵列沿水平和/或垂直方向移动数据的指令域指定了处理电路中沿水平和/或垂直方向做数据移动的操作信息,其例如可以包括关于数据移动的掩码信息以用于屏蔽部分数据的移动、传输给邻近处理电路的源寄存器的标识、传输给邻近处理电路的目的寄存器的标识,成环寄存器标识以用于选取不同寄存器来实现数据流动,以及用于在控制电路和/或在处理电路内部中做谓词逻辑以决定当前指令域是否执行的谓词信息等各类信息。
在执行VLIW指令过程中,处理电路阵列可以将包括上述信息的指令域发送到每个处理电路阵列中的每个处理电路。在接收到上述信息后,每个处理电路可以根据当前谓词逻辑寄存器信息和指令域中的谓词信息的比对来确定当前处理电路是否执行数据移动操作。如果执行数据移动操作,源处理电路可以从指定的本地源寄存器中读取数据并根据前述的掩码信息做掩码处理,并且根据指定的成环寄存器中的信息得到给定移动方向上的目标处理电路的位置。接着,源处理电路可以将掩码处理后的数据发送到目的处理电路中指定编号的目的寄存器中。上述的一次数据搬运过程在每个处理电路中都有可能发生。
指示处理电路内部执行的具体操作的指令域可以包括操作数的来源信息、操作数寄存器位置信息、存储运算结果的目的寄存器信息、运算操作的描述信息、运算过程的数据类型信息、用于控制电路和处理电路作谓词操作的谓词信息等各类运算相关信息。
在执行过程中,每个处理电路可以根据上述的谓词信息与处理电路内部的谓词寄存器进行谓词判断,以确定当前处理电路是否执行运算操作。如果执行,则处理电路可以根据操作数寄存器信息来读取处理电路内部的寄存器,以获得运算的操作数。接着,可以根据上述的运算操作描述信息来确定运算的类型。在运算结束后,处理电路可以根据运算结果的目的寄存器信息,将运算后得到的结果写回到处理电路内部的寄存器中。
从上述关于配置指令、数据读写指令和VLIW指令的描述,可以看出所述VLIW指令、配置指令和数据读写指令包括各自相对应的谓词,并且所述控制电路、处理电路和存储电路配置成根据相对应的谓词来确定是否执行VLIW指令、配置指令和/或数据读写指令。进一步,根据不同的应用场景,本披露的所述VLIW指令可以与所述配置指令和数据读写指令二者中的至少一个相组合,以形成扩展的VLIW指令。由此,可以进一步简化指令,提高执行指令的效率。
图5a,5b,5c和5d是示出根据本披露实施例的多个处理电路的多种连接关系的示意图。如前所述,本披露的多个处理电路可以硬线连接的方式或根据配置指令的逻辑连接方式来连接,从而形成连接的一维或多维阵列的拓扑结构。当多个处理电路之间以多维阵列进行连接时,所述多维阵列可以是二维阵列,并且位于所述二维阵列中的所述处理电路可以在其行方向、列方向或对角线方向的至少一个方向上,以预定的二维间隔模式与同行、同列或同对角线上的其余一个或多个所述处理电路连接。其中所述预定的二维间隔模式可以与所述连接中间隔的处理电路的数目相关联。图5a至图5c示例性示出多个处理电路之间的多种形式的二维阵列的拓扑结构。
如图5a所示,五个处理电路(每个以方框表示)连接形成一个简单的二维阵列。具体来说,以一个处理电路作为二维阵列的中心,向相对于该处理电路的水平和垂直的四个方向上各连接一个处理电路,从而形成一个具有三行和三列大小的二维阵列。进一步,由于位于二维阵列中心的处理电路分别与同行的前一列和后一列相邻的处理电路、与同列的上一行和下一行相邻的处理电路直接连接,从而间隔的处理电路的数目(简称“间隔数目”)为0。
如图5b所示,四行四列的处理电路可以连接形成一个二维Torus阵列,其中每个处理电路分别与其相邻的前一行和后一行、前一列和后一列的处理电路进行连接,即相邻处理电路连接的间隔数目均为0。进一步,位于该二维Torus阵列中每行或每列的第一个处理电路还与该行或该列的最后一个处理电路相连,每行或每列首尾相连的处理电路之间的间隔数目均为2。
如图5c所示,四行四列的处理电路还可以连接形成一个相邻处理电路之间的间隔数目为0、不相邻处理电路之间的间隔数目为1的二维阵列。具体地,该二维阵列中同行或同列相邻的处理电路直接连接,即间隔数目为0,而同行或同列不相邻的处理电路与间隔数目为1的处理电路进行连接。可以看出,当多个处理电路连接形成二维阵列时,图5b和图5c示出的同行或同列的处理电路之间可以有不同的间隔数目。类似地,在一些场景中,也可以不同的间隔数目与对角线方向上的处理电路进行连接。
如图5d所示,利用四个如图5b示出的二维Torus阵列,可以按照预定的间隔排列成四层二维Torus阵列进行连接,以形成一个三维Torus阵列。该三维Torus阵列在二维Torus阵列的基础上,利用与行间、列间类似的间隔模式进行层间连接。例如,首先将相邻层同行同列的处理电路直接相连,即间隔数目为0。接着,将第一层和最后一层同行同列的处理电路进行连接,即间隔数目为2。最终可以形成四层四行四列的三维Torus阵列。
通过上面这些示例,本领域技术人员可以理解处理电路的其他多维阵列的连接关系可以在二维阵列的基础上,通过增加新的维度和增加处理电路的数目来形成。在一些应用场景中,本披露的方案也可以通过使用配置指令来对处理电路配置逻辑连接。换句话说,尽管处理电路之间可能存在硬线连接,但本披露的方案也可以通过配置指令来选择性地令一些处理电路连接,或者选择性地旁路一些处理电路,以形成一个或多个逻辑连接。在一些实施例中,还可以根据实际运算的需求(例如数据类型的转换)来调整前述的逻辑连接。进一步,针对于不同的计算场景,本披露的方案可以对处理电路的连接进行配置,包括例如配置成矩阵或者配置成一个或多个闭合的计算环路。
图6a,6b,6c和6d是示出根据本披露实施例的多个处理电路的另外多种连接关系的示意图。从图中可以看出,图6a至图6d是在图5a至图5d示出的多个处理电路形成的多维阵列的又一种示例性连接关系。鉴于此,结合图5a至图5d所描述的技术细节也同样适用于图6a至图6d所示出的内容。
如图6a所示,二维阵列的处理电路包括位于二维阵列中心的中心处理电路和与该中心处理电路同行和同列的四个方向上分别连接的三个处理电路。因此,该中心处理电路与其余处理电路之间连接的间隔数目分别是0、1和2。如图6b所示,二维阵列的处理电路包括位于二维阵列中心的中心处理电路、和与该处理电路同行的两个相对方向上的三个处理电路,以及与该处理电路同列的两个相对方向上的一个处理电路。因此,中心处理电路与同行的处理电路之间连接的间隔数目分别为0和2,与同列的处理电路之间连接的间隔数目均为0。
正如前文结合图5d所示出的,多个处理电路形成的多维阵列可以由多个层构成的三维阵列。其中所述三维阵列的每个层可以包括沿其行方向和列方向排列的多个所述处理电路的二维阵列。进一步,位于所述三维阵列中的所述处理电路可以在其行方向、列方向、对角线方向和层方向的至少一个方向上以预定的三维间隔模式与同行、同列、同对角线或不同层上的其余一个或多个处理电路连接。进一步,所述预定的三维间隔模式与所述连接中相互间隔的处理电路的数目可以和间隔的层数目相关。下面将结合图6c与图6d对三维阵列的连接方式做出进一步描述。
图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。
图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)处的处理电路彼此进行连接。
上文对多个处理电路形成的多维阵列的连接关系进行了示例性描述,下文将结合图7-图8对多个处理电路形成的不同环路结构做出进一步示例性说明。
图7a,7b、7c和7d是分别示出根据本披露实施例的处理电路的多种环路结构的示意图。根据不同的应用场景,多个处理电路不仅可以物理连接关系来进行连接,也可以根据接收到的解析后的指令配置成以逻辑关系来进行连接。所述多个处理电路可以配置成利用所述逻辑连接关系进行连接以形成闭合的环路。
如图7a所示,四个相邻的处理电路顺序编号为“0、1、2和3”。接着,从处理电路0开始按照顺时针方向将该四个处理电路顺序相连,并且处理电路3与处理电路0进行连接,以使四个处理电路串联形成一个闭合的环路(简称“成环”)。在该环路中,处理电路的间隔数目为0或2,例如处理电路0与1之间间隔数目为0,而处理电路3与0之间间隔数目为2。进一步,所示环路中的四个处理电路的物理地址(在本披露的上下文中也可以称为物理坐标)可以表示为0-1-2-3,而其逻辑地址(在本披露的上下文中也可以称为逻辑坐标)同样可以表示为0-1-2-3。需要注意的是,图7a所示出的连接顺序仅仅是示例性的而非限制性的,本领域技术人员根据实际计算需要,也可以以逆时针方向对四个处理电路进行串联连接以形成闭合的环路。
在一些实际场景中,当一个处理电路支持的数据位宽不能满足运算数据的位宽要求时,可以利用多个处理电路组合成一个处理电路组以表示一个数据。例如,假设一个处理电路可以处理8位数据。当需要处理32位的数据时,则可以将4个处理电路进行组合成为一个处理电路组,以便对4个8位数据进行连接以形成一个32位数据。进一步,前述4个8位处理电路形成的一个处理电路组可以充当图7b中示出的一个处理电路104,从而可以支持更高位宽的运算操作。
从图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。因此,当需要对高比特位宽的数据进行拆分以分配给不同的处理电路时,可以根据处理电路的逻辑地址对数据顺序进行重新排列和分配。
上述的拆分和重新排列的操作可以由结合图3描述的前操作电路来执行。特别地,该前操作电路可以根据多个处理电路的物理地址和逻辑地址来对输入数据进行重新排列,以用于满足数据运算的要求。假设四个顺序排列的处理电路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,以用于保证输入数据和输出结果数据之间的排列一致性。
图7c和图7d示出更多的处理电路分别以不同方式进行排列和连接,以形成闭合的环路。如图7c所示,以0,1…15顺序编号的16个处理电路104从处理电路0开始,顺序地每两个处理电路进行连接和组合,以形成一个处理电路组。例如,如图中所示,处理电路0与处理电路1连接形成一个处理电路组……。以此类推,处理电路14与处理电路15连接以形成一个处理电路组,最终形成八个处理电路组。进一步,该八个处理电路组也可以类似于前述的处理电路的连接方式进行连接,包括按照例如预定的逻辑地址来进行连接,以形成一个处理电路组的闭合的环路。
如图7d所示,多个处理电路104以不规则或者说不统一的方式来连接,以形成具有闭合环路的处理电路矩阵。具体来说,在图7d中示出处理电路之间可以间隔数目为0或3来形成闭合的环路,例如处理电路0可以分别与处理电路1(间隔数目为0)和处理电路4(间隔数目为3)相连。
由上述结合图7a、7b、7c和7d的描述可知,本披露的处理电路可以间隔有不同数目的处理电路,以便连接成闭合的环路。当处理电路总数变化时,也可以选择任意的中间间隔数目进行动态配置,从而连接成闭合的环路。还可以将多个处理电路组合成为处理电路组,并连接成处理电路组的闭合的环路。另外,多个处理电路的连接可以是硬件构成的硬连接方式,或者可以是软件配置的软连接方式。
图8a,8b和8c是示出根据本披露实施例的处理电路的另外多种环路结构的示意图。正如结合图6所示出的多个处理电路可以形成一个闭合的环路,并且所述闭合的环路中的每个处理电路可以配置有各自的逻辑地址。进一步,由结合图2描述的前操作电路可以配置成根据运算数据的类型(例如32bit数据,16bit数据或8bit数据)和逻辑地址,将所述运算数据进行相应的拆分并将拆分后获得的多个子数据分别传递至环路中对应的各个处理电路中以用于后续运算。
图8a上图示出四个处理电路连接形成一个闭合环路,并且该四个处理电路按从右到左顺序的物理地址可以表示为0-1-2-3。图8a下图示出前述所述环路中的四个处理电路从右到左顺序的逻辑地址表示为0-3-1-2。例如,图8a下图所示出的逻辑地址为“3”的处理电路具有图8a上图示出的物理地址“1”。
在一些应用场景中,假设操作数据的粒度是输入数据的低128bit,例如图中的原始序列“15,14,……2,1,0”(每个数字对应8bit数据),并且设定该16个8bit数据的逻辑地址从低到高编号依次是0~15。进一步,按照如图8a下图所示出的逻辑地址,所述前操作电路可以根据不同的数据类型,对数据采用不同的逻辑地址进行编码或排列。
当处理电路操作的数据位宽为32bit时,逻辑地址分别为(3,2,1,0),(7,6,5,4),(11,10,9,8)和(15,14,13,12)的4个数可以分别表示第0~3个32bit数据。所述前操作电路可以将第0个32bit数据传送至逻辑地址为“0”的处理电路中(对应的物理地址为“0”),可以将第1个32bit数据传送至逻辑地址为“1”的处理电路中(对应的物理地址为“2”),可以将第2个32bit数据传送至逻辑地址为“2”的处理电路中(对应的物理地址为“3”),可以将第3个32bit数据传送至逻辑地址为“3”的处理电路中(对应的物理地址为“1”)。通过数据的重新排列,以用于满足处理电路的后续运算需求。因此最终数据的逻辑地址与物理地址之间的映射关系为(15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)->(11,10,9,8,7,6,5,4,15,14,13,12,3,2,1,0)。
当处理电路操作的数据位宽为16bit时,逻辑地址分别为(1,0),(3,2),(5,4),(7,6),(9,8),(11,10),(13,12)和(15,14)的8个数可以分别表示第0~7个16bit数据。所述前操作电路可以将第0个和第4个16bit数据传送至逻辑地址为“0”的处理电路中(对应的物理地址为“0”),可以将第1个和第5个16bit数据传送至逻辑地址为“1”的处理电路中(对应的物理地址为“2”),可以将第2个和第6个16bit数据传送至逻辑地址为“2”的处理电路中(对应的物理地址为“3”),可以将第3个和第7个16bit数据传送至逻辑地址为“3”的处理电路中(对应的物理地址为“1”)。因此最终数据的逻辑地址与物理地址之间的映射关系为:
(15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)->(13,12,5,4,11,10,3,2,15,14,7,6,9,8,1,0)。
当处理电路操作的数据位宽为8bit时,逻辑地址为0~15的16个数可以分别表示第0~15个8bit数据。根据图8a所示出的连接,所述前操作电路可以将第0个、第4个、第8个和第12个8bit数据传送至逻辑地址为“0”的处理电路中(对应的物理地址为“0”);可以将第1个、第5个、第9个和第13个8bit数据传送至逻辑地址为“1”的处理电路中(对应的物理地址为“2”);可以将第2个、第6个、第10个和第14个8bit数据传送至逻辑地址为“2”的处理电路中(对应的物理地址为“3”);可以将第3个、第7个、第11和第15个8bit数据传送至逻辑地址为“3”的处理电路中(对应的物理地址为“1”)。因此最终数据的逻辑地址与物理地址之间的映射关系为:
(15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)->(14,19,6,2,13,9,5,1,15,11,7,3,12,8,4,0)。
图8b上图示出八个顺序编号的处理电路0至处理电路7连接形成一个闭合的环路,并且该八个处理电路的物理地址为0-1-2-3-4-5-6-7。图8b下图示出前述八个处理电路的逻辑地址为0-7-1-6-2-5-3-4。例如,图8b上图示出物理地址为“6”的处理电路对应于图8b下图示出的逻辑地址为“3”。
图8b所示出的针对不同数据类型,所述前操作电路对数据进行重新排列后传送至对应的处理电路的操作与图8a类似,因此结合图8a所描述的技术方案也同样适用于图8b,此处不再对上述的数据重新排列操作过程进行赘述。进一步,图8b所示出的处理电路的连接关系与图8a所示出的类似,但图8b示出八个处理电路为图8a所示出的处理电路个数的两倍。由此,在根据不同数据类型进行操作的应用场景中,结合图8b所描述操作数据的粒度可以为结合图8a所描述操作数据的粒度的两倍。因此,相对于前面例子中输入数据的粒度为低128bit,本例中操作数据的粒度可以为输入数据的低256bit,例如图中示出的原始数据序列“31,30,……,2,1,0”,每个数字对应于8比特(“bit”)长度。
针对于上述原始数据序列,当处理电路操作的数据位宽分别是32bit、16bit和8bit时,图中还分别示出成环的处理电路中的数据的排列结果。例如,当操作的数据位宽是32bit时,逻辑地址为“1”的处理电路中的1个32bit数据为(7,6,5,4),该处理电路对应的物理地址为“2”。而当操作的数据位宽是16bit时,逻辑地址为“3”的处理电路中的2个16bit数据为(23,22,7,6),该处理电路对应的物理地址为“6”。当操作的数据位宽是8bit时,逻辑地址为“6”的处理电路中的4个8bit数据为(30,22,14,6),该处理电路对应的物理地址为“3”。
上文结合图8a和图8b所示出的多个单个类型处理电路(如图3示出的第一类型处理电路)连接形成闭合环路的情形,针对不同数据类型的数据操作进行了描述。下文将结合图8c所示出的多个不同类型处理电路(如图4示出的第一类型处理电路和第二类型处理电路)进行连接形成闭合环路的情形,针对不同数据类型的数据操作做出进一步描述。
图8c上图示出,以0,1……19顺序编号的二十个多类型处理电路进行连接,以形成一个闭合的环路(图中示出的编号为处理电路的物理地址)。编号从0至15的十六个处理电路为第一类型处理电路,编号从16至19的四个处理电路为第二类型处理电路。类似地,该二十个处理电路中每个的物理地址,与图8c下图示出的对应处理电路的逻辑地址具有映射关系。
进一步,在对不同数据类型进行操作时,例如对于图中示出的80个8bit的原始序列,图8c还示出针对于处理电路支持的不同数据类型,对前述原始数据进行操作后的结果。例如,当操作的数据位宽是32bit时,逻辑地址为“1”的处理电路中的1个32bit数据为(7,6,5,4),该处理电路对应的物理地址为“2”。而当操作的数据位宽是16bit时,逻辑地址为“11”的处理电路中的2个16bit数据为(63,62,23,22),该处理电路对应的物理地址为“9”。而当操作的数据位宽是8bit时,逻辑地址为“17”的处理电路中的4个8bit数据为(77,57,37,17),该处理电路对应的物理地址为“18”。
图9a,9b,9c和9d是示出根据本披露实施例的前处置电路所执行的数据拼接操作示意图。如前所述,本披露结合图2所描述的前处置电路还可以配置成根据解析后的指令从多种数据拼接模式中选择一种数据拼接模式,以对输入的两个数据执行拼接操作。关于多种数据拼接模式,在一个实施例中,本披露的方案通过对待拼接的两个数据按最小数据单元划分和编号,然后基于指定的规则来抽取数据的不同最小数据单元以形成不同的数据拼接模式。例如,可以基于编号的奇偶性或编号是否是指定数字的整数倍来进行例如交替式地抽取和摆放,从而形成不同的数据拼接模式。根据不同的计算场景(例如数据位宽的不同),这里的最小数据单元可以简单的就是1位或1比特数据,或者是2位、4位、8位、16位或32位或比特的长度。进一步,在抽取两个数据的不同编号部分时,本披露的方案既可以以最小数据单元来交替地抽取,也可以以最小数据单元的倍数来抽取,例如从两个数据中交替地一次抽取两个或三个最小数据单元的部分数据作为一组来按组进行拼接。
基于上述数据拼接模式的描述,下面将结合图9a至图9c来以具体的例子示例性阐述本披露的数据拼接模式。在所示的图中,输入数据为In1和In2,当图中的每个方格代表一个最小数据单元时,两个输入数据都具有8个最小数据单元的位宽长度。如前所述,对于不同位宽长度的数据,该最小数据单元可以代表不同的位数(或比特数)。例如,对于位宽为8位的数据,最小数据单元代表1位数据,而对于位宽为16位的数据,最小数据单元代表2位数据。又例如,对于位宽为32位的数据,最小数据单元代表4位数据。
如图9a所示,待拼接的两个输入数据In1和In2各由从右至左顺序编号为1,2,……,8的八个最小数据单元构成。按照编号由小到大、先In1后In2、先奇数编号后偶数编号的奇偶交错原则进行数据拼接。具体而言,当操作的数据位宽为8bit时,数据In1和In2各表示一个8位数据,而每个最小数据单元代表1位数据(即一个方格代表1比特数据)。根据数据的位宽和前述的拼接原则,首先抽取数据In1编号为1、3、5和7的最小数据单元顺序布置于低位。接着,顺序布置数据In2的四个奇数编号的最小数据单元。类似地,顺序布置数据In1编号为2、4、6和8的最小数据单元和数据In2的四个偶数编号的最小数据单元。最终,由16个最小数据单元拼接形成1个16位或2个8位的新数据,如图9a中第二行方格所示出的。
如图9b所示,在数据位宽为16bit时,数据In1和In2各表示一个16位数据,此时每个最小数据单元代表2位数据(即一个方格代表一个2比特数据)。根据数据的位宽和前述的交错拼接原则,可以先抽取数据In1编号为1、2、5和6的最小数据单元顺序布置于低位。然后,顺序布置数据In2编号为1、2、5和6的最小数据单元。类似地,顺序布置数据In1编号为3、4、7和8和数据In2相同编号的最小数据单元,以拼接形成最终的16个最小数据单元组成的1个32位或2个16位的新数据,如图9b中第二行方格所示出的。
如图9c所示,在数据位宽为32bit时,数据In1和In2各表示一个32位数据,而每个最小数据单元代表4位数据(即一个方格代表一个4比特数据)。根据数据的位宽和前述的交错拼接原则,可以先抽取数据In1编号为1、2、3和4和数据In2相同编号的最小数据单元顺序布置于低位。然后,抽取数据In1编号为5、6、7和8与数据In2相同编号的最小数据单元顺序布置,从而拼接形成最终的16个最小数据单元组成的1个64位或2个32位的新数据。
上面结合图9a-图9c描述了本披露的示例性数据拼接方式。然而,可以理解的是在一些计算场景中,数据拼接并不涉及上述的交错排放,而仅仅是两个数据在保持各自原有数据位置不变情况下的简单排布,例如图9d中所示出的。从图9d中可看出,两个数据In1和In2并不执行如图9a-图9c中示出的交错排布,而仅仅是将数据In1的最后一个最小数据单元和In2的第一个最小数据单元进行串联,从而获得位宽增大(例如加倍)的新数据类型。在一些场景中,本披露的方案还可以基于数据属性进行成组的拼接。例如,可以将具有同一特征图的神经元数据或权值数据形成一组,然后进行排布,以构成拼接后数据的连续部分。
图10a,10b和10c是示出根据本披露实施例的后处置电路所执行的数据压缩操作示意图。所述压缩操作可以包括利用掩码对数据进行筛选或通过给定阈值与数据大小的比较来进行压缩。关于数据压缩操作,可以对其按如前所述的最小数据单元进行划分和编号。与结合图9a-图9d所述的类似,最小数据单元可以例如是1位或1比特数据,或者是2位、4位、8位、16位或32位或比特的长度。下面将结合图10a至图10c针对不同的数据压缩模式做出示例性描述。
如图10a所示,原始数据由从右至左顺序编号为1,2……,8的八个方格(即八个最小数据单元)依次排列组成,假设每个最小数据单元可以表示1比特数据。当根据掩码进行数据压缩操作时,所述后处置电路可以利用掩码对原始数据进行筛选以执行数据压缩操作。在一个实施例中,掩码的位宽与原始数据的最小数据单元的个数对应。例如,前述的原始数据具有8个最小数据单元,则掩码位宽为8位,并且编号为1的最小数据单元对应于掩码的最低位,编号为2的最小数据单元对应于掩码的次低位。以此类推,编号为8的最小数据单元对应于掩码的最高位。在一个应用场景中,当8位掩码为“10010011”时,压缩原则可以设置为抽取与该掩码为“1”的数据位对应的原始数据中的最小数据单元。例如,对应掩码数值为“1”的最小数据单元的编号为1、2、5和8。由此,可以抽取编号为1、2、5和8的最小数据单元,并且按照编号从低到高的顺序依次排列,以形成压缩后的新数据,如图10a第二行所示。
图10b示出与图10a类似的原始数据,并且从图10b的第二行中可以看出,经过后处置电路的数据序列维持原有的数据排列顺序和内容。由此可以理解,本披露的数据压缩也可以包括禁用模式或非压缩模式,以便在数据经过后处置电路时不执行压缩操作。
如图10c所示,原始数据由八个方格依次排列组成,每个方格上方的数字表示其编号,从右至左顺序编号为1,2……8,并且假设每个最小数据单元可以为8比特数据。进一步,每个方格中的数字表示该最小数据单元的十进制数值。以编号为1的最小数据单元为例,其十进制数值为“8”,对应的8比特数据为“00001111”。当根据阈值进行数据压缩操作时,假设阈值为十进制数据“8”,压缩原则可以设置为抽取原始数据中所有大于或等于该阈值“8”的最小数据单元。由此,可以抽取编号为1、4、7和8的最小数据单元。然后,将抽取得到的所有最小数据单元按照编号从低到高的顺序进行排列,以获得最终的数据结果,如图10c中的第二行所示。
图11是示出根据本披露实施例的使用计算装置来执行运算操作的方法1100的简化流程图。根据前文的描述,可以理解这里的计算装置可以是结合图1-图4所描述的计算装置,其具有如图5-图10所示出的处理电路连接关系并且支持附加的各类操作。
如图11所示,在步骤1110处,方法1100利用控制电路来获取超长指令字(VLIW)指令并对其进行解析以获得解析后的VLIW指令,并将解析后的VLIW指令发送至多个处理电路。接着,在步骤1120,方法1100将所述多个处理电路以一维或多维阵列的结构连接成一个或多个处理电路阵列,并且将所述一个或多个处理电路阵列配置成根据解析后的VLIW指令来执行多线程操作。
在一个实施例中,方法1100将所述处理电路阵列配置成根据所述配置指令在一维或多维方向的至少一个维度方向上形成闭合环路。在另一个实施例中,所述VLIW指令包括一条或多条运算指令,并且所述方法1100将一个或多个处理电路阵列配置成根据所述运算指令来执行多线程的运算操作。在一个应用场景中,所述VLIW指令、配置指令和数据读写指令包括各自相对应的谓词,并且所述方法包括将所述控制电路、处理电路和存储电路配置成根据相对应的谓词来确定是否执行VLIW指令、配置指令和/或数据读写指令。
以上为了简明的目的,仅结合图11描述了本披露的方法及其部分实施例。本领域技术人员根据本披露的公开内容也可以想到本方法可以包括更多的步骤,并且这些步骤的执行可以实现前文结合图1-图10所描述的本披露的各类操作,此处不再赘述。
图12是示出根据本披露实施例的一种组合处理装置1200的结构图。如图12中所示,该组合处理装置1200包括计算处理装置1202、接口装置1204、其他处理装置1206和存储装置1208。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置1210,该计算装置可以配置用于执行本文结合图1-11所描述的操作。
在不同的实施例中,本披露的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。
在示例性的操作中,本披露的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics ProcessingUnit,GPU)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
在一个或多个实施例中,该其他处理装置可以作为本披露的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。
在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。
附加地或可选地,本披露的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
在一些实施例里,本披露还公开了一种芯片(例如图13中示出的芯片1302)。在一种实现中,该芯片是一种系统级芯片(System on Chip,SoC),并且集成有一个或多个如图12中所示的组合处理装置。该芯片可以通过对外接口装置(如图13中示出的对外接口装置1306)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如DRAM接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图13对该板卡进行详细地描述。
图13是示出根据本披露实施例的一种板卡1300的结构示意图。如图13中所示,该板卡包括用于存储数据的存储器件1304,其包括一个或多个存储单元1310。该存储器件可以通过例如总线等方式与控制器件1308和上文所述的芯片1302进行连接和数据传输。进一步,该板卡还包括对外接口装置1306,其配置用于芯片(或芯片封装结构中的芯片)与外部设备1312(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准PCIE接口等。
在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(Micro ControllerUnit,MCU),以用于对所述芯片的工作状态进行调控。
根据上述结合图12和图13的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、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、一种计算装置,包括控制电路和多个处理电路,其中:
所述控制电路配置成获取超长指令字(VLIW)指令并对其进行解析,并且将解析后的VLIW指令发送至所述多个处理电路;以及
所述多个处理电路以一维或多维阵列的结构连接成一个或多个处理电路阵列,并且所述一个或多个处理电路阵列配置成根据解析后的VLIW指令来执行多线程操作。
条款2、根据条款1所述的计算装置,其中所述控制电路还配置成获取配置指令,所述多个处理电路配置成根据所述配置指令来进行连接,以便形成所述一个或多个处理电路阵列。
条款3、根据条款2所述的计算装置,其中所述处理电路阵列配置成根据所述配置指令在一维或多维方向的至少一个维度方向上形成闭合环路。
条款4、根据条款2或3所述的计算装置,其中所述控制电路包括一个或多个寄存器,其存储有关于所述处理电路阵列的配置信息,所述控制电路配置成根据所述配置指令从所述寄存器读取所述配置信息并向所述处理电路发送,以便所述处理电路以所述配置信息进行连接,所述配置信息包括预设的组成所述一个或多个处理电路阵列的处理电路的位置信息,当所述处理电路阵列配置形成闭合环路时,所述配置信息还包括关于所述处理电路阵列形成闭合环路的成环配置信息。
条款5、根据条款3所述的计算装置,其中位于所述二维阵列中的所述处理电路配置成在其行方向、列方向或对角线方向的至少一个上以预定的二维间隔模式与同行、同列或同对角线的其余一个或多个所述处理电路连接,以便形成一个或多个闭合环路。
条款6、根据条款5所述的计算装置,其中所述预定的二维间隔模式与所述连接中间隔的处理电路的数目相关联。
条款7、根据条款3所述的计算装置,其中所述处理电路阵列以由多个层构成的三维阵列的成环方式进行连接,其中每个层包括沿行方向、列方向和对角线方向排列的多个所述处理电路的二维阵列,并且其中:
位于所述三维阵列中的所述处理电路配置成在其行方向、列方向、对角线方向和层方向的至少一个上以预定的三维间隔模式与同行、同列、同对角线或不同层上的其余一个或多个处理电路连接,以便形成一个或多个闭合环路。
条款8、根据条款7所述的计算装置,其中所述预定的三维间隔模式与待连接的处理电路之间的间隔数目和间隔层数相关联。
条款9、根据条款2所述的计算装置,其中所述控制电路配置成根据所述配置指令将常数项和表项中的至少一个发送至所述处理电路阵列以便执行所述多线程操作。
条款10、根据条款1所述的计算装置,进一步包括存储电路,其中所述控制电路还配置成获取数据读写指令,并将所述数据读写指令发送至所述存储电路,所述存储电路配置成根据所述数据读写指令来执行与所述多线程操作相关的数据的读取和写入操作。
条款11、根据条款10所述的计算装置,其中所述数据读写指令至少包括数据的地址信息和数据量信息。
条款12、根据条款1所述的计算装置,其中所述VLIW指令包括一条或多条运算指令,并且所述一个或多个处理电路阵列配置成根据所述运算指令来执行多线程的运算操作。
条款13、根据条款12所述的计算装置,其中所述多个处理电路阵列配置成各自执行不同的运算指令,或者所述多个处理电路阵列中的至少两个处理电路阵列配置成执行相同的运算指令。
条款14、根据条款1所述的计算装置,还包括数据操作电路,所述数据操作电路包括前操作电路和/或后操作电路,其中所述VLIW指令还包括前处理指令和/或后处理指令,其中所述前操作电路配置成根据所述前处理指令对所述多线程操作的输入数据进行前处理操作,并且所述后操作电路配置成根据所述后处理指令对所述多线程操作的输出数据进行后处理操作。
条款15、根据条款1-14的任意一项所述的计算装置,其中所述VLIW指令还包括移动指令,并且所述处理电路阵列配置成根据所述移动指令在处理电路间对数据执行移动操作。
条款16、根据条款15所述的计算装置,其中所述移动指令还包括掩码指令,所述处理电路阵列配置成根据所述掩码指令对数据进行选择性地移动。
条款17、根据条款15所述的计算装置,其中所述移动指令还包括寄存器标识信息,其用于指示在处理电路间移动数据的源寄存器和目标寄存器,所述处理电路配置成根据所述寄存器标识信息将数据从所述源寄存器向所述目标寄存器移动。
条款18、根据条款15所述的计算装置,其中所述VLIW指令、配置指令和数据读写指令包括各自相对应的谓词,并且所述控制电路、处理电路和存储电路配置成根据相对应的谓词来确定是否执行VLIW指令、配置指令和/或数据读写指令。
条款19、根据条款15所述的计算装置,其中所述VLIW指令与所述配置指令和数据读写指令二者中的至少一个相组合,以形成扩展的VLIW指令。
条款20、一种集成电路芯片,包括根据条款1-19的任意一项所述的计算装置。
条款21、一种板卡,包括根据条款20所述的集成电路芯片。
条款22、一种电子设备,包括根据权利要求20所述的集成电路芯片。
条款23、一种使用计算装置来执行计算操作的方法,其中所述计算装置包括控制电路和多个处理电路,所述方法包括:
利用所述控制电路来获取超长指令字(VLIW)指令并对其进行解析以获得解析后的VLIW指令,并将解析后的VLIW指令发送至所述多个处理电路;以及
将所述多个处理电路以一维或多维阵列的结构连接成一个或多个处理电路阵列,并且将所述一个或多个处理电路阵列配置成根据解析后的VLIW指令来执行多线程操作。
条款24、根据条款23所述的方法,其中利用所述控制电路来获取配置指令,并且将所述多个处理电路配置成根据所述配置指令来进行连接,以便形成所述一个或多个处理电路阵列。
条款25、根据条款24所述的方法,其中将所述处理电路阵列配置成根据所述配置指令在一维或多维方向的至少一个维度方向上形成闭合环路。
条款26、根据条款24或25所述的方法,其中所述控制电路包括一个或多个寄存器,其存储有关于所述处理电路阵列的配置信息,所述方法还包括将所述控制电路配置成根据所述配置指令从所述寄存器读取所述配置信息并向所述处理电路发送,以便所述处理电路以所述配置信息进行连接,所述配置信息包括预设的组成所述一个或多个处理电路阵列的处理电路的位置信息,当所述处理电路阵列配置形成闭合环路时,所述配置信息还包括关于所述处理电路阵列形成闭合环路的成环配置信息。
条款27、根据条款25所述的方法,其中将位于所述二维阵列中的所述处理电路配置成在其行方向、列方向或对角线方向的至少一个上以预定的二维间隔模式与同行、同列或同对角线的其余一个或多个所述处理电路连接,以便形成一个或多个闭合环路。
条款28、根据条款27所述的方法,其中所述预定的二维间隔模式与所述连接中间隔的处理电路的数目相关联。
条款29、根据条款25所述的方法,其中将所述处理电路阵列以由多个层构成的三维阵列的成环方式进行连接,其中每个层包括沿行方向、列方向和对角线方向排列的多个所述处理电路的二维阵列,并且其中:
位于所述三维阵列中的所述处理电路配置成在其行方向、列方向、对角线方向和层方向的至少一个上以预定的三维间隔模式与同行、同列、同对角线或不同层上的其余一个或多个处理电路连接,以便形成一个或多个闭合环路。
条款30、根据条款29所述的方法,其中所述预定的三维间隔模式与待连接的处理电路之间的间隔数目和间隔层数相关联。
条款31、根据条款24所述的方法,其中将所述控制电路配置成根据所述配置指令将常数项和表项中的至少一个发送至所述处理电路阵列以便执行所述多线程操作。
条款32、根据条款23所述的方法,其中所述计算装置还包括存储电路,所述方法还包括将所述控制电路配置成获取数据读写指令,并将所述数据读写指令发送至所述存储电路,并且将所述存储电路配置成根据所述数据读写指令来执行与所述多线程操作相关的数据的读取和写入操作。
条款33、根据条款31所述的方法,其中所述数据读写指令至少包括数据的地址信息和数据量信息。
条款34、根据条款23所述的方法,其中所述VLIW指令包括一条或多条运算指令,并且所述一个或多个处理电路阵列配置成根据所述运算指令来执行多线程的运算操作。
条款35、根据条款34所述的方法,其中将所述多个处理电路阵列配置成各自执行不同的运算指令,或者将所述多个处理电路阵列中的至少两个处理电路阵列配置成执行相同的运算指令。
条款36、根据条款23所述的方法,还包括数据操作电路,所述数据操作电路包括前操作电路和/或后操作电路,其中所述VLIW指令还包括前处理指令和/或后处理指令,其中所述前操作电路配置成根据所述前处理指令对所述多线程操作的输入数据进行前处理操作,并且所述后操作电路配置成根据所述后处理指令对所述多线程操作的输出数据进行后处理操作。
条款37、根据条款23-36的任意一项所述的方法,其中所述VLIW指令还包括移动指令,并且所述方法包括将所述处理电路阵列配置成根据所述移动指令在处理电路间对数据执行移动操作。
条款38、根据条款37所述的方法,其中所述移动指令还包括掩码指令,所述方法包括将所述处理电路阵列配置成根据所述掩码指令对数据进行选择性地移动。
条款39、根据条款37所述的方法,其中所述移动指令还包括寄存器标识信息,其用于指示在处理电路间移动数据的源寄存器和目标寄存器,所述方法包括将所述处理电路配置成根据所述寄存器标识信息将数据从所述源寄存器向所述目标寄存器移动。
条款40、根据条款37所述的方法,其中所述VLIW指令、配置指令和数据读写指令包括各自相对应的谓词,并且所述方法包括将所述控制电路、处理电路和存储电路配置成根据相对应的谓词来确定是否执行VLIW指令、配置指令和/或数据读写指令。
条款41、根据条款37所述的方法,其中将所述VLIW指令与所述配置指令和数据读写指令二者中的至少一个相组合,以形成扩展的VLIW指令。
虽然本文已经示出和描述了本披露的多个实施例,但对于本领域技术人员显而易见的是,这样的实施例只是以示例的方式来提供。本领域技术人员可以在不偏离本披露思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本披露的过程中,可以采用对本文所描述的本披露实施例的各种替代方案。所附权利要求书旨在限定本披露的保护范围,并因此覆盖这些权利要求范围内的等同或替代方案。

Claims (41)

1.一种计算装置,包括控制电路和多个处理电路,其中:
所述控制电路配置成获取超长指令字(VLIW)指令并对其进行解析,并且将解析后的VLIW指令发送至所述多个处理电路;以及
所述多个处理电路以一维或多维阵列的结构连接成一个或多个处理电路阵列,并且所述一个或多个处理电路阵列配置成根据解析后的VLIW指令来执行多线程操作。
2.根据权利要求1所述的计算装置,其中所述控制电路还配置成获取配置指令,所述多个处理电路配置成根据所述配置指令来进行连接,以便形成所述一个或多个处理电路阵列。
3.根据权利要求2所述的计算装置,其中所述处理电路阵列配置成根据所述配置指令在一维或多维方向的至少一个维度方向上形成闭合环路。
4.根据权利要求2或3所述的计算装置,其中所述控制电路包括一个或多个寄存器,其存储有关于所述处理电路阵列的配置信息,所述控制电路配置成根据所述配置指令从所述寄存器读取所述配置信息并向所述处理电路发送,以便所述处理电路以所述配置信息进行连接,所述配置信息包括预设的组成所述一个或多个处理电路阵列的处理电路的位置信息,当所述处理电路阵列配置形成闭合环路时,所述配置信息还包括关于所述处理电路阵列形成闭合环路的成环配置信息。
5.根据权利要求3所述的计算装置,其中位于所述二维阵列中的所述处理电路配置成在其行方向、列方向或对角线方向的至少一个上以预定的二维间隔模式与同行、同列或同对角线的其余一个或多个所述处理电路连接,以便形成一个或多个闭合环路。
6.根据权利要求5所述的计算装置,其中所述预定的二维间隔模式与所述连接中间隔的处理电路的数目相关联。
7.根据权利要求3所述的计算装置,其中所述处理电路阵列以由多个层构成的三维阵列的成环方式进行连接,其中每个层包括沿行方向、列方向和对角线方向排列的多个所述处理电路的二维阵列,并且其中:
位于所述三维阵列中的所述处理电路配置成在其行方向、列方向、对角线方向和层方向的至少一个上以预定的三维间隔模式与同行、同列、同对角线或不同层上的其余一个或多个处理电路连接,以便形成一个或多个闭合环路。
8.根据权利要求7所述的计算装置,其中所述预定的三维间隔模式与待连接的处理电路之间的间隔数目和间隔层数相关联。
9.根据权利要求2所述的计算装置,其中所述控制电路配置成根据所述配置指令将常数项和表项中的至少一个发送至所述处理电路阵列以便执行所述多线程操作。
10.根据权利要求1所述的计算装置,进一步包括存储电路,其中所述控制电路还配置成获取数据读写指令,并将所述数据读写指令发送至所述存储电路,所述存储电路配置成根据所述数据读写指令来执行与所述多线程操作相关的数据的读取和写入操作。
11.根据权利要求10所述的计算装置,其中所述数据读写指令至少包括数据的地址信息和数据量信息。
12.根据权利要求1所述的计算装置,其中所述VLIW指令包括一条或多条运算指令,并且所述一个或多个处理电路阵列配置成根据所述运算指令来执行多线程的运算操作。
13.根据权利要求12所述的计算装置,其中所述多个处理电路阵列配置成各自执行不同的运算指令,或者所述多个处理电路阵列中的至少两个处理电路阵列配置成执行相同的运算指令。
14.根据权利要求1所述的计算装置,还包括数据操作电路,所述数据操作电路包括前操作电路和/或后操作电路,其中所述VLIW指令还包括前处理指令和/或后处理指令,其中所述前操作电路配置成根据所述前处理指令对所述多线程操作的输入数据进行前处理操作,并且所述后操作电路配置成根据所述后处理指令对所述多线程操作的输出数据进行后处理操作。
15.根据权利要求1-14的任意一项所述的计算装置,其中所述VLIW指令还包括移动指令,并且所述处理电路阵列配置成根据所述移动指令在处理电路间对数据执行移动操作。
16.根据权利要求15所述的计算装置,其中所述移动指令还包括掩码指令,所述处理电路阵列配置成根据所述掩码指令对数据进行选择性地移动。
17.根据权利要求15所述的计算装置,其中所述移动指令还包括寄存器标识信息,其用于指示在处理电路间移动数据的源寄存器和目标寄存器,所述处理电路配置成根据所述寄存器标识信息将数据从所述源寄存器向所述目标寄存器移动。
18.根据权利要求15所述的计算装置,其中所述VLIW指令、配置指令和数据读写指令包括各自相对应的谓词,并且所述控制电路、处理电路和存储电路配置成根据相对应的谓词来确定是否执行VLIW指令、配置指令和/或数据读写指令。
19.根据权利要求15所述的计算装置,其中所述VLIW指令与所述配置指令和数据读写指令二者中的至少一个相组合,以形成扩展的VLIW指令。
20.一种集成电路芯片,包括根据权利要求1-19的任意一项所述的计算装置。
21.一种板卡,包括根据权利要求20所述的集成电路芯片。
22.一种电子设备,包括根据权利要求20所述的集成电路芯片。
23.一种使用计算装置来执行计算操作的方法,其中所述计算装置包括控制电路和多个处理电路,所述方法包括:
利用所述控制电路来获取超长指令字(VLIW)指令并对其进行解析以获得解析后的VLIW指令,并将解析后的VLIW指令发送至所述多个处理电路;以及
将所述多个处理电路以一维或多维阵列的结构连接成一个或多个处理电路阵列,并且将所述一个或多个处理电路阵列配置成根据解析后的VLIW指令来执行多线程操作。
24.根据权利要求23所述的方法,其中利用所述控制电路来获取配置指令,并且将所述多个处理电路配置成根据所述配置指令来进行连接,以便形成所述一个或多个处理电路阵列。
25.根据权利要求24所述的方法,其中将所述处理电路阵列配置成根据所述配置指令在一维或多维方向的至少一个维度方向上形成闭合环路。
26.根据权利要求24或25所述的方法,其中所述控制电路包括一个或多个寄存器,其存储有关于所述处理电路阵列的配置信息,所述方法还包括将所述控制电路配置成根据所述配置指令从所述寄存器读取所述配置信息并向所述处理电路发送,以便所述处理电路以所述配置信息进行连接,所述配置信息包括预设的组成所述一个或多个处理电路阵列的处理电路的位置信息,当所述处理电路阵列配置形成闭合环路时,所述配置信息还包括关于所述处理电路阵列形成闭合环路的成环配置信息。
27.根据权利要求25所述的方法,其中将位于所述二维阵列中的所述处理电路配置成在其行方向、列方向或对角线方向的至少一个上以预定的二维间隔模式与同行、同列或同对角线的其余一个或多个所述处理电路连接,以便形成一个或多个闭合环路。
28.根据权利要求27所述的方法,其中所述预定的二维间隔模式与所述连接中间隔的处理电路的数目相关联。
29.根据权利要求25所述的方法,其中将所述处理电路阵列以由多个层构成的三维阵列的成环方式进行连接,其中每个层包括沿行方向、列方向和对角线方向排列的多个所述处理电路的二维阵列,并且其中:
位于所述三维阵列中的所述处理电路配置成在其行方向、列方向、对角线方向和层方向的至少一个上以预定的三维间隔模式与同行、同列、同对角线或不同层上的其余一个或多个处理电路连接,以便形成一个或多个闭合环路。
30.根据权利要求29所述的方法,其中所述预定的三维间隔模式与待连接的处理电路之间的间隔数目和间隔层数相关联。
31.根据权利要求24所述的方法,其中将所述控制电路配置成根据所述配置指令将常数项和表项中的至少一个发送至所述处理电路阵列以便执行所述多线程操作。
32.根据权利要求23所述的方法,其中所述计算装置还包括存储电路,所述方法还包括将所述控制电路配置成获取数据读写指令,并将所述数据读写指令发送至所述存储电路,并且将所述存储电路配置成根据所述数据读写指令来执行与所述多线程操作相关的数据的读取和写入操作。
33.根据权利要求32所述的方法,其中所述数据读写指令至少包括数据的地址信息和数据量信息。
34.根据权利要求23所述的方法,其中所述VLIW指令包括一条或多条运算指令,并且所述一个或多个处理电路阵列配置成根据所述运算指令来执行多线程的运算操作。
35.根据权利要求34所述的方法,其中将所述多个处理电路阵列配置成各自执行不同的运算指令,或者将所述多个处理电路阵列中的至少两个处理电路阵列配置成执行相同的运算指令。
36.根据权利要求23所述的方法,还包括数据操作电路,所述数据操作电路包括前操作电路和/或后操作电路,其中所述VLIW指令还包括前处理指令和/或后处理指令,其中所述前操作电路配置成根据所述前处理指令对所述多线程操作的输入数据进行前处理操作,并且所述后操作电路配置成根据所述后处理指令对所述多线程操作的输出数据进行后处理操作。
37.根据权利要求23-36的任意一项所述的方法,其中所述VLIW指令还包括移动指令,并且所述方法包括将所述处理电路阵列配置成根据所述移动指令在处理电路间对数据执行移动操作。
38.根据权利要求37所述的方法,其中所述移动指令还包括掩码指令,所述方法包括将所述处理电路阵列配置成根据所述掩码指令对数据进行选择性地移动。
39.根据权利要求37所述的方法,其中所述移动指令还包括寄存器标识信息,其用于指示在处理电路间移动数据的源寄存器和目标寄存器,所述方法包括将所述处理电路配置成根据所述寄存器标识信息将数据从所述源寄存器向所述目标寄存器移动。
40.根据权利要求37所述的方法,其中所述VLIW指令、配置指令和数据读写指令包括各自相对应的谓词,并且所述方法包括将所述控制电路、处理电路和存储电路配置成根据相对应的谓词来确定是否执行VLIW指令、配置指令和/或数据读写指令。
41.根据权利要求37所述的方法,其中将所述VLIW指令与所述配置指令和数据读写指令二者中的至少一个相组合,以形成扩展的VLIW指令。
CN202010618129.4A 2020-06-30 2020-06-30 一种计算装置、芯片、板卡、电子设备和计算方法 Active CN113867791B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202010618129.4A CN113867791B (zh) 2020-06-30 2020-06-30 一种计算装置、芯片、板卡、电子设备和计算方法
JP2021576577A JP7266121B2 (ja) 2020-06-30 2021-05-19 計算装置、チップ、ボードカード、電子デバイスおよび計算方法
PCT/CN2021/094725 WO2022001457A1 (zh) 2020-06-30 2021-05-19 一种计算装置、芯片、板卡、电子设备和计算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010618129.4A CN113867791B (zh) 2020-06-30 2020-06-30 一种计算装置、芯片、板卡、电子设备和计算方法

Publications (2)

Publication Number Publication Date
CN113867791A true CN113867791A (zh) 2021-12-31
CN113867791B CN113867791B (zh) 2023-09-26

Family

ID=78981874

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010618129.4A Active CN113867791B (zh) 2020-06-30 2020-06-30 一种计算装置、芯片、板卡、电子设备和计算方法

Country Status (3)

Country Link
JP (1) JP7266121B2 (zh)
CN (1) CN113867791B (zh)
WO (1) WO2022001457A1 (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1261966A (zh) * 1997-06-30 2000-08-02 博普斯公司 多重阵列处理器
US20060075213A1 (en) * 2002-12-12 2006-04-06 Koninklijke Phillips Electronics N.C. Modular integration of an array processor within a system on chip
CN103019656A (zh) * 2012-12-04 2013-04-03 中国科学院半导体研究所 可动态重构的多级并行单指令多数据阵列处理系统
CN108140417A (zh) * 2015-12-04 2018-06-08 谷歌有限责任公司 具有降低布线复杂度的移位寄存器
US20180329479A1 (en) * 2017-05-15 2018-11-15 Google Inc. Two dimensional masked shift instruction
US20190220680A1 (en) * 2016-03-07 2019-07-18 HangZhou HaiCun Information Technology Co., Ltd. Distributed Pattern Processor Package

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6167501A (en) 1998-06-05 2000-12-26 Billions Of Operations Per Second, Inc. Methods and apparatus for manarray PE-PE switch control
US7739434B2 (en) 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
CN102665049B (zh) * 2012-03-29 2014-09-17 中国科学院半导体研究所 基于可编程视觉芯片的视觉图像处理系统
EP3624020A4 (en) 2018-05-18 2021-05-05 Shanghai Cambricon Information Technology Co., Ltd CALCULATION PROCEDURES AND RELATED PRODUCTS

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1261966A (zh) * 1997-06-30 2000-08-02 博普斯公司 多重阵列处理器
US20060075213A1 (en) * 2002-12-12 2006-04-06 Koninklijke Phillips Electronics N.C. Modular integration of an array processor within a system on chip
CN103019656A (zh) * 2012-12-04 2013-04-03 中国科学院半导体研究所 可动态重构的多级并行单指令多数据阵列处理系统
CN108140417A (zh) * 2015-12-04 2018-06-08 谷歌有限责任公司 具有降低布线复杂度的移位寄存器
US20190220680A1 (en) * 2016-03-07 2019-07-18 HangZhou HaiCun Information Technology Co., Ltd. Distributed Pattern Processor Package
US20180329479A1 (en) * 2017-05-15 2018-11-15 Google Inc. Two dimensional masked shift instruction

Also Published As

Publication number Publication date
JP2022543978A (ja) 2022-10-17
CN113867791B (zh) 2023-09-26
WO2022001457A1 (zh) 2022-01-06
JP7266121B2 (ja) 2023-04-27

Similar Documents

Publication Publication Date Title
US9507603B2 (en) Methods and apparatus for signal flow graph pipelining that reduce storage of temporary variables
CN111047022A (zh) 一种计算装置及相关产品
CN111860806A (zh) 分形计算装置、方法、集成电路及板卡
US20120239909A1 (en) Systems and methods for voting among parallel threads
CN110059797B (zh) 一种计算装置及相关产品
CN111488963A (zh) 神经网络计算装置和方法
CN111488976A (zh) 神经网络计算装置、神经网络计算方法及相关产品
CN113867791B (zh) 一种计算装置、芯片、板卡、电子设备和计算方法
JP4483991B2 (ja) 高速pe間データ再配置機能を有するプロセッサアレイシステム
CN111368967A (zh) 一种神经网络计算装置和方法
CN113867788A (zh) 一种计算装置、芯片、板卡、电子设备和计算方法
WO2022001439A1 (zh) 计算装置、集成电路芯片、板卡和计算方法
CN111368987B (zh) 一种神经网络计算装置和方法
CN111368986B (zh) 一种神经网络计算装置和方法
CN113867792A (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法
CN113867789A (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法
CN111368990B (zh) 一种神经网络计算装置和方法
CN111367567B (zh) 一种神经网络计算装置和方法
CN114489799A (zh) 处理方法、处理装置及相关产品
CN114692844A (zh) 数据处理装置、数据处理方法及相关产品
WO2022001454A1 (zh) 集成计算装置、集成电路芯片、板卡和计算方法
CN112395008A (zh) 运算方法、装置、计算机设备和存储介质
WO2022111013A1 (zh) 支援多种访问模式的设备、方法及可读存储介质
CN111209230A (zh) 数据处理装置、方法及相关产品
CN114692841A (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
GR01 Patent grant
GR01 Patent grant