生产者至消费者的主动直接高速缓存传送的制作方法

文档序号:29649164发布日期:2022-04-13 22:41阅读:123来源:国知局
生产者至消费者的主动直接高速缓存传送的制作方法

1.本公开的各示例一般涉及在异构处理环境中执行直接高速缓存传送。


背景技术:

2.服务器cpu-加速器系统(诸如由compute express link(cxl)、cache coherent interconnect for accelerators(ccix)、quickpath interconnect/ultra path interconnect(qpi/upi)、infinity fabric、nvlink
tm
和open coherent accelerator processor interface(opencapi)connected soc启用的服务器cpu-加速器系统)本质上都是与硬件高速缓存相干的系统——即,无论处理器或加速器是作为数据和元数据(关于数据的信息)的生产者还是消费者,硬件都对所经访问的、经修改的和经高速缓存的数据保持通用的、一致的观点。
3.当前的共享存储器cpu-加速器执行框架要么依赖于软件相干性要么依赖硬件相干性来实现这些系统中的生产者-消费者交互。随着时间的推移,cpu或加速器中的至少一个充当数据或元数据的生产者或消费者,作为应用的一部分或作为执行功能的一部分。该数据在生产者-消费者对的高速缓存之间的移动可以使用软件相干性的显式操作或硬件相干性的隐式操作来进行。
4.这些cpu加速器系统还被描述为高速缓存相干非一致性存储器访问系统(cc-numa)。cc-numa的出现是由于延迟和带宽的差异,具体取决于cpu或加速器访问是近存储器还是远存储器并且取决于数据在其被生产者或消费者访问时被高速缓存的位置。另外,生产者-消费者对及其高速缓存的数据的彼此之间的位置可能比它们和它们正在操作的数据的位置更靠近。这可能导致,与生产者-消费者对各自的与它们正在操作的数据的交互相比,生产者-消费者对具有更好的延迟和带宽,用于彼此交互。另外,这些cpu-加速器系统是异构系统,cpu和加速器的能力也可能在其操作频率和高速缓存能力方面有所不同。


技术实现要素:

