CN117389512A - 一种算术逻辑单元alu系统、电子设备和存储介质 - Google Patents
一种算术逻辑单元alu系统、电子设备和存储介质 Download PDFInfo
- Publication number
- CN117389512A CN117389512A CN202311667152.2A CN202311667152A CN117389512A CN 117389512 A CN117389512 A CN 117389512A CN 202311667152 A CN202311667152 A CN 202311667152A CN 117389512 A CN117389512 A CN 117389512A
- Authority
- CN
- China
- Prior art keywords
- alu
- instruction
- type
- thread
- scalar
- 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
Links
- 238000004364 calculation method Methods 0.000 claims abstract description 88
- 238000012545 processing Methods 0.000 claims abstract description 42
- 230000004044 response Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 13
- 230000003068 static effect Effects 0.000 claims description 4
- 238000004804 winding Methods 0.000 abstract description 10
- 238000005516 engineering process Methods 0.000 abstract description 6
- 238000005139 ultra-violet Raman spectroscopy Methods 0.000 description 44
- 238000010586 diagram Methods 0.000 description 20
- 238000000034 method Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000010365 information processing Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 101150028440 UVR3 gene Proteins 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 101150003970 Avr1 gene Proteins 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本公开涉及计算机技术领域,尤其涉及一种算术逻辑单元ALU系统、电子设备和存储介质,所述ALU系统包括:至少两个ALU组,每个ALU组包括:主ALU单元和次ALU单元;所述主ALU单元,用于执行第一类型计算指令对应的数据计算处理;所述次ALU单元,用于执行第二类型计算指令对应的数据计算处理,其中,所述第一类型计算指令执行时所需的计算资源高于所述第二类型计算指令执行时所需的计算资源。本公开实施例既可以满足ALU系统的芯片上绕线面积占比,又可以提升ALU系统的整体计算性能。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种算术逻辑单元ALU系统、电子设备和存储介质。
背景技术
在图形处理器(Graphics Processing Unit,GPU)设计中,计算类的指令执行性能是关乎GPU芯片整体性能的关键,这里的计算类指令特指浮点数或者整数加、乘、乘加、数据类型转换等计算指令,区别于其它非计算类指令(例如,采样、存取、分支等)。因此,亟需一种应用于GPU芯片且能够提高计算类指令的计算性能的算术逻辑单元(Arithmetic andLogic Unit,ALU)系统。
发明内容
本公开提出了一种算术逻辑单元ALU系统、电子设备和存储介质的技术方案。
根据本公开的一方面,提供了一种算术逻辑单元ALU系统,包括:所述ALU系统包括:至少两个ALU组,每个ALU组包括:主ALU单元和次ALU单元;所述主ALU单元,用于执行第一类型计算指令对应的数据计算处理;所述次ALU单元,用于执行第二类型计算指令对应的数据计算处理,其中,所述第一类型计算指令执行时所需的计算资源高于所述第二类型计算指令执行时所需的计算资源。
在一种可能的实现方式中,所述ALU系统包括:主ALU控制器;所述主ALU控制器,用于接收所述第一类型计算指令,以及根据第一预设线程束模式,将所述第一类型计算指令拆分为至少一个第一线程块,其中,所述第一预设线程束模式用于指示所述ALU系统单次并行处理的线程总数;所述主ALU控制器,用于针对每个第一线程块中的任意一个线程,根据预设burst模式,将该线程拆分为至少一个单指令单数据SISD指令,其中,所述预设burst模式用于指示单个指令对应的数据组总数;所述主ALU控制器,用于针对任意一个第一线程块,将该第一线程块中一个线程对应的至少一个SISD指令发送至一个所述主ALU单元。
在一种可能的实现方式中,所述ALU系统包括:次ALU控制器;所述次ALU控制器,用于接收所述第二类型计算指令,以及根据所述第一预设线程束模式,将所述第二类型计算指令拆分为至少一个第二线程块;所述次ALU控制器,用于针对每个第二线程块中的任意一个线程,根据所述预设burst模式,将该线程拆分为至少一个SISD指令;所述次ALU控制器,用于针对任意一个第二线程块,将该第二线程块中一个线程对应的至少一个SISD指令发送至一个所述次ALU单元。
在一种可能的实现方式中,所述第一预设线程束模式为线程束32模式;所述ALU系统支持的单指令多线程SIMT模式包括:SIMT32模式和SIMT128模式;在SIMT32模式下,所述主ALU控制器将所述第一类型计算指令拆分为一个第一线程块,所述次ALU控制器将所述第二类型计算指令拆分为一个第二线程块;在SIMT128模式下,所述主ALU控制器将所述第一类型计算指令拆分为四个第一线程块,所述次ALU控制器将所述第二类型计算指令拆分为四个第二线程块;其中,一个第一线程块和一个第二线程块均对应32个线程。
在一种可能的实现方式中,所述ALU系统包括:两个ALU组,其中,每个ALU组包括16个主ALU单元和8个次ALU单元。
在一种可能的实现方式中,所述次ALU控制器,用于针对一个第二线程块对应的32个线程,将该32个线程中的第1-8、17-14个线程分配至一个ALU组,以及将该32个线程中的第9-16、25-32个线程分配至另一个ALU组。
在一种可能的实现方式中,所述第一类型计算指令包括指令依赖关系指示信息和指令标识信息;所述第二类型计算指令包括所述依赖关系指示信息和指令标识信息;所述主ALU控制器,用于在所述指令依赖关系指示信息指示所述第一类型计算指令与其他指令存在依赖关系,且所述第一类型计算指令已经执行完毕的情况下,向第一目标装置返回所述第一类型计算指令对应的指令标识信息;所述次ALU控制器,用于在所述指令依赖关系指示信息指示所述第二类型计算指令与其他指令存在依赖关系,且所述第二类型计算指令已经执行完毕的情况下,向第二目标装置返回所述第二类型计算指令对应的指令标识信息。
在一种可能的实现方式中,每个ALU组包括:至少两个ALU向量寄存器,其中,每个ALU向量寄存器是基于双口静态随机存取存储器SRAM搭建的存储空间。
在一种可能的实现方式中,所述ALU系统与外部多个通用向量寄存器、以及多个通用标量寄存器连接,其中,所述多个通用向量寄存器以及所述多个通用标量寄存器的数目基于所述第一类型计算指令和所述第二类型计算指令对应的源操作数的最大数目确定;所述ALU系统与每个通用向量寄存器、每个通用标量寄存器之间配置有一个与所述第一预设线程束模式相匹配的读数据接口;针对任意一个通用向量寄存器、通用标量寄存器,所述ALU系统向该通用向量寄存器、该通用标量寄存器发出的读请求具有最高响应优先级。
在一种可能的实现方式中,所述ALU系统与每个通用向量寄存器、每个通用标量寄存器之间配置有一个与所述第一预设线程束模式相匹配的主ALU写数据端口;针对任意一个通用向量寄存器、通用标量寄存器,所述ALU系统向该通用向量寄存器、该通用标量寄存器发出的主ALU写请求具有最高响应优先级。
在一种可能的实现方式中,每个ALU组与每个通用向量寄存器、每个通用标量寄存器之间配置有一个与第二预设线程束模式相匹配的次ALU写数据端口,其中,所述第二预设线程束模式用于指示单个ALU组对应的线程总数;针对任意一个通用向量寄存器、通用标量寄存器,所述ALU系统向该通用向量寄存器、该通用标量寄存器发出的次ALU写请求具有非最高响应优先级。
在一种可能的实现方式中,所述ALU系统包括:仲裁单元;所述仲裁单元,用于针对所述第一类型计算指令和所述第一类型计算指令针对相同目标寄存器的读请求进行仲裁,确定针对目标寄存器的读取顺序,其中,目标寄存器为ALU向量寄存器、通用向量寄存器、通用标量寄存器中的一个。
在一种可能的实现方式中,所述仲裁单元,用于针对所述第一类型计算指令或所述第二类型计算指令对应的多个源操作数的读请求进行仲裁,确定每个源操作数的读取顺序;所述仲裁单元,用于针对任意一个源操作数的读请求,基于目标寄存器的寄存器类型,启动对应的读数据逻辑,从目标寄存器中读取该源操作数对应的数据。
在一种可能的实现方式中,所述ALU系统包括:主ALU标量数据选择器、次ALU标量数据选择器;所述主ALU标量数据选择器,用于从所述多个通用标量寄存器向所述ALU系统返回的标量数据中,为所述第一类型计算指令对应的每个源操作数选择第一目标标量数据,以及将所述第一目标标量数据广播至对应的所述主ALU单元;所述次ALU标量数据选择器,用于从所述多个通用标量寄存器向所述ALU系统返回的标量数据中,为所述第二类型计算指令对应的每个源操作数选择第二目标标量数据,以及将所述第二目标标量数据广播至对应的所述次ALU单元。
在一种可能的实现方式中,所述ALU系统包括:主ALU标量数据写回器、次ALU标量数据写回器;针对任意一个ALU组,该ALU组执行完成所述第一类型计算指令对应的数据计算处理之后,将计算结果写入第一目标寄存器,其中,第一目标寄存器为ALU向量寄存器、通用向量寄存器、主ALU标量数据写回器中的一个;针对任意一个ALU组,该ALU组执行完成所述第二类型计算指令对应的数据计算处理之后,将计算结果写入第二目标寄存器,其中,第二目标寄存器为ALU向量寄存器、通用向量寄存器、次ALU标量数据写回器中的一个。
在一种可能的实现方式中,所述主ALU标量数据写回器,用于在接收到所述第一类型计算指令对应的全部线程的计算结果后,将第一个有效线程的计算结果,写入对应的通用标量寄存器;所述次ALU标量数据写回器,用于在接收到所述第二类型计算指令对应的全部线程的计算结果后,将第一个有效线程的计算结果,写入对应的通用标量寄存器。
根据本公开的一方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以运行上述ALU系统。
根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述ALU系统。
在本公开实施例中,ALU系统包括:至少两个ALU组,每个ALU组包括:主ALU单元和次ALU单元;主ALU单元,用于执行第一类型计算指令对应的数据计算处理;次ALU单元,用于执行第二类型计算指令对应的数据计算处理,其中,第一类型计算指令执行时所需的计算资源高于第二类型计算指令执行时所需的计算资源。将ALU系统中划分了至少两个ALU组,可以将计算指令的多线程分为至少两组,由于每个ALU组内部的绕线需求相比于未分组的绕线需求降低,从而使得每个ALU组内部均可以满足ALU系统的芯片上绕线面积占比,此外,在每个ALU组内,通过设置主ALU单元、次ALU单元,从而使得计算资源需求不同的第一类型指令和第二类型指令分开执行,进一步提升了ALU系统的整体计算性能。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1示出根据本公开实施例的一种ALU系统的框图。
图2示出根据本公开实施例的一种ALU系统的框图。
图3示出根据本公开实施例的ALU系统与UVR/USR之间的PALU读数据接口的示意图。
图4示出根据本公开实施例的ALU系统与UVR/USR之间的SALU读数据接口的示意图。
图5示出根据本公开实施例的一种电子设备的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
另外,为了更好地说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
GPU程序中通常有大量的计算类指令,这些计算类指令的执行性能关乎整个GPU芯片的性能。此外,GPU芯片设计除了要追求极高的性能外,还要兼顾芯片面积、ALU利用效率、功耗等因素。综合考虑GPU芯片面积、ALU计算性能,本公开实施例提供了一种应用于GPU芯片的ALU系统。下面对本公开实施例的ALU系统进行详细描述。
图1示出根据本公开实施例的一种ALU系统的框图。如图1所示,ALU系统包括:至少两个ALU组,每个ALU组包括:主ALU单元和次ALU单元;主ALU单元,用于执行第一类型计算指令对应的数据计算处理;次ALU单元,用于执行第二类型计算指令对应的数据计算处理,其中,第一类型计算指令执行时所需的计算资源高于第二类型计算指令执行时所需的计算资源。
根据本公开的实施例的ALU系统,将ALU系统中划分了至少两个ALU组,可以将计算指令的多线程分为至少两组,由于每个ALU组内部的绕线需求相比于未分组的绕线需求降低,从而使得每个ALU组内部均可以满足ALU系统的芯片上绕线面积占比,此外,在每个ALU组内,通过设置主ALU单元、次ALU单元,从而使得计算资源需求不同的第一类型指令和第二类型指令分开执行,进一步提升了ALU系统的整体计算性能。
在本公开实施例中,第一类型计算指令执行时所需的计算资源高于第二类型计算指令执行时所需的计算资源,但是,第一类型计算指令、第二类型计算指令的具体指令形式可以根据实际应用场景设置,本公开对此不做具体限定。例如,将浮点乘法计算指令、浮点加法计算指令、比较计算指令等设置为第一类型计算指令,其他执行时所需的计算资源较小的计算类指令设置为第二类型计算指令。
ALU系统中ALU组(ALU Group,AG)的数目、每个ALU组中包括的主ALU(PrimaryALU,PALU)单元和次ALU(Secondary ALU,SALU)单元的数目,均可根据实际情况进行灵活设置,本公开对此不做具体限定。
下面为了便于描述,将主ALU单元简称为PALU单元,将次ALU单元简称为SALU单元,将ALU组简称为AG。由于第一类型计算指令需要由PALU单元执行,因此,将第一类型计算指令简称为PALU指令;由于第二类型计算指令需要由SALU单元执行,因此,将第二类型计算指令简称为SALU指令。
在一种可能的实现方式中,ALU系统包括:两个ALU组,其中,每个ALU组包括16个主ALU单元和8个次ALU单元。
设置较多的AG可能会导致控制逻辑较复杂,因此,综合考虑ALU系统的芯片上绕线面积占比,以及整体控制逻辑复杂度较低,在ALU系统中设置两个AG,每个AG包括16个PALU单元和8个SALU单元。
图2示出根据本公开实施例的一种ALU系统的框图。如图2所示,ALU系统中设置两个AG:AG0和AG1。其中,每个AG包括16个PALU单元和8个SALU单元。
在一种可能的实现方式中,ALU系统包括:主ALU控制器、次ALU控制器;主ALU控制器,用于接收第一类型计算指令;次ALU控制器,用于接收第二类型计算指令。
ALU系统包括主ALU控制器(Primary ALU Control,下面简称为PAC)、次ALU控制器(Secondary ALU Control,下面简称为SAC),用于接收PALU指令和SALU指令。如图2所示,ALU系统包括PAC和SAC。
在外部交互上,ALU系统与外部的主ALU指令发射装置(PALU ISSUE,下面简称为PALU指令发射装置)、次ALU指令发射装置(SALU ISSUE,下面简称为SALU指令发射装置)相连,PALU指令发射装置向PAC发送PALU指令,SALU指令发射装置向SAC发送SALU指令。
如图2所示,ALU系统与外部的PALU指令发射装置、SALU指令发射装置相连。
在一种可能的实现方式中,第一类型计算指令包括指令依赖关系指示信息和指令标识信息;所述第二类型计算指令包括所述依赖关系指示信息和指令标识信息;主ALU控制器,用于在指令依赖关系指示信息指示第一类型计算指令与其他指令存在依赖关系,且第一类型计算指令已经执行完毕的情况下,向第一目标装置返回第一类型计算指令对应的指令标识信息;次ALU控制器,用于在指令依赖关系指示信息指示第二类型计算指令与其他指令存在依赖关系,且第二类型计算指令已经执行完毕的情况下,向第二目标装置返回第二类型计算指令对应的指令标识信息。
PALU指令发射装置向PAC发送的PALU指令中包括指令依赖关系指示(fence_vld)信息和指令标识(fence_info)信息。SALU指令发射装置向SAC发送的SALU指令中包括指令依赖关系指示(fence_vld)信息和指令标识(fence_info)信息。
本公开实施例中,指令依赖关系指示信息用于指示当前计算指令是否与其他指令存在依赖关系。针对当前指令,如果存在其他指令执行时需要依赖当前指令的执行结果,则表示当前指令与其他指令存在依赖关系。
在一示例中,可以对指令依赖关系指示信息设置不同参数值以指示当前计算指令是否与其他指令存在依赖关系。例如,在指令依赖关系指示信息的参数值为1(fence_vld=1)的情况下,可以指示当前指令与其他指令存在依赖关系;在指令依赖关系指示信息的参数值为0(fence_vld=0)的情况下,可以指示当前指令与其他指令不存在依赖关系。指令依赖关系指示信息指示当前计算指令是否与其他指令存在依赖关系的具体指示方式除了上述设置不同参数值的方式以外,还可以采用其他指示方式,本公开对此不做具体限定。
本公开实施例中,指令标识信息是指令的唯一标识,用于区分不同指令。
PAC接收到PALU指令发射装置发送的一个PALU指令,且该PALU指令中包括的指令依赖关系指示该PALU指令与其他指令存在依赖关系的情况下,当ALU系统利用PALU单元对该PALU指令执行完毕之后,PAC向第一目标装置返回该PALU指令对应的指令标识信息,以有效通知第一目标装置该PALU指令执行已经执行完毕。其中,第一目标装置可以是PALU指令发射装置,还可以是指令依赖关系检查装置,本公开对此不做具体限定。
SAC接收到SALU指令发射装置发送的一个SALU指令,且该SALU指令中包括的指令依赖关系指示该SALU指令与其他指令存在依赖关系的情况下,当ALU系统利用SALU单元对该SALU指令执行完毕之后,SAC向第二目标装置返回该SALU指令对应的指令标识信息,以有效通知第二目标装置该SALU执行已经执行完毕。其中,第二目标装置可以是SALU指令发射装置,还可以是指令依赖关系检查装置,本公开对此不做具体限定。在第一目标装置和第二目标装置均为指令依赖关系检查装置的情况下,第一目标装置和第二目标装置可以是相同装置,也可以是不同装置,本公开对此不做具体限定。
在一种可能的实现方式中,每个ALU组包括:至少两个ALU向量寄存器,其中,每个ALU向量寄存器是基于双口静态随机存取存储器(Static Random-Access Memory,SRAM)搭建的存储空间。
通过在AG内部设置专用的ALU向量寄存器(ALU Vector Register,以下简称AVR),从而可以减少AG与外部其他单元争抢寄存器资源的概率。
每个AG中包括的AVR的具体个数可以根据实际情况进行灵活设置,本公开对此不做具体限定。如图2所示的,每个AG包括两个AVR:AVR0和AVR1。
每个AVR是基于双口SRAM搭建的存储空间,从而使得每个AVR可以满足同时读写数据,有效提高AVR的数据读写效率。
在一种可能的实现方式中,ALU系统与外部多个通用向量寄存器、以及多个通用标量寄存器连接,其中,多个通用向量寄存器以及多个通用标量寄存器的数目基于第一类型计算指令和第二类型计算指令对应的源操作数的最大数目确定;ALU系统与每个通用向量寄存器、每个通用标量寄存器之间配置有一个与第一预设线程束模式相匹配的读数据接口;针对任意一个通用向量寄存器、通用标量寄存器,ALU系统向该通用向量寄存器、该通用标量寄存器发出的读请求具有最高响应优先级。
在外部交互上,ALU系统与外部的多个通用向量寄存器(Unify Vector Register,以下简称UVR)、多个通用标量寄存器(Unify Scalar Register,以下简称USR)连接,多个UVR以及多个USR的数目基于PALU指令和SALU指令对应的源操作数的最大数目确定,以有效支持PALU单元和SALU单元的数据读写。
在一示例中,PALU指令最多可以有3个源操作数和2个目的操作数,SALU指令最多可以有4个源操作数和2个目的操作数,因此,可以设置ALU系统与4个UVR和4个USR连接。如图2所示,ALU系统与4个UVR、4个USR连接。
线程束模式指的是一种数据、线程或者实例(instance)的具体组织方式。线程束(WAVE)是GPU中执行并行计算的基本单位,通常由多个连续的线程组成。例如,线程束32表示32个连续线程构成的并行线程束;线程束128表示128个连续线程构成的并行线程束。例如,以线程束32模式(即WAVE32模式)执行指令,表示硬件在执行指令时单次并行处理32个线程。例如,以线程束32模式读数据,表示读数据接口上有32个线程的数据,并且分别对应32个instance,其中,instance指的是一个可以处理一个线程事务的具体硬件。线程束为单指令多线程(Single Instruction Multiple Thread,SIMT)编程模型下的线程束,线程束32、线程束64、线程束128分别为32、64、128条线程(及数据)共同执行同一指令序列。
ALU系统与每个UVR、每个USR之间配置一个与第一预设线程束模式相匹配的读数据接口。其中,第一预设线程束模式可以根据ALU系统的具体硬件结构灵活设置,本公开对此不做具体限定。
在一示例中,针对图2所示的ALU系统,由于一共有32个PALU单元,为了提高PALU单元的利用效率,期望能够单次驱动全部32个PALU单元执行数据计算处理,因此可以将第一预设线程束模式设置为线程束32模式,则ALU系统与每个UVR、每个USR之间配置一个与线程束32模式相匹配的读数据接口,此时,ALU系统与每个UVR、每个USR之间的读数据接口上可以有32个线程的数据,可以同时满足32个PALU单元的读数据需求。
针对任意一个UVR、USR,ALU系统向该UVR、USR发出的读请求具有最高响应优先级,也就是说,要求任意一个UVR、USR收到ALU系统的读请求后必须立即响应,并且在预设响应周期后将对应的数据驱动到与ALU系统之间的读数据接口上。
在一示例中,ALU系统可以从AVR、UVR、USR中进行数据读取,此时,可以设置AVR、UVR、USR针对读请求的预设响应周期相同。例如,AVR、UVR、USR针对读请求的预设响应周期设置为两个周期,此时,针对UVR的读请求,要求UVR在收到读请求两个周期后将对应的数据驱动到与ALU系统之间的读数据接口上,AVR、USR类似,此处不做赘述。
在一种可能的实现方式中,ALU系统与每个通用向量寄存器、每个通用标量寄存器之间配置有一个与第一预设线程束模式相匹配的主ALU写数据端口;针对任意一个通用向量寄存器、通用标量寄存器,ALU系统向该通用向量寄存器、该通用标量寄存器发出的主ALU写请求具有最高响应优先级。
在一示例中,针对图2所示的ALU系统,由于一共有32个PALU单元,为了提高PALU单元的利用效率,期望能够单次驱动全部32个PALU单元执行数据计算处理,因此可以将第一预设线程束模式设置为线程束32模式,则ALU系统与每个UVR、每个USR之间配置一个与线程束32模式相匹配的PALU写数据端口,此时,ALU系统与每个UVR、每个USR之间的PALU写数据接口上可以有32个线程的数据,可以同时满足32个PALU单元的写数据需求。
图3示出根据本公开实施例的ALU系统与UVR/USR之间的PALU读数据接口的示意图。如图3所示,ALU系统中包括2个AG:AG0和AG1,每个AG中包括16个PALU单元,则每个AG配置一个与线程束16模式相匹配的PALU写数据接口,以对应每个AG中包括的16个PALU单元,然后,两个AG合并配置一个与线程束32模式相匹配的PALU写数据端口到每个UVR/USR(UVR0/USR0至UVR3/USR3)。
在一示例中,ALU系统单次可以驱动至少一个UVR/USR的PALU写数据端口,本公开对此不做具体限定。
针对任意一个UVR、USR,ALU系统向该UVR、USR发出的PALU写请求具有最高响应优先级,也就是说,要求任意一个UVR、USR收到ALU系统的PALU写请求后必须立即响应。
在一种可能的实现方式中,每个ALU组与每个通用向量寄存器、每个通用标量寄存器之间配置有一个与第二预设线程束模式相匹配的次ALU写数据端口,其中,第二预设线程束模式用于指示单个ALU组对应的线程总数;针对任意一个通用向量寄存器、通用标量寄存器,ALU系统向该通用向量寄存器、该通用标量寄存器发出的次ALU写请求具有非最高响应优先级。
在一示例中,针对图2所示的ALU系统,由于每个AG中包括8个SALU单元,因此可以将第二预设线程束模式设置为线程束8模式,则每个AG与每个UVR、每个USR之间配置一个与线程束8模式相匹配的SALU写数据端口,此时,每个AG与每个UVR、每个USR之间的SALU写数据接口上可以有8个线程的数据,可以同时满足每个AG中8个SALU单元的写数据需求。
图4示出根据本公开实施例的ALU系统与UVR/USR之间的SALU读数据接口的示意图。如图4所示,ALU系统中包括2个AG:AG0和AG1,每个AG中包括8个SALU单元,每个AG与每个UVR/USR(UVR0/USR0至UVR3/USR3)之间配置一个与线程束8模式相匹配的SALU写数据接口,以对应该AG中包括的8个SALU单元。
在一示例中,每个AG单次可以驱动至少一个UVR/USR的SALU写数据端口,本公开对此不做具体限定。
针对任意一个UVR、USR,ALU系统向该UVR、USR发出的SALU写请求具有非最高响应优先级,也就是说,当任意一个UVR、USR收到ALU系统的SALU写请求后,如果此时该UVR、USR的SALU写数据端口未处于空闲状态,则阻挡该SALU写请求,等待SALU写数据端口空闲后再响应该SALU写请求。其中,该UVR、USR的SALU写数据端口未处于空闲状态可以是被其他模块的写请求占用,本公开对此不做具体限定。
在一种可能的实现方式中,主ALU控制器,用于根据第一预设线程束模式,将第一类型计算指令拆分为至少一个第一线程块,其中,第一预设线程束模式用于指示ALU系统单次并行处理的线程总数;主ALU控制器,用于针对每个第一线程块中的任意一个线程,根据预设burst模式,将该线程拆分为至少一个SISD指令,其中,预设burst模式用于指示单个指令对应的数据组总数;主ALU控制器,用于针对任意一个第一线程块,将该第一线程块中一个线程对应的至少一个SISD指令发送至一个主ALU单元。
SIMT常用于对计算并行度要求高的处理器设计中(例如,CPU、GPU等),SIMT模式下一条指令可以对应多个线程。例如,SIMT128模式下一条指令最多可以对应128个线程。
第一预设线程束模式表示ALU系统执行指令时单次并行处理的线程总数,因此,在PALU指令处于SIMT模式下,且PALU指令对应的最大线程数大于或等于第一预设线程束模式时,PAC接收到PALU指令发射装置发出的一个PALU指令后,可以将该PALU指令拆分为至少一个第一线程块,每个线程块包括的线程数对应第一预设线程束模式。
单指令多数据(Single Instruction Multiple Data,SIMD)技术,常用于各种处理器中。SIMD模式下对多个数据执行同一条指令。例如,SIMD4模式下一条指令可以作用于4组数据上,4组数据可以同时计算于4组硬件计算单元上,也可以在同一个硬件计算单元上执行4次。单指令单数据技术(Single Instruction Single Data,SISD),指示的是一条指令仅作用于一组数据上。
ALU系统同时支持SISD模式和SIMD模式,因此,PAC可以设置多个预设burst模式,以实现将SIMD指令拆分为多个SISD指令。例如,预设burst模式包括burst1至burst4模式,其中,burst1模式即SISD模式,即一条指令对应一组数据,burst2至burst4模式即SIMD模式,即一条指令对应2至4组数据。
PAC将PALU指令拆分为至少一个第一线程块后,针对每个第一线程块中的任意一个线程,根据预设burst模式,将该线程拆分为至少一个SISD指令。例如,预设burst模式为burst1模式时,一个线程拆分为一个SISD指令,该SISD指令可以以B1命名;预设burst模式为burst2模式时,一个线程拆分为两个SISD指令,该两个SISD指令可以分别以B1、B2命名;以此类推,此处不做赘述。
在一种可能的实现方式中,次ALU控制器,用于根据第一预设线程束模式,将第二类型计算指令拆分为至少一个第二线程块;次ALU控制器,用于针对每个第二线程块中的任意一个线程,根据预设burst模式,将该线程拆分为至少一个SISD指令;次ALU控制器,用于针对任意一个第二线程块,将该第二线程块中一个线程对应的至少一个SISD指令发送至一个次ALU单元。
SAC接收到SALU指令发射装置发出的一个SALU指令后,可以将该SALU指令拆分为至少一个第二线程块,每个线程块包括的线程数对应第一预设线程束模式。
SAC将SALU指令拆分为至少一个第二线程块后,针对每个第二线程块中的任意一个线程,根据预设burst模式,将该线程拆分为至少一个SISD指令。具体拆分过程可以参考上述PAC对PALU指令的拆分过程,此处不做赘述。
SIMD指令拆分为多个SISD指令后,需要经过地址计算逻辑为每个SISD指令进行地址累加计算,具体实现方式可以参考相关技术中实现方式,本公开对此不做具体限定。
在一种可能的实现方式中,第一预设线程束模式为线程束32模式;ALU系统支持的SIMT模式包括:SIMT32模式和SIMT128模式;在SIMT32模式下,主ALU控制器将第一类型计算指令拆分为一个第一线程块,次ALU控制器将第二类型计算指令拆分为一个第二线程块;在SIMT128模式下,主ALU控制器将第一类型计算指令拆分为四个第一线程块,次ALU控制器将第二类型计算指令拆分为四个第二线程块;其中,一个第一线程块和一个第二线程块均对应32个线程。
在一示例中,针对图2所示的ALU系统,由于一共有32个PALU单元,为了提高PALU单元的利用效率,期望能够单次驱动全部32个PALU单元执行数据计算处理,因此可以将第一预设线程束模式设置为线程束32模式。此时,在SIMT32模式下,PAC将PALU指令拆分为一个第一线程块,SAC将SALU指令拆分为一个第二线程块,该第一线程块、该第二线程块中均包括32个线程;在SIMT128模式下,PAC将PALU指令拆分为4个第一线程块,SAC将SALU指令拆分为4个第二线程块,每个第一线程块、每个第二线程块中均包括32个线程。
在本公开实施例中,ALU系统支持的SIMT模式除了包括上述SIMT32模式和SIMT128模式,还可以根据实际情况灵活支持其他SIMT模式,本公开对此不做具体限定。
在本公开实施例中,ALU系统最大支持的SIMD模式可以根据实际情况灵活设置,例如,ALU系统最大支持的SIMD4模式,本公开对此不做具体限定。
在一种可能的实现方式中,次ALU控制器,用于针对一个第二线程块对应的32个线程,将该32个线程中的第1-8、17-14个线程分配至一个ALU组,以及将该32个线程中的第9-16、25-32个线程分配至另一个ALU组。
在一示例中,针对图2所示的ALU系统,由于一共有16个SALU单元,每个第二线程块对应32个线程,此时,SAC针对一个第二线程块对应的32个线程,将该32个线程中的第1-8、17-14个线程分配至一个AG,以及将该32个线程中的第9-16、25-32个线程分配至另一个AG,这种线程交叉分布的方式,可以使得一个处理周期内两个AG可以同时执行数据计算处理,因此,两个处理周期即可完成一个第二线程块的全部线程处理,从而有效提高了SALU单元的执行效率。
PAC将PALU指令拆分后,将一个第一线程块中一个线程对应的至少一个SISD指令发送至一个PALU单元。例如,PAC将PALU指令拆分为一个包括32个线程的第一线程块,且每个线程拆分为4个SISD指令,若ALU系统中包括32个PALU单元,则将32个线程中一个线程对应的4个SISD指令发送至一个PALU单元。SAC针对SALU指令的处理方式类似,此处不做赘述。
在一种可能的实现方式中,ALU系统包括:仲裁单元;仲裁单元,用于针对第一类型计算指令和第一类型计算指令针对相同目标寄存器的读请求进行仲裁,确定针对目标寄存器的读取顺序,其中,目标寄存器为ALU向量寄存器、通用向量寄存器、通用标量寄存器中的一个。
ALU系统包括:仲裁单元(ALU Control Arbitration,以下简称ACAB),用于在读请求存在冲突时,确定读请求的读取顺序。如图2所示,ALU系统中包括ACAB。
当PALU指令和SALU指令同时针对相同目标寄存器(同一个AVR/UVR/USR)发出源操作数的读请求后,由于一个AVR/UVR/USR与ALU系统之间仅设置有一个读数据接口,因此,基于ACAB进行冲裁,确定针对该AVR/UVR/USR的读取顺序。具体仲裁逻辑可以根据实际情况设置,本公开对此不做具体限定。例如,PALU指令和SALU指令的读取优先级交替循环,第一个存在冲突的周期内PASU指令的优先级高于SALU指令的读取优先级,第二个存在冲突的周期内SASU指令的优先级高于PALU指令的读取优先级,第三个存在冲突周期内PASU指令的优先级高于SALU指令的读取优先级,第四个存在冲突的周期内SASU指令的优先级高于PALU指令的读取优先级,以此类推,不做赘述。
在一种可能的实现方式中,仲裁单元,用于针对第一类型计算指令或第二类型计算指令对应的多个源操作数的读请求进行仲裁,确定每个源操作数的读取顺序;仲裁单元,用于针对任意一个源操作数的读请求,基于目标寄存器的寄存器类型,启动对应的读数据逻辑,从目标寄存器中读取该源操作数对应的数据。
针对PALU指令/SALU指令,由于一个PALU指令/SALU指令对应多个源操作数,因此,基于ACAB进行仲裁,确定每个源操作数的读取顺序。具体仲裁逻辑可以根据实际情况设置,本公开对此不做具体限定。例如,一个PALU指令对应三个源操作数,设置第一个源操作数的读取优先级高于第二个源操作数的读取优先级,第二个源操作数的读取优先级高于第三个源操作数的读取优先级;一个SALU指令对应四个源操作数,设置第一个源操作数的读取优先级高于第二个源操作数的读取优先级,第二个源操作数的读取优先级高于第三个源操作数的读取优先级;第三个源操作数的读取优先级高于第四个源操作数的读取优先级。
针对任意一个源操作数的读请求,ACAB根据该源操作数需要读的寄存器类型,启动对应的读数据逻辑(AVR读数据逻辑、UVR读数据逻辑、USR读数据逻辑),从AVR/UVR/USR中读取该源操作数的对应的数据。
在一种可能的实现方式中,ALU系统包括:主ALU标量数据选择器、次ALU标量数据选择器;主ALU标量数据选择器,用于从多个通用标量寄存器向ALU系统返回的标量数据中,为第一类型计算指令对应的每个源操作数选择第一目标标量数据,以及将第一目标标量数据广播至对应的主ALU单元;次ALU标量数据选择器,用于从多个通用标量寄存器向ALU系统返回的标量数据中,为第二类型计算指令对应的每个源操作数选择第二目标标量数据,以及将第二目标标量数据广播至对应的次ALU单元。
ALU系统包括:主ALU标量数据选择器(Primary ALU Scalar MUX,以下简称PASM),用于为PALU指令的每个源操作数选择对应的第一目标标量数据,并将选择好的第一目标标量数据广播至对应的PALU单元;ALU系统包括:次ALU标量数据选择器(Secondary ALUScalar MUX,以下简称SASM),用于为SALU指令的每个源操作数选择对应的第二目标标量数据,并将选择好的第二目标标量数据广播至对应的SALU单元。如图2所示,ALU系统中包括PASM和SASM。
在一种可能的实现方式中,ALU系统包括:主ALU标量数据写回器、次ALU标量数据写回器;针对任意一个ALU组,该ALU组执行完成第一类型计算指令对应的数据计算处理之后,将计算结果写入第一目标寄存器,其中,第一目标寄存器为ALU向量寄存器、通用向量寄存器、主ALU标量数据写回器中的一个;针对任意一个ALU组,该ALU组执行完成第二类型计算指令对应的数据计算处理之后,将计算结果写入第二目标寄存器,其中,第二目标寄存器为ALU向量寄存器、通用向量寄存器、次ALU标量数据写回器中的一个。
ALU系统包括:主ALU标量数据写回器(Primary ALU Scalar Write,以下简称PASW),用于接收每个AG组基于PALU单元执行完成PALU指令后的计算结果;ALU系统包括:次ALU标量数据写回器(Secondary ALU Scalar Write,以下简称SASW),用于接收每个AG组基于SALU单元执行完成SALU指令后的计算结果。如图2所示,ALU系统包括PASW和SASW。
针对任意一个AG,该AG基于PALU单元执行完成PALU指令后,将计算结果写入AVR/UVR/PASW。针对任意一个AG,该AG基于SALU单元执行完成SALU指令后,将计算结果写入AVR/UVR/SASW。
在一种可能的实现方式中,主ALU标量数据写回器,用于在接收到第一类型计算指令对应的全部线程的计算结果后,将第一个有效线程的计算结果,写入对应的通用标量寄存器;次ALU标量数据写回器,用于在接收到第二类型计算指令对应的全部线程的计算结果后,将第一个有效线程的计算结果,写入对应的通用标量寄存器。
PASW在接收到PALU指令对应的全部线程的计算结果后,将第一个有效线程的计算结果,写入对应的USR。SASW在接收到SALU指令对应的全部线程的计算结果后,将第一个有效线程的计算结果,写入对应的USR。
在本公开实施例中,ALU系统包括:至少两个ALU组,每个ALU组包括:主ALU单元和次ALU单元;主ALU单元,用于执行第一类型计算指令对应的数据计算处理;次ALU单元,用于执行第二类型计算指令对应的数据计算处理,其中,第一类型计算指令执行时所需的计算资源高于第二类型计算指令执行时所需的计算资源。将ALU系统中划分了至少两个ALU组,因此,可以将计算指令的多线程分为至少两组,由于每个ALU组内部的绕线需求相比于未分组的绕线需求降低,从而使得每个ALU内部均可以满足ALU系统的芯片上绕线面积占比,此外,在每个ALU组内,通过设置主ALU单元、次ALU单元,从而使得计算资源需求不同的第一类型指令和第二类型指令执行,进一步提升了ALU系统的整体计算性能。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
此外,本公开还提供了电子设备、计算机可读存储介质、程序,上述均可用来实现本公开提供的任一种ALU系统,相应技术方案和描述和参见方法部分的相应记载,不再赘述。
该方法与计算机系统的内部结构存在特定技术关联,且能够解决如何提升硬件运算效率或执行效果的技术问题(包括减少数据存储量、减少数据传输量、提高硬件处理速度等),从而获得符合自然规律的计算机系统内部性能改进的技术效果。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述ALU系统。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以实现上述ALU系统。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器实现上述ALU系统。
电子设备可以被提供为终端、服务器或其它形态的设备。
图5示出根据本公开实施例的一种电子设备的框图。参照图5,电子设备1900可以被提供为一服务器或终端设备。参照图5,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出接口1958。电子设备1900可以操作基于存储在存储器1932的操作系统,例如微软服务器操作系统(Windows ServerTM),苹果公司推出的基于图形用户界面操作系统(Mac OS XTM),多用户多进程的计算机操作系统(UnixTM),自由和开放原代码的类Unix操作系统(LinuxTM),开放原代码的类Unix操作系统(FreeBSDTM)或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是(但不限于)电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
若本申请技术方案涉及个人信息,应用本申请技术方案的产品在处理个人信息前,已明确告知个人信息处理规则,并取得个人自主同意。若本申请技术方案涉及敏感个人信息,应用本申请技术方案的产品在处理敏感个人信息前,已取得个人单独同意,并且同时满足“明示同意”的要求。例如,在摄像头等个人信息采集装置处,设置明确显著的标识告知已进入个人信息采集范围,将会对个人信息进行采集,若个人自愿进入采集范围即视为同意对其个人信息进行采集;或者在个人信息处理的装置上,利用明显的标识/信息告知个人信息处理规则的情况下,通过弹窗信息或请个人自行上传其个人信息等方式获得个人授权;其中,个人信息处理规则可包括个人信息处理者、个人信息处理目的、处理方式以及处理的个人信息种类等信息。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (18)
1.一种算术逻辑单元ALU系统,其特征在于,所述ALU系统包括:至少两个ALU组,每个ALU组包括:主ALU单元和次ALU单元;
所述主ALU单元,用于执行第一类型计算指令对应的数据计算处理;
所述次ALU单元,用于执行第二类型计算指令对应的数据计算处理,其中,所述第一类型计算指令执行时所需的计算资源高于所述第二类型计算指令执行时所需的计算资源。
2.根据权利要求1所述的系统,其特征在于,所述ALU系统包括:主ALU控制器;
所述主ALU控制器,用于接收所述第一类型计算指令,以及根据第一预设线程束模式,将所述第一类型计算指令拆分为至少一个第一线程块,其中,所述第一预设线程束模式用于指示所述ALU系统单次并行处理的线程总数;
所述主ALU控制器,用于针对每个第一线程块中的任意一个线程,根据预设burst模式,将该线程拆分为至少一个单指令单数据SISD指令,其中,所述预设burst模式用于指示单个指令对应的数据组总数;
所述主ALU控制器,用于针对任意一个第一线程块,将该第一线程块中一个线程对应的至少一个SISD指令发送至一个所述主ALU单元。
3.根据权利要求2所述的系统,其特征在于,所述ALU系统包括:次ALU控制器;
所述次ALU控制器,用于接收所述第二类型计算指令,以及根据所述第一预设线程束模式,将所述第二类型计算指令拆分为至少一个第二线程块;
所述次ALU控制器,用于针对每个第二线程块中的任意一个线程,根据所述预设burst模式,将该线程拆分为至少一个SISD指令;
所述次ALU控制器,用于针对任意一个第二线程块,将该第二线程块中一个线程对应的至少一个SISD指令发送至一个所述次ALU单元。
4.根据权利要求3所述的系统,其特征在于,所述第一预设线程束模式为线程束32模式;
所述ALU系统支持的单指令多线程SIMT模式包括:SIMT32模式和SIMT128模式;
在SIMT32模式下,所述主ALU控制器将所述第一类型计算指令拆分为一个第一线程块,所述次ALU控制器将所述第二类型计算指令拆分为一个第二线程块;
在SIMT128模式下,所述主ALU控制器将所述第一类型计算指令拆分为四个第一线程块,所述次ALU控制器将所述第二类型计算指令拆分为四个第二线程块;
其中,一个第一线程块和一个第二线程块均对应32个线程。
5.根据权利要求4所述的系统,其特征在于,所述ALU系统包括:两个ALU组,其中,每个ALU组包括16个主ALU单元和8个次ALU单元。
6.根据权利要求5所述的系统,其特征在于,所述次ALU控制器,用于针对一个第二线程块对应的32个线程,将该32个线程中的第1-8、17-14个线程分配至一个ALU组,以及将该32个线程中的第9-16、25-32个线程分配至另一个ALU组。
7.根据权利要求2或3所述的系统,其特征在于,所述第一类型计算指令包括指令依赖关系指示信息和指令标识信息;所述第二类型计算指令包括所述依赖关系指示信息和指令标识信息;
所述主ALU控制器,用于在所述指令依赖关系指示信息指示所述第一类型计算指令与其他指令存在依赖关系,且所述第一类型计算指令已经执行完毕的情况下,向第一目标装置返回所述第一类型计算指令对应的指令标识信息;
所述次ALU控制器,用于在所述指令依赖关系指示信息指示所述第二类型计算指令与其他指令存在依赖关系,且所述第二类型计算指令已经执行完毕的情况下,向第二目标装置返回所述第二类型计算指令对应的指令标识信息。
8.根据权利要求1所述的系统,其特征在于,每个ALU组包括:至少两个ALU向量寄存器,其中,每个ALU向量寄存器是基于双口静态随机存取存储器SRAM搭建的存储空间。
9.根据权利要求2所述的系统,其特征在于,所述ALU系统与外部多个通用向量寄存器、以及多个通用标量寄存器连接,其中,所述多个通用向量寄存器以及所述多个通用标量寄存器的数目基于所述第一类型计算指令和所述第二类型计算指令对应的源操作数的最大数目确定;
所述ALU系统与每个通用向量寄存器、每个通用标量寄存器之间配置有一个与所述第一预设线程束模式相匹配的读数据接口;
针对任意一个通用向量寄存器、通用标量寄存器,所述ALU系统向该通用向量寄存器、该通用标量寄存器发出的读请求具有最高响应优先级。
10.根据权利要求9所述的系统,其特征在于,所述ALU系统与每个通用向量寄存器、每个通用标量寄存器之间配置有一个与所述第一预设线程束模式相匹配的主ALU写数据端口;
针对任意一个通用向量寄存器、通用标量寄存器,所述ALU系统向该通用向量寄存器、该通用标量寄存器发出的主ALU写请求具有最高响应优先级。
11.根据权利要求9所述的系统,其特征在于,每个ALU组与每个通用向量寄存器、每个通用标量寄存器之间配置有一个与第二预设线程束模式相匹配的次ALU写数据端口,其中,所述第二预设线程束模式用于指示单个ALU组对应的线程总数;
针对任意一个通用向量寄存器、通用标量寄存器,所述ALU系统向该通用向量寄存器、该通用标量寄存器发出的次ALU写请求具有非最高响应优先级。
12.根据权利要求8至11中任意一项所述的系统,其特征在于,所述ALU系统包括:仲裁单元;
所述仲裁单元,用于针对所述第一类型计算指令和所述第一类型计算指令针对相同目标寄存器的读请求进行仲裁,确定针对目标寄存器的读取顺序,其中,目标寄存器为ALU向量寄存器、通用向量寄存器、通用标量寄存器中的一个。
13.根据权利要求12所述的系统,其特征在于,所述仲裁单元,用于针对所述第一类型计算指令或所述第二类型计算指令对应的多个源操作数的读请求进行仲裁,确定每个源操作数的读取顺序;
所述仲裁单元,用于针对任意一个源操作数的读请求,基于目标寄存器的寄存器类型,启动对应的读数据逻辑,从目标寄存器中读取该源操作数对应的数据。
14.根据权利要求9所述的系统,其特征在于,所述ALU系统包括:主ALU标量数据选择器、次ALU标量数据选择器;
所述主ALU标量数据选择器,用于从所述多个通用标量寄存器向所述ALU系统返回的标量数据中,为所述第一类型计算指令对应的每个源操作数选择第一目标标量数据,以及将所述第一目标标量数据广播至对应的所述主ALU单元;
所述次ALU标量数据选择器,用于从所述多个通用标量寄存器向所述ALU系统返回的标量数据中,为所述第二类型计算指令对应的每个源操作数选择第二目标标量数据,以及将所述第二目标标量数据广播至对应的所述次ALU单元。
15.根据权利要求8或9所述的系统,其特征在于,所述ALU系统包括:主ALU标量数据写回器、次ALU标量数据写回器;
针对任意一个ALU组,该ALU组执行完成所述第一类型计算指令对应的数据计算处理之后,将计算结果写入第一目标寄存器,其中,第一目标寄存器为ALU向量寄存器、通用向量寄存器、主ALU标量数据写回器中的一个;
针对任意一个ALU组,该ALU组执行完成所述第二类型计算指令对应的数据计算处理之后,将计算结果写入第二目标寄存器,其中,第二目标寄存器为ALU向量寄存器、通用向量寄存器、次ALU标量数据写回器中的一个。
16.根据权利要求15所述的系统,其特征在于,所述主ALU标量数据写回器,用于在接收到所述第一类型计算指令对应的全部线程的计算结果后,将第一个有效线程的计算结果,写入对应的通用标量寄存器;
所述次ALU标量数据写回器,用于在接收到所述第二类型计算指令对应的全部线程的计算结果后,将第一个有效线程的计算结果,写入对应的通用标量寄存器。
17.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为调用所述存储器存储的指令,以运行权利要求1至16中任意一项所述的ALU系统。
18.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至16中任意一项所述的ALU系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311667152.2A CN117389512B (zh) | 2023-12-06 | 2023-12-06 | 一种算术逻辑单元alu系统、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311667152.2A CN117389512B (zh) | 2023-12-06 | 2023-12-06 | 一种算术逻辑单元alu系统、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117389512A true CN117389512A (zh) | 2024-01-12 |
CN117389512B CN117389512B (zh) | 2024-02-23 |
Family
ID=89472390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311667152.2A Active CN117389512B (zh) | 2023-12-06 | 2023-12-06 | 一种算术逻辑单元alu系统、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117389512B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111047022A (zh) * | 2018-10-12 | 2020-04-21 | 中科寒武纪科技股份有限公司 | 一种计算装置及相关产品 |
US20210303307A1 (en) * | 2020-03-30 | 2021-09-30 | Arm Limited | Operation of an accumulation process in a data processing apparatus |
CN114461176A (zh) * | 2022-04-12 | 2022-05-10 | 北京象帝先计算技术有限公司 | 一种算术逻辑单元、浮点数处理方法、gpu芯片、电子设备 |
CN114579078A (zh) * | 2022-02-25 | 2022-06-03 | 阿里巴巴(中国)有限公司 | 一种加速器、加速方法和电子设备 |
CN116700663A (zh) * | 2022-02-24 | 2023-09-05 | 象帝先计算技术(重庆)有限公司 | 一种浮点数处理方法及装置 |
US20230367641A1 (en) * | 2022-05-16 | 2023-11-16 | Google Llc | Centralized Control For Computing Resource Management |
-
2023
- 2023-12-06 CN CN202311667152.2A patent/CN117389512B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111047022A (zh) * | 2018-10-12 | 2020-04-21 | 中科寒武纪科技股份有限公司 | 一种计算装置及相关产品 |
US20210303307A1 (en) * | 2020-03-30 | 2021-09-30 | Arm Limited | Operation of an accumulation process in a data processing apparatus |
CN116700663A (zh) * | 2022-02-24 | 2023-09-05 | 象帝先计算技术(重庆)有限公司 | 一种浮点数处理方法及装置 |
CN114579078A (zh) * | 2022-02-25 | 2022-06-03 | 阿里巴巴(中国)有限公司 | 一种加速器、加速方法和电子设备 |
CN114461176A (zh) * | 2022-04-12 | 2022-05-10 | 北京象帝先计算技术有限公司 | 一种算术逻辑单元、浮点数处理方法、gpu芯片、电子设备 |
US20230367641A1 (en) * | 2022-05-16 | 2023-11-16 | Google Llc | Centralized Control For Computing Resource Management |
Also Published As
Publication number | Publication date |
---|---|
CN117389512B (zh) | 2024-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3832499B1 (en) | Matrix computing device | |
US11175920B2 (en) | Efficient work execution in a parallel computing system | |
US9672035B2 (en) | Data processing apparatus and method for performing vector processing | |
US20190026158A1 (en) | Virtual vector processing | |
US9501318B2 (en) | Scheduling and execution of tasks based on resource availability | |
US10713059B2 (en) | Heterogeneous graphics processing unit for scheduling thread groups for execution on variable width SIMD units | |
EP2620873B1 (en) | Resource allocation method and apparatus of GPU | |
US9355061B2 (en) | Data processing apparatus and method for performing scan operations | |
US8595467B2 (en) | Floating point collect and operate | |
US11003429B1 (en) | Compile-time scheduling | |
CN102640131A (zh) | 并行线程处理器中的一致分支指令 | |
CN110825436B (zh) | 应用于人工智能芯片的计算方法和人工智能芯片 | |
US10761822B1 (en) | Synchronization of computation engines with non-blocking instructions | |
EP2815322A2 (en) | Method, apparatus, and computer program product for inter-core communication in multi-core processors | |
US11175919B1 (en) | Synchronization of concurrent computation engines | |
CN105027075A (zh) | 具有共享前端单元的处理核 | |
US20150143378A1 (en) | Multi-thread processing apparatus and method for sequentially processing threads | |
CN117389512B (zh) | 一种算术逻辑单元alu系统、电子设备和存储介质 | |
US10922146B1 (en) | Synchronization of concurrent computation engines | |
US9760969B2 (en) | Graphic processing system and method thereof | |
US10146736B2 (en) | Presenting pipelines of multicore processors as separate processor cores to a programming framework | |
CN111061485A (zh) | 任务处理方法、编译器、调度服务器和介质 | |
CN116483584A (zh) | Gpu的任务处理方法、装置、电子设备和存储介质 | |
CN112463218B (zh) | 指令发射控制方法及电路、数据处理方法及电路 | |
US11494326B1 (en) | Programmable computations in direct memory access engine |
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 |