一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

混合硬件-软件一致性框架的制作方法

2022-02-20 05:43:09 来源:中国专利 TAG:


1.本公开的示例总体上涉及加速器,该加速器使用协作硬件-软件一致性框架来在主机与加速器设备之间传送数据。


背景技术:

2.在传统i/o模型中,当使用外围i/o设备(例如,加速器)特有的定制i/o设备驱动程序来执行加速器任务或功能时,主机计算系统与外围i/o设备接口连接。该模型的缺点如下:所有加速器-存储器交互必须通过主cpu-存储器复合体(有时称为服务器主机)中的归属代理节点。该模型使用硬件实施一致性,因此,不管加速器-存储器数据覆盖区是否比高速缓存线大数量级(mb、gb或甚至tb),即使服务器主机上的处理器(产生器)可能最终仅访问加速器已经对其执行计算的该数据覆盖区的一小部分,所有加速器-存储器交互也都由归属代理节点服务并跟踪。另一缺点如下:加速器所访问并高速缓存的所有存储器都是远程的服务器主机附接存储器。该模型的又一缺点如下:基于pcie i/o的加速器不能高速缓存存储器。加速器-存储器交互仅利用服务器主机附接存储器而发生,并且该途径存在等待时间、带宽和协议消息传输开销缺点。
3.同时,硬件高速缓存一致性共享存储器多处理器范式利用多处理器cpu上的执行任务或功能中的接口连接的通用指令集架构(isa)无关模型。接口连接的通用isa无关(例如,c代码)模型随着处理单元的数目和可用于那些处理单元的共享存储器的量两者而缩放。传统上,外围i/o设备已经不能从在主机计算系统上执行的cpu所使用的一致性范式获得益处。


技术实现要素:

