CN115129480A - 标量处理单元的访问控制方法及标量处理单元 - Google Patents
标量处理单元的访问控制方法及标量处理单元 Download PDFInfo
- Publication number
- CN115129480A CN115129480A CN202211028891.2A CN202211028891A CN115129480A CN 115129480 A CN115129480 A CN 115129480A CN 202211028891 A CN202211028891 A CN 202211028891A CN 115129480 A CN115129480 A CN 115129480A
- Authority
- CN
- China
- Prior art keywords
- instruction
- scalar
- resource access
- access
- resource
- 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
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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
Abstract
本申请提供一种标量处理单元的访问控制方法及标量处理单元,该标量处理单元连接所述标量处理单元外部的资源访问请求方,该方法包括:接收所述资源访问请求方发送的资源访问指令;根据所述资源访问指令的访问对象,确定所述资源访问指令是否存在资源访问冲突;若所述资源访问指令存在资源访问冲突,根据所述资源访问指令的优先级,确定是否将所述资源访问指令加入缓冲队列;若所述资源访问指令被加入缓冲队列,当冲突解除时,并发执行所述缓冲队列中不存在资源访问冲突的资源访问指令。该方案可以快速缓解缓冲队列的指令积压,补偿因为资源访问冲突导致的性能损失,提高标量寄存器带宽利用率,缓解后续潜在的资源访问冲突。
Description
技术领域
本申请涉及处理器技术领域,特别涉及一种标量处理单元的访问控制方法及标量处理单元、资源访问系统。
背景技术
图形处理器(Graphics Processing Unit,GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上进行图像运算工作的微处理器。
目前GPU计算核心基于SIMD(Single Instruction Multiple Data,单指令多数据流)硬件架构,以充分提高数据运算的并行度。但是存在一些全局的数据类型,这类数据不属于某个线程,所以对于一个线程组,这类全局数据的运算只需要执行一次而不需要这个线程组内的每个线程都执行一次,这类运算统称标量指令运算并送至标量处理单元执行,运算的结果会以标量的形式存放在标量寄存器内。受限于标量寄存器的容量和带宽,标量寄存器资源的访问存在竞争,竞争会引起标量处理单元指令流水线的阻塞,从而降低标量处理单元性能。
发明内容
本申请实施例提供了标量处理单元的访问控制方法,用以解决标量寄存器资源的访问存在竞争,导致标量处理单元指令流水线阻塞,性能降低的问题。
本申请实施例提供了一种标量处理单元的访问控制方法,所述标量处理单元连接所述标量处理单元外部的资源访问请求方,所述方法包括:
接收所述资源访问请求方发送的资源访问指令;
根据所述资源访问指令的访问对象,确定所述资源访问指令是否存在资源访问冲突;
若所述资源访问指令存在资源访问冲突,根据所述资源访问指令的优先级,确定是否将所述资源访问指令加入缓冲队列;
若所述资源访问指令被加入缓冲队列,当冲突解除时,并发执行所述缓冲队列中不存在资源访问冲突的资源访问指令。
在一实施例中,所述若所述资源访问指令存在资源访问冲突,根据所述资源访问指令的优先级,确定是否将所述资源访问指令加入缓冲队列,包括:
若所述资源访问指令存在资源访问冲突,且所述资源访问指令的优先级低于所述访问对象待执行指令的优先级,将所述资源访问指令加入缓冲队列中。
在一实施例中,所述资源访问指令包括标量指令和访问请求;所述若所述资源访问指令存在资源访问冲突,且所述资源访问指令的优先级低于所述访问对象待执行指令的优先级,将所述资源访问指令加入缓冲队列中,包括:
若所述标量指令与所述访问请求之间存在资源访问冲突,比较所述标量指令与所述访问请求之间的优先级;
若所述标量指令的优先级比所述访问请求的优先级低,将所述标量指令加入缓冲队列;
若所述访问请求的优先级比所述标量指令的优先级低,将所述访问请求加入缓冲队列。
在一实施例中,所述标量处理单元包括依次连接的前置控制单元、标量寄存器组、后置控制单元和运算单元,所述资源访问指令包括标量指令,所述并发执行所述缓冲队列中不存在资源访问冲突的资源访问指令,包括:
所述前置控制单元根据所述缓冲队列中不存在资源访问冲突的标量指令,从所述标量寄存器组获取每条标量指令对应的源操作数;
所述后置控制单元将每条标量指令对应的源操作数暂存于内部的缓冲区,并根据运算单元的类型和运行状态,选取对应类型的标量指令发送到所述运算单元;
所述运算单元根据接收到的标量指令,对所述标量指令对应的源操作数进行运算。
在一实施例中,所述前置控制单元根据所述缓冲队列中不存在资源访问冲突的标量指令,从所述标量寄存器组获取每条标量指令对应的源操作数,包括:
所述前置控制单元按照选取不同指令类别的原则从所述缓冲队列中选取多条不存在资源访问冲突的标量指令;
将选取的多条标量指令并行发送到所述标量寄存器组中每条指令类别对应的标量寄存器,以从所述标量寄存器组获取每条标量指令对应的源操作数。
在一实施例中,所述运算单元有多个,所述根据运算单元的类型和运行状态,选取对应类型的标量指令发送到所述运算单元,包括:
根据每个运算单元的类型和运行状态,选取对应类型的标量指令发送到处于空闲状态的运算单元。
在一实施例中,所述资源访问请求方包括指令调度单元或标量访问客户端,所述资源访问指令包括所述指令调度单元发送的标量指令或所述标量访问客户端发送的访问请求;所述根据所述资源访问指令的访问对象,确定所述资源访问指令是否存在资源访问冲突,包括:
根据所述资源访问指令的访问对象,判断所述资源访问指令的访问对象是否有未执行完毕的指令;
若所述访问对象有未执行完毕的指令,确定所述资源访问指令存在资源访问冲突。
在一实施例中,所述资源访问请求方包括指令调度单元和标量访问客户端,所述资源访问指令包括所述指令调度单元发送的标量指令和所述标量访问客户端发送的访问请求;所述根据所述资源访问指令的访问对象,确定所述资源访问指令是否存在资源访问冲突,包括:
根据所述标量指令的第一访问对象和所述访问请求的第二访问对象,判断所述第一访问对象和所述第二访问对象是否相同;
若所述第一访问对象和所述第二访问对象相同,确定所述标量指令和所述访问请求之间存在资源访问冲突;
若所述第一访问对象和所述第二访问对象不相同,分别判断所述标量指令和所述访问请求各自是否存在资源访问冲突。
在一实施例中,所述分别判断所述标量指令和所述访问请求各自是否存在资源访问冲突,包括:
分别判断所述第一访问对象和第二访问对象是否有未执行完毕的指令;
若所述第一访问对象有未执行完毕的指令,确定所述标量指令存在资源访问冲突;
若所述第二访问对象有未执行完毕的指令,确定所述访问请求存在资源访问冲突。
本申请实施例还提供了一种标量处理单元,包括:
前置控制单元,用于连接所述标量处理单元外部的资源访问请求方,接收所述资源访问请求方发送的资源访问指令;根据所述资源访问指令的访问对象,确定所述资源访问指令是否存在资源访问冲突;若所述资源访问指令存在资源访问冲突,根据所述资源访问指令的优先级,确定是否将所述资源访问指令加入缓冲队列;若所述资源访问指令被加入缓冲队列,当冲突解除时,同时发送所述缓冲队列中不存在资源访问冲突的资源访问指令;
标量寄存器组,连接所述前置控制单元,用于接收所述资源访问指令,获取内部存储的所述资源访问指令对应的源操作数;
后置控制单元,连接所述标量寄存器,用于当所述资源访问指令包括标量指令时,将每条标量指令对应的源操作数暂存于内部的缓冲区,并根据运算单元的类型和运行状态,选取对应类型的标量指令发送到运算单元;
运算单元,连接所述后置控制单元,用于根据接收到的标量指令,对所述标量指令对应的源操作数进行运算。
本申请实施例还提供了一种资源访问系统,包括:
上述实施例所述的标量处理单元;所述资源访问指令包括标量指令和访问请求;
指令调度单元,连接所述标量处理单元,用于发送标量指令到所述标量处理单元;
标量访问客户端,连接所述标量处理单元,用于发送访问请求到所述标量处理单元。
本申请上述实施例提供的技术方案,当资源访问指令存在资源访问冲突时,根据资源访问指令的优先级,确定是否将资源访问指令加入缓冲队列,在冲突解除时,并发执行缓冲队列中不存在资源访问冲突的资源访问指令,从而快速缓解缓冲队列的指令积压,补偿因为资源访问冲突导致的指令流水线阻塞带来的性能损失,提高标量寄存器带宽利用率,快速缓解后续潜在的资源访问冲突。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的资源访问系统的架构示意图;
图2为本申请实施例提供的一种标量处理单元的访问控制方法的流程示意图;
图3是图2对应实施例中步骤220的细节流程图;
图4是图2对应实施例中步骤240的细节流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
图1为本申请实施例提供的资源访问系统的架构示意图。资源访问系统包括标量处理单元110、指令调度单元120和标量访问客户端130。标量处理单元110连接指令调度单元120和标量访问客户端130。上述资源访问系统位于GPU内部。
标量访问客户端130有一个或多个,标量访问客户端130是指GPU内部需要访问标量寄存器组112的模块。标量访问客户端130可以向标量处理单元110发送访问请求。标量处理单元110根据标量访问客户端130的优先级,按序处理标量访问客户端130发送的访问请求。标量访问客户端130的优先级可以固定也可以动态配置。标量处理单元110根据访问请求,获取到相应的数据后,将数据返回标量访问客户端130。
指令调度单元120可以接收资源访问系统外部发送的指令,根据指令的译码信息确定指令类型。指令类型可能是标量指令或矢量指令。矢量指令的基本操作对象是向量,即有序排列的一组数。而标量指令的操作对象是单个数。指令调度单元120可以将标量指令发送到标量处理单元110。标量处理单元110可以在标量指令没有资源访问冲突时,从内部的标量寄存器获取标量指令对应的源操作数,并对源操作数进行缓存,由内部与标量指令对应的运算单元对源操作数进行运算。
如图1所示,标量处理单元110包括前置控制单元111、标量寄存器组112、后置控制单元113以及运算单元114。
前置控制单元111,用于连接标量处理单元110外部的资源访问请求方。资源访问请求方可以包括指令调度单元120和/或标量访问客户端130。前置控制单元111用于接收资源访问请求方发送的资源访问指令;资源访问指令可以包括指令调度单元120发送的标量指令和/或标量访问客户端130发送的访问请求。
前置控制单元111根据资源访问指令的访问对象,确定资源访问指令是否存在资源访问冲突;若资源访问指令存在资源访问冲突,根据资源访问指令的优先级,确定是否将资源访问指令加入缓冲队列,其中,资源访问指令的优先级与资源访问请求方的优先级相关。举例来说,标量访问客户端130的优先级高于指令调度单元120的优先级,则访问请求的优先级高于标量指令的优先级。某个标量访问客户端X的优先级高于其他标量访问客户端130的优先级,则该标量访问客户端X的访问请求的优先级高于其他标量访问客户端130的访问请求的优先级。若资源访问指令被加入缓冲队列,当冲突解除时,同时发送缓冲队列中不存在资源访问冲突的资源访问指令到标量寄存器组112。前置控制单元111的执行过程详见下文方法实施例详细展开,在此不再赘述。前置控制单元111在冲突解除时,同时发射多条不存在冲突的指令,可以补偿因为资源访问冲突导致的指令流水线阻塞带来的性能损失,提高标量寄存器带宽利用率,也能有效的缓解或者消除后续潜在的标量访问客户端130和指令调度单元120的资源访问冲突。资源访问指令在进行冲突检查前,先进行了译码,所有资源访问指令可以共享前置控制单元111的译码功能,节省了硬件开销,降低了功耗。
标量寄存器组112连接前置控制单元111,标量寄存器组112包括多个标量寄存器,用于接收资源访问指令,获取内部存储的资源访问指令对应的源操作数。举例来说,可以根据资源访问指令包含的地址信息,获取该地址信息对应存储的源操作数。当资源访问指令包括标量访问客户端130发送的访问请求时,前置控制单元111将获取的源操作数返回标量访问客户端130。
后置控制单元113连接标量寄存器组和运算单元114,用于当资源访问指令包括标量指令时,将每条标量指令对应的源操作数暂存于内部的缓冲区,并根据运算单元114的类型和运行状态,选取对应类型的标量指令发送到运算单元114。运算单元114的类型可以有逻辑运算类、乘法运算类、分支控制类以及访问内存类。运行状态可以有忙碌状态和空闲状态。每种类型的运算单元114可以有多个(图1中仅画了一个用作示意)。故可以将与运算单元114的类型一样的标量指令发送到空闲状态的运算单元114。多条标量指令可以共享后置控制单元113的缓冲区,节省了硬件开销,降低了功耗。
运算单元114用于根据接收到的标量指令,对标量指令对应的源操作数进行运算。该方案没有增加运算单元114的运算资源开销,通过增加少量共享的缓冲区和控制逻辑,可以实现多条标量指令并发执行,有效缓解因为前置资源访问冲突导致的标量指令流水的阻塞和标量指令的积压。一旦指令流水阻塞解除,就可以最高并发度执行缓存的标量指令,最大限度利用标量寄存器带宽,清空积压的标量指令的缓冲队列,以补偿之前损失的流水阻塞的时钟周期。
图2是本申请实施例提供的一种标量处理单元的访问控制方法的流程示意图。该方法可以由标量处理单元110执行。该标量处理单元110连接标量处理单元110外部的资源访问请求方,如图2所示,该方法包括以下步骤S210-步骤S240。
步骤S210:接收资源访问请求方发送的资源访问指令。
资源访问请求方是指资源访问指令的发送方,资源访问请求方可能是指令调度单元120,也可能是标量访问客户端130,也可能两者都有。故资源访问指令可能是指令调度单元120发送的标量指令,也可能是标量访问客户端130发送的访问请求,也可能既包括标量指令还包括访问请求。具体的,可以由标量处理单元110的前置控制单元111接收资源访问请求方发送的资源访问指令。
在一实施例中,资源访问请求方包括指令调度单元120和标量访问客户端130,故资源访问指令可以包括标量指令和访问请求。上述步骤S210具体包括:接收指令调度单元120发送的标量指令以及接收标量访问客户端130发送的访问请求。
步骤S220:根据资源访问指令的访问对象,确定资源访问指令是否存在资源访问冲突。
访问对象是指资源访问指令具体访问的标量寄存器。资源访问冲突是指资源访问指令的访问对象有未执行完毕的指令(包括待执行以及正在执行的指令),从而资源访问指令无法立即执行。举例来说,如果标量访问客户端130组的访问请求全占标量寄存器组112的访问带宽,则指令调度单元120的标量指令就会发生阻塞,此时,可以认为标量指令存在资源访问冲突。举例来说,如果标量指令和访问请求同一时间访问相同的访问对象,那么对于标量指令来说,访问对象存在未执行完毕的访问请求,对于访问请求来说,访问对象存在未执行完毕的标量指令,则标量指令和访问请求之间存在资源访问冲突。
标量处理单元110的前置控制单元111接收到资源访问指令(可能是标量指令或访问请求)后,经过译码,从资源访问指令中解析得到访问对象,进而进行资源检查确定是否存在资源访问冲突。资源检查的过程如下:可以根据资源访问指令的访问对象,判断资源访问指令的访问对象是否有未执行完毕的指令;若访问对象有未执行完毕的指令,确定资源访问指令存在资源访问冲突。
其中,未执行完毕的指令包括正在执行的指令和待执行的指令。待执行的指令可以暂存在缓冲队列中。未执行完毕的指令可能包括访问请求,也可能包括标量指令。如果访问对象有正在执行的指令以及缓冲队列中待执行的指令,则认为资源访问指令存在资源访问冲突。相反的,则认为不存在资源访问冲突,可以立即执行。
步骤S230:若资源访问指令存在资源访问冲突,根据资源访问指令的优先级,确定是否将资源访问指令加入缓冲队列。
多个标量访问客户端130由于配置了优先级,故响应不同标量访问客户端130发送的访问请求存在先后顺序。标量指令和访问请求的执行先后顺序(即优先级)也可以提前进行配置。在一实施例中,优先级可以固定也可以动态配置,也就是说,优先级可以始终固定不变,也可以随着时间变化或者用户指令重新配置。优先级高的资源访问指令优先执行,故优先级低的资源访问指令可以暂时加入缓冲队列,等待执行。
在一实施例中,若资源访问指令存在资源访问冲突,且资源访问指令的优先级低于访问对象待执行指令的优先级,将资源访问指令加入缓冲队列中。
前置控制单元111可以比较资源访问指令与访问对象待执行指令之间的优先级,如果资源访问指令的优先级不是最高的,则将资源访问指令加入缓冲队列中。相反的,如果资源访问指令的优先级最高,且访问对象没有正在执行的指令,则可以立即执行该资源访问指令。如果访问对象有正在执行的指令,则可以暂时将资源访问指令加入缓冲队列。
步骤S240:若资源访问指令被加入缓冲队列,当冲突解除时,并发执行缓冲队列中不存在资源访问冲突的资源访问指令。
当访问对象处于空闲状态时,可以认为冲突解除。举例来说,如果因为标量访问客户端130的访问请求全占标量寄存器组112的访问带宽,导致出现资源访问冲突。可以在标量访问客户端130释放部分标量寄存器访问带宽时,并发执行缓冲队列中不存在资源访问冲突的资源访问指令。
并发执行是指从所缓冲队列中选取不存在资源访问冲突的资源访问指令进行并行处理。从而补偿因为资源访问冲突导致的指令流水线阻塞带来的性能损失,提高标量寄存器带宽利用率,也能有效的缓解或者消除后续潜在的标量访问客户端130组和标量指令流水的资源访问冲突。
在一实施例中,可以从缓冲队列中根据调度策略挑选一条或多条没有资源访问冲突的资源访问指令发送到标量寄存器组112。调度策略可以是按照先进先出原则,从缓冲队列中按序挑选一条或多条没有资源访问冲突的资源访问指令;也可以是随机选取;还可以是按照选取不同指令类别的原则从所述缓冲队列中选取多条不存在资源访问冲突的标量指令,从而可以并行处理不同类型的指令。
本申请上述实施例提供的技术方案,当资源访问指令存在资源访问冲突时,根据资源访问指令的优先级,确定是否将资源访问指令加入缓冲队列,在冲突解除时,并发执行缓冲队列中不存在资源访问冲突的资源访问指令,从而快速缓解缓冲队列的指令积压,补偿因为资源访问冲突导致的指令流水线阻塞带来的性能损失,提高标量寄存器带宽利用率,快速缓解后续潜在的资源访问冲突。
在一实施例中,当资源访问指令包括标量指令和访问请求时;如图3所示,上述步骤S220具体包括:
步骤S221:根据标量指令的第一访问对象和访问请求的第二访问对象,判断第一访问对象和第二访问对象是否相同。
第一访问对象是指指令调度单元120发送的标量指令的访问对象,第二访问对象是指标量访问客户端130发送的访问请求的访问对象。为进行区分,分别称为第一访问对象和第二访问对象。
步骤S222:若第一访问对象和第二访问对象相同,确定标量指令和访问请求之间存在资源访问冲突。
在一实施例中,若标量指令与访问请求之间存在资源访问冲突,可以比较标量指令与访问请求之间的优先级,将优先级更低的标量指令或访问请求加入缓冲队列。
如果标量指令的优先级更低,则可以将标量指令加入标量指令对应的缓冲队列,并在冲突解除时,并发执行缓冲队列中不存在资源访问冲突的标量指令。如果访问对象没有未执行完毕的指令,则可以立即执行访问请求。如果访问对象有未执行完毕的指令,则可以暂时将访问请求加入访问请求对应的缓冲队列,并在冲突解除时,并发执行缓冲队列中不存在资源访问冲突的访问请求。
同理,如果访问请求的优先级更低,则可以将访问请求加入访问请求对应的缓冲队列。如果访问对象没有未执行完毕的指令,则可以立即执行标量指令。标量指令和访问请求的优先级的相对高低可以是固定的,也可以动态配置。
步骤S222’:若第一访问对象和第二访问对象不相同,分别判断标量指令和访问请求各自是否存在资源访问冲突。
在一实施例中,可以分别判断第一访问对象和第二访问对象是否有未执行完毕的指令;若第一访问对象有未执行完毕的指令,确定标量指令存在资源访问冲突;若第二访问对象有未执行完毕的指令,确定访问请求存在资源访问冲突。
未执行完毕的指令包括正在执行的指令和待执行的指令。未执行完毕的指令可能包括之前接收的访问请求,还可能包括之前接收的标量指令。如果标量指令的访问对象(即第一访问对象)有正在执行的指令或待执行的指令,则标量指令存在资源访问冲突。相反的,则标量指令不存在资源访问冲突,前置控制单元111可以立即将该标量指令发送到标量寄存器组112。如果访问请求的访问对象(即第二访问对象)有正在执行的指令或待执行的指令,则访问请求存在资源访问冲突。相反的,则访问请求不存在资源访问冲突,前置控制单元111可以立即将该访问请求发送到标量寄存器组112。
在其他实施例中,为了判断标量指令和访问请求各自是否存在资源访问冲突,还可以通过判断第一访问对象的访问带宽是否全部被占用,如果是,则标量指令存在资源访问冲突,相反的,则认为不存在冲突。同理,判断第二访问对象的访问带宽是否全部被占用,如果是,则访问请求存在资源访问冲突,相反的,则认为不存在冲突。
需要说明的是,对于访问请求,前置控制单元111可以获取到访问请求对应的数据,并将该数据返回发送访问请求的标量访问客户端130。对于标量指令,则需要标量处理单元110内部的运算单元114对标量指令对应的源操作数进行运算,运算结果可以重新存储在标量寄存器中。
在一实施例中,参见图1对应实施例,标量处理单元110包括依次连接的前置控制单元111、标量寄存器组112、后置控制单元113和运算单元114,当资源访问指令包括标量指令时,如图4所示,上述步骤S240并发执行缓冲队列中不存在资源访问冲突的资源访问指令,具体包括以下步骤:
步骤S241:前置控制单元111根据缓冲队列中不存在资源访问冲突的标量指令,从标量寄存器组112获取每条标量指令对应的源操作数。
具体的,前置控制单元111可以将缓冲队列中不存在资源访问冲突的标量指令并行发送到标量寄存器组112。每条已发送的标量指令经过一个或者多个时钟周期,获得每条标量指令对应的全部源操作数。源操作数是指根据标量指令获取的指定地址的数据。
在一实施例中,前置控制单元可以按照选取不同指令类别的原则从所述缓冲队列中选取多条不存在资源访问冲突的标量指令;将选取的多条标量指令并行发送到标量寄存器组中每条指令类别对应的标量寄存器,以标量寄存器组获取每条标量指令对应的源操作数。
举例来说,可以按照标量指令的功能(例如逻辑运算指令、控制指令),对标量指令进行分类,标量寄存器组中的多个标量寄存器也可进行分组,划分在同一组的标量寄存器用于处理同一类别的标量指令,为提高访问效率,可以选取不同类别的不存在资源访问冲突的标量指令,并行发送到不同组的标量寄存器。在其他实施例,也可以按照先进先出原则,按序选取不存在资源访问冲突的标量指令;或者,随机选取不存在资源访问冲突的标量指令。
步骤S242:后置控制单元113将每条标量指令对应的源操作数暂存于内部的缓冲区,并根据运算单元114的类型和运行状态,选取对应类型的标量指令发送到运算单元114。
后置控制单元113内置共享的缓冲区,缓冲区被所有类型的标量指令共享,所有已发送指令获取的源操作数暂存于该缓冲区内部,如果某条标量指令已获取所有源操作数存储于该缓冲区内,则该标量指令进入待执行状态。后置控制单元113可以控制处于待执行状态的不同类型的标量指令并发执行。
具体的,可以将根据运算单元114的类型和运行状态,选择对应类型的待执行的标量指令,发送至运算单元114。运算单元114的类型有逻辑运算类、乘法运算类、分支控制类、访问内存类,运行状态有忙碌状态和空闲状态,故可以将待执行的逻辑运算类的标量指令发送到逻辑运算类的空闲的运算单元114,可以将待执行的乘法运算类的标量指令发送到乘法运算类的空闲的运算单元114,以此类推。
步骤S243:运算单元114根据接收到的标量指令,对标量指令对应的源操作数进行运算。
不同类型的运算单元114接收到相应类型的标量指令后,可以对标量指令对应的源操作数据进行运算,之后可以将运算结果返回标量寄存器。从而不同类型的标量指令可以并发执行,缓解指令的积压,提高处理性能。
本申请上述实施例提供的技术方案,共享前置控制单元111的译码和资源检查功能,共享后置控制单元113的缓冲区,节省了硬件成本,通过用一种低成本的方式,提高了标量处理单元110指令执行的并发度,补偿因为资源访问冲突而引起的指令流水的阻塞而引入的性能损失,同时有效缓解后续潜在的资源访问冲突。
如果出现标量寄存器资源访问冲突而阻塞指令流水,被阻塞的标量指令可以进入前置控制单元111的缓冲队列中,当阻塞解除时,标量处理单元110以最高并发度执行多条没有标量寄存器资源访问冲突的指令,最大化利用标量寄存器的访问带宽,提高单周期执行指令数,补偿之前因为标量寄存器访问冲突而引起的流水线阻塞带来的性能丢失,快速的缓解缓冲队列的指令积压,缓解后续潜在的资源访问冲突。
在本申请所提供的几个实施例中,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (10)
1.一种标量处理单元的访问控制方法,其特征在于,所述方法包括:
接收资源访问请求方发送的资源访问指令;
根据所述资源访问指令的访问对象,确定所述资源访问指令是否存在资源访问冲突;
若所述资源访问指令存在资源访问冲突,根据所述资源访问指令的优先级,确定是否将所述资源访问指令加入缓冲队列;
若所述资源访问指令被加入缓冲队列,当冲突解除时,并发执行所述缓冲队列中不存在资源访问冲突的资源访问指令;
所述标量处理单元包括依次连接的前置控制单元、标量寄存器组、后置控制单元和运算单元,所述资源访问指令包括标量指令,所述并发执行所述缓冲队列中不存在资源访问冲突的资源访问指令,包括:
所述前置控制单元根据所述缓冲队列中不存在资源访问冲突的标量指令,从所述标量寄存器组获取每条标量指令对应的源操作数;
所述后置控制单元将每条标量指令对应的源操作数暂存于内部的缓冲区,并根据运算单元的类型和运行状态,选取对应类型的标量指令发送到所述运算单元;
所述运算单元根据接收到的标量指令,对所述标量指令对应的源操作数进行运算。
2.根据权利要求1所述的方法,其特征在于,所述若所述资源访问指令存在资源访问冲突,根据所述资源访问指令的优先级,确定是否将所述资源访问指令加入缓冲队列,包括:
若所述资源访问指令存在资源访问冲突,且所述资源访问指令的优先级低于所述访问对象待执行指令的优先级,将所述资源访问指令加入缓冲队列中。
3.根据权利要求2所述的方法,其特征在于,所述资源访问指令包括标量指令和访问请求;所述若所述资源访问指令存在资源访问冲突,且所述资源访问指令的优先级低于所述访问对象待执行指令的优先级,将所述资源访问指令加入缓冲队列中,包括:
若所述标量指令与所述访问请求之间存在资源访问冲突,比较所述标量指令与所述访问请求之间的优先级;
若所述标量指令的优先级比所述访问请求的优先级低,将所述标量指令加入缓冲队列;
若所述访问请求的优先级比所述标量指令的优先级低,将所述访问请求加入缓冲队列。
4.根据权利要求1所述的方法,其特征在于,所述前置控制单元根据所述缓冲队列中不存在资源访问冲突的标量指令,从所述标量寄存器组获取每条标量指令对应的源操作数,包括:
所述前置控制单元按照选取不同指令类别的原则从所述缓冲队列中选取多条不存在资源访问冲突的标量指令;
将选取的多条标量指令并行发送到所述标量寄存器组中每条指令类别对应的标量寄存器,以从所述标量寄存器组获取每条标量指令对应的源操作数。
5.根据权利要求1所述的方法,其特征在于,所述运算单元有多个,所述根据运算单元的类型和运行状态,选取对应类型的标量指令发送到所述运算单元,包括:
根据每个运算单元的类型和运行状态,选取对应类型的标量指令发送到处于空闲状态的运算单元。
6.根据权利要求1所述的方法,其特征在于,所述资源访问请求方包括指令调度单元或标量访问客户端,所述资源访问指令包括所述指令调度单元发送的标量指令或所述标量访问客户端发送的访问请求;所述根据所述资源访问指令的访问对象,确定所述资源访问指令是否存在资源访问冲突,包括:
根据所述资源访问指令的访问对象,判断所述资源访问指令的访问对象是否有未执行完毕的指令;
若所述访问对象有未执行完毕的指令,确定所述资源访问指令存在资源访问冲突。
7.根据权利要求1所述的方法,其特征在于,所述资源访问请求方包括指令调度单元和标量访问客户端,所述资源访问指令包括所述指令调度单元发送的标量指令和所述标量访问客户端发送的访问请求;所述根据所述资源访问指令的访问对象,确定所述资源访问指令是否存在资源访问冲突,包括:
根据所述标量指令的第一访问对象和所述访问请求的第二访问对象,判断所述第一访问对象和所述第二访问对象是否相同;
若所述第一访问对象和所述第二访问对象相同,确定所述标量指令和所述访问请求之间存在资源访问冲突;
若所述第一访问对象和所述第二访问对象不相同,分别判断所述标量指令和所述访问请求各自是否存在资源访问冲突。
8.根据权利要求7所述的方法,其特征在于,所述分别判断所述标量指令和所述访问请求各自是否存在资源访问冲突,包括:
分别判断所述第一访问对象和第二访问对象是否有未执行完毕的指令;
若所述第一访问对象有未执行完毕的指令,确定所述标量指令存在资源访问冲突;
若所述第二访问对象有未执行完毕的指令,确定所述访问请求存在资源访问冲突。
9.一种标量处理单元,其特征在于,包括:
前置控制单元,用于连接所述标量处理单元外部的资源访问请求方,接收所述资源访问请求方发送的资源访问指令;根据所述资源访问指令的访问对象,确定所述资源访问指令是否存在资源访问冲突;若所述资源访问指令存在资源访问冲突,根据所述资源访问指令的优先级,确定是否将所述资源访问指令加入缓冲队列;若所述资源访问指令被加入缓冲队列,当冲突解除时,同时发送所述缓冲队列中不存在资源访问冲突的资源访问指令;
标量寄存器组,连接所述前置控制单元,用于接收所述资源访问指令,获取内部存储的所述资源访问指令对应的源操作数;
后置控制单元,连接所述标量寄存器,用于当所述资源访问指令包括标量指令时,将每条标量指令对应的源操作数暂存于内部的缓冲区,并根据运算单元的类型和运行状态,选取对应类型的标量指令发送到运算单元;
运算单元,连接所述后置控制单元,用于根据接收到的标量指令,对所述标量指令对应的源操作数进行运算。
10.一种资源访问系统,其特征在于,包括:
权利要求9所述的标量处理单元;所述资源访问指令包括标量指令和访问请求;
指令调度单元,连接所述标量处理单元,用于发送标量指令到所述标量处理单元;
标量访问客户端,连接所述标量处理单元,用于发送访问请求到所述标量处理单元。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211028891.2A CN115129480B (zh) | 2022-08-26 | 2022-08-26 | 标量处理单元的访问控制方法及标量处理单元 |
PCT/CN2022/130376 WO2024040750A1 (zh) | 2022-08-26 | 2022-11-07 | 标量处理单元的访问控制方法及标量处理单元 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211028891.2A CN115129480B (zh) | 2022-08-26 | 2022-08-26 | 标量处理单元的访问控制方法及标量处理单元 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115129480A true CN115129480A (zh) | 2022-09-30 |
CN115129480B CN115129480B (zh) | 2022-11-08 |
Family
ID=83387658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211028891.2A Active CN115129480B (zh) | 2022-08-26 | 2022-08-26 | 标量处理单元的访问控制方法及标量处理单元 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115129480B (zh) |
WO (1) | WO2024040750A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024040750A1 (zh) * | 2022-08-26 | 2024-02-29 | 上海登临科技有限公司 | 标量处理单元的访问控制方法及标量处理单元 |
CN117742794A (zh) * | 2023-12-05 | 2024-03-22 | 摩尔线程智能科技(北京)有限责任公司 | 数据处理系统、方法、装置及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5574924A (en) * | 1992-11-30 | 1996-11-12 | Fujitsu Limited | Vector processing device that utilizes post marks to ensure serialization of access requests of vector store instructions |
US7437521B1 (en) * | 2003-08-18 | 2008-10-14 | Cray Inc. | Multistream processing memory-and barrier-synchronization method and apparatus |
CN102156637A (zh) * | 2011-05-04 | 2011-08-17 | 中国人民解放军国防科学技术大学 | 向量交叉多线程处理方法及向量交叉多线程微处理器 |
US20160054932A1 (en) * | 2014-08-21 | 2016-02-25 | Wisconsin Alumni Research Foundation | Memory Controller for Heterogeneous Computer |
US20160291980A1 (en) * | 2015-04-01 | 2016-10-06 | Huawei Technologies Co., Ltd. | Method and apparatus for a superscalar processor |
CN109062604A (zh) * | 2018-06-26 | 2018-12-21 | 天津飞腾信息技术有限公司 | 一种面向标量和向量指令混合执行的发射方法及装置 |
CN111459543A (zh) * | 2019-01-21 | 2020-07-28 | 上海登临科技有限公司 | 一种管理寄存器文件单元的方法 |
CN112925567A (zh) * | 2019-12-06 | 2021-06-08 | 中科寒武纪科技股份有限公司 | 分配寄存器的方法和装置及编译方法和装置及电子设备 |
CN113934455A (zh) * | 2020-06-29 | 2022-01-14 | 华为技术有限公司 | 指令转换方法及装置 |
US20220206862A1 (en) * | 2020-12-25 | 2022-06-30 | Intel Corporation | Autonomous and extensible resource control based on software priority hint |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101005486B (zh) * | 2006-12-28 | 2011-07-27 | 金蝶软件(中国)有限公司 | 一种资源访问控制方法及系统 |
US9471501B2 (en) * | 2014-09-26 | 2016-10-18 | Intel Corporation | Hardware apparatuses and methods to control access to a multiple bank data cache |
CN105426160B (zh) * | 2015-11-10 | 2018-02-23 | 北京时代民芯科技有限公司 | 基于sprac v8指令集的指令分类多发射方法 |
CN105471881A (zh) * | 2015-12-07 | 2016-04-06 | 北京奇虎科技有限公司 | 对请求进行加解锁方法、装置及系统 |
CN115129480B (zh) * | 2022-08-26 | 2022-11-08 | 上海登临科技有限公司 | 标量处理单元的访问控制方法及标量处理单元 |
-
2022
- 2022-08-26 CN CN202211028891.2A patent/CN115129480B/zh active Active
- 2022-11-07 WO PCT/CN2022/130376 patent/WO2024040750A1/zh unknown
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5574924A (en) * | 1992-11-30 | 1996-11-12 | Fujitsu Limited | Vector processing device that utilizes post marks to ensure serialization of access requests of vector store instructions |
US7437521B1 (en) * | 2003-08-18 | 2008-10-14 | Cray Inc. | Multistream processing memory-and barrier-synchronization method and apparatus |
CN102156637A (zh) * | 2011-05-04 | 2011-08-17 | 中国人民解放军国防科学技术大学 | 向量交叉多线程处理方法及向量交叉多线程微处理器 |
US20160054932A1 (en) * | 2014-08-21 | 2016-02-25 | Wisconsin Alumni Research Foundation | Memory Controller for Heterogeneous Computer |
US20160291980A1 (en) * | 2015-04-01 | 2016-10-06 | Huawei Technologies Co., Ltd. | Method and apparatus for a superscalar processor |
CN109062604A (zh) * | 2018-06-26 | 2018-12-21 | 天津飞腾信息技术有限公司 | 一种面向标量和向量指令混合执行的发射方法及装置 |
CN111459543A (zh) * | 2019-01-21 | 2020-07-28 | 上海登临科技有限公司 | 一种管理寄存器文件单元的方法 |
CN112925567A (zh) * | 2019-12-06 | 2021-06-08 | 中科寒武纪科技股份有限公司 | 分配寄存器的方法和装置及编译方法和装置及电子设备 |
CN113934455A (zh) * | 2020-06-29 | 2022-01-14 | 华为技术有限公司 | 指令转换方法及装置 |
US20220206862A1 (en) * | 2020-12-25 | 2022-06-30 | Intel Corporation | Autonomous and extensible resource control based on software priority hint |
CN114691316A (zh) * | 2020-12-25 | 2022-07-01 | 英特尔公司 | 基于软件优先级提示的自主且可扩展的资源控制 |
Non-Patent Citations (1)
Title |
---|
王国澎等: "负载均衡的处理器运算资源分配方法", 《计算机科学》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024040750A1 (zh) * | 2022-08-26 | 2024-02-29 | 上海登临科技有限公司 | 标量处理单元的访问控制方法及标量处理单元 |
CN117742794A (zh) * | 2023-12-05 | 2024-03-22 | 摩尔线程智能科技(北京)有限责任公司 | 数据处理系统、方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2024040750A1 (zh) | 2024-02-29 |
CN115129480B (zh) | 2022-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115129480B (zh) | 标量处理单元的访问控制方法及标量处理单元 | |
US6587906B2 (en) | Parallel multi-threaded processing | |
US7418576B1 (en) | Prioritized issuing of operation dedicated execution unit tagged instructions from multiple different type threads performing different set of operations | |
US7526634B1 (en) | Counter-based delay of dependent thread group execution | |
US10002031B2 (en) | Low overhead thread synchronization using hardware-accelerated bounded circular queues | |
US6732242B2 (en) | External bus transaction scheduling system | |
US8963933B2 (en) | Method for urgency-based preemption of a process | |
US20090125907A1 (en) | System and method for thread handling in multithreaded parallel computing of nested threads | |
JPH1196124A (ja) | 並列プロセッサシステム | |
CN110308982B (zh) | 一种共享内存复用方法及装置 | |
CN114153500A (zh) | 指令调度方法、指令调度装置、处理器及存储介质 | |
CN114546277A (zh) | 用于存取数据的装置、方法、处理装置及计算机系统 | |
CN114546914B (zh) | 用于对多个通道信息执行数据处理的处理装置及系统 | |
CN113900712B (zh) | 指令处理方法、指令处理装置及存储介质 | |
US10152329B2 (en) | Pre-scheduled replays of divergent operations | |
CN114564234A (zh) | 用于对多个通道执行数据处理的处理装置、方法及系统 | |
CN103197917A (zh) | 计算线程阵列粒度执行抢占 | |
CN112559403B (zh) | 一种处理器及其中的中断控制器 | |
CN115391053B (zh) | 基于cpu和gpu混合计算的在线服务方法及装置 | |
JP7346649B2 (ja) | 同期制御システムおよび同期制御方法 | |
CN110955461A (zh) | 计算任务的处理方法、装置、系统、服务器和存储介质 | |
EP1233340A2 (en) | Context preservation | |
CN113703841B (zh) | 一种寄存器数据读取的优化方法、装置及介质 | |
US20240233066A1 (en) | Kernel optimization and delayed execution | |
CN117369871A (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 |