CN114625421A - Simt指令处理方法及装置 - Google Patents
Simt指令处理方法及装置 Download PDFInfo
- Publication number
- CN114625421A CN114625421A CN202011452846.0A CN202011452846A CN114625421A CN 114625421 A CN114625421 A CN 114625421A CN 202011452846 A CN202011452846 A CN 202011452846A CN 114625421 A CN114625421 A CN 114625421A
- Authority
- CN
- China
- Prior art keywords
- scalar
- vector
- instruction
- processing unit
- simt
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title description 8
- 238000000034 method Methods 0.000 claims abstract description 26
- 238000010586 diagram Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 2
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明实施例提供了一种单指令多线程SIMT指令处理方法及装置,该装置包括标量处理单元和向量处理单元,其中:标量处理单元,用于根据标量类型的SIMT指令,进行标量运算;向量处理单元,用于根据向量类型的SIMT指令,进行向量运算。本发明实施例,可以提高处理效率。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种SIMT指令处理方法及装置。
背景技术
在并行运算中,单指令多线程(single instruction multiple threads,SIMT)结构和同步多线程(simultaneous mutlithreading,SMT)相比具有更大的灵活性和更高的效率,可以通过大量的线程并行运行达到更高的吞吐率,因此,SIMT架构被广泛使用于高性能处理器中。
在并行模型中,存在大量的只对基地址等单一线程进行操作的标量运算,如何提高指令的处理效率是待解决问题。
发明内容
本发明实施例提供一种SIMT指令处理方法及装置,用于提高处理效率。
第一方面提供一种SIMT指令处理装置,包括标量处理单元和向量处理单元,其中:
所述标量处理单元,用于根据标量类型的SIMT指令,进行标量运算;
所述向量处理单元,用于根据向量类型的SIMT指令,进行向量运算。
本发明实施例提供的SIMT指令处理装置中,标量处理单元可以对标量类型的SIMT指令进行标量运算,向量处理单元可以对向量类型的SIMT指令进行向量运算,将向量运算与标量运算分开由不同的处理单元进行处理,标量运算不会影响向量运算,因此,可以提高向量运算的处理效率。此外,由于向量运算和标量运算互不影响,可以同时进行,因此,可以提高指令的整体处理效率。
作为一种可能的实施方式,所述装置还包括用于存储标量数据的标量寄存器组和用于存储向量数据的向量寄存器组,其中:
所述标量寄存器组分别耦合所述标量处理单元和所述向量处理单元,所述向量寄存器组耦合所述向量处理单元。
本发明实施例提供的SIMT指令处理装置,包括标量寄存器组和向量寄存器组,向量寄存器组中寄存器存储的信息只能被对应的线程访问,而标量寄存器组中存储的信息为多个线程共用的信息,可以被多个线程访问。由于标量寄存器组中的一个寄存器可以对应多个线程,因此,可以减少寄存器的数量;此外,由于标量寄存器中存储的信息可以为多个线程共用,因此,可以避免同一信息重复存储,因此,可以减少寄存器存储的信息量,从而可以节约存储资源。
作为一种可能的实施方式,所述装置还包括交换(crossbar)模块,包括多个crossbar,其中:
所述标量处理单元通过所述crossbar模块与所述标量寄存器组连接;
所述向量处理单元通过所述crossbar模块分别与所述标量寄存器组和所述向量寄存器组连接。
本发明实施例提供的SIMT指令处理装置,标量寄存器组与标量处理单元之间通过crossbar模块连接,可以保证标量处理单元能够访问标量寄存器组中的所有寄存器。向量处理单元与标量寄存器组和向量寄存器组之间通过crossbar模块连接,可以保证向量处理单元能够访问标量寄存器组以及向量寄存器组中的所有寄存器。
作为一种可能的实施方式,所述装置还包括控制单元,其中:
所述控制单元分别耦合所述标量处理单元和所述向量处理单元;
所述控制单元,用于确定所述SIMT指令的指令类型,并基于所述SIMT指令的指令类型,向所述标量处理单元或所述向量处理单元发送所述SIMT指令。
本发明实施例提供的SIMT指令处理装置,控制单元可以将不同指令类型的SIMT指令分发给不同的处理单元进行处理,以便可以将向量运算与标量运算分开由不同的处理单元进行处理,标量运算不会影响向量运算,因此,可以提高向量运算的处理效率。
作为一种可能的实施方式,所述控制单元,用于根据所述SIMT指令携带的目的地址,确定所述SIMT指令的指令类型。
本发明实施例提供的SIMT指令处理装置,控制单元可以根据SIMT指令携带的目的地址,确定SIMT指令的指令类型。可见,目的地址不仅具有指向运算结果存储地址的作用,还具有确定SIMT指令的指令类型的作用,因此,不需要SIMT指令额外专门携带信息用于指示SIMT指令的指令类型,可以减少SIMT指令携带的信息,从而可以提高指令的传输效率和节约传输资源。
作为一种可能的实施方式,所述装置还包括标量调度单元和向量调度单元,其中:
所述标量调度单元耦合所述标量处理单元,所述向量调度单元耦合所述向量处理单元;
所述标量调度单元,用于将标量类型的SIMT指令调度至所述标量处理单元;
所述向量调度单元,用于将向量类型的SIMT指令调度至所述向量处理单元。
本发明实施例提供的SIMT指令处理装置,调度单元可以根据处理单元的情况对相应的SIMT指令进行调度,以便SIMT指令可以有序执行。
作为一种可能的实施方式,在多个线程并行执行同一任务的情况下,所述多个线程对应相同的基地址且对应不同的偏移地址,所述标量处理单元用于对所述基地址的数据进行运算,得到第一运算结果,所述向量处理单元用于对所述偏移地址的数据进行运算,得到第二运算结果。
作为一种可能的实施方式,所述标量处理单元,用于获取携带基地址的第一SIMT指令,基于所述第一SIMT指令进行运算得到第一运算结果,并将所述第一运算结果存储在所述标量寄存器组;
所述向量处理单元,用于获取第二SIMT指令,基于所述第二SIMT指令携带的偏移地址对应的数据以及所述标量寄存器组存储的所述第一运算结果,得到任务处理结果。
第二方面提供一种SIMT指令处理方法,包括:所述方法应用于SIMT指令处理装置,所述装置包括标量处理单元和向量处理单元,包括:
通过所述标量处理单元根据标量类型的SIMT指令,进行标量运算;
通过所述向量处理单元根据向量类型的SIMT指令,进行向量运算。
作为一种可能的实施方式,所述装置还包括标量寄存器组和向量寄存器组,所述方法还包括:
通过所述标量寄存器组存储标量数据;
通过所述向量寄存器组存储向量数据。
作为一种可能的实施方式,所述装置还包括控制单元,所述方法还包括:
通过所述控制单元确定所述SIMT指令的指令类型,并基于所述SIMT指令的指令类型,向所述标量处理单元或所述向量处理单元发送所述SIMT指令。
作为一种可能的实施方式,所述方法还包括:
通过所述控制单元根据所述SIMT指令携带的目的地址,确定所述SIMT指令的指令类型。
作为一种可能的实施方式,所述装置还包括标量调度单元和向量调度单元,所述方法还包括:
通过所述标量调度单元将标量类型的SIMT指令调度至所述标量处理单元;
通过所述向量调度单元将向量类型的SIMT指令调度至所述向量处理单元。
作为一种可能的实施方式,所述方法还包括:
通过所述标量处理单元获取携带基地址的第一SIMT指令,基于所述第一SIMT指令进行运算得到第一运算结果,并将所述第一运算结果存储在所述标量寄存器组;
通过所述向量处理单元获取第二SIMT指令,基于所述第二SIMT指令携带的偏移地址对应的数据以及所述标量寄存器组存储的所述第一运算结果,得到任务处理结果。
第三方面提供一种片上系统芯片,该片上系统芯片包括上述第一方面或第一方面的任意一种可能的实现方式所提供的装置。该片上系统芯片,可以由SIMT指令处理装置构成,也可以包含SIMT指令处理装置和其他分立器件。
第四方面提供一种电子设备,包括上述第一方面或第一方面的任意一种可能的实现方式所提供的SIMT指令处理装置以及耦合于所述SIMT指令处理装置的分立器件。
附图说明
图1是本发明实施例提供的一种SIMT指令处理装置的结构示意图;
图2是本发明实施例提供的另一种SIMT指令处理装置的结构示意图;
图3是本发明实施例提供的又一种SIMT指令处理装置的结构示意图;
图4是本发明实施例提供的一种SIMT指令处理方法的流程示意图。
具体实施方式
本发明实施例提供一种SIMT指令处理方法及装置,用于提高处理效率。以下分别进行详细说明。
为了更好地对本发明实施例提供的一种SIMT指令处理方法及装置进行理解,下面先对本发明实施例使用的应用场景进行描述。在并行编程模型中,有大量的只对基地址类等单一线程进行操作的标量运算。SIMD模型中常使用标量协处理器对标量运算进行处理以提高指令的处理效率,但在SIMT模型中,指令调度较为困难。为了解决上述问题,一种可能的实现方式为,在SIMT模型中,无论SIMT指令为标量指令还是向量指令均通过同一指令口向下发送,在这条SIMT指令为标量类型的指令的情况下,可以使用向量处理器中的部分处理单元来进行运算。但是由于向量处理器中部分处理单元用于处理标量类型的指令,以致减少了向量处理器中处理向量指令的处理单元,以致降低了向量指令的处理效率。
请参阅图1,图1是本发明实施例提供的一种SIMT指令处理装置的结构示意图。如图1所示,该SIMT指令处理装置可以包括标量处理单元11和向量处理单元12,其中:
标量处理单元11,用于根据标量类型的SIMT指令,进行标量运算;
向量处理单元12,用于根据向量类型的SIMT指令,进行向量运算。
在SIMT指令的指令类型为标量,即SIMT指令为标量类型,也即SIMT指令为标量指令的情况下,标量处理单元11可以对SIMT指令进行运算,即进行标量运算。在SIMT指令的指令类型为向量,即SIMT指令为向量类型,也即SIMT指令为向量指令的情况下,向量处理单元12可以对SIMT指令进行运算,即进行向量运算。标量即无向量,也即只有大小没有方向的量。标量运算可以为乘法、加法、减法和除法等中的一种或多种。向量指具有大小和方向的量。向量运算可以包括乘法、加法、减法、除法、点乘、叉乘等中的一种或多种。
标量处理单元11可以包括一个或多个处理单元。当标量处理单元11包括多个处理单元时,在SIMT指令为标量指令的情况下,每个周期每个处理单元可以处理一个SIMT指令,而一个标量指令对应一个线程组,从而可以实现多个标量指令的并行运行,即可以实现针对多个线程的标量运算的并行运行。向量处理单元12可以包括一组或多组处理单元。当向量处理单元12包括多组处理单元时,在SIMT指令为向量指令的情况下,每个周期每组处理单元可以处理一个SIMT指令,从而可以实现多个向量指令的并行运行。此外,向量处理单元12中多组处理单元中每组处理单元可以包括多个处理单元,一个向量指令对应每组处理单元包括的处理单元的数量个线程,从而在一组处理单元中可以实现多线程的并行执行。每组处理单元包括的处理单元的数量可以相同。标量处理单元11包括的处理单元的数量与向量处理单元12包括的处理单元的数量可以相同,也可以不同。标量处理单元11包括的处理单元可以为算数运算单元(arithmetic and logic unit,ALU),也可以为其它单元,在此不加限定。向量处理单元12包括的处理单元可以为ALU,也可以为特殊函数单元(specialfunction unit,SFU),还可以为读写单元(load store unit,LSU),还可以为其它单元,在此不加限定。
请参阅图2,图2是本发明实施例提供的另一种SIMT指令处理装置的结构示意图。其中,图2所示的SIMT指令处理装置是由图1所示的SIMT指令处理装置优化得到的。
在一个实施例中,该SIMT指令处理装置还可以包括用于存储标量数据的标量寄存器组13和用于存储向量数据的向量寄存器组14,其中:
标量寄存器组13分别耦合标量处理单元11和向量处理单元12,向量寄存器组14耦合向量处理单元12。
SIMT指令处理装置可以包括标量寄存器组13和向量寄存器组14,标量寄存器组13与向量寄存器组14可以是两个独立的寄存器组。标量寄存器组13与向量寄存器组14均可以包括多组寄存器。SIMT指令可以携带有源地址和操作类型。标量处理单元11接收到SIMT指令之后,可以先从标量寄存器组13中源地址对应的寄存器获取操作数,之后可以根据操作类型对获取的操作数进行标量运算。标量处理单元11接收到的SIMT指令携带的源地址对应标量寄存器组13中的一个寄存器。可以理解,标量寄存器组13内每个地址对应一个寄存器,标量寄存器组13中的寄存器可以被对应的线程访问。标量寄存器组13中寄存器对应的线程可以为该寄存器所属warp(线程数)对应的线程。源地址可以包括一个地址,也可以包括多个地址,即标量指令的操作数可以为一个,也可以为多个,在此不加限定。
向量处理单元12接收到来SIMT指令之后,在该SIMT指令的源地址指向标量寄存器组13的情况下,可以先从标量寄存器组13中源地址对应的寄存器获取操作数,之后可以根据操作类型对获取的操作数进行向量运算。在该SIMT指令的源地址指向向量寄存器组14的情况下,可以先从向量寄存器组14中源地址对应的寄存器获取操作数,之后可以根据操作类型对获取的操作数进行向量运算。在该SIMT指令的源地址即指向标量寄存器组13也指向向量寄存器组14的情况下,可以从标量寄存器组13中源地址对应的寄存器获取操作数,以及从向量寄存器组14中源地址对应的寄存器获取操作数,之后可以根据操作类型对获取的操作数进行向量运算。在向量处理单元12接收到的一个SIMT指令的源地址指向向标量寄存器组14的情况下,在一种情况下,一个SIMT指令携带的源地址对应一个向量寄存器组14中的多个寄存器。可以理解,向量寄存器组14内每个地址可以对应多个寄存器,向量寄存器组14中的每个寄存器只能被对应线程访问。多个寄存器的数量与一组向量处理单元包括的处理单元的数量相同。在另一种情况下,当SIMT指令的源地址指向标量寄存器组13时,一个SIMT指令可以携带多个源地址,每个源地址对应向量寄存器组14中的一个寄存器,多个源地址对应向量寄存器组14中的多个寄存器。
在一个实施例中,该SIMT指令处理装置还可以包括crossbar模块15,crossbar模块15可以包括多个crossbar,其中:
标量处理单元11通过crossbar模块15与标量寄存器组13连接;
向量处理单元12通过crossbar模块15分别与标量寄存器组13和向量寄存器组14连接。
crossbar模块15可以保证标量处理单元11能够访问标量寄存器组13中的所有寄存器,以及向量处理单元12能够访问标量寄存器组13和向量寄存器组14中的所有寄存器。crossbar模块15可以包括多个crossbar。例如,crossbar模块15可以包括两个crossbar,一个crossbar可以分别耦合标量处理单元11和标量寄存器组13,另一个crossbar可以分别耦合向量处理单元12、标量寄存器组13和向量寄存器组14。再例如,crossbar模块15可以包括三个crossbar,一个crossbar可以分别耦合标量处理单元11和标量寄存器组13,另一个crossbar可以分别耦合向量处理单元12和标量寄存器组13,又一个crossbar可以分别耦合向量处理单元12和向量寄存器组14。当crossbar模块15包括三个crossbar时,标量处理单元11可以通过一个crossbar从标量寄存器组13中源地址对应的寄存器获取操作数,可以理解为标量处理单元11向一个crossbar发送携带源地址的读取指令,这个crossbar将该读取指令转发给标量寄存器组13,标量寄存器组13将源地址对应寄存器中的操作数发送给这个crossbar,这个crossbar将操作数转发给标量处理单元11。其它类似,在此不加赘述。
在一个实施例中,该SIMT指令处理装置还可以包括控制单元16,其中:
控制单元16分别耦合标量处理单元11和向量处理单元12;
控制单元16,用于确定SIMT指令的指令类型,并基于SIMT指令的指令类型,向标量处理单元11或向量处理单元12发送SIMT指令。
在一个实施例中,控制单元16,用于根据SIMT指令携带的目的地址,确定SIMT指令的指令类型。
控制单元16接收到SIMT指令之后,可以先确定SIMT指令的指令类型。在指令类型为标量,即SIMT指令为标量指令的情况下,控制单元16可以将SIMT指令发送给标量处理单元11。在指令类型为向量,即SIMT指令为向量指令的情况下,控制单元16可以将SIMT指令发送给向量处理单元12。
SIMT指令还可以携带有指示信息,该指示信息可以指示SIMT指令的指令类型。控制单元16接收到SIMT指令之后,可以根据指示信息确定指令类型。
指示信息可以为目的地址,控制单元16接收到SIMT指令之后,可以先识别目的地址为标量寄存器组13中寄存器的地址还是为向量寄存器组14中寄存器的地址,即识别目的地址指向标量寄存器组13还是指向向量寄存器组14。当目的地址为标量寄存器组13中寄存器的地址,即目的地址指向标量寄存器组13,时,控制单元16可以将SIMT指令发送给标量处理单元11。当目的地址为向量寄存器组14中寄存器的地址,即目的地址指向向量寄存器组14,时,控制单元16可以将SIMT指令分配给向量处理单元12。
指示信息也可以为一个指示位或标志位,在该指示位或标志位的值为一个值的情况下,可以指示SIMT指令为向量指令,在该指示位的值为另一个值的情况下,可以指示SIMT指令为标量指令。
指示信息也可以为一个指示字段,在该指示字段为一种情况下,可以指示SIMT指令为向量指令,在该指示字段为另一种情况下,可以指示SIMT指令为标量指令。
指示信息也可以为一个指示符,在该指示符为一种情况下,可以指示SIMT指令为向量指令,在该指示符为另一种情况下,可以指示SIMT指令为标量指令。
SIMT指令还可以通过其它方式指示SIMT指令的指令类型。例如,在SIMT指令携带一个标志位、标志字段或标识等的情况下,指示SIMT指令可以为标量指令,在SIMT指令未携带这些信息的情况下,指示SIMT指令可以为向量指令,反之亦然。
应理解,上述对指示信息的解释说明只是示例性的,并不对指示信息构成限定。
此外,在SIMI指令携带目的地址的情况下,标量处理单元11和向量处理单元12运算完成之后,可以将运算结果存储至目的地址对应的寄存器,以便后续可以根据目的地址直接进行调用。
在一个实施例中,该SIMT指令处理装置还可以包括标量调度单元17和向量调度单元18,其中:
标量调度单元17耦合标量处理单元11,向量调度单元18耦合向量处理单元12;
标量调度单元17,用于将标量类型的SIMT指令调度至标量处理单元11;
向量调度单元18,用于将向量类型的SIMT指令调度至向量处理单元12。
在标量处理单元11或向量处理单元12中没有空闲的处理单元的情况下,控制单元16将SIMT指令发送给标量处理单元11或向量处理单元12,标量处理单元11或向量处理单元12无法进行处理。因此,控制单元16可以将标量类型的SIMT指令发送给标量调度单元17,以便标量调度单元17可以统一对标量指令进行调度;以及可以将向量类型的SIMT指令发送给向量调度单元18,以便向量调度单元18可以统一对向量指令进行调度。调度方式可以为先进先出原则,也可以为按照优先级进行调度的原则,即优先级越高越先被执行,还可以按照资源占用情况进行调度,还可以按照其他原则进行调度,在此不加限定。
在一个实施例中,在多个线程并行执行同一任务的情况下,这多个线程对应相同的基地址且对应不同的偏移地址,标量处理单元11用于对基地址的数据进行运算,得到第一运算结果,向量处理单元12用于对偏移地址的数据进行运算,得到第二运算结果。
在同一任务对应多个线程和多个SIMT指令的情况下,这多个线程对应相同的基地址且对应不同的偏移地址。标量寄存器组13中寄存器存储的可以为多个线程的基地址的数据。标量处理单元11可以计算得到多个线程的基地址的数据,以及将基地址的数据存储至标量寄存器组13中,以便后续调用。向量寄存器组14中寄存器存储的可以为多个线程的偏移地址的数据。向量处理单元12可以计算得到多个线程的偏移地址的数据,以及将偏移地址的数据存储至向量寄存器组14中,以便后续调用。例如,标量处理单元11获取到标量类型的SIMT指令之后,可以根据SIMT指令进行标量运算得到第一运算结果,之后可以将第一运算结果存储到标量寄存器组13中。向量处理单元12接收到向量类型的SIMT指令之后,可以根据SIMT指令进行向量运算得到第二运算结果,之后可以将第二运算结果存储到向量寄存器组14中。向量处理单元12接收到向量类型的SIMT指令之后,该SIMT指令携带有第一运算结果的存储地址和第二运算结果的存储地址,向量处理单元12可以从第一运算结果的存储地址获取第一运算结果,以及从第二运算结果的存储地址获取第二运算结果,对第一运算结果和第二运算结果进行向量运算可以得到第三运算结果。当第一运算结果为基地址的数据、第二运算结果为偏移地址的数据时,第三运算结果为基地址+偏移地址的数据。
在一个实施例中,标量处理单元11,用于获取携带基地址的第一SIMT指令,基于第一SIMT指令进行运算得到第一运算结果,并将第一运算结果存储在标量寄存器组13;
向量处理单元12,用于获取第二SIMT指令,基于第二SIMT指令携带的偏移地址对应的数据以及标量寄存器组存储的第一运算结果,得到任务处理结果。
标量处理单元11获取到标量类型的SIMT指令之后,可以根据SIMT指令进行标量运算得到第一运算结果,之后可以将第一运算结果存储到标量寄存器组13中。当向量处理单元12接收到携带第一运算结果的存储地址和偏移地址的SIMT指令时,向量处理单元12可以先从向量寄存器组14中偏移地址对应的寄存器获取数据进行向量运算得到第二运算结果,以及可以从第一运算结果的存储地址获取第一运算结果,对第一运算结果和第二运算结果进行向量运算可以得到第三运算结果。
下面以一个实例为例说明SIMT指令处理装置的工作原理。请参阅图3,图3是本发明实施例提供的又一种SIMT指令处理装置的结构示意图。图3中假设SIMT指令处理装置最多可以支持2048个线程,按照32个线程一个warp进行组织的话,总共有64个warp,64个warp可以被分为8个bank(组)。假设即标量处理单元包括4个处理单元,向量处理单元包括4组处理单元,每组向量处理单元包括32线程。标量寄存器组可以包括8个bank,每个bank可以包括128个标量寄存器。向量寄存器组可以包括8个bank,每个bank可以包括128个32线程的向量寄存器。一个bank内的所有寄存器可以被这个bank内的warp共享,一个bank内的寄存器也可以按照warp划分,每个warp对应的寄存器只能被这个warp内的线程共享。
每个处理单元需要至少一个操作数进行处理,因此,标量处理单元与标量寄存器组之间可以有一个8x8的crossbar,以便可以保证标量处理单元可以访问到标量寄存器组中所有bank的标量寄存器。向量处理单元与向量寄存器组之间可以有一个8x8的32线程crossbar,向量处理单元与标量寄存器组之间可以有一个8x8的crossbar,以便可以保证向量处理单元可以访问到标量寄存器组和向量寄存器组中所有bank的寄存器。
每一个时钟周期,标量处理单元可以接收到来自标量调度单元的4条SIMT指令,向量处理单元可以接收到来自向量调度单元的4条SIMT指令。由于同一时间只能有一个处理单元可以访问一个bank,因此,为了保证多个处理单元同一时间分别访问到不同bank。调度单元在前后两个时钟周期调度的SIMT指令的奇偶性可以相反。
举例说明,在时刻0时,指令分配单元可以调度访问bank0、bank2、bank4和bank6的SIMT指令,处理单元可以读取偶数bank的操作数0。在时刻1,指令分配单元可以调度访问bank1、bank3、bank5和bank7的SIMT指令,处理单元可以读取偶数bank的操作数1,以及读取奇数bank的操作数0。在时刻2,处理单元可以读取奇数bank的操作数2。因此,只要在调度上保证相邻时刻奇偶交错,同一时刻内调度bank不冲突,即可保证crossbar不冲突下的最大访问效率。例如,上述时刻1,4个处理单元的8个操作数读取口分别访问到bank0-bank7。
可见,处理单元可以在连续两拍,即两个周期,内从同一bank内读取两个操作数。由于前后两拍指令warp奇偶相反,即bank奇偶相反,因此,不会产生冲突,可以保证同一时刻最多有8个处理单元读取接口访问到8个bank上。
请参阅图4,图4是本发明实施例提供的一种SIMT指令处理方法的流程示意图。其中,该SIMT指令处理方法可以应用于图1-图3所示的SIMT指令处理装置。如图4所示,该SIMT指令处理方法可以包括以下步骤。
401、通过控制单元确定SIMT指令的指令类型,基于SIMT指令的指令类型向标量调度单元或向量调度单元发送SIMT指令。
通过控制单元根据SIMT指令携带的目的地址,确定SIMT指令的指令类型。
402、通过标量调度单元将标量类型的SIMT指令调度至标量处理单元,通过向量调度单元将向量类型的SIMT指令调度至向量处理单元。
403、通过标量处理单元根据标量类型的SIMT指令进行标量运算,通过向量处理单元根据向量类型的SIMT指令进行向量运算。
404、通过标量寄存器组存储标量数据,通过向量寄存器组存储向量数据。
可选地,通过标量处理单元获取携带基地址的第一SIMT指令,基于第一SIMT指令进行运算得到第一运算结果,并将第一运算结果存储在标量寄存器组;通过向量处理单元获取第二SIMT指令,基于第二SIMT指令携带的偏移地址对应的数据以及标量寄存器组存储的第一运算结果,得到任务处理结果。
需要说明的是,本发明实施例中所描述的SIMT指令处理方法中的具体流程的相关功能,可参见上述图1-图3中所述的SIMT指令处理装置实施例中的相关描述,此处不再赘述。
可以理解,SIMT指令处理方法可以是步骤401-步骤404中的全部或部分步骤的组合,在此不加限定。
在一些实施例中提供了一种片上系统芯片,该片上系统芯片可以包括上述实施例所提供的SIMT指令处理装置。该片上系统芯片,可以由SIMT指令处理装置构成,也可以包含SIMT指令处理装置和其他分立器件。
在一些实施例中提供了一种电子设备,包括上述实施例所提供的SIMT指令处理装置以及耦合于SIMT指令处理装置的分立器件。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (14)
1.一种单指令多线程SIMT指令处理装置,其特征在于,包括标量处理单元和向量处理单元,其中:
所述标量处理单元,用于根据标量类型的SIMT指令,进行标量运算;
所述向量处理单元,用于根据向量类型的SIMT指令,进行向量运算。
2.根据权利要求1所述的装置,其特征在于,所述装置还包括用于存储标量数据的标量寄存器组和用于存储向量数据的向量寄存器组,其中:
所述标量寄存器组分别耦合所述标量处理单元和所述向量处理单元,所述向量寄存器组耦合所述向量处理单元。
3.根据权利要求2所述的装置,其特征在于,所述装置还包括交换crossbar模块,包括多个crossbar,其中:
所述标量处理单元通过所述crossbar模块与所述标量寄存器组连接;
所述向量处理单元通过所述crossbar模块分别与所述标量寄存器组和所述向量寄存器组连接。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述装置还包括控制单元,其中:
所述控制单元分别耦合所述标量处理单元和所述向量处理单元;
所述控制单元,用于确定所述SIMT指令的指令类型,并基于所述SIMT指令的指令类型,向所述标量处理单元或所述向量处理单元发送所述SIMT指令。
5.根据权利要求4所述的装置,其特征在于,所述控制单元,用于根据所述SIMT指令携带的目的地址,确定所述SIMT指令的指令类型。
6.根据权利要求1-5任一项所述的装置,其特征在于,所述装置还包括标量调度单元和向量调度单元,其中:
所述标量调度单元耦合所述标量处理单元,所述向量调度单元耦合所述向量处理单元;
所述标量调度单元,用于将标量类型的SIMT指令调度至所述标量处理单元;
所述向量调度单元,用于将向量类型的SIMT指令调度至所述向量处理单元。
7.根据权利要求1-6任一项所述的装置,其特征在于,在多个线程并行执行同一任务的情况下,所述多个线程对应相同的基地址且对应不同的偏移地址,所述标量处理单元用于对所述基地址的数据进行运算,得到第一运算结果,所述向量处理单元用于对所述偏移地址的数据进行运算,得到第二运算结果。
8.根据权利要求2-7任一项所述的装置,其特征在于,所述标量处理单元,用于获取携带基地址的第一SIMT指令,基于所述第一SIMT指令进行运算得到第一运算结果,并将所述第一运算结果存储在所述标量寄存器组;
所述向量处理单元,用于获取第二SIMT指令,基于所述第二SIMT指令携带的偏移地址对应的数据以及所述标量寄存器组存储的所述第一运算结果,得到任务处理结果。
9.一种单指令多线程SIMT指令处理方法,其特征在于,所述方法应用于SIMT指令处理装置,所述装置包括标量处理单元和向量处理单元,包括:
通过所述标量处理单元根据标量类型的SIMT指令,进行标量运算;
通过所述向量处理单元根据向量类型的SIMT指令,进行向量运算。
10.根据权利要求9所述的方法,其特征在于,所述装置还包括标量寄存器组和向量寄存器组,所述方法还包括:
通过所述标量寄存器组存储标量数据;
通过所述向量寄存器组存储向量数据。
11.根据权利要求9或10所述的方法,其特征在于,所述装置还包括控制单元,所述方法还包括:
通过所述控制单元确定所述SIMT指令的指令类型,并基于所述SIMT指令的指令类型,向所述标量处理单元或所述向量处理单元发送所述SIMT指令。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
通过所述控制单元根据所述SIMT指令携带的目的地址,确定所述SIMT指令的指令类型。
13.根据权利要求9-12任一项所述的方法,其特征在于,所述装置还包括标量调度单元和向量调度单元,所述方法还包括:
通过所述标量调度单元将标量类型的SIMT指令调度至所述标量处理单元;
通过所述向量调度单元将向量类型的SIMT指令调度至所述向量处理单元。
14.根据权利要求10-13任一项所述的方法,其特征在于,所述方法还包括:
通过所述标量处理单元获取携带基地址的第一SIMT指令,基于所述第一SIMT指令进行运算得到第一运算结果,并将所述第一运算结果存储在所述标量寄存器组;
通过所述向量处理单元获取第二SIMT指令,基于所述第二SIMT指令携带的偏移地址对应的数据以及所述标量寄存器组存储的所述第一运算结果,得到任务处理结果。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011452846.0A CN114625421A (zh) | 2020-12-11 | 2020-12-11 | Simt指令处理方法及装置 |
JP2022523849A JP2023509813A (ja) | 2020-12-11 | 2021-06-18 | Simt指令処理方法及び装置 |
PCT/CN2021/100808 WO2022121273A1 (zh) | 2020-12-11 | 2021-06-18 | Simt指令处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011452846.0A CN114625421A (zh) | 2020-12-11 | 2020-12-11 | Simt指令处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114625421A true CN114625421A (zh) | 2022-06-14 |
Family
ID=81895766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011452846.0A Pending CN114625421A (zh) | 2020-12-11 | 2020-12-11 | Simt指令处理方法及装置 |
Country Status (3)
Country | Link |
---|---|
JP (1) | JP2023509813A (zh) |
CN (1) | CN114625421A (zh) |
WO (1) | WO2022121273A1 (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5423051A (en) * | 1992-09-24 | 1995-06-06 | International Business Machines Corporation | Execution unit with an integrated vector operation capability |
US9830156B2 (en) * | 2011-08-12 | 2017-11-28 | Nvidia Corporation | Temporal SIMT execution optimization through elimination of redundant operations |
KR102332523B1 (ko) * | 2014-12-24 | 2021-11-29 | 삼성전자주식회사 | 연산 처리 장치 및 방법 |
CN104699465B (zh) * | 2015-03-26 | 2017-05-24 | 中国人民解放军国防科学技术大学 | 向量处理器中支持simt的向量访存装置和控制方法 |
US10318307B2 (en) * | 2015-06-17 | 2019-06-11 | Mediatek, Inc. | Scalarization of vector processing |
US20170371654A1 (en) * | 2016-06-23 | 2017-12-28 | Advanced Micro Devices, Inc. | System and method for using virtual vector register files |
JP6960479B2 (ja) * | 2017-03-14 | 2021-11-05 | アズールエンジン テクノロジーズ ヂュハイ インク.Azurengine Technologies Zhuhai Inc. | 再構成可能並列処理 |
US20200264879A1 (en) * | 2019-02-20 | 2020-08-20 | Nanjing Iluvatar CoreX Technology Co., Ltd. (DBA "Iluvatar CoreX Inc. Nanjing") | Enhanced scalar vector dual pipeline architecture with cross execution |
-
2020
- 2020-12-11 CN CN202011452846.0A patent/CN114625421A/zh active Pending
-
2021
- 2021-06-18 JP JP2022523849A patent/JP2023509813A/ja active Pending
- 2021-06-18 WO PCT/CN2021/100808 patent/WO2022121273A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
JP2023509813A (ja) | 2023-03-10 |
WO2022121273A1 (zh) | 2022-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9672035B2 (en) | Data processing apparatus and method for performing vector processing | |
EP3832499B1 (en) | Matrix computing device | |
CN109240746B (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
US7339592B2 (en) | Simulating multiported memories using lower port count memories | |
US8024553B2 (en) | Data exchange and communication between execution units in a parallel processor | |
US7418576B1 (en) | Prioritized issuing of operation dedicated execution unit tagged instructions from multiple different type threads performing different set of operations | |
US5872987A (en) | Massively parallel computer including auxiliary vector processor | |
CN111310910A (zh) | 一种计算装置及方法 | |
EP3910503A1 (en) | Device and method for executing matrix addition/subtraction operation | |
US20080074433A1 (en) | Graphics Processors With Parallel Scheduling and Execution of Threads | |
US20110320765A1 (en) | Variable width vector instruction processor | |
JP2014501009A (ja) | データを移動させるための方法及び装置 | |
CN102640131A (zh) | 并行线程处理器中的一致分支指令 | |
CN107315717B (zh) | 一种用于执行向量四则运算的装置和方法 | |
CN103279379A (zh) | 用于在没有指令解码的情况下调度指令的方法和装置 | |
CN105027075A (zh) | 具有共享前端单元的处理核 | |
US9286114B2 (en) | System and method for launching data parallel and task parallel application threads and graphics processing unit incorporating the same | |
CN102629238B (zh) | 支持向量条件访存的方法和装置 | |
CN114625421A (zh) | Simt指令处理方法及装置 | |
CN114489791B (zh) | 处理器装置及其指令执行方法、计算设备 | |
US20220197696A1 (en) | Condensed command packet for high throughput and low overhead kernel launch | |
CN112463218A (zh) | 指令发射控制方法及电路、数据处理方法及电路 | |
CN114237878A (zh) | 指令控制方法、电路、装置及相关设备 | |
CN108733625B (zh) | 运算装置及方法 | |
CN117707625B (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 | ||
CB03 | Change of inventor or designer information |
Inventor after: Wang Wenqiang Inventor after: Zhou Jun Inventor after: Xia Xiaoxu Inventor before: Zhou Jun Inventor before: Wang Wenqiang Inventor before: Xia Xiaoxu |
|
CB03 | Change of inventor or designer information | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40067405 Country of ref document: HK |