4.描述了用于将数据集的所有权转移到加速器设备的技术。一个示例是一种计算系统,该计算系统包括主机和加速器设备,该主机包括处理单元、归属代理(ha)以及加速器应用,该加速器设备通信耦合到主机,其中加速器设备包括:请求代理(ra),该ra被配置为执行至少一个加速器功能;从代理(sa);以及本地存储器,并且其中本地存储器是与主机中的处理单元相同的一致性域的一部分。加速器应用被配置为将数据集的所有权从ha转移到加速器设备,并且加速器设备被配置为:将数据集的最新副本存储到本地存储器中,使用sa来服务来自ra的存储器请求,并且将数据集的所有权转移回到ha。
5.在一些实施例中,加速器应用被配置为标识数据集,其中数据集是存储器块或存储器页的子部分。
6.在一些实施例中,在将数据集的所有权从ha转移到加速器设备之后,存储器块或存储器页的剩余部分继续归属于ha。
7.在一些实施例中,在不从ha接收许可的情况下,使用sa来服务来自ra的存储器请求被执行。
8.在一些实施例中,处理单元包括高速缓存,其中高速缓存存储数据集的经修改版
本。
9.在一些实施例中,加速器设备被配置为:在数据集的所有权已经被转移到加速器设备之后,向ha传输清除命令,该清除命令指示处理单元清除高速缓存,以使数据集的经修改版本被移动到本地存储器中。
10.在一些实施例中,处理单元被配置为:响应于清除命令,进行以下中的一项:使高速缓存中的数据集的经修改版本无效,或保持数据集的经修改版本的高速缓存清洁副本以用于未来低等待时间重新参考。
11.在一些实施例中,加速器应用被配置为在数据集的所有权已经被转移到加速器设备之前,向ha传输清除命令,该清除命令指示处理单元清除高速缓存,以使数据集的经修改版本被移动到本地存储器中。
12.在一些实施例中,加速器应用被配置为在数据集的所有权已被被转移到加速器设备之前,向ha传输无效命令,该无效命令指示处理单元使高速缓存无效。
13.本文中所描述的一个示例是一种加速器设备,其包括ra、sa和存储器,ra包括计算引擎,该计算引擎被配置为执行至少一个加速器功能,sa包括存储器控制器。ra被配置为接收从耦合到加速器设备的主机中的ha到sa的数据集的所有权,其中所有权通过软件应用而被转移。存储器控制器被配置为:一旦所有权已经被转移到sa,就服务由计算引擎传输的、访问存储在存储器中的数据集的请求。ra被配置为将所有权从sa转移回到ha。
14.在一些实施例中,数据集是存储器块或存储器页的子部分,其中在将数据集的所有权从ha转移到sa之后,存储器块或存储器页的剩余部分继续归属于ha,其中在不从ha接收许可的情况下,服务请求被执行。
15.在一些实施例中,加速器设备被配置为使用一致性互连协议与主机通信,以将主机的一致性域扩展为包括加速器设备中的存储器和sa。
16.本文中所描述的一个示例是一种方法,该方法包括:将数据集的所有权从主机中的ha转移到加速器设备,其中加速器设备通信耦合到主机,并且主机的一致性域被扩展到加速器设备中;将数据集移动到加速器设备中的本地存储器中;使用加速器设备中的sa来服务来自加速器设备中的ra的存储器请求;以及将所有权从加速器设备转移回到ha。
17.在一些实施例中,该方法包括:使用在主机上执行的加速器应用来标识数据集,其中数据集是存储器块或存储器页的子部分,其中在将数据集的所有权从ha转移到加速器设备之后,存储器块或存储器页的剩余部分继续归属于ha。
18.在一些实施例中,该方法包括:响应于在将所有权转移到加速器设备之后由加速器设备发出的高速缓存维护操作(cmo),使高速缓存中的经修改数据集无效。
附图说明
19.为了可以详细理解上文所叙述的特征,可以通过参考示例实现方式来进行上文所简要概括的更具体描述,其中一些示例实现方式在附图中图示。然而,应当指出,附图仅图示了典型示例实现方式,因此不应被视为限制其范围。
20.图1是根据一个示例的耦合到加速器设备的主机的框图。
21.图2是根据一个示例的耦合到加速器设备的主机的框图。
22.图3是根据一个示例的用于使用协作硬件-软件一致性框架的流程图。
23.图4是根据一个示例的用于使用协作硬件-软件一致性框架的流程图。
24.图5图示了根据一个示例的可编程ic的现场可编程门阵列实现方式。
具体实施方式
25.下文参考附图对各种特征进行描述。应当指出,附图可以按或不按比例绘制,并且在所有附图中,类似结构或功能的元件由同样的附图标记表示。应当指出,附图仅旨在便于对特征的描述。它们不旨在作为说明书的详尽描述或作为对权利要求范围的限制。另外,所图示的示例无需具有所示出的所有方面或优点。结合特定示例所描述的方面或优点不必限于该示例,并且可以在任何其他示例中实践,即使没有如此图示或没有如此明确描述。
26.本文中的示例描述了加速器设备(例如,外围i/o设备或加速器附接存储器),该加速器设备与主机计算设备中的硬件元件共享相同的一致性域。结果,加速器设备的一致性域中的计算资源可以以与主机中的cpu到cpu通信类似的方式与主机通信。这意味着计算资源可以利用一致性类型功能,诸如直接通信(没有地址转换)、更高效的存储器使用、非均匀存储器访问(numa)感知等。一致性存储器依赖于细粒度存储器管理,其中归属代理节点以高速缓存线水平来管理存储器。
27.然而,加速器任务通常处置大区块存储器,可以使用软件一致性而非硬件一致性来更好地管理大区块存储器,其中主机中的归属代理管理由加速器设备处置的数据。例如,硬件一致性模型的缺点如下:所有加速器-存储器交互仍然首先通过服务器主机。不管加速器-存储器数据覆盖区是否比高速缓存线大数量级(mb、gb或甚至tb),并且不管存储器是否是加速器附接存储器,该模型都使用硬件实施一致性,即使处理器(产生器)可能最终仅访问加速器已经对其执行计算的该数据覆盖区的一小部分,所有加速器-存储器交互也仍然首先由主机服务并跟踪。相比之下,软件一致性是加速器设备管理存储在其存储器中的数据的情况,与传统主机-i/o模型相似,其中主机将大区块数据传送到i/o设备,设备处理数据,并且i/o设备通知主机经处理数据何时就绪。同时,软件一致性模型保证主机不会访问数据,直至经i/o加速器处理的数据就绪。
28.本文中的实施例描述了硬件和软件一致性的混合,以创建混合硬件-软件框架,当主机和加速器在相同一致性域中时,当大区块数据从主机被移动到加速器设备中时,该混合硬件-软件框架减少了管理数据的开销。在一个实施例中,在主机上执行的加速器应用标识其希望传送到加速器设备以进行处理的数据集。通过修改关于数据的元数据或通过修改由加速器设备访问的控制数据结构,加速器应用经由软件一致性方法通知加速器设备。作为响应,加速器设备使用硬件一致性技术向主机传输请求,从而要求数据集的最新近版本,并且要求数据集的高速缓存副本不保留在主机中。然后,使用硬件一致性技术,主机确保数据的最新近版本存储在加速器设备中的存储器中,并且使cpu高速缓存中的数据集的所有副本无效。加速器设备中的请求代理根据加速应用经由从代理开始处理本地存储器中的数据集。在一个实施例中,请求代理可以高速缓存本地存储器的子集,并且处理高速缓存副本。软件一致性已经保证了从加速器设备中的请求代理接收的任何存储器操作请求可以经由从代理访问本地存储器中的数据集,而无需从代理从主机获得许可。例如,从代理无需利用归属代理检查是否存在数据集的更新近版本,或检查高速缓存副本是否保留要由加速器设备处理的数据。当加速器设备完成了对数据集的处理时,加速器设备清除高速缓存子集,
更新本地存储器,并且例如通过加速器设备修改由主机处理器访问的元数据或控制数据结构,来经由软件一致性方法将所有权转移回到主机中的归属代理。这将主机重新建立为数据集与系统其余部分的硬件一致性的实施器,这类似于在传统主机-i/o模型中完成任务时的情况,其中加速器设备处于与主机不同的域中。因此,通过处于相同一致性域中并且依赖于硬件一致性实施,加速器设备和主机避免了当经由软件方法将大区块数据的所有权转移到加速器设备中的本地存储器时出现的高开销。通过处于相同一致性域中,加速器设备和主机还可以避免将经处理数据从加速器设备中的本地存储器移动回到主机的高开销。
29.图1是根据一个示例的包括耦合到加速器设备140的主机105的计算系统100的框图。加速器设备140可以是执行主机105所发出的任务的任何设备(例如,外围i/o设备)。在一个实施例中,主机105使用pcie连接而通信耦合到加速器设备140。在另一实施例中,加速器设备140是主机附接存储器的一部分,而非分开的i/o设备。主机105可以表示单个计算机(例如,服务器)或互连的多个物理计算系统。在任何情况下,主机105包括多个cpu 110、存储器115和归属代理135。
30.存储器115包括操作系统(os)120,该os 120可以是能够执行本文中所描述的功能的任何os。在一个实施例中,os 120(或管理程序或内核)建立用于cpu 110和存储器115的高速缓存一致性共享存储器多处理器范式。在一个实施例中,cpu 110和存储器115受os管理(或受内核/管理程序管理),以形成遵循高速缓存一致性共享存储器多处理器范式的一致性域。
31.在本文中的实施例中,共享存储器多处理器范式连同该范式的所有性能优点、软件灵活性和开销减少一起可用于加速器设备140。进一步地,将加速器设备140中的计算资源添加到与cpu 110和存储器115相同的一致性域,实现了通用isa无关开发环境。
32.在一个实施例中,加速器设备140和主机105使用一致性互连协议来将主机105的一致性域扩展到加速器设备140中。例如,加速器设备140可以使用加速器的高速缓存一致性互连(ccix),以用于在设备140内扩展一致性域。ccix是高性能的芯片到芯片互连架构,其向异构系统架构提供高速缓存一致性框架。ccix将受内核管理的语义带给加速器设备140。在主机105上的(一个或多个)cpu 110与系统中的各种其他加速器之间自动维持高速缓存一致性,该各种其他加速器可以设置在任何数目的外围i/o设备上。
33.然而,除了ccix之外,还可以使用其他一致性互连协议,诸如快速路径互连(qpi)、全向路径、无限构造、nvlink或opencapi,以将主机105中的一致性域扩展为包括加速器设备140中的计算资源。也就是说,加速器设备140可以被定制为支持便于形成包括加速器设备140中的计算资源的一致性域的任何类型的一致性互连协议。
34.在一个实施例中,ha 135针对系统100中的存储器(主机105中的存储器115和加速器设备140中的存储器160两者)执行一致性动作。在一致性系统中,存储器地址范围归属于指定ha,这提供了由主机105中的cpu 110以及加速器设备140中的请求代理145访问的高速缓存线的快速一致性解决的优点。ha 135确保当接收到读取或修改数据的请求时,检索到可以同时存储在不同位置(或高速缓冲)中的该数据的最新近版本。那些请求可以源自cpu 110或附接加速器设备140中的请求代理(例如,请求代理145)。尽管示出了一个ha135,但是计算系统100可以具有任何数目的ha,其中每个ha用作不同的存储器地址范围的归属。
35.加速器设备140可以是许多不同类型的外围设备,诸如可插拔卡(其插入到主机
105中的扩展槽中)、片上系统(soc)、图形处理单元(gpu)、现场可编程门阵列(fpga)等。例如,加速器设备140可以包括可编程逻辑(例如,可编程逻辑阵列),或者可以不包括任何可编程逻辑,而是代替地仅包含硬化电路(其可以是软件可编程的)。
36.加速器设备140包括请求代理(ra)145、从代理(sa)155和存储器160(也称为本地存储器)。在一个实施例中,ra 145是计算引擎,该计算引擎被优化为执行特殊计算。在一个实施例中,ra 145是硬件、固件或其组合。例如,ra 145可以是以可编程逻辑实现的一个或多个计算引擎。在另一示例中,ra 145可以是由硬化电路装置(例如,gpu中的核或其他asic)形成的计算引擎。在任何情况下,ra 145执行加速器设备的加速器功能150。这些功能150可以是机器学习加速器、密码加速器、图形加速器、搜索加速器、解压缩/压缩加速器等的一部分。在一个实施例中,加速器功能150在加速器设备140中的可编程逻辑(例如,可编程逻辑阵列)中实现。在另一实施例中,加速器功能150在诸如处理核或引擎之类的硬化逻辑(其可以是软件可配置的)中实现。
37.通常,ra 145中的一个或多个计算引擎执行加速器功能150比使用主机105中的cpu 110中的一个或多个cpu 110执行这些相同功能更快或更高效。尽管示出了一个加速器功能150并且示出了一个加速器应用125,但是计算系统100可以具有任何数目的加速器功能,其中每个加速器功能正在处理存储器中的不同数据集。
38.在一个实施例中,sa 155是存储器控制器(其可以是硬件电路),其服务从存储器160读取数据或向存储器160写入数据的请求。ra145确保当执行从ra 145到存储器160的数据存储器操作时,维持一致性。例如,如果ra 145想要从存储器160读取数据,则ra 145可以首先向ha 135发送请求,以确定系统100中的其他地方是否有数据的更新近版本可用。进一步地,尽管存储器160被示出在加速器设备140内,但是在另一实施例中,存储器160可以在与形成加速器设备140的集成电路分开的芯片(例如,附接存储器)上。
39.如下文所更详细描述的,sa 155依据系统100的当前阶段或配置而具有不同功能。在一个阶段中,ha 135是存储在存储器160中的数据的唯一代理,并且sa 155的功能类似于一致性系统中的典型存储器控制器。然而,在另一阶段中,软件一致性已经给予sa 155存储在本地存储器160中的数据的所有权,并且当处理存储在存储器160中的数据时,ra 145无需向ha 135要求许可。例如,当ra 145想要从存储器160读取数据以执行加速器功能150时,在第二阶段中,sa 155可以提供该数据,而无需ra 145首先利用ha 135检查以查明系统100中的其他地方(例如,存储在存储器115中或cpu 110中的一个cpu 110中的片内高速缓存中)是否存在该数据的更新近版本。
40.虽然ra 145被图示为对于存储器160是分开的,但是在一个实施例中,ra 145可以是嵌入在存储器160内并且执行存储器内计算的计算引擎。在那种情况下,加速器位置可以是存储器内的,其中ra 145和sa 155在逻辑上不同并且执行存储器内计算,而非如图1所示加速器设备140具有物理上不同的ra 145和sa 155。
41.图2是根据一个示例的耦合到加速器设备140的主机105的框图。与传统i/o模型不同,加速器设备140中的存储器160和处理元件(例如,ra 145和sa 155)处于与主机105中的cpu 110和存储器相同的一致性域中。如此,主机105中的ha 135确保存储在主机105和加速器设备140中的数据以一致性方式被存储,以使无论起源于主机105还是起源于加速器设备140的针对存储器操作的请求都会接收数据的最新近版本,而不管该数据是存储在主机105
中的存储器中还是存储在加速器设备140中。
42.在一些应用中,处理数据时的瓶颈发生在将数据移动到处理该数据的计算单元,而非处理该数据所花费的时间。换句话说,向和从处理器或计算引擎移动数据限制了可以执行操作的速度,而不是处理器或计算引擎是瓶颈。由于加速器具有可以异常快速地执行某些类型的功能的专用计算引擎(例如,加速器引擎),所以当使用加速器时,这种情况经常发生。通常,限制使用加速器的效率的并非计算引擎,而是系统将数据移动到加速器以进行处理的能力。将数据移动到计算引擎限制完成任务所需的时间的情况被称为计算存储器瓶颈。将计算引擎移动为更为靠近数据可以帮助缓解这个问题。
43.在第一实施例中,可以使用传统i/o数据共享模型,其中大区块数据从主机105被移动到加速器设备140。然而,主机105和加速器设备140不再处于相同一致性域中。结果,基于i/o的加速器设备不能高速缓存存储器,这还将计算引擎(例如,ra 145)与其需要处理的数据分开。代替使用硬件一致性,使用软件一致性,其中软件应用(例如,加速器应用125)利用ha 135建立其想要管理什么数据并且将什么数据传送到加速器设备140(例如,数据集130)。一旦加速器设备140完成了对数据的处理,加速器应用125就可以再次取得数据的所有权并且利用ha 135维持(或重新建立)针对该数据的硬件一致性。
44.在第二实施例中,主机105和加速器设备140可以共享相同一致性域,以使数据可以高速缓存在加速器设备140中,以帮助缓解计算存储器瓶颈。例如,存储器可以附接到主机105(例如,主机附接存储器),而数据可以存储在ra 145中的高速缓存内。然而,该模型的缺点如下:所有加速器-存储器交互都通过主机105中的主cpu-存储器复合体中的ha 135。该实施例还使用硬件实施一致性,因此,不管加速器-存储器数据覆盖区是否比高速缓存线大数量级(mb、gb或甚至tb),即使cpu 110(产生器)可能最终仅访问加速器设备140已经对其执行计算的该数据覆盖区的一小部分,所有加速器-存储器交互也都由ha 135服务并跟踪。换言之,即使cpu 110a可能仅访问该数据的一小部分,ha 135也必须跟踪发送到ra 145中的高速缓存的所有数据。另一缺点如下:由加速器设备140访问和高速缓存的所有存储器都是远程的主机附接存储器。
45.在第三实施例中,存储由加速器设备140处理的数据的存储器(例如,存储器160)附接到加速器设备140(或处于加速器设备140中),但是归属于主机105中的ha 135。在该实施例中,第二实施例的缺点也适用,因为所有加速器-存储器交互仍然都通过主机105中的ha135。然而,与先前实施例不同,一旦加速器设备140获得了高速缓存线的所有权,对数据集130的更新可以在存储器160本地发生。该实施例还使用硬件实施一致性,因此第二实施例的另一缺点也适用,因为不管加速器-存储器数据覆盖区是否比高速缓存线大数量级(mb、gb或甚至tb)并且不管存储器是否是加速器附接存储器,即使cpu 110a可能最终仅访问由加速器设备140处理的该数据集130的一小部分,所有加速器-存储器交互也仍然首先由ha 135服务并跟踪。
46.不同于上述三个实施例,可以使用协作框架,其中上述第一实施例、第二实施例和第三实施例的益处并入系统中,同时避免它们的缺点。除了上述益处之外,协作框架还具有附加优点。在一个实施例中,存储器继续归属于主机105中的ha 135,从而继续向主机105中的cpu 110所访问的高速缓存线提供快速一致性解决的优点。而且,与像在第一实施例中那样要求加速器对存储器的所有访问都通过软件一致性以粗略水平来跟踪相反,或与如在第
二实施例和第三实施例中那样要求加速器对存储器的所有访问都具有细粒度跟踪相反,在协作框架中,仅加速器-存储器交互的细粒度子集首先通过ha 135以要求所有权。
47.关于协作框架的另一优点,与其中所有存储器页或整个存储器块可以从cpu高速缓存(例如,高速缓存210)中被清除的软件一致性不同,对于去往ha 135的加速器-存储器交互的子集,从cpu高速缓存210中仅窥探高速缓存在主机cpu 110中的部分。可以继续高速缓存未接触cpu高速缓存210的内容的加速器-存储器交互,从而向cpu 110(及其核205)提供对该数据的低等待时间访问。
48.关于协作框架的另一优点,与其中加速器-存储器交互仅利用主机附接存储器而发生并且该途径存在等待时间、带宽和协议消息传输开销缺点的第二实施例和第三实施例不同,利用协作框架,加速器-存储器交互可以在加速器附接存储器160上发生,其中加速器位置靠近存储器或在存储器中,从而提供低等待时间、高带宽专用路径,并且由于ra 145与sa 155之间的后续私有加速器-存储器交互,还使协议消息传输开销最小。
49.关于协作框架的另一优点,与第三实施例(其中即使加速器位置靠近存储器或在存储器中,与存储器的交互也需要归属节点所有权)不同,在协作框架中,一旦加速器设备140要求将要对其执行计算的数据集130的所有权,所有后续计算存储器动作都在没有与ha 135交互的情况下发生,直至所有权返回到ha 135。
50.以下实施例描述了用于使用协作框架来实现上述优点的不同技术。然而,协作框架不限于这些优点。该框架的一些实现方式具有的优点可以比上文所列出的优点少,而其他实现方式可以具有未被列出的不同优点。
51.图3是根据一个示例的用于使用协作硬件-软件一致性框架的方法300的流程图。在框305处,加速器应用标识要发送到加速器进行处理的数据集。在一个实施例中,加速器应用是执行可以受益于加速器设备的任务的软件应用。例如,加速器应用可以是:机器学习应用,其中加速器设备包括一个或多个机器学习引擎;视频应用,其中加速器设备执行图形处理;搜索引擎,其中加速器设备搜索特定词语或短语;或安全应用,其中加速器设备对数据执行加密/解密算法。
52.在任何情况下,加速器设备可以得知协作框架,该协作框架许可数据的所有权从主机上的ha转移到加速器设备上的sa,而主机和加速器设备共享相同一致性域。如此,加速器设备可以标识它希望传输到作为协作框架的一部分的加速器设备的数据集。
53.在框310处,加速器应用(例如,或一些其他软件应用)将数据集的所有权从服务器主机转移到加速器设备。在一个实施例中,加速器应用更新由加速器设备监控的元数据或标志。更新该元数据或标志将数据集的所有权从ha转移到加速器设备(例如,加速器设备中的ra)。所有权的这种转移使加速器设备中的硬件知道它可以对数据集工作而无需担心主机中的ha(因为加速器设备现在拥有数据集)。
54.在一个实施例中,加速器应用仅针对将要对其执行计算存储器动作的数据的子集而转移所有权。也就是说,加速器应用可以仅标识加速器设备将作为其加速器功能的一部分而处理的数据。如此,主机中的加速器应用可以仅针对加速器设备将处理的数据而转移所有权。这优于传统i/o模型和软件一致性,在该传统i/o模型和软件一致性中,从cpu高速缓存中清除所有页或整个存储器块,而不是只清除所需数据集(该所需数据集可以是那些页和存储器块的子部分)。
55.在框315处,加速器设备(或更具体地,ra)通过向服务器主机请求数据集的最新副本,来行使其对数据集的所有权。这样做将数据集移动到加速器设备中的本地存储器中。在一个实施例中,作为维护主机与加速器设备之间的硬件一致性的一部分,可以保证数据集在加速器设备的本地存储器中。在那种情况下,在框310处加速器应用转移所有权之前,在框305处标识的数据集可能已经存储在加速器中的本地存储器中。然而,在另一实施例中,ra(或加速器设备)可以使用清除命令和/或无效命令,来确保数据集被移动到加速器设备中的本地存储器,和/或高速缓存副本没有剩余。稍后在图4中更详细地描述用于确保加速器设备中的本地存储器包含数据集的最新近版本的各种技术。
56.在框320处,ra使用sa来服务存储器请求。当sa服务加速器设备中的存储器请求时,sa可以服务那些请求,而无需首先利用ha检查例如系统中的其他地方是否有数据的更新近版本可用。也就是说,数据集现在归属于加速器设备。
57.在一个实施例中,当数据集归属于加速器设备时,ha不跟踪对数据集的任何修改。由于ra可以读取并修改数据集,而无需sa首先需要来自ha的许可,所以这减少了系统中的开销。如上文所讨论的,ha在每个高速缓存线的基础上跟踪数据,这意味着数据集中的每个高速缓存线将需要在服务存储器操作之前由ha检查。然而,由于数据集归属于sa,所以该功能仅由sa执行,而无需来自主机中的ha的帮助。
58.而且,在ra正在处理数据集的同时并且只要ra未指示它已完成,软件一致性确保主机中的cpu仅可以读取数据集,而不可以写入它。软件一致性还可以确保如果cpu要读取尚未更新的数据,cpu在执行该读取时不得通过读取“陈旧”值导出任何含义。只有在加速器已经将所有权交回到软件/ha之后,cpu才可以从经更新数据中的值导出含义。
59.在框325处,ra确定它是否完成了数据集。如果ra尚未完成对数据集执行其加速器功能,则方法300重复到320,在320处,ra继续向sa传输针对数据集的部分的附加存储器请求。然而,一旦ra完成了对数据集的处理,方法300就进行到框330,在框330处,ra将数据集的所有权转移回到ha。因此,不是如在框310处执行的那样软件转移所有权,而是在框330处,是加速器设备中的硬件来设置软件可访问元数据,该软件可访问元数据向加速器应用指示加速器设备完成了数据集。在一个实施例中,当ra已经完成对数据集执行加速器功能时,对于产生器-消费者模型需要通知cpu的情况,ra更新元数据。ha可以确保:利用主机内的实体(诸如主机附接存储器和cpu中的高速缓存)来维持(或重新建立)该数据(其已经被修改)的硬件一致性。换句话说,软件(例如,加速器应用)使用ha以隐含方式行使数据集的所有权。加速器应用只知道作为一致性实施器的ha。
60.在一个实施例中,由于目标数据集被标识并且无需清除主机中的高速缓存(例如,cpu高速缓存)/使之无效,所以尽管与用于传统i/o模型的软件一致性不同,但是如方法400所示,将数据集的所有权从ha转移到sa并且转移回到ha可以被视为一种类型的软件一致性。
61.图4是根据一个示例的用于使用协作硬件-软件一致性方案的方法400的流程图。总体上,方法400描述了用于将数据从主机中的各种存储器元件移动到加速器设备中的本地存储器的不同技术,以使ha可以将数据的所有权转移到sa,如方法300所描述的。
62.在框405处,cpu高速缓存数据集的至少一部分。也就是说,在加速器应用转移数据集的所有权之前,数据集的一些数据可以存储在cpu中的高速缓存中。在框410处,cpu修改
数据集的存储在其高速缓存中的部分。也就是说,在加速器应用在方法300的框310处转移所有权之前,数据集的一些数据可以存储在主机中的各种高速缓存和存储器中。存储在各种高速缓存中的数据集可以是主机中的存储器的复制副本,或由于软件(例如,加速器应用)使用ha以隐含方式行使对数据集的所有权而对数据集进行的更新。如此,在将数据集的所有权转移到加速器设备中的sa之前,系统需要一种用于确保数据集的最近最新版本存储在加速器附接存储器(即,本地存储器)中的技术。
63.在框415处,方法400依据是使用软件还是使用硬件来将经修改的数据集发送到加速器设备来进行拆分。也就是说,用于确保加速器设备具有最新近数据集的任务可以由软件(例如,加速器应用)或加速器设备中的硬件(例如,ra)来执行。
64.假设软件被指派了该任务,则方法400进行到框420,在框420处,主机中的加速器应用确保经修改数据被发送到加速器设备。在一个实施例中,在加速器设备已经将数据集的所有权从主机中的ha转移到加速器设备之前(例如,在方法300中的框310之前),执行框420。
65.存在用于将服务器中的经修改数据移动到加速器设备的至少两个不同选项,该至少两个不同选项被图示为备选子框425和430。在框425处,ha仅从加速器应用接收清除命令。在一个实施例中,该清除命令是持久清除或清除到目标,以确保所有经修改数据(例如,cpu高速缓存中的经修改数据)已经在加速器设备中的持久性(即,非易失性)存储器或目标存储器中进行更新。响应于清除命令,ha确保从主机中的各种高速缓存中清除经修改数据,并且将经修改数据拷贝到加速器设备中的本地存储器中。
66.主机中的cpu使高速缓存无效,或者保持与数据集对应的内容的高速缓存清洁副本,以用于未来低等待时间重新参考。在该示例中,ha可以不从加速器应用接收明确的无效命令,但cpu可以前进并且使其数据集的存储在其高速缓存中的部分无效。在另一示例中,当数据归属于加速器设备中的sa时,cpu可以保持(它们可以修改的)数据集的其自己的本地副本。
67.在备选实施例中,在框430处,ha从加速器应用接收清除命令和无效命令。作为响应,主机中的cpu清除其高速缓存并且使其高速缓存无效。
68.在一个实施例中,在框425和430中描述的清除命令和无效命令是高速缓存维护操作(cmo),高速缓存维护操作(cmo)自动确保经修改的数据集(例如,最近最新数据集)存储在本地存储器中。在一个实施例中,加速器应用可以发出两种类型的cmo:一种类型的cmo仅保证最近最新数据集存储在本地存储器中,但许可cpu维持高速缓存副本(例如,仅清除命令),并且另一种类型的cmo不仅保证最近最新数据集存储在本地存储器中,而且还保证高速缓存副本没有剩余(例如,清除命令和无效命令)。
69.返回到框415,如果加速器设备中的硬件(而非软件)被委派确保它接收经修改的数据集的任务,则方法进行到框435,在框435处,硬件等待直至加速器应用将数据集的所有权转移到加速器设备(如方法300的框310中所讨论的)。一旦发生所有权的这种转移,方法400就进行到框435,在框435处,加速器设备中的硬件(例如,ra)发出一个或多个cmo以确保经修改数据被发送到加速器设备。与框420类似,存在用于将主机中的经修改数据移动到加速器设备的至少两个不同选项,该至少两个不同选项被图示为备选子框445和450。在框445处,ha仅从ra接收清除命令。主机中的cpu可以采取的动作可以与框425中所描述的动作相
同,因此这里不再重复。
70.备选地,在框450处,ha从ra接收清除命令和无效命令。作为响应,主机中的cpu清除其高速缓存并且使其高速缓存无效,如框430所描述的。
71.在一个实施例中,ha可以具有末级高速缓存。当转移所有权时,ha可以确保新近数据集不会卡在末级高速缓存中,而是代替地,被拷贝到加速器设备的本地存储器中。末级高速缓存中的最终状态与cpu高速缓存的状态相同,并且与由框420或框440产生的cpu高速缓存中的动作一致。
72.图3和图4所描述的技术的一些其他非限制性优点在于:在存储器继续归属于主机中的ha的情况下(当数据未归属于加速器上的sa时),cpu对存储器的所有高速缓存和一致性动作由本地ha快速解决,从而即使协作框架并行存在,也维持高性能cpu-存储器访问。进一步地,协作框架可以仅请求加速器-存储器交互的子集的所有权,以行使分开的或组合的cmo和向ha的所有权请求。通过仅针对相关子集而转移所有权,因不必如传统i/o模型中的纯软件一致性模型所要求的那样要求整个数据集的所有权,所以加速器具有性能优势。
73.另一优点如下:因为不与加速器-存储器交互重叠的子集继续由维持高性能cpu-存储器访问的本地ha来服务,所以cpu-存储器交互还可以获得性能优势。而且,在一个实施例中,仅从cpu高速缓存清除在cpu与加速器之间共享的数据子集,并且不与加速器共享的内容可以继续被高速缓存在cpu中,从而向cpu提供对该数据的低等待时间访问。此外,独立于cpu-存储器交互,在执行计算存储器域特定架构中的加速器-存储器交互发生在低等待时间高带宽专用路径上。协作框架的软件一致性子集可以保证:主机与加速器之间的元数据切换允许独立的cpu-存储器执行和加速器-存储器执行,从而改善cpu和加速器设备两者的整体横截面带宽、等待时间和程序执行性能。
74.进一步地,虽然上述实施例具体描述了用于计算存储器瓶颈的混合硬件-软件一致性框架,但是类似技术可以应用于相关cpu-加速器共享存储器应用。
75.图5图示了加速器设备140的fpga 500实现方式,更具体地,其中fpga具有pl阵列,该pl阵列包括大量不同的可编程瓦片,这些可编程瓦片包括收发器37、clb 33、bram 34、输入/输出块(“iob”)36、配置和时钟逻辑(“config/clocks”)42、dsp块35、专用输入/输出块(“io”)41(例如,配置端口和时钟端口)、以及其他可编程逻辑39(诸如数字时钟管理器、模数转换器、系统监控逻辑等)。fpga还可以包括pcie接口40、模数转换器(adc)38等。
76.在一些fpga中,每个可编程瓦片可以包括至少一个可编程互连元件(“int”)43,该至少一个可编程互连元件(“int”)43具有到相同瓦片内的可编程逻辑元件的输入和输出端子48的连接,如图5的顶部处所包括的示例所示。每个可编程互连元件43还可以包括到相同瓦片或(一个或多个)其他瓦片中的(一个或多个)相邻可编程互连元件的互连段49的连接。每个可编程互连元件43还可以包括到逻辑块(未示出)之间的通用路由资源的互连段50的连接。通用路由资源可以包括逻辑块(未示出)之间的路由通道,包括互连段(例如,互连段50)的轨道和用于连接互连段的开关块(未示出)。通用路由资源的互连段(例如,互连段50)可以跨越一个或多个逻辑块。可编程互连元件43与通用路由资源一起实现用于所图示的fpga的可编程互连结构(“可编程互连”)。
77.在一个示例实现方式中,clb 33可以包括可配置逻辑元件(“cle”)44,cle 44可以被编程以实现用户逻辑加上单个可编程互连元件(“int”)43。除了一个或多个可编程互连
元件,bram 34还可以包括bram逻辑元件(“brl”)45。通常,瓦片中包括的互连元件的数目取决于瓦片的高度。在所示示例中,bram瓦片具有与五个clb相同的高度,但也可以使用其他数目(例如,四个)。除了适当数目的可编程互连元件,dsp块35还可以包括dsp逻辑元件(“dspl”)46。除了可编程互连元件43的一个实例,iob 36还可以包括例如输入/输出逻辑元件(“iol”)47的两个实例。本领域技术人员将清楚,例如,连接到io逻辑元件47的实际io焊盘通常不限于输入/输出逻辑元件47的区域。
78.在所示示例中,靠近管芯的中心的水平区域(如图5所示)用于配置、时钟和其他控制逻辑。从该水平区域或列延伸的垂直列51用于跨fpga的宽度分配时钟和配置信号。
79.利用图5所图示的架构的一些fpga包括破坏构成fpga的大部分的规则柱状结构的附加逻辑块。附加逻辑块可以是可编程块和/或专用逻辑。
80.注意,图5旨在仅图示示例性fpga架构。例如,一行中的逻辑块的数目、行的相对宽度、行的数目和顺序、行中包括的逻辑块的类型、逻辑块的相对尺寸、以及图5顶部处包括的互连/逻辑实现方式仅为示例性的。例如,在实际的fpga中,通常在clb出现的任何位置都包括一个以上的相邻clb行,以便于用户逻辑的高效实现,但相邻clb行的数目随fpga的整体尺寸而变化。
81.在前文中,参考本公开中所呈现的实施例。然而,本公开的范围不限于所描述的具体实施例。相反,所描述的特征和元件的任何组合(无论是否涉及不同的实施例)都被设想为实现并实践所设想的实施例。更进一步地,尽管本文中所公开的实施例可以实现优于其他可能的解决方案或优于现有技术的优点,但是无论给定实施例是否实现了特定优点都不限制本公开的范围。因此,除非在(一个或多个)权利要求中明确陈述之外,否则前述方面、特征、实施例和优点仅是说明性的,并且不被认为是所附权利要求的要素或限制。
82.本领域技术人员应当领会,本文中所公开的实施例可以体现为系统、方法或计算机程序产品。因而,各方面可以采取以下形式:完全硬件实施例、完全软件实施例(包括固件、驻存软件、微代码等)、或组合软件方面和硬件方面的实施例,这些实施例在本文中可以全部统称为“电路”、“模块”或“系统”。更进一步地,各方面可以采取计算机程序产品的形式,计算机程序产品体现在一个或多个计算机可读介质中,该一个或多个计算机可读介质在其上体现有计算机可读程序代码。
83.可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于:电子、磁性、光学、电磁、红外或半导体系统、装置或设备,或前述项的任何合适的组合。计算机可读存储介质的更具体示例(非穷举列表)包括以下各项:具有一个或多个接线的电连接、便携式计算机软盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存存储器)、光纤、便携式紧凑碟只读存储器(cd-rom)、光学存储设备、磁性存储设备或前述项的任何合适组合。在本文档的上下文中,计算机可读存储介质是可以包含或存储程序的任何有形介质,该程序用于由指令执行系统、装置或设备使用或与其结合使用。
84.计算机可读信号介质可以包括其中体现有计算机可读程序代码的传播数据信号,该传播数据信号例如在基带中或作为载波的一部分。这样的传播信号可以采用各种各样的形式中的任何形式,包括但不限于电磁、光学或其任何合适组合。计算机可读信号介质可以是如下的任何计算机可读介质,该计算机可读介质不是计算机可读存储介质,并且可以传
达、传播或输送用于由指令执行系统、装置或设备使用或与其结合使用的程序。
85.体现在计算机可读介质上的程序代码可以使用任何适当介质来传输,这些介质包括但不限于无线、有线、光纤线缆、rf等,或前述项的任何合适组合。
86.用于执行本公开的方面的操作的计算机程序代码可以以一种或多种编程语言的任何组合来写,包括诸如java、smalltalk、c 等之类的面向对象编程语言和诸如“c”编程语言或类似编程语言之类的常规过程编程语言。程序代码可以完全在用户的计算机上执行,部分地在用户的计算机上执行,作为独立软件封装,部分地在用户的计算机上执行并且部分地在远程计算机上执行,或完全在远程计算机或服务器上执行。在后一场景中,远程计算机可以通过任何类型的网络连接到用户的计算机,该网络包括局域网(lan)或广域网(wan);或可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。
87.下文参考根据本公开中所呈现的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图,对本公开的方面进行描述。应当理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的部件。
88.这些计算机程序指令还可以存储在计算机可读介质中,该计算机可读介质可以引导计算机、其他可编程数据处理装置或其他设备以特定方式运转,使得存储在计算机可读介质中的指令产生包括指令的制造品,该指令实现在流程图和/或框图的一个或多个框中指定的功能/动作。
89.计算机程序指令还可以加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,从而产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的过程。
90.图中的流程图和框图图示了根据本发明的各种示例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,指令的模块、段或部分包括用于实现(一个或多个)指定逻辑功能的一个或多个可执行指令。在一些备选实现方式中,框中指出的功能可以不按照图中指出的次序发生。例如,依据所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或框有时可以以相反次序执行。还应当指出,框图和/或流程图的每个框以及框图和/或流程图中的框的组合可以由基于专用硬件的系统来实现,该基于专用硬件的系统执行指定功能或动作或执行专用硬件和计算机指令的组合。
91.虽然前述内容涉及具体实例,但可以在不脱离其基本范围的情况下设计其他和进一步示例,并且其范围由所附权利要求书确定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献