CN117667204A - 多线程处理器、数据传输方法、电子设备和存储介质 - Google Patents

多线程处理器、数据传输方法、电子设备和存储介质 Download PDF

Info

Publication number
CN117667204A
CN117667204A CN202311660923.5A CN202311660923A CN117667204A CN 117667204 A CN117667204 A CN 117667204A CN 202311660923 A CN202311660923 A CN 202311660923A CN 117667204 A CN117667204 A CN 117667204A
Authority
CN
China
Prior art keywords
thread
data
unit
instruction
source
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
Application number
CN202311660923.5A
Other languages
English (en)
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 Bi Ren Technology Co ltd
Original Assignee
Shanghai Bi Ren 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 Bi Ren Technology Co ltd filed Critical Shanghai Bi Ren Technology Co ltd
Priority to CN202311660923.5A priority Critical patent/CN117667204A/zh
Publication of CN117667204A publication Critical patent/CN117667204A/zh
Pending legal-status Critical Current

Links

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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明提供一种多线程处理器、数据传输方法、电子设备和存储介质,其中多线程处理器包括LD/ST单元和多个执行单元EU;LD/ST单元中,输入接口用于接收多个执行单元EU的传输指令,并将传输指令中的SHUFFLE指令传输至SHUFFLE单元;SHUFFLE单元用于解析SHUFFLE指令,得到目的线程的源线程索引,并基于源线程索引确定目的线程在源线程数据中的数据偏移量;Shifter单元基于数据偏移量,将目的线程所对应的源线程数据移至目的线程的位置,作为目标数据;输出接口用于将目标数据传输至执行单元中的目的线程的寄存器。本发明提供的处理器、方法、设备和介质,大大节省了硬件资源。

Description

