用于GPU的cluster架构及其内部一级缓存管理方法
未命名
10-19
阅读:129
评论:0
用于gpu的cluster架构及其内部一级缓存管理方法
技术领域
1.本发明涉及处理器技术领域,尤其涉及一种用于gpu的cluster架构及其内部一级缓存管理方法。
背景技术:
2.图形处理器(graphics processing unit,gpu)是一种用于做图像和图形相关运算工作的微处理器,gpu因其强大的计算能力在云计算平台和数据中心被广泛应用,为用户提供所需要的计算。
3.在gpu中,片上互连网络将流处理器(streaming multiprocessor,sm)连接到末端缓存(last-level cache,llc)和存储系统。为了不断提高gpu的计算能力,gpu上流处理器的数目在不断增加,而将数量众多的流处理器直接连接到片上互连网络上会极大增加片上互连网络以至整个gpu的硬件开销。参考图1,附图1为示例提供的gpu的一种片上网络互连结构示意图,为了解决片上互连网络可扩展性的问题,目前通过在gpu中使用cluster结构,cluster结构将多个流处理器划分为一组,每个cluster结构中的多个流处理器通过内部设置的一个交叉开关(crossbar)连接到片上互连网络的端口。同时,由于gpu中流处理器的一级缓存(l1 cache)采取私有化的设计方式,即每个流处理器中的l1 cache为该流处理器所私有。当流处理器中的访存部件发出访存请求时,该访存请求访问当前流处理器的l1 cache,如果l1 cache命中,则返回数据,当前线程继续执行;如果l1 cache失效,则当前的线程被暂停住,该访存请求经过cluster内部的crossbar被发送到片上互连网络,再经片上互连网络路由至相应的llc和存储控制器进行访存;在完成访存请求后返回的数据报文通过片上互连网络到达响应的cluster,再通过crossbar发送至发起访存请求的流处理器,流处理器中被暂停住的线程继续执行。
4.受到片上资源的制约,l1 cache的容量不能无限扩大,例如以nvidia最新的a100gpu为例,流处理器中l1 cache的大小仅为192kb。由于gpu程序在运行中会产生大量的访存请求,会使得l1 cache面临较大的失效率,进而导致流处理器中的线程经常因等待数据而处于暂停的状态,极大制约了流处理器的性能,对gpu的性能造成严重影响。
技术实现要素:
5.为解决上述现有技术中存在的部分或全部技术问题,本发明提供用于gpu的cluster架构及其内部一级缓存管理方法。
6.本发明的技术方案如下:
7.第一方面,提供了一种用于gpu的cluster架构,所述cluster架构包括:
8.流处理器,包括多个,多个所述流处理器与交叉开关连接;
9.所述交叉开关,具有多个输入端口和多个输出端口,多个所述输入端口分别与多个所述流处理器连接,多个所述输出端口分别与多个所述流处理器和gpu的片上互连网络连接,用于进行多个流处理器之间以及多个流处理器与片上互连网络之间的通信;
10.l1索引路由模块,设置在所述交叉开关中,用于根据所述交叉开关接收到的流处理器发送的访存请求的地址计算对应的一级缓存的索引,并将访存请求通过所述交叉开关发送至包含有对应一级缓存的流处理器中。
11.在一些可能的实现方式中,所述交叉开关进行多个流处理器之间以及多个流处理器与片上互连网络之间的通信,包括:
12.接收流处理器发送的访存请求,将访存请求发送至流处理器或将访存请求发送至片上互连网络;
13.接收流处理器返回的访存响应数据或片上互连网络返回的访存响应数据,将访存响应数据发送至流处理器。
14.在一些可能的实现方式中,所述流处理器还设置有访存请求队列单元、访存失效队列单元和访存响应队列单元;
15.所述访存请求队列单元与所述交叉开关连接,用于缓存所述交叉开关发送的访存请求;
16.所述访存失效队列单元与所述交叉开关连接,用于缓存一级缓存未命中的访存请求;
17.所述访存响应队列单元与所述交叉开关连接,用于缓存一级缓存命中后的访存响应数据。
18.第二方面,提供了一种用于上述的cluster架构的一级缓存管理方法,所述方法包括:
19.交叉开关接收流处理器发送的访存请求;
20.l1索引路由模块计算当前访存请求对应的一级缓存的索引,将访存请求发送至交叉开关与包含有对应一级缓存的流处理器连接的端口;
21.交叉开关将访存请求发送至包含有对应一级缓存的流处理器,以使访存请求访问流处理器的一级缓存;
22.判断一级缓存是否命中;
23.若一级缓存命中,则交叉开关接收返回的访存响应数据,将访存响应数据发送至发起访存请求的流处理器;
24.若一级缓存未命中,则交叉开关接收返回的访存请求,将访存请求发送至片上互连网络以使访存请求访问gpu的存储系统,交叉开关通过片上互连网络接收存储系统返回的访存响应数据,将访存响应数据发送至发起访存请求的流处理器。
25.在一些可能的实现方式中,所述l1索引路由模块根据访存请求的地址,通过地址位映射或哈希映射计算当前访存请求对应的一级缓存的索引。
26.在一些可能的实现方式中,在流处理器中设置访存请求队列单元、访存失效队列单元和访存响应队列单元;
27.利用访存请求队列单元接收、缓存交叉开关发送的访存请求,利用访存失效队列单元接收、缓存一级缓存未命中的访存请求,利用访存响应队列单元接收、缓存一级缓存命中后的访存响应数据。
28.本发明技术方案的主要优点如下:
29.本发明的用于gpu的cluster架构及其内部一级缓存管理方法能够在设置cluster
架构以降低片上互连网络和gpu的硬件开销的基础上,实现cluster架构内部的各个流处理器的一级缓存共享,能够充分利用gpu中的一级缓存资源,提高流处理器和gpu的性能,提高系统资源利用率。
附图说明
30.此处所说明的附图用来提供对本发明实施例的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附
31.图中:
32.图1为示例提供的gpu的一种片上网络互连结构示意图;
33.图2为本发明一实施例的一种cluster架构示意图;
34.图3为本发明一实施例的一级缓存管理方法的流程图。
具体实施方式
35.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
36.以下结合附图,详细说明本发明实施例提供的技术方案。
37.参考图2,第一方面,本发明一实施例提供了一种用于gpu的cluster架构,该cluster架构包括:
38.流处理器,包括多个,多个流处理器与交叉开关连接;
39.交叉开关,具有多个输入端口和多个输出端口,多个输入端口分别与多个流处理器连接,多个输出端口分别与多个流处理器和gpu的片上互连网络连接,用于进行多个流处理器之间以及多个流处理器与片上互连网络之间的通信;
40.l1索引路由模块,设置在交叉开关中,用于根据交叉开关接收到的流处理器发送的访存请求的地址计算对应的一级缓存的索引,并将访存请求通过交叉开关发送至包含有对应一级缓存的流处理器中。
41.基于上述的cluster架构的结构,本发明一实施例提供的cluster架构在进行数据访问时,cluster架构内的流处理器发起访存请求并发送至交叉开关,交叉开关接收流处理器发送的访存请求;交叉开关中的l1索引路由模块根据访存请求的地址,通过地址位映射或哈希映射计算当前访存请求对应的一级缓存的索引,将访存请求发送至交叉开关与包含有对应一级缓存的流处理器连接的端口;交叉开关将访存请求发送至包含有对应一级缓存的流处理器,以使访存请求访问流处理器的一级缓存;当一级缓存命中,流处理器返回相应的访存响应数据,交叉开关接收流处理器返回的访存响应数据,并将访存响应数据发送至发起访存请求的流处理器;当一级缓存未命中时,流处理器返回访存请求,交叉开关接收返回的访存请求,并将访存请求发送至片上互连网络以使访存请求访问gpu的存储系统;gpu的存储系统返回相应的访存响应数据,通过片上互连网络将访存响应数据发送至交叉开关;交叉开关接收片上互连网络返回的访存响应数据,将访存响应数据发送至发起访存请求的流处理器。
42.本发明一实施例中,根据上述数据访问过程,为了实现上述数据访问,交叉开关进行多个流处理器之间以及多个流处理器与片上互连网络之间的通信,包括:
43.接收流处理器发送的访存请求,将访存请求发送至流处理器或将访存请求发送至片上互连网络;
44.接收流处理器返回的访存响应数据或片上互连网络返回的访存响应数据,将访存响应数据发送至流处理器。
45.进一步地,本发明一实施例中,cluster架构中的交叉开关可以采用n*(n+1)的端口型式,n为cluster架构中的流处理器数量,n个输入端口分别与n个流处理器连接,n+1个输出端口分别与n个流处理器和1个片上互连网络连接。
46.为了实现cluster架构中各个流处理器的一级缓存共享,并保证访存过程有序进行,本发明一实施例中,流处理器还设置有访存请求队列单元、访存失效队列单元和访存响应队列单元;访存请求队列单元与交叉开关连接,用于缓存交叉开关发送的访存请求;访存失效队列单元与交叉开关连接,用于缓存一级缓存未命中的访存请求;访存响应队列单元与交叉开关连接,用于缓存一级缓存命中后的访存响应数据。
47.具体地,交叉开关发送的访存请求以队列结构存储到访存请求队列单元中,以等待后续访问流处理器的一级缓存;在访问一级缓存时,访存请求队列单元取出位于访存请求队列头部的访存请求进行访问。当一级缓存未命中时,相应的访存请求以队列结构存储到访存失效队列单元中,以等待后续发送至交叉开关;在向交叉开关发送访存请求时,访存失效队列单元取出位于访存失效队列头部的访存请求进行发送。当一级缓存命中,相应的访存响应数据以队列结构存储到访存响应队列单元中,以等待后续发送至交叉开关;在向交叉开关发送访存响应数据时,访存响应队列单元取出位于访存响应队列头部的访存响应数据进行发送。
48.参考图3,第二方面,本发明一实施例还提供了一种用于上述的cluster架构的一级缓存管理方法,该方法包括以下步骤s1-s6:
49.步骤s1,交叉开关接收流处理器发送的访存请求;
50.步骤s2,l1索引路由模块计算当前访存请求对应的一级缓存的索引,将访存请求发送至交叉开关与包含有对应一级缓存的流处理器连接的端口;
51.步骤s3,交叉开关将访存请求发送至包含有对应一级缓存的流处理器,以使访存请求访问流处理器的一级缓存;
52.步骤s4,判断一级缓存是否命中;
53.步骤s5,若一级缓存命中,则交叉开关接收返回的访存响应数据,将访存响应数据发送至发起访存请求的流处理器;
54.步骤s6,若一级缓存未命中,则交叉开关接收返回的访存请求,将访存请求发送至片上互连网络以使访存请求访问gpu的存储系统,交叉开关通过片上互连网络接收存储系统返回的访存响应数据,将访存响应数据发送至发起访存请求的流处理器。
55.进一步地,本发明一实施例中,l1索引路由模块根据访存请求的地址,通过地址位映射或哈希映射计算当前访存请求对应的一级缓存的索引。
56.本发明一实施例中,为了实现cluster架构中各个流处理器的一级缓存共享,并保证访存过程有序进行,可以在流处理器中设置访存请求队列单元、访存失效队列单元和访
存响应队列单元;利用访存请求队列单元接收、缓存交叉开关发送的访存请求,利用访存失效队列单元接收、缓存一级缓存未命中的访存请求,利用访存响应队列单元接收、缓存一级缓存命中后的访存响应数据。
57.本发明一实施例提供的用于gpu的cluster架构及其内部一级缓存管理方法能够在设置cluster架构以降低片上互连网络和gpu的硬件开销的基础上,实现cluster架构内部的各个流处理器的一级缓存共享,能够充分利用gpu中的一级缓存资源,提高流处理器和gpu的性能,提高系统资源利用率。
58.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。此外,本文中“前”、“后”、“左”、“右”、“上”、“下”均以附图中表示的放置状态为参照。
59.最后应说明的是:以上实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
技术特征:
1.一种用于gpu的cluster架构,其特征在于,所述cluster架构包括:流处理器,包括多个,多个所述流处理器与交叉开关连接;所述交叉开关,具有多个输入端口和多个输出端口,多个所述输入端口分别与多个所述流处理器连接,多个所述输出端口分别与多个所述流处理器和gpu的片上互连网络连接,用于进行多个流处理器之间以及多个流处理器与片上互连网络之间的通信;l1索引路由模块,设置在所述交叉开关中,用于根据所述交叉开关接收到的流处理器发送的访存请求的地址计算对应的一级缓存的索引,并将访存请求通过所述交叉开关发送至包含有对应一级缓存的流处理器中。2.根据权利要求1所述的用于gpu的cluster架构,其特征在于,所述交叉开关进行多个流处理器之间以及多个流处理器与片上互连网络之间的通信,包括:接收流处理器发送的访存请求,将访存请求发送至流处理器或将访存请求发送至片上互连网络;接收流处理器返回的访存响应数据或片上互连网络返回的访存响应数据,将访存响应数据发送至流处理器。3.根据权利要求2所述的用于gpu的cluster架构,其特征在于,所述流处理器还设置有访存请求队列单元、访存失效队列单元和访存响应队列单元;所述访存请求队列单元与所述交叉开关连接,用于缓存所述交叉开关发送的访存请求;所述访存失效队列单元与所述交叉开关连接,用于缓存一级缓存未命中的访存请求;所述访存响应队列单元与所述交叉开关连接,用于缓存一级缓存命中后的访存响应数据。4.一种用于如权利要求1-3中任一项所述的用于gpu的cluster架构的一级缓存管理方法,其特征在于,所述方法包括:交叉开关接收流处理器发送的访存请求;l1索引路由模块计算当前访存请求对应的一级缓存的索引,将访存请求发送至交叉开关与包含有对应一级缓存的流处理器连接的端口;交叉开关将访存请求发送至包含有对应一级缓存的流处理器,以使访存请求访问流处理器的一级缓存;判断一级缓存是否命中;若一级缓存命中,则交叉开关接收返回的访存响应数据,将访存响应数据发送至发起访存请求的流处理器;若一级缓存未命中,则交叉开关接收返回的访存请求,将访存请求发送至片上互连网络以使访存请求访问gpu的存储系统,交叉开关通过片上互连网络接收存储系统返回的访存响应数据,将访存响应数据发送至发起访存请求的流处理器。5.根据权利要求4所述的一级缓存管理方法,其特征在于,所述l1索引路由模块根据访存请求的地址,通过地址位映射或哈希映射计算当前访存请求对应的一级缓存的索引。6.根据权利要求4所述的一级缓存管理方法,其特征在于,在流处理器中设置访存请求队列单元、访存失效队列单元和访存响应队列单元;利用访存请求队列单元接收、缓存交叉开关发送的访存请求,利用访存失效队列单元
接收、缓存一级缓存未命中的访存请求,利用访存响应队列单元接收、缓存一级缓存命中后的访存响应数据。
技术总结
本发明公开了一种用于GPU的cluster架构及其内部一级缓存管理方法,cluster架构包括:流处理器,包括多个,多个流处理器与交叉开关连接;交叉开关,具有多个输入端口和多个输出端口,多个输入端口分别与多个流处理器连接,多个输出端口分别与多个流处理器和GPU的片上互连网络连接,用于进行多个流处理器之间以及多个流处理器与片上互连网络之间的通信;L1索引路由模块,设置在交叉开关中,用于根据交叉开关接收到的流处理器发送的访存请求的地址计算对应的一级缓存的索引,并将访存请求通过交叉开关发送至包含有对应一级缓存的流处理器中。本发明能够实现cluster架构内部的各个流处理器的一级缓存共享,充分利用GPU中的一级缓存资源,提高流处理器和GPU的性能。提高流处理器和GPU的性能。提高流处理器和GPU的性能。
技术研发人员:赵夏 王璐 张光达 王会权 何益百 温家辉 方健 蒋艳德 赵杨
受保护的技术使用者:中国人民解放军军事科学院国防科技创新研究院
技术研发日:2023.06.06
技术公布日:2023/10/15
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:利用附加参考测量的电化学测量的制作方法 下一篇:基于真值表译码的同时多线程轮询方法
