用于存储器模型一致性的多播和反射存储器行为的制作方法

未命名 08-01 阅读:148 评论:0

用于存储器模型一致性的多播和反射存储器行为


背景技术:

1.计算过程可以利用多个处理元件,例如图形处理单元(gpu)的流式多处理器(sm),来执行处理操作。为此,处理元件可以提供对存储器访问的请求,这可能涉及使用存储器模型从存储器读取和/或向存储器写入。存储器模型可以允许处理元件在读取和写入数据时进行协调,这对于支持并行或以其他方式协调处理是至关重要的。例如,在存储器分布在多个gpu的系统中,gpu的每个sm可以从gpu的本地存储器或另一个gpu的远程存储器读取和/或写入gpu的本地存储器或另一个gpu的远程存储器。为了促进sm之间的协调,存储器模型可以实现虚拟寻址方案,其中虚拟地址(va)跨gpu映射到物理地址(pa)。为了保持一致性,每个va可以映射到特定的pa,以便任何sm可以使用va来请求使用特定pa执行存储器操作。
2.当处理元件正在执行协调处理时,一些处理操作可能涉及从多个处理元件接收数据和/或向多个处理元件提供数据。例如,全归约操作可能涉及从每个处理元件收集数据以跨设备执行归约(例如,求和、最大值等)并将结果广播到每个处理元件。收集数据可能需要每个处理元件的存储器访问请求并且广播结果可能再次需要每个处理元件的存储器访问请求。因此,所需的请求数量可能会随着参与处理元件的数量、延迟和/或带宽要求的增加而增加。这种开销在深度学习中可能特别有影响,其中全归约已成为高频执行的关键操作。


技术实现要素:

3.本公开的实施例涉及用于存储器模型一致性的多播和反射存储器行为。公开了提供来自处理元件的多播存储器访问请求的系统和方法。所公开的方法可以与单播存储器模型兼容,同时确保处理元件之间的一致性。
4.与诸如上述的那些传统方法相比,存储器模型可以支持多播,其中对于存储器访问操作的单个请求可以传播到与多个处理元件相关联的多个物理地址(例如,对应于相应的本地存储器)。因此,该请求可以使得从每个处理元件的存储器读取数据和/或向每个处理元件的存储器写入数据。在一些示例中,存储器模型向进程公开多播。这可以包括提供单独的多播和单播指令或具有用于指示多播或单播的一个或更多个参数(例如,指示虚拟地址)的共享指令。附加地或替代地,使用多播还是单播处理一个或更多个请求对于进程和/或应用程序可能是不透明的,或者可以由系统以其他方式确定。可以对使用多播的处理请求施加一个或更多个约束以维持一致的存储器接口。
附图说明
5.下面参考附图详细描述用于存储器模型一致性的多播和反射存储器行为的本系统和方法,其中:
6.图1是示出根据本公开的一些实施例的在协作处理环境中实现用于单播和多播的单独存储器空间的存储器系统的转换路径的示例的图;
7.图2是示出根据本公开的一些实施例的可以如何使用单播或多播来执行操作的示例的表;
8.图3是示出根据本公开的一些实施例的在协作处理环境中使用约束来实现多播的存储器系统的转换路径的示例的图;
9.图4是示出根据本公开的一些实施例的存储器管理器可用于响应于存储器访问操作的请求来执行多播的方法的流程图;
10.图5是示出根据本公开的一些实施例的交换机可以响应于存储器访问操作的请求而用来执行多播的方法的流程图;
11.图6是示出根据本公开的一些实施例的响应于存储器访问操作的请求进行多播的方法的流程图;
12.图7是适用于实现本公开的一些实施例的示例计算设备的框图;以及
13.图8是适用于实现本公开的一些实施例的示例数据中心的框图。
具体实施方式
14.本公开的实施例涉及用于存储器模型一致性的多播和反射存储器行为。公开了提供来自处理元件的多播存储器访问请求的系统和方法。所公开的方法可以与单播存储器模型兼容,同时确保处理元件之间的一致性。
15.根据本公开的方面,存储器模型可以支持多播,其中存储器访问操作的单个请求可以传播到与多个处理元件相关联的多个物理地址(例如,对应于相应的本地存储器),从而允许请求使得从每个处理元件的存储器读取数据和/或向每个处理元件的存储器写入数据。在至少一个实施例中,请求可以指示虚拟地址,并且虚拟地址可以映射到物理地址。然后可以使用对相应存储器的存储器访问来处理该请求,这些存储器可以分布在多个设备上,例如图形处理单元(gpu)。在一个或更多个实施例中,可以使用交换机来传播请求,该请求可以至少部分在一个或更多个设备内部或者可以至少部分在设备外部。
16.存储器模型可以向进程公开多播,使得进程可以为请求指定或指示多播,创建或指示用于多播的处理元件组,和/或对于请求和/或特定的va在多播或单播之间进行选择。例如,第一组va可以指示多播,而另一组va可以指示单播。附加地或替代地,使用多播还是单播处理请求对于进程和/或应用程序可能是不透明的,或者可以由系统以其他方式确定。为了保持一致的存储器接口,存储器模型可以对使用多播的处理请求施加一个或更多个约束,例如无论一个或更多个请求是使用多播还是单播处理都确保相同的结果。
17.参考图1,图1是示出根据本公开的一些实施例的在协作处理环境100中实现用于单播和多播的单独存储器空间的存储器系统的转换路径的示例的图。
18.应当理解,这里描述的这种布置和其他布置仅作为示例阐述。除了所示的那些之外或代替所示的那些,可以使用其他布置和元件(例如,机器、接口、功能、命令、功能分组等),并且可以完全省略一些元件。此外,本文描述的许多元件是功能实体,它们可以实现为分立或分布式组件或与其他组件结合,并以任何合适的组合和位置实现。本文描述为由实体执行的各种功能可以由硬件、固件和/或软件来执行。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。在一些实施例中,本文描述的系统、方法和过程可以使用与图7的示例计算设备700和/或图8的示例数据中心800的任何数量的实例类似的组件、特征和/或功能来执行。
19.协作处理环境100可以包括一个或更多个设备,例如设备102a到设备102n(在本文
中也称为“设备102”)。协作处理环境100还可以包括一个或更多个交换机,例如交换机104。协作处理环境100还可以包括一个或更多个处理元件,例如处理元件106a到106n(这里也称为“处理元件106”)。协作处理环境100还可以包括一个或更多个存储器管理器,例如存储器管理器108a到108n(在本文中也称为“存储器管理器108”)。此外,协作处理环境100可以包括一个或更多个存储器,例如存储器110a到110n(在本文中也称为“存储器110”)。作为示例而非限制,设备102a包括处理元件106a、存储器管理器108a和存储器110a。类似地,设备102n包括处理元件106n、存储器管理器108n和存储器110n。尽管在每个设备102中示出了单个处理元件106,但是设备102可以包括任意数量的处理元件106,例如数十到数百或更多。包括在设备102中的其他设备,当存在时,可以包括类似的对应组件。
20.设备102的示例包括gpu、cpu、逻辑单元(例如,逻辑单元720)、集成电路和/或它们中的一个或更多个的组合。交换机104通常可以对应于将设备102、处理元件106、存储器管理器108和/或存储器110互连的相干结构(coherent fabric)。在实施例中,交换机104可以在设备102和/或处理元件106之间实现并行或以其他方式进行的协调处理。在至少一个实施例中,交换机104在设备102之间提供直接的设备到设备互连或网络。交换机104可以允许来自任何数量的设备102和/或其组件的传输被路由到任何其他设备102。
21.尽管交换机104被示为在设备102外部(例如,在单独的设备或集成电路上),但在至少一个实施例中,交换机104的一个或更多个部分和/或其功能可以是交换机104并入一个或更多个设备102中。此外,虽然示出了一个交换机104,但交换机104可以表示以任何合适的拓扑连接设备102的任何数量的交换机。当提供多个交换机时,不同的交换机可以形成设备102的不同多播组,如本文所述。多播组可能具有分层关系,其中子组到组的结果可以被视为组内的单个设备或节点的结果。
22.处理元件106的示例包括一个或更多个流式多处理器(sm)、单指令多数据(simd)单元、诸如cpu核心之类的核心、多线程处理单元、并行处理单元等。在至少一个实施例中,处理元件106可以被配置为并行执行一个或更多个线程块和/或线程组。
23.在一个或更多个实施例中,每个设备102包括使用其自己的存储器系统和存储器总线实现的其自己的存储器110(诸如随机存取存储器的物理存储器)。存储器管理器108和/或交换机104可用于将存储器总线有效地扩展到一个或更多个其他设备102。在其他示例中,设备102中的一个或更多个可以共享存储器110中的至少一些。
24.存储器管理器108的示例包括一个或更多个存储器控制器,例如存储器芯片控制器(mcc)、存储器控制器单元(mcu)和/或存储器管理单元(mmu),例如gpu mmu(gmmu)、分页mmu(pmmu)等。在至少一个实施例中,存储器管理器108可以被配置为执行地址转换的一个或更多个部分。例如,每个存储器管理器108可以从其对应的处理元件106接收指示一个或更多个va的请求,并将对应于一个或更多个va的数据和/或请求提供给交换机104以进行进一步处理,这可以包括初始或进一步的地址转换。用于存储器访问操作的请求(存储器访问请求)的示例包括用于加载、存储和/或原子(atomic)的请求,这些请求可以被发送到存储器系统,存储器系统可选地返回一个或更多个值作为响应。
25.在至少一个实施例中,每个进程的va可以被转换为pa和/或中间地址。此外,存储器管理器108可以执行至少一些地址转换。例如,每个存储器管理器108可以将va转换成中间地址(例如,不同处理节点或元件可以唯一地将本地物理存储器的一个或更多个范围映
射到的全局虚拟地址空间的结构线性地址),这可以用于进一步转换成一个或更多个pa。例如,在各种实施例中,交换机104可以接收从va转换(例如,由提供一个或更多个pa的存储器管理器108转换)的一个或更多个pa(例如,在请求中),或者可以接收中间地址(例如,由提供中间地址的存储器管理器108转换),中间地址可以被转发到一个或更多个对应设备102以供进一步转换。在一个或更多个实施例中,诸如链接tlb之类的转换后备缓冲区(tlb)可用于将中间地址转换为pa。例如,交换机104可以使用设备102的对应tlb将中间地址提供给设备102中的一个或更多个以用于转换到对应pa。
26.在至少一个实施例中,存储器管理器108可以将va转换为pa用于单播存储器访问(例如,使用va 116a),并且将va转换为中间地址用于多播存储器访问(例如,使用va 118)。虽然在一些示例中,交换机104不执行地址转换,但在其他示例中,交换机104可以执行至少一些地址转换。例如,交换机104可以接收va(例如,在请求中)并将该va转换为多个pa,或者可以接收中间地址(例如,来自存储器管理器108),并将该中间地址转换为多个pa。
27.如图1所示,在一个或更多个实施例中,处理元件106可以使用被转换成其自己的pa或另一设备102的pa的va用于存储器访问。例如,图1示出了处理元件106a可以提供指示va 116a的请求,该va 116a指向处理元件106a的pa 120a。图1还示出了处理元件106a可以提供指示va 116b的请求,该va 116b指向处理元件106n的pa 120n。此外,处理元件106n可以提供指示va 116b的请求,该va 116b指向处理元件106n的pa 120n。因此,可以由任一设备102提供相同的va来访问相同的pa。例如,请求可以由运行在设备102a和102n(例如,其一个或更多个线程)上的一个或更多个进程提供,这些进程运行一个或更多个应用程序同时共享存储器空间。
28.va 116a和116b是单播va的示例。在请求中接收单播va可以向存储器系统指示该请求是针对单播存储器操作的,其中va被转换为单个pa和相应的存储器访问。存储器系统还可以支持多播va。在请求中接收多播va可以向存储器系统指示该请求是针对多播存储器操作的,其中va被转换为多个pa和对应的存储器访问。例如,存储器管理器108可以被配置为使用va来确定是将va转换为pa还是中间地址,其中中间地址可以指示多播到交换机104并且pa可以指示单播到交换机104。例如,图1示出处理元件106a或处理元件106n可以提供指示va 118的请求,该va 118指向处理元件106a的pa 120a和处理元件106n的pa 120n。因此,可以由任一设备102提供相同的va来访问相同的pa。
29.因此,根据一个或更多个实施例,多播存储器访问和单播存储器访问可以映射到不同的va空间。在至少一个实施例中,进程可以执行至少一些映射。作为示例而非限制,进程可以使用分配指令(例如,api调用)为va 116a和116b分配存储器,例如以下形式:va 116a,va 116b=malloc(),当执行时可以为每个指定的va分配pa,这些va在存储器系统中被配置为单播va。
30.作为示例而非限制,为了将存储器系统中的一个或更多个va配置为多播va,进程可以使用映射指令(例如,api调用)为va 118(和/或其他va)分配存储器,例如格式为:va 118=createmulticastalias(va 116a,va116b)。该映射指令可以指定一个或更多个将被配置为多播va(例如,va118)的va,以及将为其映射对应的pa到指定的va的一个或更多个va(例如,va 116a和va 116b)。在该示例中,可以在映射指令之前分配用于va 116a和va 116b的存储器。在其他示例中,执行映射指令可以为要映射到多播va的一个或更多个va和/或pa
分配存储器。此外,在本示例中,映射到多播va的pa(例如,映射到pa 120a和120n的va 118)也被映射到单播va(例如,va 116a和va 116b),在一些实施例中不必是这种情况。
31.由于va指示指令是作为多播存储器访问还是单播存储器访问被处理,所以多播存储器访问可以被合并到存储器系统中同时保持单播语法。附加地或替代地,可以提供不同的多播和单播指令(和/或同一指令的操作数或参数)以指示是要使用多播还是单播来处理指令。在这样的示例中,可能不需要单独的单播和多播va空间(但仍然可以使用)。例如,存储器管理器108和/或交换机104可以接收指令并且可以生成不同的地址(例如,pa或中间地址),和/或确定哪一个或更多个设备102提供对应于请求的数据,取决于它将指令识别为多播指令还是单播指令。
32.现在参考图2,图2是示出根据本公开的一些实施例的可以如何使用单播或多播来执行操作的示例的表200。在一个或更多个实施例中,在所提供的指令类型与va空间之间存在不匹配的情况下,该指令可能仍被处理或可能触发故障。表200提供了示例方法,但可以使用其他方法。在表200中指示的方法中,其中与多播va相关联地提供单播指令,该指令可能仍被处理或可能触发故障。例如,可以针对多播组的单个目标pa处理单播指令,如针对指令202、204、206和208所指示的那样。因此,例如,如果指令208与多播va相关联地提供,可以使用目标pa执行归约操作(例如,类似于原子操作,不同之处在于不向请求者返回值)。在至少一个实施例中,目标pa可以由进程、存储器管理器108指定或指示,和/或可以设置为默认值。例如,目标pa可以在构建单播和/或多播空间期间被编程(例如,通过一个或更多个api调用)和/或可以在单播指令中被指示。在一些实施例中,如果没有指定或确定目标pa,则可以返回故障(例如,可以将本文描述的任何故障提供给请求存储器管理器108和/或进程)。在表200中还指出,在与单播va相关联地提供多播指令的情况下,该指令可以触发故障。
33.表200示出指令210、212和214,它们是可以利用本文描述的多播功能来执行多播操作的多播指令的非限制性示例。根据本公开的实施例,可以使用其他多播操作。如本文所指示的,在一个或更多个实施例中,当执行多播操作时,来自存储器110的值可以被提供给交换机104和/或一个或更多个值可以被提供给多播组中的一个或更多个设备102。例如,来自发起请求的设备102的值可以通过设备102的内部路径提供给对应的处理元件106a,而来自其他设备102的值可以通过交换机104提供。在至少一个实施例中,诸如进程或应用程序之类的软件可以指定或指示是否应使用内部路径(例如,在请求或指令中)。在至少一个实施例中,设备102中的内部路径可以具有比离开设备102的链路更低的等待时间和带宽。因此来自设备102a的处理元件106a的请求可以比如果该请求发送到交换机104更快到达存储器110a,然后反射回设备102a。然而,对于一些软件协议,可能希望将请求反射回来,以便在处理请求时对所有设备102进行相同处理。
34.指令210对应于归约加载操作,其可以包括多播到多播组的一个或更多个节点,导致n个响应(例如,加载的值),执行n个响应的一个或更多个聚合以生成聚合数据,然后将聚合数据提供给多播组的至少一个节点。例如,可以将n个响应组合成一个值,该值可以提供给请求处理元件106和/或进程。可以使用各种方法来组合响应,例如求和、平均值、最小值、最大值、bitand、bitor或其他按位运算的结果等。在各种示例中,组合响应可以包括选择一个或更多个响应的子集和/或生成对应于至少一个响应的统计值。
35.在至少一个实施例中,交换机104可以接收n个响应并且通过执行组合的一个或更
多个部分来生成聚合数据。然而,在一个或更多个实施例中,归约或组合可以至少部分地发生在一个或更多个设备102上,例如请求设备102和/或将接收对请求的响应的设备102。例如,假设请求设备102是图1中的设备102a。对包括设备102n在内的其余设备102的响应可以由交换机104接收和聚合。对设备102a的响应可以在不使用交换机104的情况下从存储器110a接收(例如,通过设备102a内部的路径)。设备102a可以接收聚合响应(例如,基于作为请求设备102和/或将接收响应的设备102)并且将其与内部接收的响应组合以生成一个或更多个值以包括在对请求的响应中。
36.指令212对应于多播存储操作,其可以包括将一个或更多个值多播到多播组的一个或更多个节点以将一个或更多个值存储到每个节点。指令214对应于归约多播操作,其可以包括对多播组的每个pa执行原子操作而不返回响应。
37.在至少一个实施例中,一个或更多个存储器访问操作可以相对于设备102、处理元件106和/或存储器110异步执行。因此,当使用多播将请求传播(例如,复制)以访问存储器110时,对各种pa的访问可以与任何响应的接收一起异步执行。例如,如果连续执行多个多播操作,由于不同的延迟,不同存储器110的存储和加载顺序可能会发生变化,从而导致不可预测的结果。对于存储器系统同时支持多播操作和单播操作的实施例,可能会出现类似的结果。作为示例,可以在va 118上执行多播存储,然后由处理元件106a对va 116a执行单播存储。由于va 116a到pa 120a的内部路径更短,因此到va 116a的单播存储可以在到va 118的多播存储之前完成,即使请求是稍后做出的。因此,发出请求的进程可能需要考虑这些可能性。例如,这些可能性可能由于存储器系统被配置为允许存储器访问操作和/或请求处理之间的弱排序而发生。
38.在至少一个实施例中,存储器系统可以配置有一个或更多个约束,使得一个或更多个进程不需要考虑这种不可预测性。因此,使用所公开的方法,是否正在执行多播可以完全对进程隐藏。例如,在一个或更多个实施例中,为仅支持单播操作的存储器系统编写的代码可以使用一个或更多个多播操作代替一个或更多个单播操作来执行。因此,在一些实施例中,多播可以不必通过api显式地公开或请求,但仍可以执行。因此,编程模型可以与非多播系统保持不变。这样的实施例可以使用用于多播和单播的一个或更多个分离的va空间和/或用于多播和单播的共享va空间来实现(例如,两种方法都可以使用相同的存储器系统来实现)。附加地或替代地,进程和/或其他进程可以配置一个或更多个约束(例如,使用一个或更多个api调用),使得存储器系统以进程预期或期望的方式运行。
39.现在参考图3,图3是示出根据本公开的一些实施例的在协作处理环境300中使用约束来实现多播的存储器系统的转换路径的示例的图。协作处理环境300可以包括一个或更多个设备,例如设备302a、302b和302c,至设备302n(这里也称为“设备302”)。设备302可以与图1的设备102相似或不同。在各种实施例中,协作处理环境300(和存储器系统)可以与协作处理环境100相同或不同。因此,在各种实施例中,设备102中的一个或更多个可以与设备302相同或不同。此外,尽管未示出处理元件106、存储器管理器108和存储器110,但相同或相似的组件可以包括在设备302中。
40.在协作处理环境300中实现的约束可以根据协作处理环境300的各种组件的能力和配置而变化,例如但不限于存储器系统和编程模型。在各种示例中,可以使用存储器管理器108、交换机104、存储器110和/或其他组件(例如,页表、tlb、驱动程序等)的任何组合来
实施一个或更多个约束。
41.约束的示例是关于一个或更多个设备302和/或处理元件106对一个或更多个特定va的访问许可。例如,一个或更多个设备302可以具有对一个或更多个特定va(例如va 116a)的写访问权,而一个或更多个其他设备302可以具有只读访问权。具有写访问权的设备302(或处理元件106)在本文中可以被称为生产者并且具有只读访问权的设备302在本文中可以被称为消费者。作为示例而非限制,在一个或更多个实施例中,只有设备302a可以是生产者,而其他设备302可以是消费者。在各种示例中,设备302可以是一些va而不是其他va的生产者或消费者。
42.涉及设置或以其他方式限制对一个或更多个特定va的访问许可的约束可用于避免对请求的不可预测的响应。在所公开的示例中,因为只有设备302a可以写入va 116a,所以可以避免来自其他设备302的其他写入的竞争条件,并且当读取发生时相同的值可以存在于所有pa 120中。
43.约束的另一个示例是在执行一个或更多个特定存储器访问和/或存储器访问或操作类型(例如,加载、存储、归约等)或以其他方式处理一个或更多个请求时用于处理元件106、设备302和/或一个或更多个特定va的访问路径。作为示例而非限制,设备302a和/或每个生产者可以具有将所有请求(或具有诸如访问类型的某些特征或在某些条件下的特定请求)转发到交换机104的约束。如果请求被提供给交换机104并且要在设备302a处被处理,则该请求可以被反射回设备302a。
44.涉及设置或以其他方式控制访问路径的约束也可用于避免对请求的不可预测的响应。在所公开的示例中,因为来自设备302a的涉及va 116a的所有请求都被反射回设备302a,所以可能不存在随后接收到的请求首先通过设备302a的较短内部路径进行处理的风险。类似地,设备302a和/或每个生产者可能具有所有负载(或其他访问类型)都通过交换机104反映的约束。其他设备302和/或每个消费者可能具有所有加载在本地执行的约束(例如,通过内部访问路径)或以其他方式使用比生产者更短的路径的约束,如图3所示。
45.作为涉及设置或以其他方式控制访问路径的约束的另一示例,约束的示例是一个或更多个设备302和/或处理元件具有转发到交换机104的请求。在至少一个实施例中,只有来自生产者和/或设备302a的请求(例如,当请求涉及一个或更多个特定va时)可以被转发到交换机104和/或使用交换机104进行处理。
46.约束的另一个示例是关于一个或更多个进程和/或其他软件是否已经提供了不会发生竞争条件的指示(例如,对于一个或更多个特定和/或指定的va)。该指示可以针对一个或更多个特定请求和/或va提供或与一个或更多个特定请求和/或va一起提供和/或可以包括或指示一段时间过去(例如,在该时间段之后可能不发生多播或可以使用本文描述的不同约束来执行多播)。
47.例如,一个或更多个设备302可以具有对一个或更多个特定va(例如va 116a)的写访问权,而一个或更多个其他设备302可以具有只读访问权。具有写访问权的设备302(或处理元件106)在本文中可以被称为生产者并且具有只读访问权的设备302在本文中可以被称为消费者。作为示例而非限制,在一个或更多个实施例中,只有设备302a可以是生产者,而其他设备302可以是消费者。在各种示例中,设备302可以是一些va而不是其他va的生产者或消费者。
48.在一个或更多个实施例中,可以施加约束,使得使用多播处理请求的结果(例如,返回值)与不使用多播处理请求的结果一致。取决于协作处理环境300的配置和能力,可以使用一个或更多个附加或替代约束。
49.在一个或更多个实施例中,多播可用于加速一个或更多个请求的处理,否则该请求可能已经使用单播处理。在一些实施例中,一个或更多个约束可用于确保跨每个潜在场景的一致结果。因此,使用多播还是单播对于编程模型可能是不透明的。
50.根据本公开的一个或更多个方面,可以执行一个或更多个多播操作以便加速存储器访问请求处理。在一个或更多个示例中,可以执行多播操作而不是一个或更多个单播操作。因此,可以减少数量或处理的请求。附加地或替代地,可以执行一个或更多个多播操作以加速一个或更多个未来存储器访问操作。
51.作为前述的示例,协作处理环境300可以检测到一组处理元件106将使用多个请求将相同的值存储到多个存储器110,并且使用一个或更多个多播操作来处理多个请求。附加地或替代地,协作处理环境300可以检测到一组处理元件106将使用多个请求从多个存储器110加载相同的值,并且使用一个或更多个多播操作预先将值复制到每个存储器110。因此,例如,可以从本地副本(例如,对于消费者)快速执行加载,而不是从进程可能已经通过较慢路径映射到va的同一pa执行加载。例如,如图3所示,可以从分别存储在pa 120b、120c和120n处的本地副本执行对设备302b、302c和302n的加载。这在各种场景中可能是有利的,例如在设备302之间实施同步屏障并且设备302等待最慢的加载完成的情况。
52.可以使用各种方法来确定、识别、预测和/或以其他方式预期前述场景的任何组合,以便加速协作处理环境300中的存储器访问。这可以使用存储器管理器108、交换机104、存储器110和/或其他组件(例如,页表、tlb、驱动程序等)的任何组合发生。
53.在一个或更多个实施例中,应用程序和/或进程可以提供协作处理环境300可以用来确定是否实现上述场景的任何组合的提示(例如,使用api调用和/或驱动程序级消息)。例如,应用程序可以分配单播存储器(例如,使用api调用),并带有指示或指定一个或更多个va以使用多播复制(和/或复制到哪些设备102)的提示。作为示例而非限制,当在设备302a上发生分配时,可以执行集合,其中设备302a与要包括在多播组中的每个其他设备302上的驱动程序通信。因此,可能导致设备302a为所有副本分配后备存储器,包括创建映射,为va返回单个指针并传递给一个或更多个设备302,类似于单播指针。
54.另外或备选地,协作处理环境300可以增加计数器或以其他方式使用监控或模式识别技术来触发前述场景中的一个或更多个。例如,可以至少基于计数或以其他方式检测或识别诸如涉及频繁存储与那些或其他pa相同的值的va组的请求之类的模式,使用多播到pa来复制到va的存储(例如,基于将va映射到多个pa)。作为示例而非限制,当在设备302a上发生分配时,设备302a可以为单个副本而不是所有副本分配存储器,其中为va返回单个指针并将其传递给设备302中的一个或更多个。当识别出模式时,设备302的驱动程序可以确定应该复制va。作为响应,驱动程序可以开始处理故障、处理故障和/或以其他方式转变va以进行多播。
55.现在参考图4,方法400的每个框以及本文描述的其他方法包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。方法也可以体现为存储在计算机存储介质上的计算机可用指令。方
法可以由独立应用程序、服务或托管服务(独立地或与另一托管服务组合)或另一产品的插件提供,仅举几例。此外,作为示例,关于图1描述了方法400。然而,这些方法可以附加地或替代地由任何一个系统或系统的任何组合执行,包括但不限于本文所述的那些。
56.图4是示出根据本公开的一些实施例的存储器管理器可用于响应于存储器访问操作的请求而执行多播的方法400的流程图。
57.在框b402,方法400包括接收对应于请求的数据。例如,存储器管理器108a可以从处理元件106a接收与存储器访问操作的请求相对应的第一数据。该请求可以指示va 118。
58.在框b404,方法400包括执行由请求指示的虚拟地址的地址转换。例如,存储器管理器108a可以使用第一数据来执行va 118的地址转换。地址转换可以包括将va 118转换到至少对应于处理元件106中的处理元件106a的pa 120a和对应于处理元件106中的处理元件106b的pa 120n的至少一部分。
59.在框b406,方法400包括使用与地址转换相关联的第一物理地址和第二物理地址来传输引起存储器访问的数据。例如,存储器管理器108a可以将对应于地址转换结果的第二数据(例如,表示pa 120或中间地址)传输到交换机104。响应于该请求,该传输可以导致使用至少pa 120a和pa 120n对存储器110进行存储器访问。
60.现在参考图,图5是示出根据本公开的一些实施例的交换机可以响应于存储器访问操作的请求而用来执行多播的方法500的流程图。
61.在框b502,方法500包括接收对应于请求的数据。例如,交换机104可以接收与来自处理元件106a的对存储器访问操作的请求相对应的数据。该请求可以指示va 118。
62.在框b504,方法500包括将由请求指示的虚拟地址映射到多个设备。例如,交换机104可以使用数据将va 118映射到设备102。在至少一个实施例中,映射可以使用从存储器管理器108a接收的中间地址或pa 120。在至少一个实施例中,映射可以包括将va 118或中间地址转换到pa 120。
63.在框b506,方法500包括将请求传播到多个设备中的每一个,使得多个设备使用从虚拟地址转换的至少第一物理地址和第二物理地址来执行存储器访问。例如,交换机104可以将请求传播到设备102中的每一个。响应于请求,传播可以使至少设备102a使用从va 118转换而来的pa 120a执行第一存储器访问102n并且设备102n使用从va 118转换而来的pa120n执行第二存储器访问。
64.现在参考图6,图6是示出根据本公开的一些实施例的响应于存储器访问操作的请求进行多播的方法600的流程图。
65.在框b602,方法600包括将虚拟地址转换成多个物理地址。例如,协作处理环境100的一个或更多个组件可以执行对与处理元件106相对应的pa 120的存储器访问操作的请求所指示的转换va 118的一个或更多个部分。
66.在框b604,方法600包括使用多个物理地址执行存储器访问。例如,协作处理环境100的一个或更多个组件可以响应于请求而使用pa 120来执行存储器访问。
67.示例计算设备
68.图7为适合用于实现本公开一些实施例的示例计算设备700的框图。计算设备700可以包括直接或间接耦合下列设备的互连系统702:存储器704,一个或更多个中央处理单元(cpu)706,一个或更多个图形处理单元(gpu)708,通信接口710,输入/输出(i/o)端口
712,输入/输出组件714,电源716,一个或更多个呈现组件718(例如显示器)和一个或更多个逻辑单元720。在至少一个实施例中,计算设备700可以包括一个或更多个虚拟机(vm),和/或其任何组件可以包括虚拟组件(例如,虚拟硬件组件)。对于非限制性示例,一个或更多个gpu 708可以包括一个或更多个vgpu,一个或更多个cpu 706可以包括一个或更多个vcpu,和/或一个或更多个逻辑单元720可以包括一个或更多个虚拟逻辑单元。因此,计算设备700可以包括分立组件(例如,专用于计算设备700的完整gpu)、虚拟组件(例如,专用于计算设备700的gpu的一部分),或其组合。
69.尽管图7的各个框被示为经由具有线路的互连系统702连接,但是这并不意图是限制性的,并且仅仅为了清楚起见。例如,在一些实施例中,诸如显示设备之类的呈现组件718可以被认为是i/o组件714(例如如果显示器为触摸屏)。作为另一个示例,cpu 706和/或gpu 708可以包括存储器(例如,存储器704可以表示除了gpu 708、cpu 706和/或其他组件的存储器以外的存储设备)。换言之,图7的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ecu)”、“虚拟现实系统”和/或其他设备或系统类型之类的类别之间不进行区分,因为所有这些都被考虑在图7的计算设备的范围内。
70.互连系统702可以表示一条或更多条链路或总线,例如地址总线、数据总线、控制总线或者其组合。互连系统702可以包括一种或更多种链路或总线类型,例如行业标准架构(isa)总线、扩展行业标准架构(eisa)总线、视频电子标准协会(vesa)总线、外围组件互连(pci)总线、外围组件互连快速(pcie)总线,和/或另一种类型的总线或链路。在一些实施例中,组件之间存在直接连接。作为示例,cpu 706可以直接连接到存储器704。此外,cpu 706可以直接连接到gpu 708。在组件之间存在直接或点对点连接的情况下,互连系统702可以包括pcie链路来执行该连接。在这些示例中,计算设备700中不需要包括pci总线。
71.存储器704可以包括各种各样的计算机可读介质中的任何介质。计算机可读介质可以是可以由计算设备700访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。举例而言且非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。
72.计算机存储介质可以包括易失性和非易失性介质和/或可移除和不可移除介质,其以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型之类的信息的任何方法或技术实现。例如,存储器704可以存储计算机可读指令(例如其表示程序和/或程序元素,例如操作系统)。计算机存储介质可以包括但不限于ram、rom、eeprom、闪存或者其他存储技术、cd-rom、数字多功能盘(dvd)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备,或者可以用来存储期望的信息且可以由计算设备700访问的任何其他介质。当在本文使用时,计算机存储介质并不包括信号本身。
73.计算机存储介质可以在诸如载波之类的调制数据信号或其他传输机制中包含计算机可读指令、数据结构、程序模块和/或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改变。举例而言且非限制性地,计算机存储介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、rf、红外和其他无线介质之类的无线介质。任何以上所述的组合也应当包含在计算机可读介质的范围内。
74.cpu 706可以被配置为执行计算机可读指令中的至少一些,以便控制计算设备700的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。cpu 706中的每一个可以包括能够同时处理大量软件线程的一个或更多个核(例如一个、两个、四个、八个、二十八个、七十二个等等)。cpu 706可以包括任何类型的处理器,并且可以包括不同类型的处理器,这取决于实现的计算设备700的类型(例如具有用于移动设备的较少核的处理器以及具有用于服务器的更多核的处理器)。例如,取决于计算设备700的类型,处理器可以是使用精简指令集计算(risc)实现的高级risc机制(arm)处理器或者使用复杂指令集计算(cisc)实现的x86处理器。除了一个或更多个微处理器或者诸如数学协处理器之类的补充协处理器之外,计算设备700还可以包括一个或更多个cpu 706。
75.除了或替代cpu 706,gpu 708还可以被配置为执行至少一些计算机可读指令,以控制计算设备700的一个或更多个组件执行一个或更多个本文所述的方法和/或过程。一个或更多个gpu 708可以是集成gpu(例如,具有一个或更多个cpu 706)和/或一个或更多个gpu 708可以是离散gpu。在实施例中,一个或更多个gpu 708可以是一个或更多个cpu 706的协处理器。计算设备700可以使用gpu 708来渲染图形(例如,3d图形)或执行通用计算。例如,gpu 708可用于gpu上的通用计算(gpgpu)。gpu708可以包括能够同时处理数百或数千个软件线程的数百或数千个核。gpu 708可以响应于渲染命令(例如经由主机接口接收的来自cpu 706的渲染命令)而生成用于输出图像的像素数据。gpu 708可以包括诸如显示存储器之类的用于存储像素数据或任何其他合适的数据(例如gpgpu数据)的图形存储器。显示存储器可以作为存储器704的部分而被包括。gpu708可以包括(例如经由链路)并行操作的两个或更多gpu。链路可以直接连接gpu(例如,使用nvlink),也可以通过交换机(例如,使用nvswitch)连接gpu。当组合在一起时,每个gpu 708可以生成用于输出的不同部分或者用于不同输出的像素数据或gpgpu数据(例如,第一gpu用于第一图像,第二gpu用于第二图像)。每个gpu可以包括它自己的存储器,或者可以与其他gpu共享存储器。
76.除了或替代cpu 706和/或gpu 708,逻辑单元720可以被配置为执行至少一些计算机可读指令,以控制计算设备700的一个或更多个组件来执行本文描述的一种或更多种方法和/或过程。在实施例中,cpu 706、gpu708和/或逻辑单元720可以离散地或联合地执行方法、过程和/或其部分的任何组合。一个或更多个逻辑单元720可以是一个或更多个cpu 706和/或一个或更多个gpu 708的一部分和/或集成在其中和/或一个或更多个逻辑单元720可以是cpu 706和/或gpu 708的离散组件或以其他方式在其外部。在实施例中,一个或更多个逻辑单元720可以是一个或更多个cpu706和/或一个或更多个gpu 708的处理器。
77.逻辑单元720的示例包括一个或更多个处理核心和/或其组件,例如数据处理单元(dpu)、张量核心(tc)、张量处理单元(tpu)、像素视觉核心(pvc)、视觉处理单元(vpu)、图形处理集群(gpc)、纹理处理集群(tpc)、流式多处理器(sm)、树遍历单元(ttu)、人工智能加速器(aia)、深度学习加速器(dla)、算术逻辑单元(alu))、专用集成电路(asic)、浮点单元(fpu)、输入/输出(i/o)元件、外围组件互连(pci)或外围组件互连快速(pcie)元件等。
78.通信接口710可以包括一个或更多个接收器、发送器和/或收发器,其使得计算设备700能够经由电子通信网络与其他计算设备通信,包括有线和/或无线通信。通信接口710可以包括使能通过若干不同网络中的任何网络进行通信的组件和功能,所述网络例如无线网络(例如wi-fi、z波、蓝牙、蓝牙le、zigbee等等)、有线网络(例如通过以太网或
infiniband通信)、低功率广域网(例如lorawan、sigfox等等)和/或因特网。在一个或更多个实施例中,逻辑单元720和/或通信接口710可以包括一个或更多个数据处理单元(dpu)以将通过网络和/或通过互连系统702接收的数据直接传输到一个或更多个gpu 708(例如,一个或更多个gpu 708的存储器)。
79.i/o端口712可以使得计算设备700能够逻辑地耦合到包括i/o组件714、呈现组件718和/或其他组件在内的其他设备,其中一些可以内置到(例如集成到)计算设备700中。说明性i/o组件714包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、浏览仪、打印机、无线设备等等。i/o组件714可以提供处理用户生成的空中手势、语音或其他生理输入的自然用户接口(nui)。在一些实例中,输入可以传输至适当的网络元件以便进一步处理。nui可以实现语音识别、手写笔识别、面部识别、生物特征识别、屏幕上和邻近屏幕的手势识别、空中手势、头部和眼睛跟踪以及与计算设备700的显示器关联的触摸识别(如下文更详细地描述的)的任意组合。计算设备700可以包括诸如立体相机系统之类的深度相机、红外相机系统、rgb相机系统、触摸屏技术以及这些的组合,以用于手势检测和识别。此外,计算设备700可以包括使能运动检测的加速度计或陀螺仪(例如作为惯性测量单元(imu)的部分)。在一些示例中,加速度计或陀螺仪的输出可以由计算设备700用来渲染沉浸式增强现实或者虚拟现实。
80.电源716可以包括硬接线电源、电池电源或者其组合。电源716可以向计算设备700供电以使得计算设备700的组件能够操作。
81.呈现组件718可以包括显示器(例如监视器、触摸屏、电视屏幕、平视显示器(hud)、其他显示器类型或者其组合)、扬声器和/或其他呈现组件。呈现组件718可以接收来自其他组件(例如gpu 708、cpu 706、dpu等等)的数据,并且输出该数据(例如作为图像、视频、声音等等)。
82.示例数据中心
83.图8示出了示例数据中心800,其可用于本公开的至少一个实施例中。数据中心800可以包括数据中心基础设施层810、框架层820、软件层830和应用层840。
84.如图8所示,数据中心基础设施层810可以包括资源协调器812、分组计算资源814和节点计算资源(“节点c.r.”)816(1)-816(n),其中“n”代表任何完整的正整数。在至少一个实施例中,节点c.r.816(1)-816(n)可以包括但不限于任何数量的中央处理单元(“cpu”)或其他处理器(包括dpu、加速器、现场可编程门阵列(fpga)、图形处理器或图形处理单元(gpu)等),存储器设备(例如动态只读存储器),存储设备(例如固态硬盘或磁盘驱动器),网络输入/输出(“nw i/o”)设备,网络交换机,虚拟机(“vm”),电源模块和冷却模块等。在一些实施例中,节点c.r.816(1)-816(n)中的一个或更多个节点c.r.可以对应于具有一个或更多个上述计算资源的服务器。此外,在一些实施例中,节点c.r.816(1)-816(n)可以包括一个或更多个虚拟组件,例如vgpu、vcpu等,和/或节点c.r.816(1)-816(n)中的一个或更多个可以对应于虚拟机(vm)。
85.在至少一个实施例中,分组计算资源814可以包括容纳在一个或更多个机架内的节点c.r.816的单独分组(未示出),或者容纳在各个地理位置的数据中心内的许多机架(也未示出)。分组计算资源814内的节点c.r.816的单独分组可以包括可以被配置或分配为支持一个或更多个工作负载的分组的计算、网络、存储器或存储资源。在至少一个实施例中,
可以将包括cpu、gpu、dpu和/或其他处理器的几个节点c.r.816分组在一个或更多个机架内,以提供计算资源来支持一个或更多个工作负载。一个或更多个机架还可以包括以任意组合的任何数量的电源模块、冷却模块和/或网络交换机。
86.资源协调器812可以配置或以其他方式控制一个或更多个节点c.r.816(1)-816(n)和/或分组计算资源814。在至少一个实施例中,资源协调器812可以包括用于数据中心800的软件设计基础结构(“sdi”)管理实体。资源协调器812可以包括硬件、软件或其某种组合。
87.在至少一个实施例中,如图8所示,框架层820可以包括作业调度器832、配置管理器834、资源管理器836和分布式文件系统838。框架层820可以包括支持软件层830的软件832和/或应用层840的一个或更多个应用程序842的框架。软件832或应用程序842可以分别包括基于web的服务软件或应用程序,例如由amazon web services,google cloud和microsoft azure提供的服务软件或应用程序。框架层820可以是但不限于一种免费且开源的软件网络应用框架,例如可以利用分布式文件系统838来进行大规模数据处理(例如“大数据”)的apache spark
tm
(以下称为“spark”)。在至少一个实施例中,作业调度器832可以包括spark驱动器,用于促进对数据中心800的各个层所支持的工作负载进行调度。在至少一个实施例中,配置管理器834可以能够配置不同的层,例如软件层830和包括spark和用于支持大规模数据处理的分布式文件系统738的框架层820。资源管理器836能够管理映射到或分配用于支持分布式文件系统838和作业调度器832的集群或分组计算资源。在至少一个实施例中,集群或分组计算资源可以包括数据中心基础设施层810处的分组计算资源814。资源管理器836可以与资源协调器812协调以管理这些映射的或分配的计算资源。
88.在至少一个实施例中,包括在软件层830中的软件832可以包括由节点c.r.816(1)-816(n)的至少部分,分组计算资源814和/或框架层820的分布式文件系统838使用的软件。一种或更多种类型的软件可以包括但不限于internet网页搜索软件、电子邮件病毒浏览软件、数据库软件和流视频内容软件。
89.在至少一个实施例中,应用层840中包括的一个或更多个应用程序842可以包括由节点c.r.816(1)-816(n)的至少部分、分组的计算资源814和/或框架层820的分布式文件系统838使用的一种或更多种类型的应用程序。一种或更多种类型的应用程序可以包括但不限于任何数量的基因组学应用程序,认知计算和机器学习应用程序,包括训练或推理软件,机器学习框架软件(例如pytorch、tensorflow、caffe等)和/或其他与一个或更多个实施例结合使用的机器学习应用程序。
90.在至少一个实施例中,配置管理器834、资源管理器836和资源协调器812中的任何一个可以基于以任何技术上可行的方式获取的任何数量和类型的数据来实现任何数量和类型的自我修改动作。自我修改动作可以减轻数据中心800的数据中心操作员做出可能不好的配置决定并且可以避免数据中心的未充分利用和/或行差的部分。
91.数据中心800可以包括工具、服务、软件或其他资源,用于根据本文所述的一个或更多个实施例来训练一个或更多个机器学习模型或者使用一个或更多个机器学习模型来预测或推理信息。例如,可以通过使用上文关于数据中心800描述的软件和计算资源,根据神经网络架构计算权重参数来训练机器学习模型。在至少一个实施例中,通过使用通过一种或更多种训练技术计算出的权重参数,可以使用上面与关于数据中心800所描述的资源,
使用对应于一个或更多个神经网络的经训练的机器学习模型来推理或预测信息,例如但不限于本文所述的那些。
92.在至少一个实施例中,数据中心800可以使用cpu、专用集成电路(asic)、gpu、fpga和/或其他硬件(或与之对应的虚拟计算资源)来使用上述资源来执行训练和/或推理。此外,上述的一个或更多个软件和/或硬件资源可以配置成一种服务,以允许用户训练或执行信息推理,例如图像识别、语音识别或其他人工智能服务。
93.示例网络环境
94.适用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备、服务器、网络附加存储(nas)、其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如,每个设备)可以在图7的计算设备700的一个或更多个实例上实现—例如,每个设备可以包括计算设备700的类似组件、特征和/或功能。此外,在实现后端设备(例如,服务器、nas等)的情况下,后端设备可以是作为数据中心800的一部分而被包括的,其示例在此关于图8更详细地描述。
95.网络环境的组件可以通过网络彼此通信,网络可以是有线、无线或两者。网络可以包括多个网络,或者多个网络中的网络。举例来说,网络可以包括一个或更多个广域网(wan)、一个或更多个局域网(lan)、一个或更多个公共网络(例如因特网和/或公共交换电话网(pstn))、和/或一个或更多个专用网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或甚至接入点(以及其他组件)之类的组件可以提供无线连接。
96.兼容的网络环境可以包括一个或更多个对等网络环境(在这种情况下服务器可能不包括在网络环境中),以及一个或更多个客户端-服务器网络环境(在这种情况下一个或更多个服务器可以包含在网络环境中)。在对等网络环境中,本文描述的关于服务器的功能可以在任意数量的客户端设备上实现。
97.在至少一个实施例中,网络环境可以包括一个或更多个基于云的网络环境、分布式计算环境、它们的组合等。基于云的网络环境可以包括框架层、作业调度器、资源管理器,以及在一个或更多个服务器上实现的分布式文件系统,这些服务器可以包括一个或更多个核心网络服务器和/或边缘服务器。框架层可以包括用于支持软件层的软件和/或应用层的一个或更多个应用程序的框架。软件或应用程序可分别包括基于网络的服务软件或应用程序。在实施例中,一个或更多个客户端设备可以使用基于网络的服务软件或应用程序(例如,通过经由一个或更多个应用程序编程接口(api)访问服务软件和/或应用程序)。框架层可以是但不限于一种类型的免费且开源软件网络应用程序框架,例如可以使用分布式文件系统进行大规模数据处理(例如,“大数据”)。
98.基于云的网络环境可以提供执行本文描述的计算和/或数据存储功能(或其一个或更多个部分)的任何组合的云计算和/或云存储。这些各种功能中的任何一个都可以分布在来自(例如,可以分布在州、地区、国家、全球等地的一个或更多个数据中心的)中央或核心服务器的多个位置。如果到用户(例如,客户端设备)的连接相对靠近边缘服务器,则核心服务器可以将功能的至少一部分指定给边缘服务器。基于云的网络环境可以是私有的(例如,仅限于单个组织),可以是公共的(例如,对许多组织可用),和/或其组合(例如,混合云环境)。
99.客户端设备可以包括本文关于图7描述的示例计算设备700的至少一些组件、特征
和功能。作为示例而非限制,客户端设备可以体现为个人计算机(pc)、膝上型计算机、移动设备、智能手机、平板计算机、智能手表、可穿戴计算机、个人数码助理(pda)、mp3播放器、虚拟现实头戴式显示器、全球定位系统(gps)或设备、视频播放器、摄像机、监视设备或系统、车辆、船只、飞行器、虚拟机器、无人机、机器人、手持通信设备、医院设备、游戏设备或系统、娱乐系统、车载计算机系统、嵌入式系统控制器、遥控器、电器、消费电子设备、工作站、边缘设备、这些描述设备的任意组合或任何其他合适的设备。
100.本公开可以在由计算机或者诸如个人数字助理或其他手持式设备之类的其他机器执行的、包括诸如程序模块之类的计算机可执行指令的机器可使用指令或者计算机代码的一般背景下进行描述。通常,包括例程、程序、对象、组件、数据结构等等的程序模块指的是执行特定任务或者实现特定抽象数据类型的代码。本公开可以在各种各样的系统配置中实践,这些配置包括手持式设备、消费电子器件、通用计算机、更专业的计算设备等等。本公开也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。
101.如在本文中使用的,“和/或”关于两个或更多元素的叙述应当解释为仅指一个元素或者元素组合。例如,“元素a、元素b和/或元素c”可以包括仅仅元素a,仅仅元素b,仅仅元素c,元素a和元素b,元素a和元素c,元素b和元素c,或者元素a、b和c。此外,“元素a或元素b中的至少一个”可以包括元素a中的至少一个,元素b中的至少一个,或者元素a中的至少一个和元素b中的至少一个。进一步,“元素a和元素b中的至少一个”可以包括元素a中的至少一个,元素b中的至少一个,或者元素a中的至少一个和元素b中的至少一个。
102.这里详细地描述了本公开的主题以满足法定要求。然而,描述本身并非意在限制本公开的范围。相反地,本发明人已经设想到,要求保护的主题也可以以其他的方式具体化,以包括与本文中结合其他当前或未来技术描述的步骤不同的步骤或者相似的步骤的组合。而且,尽管术语“步骤”和/或“块”在本文中可以用来隐含采用的方法的不同元素,但是这些术语不应当被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除非明确描述了各步骤的顺序。

