处理系统、操作处理系统的方法和计算机可读存储介质与流程

文档序号:33620116发布日期:2023-03-25 11:11阅读:20来源:国知局
处理系统、操作处理系统的方法和计算机可读存储介质与流程

1.本发明涉及一种处理系统,更具体地说,涉及一种处理系统、操作处理系统的方法和计算机可读存储介质。


背景技术:

2.图形处理器(gpu)是一种知名的、执行必要的计算以向帧缓冲区填充数据的设备,其中,帧缓冲区又用于在屏幕上显示图像。中央处理器(cpu)将向帧缓冲区填充数据这种计算密集型的任务交付给图形处理器,从而释放中央处理器以及时执行其他任务。
3.通用图形处理器(gpgpu)是图形处理器(gpu)的扩展,通用图形处理器可编程实现其他非图形处理的计算密集型操作。在人工智能(ai)和机器学习的应用中,中央处理器(cpu)通常与多个并行执行卷积操作的通用图形处理器(例如100gpgpu)配对使用。
4.通用图形处理器包括一个处理器和一个耦合到处理器的存储器(memory)。对于许多人工智能和机器学习的应用来说,容量大、访问速度快的存储器是必需的,因此,当通用图形处理器用于人工智能和机器学习时,通常使用以容量大、访问速度快而闻名的高带宽存储器(hbm)作为通用图形处理器的存储器。
5.典型的hbm包括若干个动态随机存取存储器(dram)晶粒,这些晶粒在彼此的顶部垂直堆叠,以提供具有小尺寸规格的大存储容量,例如4gb、24gb和64gb。此外,每个dram晶粒包括两个128位数据通道,以提供高带宽。
6.但当前,通用图形处理器的一个问题是通用图形处理器的hbm事实上存在一个最大容量,该最大容量反过来限制了通用图形处理器能够及时处理的操作数量。最大容量的存在是因为将晶粒垂直堆叠在彼此的顶部变得越来越困难,从而有效地限制了通过堆叠形成hbm的晶粒数量和hbm的最大容量。此外,hbm中的每个晶粒通常采用最大十字线制造,这限制了晶粒的最大尺寸和容量。
7.此外,除了最大容量以外,其他存储器的全部或部分(如cpu内存的一部分)不能用作通用图形处理器的hbm的扩展,从而不能提供额外的可快速访问的存储器容量。这是因为通用图形处理器通过外围组件互连快速(pcie)总线耦合到扩展存储器(例如cpu内存),通过pcie总线访问数据大致比访问hbm中的数据慢100倍,对于某些人工智能和机器学习的应用而言,这速度太慢了。
8.因此,既然通用图形处理器内存hbm事实上具有最大容量,并且既然另一个储存器的全部或部分不能用作通用图形处理器的hbm的扩展以提供额外的可快速访问的内存容量,因此需要增加通用图形处理器中的存储器的容量。


技术实现要素:

9.本公开提高了gpgpu模块的存储器可快速访问的最大容量。本公开提供的处理系统包括至少一个外部存储器,以及耦合到所述至少一个外部存储器的至少一个通用图形处理器。所述至少一个通用图形处理器中的每一个都具有一个核、耦合到该核的高速缓存和
耦合到该核的本地存储器。每个通用图形处理器需要第一时长访问存储在通用图形处理器的高速缓存中的数据,需要比第一时长更长的第二时长访问存储在通用图形处理器的本地存储器中的数据,需要以比第二时长更长的第三时长访问存储在至少一个外部存储器中的数据,
10.在一段时间内,当通用图形处理器的本地存储器中的某些数据被访问的次数小于阈值次数时,通用图形处理器将这些数据从通用图形处理器的本地存储器移到至少一个外部存储器,以及当至少一个外部存储器中的某些数据在该段时间内被访问超过阈值次数时,将这些数据从至少一个外部存储器移到通用图形处理器的本地存储器,每个外部存储器仅用于存储要在通用图形处理器执行的程序指令和数据。
11.本公开还包括一种操作处理系统的方法。该方法包括需要第一时长访问存储在通用图形处理器的高速缓存中的数据,需要比第一时长更长的第二时长访问存储在通用图形处理器的本地存储器中的数据,需要以比第二时长更长的第三时长访问存储在至少一个外部存储器中的数据,
12.该方法还包括:在一段时间内,当通用图形处理器的本地存储器中的某些数据被访问次数小于阈值时,将这些数据从通用图形处理器的本地存储器移到外部存储器,以及当外部存储器中的某些数据在该时间段内被访问次数超过阈值时,将这些数据从外部存储器移到通用图形处理器的本地存储器。每个外部存储器仅用于存储要在通用图形处理器执行的程序指令和数据。
13.本发明还包括一种非暂时性计算机可读存储介质,该存储介质中嵌入有程序指令,该程序指令当由设备的一个或多个处理器执行时,该程序指令使设备执行操作处理系统的方法。
14.该方法包括需要第一时长访问存储在通用图形处理器的高速缓存中的数据,需要比第一时长更长的第二时长访问存储在通用图形处理器的本地存储器中的数据,需要以比第二时长更长的第三时长访问存储在至少一个外部存储器中的数据,
15.该方法还包括:在一段时间内,当通用图形处理器的本地存储器中的某些数据被访问次数小于阈值时,将这些数据从通用图形处理器的本地存储器移到外部存储器,以及当外部存储器中的某些数据在该时间段内被访问次数超过阈值时,将这些数据从外部存储器移到通用图形处理器的本地存储器。每个外部存储器仅用于存储要在通用图形处理器执行的程序指令和数据。
16.通过参考下面的详细描述和附图,将更好理解本发明的特征和优点,这些详细描述和附图描述了应用本发明原理的示例性实施例。
附图说明
17.本技术的附图用于进一步理解本技术,并构成本技术的一部分。本技术的示例性实施例及其描述用于解释本技术,并不构成对本技术的限制。
18.图1是本公开提供的处理系统100的示例性框图。
19.图2是本公开提供的通用图形处理器(gpgpu)模块200的示例性框图。
20.图3是本公开提供的外部存储器(smx)模块300的示例性方框。
21.图4是本公开提供的用于说明配置处理系统100的方法400的示例性流程图。
22.图5是本公开提供的用于说明对处理系统100的存储器进行分区和分配的示例性框图。
23.图6是本公开提供的操作通用图形处理器的方法600的示例性流程图。
24.图7是本公开提供的操作smx的方法700的示例性流程图。
具体实施方式
25.图1是本发明提供的处理系统100的示例性框图。在下文中将详细描述,作为需要容量大且访问速度快的存储器的处理系统100,通过添加速度较慢以至于不能满足需求的存储器资源来提高高速存储器的最大容量,然后将不常访问的数据从高速存储器移到慢速存储器资源中。
26.如图1所示,处理系统100包括中央处理器(cpu)模块110、多个通用图形处理器(gpgpu)模块112和多个外部存储器(smx)模块114。在本示例中,为了简单起见,示出了一个cpu模块、三个gpgpu模块和三个smx模块。但也可以应用和任意配置其他数量的cpu模块、gpgpu模块和smx模块。
27.进一步地如图1所示,处理系统100还包括将cpu模块110、gpgpu模块112和smx模块114耦合在一起的外围组件互连快速(pcie)总线116。pcie总线116包括多个端点(endpoints)和根复合体(root complex),并且可以包括任意多个pcie交换机。
28.在本示例中,gpgpu模块112和smx模块114在接收数据时是端点,而根复合体是cpu模块110上的离散电路,用于执行地址转换以识别端点。此外,当使用pcie交换机时,两个或多个端点可以耦合到pcie交换机,而pcie交换机耦合到根复合体。pcie交换机允许耦合到同一pcie交换机的设备之间直接发送消息,而无需通过根复合体。
29.此外,可以交替地利用诸如专用数据链路的多个直接连接118,而不是pcie总线116。在一些情况下,每个gpgpu模块112直接连接到一个或多个smx模块114。专用数据链路,尤其是当大量设备耦合到pcie总线并访问pcie总线时,比pcie总线更快,但专用数据链路仍然会为通过专用数据链路执行的内存访问增加大量延迟。
30.因此,通过专用数据链路的内存访问请求仍然较慢以至于无法满足许多高速的内存访问需求。因此尽管通过链路118将smx模块114与gpgpu模块112配对可提供更好的带宽性能,但配对并不是必需的。gpgpu模块112和smx模块114可以以多种方式耦合在一起。
31.例如,每个smx模块114可与多个gpgpu模块112建立映射。此外,多个smx模块114可与单个gpgpu模块112建立映射。此外,在一些gpgpu模块112未与smx模块114配对的地方,可采用六个gpgpu模块112和两个smx模块114,但仍然可以通过上层交换机或根复合体访问smx模块114。
32.图2是本发明提供的通用图形处理器(gpgpu)模块200的示例性框图。在本示例中,每个gpgpu模块112可以用gpgpu模块200实现。如图2所示,gpgpu模块200包括核210、耦合到核210的本地高速缓存212(一级或多级高速缓存)以及耦合到核210和高速缓存212的本地存储器214。
33.为了满足人工智能(ai)和机器学习的需求,本地存储器214的容量很大,例如千兆字节,并且访问速度非常快。本地存储器214存储核210频繁访问的数据。缓存212存储在本地存储器214中的一些更频繁访问的数据的副本。核210依次执行存储在缓存212和本地存
储器214中的指令。核210需要以第一时长访问存储在缓存212中的数据,以及比第一时长更长的第二时长访问存储在本地存储器214中的数据。
34.在一个示例中,本地存储器214被实现为高带宽存储器(hbm),该高带宽存储器(hbm)包括多个动态随机存取存储器(dram)晶粒,这些晶粒在彼此的头部垂直堆叠以提供具有小尺寸规格的大存储容量。例如,hbms的最大容量可以是4gb、24gb和64gb。此外,hbm中的每个晶粒都有两个128位数据通道,以提供高带宽。
35.gpgpu模块200还包括片上网络(noc)216,其将核210和本地存储器214耦合在一起以提供核210和本地存储器214之间的高带宽且高速的通信路径。高速缓存212还可以经由片上网络(noc)216耦合到本地存储器214。gpgpu模块200还包括经由片上网络(noc)216耦合到核210的pcie端点控制器220,以经由pcie总线(例如pcie总线116)提供通信。
36.核210执行存储在高速缓存212和存储器214中的指令,高速缓存212和存储器214中的指令包括应用的启动指令、程序指令和数据。程序指令经常访问存储在高速缓存212和存储器214中的一些数据,并且不经常访问存储在存储器214中的其他数据。此外,这些程序指令经常生成数据,这些数据在存储到存储器214之后,一些情况下被经常访问,在其他情况下不被经常访问。
37.在操作中,在一段时间内,当存储在本地存储器214中的某些数据的被访问次数小于阈值时,gpgpu模块200将这些数据从本地存储器214移到smx模块,以及当在该段时间内,当存储在smx模块中的某些数据的被访问次数超过阈值时,将这些数据从smx模块移到本地存储器214。
38.图3是本公开提供的外部存储器(smx)模块300的示例性方框。在本示例中,每个smx模块114可以用smx模块300实现。如图3所示,smx模块300包括存储数据的扩展存储器310、耦合到扩展存储器310以控制数据进出存储器310的存储器控制电路312,以及pcie端点控制器314,pcie端点控制器314耦合到扩展存储器310和存储器控制电路312以控制经过pcie总线(例如pcie总线116)的通信。扩展存储器310存储gpgpu的核不经常访问的数据,并且仅存储gpgpu的程序指令和数据。此外,smx模块300具有存储诸如带宽和访问时间等设备信息的寄存器。
39.smx模块300通过pcie总线或pcie交换机进行访问,这给扩展存储器310的内存访问时间增加了显著的延迟。因此,即使扩展存储器310使用访问非常快的存储器(例如hbm型存储器)实现,扩展存储器310的远程访问也比访问本地存储器(hbm)214更慢。因此核210需要比第二时长更长的第三时长来访问存储在smx模块中的数据。
40.在操作中,cpu模块110最初将gpgpu的程序指令和数据加载到gpgpu模块的本地存储器214中,然后在指令和数据变冷(较少或不经常使用)时将gpgpu的程序指令和数据移到smx模块的扩展存储器310中。或者,cpu模块110可以在执行一个应用之前,将该应用的第一数量的程序指令和数据加载到gpgpu模块的本地存储器214中,并将该应用的第二数量的程序指令和数据加载到smx模块的扩展存储器310中。在cpu模块110加载第一和第二数量的程序指令之前,gpgpu模块的本地存储器214和smx模块的扩展存储器310都未存储该应用的程序指令和数据。
41.图4是本公开提供的用于说明配置处理系统100的方法400的示例性流程图。如图4所示,方法400从步骤410开始,确定每个gpgpu模块112/200需要的额外的高速存储器容量。
在某些情况下,每个gpgpu模块112/200需要或假定额外需要额外的大小相同的高速存储器容量,然而,在其他情况下,每个gpgpu模块112/200可能需要额外的大小不同的高速存储器容量。
42.随后,方法400移动到412以确定从smx模块114/300可获得的额外的、可用的存储器容量。smx模块300具有存储设备信息的寄存器,例如容量、带宽和访问时间。为了确定可用性,方法400移动到步骤412-1以首先将每个smx模块300上的扩展存储器310划分为可用存储器空间和不可用存储器空间。
43.接下来,方法400移动到步骤412-2以识别在每个可用存储器空间中可用的多个分区存储器空间。例如,64gb的可用存储器空间可以分为两个32gb的分区存储器空间或四个16gb的分区存储器空间。
44.在此之后,方法400移动到414以将smx模块114/300的扩展存储器310的可用存储器空间和/或一个或多个分区存储器空间分配给具有匹配需求的gpgpu模块。例如,如果smx模块具有的可用存储器空间与gpgpu模块需要的额外的高速存储器空间相匹配,则将smx模块分配给gpgpgpu模块。
45.如果smx模块的可用存储器空间分为两个分区存储器空间,这两个分区存储器空间与两个gpgpu模块需要的额外的高速存储器空间相匹配,则smx模块上的一个分区存储器空间将分配给第一个gpgpu模块,smx模块上的另一个分区存储器空间分配给第二个gpgpu模块。
46.配置输入可通过驱动程序的可编程接口或配置文件完成。例如,在用户不知道的情况下,api和配置文件可以包含gpgpu的存储器扩展容量、带宽和访问时间要求等信息。驱动程序根据物理设备寄存器以及链路拓扑确定如何最好地分区和分配扩展存储器。根据用户软/硬需求,驱动程序可能会出现故障并进行反馈。配置可以静态的,在使用系统之前完成配置,也可以是动态的,在系统使用时进行配置。
47.图5是本公开提供的用于说明对处理系统100的存储器进行分区和分配的示例性框图。如图5所示,smx模块smx0中的可用存储器空间被分为两部分,其中第一部分不可用(备用),第二部分分配给gpgpu模块gpgpu0。因此,gpgpu0可快速访问hbm0以读取和写入数据,对smx0中的可用存储器空间的第二部分可慢速访问以读取和写入数据。
48.smx模块smx1中的可用存储器空间也分为两部分,第一部分分配给gpgpu模块gpgpu1,第二部分配给gpgpgpu模块gpgpu2。因此,gpgpu1可快速访问hbm1以读取和写入数据,对smx1中可用存储器空间的第一部分可慢速访问以读取和写入数据,而gpgpu2对smx1中可用存储器空间的第二部分可慢速访问。此外,smx模块smx2中的可用存储器空间未分区,但也分配给gpgpu2,gpgpgpu2从两个smx模块获得额外的存储器空间。
49.图6是本公开提供的操作通用图形处理器的方法600的示例性流程图。如图6所示,方法600从610开始,将程序指令和数据作为存储器块和页加载到gpgpu模块的本地存储器中。此外,方法600还重置了多个计数器和一个用于测量预定时间段的计时器。
50.方法600然后移至步骤612以确定是否已经访问了本地存储器中的存储单元,例如存储器块或存储器页。每个存储单元都有一个相关计数器,该计数器在步骤610重置。当存储单元被访问时,方法600移至步骤614以增加计数器所保持的存储单元被访问次数的计数值,然后移至步骤616以确定预定时间段是否已过。
51.当预定时间段已过时,方法600移至步骤618以识别在预定时间段内被访问次数少于阈值的存储单元。随后,方法600移至步骤620,以将被访问次数小于阈值的存储单元从本地存储器(214)移至对应的smx模块中的扩展存储器(310)。移动的存储单元之后,方法600重置计数器和定时器并返回到步骤612以再次确定是否发生了存储器访问。
52.为将数据移动到对应的smx模块中的扩展存储器310而在移动过程中产生的存储单元的任何副本都被移除(例如,覆盖,指针删除),使得在将存储单元移至对应的smx模块中的扩展存储器310并仅在对应的smx模块中的扩展存储器310中保留之后,高速缓存212或本地存储器214不再存储扩展存储器310中的对应数据的副本。
53.因此,通过将不常访问(访问次数小于阈值)的数据从用于满足系统对高速访问次数需求的高速的本地存储器(hbm)中移出,移至对应的smx模块中的慢速的扩展存储器中,所述扩展存储器不能满足系统对远程存储器访问次数需求,本公开实施例有效地增加了高速的本地存储器(hbm)的存储器容量。
54.对于对应的smx模块中的慢速的扩展存储器的不经常访问仍会带来相当大的时间损失。然而,只要发生频率足够低,偶尔需要从对应的smx模块的慢速的扩展存储器获取数据是可以容忍的。
55.关于在步骤610中加载数据,对于开发人员提前知道的将不经常访问的gpgpu的程序指令和数据,可以标记、识别,并且在将数据加载到高速访问的gpgpu的本地存储器(hbm)的操作的同一期间,可交替地将其加载到对应的smx模块中的慢速的扩展存储器中。此外,无论是加载到高速还是加载慢速的存储器中,一些数据也可以使用永不移动标签进行标记,以将这些数据固定到特定存储器中,而不考虑其对应的访问次数。
56.图7是本公开提供的操作smx的方法700的示例性流程图。如图7所示,方法700类似于方法600,主要区别在于步骤718和720,其中被访问次数超过阈值的存储单元被识别并从对应的smx模块的慢速的扩展存储器310移回到gpgpu模块的高速的本地存储器(hbm)214中。
57.被访问数据从高速的gpgpu的本地存储器(hbm)移到对应的smx模块的慢速的的扩展存储器(反之亦然)中,可以在移动之前首先将被访问数据返回到cpu。或者,被访问数据可以在移动之后首先返回到cpu。
58.上文结合示例性的附图对本公开的各个实施例已有详细描述。但尽管上文对各种实施例进行描述,但应理解,这些实施例并不旨在限制本公开。相反,本公开旨在涵盖替代、修改和等效内容,这些替代、修改和等效内容可包括在根据权利要求所解释的本公开的保护范围内。
59.此外,在上文对本公开的各种实施例的详细描述中,阐述了许多具体细节,以提供对本公开的透彻理解。然而,本领域的普通技术人员应认识到,可以在没有这些特定细节或其等效内容的情况下实施本公开的各种实施例。此外,在这些实施例中,未详细描述众所周知的方法、过程、组件和电路,以避免不必要地模糊本公开的各种实施例的一些方面。
60.注意,尽管为了清楚起见,这里将方法描述为一系列的操作步骤,但是这些操作步骤不一定是规定的操作顺序。应当理解,一些操作步骤可以被跳过、并行执行或者在不需要保持规定的操作顺序的情况下执行。
61.本技术的各种实施例提供的附图都是半图示的,并且不按比例绘制,尤其是,为了
表示的清晰,一些尺寸在附图中被放大显示。类似地,尽管为了便于描述,附图中的视角通常具有相似取向,但是这种取向在大多数情况下是任意选择的。通常,本公开的各种实施例可以在任何取向上实现。
62.上文中的具体描述可以以程序、逻辑块、处理和对计算机存储器中的数据位的操作的其他符号表示的形式呈现。数据处理领域的一些技术人员能够使用这些描述和表示有效地将其工作的实质传达给所属领域的其他技术人员。
63.在本公开实施例中,过程、逻辑块、处理等被认为是导致期望结果的操作或指令的自洽序列。这些操作是利用物理量的物理操作。通常,尽管不一定,这些物理量以能够在计算系统中存储、传输、组合、比较和以其他方式操作的电信号或磁信号的形式存在。事实证明,作为常见用法,为了方便,经常将这些信号称为事务、位、值、元素、符号、字符、样本、像素、等等。
64.然而,应记住,所有这些和类似的术语都与适当的物理量相关联,并且只是适用于这些物理量的方便标签。除非从以下讨论中明确地另外说明,否则应理解,在本公开中,利用诸如“生成”、“确定”、“分配”、“聚合”、“利用”、“虚拟化”、“处理”、“访问”、“执行”、“存储”等术语的讨论,指计算机系统或类似电子计算设备或处理器的动作和过程。
65.处理系统、类似电子计算设备或处理器将表征为存放在计算机系统中的存储器、寄存器、其他此类信息存储器和/或其他计算机可读介质中的物理(电子)量的第一数据操纵和转换为表征为存放在计算机系统中的存储器、寄存器、其他此类信息存储器、传输或显示设备中的类似物理(电子)量的第二数据。
66.上文已经结合本公开各个实施例的附图清楚且完整地描述了本公开各个实施例的技术方案。应当注意,本公开的说明书和权利要求书以及附图中的术语“第一”、“第二”等用于区分类似对象,并且不一定用于描述特定序列或顺序。应当理解,这些数字可以在适当的情况下互换,以便本文描述的本公开各个实施例可以以本文所示或描述的顺序以外的顺序实施。
67.本公开各个实施例描述的功能如果以软件功能单元的形式实现并且作为独立产品出售或使用,则可以存储在计算机可读存储介质中。基于这种理解,本公开各个实施例关于一部分的现有技术或者一部分的技术方案可能以存储介质中的软件产品的形式体现,包括一系列的指令,这些指令用于引起计算设备(可以是个人计算机、服务器、移动计算设备或网络设备等)来执行本公开各个实施例所描述的方法的全部或部分步骤。上述存储介质包括:能够存储程序代码的usb驱动器、便携式硬盘、只读存储器(rom)、随机存取存储器(ram)、磁盘、光盘等。
68.本说明书中的各个实施例以渐进的方式描述,并且每个实施例侧重于其与其他实施例的区别,各个实施例之间相同或类似部分可以参考其他实施例。但所描述的实施例仍只是一部分实施例,而不是本公开的所有实施例。本领域普通技术人员在不脱离本发明技术构思的情况下基于本说明书的各种实施例获得的所有其他实施例均在本技术的保护范围之内。
69.上述实施例仅用于说明而非限制本公开的技术方案。尽管本公开参照上述实施例进行详细描述,但本领域的普通技术人员应当理解,上述实施例中记录的技术方案仍然可以修改,或者可以对其中的部分或全部技术特征进行等效替换。这些修改或替换不会使相
应技术方案的实质脱离本公开实施例提供的技术方案的范围。
70.应当理解,上述描述是本技术的示例性描述,并且在实施本技术时可以使用本文描述的各种替代方案。各种集成都是模板化的。例如,每个gpgpu不需要实现为一个模块。因此,权利要求旨在定义本技术的范围,并由此涵盖这些权利要求及其等效物范围内的结构和方法。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1