多线程处理器、数据传输方法、电子设备和存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种多线程处理器、数据传输方法、电子设备和存储介质。
背景技术
随着GPU(Graphics Processing Unit,图形处理器)和GPGPU(General-Purposecomputing on Graphics Processing Units,通用图形处理器)、人工智能、集群服务器等大规模应用领域的兴起,多线程处理器(multi-thread processor)需要处理越来越复杂的应用场景,有限的共享内存(Shared Memory)资源变得非常宝贵。
为节省共享内存资源的使用,SHUFFLE指令被提出。具体在多线程处理器中,可以直接通过SHUFFLE指令实现从源线程(source thread)到目的线程(destination thread)之间的数据传输,从而得到节省共享内存的资源访问、降低线程之间的数据交互延时的效果。
然而,相关的SHUFFLE单元通常是EU(Execution Unit,执行单元)内的一个基本硬件单元,一个EU内的SHUFFLE单元实现源线程到目的线程之间的数据传输,需要占用较多的硬件资源(32个32to1 mux)。并且,对于一个多线程处理器内存在N个EU的情况,其中每个EU内均设置有一个SHUFFLE单元,N个EU即需要N个SHUFFLE单元,N个SHUFFLE单元的设置会占用很多的硬件资源。
发明内容
本发明提供一种多线程处理器、数据传输方法、电子设备和存储介质,用以解决现有技术中基于SHUFFLE实现的线程间数据传输需要占用大量硬件资源的缺陷。
本发明提供一种多线程处理器,包括:
LD/ST单元和多个执行单元EU,所述LD/ST单元包括输入接口、SHUFFLE单元、Shifter单元和输出接口;
所述输入接口用于接收所述多个执行单元EU的传输指令,并将所述传输指令中的SHUFFLE指令传输至所述SHUFFLE单元;
所述SHUFFLE单元用于解析所述SHUFFLE指令,得到目的线程的源线程索引,并基于所述源线程索引确定目的线程在源线程数据中的数据偏移量;
所述Shifter单元基于所述数据偏移量,将所述源线程下的源线程数据移至所述目的线程的位置,作为目标数据;
所述输出接口用于将所述目标数据传输至所述执行单元中的目的线程的寄存器。
根据本发明提供的一种多线程处理器,所述SHUFFLE单元具体用于:
获取所述SHUFFLE指令对应EU中每个线程的源线程索引;
基于所述每个线程的源线程索引,为每个目的线程确定对应在源线程数据中的数据偏移量。
根据本发明提供的一种多线程处理器,所述SHUFFLE单元还用于:
获取所述SHUFFLE指令对应EU中每个线程的交换模式,所述交换模式用于指示SHUFFLE过程中目的线程内元素之间的交换规则;
基于所述每个线程的交换模式,对每个线程中的元素进行重排。
根据本发明提供的一种多线程处理器,所述Shifter单元具体用于:
基于所述数据偏移量,从源数据中移出所述目的线程对应的源线程数据;
基于所述目的线程的线程索引,将移出的所述目的线程对应的源线程数据移动到所述目的线程的位置。
根据本发明提供的一种多线程处理器,所述输出接口具体用于:
基于所述SHUFFLE指令中的目标EU标识和目标寄存器地址,将所述目标数据传输至所述目标EU中的目的寄存器中。
根据本发明提供的一种多线程处理器,还包括共享内存单元,以及读写控制单元;
所述输入接口还用于将所述传输指令中的LD/ST指令传输至所述读写控制单元;
所述读写控制单元用于解析所述LD/ST指令,得到LD/ST指令的指令信息,并将所述指令信息送入所述共享内存单元。
根据本发明提供的一种多线程处理器,所述读写控制单元包括读控制单元和写控制单元;
所述读控制单元用于解析LD指令,得到LD指令的读请求,并将所述读请求作为所述指令信息送入所述共享内存单元;
所述写控制单元用于解析ST指令,得到所述ST指令的写请求和写数据,并将所述写请求和所述写数据作为所述指令信息写入所述共享内存单元。
本发明还提供一种数据传输方法,包括:
接收多个执行单元EU的传输指令;
解析所述传输指令中的SHUFFLE指令,得到源线程索引,并基于所述源线程索引确定目的线程在源线程数据中的数据偏移量;
基于所述数据偏移量,将所述目的线程所对应的源线程数据移至所述目的线程的位置,作为目标数据;
将所述目标数据传输至所述执行单元中的目的线程的寄存器。
本发明还提供一种电子设备,包括存储器、如上所述的多线程处理器;所述存储器中存储有可在所述多线程处理器上运行的计算机程序;
或者,包括多线程处理器,所述多线程处理器内部设置有存储器,所述存储器中存储有用于实现多线程处理器内部数据传输的计算机程序,所述计算机程序被所述多线程处理器执行时实现如上所述的数据传输方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被多线程处理器执行时实现如上所述数据传输方法。
本发明提供的一种多线程处理器、数据传输方法、电子设备和存储介质,将SHUFFLE单元设置在多个EU共享的LD/ST单元内实现,SHUFFLE单元与LD/ST单元中原有的Shifter单元配合执行,实现了从源线程到目的线程的数据传输功能。且由于多个EU可以共享一个LD/ST单元,而一个LD/ST单元中也仅需设置一个SHUFFLE单元,无需再为各EU分别设置SHUFFLE单元,大大节省了硬件资源。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是相关技术中通过LD/ST进行数据传输的流程示意图;
图2是相关技术中SHUFFLE单元的硬件结构示意图;
图3是相关技术中多线程处理器的SHUFFLE单元的结构示意图;
图4是本发明提供的多线程处理器的结构示意图;
图5是本发明提供的线程映射示意图;
图6是本发明提供的SHUFFLE原理示意图;
图7是本发明提供的跨EU传输示意图;
图8是本发明提供的电子设备的结构示意图之一;
图9是本发明提供的数据传输方法的流程示意图之一;
图10是本发明提供的数据传输方法的流程示意图之二;
图11是本发明提供的电子设备的结构示意图之二。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在多线程处理器中,不同线程之间经常需要相互访问对方的数据。为了实现这一目标,传统的方法是使用LD/ST(Load/Store,加载/存储)指令进行寄存器和存储器之间的数据传输。
具体来说,同一个线程束(warp)内的源线程会先将数据存储到共享内存中,然后目的线程再从共享内存中加载相同地址的数据,并将其返回到自己的寄存器中。这样,就可以实现同一个线程束内不同线程之间的数据传输。
进一步地,图1是相关技术中通过LD/ST进行数据传输的流程示意图,如图1所示,通过LD/ST配合共享内存Shared Memory,可以实现EU内的数据传输和共享,以及EU之间的数据传输和共享。
虽然同一个warp内各线程之间的数据传送可以通过LD/ST指令实现,但是LD/ST的执行占用了很多的共享内存资源,而且线程之间的数据传输延时也较大。
基于上述问题,SHUFFLE指令被提出。
SHUFFLE指令主要用于在同一个warp内的不同线程之间进行数据迁移。在硬件中,一个warp内的每个线程都有自己的lane,而每个lane都配备了TLR(Thread LocalRegister,线程本地寄存器)。因此,lane之间的数据交互实际上是在TLR内部或TLR之间进行的数据传输。
图2是相关技术中SHUFFLE单元的硬件结构示意图,如图2所示,在同一个EU内,一个线程束warp内包含多个lane,作为示例,一个线程束内可以包含32个lane,也可以不限于32个lane。以下以32个lane为例进行说明,每一个目的线程destination lane的data,都有可能来自32个源线程source lane中的任意一个,因此对于每个目的线程destinationlane来说,都需要1个32to 1的多路选择器(Multiplexer,MUX)。如此一来,32个目的线程destination lane就至少需要32个32to 1的MUX。图2中,destination lane中的lane0、lane1和lane31分别来自lane0,lane0和lane31。图2中dem表示data element。
图3是相关技术中多线程处理器的SHUFFLE单元的结构示意图,如图3所示,对于一个多线程处理器,其硬件结构中可同时有N个EU(N>=1,且N为整数)并行工作。每个EU内均存在一个SHUFFLE单元,因此至少需要N×32个32to1的MUX。当EU的数量N很大时,SHUFFLE单元的硬件资源开销是巨大的。
结合图2和图3可知,相关技术中,一个EU中的SHUFFLE单元在实现数据传输时,需要占用较多的硬件资源,具体可以是32个32to1的MUX。而对于具有N个EU的多线程处理器而言,每个EU内均设置有一个SHUFFLE单元,N个EU即需要N个SHUFFLE单元,这会占用更多的硬件资源,且不同EU之间无法共享SHUFFLE单元。
针对上述问题,本发明实施例提供一种多线程处理器。图4是本发明提供的多线程处理器的结构示意图,如图4所示,多线程处理器包括:
LD/ST单元10和多个执行单元EU20,所述LD/ST单元10包括输入接口11、SHUFFLE单元12、Shifter单元13和输出接口14;
所述输入接口11用于接收所述多个执行单元EU20的传输指令,并将所述传输指令中的SHUFFLE指令传输至所述SHUFFLE单元12;
所述SHUFFLE单元12用于解析所述SHUFFLE指令,得到源线程索引,并基于所述源线程索引确定目的线程在源线程数据中的数据偏移量;
所述Shifter单元13基于所述数据偏移量,将所述目的线程所对应的源线程数据移至所述目的线程的位置,作为目标数据;
所述输出接口14用于将所述目标数据传输至所述执行单元中的目的线程的寄存器。
此处,多线程处理器中,LD/ST单元10即LD/ST指令执行单元,又可以称为LD/STunit。区别于相关技术中的用于执行LD/ST指令的LD/ST单元,本发明实施例中的LD/ST单元10不仅可以执行LD/ST指令,还可以执行SHUFFLE指令。
进一步地,本发明实施例中的LD/ST单元10不仅包含了常见的输入接口11、Shifter单元13和输出接口14,还包含了SHUFFLE单元12,即,通过在LD/ST的硬件内增设SHUFFLE单元12,来复用LD/ST单元10中的shifter逻辑,在无需额外设置硬件逻辑MUX和Buffer的前提下,实现从源线程到目的线程的数据传输。
具体地,多线程处理器中的各个执行单元EU20均可以向LD/ST单元10发送传输指令。此处的传输指令即用于进行线程之间数据传输的指令,具体可以是SHUFFLE指令,也可以是LD/ST指令。
执行单元EU20所发送的传输指令,集中在LD/ST单元10的输入接口11处。此处的输入接口11具体可以是Arb,输入接口可以接收到的传输指令为单位,从多个执行单元EU20发送的传输指令中选取一个执行单元EU20的传输指令向后传输。此处在传输时,可以基于传输指令的类型,确定后端接收执行的单元,具体在传输指令为SHUFFLE指令时,将SHUFFLE指令发送给内置在LD/ST单元10中的SHUFFLE单元12。
SHUFFLE单元12,即SHUFFLE unit,可以支持从源线程source lane到目的线程destination lane的任意映射。SHUFFLE单元12在接收到输入接口11分发的SHUFFLE指令之后,即可通过解析SHUFFLE指令,得到待传输的源线程的索引,即源线程索引source laneindex。此处的索引用于反映线程在一个线程束中的绝对位置。在此之后,可以基于源线程索引确定目的线程在源线程数据中的数据偏移量byte offset,数据偏移量可以表示目的线程所对应的源线程数据,也就是待传输的目标数据在源线程数据中的偏移量。此处,byteoffset的单位可以是字节byte。
可以理解的是,在进行映射之前,可以预先为每个线程配置源线程索引,以便于确定在数据迁移时所需的数据偏移量。并且,需要说明的是,SHUFFLE单元12输出的数据偏移量byte offset,与相关技术中LD/ST单元内的Shifter单元进行shift所需的数据偏移量是一致的,由此,可以在不改变Shifter单元的前提下,使得SHUFFLE单元12与Shifter单元13适配,从而在LD/ST的硬件中实现基于SHUFFLE的数据传输。
Shifter单元13可以接收SHUFFLE单元12输出的数据偏移量,并且基于数据偏移量从源线程数据中确定出需要迁移的目的线程对应的源线程数据,即目标数据,随后将目标数据迁移至目的线程的位置处。具体可以将目标数据填入目的线程对应的位置中。
在Shifter单元13执行完成之后,即可通过输出接口14将目标数据传输至EU20中的目的线程的寄存器,具体可以是传输至EU20中目的线程的TLR地址中。可以理解的是,此处输出接口14可以将目标数据传输至EU20中的某一个目的线程的寄存器,或者也可以将目标数据传输至EU20中的多个目的线程的寄存器,本发明实施例对此不作具体限定。
本发明实施例提供的多线程处理器,将SHUFFLE单元设置在多个EU共享的LD/ST单元内实现,SHUFFLE单元与LD/ST单元中原有的Shifter单元配合执行,实现了从源线程到目的线程的数据传输功能。且由于多个EU可以共享一个LD/ST单元,而一个LD/ST单元中也仅需设置一个SHUFFLE单元,无需再为各EU分别设置SHUFFLE单元,大大节省了硬件资源。
基于上述实施例,所述SHUFFLE单元具体用于:
获取所述SHUFFLE指令对应EU中每个线程的源线程索引;
基于所述每个线程的源线程索引,为每个目的线程确定对应在源线程数据中的数据偏移量。
具体地,可以预先为EU中的每个线程配置源线程索引,以一个EU中包含32个lane为例,可以为32个lane中的每个lane分别配置源线程索引source lane index。
在此基础上,SHUFFLE单元即可根据预先配置好的源线程索引,为SHUFFLE指令所指示的每个目的线程分别确定对应源线程处的源线程数据的数据偏移量。
可以理解的是,在本发明实施例中,针对一个EU而言,该EU中的每个线程均配置有自己的源线程索引,由此,每个目的线程均能够对应自己的源线程索引,每个线程的源线程索引均可以由软件灵活配置,由此保证SHUFFLE单元应用的灵活性。
例如,图5是本发明提供的线程映射示意图,如图5所示,一个线程束中包括32个线程lane,每个目的线程destination lane都可能来源于32个源线程索引source laneindex(0~31)中的任意一个。
此外,在相关技术中,线程lane之间的SHUFFLE都是以整个lane的粒度进行,无法做到lane内元素element更细粒度的SHUFFLE,无法完成lane内多个element之间的交换swap。针对这一问题,基于上述任一实施例,SHUFFLE单元还用于:
获取所述SHUFFLE指令对应EU中每个线程的交换模式,所述交换模式用于指示SHUFFLE过程中目的线程内的元素之间的交换规则;
基于所述每个线程的交换模式,对每个线程中的元素进行重排。
具体地,可以预先为EU中的每个线程配置一个交换模式swap_mode,此处的交换模式swap_mode用于指定SHUFFLE过程中该线程lane内元素element之间的交换swap规则。
以32-bit lane为例,lane内element之间的swap规则如表1所示。此例中,对于8-bit element,可实现32-bit lane内4个element的任意swap(共计24种);对于16-bitelement,可实现32-bit lane内2个element的swap(共计2种)。
表1.交换规则示例
可以理解的是,表1中,swap_mode一列为交换规则的规则标识,8-bit demindestination lane(LSB->MSB)一列表示目的线程下元素element为8-bit时,一个线程内的4个元素dem的排列方式;16-bit dem in destination lane(LSB->MSB)一列表示目的线程下元素element为16-bit时,一个线程内的2个元素dem的排列方式。LSB(LeastSignificant Bit)表示线程内位于低byte的dem,MSB(Most Significant Bit)表示线程内位于高byte的dem。Reserved为保留项。
在确定各线程的交换模式之后,即可基于各线程的交换模式所指示的交换规则,对各线程内的元素进行重排,完成重排,即实现了线程内元素之间的交换。
本发明实施例提供的方法,通过为各线程设置交换模式,实现了SHUFFLE过程中线程内各元素之间的任意交换,从而实现element粒度的数据传输。
基于上述任一实施例,所述Shifter单元具体用于:
基于所述数据偏移量,从源数据中移出所述目的线程对应的源线程数据;
基于目的线程索引,将移出的所述目的线程对应的源线程数据移动到所述目的线程的位置。
具体地,在得到SHUFFLE单元输出的数据偏移量之后,Shifter单元即可根据数据偏移量,依据目的线程的shifter逻辑从源数据中找到与目的线程对应的源线程数据,即目标数据。在定位到目的线程对应的源线程数据之后,即可将目的线程对应的源线程数据从源数据中移出,随后可依据目的线程的索引lane index,也就是目的线程索引,将之前移出的目的线程对应的源线程数据移动到目的线程的位置处,由此实现目标数据的偏移。
可以理解的是,在Shifter单元中,针对各目的线程对应的源线程数据的移动,可以是并行的。例如在一个线程束中包括32个线程lane的情况下,可以将32个线程lane均作为目的线程进行并行shift,从而完成32个lane的SHUFFLE操作。
例如,图6是本发明提供的SHUFFLE原理示意图,如图6所示,针对于SHUFFLE单元,可以获取各个线程作为目的线程时的源线程索引,例如lane0的源线程索引source laneindex为1,lane1的源线程索引source lane index为0,lane2的源线程索引source laneindex为6。
基于各源线程索引和数据偏移量之间的对应关系,可以确定各个线程作为目的线程时的数据偏移量,由此得到lane0的数据偏移量byte offset为4,lane1的数据偏移量byte offset为0,lane2的数据偏移量byte offset为24。
随后,针对于Shifter单元,可以基于各线程的数据偏移量,从源数据Source data中获取待移动到各目的线程对应的源线程数据。例如,针对lane0,数据偏移量byte offset为4,可以从源数据Source data的4B起获取针对lane0的目标数据(即源线程lane1的数据),并基于目的线程的线程索引,即lane0的索引0,将目的线程对应的源线程数据移动到lane0处。
基于上述任一实施例,所述输出接口具体用于:
基于所述SHUFFLE指令中的目标EU标识和目标寄存器地址,将所述目标数据传输至所述目标EU中的目标寄存器。
具体地,本发明实施例所提供的多线程处理器,除了可以实现同个EU内不同线程之间的数据传输,还可以实现不同EU之间的数据传输。即,在本发明实施例中,从源线程到目的线程的数据传输,可以是跨EU的。
为了实现跨EU的数据传输,输出接口在将目标数据传输到EU中的目的线程时,需要根据SHUFFLE指令中的目标EU标识EU_ID和目标寄存器地址TLR_ADDR,判断需要送达的EU和TLR地址,从而实现基于SHUFFLE指令的EU间的数据共享。
图7是本发明提供的跨EU传输示意图,如图7所示,SHUFFLE指令中可以携带源线程和目的线程所属的EU标识和寄存器地址,由此通过LD/ST单元实现跨EU的数据传输。例如,图7中将EU0的数据发送到EU4,将EU2的数据发送到EU3。
基于上述任一实施例,多线程处理器还包括共享内存单元,以及读写控制单元;
所述输入接口还用于将所述传输指令中的LD/ST指令传输至所述读写控制单元;
所述读写控制单元用于解析所述LD/ST指令,得到LD/ST指令的指令信息,并将所述指令信息送入所述共享内存单元。
具体地,输入接口在向后传输指令时,可以基于传输指令的类型,确定后端接收执行的单元,具体在传输指令为SHUFFLE指令时,将SHUFFLE指令发送给内置在LD/ST单元中的SHUFFLE单元,在传输指令为LD/ST指令传输至读写控制单元。
此处,读写控制单元即LD/ST指令的处理单元。读写控制单元在接收到LD/ST指令之后,可以针对LD/ST指令进行解析,以得到LD/ST指令的指令信息,此处的指令信息可以包括相应的读写请求,例如读请求read request,又例如写请求write request和需要写入的信息write data。在得到上述LD/ST指令的指令信息之后,读写控制单元即可将指令信息送入共享内存单元shared memory,从而实现数据的读写。
基于上述任一实施例,所述读写控制单元包括读控制单元和写控制单元;
所述读控制单元用于解析LD指令,得到LD指令的读请求,并将所述读请求作为所述指令信息送入所述共享内存单元;
所述写控制单元用于解析ST指令,得到所述ST指令的写请求和写数据,并将所述写请求和所述写数据作为所述指令信息写入所述共享内存单元。
具体地,读写控制单元可以包括读控制单元read control和写控制单元writecontrol。
其中,读控制单元read control用于解析LD指令,由此得到读请求read request,并将读请求送入共享内存单元。以32个lane为一个线程束为例,读控制单元read control可以将32个lane的read request送入共享内存单元。
写控制单元write control用于解析ST指令,由此得到写请求write request和需要写入的信息write data,并将write request和write data送入共享内存单元。以32个lane为一个线程束为例,写控制单元write control可以将32个lane的write request和write data送入共享内存单元。
图8示例了一种电子设备的实体结构示意图之一,如图8所示,该电子设备可以包括:多线程处理器810、通信接口(Communications Interface)820、存储器(memory)830和通信总线840,其中,多线程处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。多线程处理器810可以调用存储器830中的逻辑指令,以实现相应的方法。需要说明的是,此处多线程处理器810通过调用存储器830中的逻辑指令所实现的方法,取决于存储器830中具体存储的逻辑指令。而多线程处理器810在执行存储器830中的逻辑指令时,针对于逻辑指令中需要进行数据传输的部分,是通过多线程处理器810内的SHUFFLE单元配合Shifter单元实现的。
此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
基于上述任一实施例,图9是本发明提供的数据传输方法的流程示意图之一,如图9所示,该方法是可以在上述实施例提供的多线程处理器中执行的实现线程之间数据传输的方法。该方法包括:
步骤910,接收多个执行单元EU的传输指令;
步骤920,解析所述传输指令中的SHUFFLE指令,得到源线程索引,并基于所述源线程索引确定目的线程在源线程数据中的数据偏移量;
步骤930,基于所述数据偏移量,将所述目的线程所对应的源线程数据移至所述目的线程的位置,作为目标数据;
步骤940,将所述目标数据传输至所述执行单元中的目的线程的寄存器。
具体地,各执行单元EU可以分别向LD/ST单元发送传输指令。此处的传输指令即用于进行线程之间数据传输的指令,具体可以是SHUFFLE指令,也可以是LD/ST指令。
在接收到传输指令之后,可以接收到的传输指令为单位,从多个执行单元EU发送的传输指令中选取一个执行单元EU的传输指令向后传输。具体在传输指令为SHUFFLE指令时,可以将SHUFFLE指令发送给内置在LD/ST单元中的SHUFFLE单元。
可以通过SHUFFLE单元解析SHUFFLE指令,得到待传输的源线程的索引,即源线程索引source lane index。此处的索引用于反映线程在一个线程束中的绝对位置。在此之后,可以基于源线程索引确定目的线程所对应源线程数据的数据偏移量byte offset,数据偏移量可以表示目的线程所对应的源线程数据,也就是待传输的目标数据在源线程数据中的偏移量。此处,byte offset的单位可以是字节byte。
可以理解的是,在进行映射之前,可以预先为每个线程配置源线程索引,以便于确定在数据迁移时所需的数据偏移量。并且,需要说明的是,SHUFFLE单元输出的数据偏移量byte offset,与相关技术中LD/ST单元内的Shifter单元进行shift所需的数据偏移量是一致的,由此,可以在不改变Shifter单元的前提下,使得SHUFFLE单元与Shifter单元适配,从而在LD/ST的硬件中实现基于SHUFFLE的数据传输。
随后可以通过Shifter单元,基于数据偏移量从源线程数据中确定出需要迁移的目的线程所对应的源线程数据,即目标数据,随后将目标数据迁移至目的线程的位置处。具体可以将目标数据填入目的线程对应的位置中。
最后,可以将目标数据传输至EU中的目的线程的寄存器,具体可以是传输至EU中目的线程的TLR地址中。可以理解的是,此处输出接口可以将目标数据传输至EU中的某一个目的线程的寄存器,或者也可以将目标数据传输至EU中的多个目的线程的寄存器,本发明实施例对此不作具体限定。本发明实施例提供的数据传输方法,实现了从源线程到目的线程的数据传输功能。且由于多个EU可以共享一个LD/ST单元,而一个LD/ST单元中也仅需设置一个SHUFFLE单元,无需再为各EU分别设置SHUFFLE单元,大大节省了硬件资源。
基于上述任一实施例,图10是本发明提供的数据传输方法的流程示意图之二,如图10所示,数据传输方法可以包括如下步骤:
①LD/ST单元接收N个EU的指令,选择一个EU的指令进行处理。根据不同的指令类型,可以分别将LD/ST指令分别送入读/写控制单元read/write control,将SHUFFLE指令送入SHUFFLE单元SHUFFLE unit。
②对于ST指令,写控制单元write control将32个lane的写数据write data和写请求write request一并送入共享内存单元shared memory。对于LD指令,读控制单元readcontrol只需将32个lane的读请求read request送入共享内存单元shared memory。
③共享内存单元Shared memory将存储数据store data写入SRAM(ST指令),或者从SRAM中读取数据(LD指令)。
④SHUFFLE单元SHUFFLE unit从SHUFFLE指令中解析出32个lane的源线程索引source lane index。
⑤SHUFFLE单元SHUFFLE unit根据32个lane的源线程索引source lane index,算出32个lane在目标数据destination data的数据偏移量byte offset。
⑥Shifter单元根据LD指令或者是基于SHUFFLE单元SHUFFLE unit计算出的32个lane的数据偏移量byte offset,对每个lane的data(来自LD return data或者SHUFFLE的源数据source data)进行shift,并填入对应32个lane的目标数据destination data的对应lane的位置。
⑦Shift后的32个lane组成的data,可以根据对应的EU_ID和TLR_ADDR,送入到对应的EU的对应TLR地址中。
本发明实施例提供的数据传输方法,将SHUFFLE单元设置在多个EU共享的LD/ST单元内实现,SHUFFLE单元与LD/ST单元中原有的Shifter单元配合执行,实现了从源线程到目的线程的数据传输功能。且由于多个EU可以共享一个LD/ST单元,而一个LD/ST单元中也仅需设置一个SHUFFLE单元,无需再为各EU分别设置SHUFFLE单元,大大节省了硬件资源。
基于上述任一实施例,图11是本发明提供的电子设备的结构示意图之二,如图11所示,该电子设备包括多线程处理器1100,所述多线程处理器1100内部设置有存储器1110,所述存储器1110中存储有用于实现多线程处理器1100内部数据传输的计算机程序,所述计算机程序被所述多线程处理器1100执行时实现数据传输方法,所述数据传输方法包括:
接收多个执行单元EU的传输指令;
解析所述传输指令中的SHUFFLE指令,得到源线程索引,并基于所述源线程索引确定目的线程在源线程数据中的数据偏移量;
基于所述数据偏移量,将所述目的线程所对应的源线程数据移至所述目的线程的位置,作为目标数据;
将所述目标数据传输至所述执行单元中的目的线程的寄存器。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的数据传输方法,该方法包括:
接收多个执行单元EU的传输指令;
解析所述传输指令中的SHUFFLE指令,得到源线程索引,并基于所述源线程索引确定目的线程在源线程数据中的数据偏移量;
基于所述数据偏移量,将所述目的线程所对应的源线程数据移至所述目的线程的位置,作为目标数据;
将所述目标数据传输至所述执行单元中的目的线程的寄存器。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的数据传输方法,该方法包括:
接收多个执行单元EU的传输指令;
解析所述传输指令中的SHUFFLE指令,得到源线程索引,并基于所述源线程索引确定目的线程在源线程数据中的数据偏移量;
基于所述数据偏移量,将所述目的线程所对应的源线程数据移至所述目的线程的位置,作为目标数据;
将所述目目标数据传输至所述执行单元中的目的线程的寄存器。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种多线程处理器,其特征在于,包括:
LD/ST单元和多个执行单元EU,所述LD/ST单元包括输入接口、SHUFFLE单元、Shifter单元和输出接口;
所述输入接口用于接收所述多个执行单元EU的传输指令,并将所述传输指令中的SHUFFLE指令传输至所述SHUFFLE单元;
所述SHUFFLE单元用于解析所述SHUFFLE指令,得到目的线程的源线程索引,并基于所述源线程索引确定目的线程在源线程数据中的数据偏移量;
所述Shifter单元基于所述数据偏移量,将所述目的线程所对应的源线程数据移至所述目的线程的位置,作为目标数据;
所述输出接口用于将所述目标数据传输至所述执行单元中的目的线程的寄存器。
2.根据权利要求1所述的多线程处理器,其特征在于,所述SHUFFLE单元具体用于:
获取所述SHUFFLE指令对应EU中每个线程的源线程索引;
基于所述每个线程的源线程索引,为每个目的线程确定对应在源线程数据中的数据偏移量。
3.根据权利要求1所述的多线程处理器,其特征在于,所述SHUFFLE单元还用于:
获取所述SHUFFLE指令对应EU中每个线程的交换模式,所述交换模式用于指示SHUFFLE过程中目的线程内的元素之间的交换规则;
基于所述每个线程的交换模式,对每个线程中的元素进行重排。
4.根据权利要求1所述的多线程处理器,其特征在于,所述Shifter单元具体用于:
基于所述数据偏移量,从源数据中移出所述目的线程对应的源线程数据;
基于目的线程索引,将移出的所述目的线程对应的源线程数据移动到所述目的线程的位置。
5.根据权利要求1所述的多线程处理器,其特征在于,所述输出接口具体用于:
基于所述SHUFFLE指令中的目标EU标识和目标寄存器地址,将所述目标数据传输至目标EU中的目标寄存器中。
6.根据权利要求1至5中任一项所述的多线程处理器,其特征在于,还包括共享内存单元,以及读写控制单元;
所述输入接口还用于将所述传输指令中的LD/ST指令传输至所述读写控制单元;
所述读写控制单元用于解析所述LD/ST指令,得到LD/ST指令的指令信息,并将所述指令信息送入所述共享内存单元。
7.根据权利要求6所述的多线程处理器,其特征在于,所述读写控制单元包括读控制单元和写控制单元;
所述读控制单元用于解析LD指令,得到LD指令的读请求,并将所述读请求作为所述指令信息送入所述共享内存单元;
所述写控制单元用于解析ST指令,得到所述ST指令的写请求和写数据,并将所述写请求和所述写数据作为所述指令信息写入所述共享内存单元。
8.一种数据传输方法,其特征在于,包括:
接收多个执行单元EU的传输指令;
解析所述传输指令中的SHUFFLE指令,得到源线程索引,并基于所述源线程索引确定目的线程在源线程数据中的数据偏移量;
基于所述数据偏移量,将所述目的线程所对应的源线程数据移至所述目的线程的位置,作为目标数据;
将所述目标数据传输至所述执行单元中的目的线程的寄存器。
9.一种电子设备,其特征在于,包括存储器、如权利要求1至7中任一项所述的多线程处理器;所述存储器中存储有可在所述多线程处理器上运行的计算机程序;
或者,包括多线程处理器,所述多线程处理器内部设置有存储器,所述存储器中存储有用于实现多线程处理器内部数据传输的计算机程序,所述计算机程序被所述多线程处理器执行时实现如权利要求8所述的数据传输方法。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被多线程处理器执行时实现如权利要求8所述数据传输方法。
CN202311660923.5A 2023-12-05 2023-12-05 多线程处理器、数据传输方法、电子设备和存储介质 Pending CN117667204A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311660923.5A CN117667204A (zh) 2023-12-05 2023-12-05 多线程处理器、数据传输方法、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311660923.5A CN117667204A (zh) 2023-12-05 2023-12-05 多线程处理器、数据传输方法、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN117667204A true CN117667204A (zh) 2024-03-08