5.用于执行直接高速缓存传送(dct)的技术。一个示例是一种计算系统,该计算系统包括生产者,该生产者包括第一处理元件,该第一处理元件被配置为生成已处理数据;生产者高速缓存,该生产者高速缓存被配置为存储由生产者生成的已处理数据;消费者,该消费者包括第二处理元件,该第二处理元件被配置为接收和处理由生产者生成的已处理数据;以及消费者高速缓存,该消费者高速缓存被配置为存储由消费者生成的已处理数据。生产者被配置为响应于接收到stash高速缓存维护操作(stash-cmo),执行dct以将已处理数据从生产者高速缓存传送到消费者高速缓存。
6.本文中的另一示例是一种方法,该方法包括:在生产者处生成已处理数据,该生产者包括第一硬件处理元件;将已处理数据存储在生产者高速缓存中;响应于接收到stash-cmo,执行dct以将已处理数据从生产者高速缓存传送到消费者高速缓存;并且在dct之后,在消费者处对已处理数据进行处理,该消费者包括第二硬件处理元件。
7.本文中的另一示例是一种计算系统。该计算系统包括生产者,该生产者包括第一处理元件,该第一处理元件被配置为生成已处理数据;生产者高速缓存,该生产者高速缓存被配置为存储由生产者生成的已处理数据;消费者,该消费者包括第二处理元件,该第二处理元件被配置为接收和处理由生产者生成的已处理数据;以及消费者高速缓存,该消费者高速缓存被配置为存储由消费者生成的已处理数据。生产者被配置为:响应于接收到stash高速缓存维护操作(stash-cmo),执行直接高速缓存传送(dct)以将已处理数据从生产者高速缓存传送到消费者高速缓存。
8.上文所描述的计算系统中的任一计算系统还可以包括至少一个相干互连,该至少一个相干互连将生产者通信耦合到消费者,其中计算系统是高速缓存相干非一致性存储器访问(cc-numa)系统。
9.可选地,在上文所描述的计算系统中的任一计算系统中,在生产者完成指令生产者生成已处理数据的任务之前,生产者知道消费者的位置。
10.可选地,在上文所描述的计算系统中的任一计算系统中,计算系统的相干性由硬件元件维护,其中响应于生产者确定使用当前存储在生产者高速缓存中的已处理数据更新计算系统中的主存储器,执行stash-cmo和dct,其中stash-cmo为冲刷类型的stash-cmo。
11.可选地,在上文所描述的计算系统中的任一计算系统中,计算系统的相干性由硬件元件维护,其中响应于生产者高速缓存发出容量回收(eviction)以移除已处理数据的至少一部分,执行stash-cmo和dct,其中stash-cmo为回写类型的stash-cmo。
12.可选地,在上文所描述的计算系统中的任一计算系统中,在生产者已经完成指令生产者生成已处理数据的任务之前,生产者不知道消费者的位置。
13.可选地,在上文所描述的计算系统中的任一计算系统中,计算系统的相干性由软件管理单元维护,其中生产者被配置为当生成已处理数据的任务完成时,通知软件管理单元,并且其中软件管理单元被配置为指令已处理数据的归属地启动dct。进一步地,软件管理单元可以可选地(a)向归属地传输第一stash-cmo以在生产者上启动dct和/或(b)响应于接收到第一stash-cmo,归属地向生产者传输包括stash-cmo的监听,该stash-cmo指令生产者执行dct。
14.本文中的另一示例是一种方法。这包括:在生产者处生成已处理数据,该生产者包括第一硬件处理元件;将已处理数据存储在生产者高速缓存中;响应于接收到stash-cmo,执行dct以将已处理数据从生产者高速缓存传送到消费者高速缓存;在dct之后,在消费者处对已处理数据进行处理,该消费者包括第二硬件处理元件;并且将由消费者生成的已处理数据存储在消费者高速缓存中。
15.上文所描述的方法中的任一方法还可以包括:使用至少一个相干互连来执行dct,该至少一个相干互连将生产者通信耦合到消费者,其中生产者和消费者是cc-numa系统的一部分。
16.可选地,在上文所描述的方法中的任一方法中,还可以包括:在生产者已经完成指令生产者生成已处理数据的任务之前,通知生产者消费者的位置。
17.可选地,在上文所描述的方法中的任一方法中,还可以包括:通过硬件元件维护消费者与生产者之间的相干性,其中响应于生产者确定使用当前存储在生产者高速缓存中的已处理数据更新主存储器,执行stash-cmo和dct,其中stash-cmo为冲刷类型的stash-cmo。
18.可选地,在上文所描述的方法中的任一方法中,通过硬件元件维护消费者与生产者之间的相干性,其中响应于生产者高速缓存发出容量回收以移除已处理数据的至少一部分,执行stash-cmo和dct,其中stash-cmo是回写类型的stash-cmo。
19.可选地,在上文所描述的方法中的任一方法中,在生产者已经完成指令生产者生成已处理数据的任务之前,生产者不知道消费者的位置。
20.可选地,在上文所描述的方法中的任一方法中,通过软件管理单元维护消费者与生产者之间的相干性,该方法还包括:当生产者完成生成已处理数据的任务时,通知软件管理单元;并且指令已处理数据的归属地启动dct。
21.可选地,在上文所描述的方法中的任一方法中,指令已处理数据的归属地启动dct包括:从软件管理单元向归属地传输第一stash-cmo以在生产者上启动dct。
22.可选地,在上文所描述的方法中的任一方法中,还可以包括:响应于接收到第一stash-cmo,从归属地向生产者传输监听,该监听包括指令生产者执行dct的stash-cmo。该方法还可以可选地包括:(a)响应于监听,更新主存储器以包括存储在生产者高速缓存中的已处理数据;和/或(b)在传输监听之后,通知消费者dct已完成。
附图说明
23.图1是根据示例的实现拉模型以执行直接高速缓存传送的计算系统的框图。
24.图2是根据示例的其中生产者启动直接高速缓存传送的计算系统的框图。
25.图3是根据示例的生产者启动直接高速缓存传送的流程图。
26.图4是根据示例的其中相干性管理器在生产者完成任务时启动直接高速缓存传送的计算系统的框图。
27.图5是根据示例的其中当生产者完成任务时相干性管理器启动直接高速缓存传送的流程图。
28.图6是根据示例的使用直接高速缓存传送来执行流水线的计算系统的框图。
29.图7是根据示例的执行cpu和计算存储器交互的计算系统的框图。
具体实施方式
30.直接高速缓存传送(dct)是一种在两个高速缓存之间直接转移数据的技术,不受对应处理元件(例如,cpu或加速器核)的控制。在一些实施例中,dct为拉模型,其中当消费者想要数据时,消费者联系跟踪代理(例如,归属地或归属地代理)以定位数据的副本。然后,跟踪代理指令包含副本的高速缓存使用dct将数据传送到与消费者相对应的高速缓存。拉模型适用于处理器和存储器彼此距离相同的同构系统。例如,第一处理元件(例如,消费者)可以从当前处理数据的第二处理元件(例如,生产者)的高速缓存中请求数据。因为生产者在完成任务时可能会不断地回收数据,所以生产者会从其高速缓存中回收数据,这意味着消费者会在任务完成时获取高速缓存中剩余的任何数据。但由于在同构系统中,生产者和消费者拥有相同大小的高速缓存,所以生产者回收条目并不重要。也就是说,生产者可能已经处理了100mb的数据,但消费者和生产者高速缓存的大小可能只有2mb。因此,即使生产者高速缓存多次使用dct向消费者高速缓存发送超过2mb的数据,消费者高速缓存也只能存储2mb。
31.然而,如上文所提及的,在cc-numa系统中,可以存在不同的处理单元和不同大小的高速缓存。因此,这些系统可以利用较小的生产者高速缓存,其使用多个dct将数据发送到较大的消费者高速缓存。然而,对于拉模型,利用dct通常为时已晚,因为消费者需要时间才能启动dct。如果消费者比生产者慢(例如,具有较慢的操作频率),则这会进一步加剧。
32.代替使用拉模型,本文中的实施例创建在已更新数据被从生产者高速缓存回收时启动dct的dct机构。当因为生产者已经转移到处理不同的数据集(例如,不同的任务)、转移到处理不同的功能,所以生产者正在替换其高速缓存中的已更新内容时,或当生产者-消费者任务管理器通过发送高速缓存维护操作(cmo)来加强软件相干性时,应用这些dct机构。dct机构的一个优点在于,因为dct发生在已更新数据被回收时,所以到消费者访问已更新数据时,该数据已经被放置在消费者的高速缓存中或高速缓存层次结构内的其他高速缓存中。因此,消费者不再需要一直到主存储器(其在cc-numa系统中可能很远)来检索数据集。
33.图1是根据示例的实现拉模型以执行dct的计算系统100的框图。在一个实施例中,计算系统100为cc-numa系统,该cc-numa系统包括不同类型的硬件处理元件——例如,生产者120和消费者135——它们可以具有不同类型和大小的高速缓存——例如,生产者高速缓存125和消费者高速缓存140。在本示例中,生产者120和消费者135位于同一域115中并且经由相干互连150通信耦合。然而,在其他实施例中,生产者120和消费者135可以在不同域中使用多个互连耦合。
34.图1图示了拥有存储在生产者高速缓存125、消费者高速缓存140中的数据以及存储在存储器105a和105b(也称为主存储器)中的数据的归属地110(例如,归属地代理或归属地节点)。如下文所描述的,归属地110可以将数据(例如,生产者/消费者数据170)从存储器105a传送到生产者高速缓存125和消费者高速缓存140,使得相应计算引擎130、145可以处理数据。在该示例中,生产者120首先处理数据170,然后由消费者135处理已处理数据。也就是说,生产者120产生数据,然后由消费者135消费。作为非限制性示例,生产者120和消费者135可以代表相应集成电路或计算系统。生产者120和消费者135可以是加速器、中央处理单元(cpu)、图形处理单元(gpu)、现场可编程门阵列(fpga)、专用集成电路(asic)、片上系统(soc)等。计算引擎130、145可以是生产者120和消费者135内的处理核或处理元件。
35.代替将生产者120所产生的数据存储回到主存储器105a和105b中,计算系统100反而可以执行dct以将数据从生产者高速缓存125直接传送到消费者高速缓存140。图1图示了使用依赖于消费者135启动dct过程的拉模型来执行dct的多个动作160。在动作160a期间,生产者120的计算引擎130处理作为任务(例如,搜索任务、机器学习任务、压缩/解压任务、加密/解密任务等)的一部分的数据集。对于可以保存在生产者高速缓存125中的数据集的子集,已更新(或已处理)数据可以保留在生产者高速缓存125中。也就是说,该示例假设生产者高速缓存125不足够大以存储任务的整个数据集。
36.在动作160b期间,不能被保存在生产者高速缓存125中的数据集子集被回收到主存储器105a并且被存储为生产者/消费者数据170。例如,处理任务的整个数据集可能得到100mb,但生产者高速缓存125只能存储2mb。
37.在动作160c期间,在检测到生产者120已经完成其任务(这可以使用生产者120所发送的标志或元数据来完成)时,消费者135的计算引擎145通过首先向数据集的归属地110(即,相干性管理的位置)发送检索请求来检索已处理数据。对于仍在生产者高速缓存125中
的数据集的子集,该数据可以保留在高速缓存125中。
38.在动作160d期间,不再在生产者高速缓存125中的数据集的子集(即,存储在存储器105a中的数据170)从存储器105a发送到消费者135。
39.在动作160e期间,归属地110发送dct监听,通知生产者120仍存储在生产者高速缓存125中的任务的数据集的子集应直接发送到消费者135。在动作160f期间,生产者120执行dct以将与任务相关的任何数据从生产者高速缓存125直接传送到消费者高速缓存140。
40.然而,使用拉模型执行dct有几个缺点。对于生产者-消费者交互依赖于软件相干性的情况,软件相干性机构固有地否定了由消费者135启动的dct的好处。这是因为,在生产者120指示任务完成之前(使用元数据或任务完成标志的设置),软件相干性通常涉及要么要求生产者120将其高速缓存的所有已更新内容刷新到存储器105,要么要求单独处理单元(例如,可以是cpu或加速器的生产者-消费者任务管理器),通过发送cmo来加强软件相干性,该cmo的执行实际上实现了将任何高速缓存中的所有已更新内容刷新到存储器105。缺点是当消费者135启动dct时,没有机会在生产者高速缓存与消费者高速缓存之间传送数据,因为数据已经从生产者高速缓存125和任何其他高速缓存(例如,最后一级高速缓存)中刷新。
41.对于生产者-消费者交互依赖于硬件相干性的情况,生产者120在元数据中的完成的通信之后或在任务完成标志的设置之后,通常转移到下一数据集(例如,下一任务)或对不同的数据集执行不同的功能。这些后续的生产者动作可能导致高速缓存容量冲突,使得先前已更新数据集从生产者高速缓存125中被回收以为新数据集腾出空间。本文中也有类似的缺点,因为当消费者135访问数据时,生产者高速缓存125或生产者120与存储器105之间的分层缓存系统已经使用新工作数据集替换了已更新数据集。再者,dct没有机会。当生产者高速缓存125小于消费者高速缓存140时或当操作速度存在不对称——例如,生产者120的计算引擎130具有比消费者135的计算引擎145更快的操作频率时,生产者120回收其已更新的高速缓存内容时与消费者135访问那些已更新的高速缓存内容时之间的理想传送重叠窗口的不对称可能会进一步恶化。
42.拉模型还有其他系统范围的缺点。对于生产者-消费者对彼此非常接近(例如,相同的域115)并且远离存储器105的cc-numa系统,生产者-消费者对相对于存储器105彼此具有改进的带宽和延迟属性。然而,系统100能够利用仅与仍然存储在生产者高速缓存125中的数据的小子集的紧密接近性。必须从存储器105传送到消费者135的数据集(即,从生产者高速缓存125回收的数据集)必须去往存储器105的远程存储器位置以完成生产者-消费者动作。结果,生产者-消费者动作不仅以较低性能执行,而且这些动作进一步阻碍了其他消费者-生产者对(图1中未图示)对也由归属地110驻留的不同数据集之间的其他生产者-消费者动作。这在重视整体计算效率的现代多处理器和多加速器云系统中经常发生。下文的实施例不依赖消费者135的次要被动动作来启动dct(如在拉模型中所做的dct),并且可以增加可以利用生产者高速缓存与消费者高速缓存之间的dct的数据量。
43.图2是根据示例的其中生产者启动dct的计算系统200的框图。计算系统200包括与图1中的计算系统100相同的硬件组件。在一个实施例中,归属地110和存储器105远离生产者120和消费者135。换句话说,归属地110远离域115。
44.图2还图示了在dct期间执行的多个动作205。为了便于解释,这些动作205与图3中
的流程图的框并行讨论。
45.图3是根据示例的其中生产者启动dct的方法300的流程图。在一个实施例中,当使用硬件相干性来维护系统200中的数据的相干性时,执行方法300。相比之下,下文对使用软件相干性来维护数据相干性进行描述。
46.在框305处,生产者120为生产者120当前正在处理的数据标识消费者135。例如,当将任务指派给生产者120时,软件应用可能已经告诉生产者120系统200中的什么处理元件是数据的消费者。因此,生产者120从一开始(或至少在生产者完成任务之前)就知道已处理数据的目的地消费者135。
47.在框315处,生产者120处理任务的数据集。如上文所提及的,任务可以是搜索任务、机器学习任务、压缩/解压缩任务、加密/解密任务等。当执行任务时,生产者120的计算引擎130生成已处理数据。
48.在框320处,生产者120的计算引擎230将已处理数据存储在生产者高速缓存130中。这与图2中的动作205a相对应。
49.方法200具有从框320开始的两个备选路径。该方法可以前进到框325,其中生产者高速缓存125响应于flush-stash cmo而对消费者高速缓存140执行dct,或前进到框330,其中生产者高速缓存125在高速缓存回收期间响应于copyback-stash cmo而对消费者高速缓存140执行dct。flush-stash cmo和copyback-stash cmo均为新cmo,该新cmo可以用于在生产者120处而非在消费者135处启动dct。也就是说,flush-stash cmo和copyback-stash cmo均为新操作代码(操作代码),这些新操作模式使得生产者能够向消费者高速缓存启动dct传送。
50.在框325处,当生产者120计划使用正在由生产者120处理的数据的最新内容更新存储器105时,生产者120的计算引擎130执行flush-stash cmo(例如,冲刷类型stash-cmo的一个示例)。也就是说即,当更新存储器105时,计算引擎130使用flush-stash cmo来启动dct,使得传输到存储器105a的已更新数据也经由dct从生产者高速缓存125传输到消费者高速缓存140。如动作205b所示,生产者高速缓存125将已更新数据发送到存储器105a。如动作205c所示,并行地(或在不同时间),生产者高速缓存125将相同的已更新数据传输到消费者高速缓存140。
51.在框330处,当生产者高速缓存125因为任务的已处理数据正在被下一任务或功能的新数据集替换而发出容量回收时,生产者120的计算引擎130执行copyback-stash cmo(例如,回写类型的stash-cmo的一个示例)。因此,当系统想要为新数据集移除生产者高速缓存125中的已处理数据时,响应于回收而执行copyback-stash cmo。在这种情况下,动作205b图示了数据被从生产者高速缓存125回收并且被存储在存储器105a中的存储器层次结构中。动作205c表示执行copyback-stash cmo的结果,其中与任务相对应的已回收数据使用dct传输到消费者高速缓存140。动作205b和205c可以并行或在不同时间发生。
52.无论使用框325还是框330,消费者135都可以基于消费者高速缓存140的容量来可选地选择接受或拒绝隐藏操作。无论哪种方式,由于存储器具有已更新副本的动作205b,所以都维护操作的正确性。
53.在框335处,消费者135中的计算引擎145在接收到如图2中的动作205e所示的完成状态之后处理消费者高速缓存140中的数据。消费者135可以从各种不同的源接收完成状态
信息。例如,完成状态可能已经作为dct的一部分而被存储在高速缓存140中,或单独的存储器完成标志可以被放置在存储器105a中。
54.对于在stash操作期间未被接受的数据集的任何部分(在框325或框330处),消费者135从存储器105检索已更新副本,如动作205d所示。对于先前由stash操作接受的保存在消费者高速缓存140中的数据集的子集,消费者135受益于已经在高速缓存140中具有更新的内容,因此不仅获得低延迟、高带宽的高速缓存访问,而且还避免了必须从较低带宽、较高延迟的存储器105中检索数据。
55.尽管上述实施例讨论了使用cmo在同一域中的消费者和生产者之间执行生产者启动的dct,但实施例不限于此。生产者和消费者对可以位于不同的域中。例如,生产者可能在第一扩展盒中,而消费者是使用一个或多个开关连接的第二扩展盒。生产者可能知道消费者在哪个域中,但不知道该域中的哪个处理元件已被(或将被)选为数据的消费者。代替将已处理数据从生产者高速缓存直接发送到不同域中的消费者高速缓存,在一个实施例中,生产者可以使用上述cmo来执行从生产者高速缓存到另一域中的高速缓存(例如,第二扩展盒的交换机中的高速缓存)的dct。因此,cmo可以用于将数据发送到不同的域而非特定的消费者高速缓存。一旦进入域,消费者就可以检索数据。这样做仍然避免了从主存储器中检索数据的子集并且避免了使用归属地110作为中间人。
56.图4是根据示例的计算系统400的框图,其中当生产者完成任务时,相干性管理器启动dct。与图2中的相干性由硬件管理不同,在图4中,相干性由软件应用管理,即,管理单元405(mgmt unit)。否则,图4包括与图2所示相同的部件。图4还包括结合图5中的流程图讨论的多个动作415a至415e。
57.图5是根据示例的方法500的流程图,其中当生产者完成任务时,相干性管理器启动dct。在一个实施例中,相干性管理器是管理异构处理系统中的相干性的软件应用(例如,图4中的管理单元405)。
58.在框505处,生产者120在生产者高速缓存125中存储任务的已处理数据。这由图4中的动作415a示出,其中计算引擎130将已处理数据提供给生产者高速缓存125。在这个时间点,生产者120可能不知道系统400中的哪个处理元件将是已处理数据的消费者。也就是说,管理单元405(例如,软件相干性管理器)可能尚未选择哪个处理元件将对已处理数据执行下一任务。例如,管理单元405可以等到生产者120完成(或几乎完成),然后基于处理元件的当前工作负载或空闲时间来为消费者选择处理元件。
59.在框510处,生产者120在任务完成时通知软件相干性管理器(例如,管理单元405)。在一个实施例中,在完成任务之后,生产者120设置标志或更新元数据以通知管理单元405该状态。此时,管理单元405基于例如计算系统中的处理元件的当前工作量或空闲时间来选择消费者135处理由生产者120生成的数据。
60.在框515处,管理单元指令已处理数据的归属地执行dct。在一个实施例中,管理单元405使用计算引擎410(其与生产者120中的计算引擎130分离)来将stash-cmo发送到归属地110,如图4中的动作415b所示。stash-cmo可以是cleaninvalid-stash cmo及其持久存储器变体或cleanshared-stash cmo及其持久存储器变体。这两个cmo-stash也是具有新对应操作码的新cmo。注意,管理单元405是逻辑单元并且无需与生产者计算引擎130互斥。在一些实施例中,生产者计算引擎130继续执行下一生产者任务,并且在其他实施例中,生产者
计算引擎130在完成其生产者任务时执行软件相干性管理动作。
61.在框520处,归属地110在接收到stash-cmo(例如,cleaninvalid-stash或cleanshared-stash)时向生产者120传输监听。在一个实施例中,归属地110向生产者120发送与由管理单元405发送的原始stash-cmo操作一致的stash-cmo监听。这由图4中的动作415c图示。
62.在框525处,生产者120响应于从归属地110接收到stash-cmo而使用存储在生产者高速缓存125中的已处理数据的最新值来更新存储器105。这由图4中的动作415d图示。
63.在框530处,生产者120也响应于所接收的cmo-stash操作而对消费者高速缓存140执行dct。也就是说,生产者120执行与到消费者高速缓存140的任务相对应的生产者高速缓存125中的数据的最新值的dct,如图4中的动作415e所图示的。消费者135可以基于消费者高速缓存140的容量来可选地选择接受或拒绝stash操作。无论哪种方式,因为存储器105a具有数据的已更新副本,所以操作的正确性均由于框535而被维护。
64.在框535处,管理单元405通知消费者135dct完成。在一个实施例中,管理单元405确定stash-cmo序列(以及伴随dct)何时完成并且设置由消费者135监测的完成标志。消费者135的计算引擎从消费者高速缓存140中检索已更新副本。然而,由于生产者高速缓存125可能无法存储任务的所有已处理数据,所以一些数据可能已被转移到存储器105a。如此,消费者135可能仍需要从存储器105中检索已处理数据的子集,如动作415f所示。然而,对于先前被stash-cmo操作接受的传送到消费者高速缓存140中的数据集的子集,消费者135受益于使用低延迟、高带宽高速缓存访问将已更新内容存储在高速缓存140中,并且避免从较低带宽、较高延迟的存储器105中检索该数据。
65.在一个实施例中,软件管理单元415向执行flush、copyback或其他cmo的硬件提供定义系统地址映射(sam)数据结构的表,使得硬件基于这些cmo正在被执行的地址范围来静态获知cmo的stash目标id。stash目标id也可以通过其他方式确定,该stash目标id包括从高级可编程中断控制器(apic)id派生的目标id、cpu id、ccix代理id在内;然后被包括作为存储dct cmo的一部分。
66.上述实施例的一些非限制性优点包括,因为dct发生在已更新数据正在被回收时,所以数据的消费者获得了改进的性能。消费者访问的内容已经被放置在它自己的高速缓存或缓存层次结构内的另一高速缓存中。消费者不必一直去往主存储器(其在cc-numa系统中可能很远)检索数据集。
67.本发明还提供附加性能优点。对于其中生产者-消费者对彼此非常接近并且远离主存储器的cc-numa系统,生产者-消费者对具有优越的带宽和延迟属性,这些属性在dct期间被利用到高达消费者高速缓存保存数据集的能力的容量。进一步地,生产者-消费者动作不会阻碍其他生产者-消费者对(在系统级别上)对也被远程节点或归属地代理驻留的不同数据集执行的动作。因此,由于上文所描述的实施例的干扰最小,所以整个系统的每个生产者-消费者对实现了较高的综合性能。
68.图6是根据示例的使用dct执行流水线的计算系统600的框图。如图2和图4一样,系统600包括存储器105(例如,主存储器)和归属地110,该归属地110可以远离相干互连150和处理元件605。
69.处理元件605可以是cpu、加速器、fpga、asic、片上系统(soc)等。处理元件605既可
以是生产者也可以是消费者。也就是说,处理元件605可以消费由另一处理元件605处理的数据,然后处理该数据以产生由另一处理元件605消费的数据。
70.在图6中,处理元件605以菊花链形式布置以执行整体任务的不同子任务。例如,处理元件605可以被布置为执行与安全、机器学习或数据压缩应用相关联的不同任务。
71.流水线加速系统可以跨生产者/消费者的菊花链高效执行,而与存储器所驻留的位置无关。图6图示了动作620a至图620f,其中每个处理元件605(除了处理元件605a之外)充当数据集的消费者,该数据集在其充当生产者之前已经具有由另一处理元件605执行的加速任务。处理元件605还用作消费者接收的下一数据集的生产者。使用上文所讨论的cmo和dct,大量流水线加速数据可以使用利用它们之间的高性能本地连接的dct从高速缓存610转移到高速缓存610,而无需求助于托管存储器105的远程归属地110位置。
72.图7是根据示例的执行cpu和计算存储器交互的计算系统的框图。虽然上述实施例描述了在可以是两个处理元件的消费者-生产者对之间使用dct,但是类似技术可以应用于包括cpu702(或其他处理元件)和加速器设备750中的计算存储器的消费者-生产者对。与传统i/o模型不同,加速器设备750中的存储器(未示出)和处理元件(例如,请求代理(ra)720和从代理(sa)725)与cpu702及其高速缓存710处于相同的相干域中。如此,主机701中的归属地715确保存储在主机701和加速器设备750中的数据以相干方式存储,使得无论是源自主机701还是加速器设备750的对于存储器操作的请求都接收数据的最新版本,而不管该数据是存储在主机701的存储器中还是存储在加速器设备750中。
73.在一些应用中,处理数据时的瓶颈发生在将数据转移到处理该数据的计算单元上,而非处理该数据所花费的时间。将数据转移到计算引擎会限制完成任务所需时间的情形被称为计算存储器瓶颈。更靠近数据转移计算引擎可以帮助缓解这个问题。使用本文中的实施例,可以通过使用dct在cpu与计算存储器之间传送数据来减少计算存储器瓶颈,从而减少了从主存储器检索的数据量。
74.例如,在图7中,加速器设备750(例如,计算存储器加速器)启动所有权请求760,该所有权请求760可以使用类似于执行dct的上文所讨论的cmo的flushinvalidate-stash cmo来执行。进一步地,cpu705可以启动刷新770,该刷新770也可以使用flushlnvalidate-stash cmo(或flush-stash cmo)来执行,使得加速器设备750中的高速缓存包含已更新cpu修改内容,随后加速器设备750可以快速执行计算存储器动作。
75.在上文中,参考本公开的实施例。然而,本公开不限于具体描述的实施例。相反,前述特征和元件的任何组合,无论是否涉及不同实施例,都被构想实现和实践本公开。更进一步地,尽管本公开的实施例可以实现优于其他可能解决方案和/或现有技术的优点,但是给定实施例是否实现了特定优点并不限制本公开。因此,除非在权利要求中明确记载,否则前述方面、特征、实施例和优点仅仅是说明性的并且不被认为是所附权利要求的要素或限制。同样,除非在权利要求中明确记载,否则对“公开”的提及不应被解释为对本文中所公开的任何发明主题的概括,并且不应被视为所附权利要求的要素或限制。
76.本公开的各方面可以体现为系统、方法或计算机程序产品。因而,本公开的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或结合软件方面和硬件方面的实施例的形式,这些都可以在本文中统称为“电路”、“模块”或“系统”。更进一步地,本公开的各方面可以采取体现在一个或多个计算机可读介质中的计算机程序产品
的形式,该计算机可读介质具有在其上体现的计算机可读程序代码。
77.可以使用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于电子的、磁性的、光学的、电磁的、红外线的或半导体系统、装置或设备,或前述的任何合适组合。计算机可读存储介质的更具体示例(非详尽列表)可能包括以下各项:具有一个或多个电线的电连接、便携式计算机软盘、硬盘、随机存取存储器(ram)、读取只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、光纤、便携式光盘只读存储器(cd-rom)、光存储设备、磁存储设备或前述的任何合适组合。在本文档的上下文中,计算机可读存储介质可以是可以包含或存储程序以供指令执行系统、装置或设备使用或与其结合使用的任何有形介质。
78.计算机可读信号介质可以包括计算机可读程序代码例如在基带中或作为载波的一部分而在其中体现的传播数据信号。这种传播信号可以采用多种形式中的任一形式,包括但不限于电磁、光或其任何合适组合。计算机可读信号介质可以是不是计算机可读存储介质并且可以传达、传播或输送程序以供指令执行系统、装置或设备使用或与其结合使用的任何计算机可读介质。
79.体现在计算机可读介质上的程序代码可以使用任何适当介质来传输,这些适当介质包括但不限于无线、有线、光纤电缆、rf等,或前述的任何合适组合。
80.用于执行本公开的各方面的操作的计算机程序代码可以使用一个或多个编程语言的任何组合来编写,该一个或多个编程语言包括诸如java、smalltalk、c++等之类的面向对象的编程语言和诸如“c”编程语言或类似编程语言之类的传统程序编程语言。程序代码可以完全在用户计算机上、部分在用户计算机上、作为独立软件封装、部分在用户计算机上和部分在远程计算机上或完全在远程计算机或服务器上执行。在后一情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,这些网络包括局域网(lan)或广域网(wan),或可以连接到外部计算机(例如,使用互联网服务提供商通过互联网)。
81.上文参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图对本公开的各方面进行描述。应当理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以通过计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以生产机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现一个或多个流程图和/或框图框中指定的功能/动作的器件。
82.这些计算机程序指令也可以存储在计算机可读介质中,该计算机可读介质可以引导计算机、其他可编程数据处理装置或其他设备以特定方式运转,使得存储在计算机可读介质中的指令产生制品,该制品包括执行一个或多个流程图和/或框图框中指定的功能/动作的指令。
83.计算机程序指令也可以加载到计算机、其他可编程数据处理装置或其他设备上,以使得一系列操作步骤在计算机、其他可编程装置或其他设备上执行,以产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现一个或多个流程图和/或框图框中指定的功能/动作的过程。
84.图中的流程图和框图说明了根据本公开的各种实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示模
块、区段或代码的部分,该模块、区段或代码的部分包括用于实现一个或多个指定逻辑功能的一个或多个可执行指令。在一些备选实现方式中,框中标注的功能可能未按图中标注的次序出现。例如,连续示出的两个框实际上可能基本同时执行,或这些框有时可以按相反次序执行,这取决于所牵涉到的功能。框图和/或流程图说明的每个框以及框图和/或流程图说明中的框的组合可以由执行指定功能或动作的基于硬件的专用系统或专用硬件和计算机指令的组合来实现。
85.虽然上文涉及本发明的实施例,但是可以在没有背离其基本范围的情况下,设计本发明的其他和进一步实施例,并且其范围由所附权利要求确定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1