CN116957902A - 用于GPU的NoC仲裁方法 - Google Patents
用于GPU的NoC仲裁方法 Download PDFInfo
- Publication number
- CN116957902A CN116957902A CN202310848547.6A CN202310848547A CN116957902A CN 116957902 A CN116957902 A CN 116957902A CN 202310848547 A CN202310848547 A CN 202310848547A CN 116957902 A CN116957902 A CN 116957902A
- Authority
- CN
- China
- Prior art keywords
- access request
- gpu
- barrier
- requests
- memory
- 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
- 238000000034 method Methods 0.000 title claims abstract description 28
- 230000004888 barrier function Effects 0.000 claims abstract description 48
- 230000004044 response Effects 0.000 claims abstract description 4
- 230000009471 action Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种用于GPU的NoC仲裁方法,用于GPU,包括:响应于程序的执行,在流处理器发送到片上互连网络的访存请求中编码当前流处理器中到达barrier的线程束数目;根据访存请求对应的输出端口,将片上互连网络接收的访存请求划分为多组以使每组中的访存请求对应的输出端口相同;针对每一组访存请求,对一组访存请求中的所有访存请求进行轮询仲裁,选择出优先级最高的访存请求发送至对应的输出端口,其中,访存请求中编码的到达barrier的线程束数目越大,访存请求的优先级越高。本发明的用于GPU的NoC仲裁方法能够保证需要快速达到barrier的线程束发出的访存请求得到及时的响应,使得线程束快速通过barrier,加快线程束的执行速度,提高GPU的性能。
Description
技术领域
本发明涉及GPU技术领域,尤其涉及一种用于GPU的NoC仲裁方法及GPU。
背景技术
图形处理器(Graphics Processing Unit,GPU)是一种用于做图像和图形相关运算工作的微处理器,GPU因其强大的计算能力在云计算平台和数据中心被广泛应用,为用户提供所需要的计算。为了提高并行计算能力,现有的GPU程序采取层次化的编程方式。具体地,GPU程序由大量独立的、且可以同时执行的线程块(Thread Block,TB)构成,每个线程块又包含了大量的线程。在程序执行过程中,线程块被分配到流处理器(StreamingMultiprocessor,SM)上执行,每个线程块将内部的线程以32个线程为粒度划分为了多个线程束(warp)。为了达到同步工作的目的,每个线程块中的线程束使用barrier指令进行同步,当一个线程束到达barrier时,该线程束会处于等待状态,只有当前线程块中的其余线程束均到达barrier,所有线程束才会同时继续向前执行。
参见图1,附图1为示例提供的一种GPU的片上网络互连结构示意图,在GPU中,流处理器通过片上互连网络(Network on Chip,NoC)连接到末端缓存(last-level cache,LLC)和存储控制器。当线程束在流处理器上执行时,发出的访存请求首先会被发送到片上互连网络,然后交叉开关路由器根据访存请求的目的地址选择合适的输出端口。对于一个访存请求而言,在确定了输出端口之后,虚拟通道分配器(Virtual Channel Allocator,VA)和交叉开关分配器(Switch Allocator,SA)负责为该访存请求分配相应输出端口的资源。当资源分配成功之后,该访存请求经过交叉开关被发送到相应的输出端口,进而去访问对应的LLC和存储控制器。
交叉开关路由器针对不同访存请求所访问的内存地址为访存请求选择相应的输出端口并将访存请求发送至该输出端口,但如果多个访存请求在同一个时钟周期需要被发送至同一输出端口,则会发生路由冲突。针对上述情况,交叉开关路由器中的虚拟通道分配器和交叉开关分配器采用基于轮询的仲裁算法(round-robin算法)从多个访存请求中选择一个访存请求,将该访存请求发送至该输出端口,并在下一个时钟周期从剩余的访存请求中选择另一个可以被路由的访存请求发送至该输出端口。
然而,当来自不同输入端口的访存请求需要被发送至同一输出端口时发生冲突时,现有的交叉开关路由器采用的基于轮询的仲裁算法没有考虑到不同访存请求的优先级,没有考虑到barrier的特性、以及使用barrier带来的性能影响,导致需要快速达到barrier的线程束发出的访存请求无法得到及时的响应,进而使得大量线程束处于barrier等待状态,极大影响了GPU的性能。
发明内容
为解决上述现有技术中存在的部分或全部技术问题,本发明提供一种用于GPU的NoC仲裁方法及GPU。
本发明的技术方案如下:
第一方面,提供了一种用于GPU的NoC仲裁方法,所述方法用于GPU,包括:
响应于程序的执行,在流处理器发送到片上互连网络的访存请求中编码当前流处理器中到达barrier的线程束数目;
根据访存请求对应的输出端口,将片上互连网络接收的访存请求划分为多组以使每组中的访存请求对应的输出端口相同;
针对每一组访存请求,对一组访存请求中的所有访存请求进行轮询仲裁,选择出优先级最高的访存请求发送至对应的输出端口,其中,访存请求中编码的到达barrier的线程束数目越大,访存请求的优先级越高。
在一些可能的实现方式中,在流处理器中设置barrier计数器,利用所述barrier计数器记录当前流处理器中到达barrier的线程束数目。
在一些可能的实现方式中,所述barrier计数器为寄存器。
在一些可能的实现方式中,以并行方式分别对每一组访存请求中的所有访存请求进行轮询仲裁。
在一些可能的实现方式中,对一组访存请求中的所有访存请求进行轮询仲裁,选择出优先级最高的访存请求发送至对应的输出端口,包括:
从所有访存请求中选取一个访存请求作为当前优先级最高的访存请求;
判断是否已经完成对所有访存请求的轮询仲裁,若是,则将当前优先级最高的访存请求发送至对应的输出端口,若否,则进行下一步;
以轮询方式从剩余访存请求中选择一个访存请求,并与当前优先级最高的访存请求进行优先级比较,判断选择的访存请求的优先级是否高于当前优先级最高的访存请求,若是,则将选择的访存请求作为当前优先级最高的访存请求,并返回上一步,若否,则返回上一步。
第二方面,还提供了一种GPU,所述GPU使用上述的NoC仲裁方法进行片上互连网络中访存请求的输出分配。
在一些可能的实现方式中,所述GPU的流处理器中设置有barrier计数器,所述barrier计数器用于记录当前流处理器中到达barrier的线程束数目
本发明技术方案的主要优点如下:
本发明的用于GPU的NoC仲裁方法及GPU通过在流处理器发送到片上互连网络的访存请求中编码当前流处理器中到达barrier的线程束数目,并使片上互连网络将编码有较大线程束数目的访存请求优先输出,能够保证需要快速达到barrier的线程束发出的访存请求得到及时的响应,使得线程束快速通过barrier,加快线程束的执行速度,提高GPU的性能。
附图说明
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附
图中:
图1为示例提供的一种GPU的片上网络互连结构示意图;
图2为本发明一实施例的一种NoC仲裁方法的流程图;
图3为本发明一实施例的另一种NoC仲裁方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下结合附图,详细说明本发明实施例提供的技术方案。
参考图2,第一方面,本发明一实施例提供了一种用于GPU的NoC仲裁方法,该方法用于GPU,包括以下步骤:
步骤S1,响应于程序的执行,在流处理器发送到片上互连网络的访存请求中编码当前流处理器中到达barrier的线程束数目;
步骤S2,根据访存请求对应的输出端口,将片上互连网络接收的访存请求划分为多组以使每组中的访存请求对应的输出端口相同;
步骤S3,针对每一组访存请求,对一组访存请求中的所有访存请求进行轮询仲裁,选择出优先级最高的访存请求发送至对应的输出端口,其中,访存请求中编码的到达barrier的线程束数目越大,访存请求的优先级越高。
具体地,在GPU程序执行过程中,在每个流处理器发送到片上互连网络的每个访存请求中均编码当前流处理器中到达barrier的线程束数目,当访存请求到达片上互连网络后,将片上互连网络接收的访存请求根据访存请求对应的输出端口实时划分为多组,以使每组中的访存请求对应的输出端口相同;针对每一组访存请求,对每一组访存请求中的所有访存请求进行轮询仲裁,以选择出每组访存请求中优先级最高的访存请求发送至对应的输出端口;而后,在后续的每个时钟周期,继续进行访存请求的分组、轮询仲裁和发送,直至程序结束。
本发明一实施例提供的用于GPU的NoC仲裁方法通过在流处理器发送到片上互连网络的访存请求中编码当前流处理器中到达barrier的线程束数目,并使片上互连网络将编码有较大线程束数目的访存请求优先输出,能够保证需要快速达到barrier的线程束发出的访存请求得到及时的响应,使得线程束快速通过barrier,加快线程束的执行速度,提高GPU的性能。
进一步地,为了便于确定到达barrier的线程束数目以及将到达barrier的线程束数目编码至访存请求中,本发明一实施例中,在流处理器中设置barrier计数器,利用barrier计数器记录当前流处理器中到达barrier的线程束数目,通过将barrier计数器中记录的数值编码至访存请求,以达到将到达barrier的线程束数目编码至访存请求的目的。
为了给数据报文提供充足的片上网络带宽,GPU中片上互连网络的通道宽度一般为16字节或者32字节。与数据报文相比,访存请求通常只包含访存地址和一些控制相关的元数据,大小一般小于16字节。因此,将barrier计数器中的数值编码至访存请求报文并不会占据额外的空间。
具体地,在利用barrier计数器记录当前流处理器中到达barrier的线程束数目时,假设:当前流处理器的线程块中有M个线程束,如果当前没有线程束到达barrier,则计数器的值为0;如果M个线程束有i个线程束没有到达barrier,则计数器的值为M-i。当线程块中最后一个线程束到达barrier后,该线程块中所有线程束通过当前barrier开始继续执行,此时barrier计数器中的值变为0,直至遇到下一个barrier进入等待状态。
本发明一实施例中,barrier计数器可以采用寄存器。具体地,barrier计数器可以采用16bit寄存器。
进一步地,本发明一实施例中,以并行方式分别对每一组访存请求中的所有访存请求进行轮询仲裁。如此,能够进一步加快线程束的执行速度,提高GPU的性能。
参考图3,本发明一实施例中,对一组访存请求中的所有访存请求进行轮询仲裁,选择出优先级最高的访存请求发送至对应的输出端口,进一步包括以下步骤:
步骤S31,从所有访存请求中选取一个访存请求作为当前优先级最高的访存请求;
步骤S32,判断是否已经完成对所有访存请求的轮询仲裁,若是,则将当前优先级最高的访存请求发送至对应的输出端口,若否,则进行步骤S33;
步骤S33,以轮询方式从剩余访存请求中选择一个访存请求,并与当前优先级最高的访存请求进行优先级比较,判断选择的访存请求的优先级是否高于当前优先级最高的访存请求,若是,则将选择的访存请求作为当前优先级最高的访存请求,并返回步骤S32,若否,则返回步骤S32。
通过上述方式进行访存请求的轮询仲裁,能够选出优先级最高的访存请求,以保证需要快速达到barrier的线程束发出的访存请求得到及时的响应。
第二方面,本发明一实施例还提供了一种GPU,该GPU使用上述的NoC仲裁方法进行片上互连网络中访存请求的输出分配。
进一步地,本发明一实施例中,GPU的流处理器中设置有barrier计数器,barrier计数器用于记录当前流处理器中到达barrier的线程束数目。
其中,barrier计数器可以采用寄存器。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。此外,本文中“前”、“后”、“左”、“右”、“上”、“下”均以附图中表示的放置状态为参照。
最后应说明的是:以上实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (7)
1.一种用于GPU的NoC仲裁方法,其特征在于,所述方法用于GPU,包括:
响应于程序的执行,在流处理器发送到片上互连网络的访存请求中编码当前流处理器中到达barrier的线程束数目;
根据访存请求对应的输出端口,将片上互连网络接收的访存请求划分为多组以使每组中的访存请求对应的输出端口相同;
针对每一组访存请求,对一组访存请求中的所有访存请求进行轮询仲裁,选择出优先级最高的访存请求发送至对应的输出端口,其中,访存请求中编码的到达barrier的线程束数目越大,访存请求的优先级越高。
2.根据权利要求1所述的用于GPU的NoC仲裁方法,其特征在于,在流处理器中设置barrier计数器,利用所述barrier计数器记录当前流处理器中到达barrier的线程束数目。
3.根据权利要求1所述的用于GPU的NoC仲裁方法,其特征在于,所述barrier计数器为寄存器。
4.根据权利要求1所述的用于GPU的NoC仲裁方法,其特征在于,以并行方式分别对每一组访存请求中的所有访存请求进行轮询仲裁。
5.根据权利要求1-4中任一项所述的用于GPU的NoC仲裁方法,其特征在于,对一组访存请求中的所有访存请求进行轮询仲裁,选择出优先级最高的访存请求发送至对应的输出端口,包括:
从所有访存请求中选取一个访存请求作为当前优先级最高的访存请求;
判断是否已经完成对所有访存请求的轮询仲裁,若是,则将当前优先级最高的访存请求发送至对应的输出端口,若否,则进行下一步;
以轮询方式从剩余访存请求中选择一个访存请求,并与当前优先级最高的访存请求进行优先级比较,判断选择的访存请求的优先级是否高于当前优先级最高的访存请求,若是,则将选择的访存请求作为当前优先级最高的访存请求,并返回上一步,若否,则返回上一步。
6.一种GPU,其特征在于,所述GPU使用如权利要求1-5中任一项所述的NoC仲裁方法进行片上互连网络中访存请求的输出分配。
7.根据权利要求6所述的GPU,其特征在于,所述GPU的流处理器中设置有barrier计数器,所述barrier计数器用于记录当前流处理器中到达barrier的线程束数目。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310848547.6A CN116957902A (zh) | 2023-07-12 | 2023-07-12 | 用于GPU的NoC仲裁方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310848547.6A CN116957902A (zh) | 2023-07-12 | 2023-07-12 | 用于GPU的NoC仲裁方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116957902A true CN116957902A (zh) | 2023-10-27 |
Family
ID=88454076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310848547.6A Pending CN116957902A (zh) | 2023-07-12 | 2023-07-12 | 用于GPU的NoC仲裁方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116957902A (zh) |
-
2023
- 2023-07-12 CN CN202310848547.6A patent/CN116957902A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8225027B2 (en) | Mapping address bits to improve spread of banks | |
US7287255B2 (en) | System and method for dynamic ordering in a network processor | |
CN103412786B (zh) | 一种高性能服务器架构系统及数据处理方法 | |
US7706275B2 (en) | Method and apparatus for routing data in an inter-nodal communications lattice of a massively parallel computer system by employing bandwidth shells at areas of overutilization | |
KR101455899B1 (ko) | 다수의 가상 서버들 사이에 공유 자원들의 할당을 통한 소프트웨어 제어기능을 갖는 마이크로 프로세서 | |
JP5793690B2 (ja) | インタフェース装置、およびメモリバスシステム | |
CN1593041A (zh) | 具有多个首部的包的解封装和封装的方法、装置和计算机程序 | |
WO2011128369A1 (en) | Querying performance data on a parallel computer system having compute nodes | |
WO2014113646A1 (en) | Automatic deadlock detection and avoidance in a system interconnect by capturing internal dependencies of ip cores using high level specification | |
US20210051096A1 (en) | Technologies for quality of service based throttling in fabric architectures | |
Hu et al. | Towards" full containerization" in containerized network function virtualization | |
CN112152932B (zh) | 片上网络路由控制方法、片上网络路由器及可读存储介质 | |
CN105183662A (zh) | 一种无cache一致性协议的分布式共享片上存储架构 | |
US20060209827A1 (en) | Systems and methods for implementing counters in a network processor with cost effective memory | |
WO2014206078A1 (zh) | 内存访问方法、装置及系统 | |
WO2022250751A1 (en) | Distributed cache management | |
CN112306628B (zh) | 一种基于多核服务器的虚拟网络功能资源管理系统 | |
WO2014101502A1 (zh) | 基于内存芯片互连的内存访问处理方法、内存芯片及系统 | |
CN111857992B (zh) | 一种Radosgw模块中线程资源分配方法和装置 | |
CN116881192A (zh) | 用于GPU的cluster架构及其内部一级缓存管理方法 | |
CN116957902A (zh) | 用于GPU的NoC仲裁方法 | |
CN116132369A (zh) | 云网关服务器中多网口的流量分发方法及相关设备 | |
CN113505087B (zh) | 一种兼顾服务质量和利用率的缓存动态划分方法及系统 | |
WO2012113224A1 (zh) | 多节点计算系统下选择共享内存所在节点的方法和装置 | |
CN1781079A (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 |