Family

ID=90065658

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311660923.5A Pending CN117667204A (zh) 2023-12-05 2023-12-05 多线程处理器、数据传输方法、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN117667204A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118350981A (zh) * 2024-06-13 2024-07-16 北京壁仞科技开发有限公司 用于线程之间进行数据交换的装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118350981A (zh) * 2024-06-13 2024-07-16 北京壁仞科技开发有限公司 用于线程之间进行数据交换的装置

Similar Documents

Publication Publication Date Title
CN112422615B (zh) 一种通信的方法及装置
KR101400286B1 (ko) 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치
US20130268715A1 (en) Dynamic bank mode addressing for memory access
CN117667204A (zh) 多线程处理器、数据传输方法、电子设备和存储介质
CN111190854B (zh) 通信数据处理方法、装置、设备、系统和存储介质
CN109408450B (zh) 一种数据处理的方法、系统、协处理装置和主处理装置
EP2565786A1 (en) Information processing device and task switching method
TW201435591A (zh) 存取內容可定址記憶體之技術
CN111078394B (zh) 一种gpu线程负载均衡方法与装置
US20180276051A1 (en) Processor and task processing method therefor, and storage medium
CN110908716A (zh) 一种向量聚合装载指令的实现方法
CN105045729A (zh) 一种远端代理带目录的缓存一致性处理方法与系统
CN107451070B (zh) 一种数据的处理方法和服务器
CN104216684A (zh) 一种多核并行系统及其数据处理方法
US11467836B2 (en) Executing cross-core copy instructions in an accelerator to temporarily store an operand that cannot be accommodated by on-chip memory of a primary core into a secondary core
US9442759B2 (en) Concurrent execution of independent streams in multi-channel time slice groups
CN111797497B (zh) 一种用于电磁暂态并行仿真的通讯方法及系统
CN115437691B (zh) 一种针对risc-v矢量与浮点寄存器的物理寄存器堆分配装置
CN115878351A (zh) 消息的传输方法及装置、存储介质及电子装置
CN112463218B (zh) 指令发射控制方法及电路、数据处理方法及电路
CN114911525A (zh) 二进制指令翻译执行方法及装置
US12073490B2 (en) Processing system that increases the capacity of a very fast memory
CN117725019B (zh) 用于gpu集合通信的方法和计算系统
CN118467453B (zh) 一种数据传输方法、装置、设备、介质及计算机程序产品
CN116804915B (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