技术特征:
1.一种计算机实现的方法,包括:接收与存储器访问操作的请求相对应的第一数据,所述请求指示虚拟地址va;使用所述数据执行所述va的地址转换,所述地址转换包括将所述va转换为至少与多个处理元件pe中的第一pe相对应的第一物理地址pa以及与所述多个pe中的第二pe相对应的第二pa中的至少一部分;以及传输与所述地址转换的结果相对应的第二数据,所述传输使得响应于所述请求而使用所述第一pa和所述第二pa在一个或更多个存储器上进行存储器访问。2.根据权利要求1所述的方法,其中所述第一数据的所述接收、所述地址转换的所述执行以及所述第二数据的所述传输是由存储器管理单元mmu响应于所述mmu接收到来自所述第一pe的请求而执行的。3.根据权利要求1所述的方法,其中所述地址转换至少基于将所述va指派给多播va空间,并且使用所述多个pe中的一个或更多个将至少一个va指派给单播va空间,所述单播va空间与所述多播va空间是分开的。4.根据权利要求1所述的方法,其中所述va的所述转换至少基于在所述多个pe中的一个或更多个上运行的一个或更多个应用程序将所述va指派给包括所述第一pe和所述第二pe的多播组而用于多个设备。5.根据权利要求1所述的方法,其中所述转换至少基于分析与存储器访问操作的请求相关联的一个或更多个模式而用于多个设备,所述存储器访问操作的请求至少基于与所述va相对应的所述存储器访问操作的请求。6.根据权利要求1所述的方法,其中所述请求来自所述第一pe,所述第一pe具有对所述va的写访问,并且所述第二pe具有对所述va的只读访问。7.根据权利要求1所述的方法,其中所述一个或更多个存储器包括在第一设备上的第一存储器和在第二设备上的第二存储器,所述第一设备包括所述第一pe,所述第二设备包括所述第二pe。8.根据权利要求1所述的方法,其中所述第二数据的所述传输是到交换机,并且所述交换机使用所述第二数据来传播导致所述存储器访问的所述请求。9.根据权利要求1所述的方法,其中所述地址转换是所述va到一个或更多个中间地址的第一地址转换,并且所述转换包括所述一个或更多个中间地址到所述第一pa和所述第二pa的第二地址转换。10.一种计算机实现的方法,包括:接收与存储器访问操作的请求相对应的数据,所述请求指示虚拟地址va;使用所述数据将所述va映射到多个设备;以及将所述请求传播到所述多个设备中的每一个,所述传播使得响应于所述请求,所述多个设备中的至少第一设备使用从所述va转换的第一物理地址pa来执行第一存储器访问,并且所述多个设备中的第二设备使用从所述va转换的第二pa来执行第二存储器访问。11.根据权利要求10所述的方法,其中所述数据的所述接收、所述虚拟地址的所述映射以及所述请求的所述传播由在所述多个设备中的每一个外部的交换机执行。12.根据权利要求10所述的方法,其中所述数据指示从所述va映射的一个或更多个中间地址,并且所述传播包括将所述一个或更多个中间地址传输到所述第一设备或所述第二
设备中的一个或更多个。13.根据权利要求10所述的方法,其中将所述va映射到所述多个设备包括以下中的一项或更多项:将所述va转换为所述第一pa和所述第二pa;将一个或更多个中间地址转换为所述第一pa和所述第二pa;或者将所述va转换为所述一个或更多个中间地址。14.根据权利要求10所述的方法,其中至少基于所述va被指派给多播va空间而将所述va映射到多个设备,并且使用所述多个设备中的一个或更多个将至少一个va指派给与所述多播va空间分开的单播va空间。15.根据权利要求10所述的方法,其中至少基于在所述多个设备中的一个或更多个上运行的一个或更多个应用程序将所述va指派给多播组而将所述va映射到多个设备。16.根据权利要求10所述的方法,其中至少基于分析与存储器访问操作的请求相关联的一个或更多个模式而将所述va映射到多个设备,所述存储器访问操作的请求至少基于与所述va相对应的所述存储器访问操作的请求。17.根据权利要求10所述的方法,其中从所述第一设备接收所述数据,所述第一存储器访问包括从所述第一pa加载一个或更多个值,并且所述方法还包括:从所述第一设备接收所述一个或更多个值;以及至少基于接收到所述一个或更多个值而将所述一个或更多个值传输到所述第一设备。18.一个或更多个设备,包括:一个或更多个硬件组件,用于将由存储器访问操作的请求指示的虚拟地址转换为与多个物理处理元件相对应的多个物理地址,并响应于所述请求而使用所述多个物理地址来执行存储器访问。19.根据权利要求18所述的一个或更多个设备,其中所述一个或更多个硬件组件包括一个或更多个存储器管理单元和一个或更多个交换机。20.根据权利要求18所述的一个或更多个设备,其中所述存储器访问操作包括响应于所述请求从所述多个物理地址加载值、将所述值组合成聚合值并且提供所述聚合值。

技术总结
本公开涉及用于存储器模型一致性的多播和反射存储器行为。在各种示例中,存储器模型支持多播,其中存储器访问操作的单个请求被传播到与多个处理元件相关联的多个物理地址(例如对应于相应的本地存储器)。因此该请求使从每个处理元件的存储器读取数据和/或向每个处理元件的存储器写入数据。在一些示例中,存储器模型向进程公开多播。这包括提供单独的多播和单播指令或具有用于指示多播或单播的一个或更多个参数(例如指示虚拟地址)的共享指令。附加地或替代地,使用多播还是单播处理一个或更多个请求对于进程和/或应用程序可能是不透明的,或者由系统以其他方式确定。可以对使用多播的处理请求施加一个或更多个约束以维持一致的存储器接口。一致的存储器接口。一致的存储器接口。


技术研发人员:G
受保护的技术使用者:辉达公司
技术研发日:2022.08.23
技术公布日:2023/7/31
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