用于混合系统的统一的自适应ras的制作方法

xiaoxiao2020-7-22  8

【专利下载】Tel:18215660330

用于混合系统的统一的自适应ras的制作方法
【专利摘要】一种用于在计算机系统中保持可靠性的方法、系统和计算机程序产品。在示例性实施例中,所述方法包括:通过在具有第二处理器架构的第二处理器上执行的代理进程管理在具有第一处理器架构的第一处理器上的工作负荷。所述方法通过所述代理进程激活在所述第二处理器上的冗余计算来进行。所述方法通过至少两次执行来自所述多个工作负荷的工作负荷的相同的计算来继续。最后,所述方法包括:将所述相同的计算的结果进行比较。在本实施例中,所述第一处理器通过网络耦合到所述第二处理器,并且所述第一处理器架构和第二处理器架构是不同的架构。
【专利说明】用于混合系统的统一的自适应RAS
【技术领域】
[0001]本发明涉及计算机系统领域,更具体地涉及用于混和系统的统一的、工作负荷优化的、自适应的可靠性、可用性和可维护性(RAS)的混合系统。
【背景技术】
[0002]混合系统是异构计算环境,并且可以包括具有不同架构或指令集的服务器组合。某些这些服务器可能是高度可靠的,如IBM System z和其他大型系统。混合系统的其他组件可以包括商品附件,如家电、如x86的刀片和如图形处理单元(GPU)和FPGA (现场可编程门阵列)的加速器。这些商品附件可能有比高端大型机系统低的可靠性、可用性和可维护性(RAS)0
[0003]假设具有系统A和系统B的系统的一个系统。设R表示与如果实体在时间t = O处未出故障而它在时间t也将不出故障的概率相关的可靠性函数。假设R (A?R (B)0对于在系统的该系统上执行的工作负荷,有效的可靠性是乘积R (A)XR (B)0如果R (A)为0.8并且R (B)为0.1,那么有效的可靠性为R (A) XR (B)或0.08。这个值低于R (B)。因此,有效的可靠性小于链中最薄弱的环节。

【发明内容】

[0004]本发明的示例性实施例是用于在计算机系统中处理数据的系统。该系统包括:第一处理器;第一存储器,其耦合到所述第一处理器;网络链路,其耦合到所述第一处理器;第二处理器,其通过所述网络链路耦合到所述第一处理器;以及,第二存储器,其耦合到所述第二处理器。所述第二存储器包括其上所体现的计算机可读程序代码,所述计算机可读程序代码被配置为:设置标志,用于冗余校验在所述第二存储器中的计算,其中,所述冗余校验执行所述计算至少2次,并且将`每一个计算的结果进行比较。所述计算机可读程序代码还被配置为命令在所述第一处理器上执行的代理进程当根据所述标志的状态在所述第一处理器上运行所述计算时执行冗余校验。
[0005]本发明的另一个实施例是一种用于在计算机系统中处理数据的方法。所述方法包括:通过在具有第二处理器架构的第二处理器上执行的代理进程管理在具有第一处理器架构的第一处理器上的工作负荷。所述方法进一步包括:通过所述代理进程激活在所述第二处理器上的冗余计算。所述方法还包括:至少两次执行来自所述多个工作负荷的工作负荷的相同的计算。所述方法包括:将所述相同的计算的结果进行比较。在本实施例中,所述第一处理器通过网络耦合到所述第二处理器,并且所述第一处理器架构和第二处理器架构是不同的架构。
[0006]本发明的另一实施例是一种计算机程序产品,用于保持在计算机系统配置中的可靠性。所述计算机程序产品包括其上体现计算机可读程序代码的计算机可读存储介质。所述计算机可读程序代码被配置为通过在具有第二处理器架构的第二处理器上执行的代理进程管理在具有第一处理器架构的第一处理器上的工作负荷。所述计算机可读程序代码进一步被配置为通过所述代理进程激活在所述第二处理器上的冗余计算。所述计算机可读程序代码还被配置为至少两次执行来自所述多个工作负荷的工作负荷的相同的计算。所述计算机可读程序代码进一步被配置为:将所述相同的计算的结果进行比较。在本实施例中,所述第一处理器通过网络耦合到所述第二处理器,并且所述第一处理器架构和第二处理器架构是不同的架构。
【专利附图】

【附图说明】
[0007]现在参考附图,仅作为示例的方式将本发明的实施例进行描述,在附图中:
[0008]图1示出了示例性系统,用于维持可靠性;
[0009]图2是示出了本发明所设想的、使用远程直接存储器访问协议从第一处理器向第二处理器传输数据用于在计算机系统中处理数据的示例性方法的流程图;
[0010]图3是示出本发明所设想的、在用于在计算机系统中处理数据的示例性方法内的时间复用的流程图;
[0011]图4是流程图,用于示出本发明所设想的、在用于在计算机系统中处理数据的示例性方法内的校验和不匹配校验;
[0012]图5是流程图,用于示出本发明所设想的、在用于在计算机系统中处理数据的示例性方法内的值共享;
[0013]图6是流程图,用于示出本发明所设想的、在用于在计算机系统中处理数据的示例性方法内的用于固定关联性问题的编译器技术;
[0014]图7是流程图,用于示出本发明所设想的、在用于在计算机系统中处理数据的示例性方法内的异相校验;
[0015]图8是流程图,用于示出本发明所设想的、在用于在计算机系统中处理数据的示例性方法内的多级网络校验;
[0016]图9示出了在用于保持可靠性的系统中的近似比较器的示例性使用;
[0017]图10示出了在用于保持可靠性的系统中的近似比较器的使用的三模冗余版本的示例性使用;
[0018]图11是示出了本发明所设想的、用于在计算机系统中处理数据的示例性方法的流程图;
[0019]图12是示出了本发明所设想的、用于在计算机系统中处理数据的示例性方法的另一个流程图;
[0020]图13是示出了本发明所设想的、用于在计算机系统中处理数据的示例性方法的另一个流程图;以及
[0021]图14是示出了本发明所设想的、用于在计算机系统中处理数据的示例性方法的另一个流程图;
【具体实施方式】
[0022]现有的系统不处理下述问题:混和系统的有效的可靠性可以等于或低于在系统链中的最薄弱的环节。这是因为连接的系统往往是相同的。这种系统例如可以包括两个或更多x86计算机。在连接到(未知FIT特性的)加速器的IBM System z的情况下,可以在IBMSystem z和所连接的加速器之间在未被发现的错误的故障时间(FIT)率上有两到三个数量级的量值差。此外,在计算环境中的通常的做法是使用商品网络接口适配器和交换器来互连多台计算机。这些组件也可以影响组合的“多个系统的系统”的有效可靠性。
[0023]可靠性、可用性和可维护性(RAS)在计算环境中是重要的。可靠性可被描述为减少在计算环境中的硬和软错误的影响。对于可靠性的手段可以在下面两个方面:在处理器上的计算和通过网络传输的数据。硬错误可以包括永久的错误,所述永久的错误包括在硬件本身中的故障。这些包括处理器故障或需要更换或激活备用组件的网络适配器故障,。在另一方面,软错误是非永久性的瞬态错误,并且可以包括由撞击芯片的表面上的硅原子的宇宙射线或α粒子引起的位翻转。应用程序可以被由于硬和软错误导致的值上的改变影响,并且需要缓解。本发明的方法之一是使用冗余性,这是多次执行操作,然后验证它,这允许用户相信硬件在提供正确的结果。提供冗余的常见的方式是在使用硬件机制的两个处理器之间提供锁步操作。这样的方案可以基于逐个循环来工作,并且可能会限制计算的吞吐量。对于在“多个系统的系统”上的统一的RAS,这个想法是在用于计算和互连网络的加速器和System z之间的数据流中提供冗余。这将允许由加速器和System z构成的混和系统的有效的可靠性接近独立的System z的可靠性。
[0024]本发明的实施例适用于商品和企业加速器。商品加速器是其FIT率没有特点的加速器(即,在使用期间是未知的)。企业加速器是具有已知的有特性的FIT率的加速器。本说明书可交换地使用术语刀片(blade)和加速器,并且可以指商品和企业加速器与刀片。也可互换地使用主服务器、主机、主机服务器和服务器来指在混和系统中的主服务器。本发明的实施例也适用于“开放”和“闭合”配置。本发明的实施例允许基于工作负荷应用多模冗余方案。混合软件允许从双模冗余、三模冗余向之外的方案扩展。
[0025]在该闭合配置中,本发明的实施例使用在系统A和系统B (主系统A和加速器B)之间的主路径和多个阴影路径。这可以取决于η模冗余。例如,在三模冗余方案中,数据可以通过从A到B的3个分离的独立路径。所有这些输入路径可以在B处被校验,可以在B上的三个独立的加速器上计算数据。可以以下面两种方式校验输出数据:(i)在加速器系统B上或(i)当数据被传递回A时。对于浮点代码,在B的输出可以是不可重复的。对于这样的情况,可以在给定的容差之内使用在B上的多个表决器校验输出。作为第二阶段,在A处校验输出。对于整数计算,可以避免在加速器B上的第一阶段。对于商品加速器,连同N-模互连链路一起使用N-模冗余计算单元。对于具有与A类似的包含具有R功能的B的计算单元的企业加速器,可以在使用N模冗余链路的同时使用一个B计算单元。
[0026]在该开放配置中,使用支持端口镜像的均衡器沿着N模链路来广播输入流。一种商品加速器在两级上使用N-模表决器,一个在加速器上。第二个在主服务器上。在这种情况下,在加速器上接收数据,然后将其中继到主服务器。对于企业加速器,可使用单一的输入链路。在单个计算单元上计算后,可以沿着N-模路径传输结果,并且在系统A上校验它。在开放模式中,对于流数据,可以在输入上保留窗口。对于主服务器上的错误接收的数据,可以根据流的实时约束重新执行在加速器上的输入数据。如果这是不可能的,则数据可能被丢弃。可视情况使用返回N和选择性重传方案。
[0027]本发明的实施例允许用户根据性能和预算的限制有不同的选择。本发明的各方面被工作负荷优化,这是因为当对于硬和软错误需要冗余计算时,用户可以使用不同的在物理上完全不同的刀片或在物理上完全不同的内核。或者,当仅关注软错误时,单一内核可用于冗余计算的串行执行。本发明的各方面还涉及到统一的系统,这是因为有以零碎的方式看待组件的趋势,但在这里,用户可以当本发明的实施例实际上是异构系统时将本发明的实施例看作单个系统。
[0028]参考本发明的实施例描述了本发明。贯穿本发明的说明,参考图1-10。注意,所示的配置和排序仅是本发明的各种布置的一个示例,并且不应当被解释为将本发明限于任何特定配置。
[0029]图1示出了用于保持可靠性的示例性系统。系统100可以包括单一的加速器或商品或企业加速器组114和116和服务器118。加速器114可包括第一处理器102和耦合到所述第一处理器102的第一存储器104。
[0030]网络链接106也可以耦合到所述第一处理器102。网络链接106可以是一个InfiniBand或以太网连接。它也可以是PC1-Express总线分段。同时还连接到网络链路106的可以是可以通过网络链路106耦合到所述第一处理器102的第二处理器108。第二存储器110可耦合到第二处理器108。服务器118可以包括第二存储器110和第二处理器108。
[0031]在本发明的另外的实施例中,额外的处理器通过网络链路106附接到第二处理器108。本发明的一些实施例在开放模式下,除了连接到所述第二处理器108,处理器102可以通过网络连接到外部资源。本发明的其他实施例可以在闭合操作模式下运行,其中,处理器102仅连接到系统100中的其他处理器,例如第二处理器108。
[0032]在本发明的某些实施例中,第二处理器108连接到多个处理器102、120,每个处理器102、120可包括其自己的存储器104、122。通过网络链路106可耦合处理器102,120。
[0033]第二存储器110可以具有其上体现的计算机可读程序代码112。计算机可读程序代码112可以被配置为执行系统100的各种任务。一个这样的任务可包括通过使用在加速器114、116上工作的代理进程来管理在系统100上的工作负荷。这可以通过使用开放计算语言(OpenCL)运行时间来被完成。OpenCL运行时间是软件库和相关资源,该相关资源允许地址空间启动OpenCL程序,并调用在连接的加速器上的OpenCL内核。另一项任务可以包括在第二存储器110中设置用于冗余校验的计算的标志,其中,冗余校验执行计算至少2次,并且将每一个计算的结果进行比较。这还可以包括:命令在第一处理器102上执行的代理进程根据该标志的状态当运行在第一处理器102上的计算时,执行冗余校验。可以基于策略信息来动态地设置该标志。
[0034]在本发明的实施例中,网络链路106包括数据路径和控制路径。在本实施例中,系统100被配置为由第一处理器102根据在数据路径上接收到的数据计算第一校验和,并将校验和与在控制路径上接收的、由第二处理器108计算出的第二校验和作比较。
[0035]在某些实施例中,当校验要用于特定计算时,使用硬件管理控制台(HMC)。HMC可以在具有作业标识符(作业ID)的平台管理进程(PMP)表中嵌入服务质量(QoS)的标志。PMP进程可以监视和管理System z平台和连接的加速器的资源和性能。可以在工作负荷基础上进行这一点,这是因为每个工作负荷可以有作业ID。当OpenCL运行时间在地址空间激活期间到来时,它可以使用作业ID的名称查询PMP进程,并且PMP进程返回基于QoS标志的值和运行时间是否要校验,然后在刀片114上激活根据标志的值要冗余计算的代理进程。例如,作为’I’的Q0S标志的值表示需要冗余计算,而’O’值表示不需要冗余计算。在又一实施例中,可以使用固件将加速器配置为多种装置类型。装置类型A可使用一个加速器刀片,并且在同一芯片或“晶片”上的多个内核上同时计算主和副。装置类型B可以使用一个加速器刀片,并且在多个“晶片”或芯片上的多个内核上同时计算主和副。设备类型C可使用一个加速器刀片,并且在单个内核上串行计算主和副计算。可以与A、B和C类似地构造装置类型D、E和F,但使用多个加速器刀片实现N-模冗余。将会理解,刀片的总集合被作为单个单元呈现给System z工作负荷管理软件。并且,装置类型可以在固件的控制下被转换成其他装置类型。例如,具有两个刀片并且在每一个刀片上具有主和副计算并且使用如图9中所示的比较器设置的装置可以被转换为具有在同一装置上分级的主和副计算的两个单刀片装置。定义装置类型的能力允许系统设计人员选择用于折中资源利用(刀片的数量)和成本所需的可靠性级别。当OpenCL运行时间在地址空间激活期间到来时,它可以使用其作业ID和RACF证书来查询PMP进程。PMP进程可以存储具有作业ID、韧性定义和装置名称的表。此表可以由外部的工作量的管理进程或资源访问控制工具(RACF)进程代理填充。韧性定义是字段,其描述是否需要连同物理的冗余需求(单个或多个加速器)校验。PMP进程可以使用分布式工作负荷管理器(DWLM),以确定需要在哪里调度来自OpenCL的地址空间的加速器工作。一旦确定装置名称,则可以填充在PMP内的表格。向OpenCL的地址空间传回装置名称,并且OpenCL的地址空间然后可以调度在该装置上的计算。
[0036]在本发明的实施例中,OpenCL运行时间可允许主机118调用加速器114,并且加速器114运行OpenCL内核。服务器118将数据传递给在加速器114上的这些内核。加速器114可以以冗余方式执行OpenCL内核。可以执行主内核和副内核,在加速器代理比较其结果。可以根据N-模冗余策略的选择执行多个副。如果结果一致,则可以将回答发送回服务器118。如果结果不一致,可根据更高层次策略采取适当的操作,而不限于以记录和重复计算停止校验加速器。在刀片114上运行的代理可以负责启动主和副计算和校验它们的结果。数据通信和同步库(DaCS)可以允许OpenCL调用在加速器114上运行的内核。
[0037]在另一实施例中,运行时间应用程序运行在服务器118上和刀片114上。可以有从在服务器上118运行的守护进程到在刀片上114运行的守护进程的控制路径。运行时间可以将数据发送以在刀片114上调用OpenCL内核,刀片114向服务器118返回答复。当刀片114被调用时,它可以被发送缓冲对象。可以做的第一个任务可以是校验和计算(在缓冲对象中的数据上),校验和计算可作为元数据通过控制通道被发送,然后可以分别沿单独的数据路径发送对象。当缓冲对象到达另一侧时,可以重新计算校验和,然后将其与通过控制路径进入的在接收缓冲器上的校验和匹配。可以从服务器118向刀片114发送数据,因此可以对于数据校验位翻转。然后可沿着控制路径或沿着单独的数据路径来发送校验和数据。控制路径和数据路径可以沿着单独的物理链路。在替代实施例中,有单一的链路,而不是单独的数据和控制路径。可以使用虚拟通道或将一组数据在另一组数据之前发送来实现这一点。可以理解,可以根据在发送者和接收者处的处理能力来改变校验和的强度。
[0038]在另一实施例中,存在用于移动数据的远程直接内存访问(RDMA)机制。可以从主服务器118向具有RDMA令牌的刀片114发送控制数据,并且该控制数据也可以具有数据的校验和。基于RDMA令牌,刀片114可以向服务器118作出RDMA读取请求并读取数据。一旦数据被传输,则可以验证校验和。替代地,刀片可以请求数据两次(或多次以实施η模冗余),并验证在刀片上返回的数据。
[0039]在本发明的实施例中,服务器118具有服务等级协议(SLA),其指定系统100必须操作所依赖的可靠性。本实施例的一个方面是提供可靠性的缩放。例如,可以有多个等级的可靠性:高、中等和低可靠性等级。可将资源配置为满足这一级别的可靠性。在高可靠性模式中,可以存在对于在主服务器118和加速器1124、116之间的通信的端到端校验以及对于计算的校验。在中等可靠性模式中,系统100可能不完成所有的校验,以避免花费资源和执行时间。在低可靠性模式中,比如对于不需要或提供咨询的数据,可能不在计算或网络上完成校验。用户可以有能力选择应用程序所需的等级或可靠性,并且以满足SLA的方式来使用资源,而不论SLA是低、中等或高。
[0040]图2是示出了本发明所设想的用于在计算机系统中处理数据的示例性方法的流程图。
[0041]在计算机系统200中处理数据的方法的实施例可以包括:在块202中,第一组处理器102、120执行第一数据计算,第一组处理器具有第一计算机处理器架构114、116。该方法可通过下述方式继续:在块204,耦合到第一组处理器102、120的第二处理器108执行第二数据计算。第二处理器108可以具有第二计算机处理器架构118。第一计算机处理器架构114,116可以不同于第二计算机处理器架构118。
[0042]该方法还可以包括:在块206,在第一组处理器102、120和第二处理器108在运行的同时,基于至少一个度量来动态地分配第一组处理器102、120的计算资源,从而优化第一数据计算和第二数据计算的精度和处理速度。该度量可以包括第一数据计算和第二数据计算的计算速度、在给定时间周期内的用于执行冗余计算的处理器周期的可用性、所处理的数据的类型或度量的组合。
[0043]在本发明的实施例中,动态地分配计算资源包括由第一组处理器102、120调整用于第一数据计算的计算冗余量。冗余计算可以涉及计算主计算的副。计算校验可以涉及主和副计算的比较。在其它实施例中,动态分配计算资源包括:由第一组处理器102、120基于用于在给定时间段中执行冗余计算的处理器循环的性能和可用性来将计算从数据的同时冗余计算改变为数据的串行冗余计算(并且反之亦然)。
[0044]在另一个实施例中,硬件处理器子系统提供了处理器锁定步进,可以使用逐个循环的锁定步进将在处理器上的计算在其控制下计算。在进一步的实施例中,软件必须知道使用通过“在外盖下”的处理器复合体来处理的锁定步进来运行主计算。这样的选择可能带来性能折中,并且可能需要与逐个循环的锁定步进相关联的平衡。这种平衡可能需要在使用处理器锁定步进的冗余计算、同时主和一个或多个副计算或串行主和一个或多个副计算之间选择,这是因为每一个选择被不同组的资源利用需要控制。在另外的实施例中,分配计算资源包括基于处理器周期的性能和可用性来动态地平衡计算和带宽,以在给定的时间段中执行冗余计算。
[0045]本发明的另外的实施例包括近似比较器。这可以包括第二处理器108在块208从第一组处理器102、120接收两个浮点值。可以通过网络链路106发送该浮点值。然后,方法200可在块210处继续比较在两个浮点值与工作负荷相关的容差之间的差异。工作负荷相关的容差可以是在计算中的相对误差的上界。并且可以被埃普西隆(ε )表示。另外的实施例包括:在块212处将结果的浮点值标注为相等和不相等之一。例如,在第一加速器114使用值Ol和在第二加速器116使用值02冗余生成浮点值。在第二处理器108上收到该值,其中,将它们使用近似比较器与工作负荷相关的容差ε作比较。如果(01-02)的绝对值<ε,则将该值可以标注为“相等”或“几乎相等”;否则该值可以被标注为“不相等”。如果ε的值是0,那么近似比较器变为规则比较器。
[0046]图9示出了在用于保持可靠性的系统中的近似比较器的使用的示例。在本发明的实施例中,系统900在每一个加速器114、116上具有近似比较器,并且在每一个加速器114、116上计算结果后,将向近似比较器902、904的输入908、910交叉链接到其它加速器116、114,因此,每个加速器114、116执行比较。近似比较器的结果(“相等”或“不等”)可以被发送到主机服务器118,并且在比较器906处被比较。在没有交叉链接的实施例中,这些值可以被发送到主机服务器118,并且在那里进行浮点比较。根据在何处进行校验,可以在主机服务器或加速器上释放处理器时间。这也允许不同精度能力的主机服务器和加速器比较结果值。
[0047]图10示出了在用于保持可靠性的系统中的近似比较器的使用的三模冗余版本的使用示例。在这个实施例中,系统1000是包含可以防止硬错误的至少三个加速器114、116、1002的三模冗余版本,因为即使刀片之一故障,也不必重复计算。在该情况下,从每个加速器114、116、1992产生的结果1004、1006、1008被交叉链接到每一个加速器114、116、1002,其中,存在表决器1012、1014、1016。在每一个加速器114、116、1002上的表决器1012、1014、1016比较结果,并且选择由大多数给出的答复,并且表决器1012、1014、1016的所有结果被发送到主机服务器118,其中,存在表决器1010,其比较选择由加速器114、116、1002的大多数给出的答复的结果。这可以在长时间运行的计算中使用,其中,重复计算不是负担得起的。
[0048]在另一个实施例中,系统具有两个在物理上分离的加速器或在同一加速器上的两个分离的内核,并且计算产生用于卡罗模拟、金融工程、期权价格或风险分析的随机数。这些使用通常需要产生许多随机数。程序可以使用函数time O作为它的种子来生成随机数。可以理解的是,time()返回当前时间。每个主和副冗余计算可以在物理上独立的加速器上运行。
[0049]如果有两个在物理上独立的加速器(每个运行主和副计算),并且如果时间作为诸如srandO的用于每一个随机数发生器的输入是不同的,则可以产生不同的随机数。由于在这些随机数中的许多中,使用中方程收敛在单一的值上,所以例如,如果在一个方程上的输出被平均,则可能在结果的浮点数的最低有效数字中存在差别。因此,即使通过主和副执行了精确地相同的计算,主和副计算也不可通过正常的比较器校验。即使以相同的方式计算结果但是产生了不同的最终结果,但是当比较两个浮点值时不应当将其标注为错误,产生误报,因为对于随机数发生器的种子不同。使用具有足够大的ε值的近似比较器可以减轻误报。
[0050]在替代实施例中,具有编译器辅助的工作负荷可以检测以在物理上可变的数量(例如,时间、电噪声、其他物理随机源)作为输入的计算。编译器可以产生用于允许在主和副计算之间交换值的代码。这不限于消息传送、存储和读取与共享的存储器存取。工作负荷可以在主和副计算之间交换输入数量。这可以允许主和副计算在没有软错误的情况下发送相同的结果。该方法被称为“价值锁步”。近似比较器手段可以让计算运行而无需代码改变,但是在副和主计算结果上的可能差上具有已知的上界。“价值锁步”手段可能需要计算识别计算冗余。可以在源代码中使用提示和标签,以指示编译器对于锁步值生成代码。“价值锁步”不要求近似的比较器,而正常的比较器就足够了。
[0051]当你具有与减少相关联的计算时,也可以产生误报。例如,如果因为通过网络的输入的定时所以你具有计算相加在一起的3个值a、b和c,则一个加速器可以计算a+b+c,然后在另一个加速器上,将值计算为c+a+b。可能在结果中有不匹配。当冗余地运行处理不良条件的矩阵的计算时,也可能产生错误肯定。
[0052]图3是示出本发明所设想的、在用于在计算机系统中处理数据的示例性方法内的时间复用的流程图。也被称为“计算泵”的时间复用涉及在同一处理器上多次执行计算,然后比较从每次运算产生的结果。“计算泵”可能是有益的,因为加速器可以以高的利用率运行,并且实现方式可以在能够捕获软错误的同时是廉价的。
[0053]与在图2中所示的流程图相同,用于在计算机系统300中处理数据的方法可以包括:在块202,第一组处理器102、120执行第一数据计算,第一组处理器102、120具有第一计算机处理器架构114、116。在第一组处理器102、120中的第一处理器102在块202执行
第一数据计算可以产生第一结果。
[0054]在块302处,方法300可通过产生第二结果的、由在第一组处理器102、120中的第一处理器102冗余地执行第一数据计算来继续。
[0055]方法300可以通过由第二处理器108在块204执行第二数据计算来继续。第二数据计算可以包括在第二处理器108上比较第一结果和第二结果。方法300可以进一步包括:在块206,动态地分配第一组处理器102、120和第二处理器108的计算资源。
[0056]例如,考虑具有8个内核的处理器。在冗余的情况下,你可以将处理器划分为两个逻辑处理器并且每个具有四个内核,一个被称为主,并且另一个被称为副。计算可以然后同时在主和副内核上运行,并且然后验证结果。对于特定的计算,可能需要8个内核,因此计算可以作为主运行运行在所有8个内核上,存储操作,并且然后作为副运行来再一次在内核上运行计算。
[0057]图4是流程图,用于示出本发明所设想的、在用于在计算机系统中处理数据的示例性方法内的校验和不匹配校验。
[0058]与图2的流程图相同,用于在计算机系统400中处理数据的方法可包括:在块202,第一组处理器102、120执行第一数据计算,第一组处理器102、120具有第一计算机处理器架构114、116。方法400可以通过在块204中由第二处理器108执行第二数据计算来继续。方法400可以进一步包括:在块206,动态地分配第一组处理器102、120和第二处理器108的计算资源。
[0059]本发明的实施例也可以包括:在块402,从第一组处理器102、120的至少两个在物理上独立的处理器接收在数据流中的数据的部分。方法400还可以包括:在块404,比较从该至少两个在物理上独立的处理器102、120的每一个的数据流中的数据的部分。方法400还可以包含:在块406中,标注在数据流中的数据的部分,其中,来自该至少两个在物理上独立的处理器102、120的每一个的数据的部分实质上不等。
[0060]在本发明的另一个实施例中,方法400可包括:请求至少两个物理上独立的处理器102、120中的至少一个在块408处异步地重发被标注的数据的部分。[0061]图5是流程图,用于示出本发明所设想的、在用于在计算机系统中处理数据的示例性方法内的值共享。
[0062]与在图2中的流程图相同,用于在计算机系统中处理数据的方法500可以包括:在块202处由第一组处理器102、120执行第一数据计算,第一组处理器102、120具有第一计算机处理器架构114、116。方法500可以通过在块204处由第二处理器108执行第二数据计算来继续。方法500可以进一步包括:在块206处,动态地分配第一组处理器102、120和第二处理器108的计算资源。
[0063]本发明的实施例还包括:在块502处,解析用于执行第一数据计算和第二数据计算中的至少一个的代码段。方法500也可以包含:在块504处编译代码段,使得系统独立变量的值在整个冗余呼叫中是相同的,以执行第一数据计算和第二数据计算的至少一个。主和副计算同步所基于的系统独立值可以是取决于当前时间或基于在物理环境中的数量的值,诸如热或电噪声,如上所述。
[0064]例如,如果存在两个在物理上显著不同的加速器114、116并且两者都使用函数time来作为向随机数发生器的输入,则加速器114之一产生随机数并且与另一个加速器116交换它。可以通过编译器技术强制在代码中的计算来避免近似比较器,并且然后可以使用规则比较器来校验冗余。
[0065]图6是流程图,用于示出本发明所设想的、在用于在计算机系统中处理数据的示例性方法内的用于固定关联性问题的编译器技术。
[0066]与图2的流程图相同,用于在计算机系统中处理数据的方法600可以包括:在块202处由第一组处理器102、120执行第一数据计算,第一组处理器102、120具有第一计算机处理器架构114、116。方法600可以通过由第二处理器108在块204执行第二数据计算来继续。方法600可以进一步包括:在块206处,动态地分配第一组处理器102、120和第二处理器108的计算资源。
[0067]本发明的实施例也可以包括:在块602处,解析从在第一组处理器102、120中的第一处理器102接收至少两个值的计算的代码段,该计算要在第一组处理器102、120中的第三处理器120上运行。方法600也可以包括在块604处强制发出用于对于至少两个值执行操作以固定关联性的命令。
[0068]例如,程序可以具有与三个不同的进程进行通信的循环。程序可以被编码以当三个值从三个进程到来时增加该三个值,但是当被冗余地校验时这可能产生关联性问题。不同的技术可以是在代码内强制用于处理关联性问题的命令,特别是当加速器是异构的时。
[0069]图7是流程图,用于示出本发明所设想的、用于在计算机系统中处理数据的示例性方法内的异相校验。
[0070]与图2的流程图相同,用于在计算机系统中处理数据的方法700可以包括:在块202处由第一组处理器102、120执行第一数据计算,第一组处理器具有第一计算机处理器架构114、116。方法700可以通过由第二处理器108在块204执行第二数据计算来继续。方法700可以进一步包括:在块206处,动态地分配第一组处理器102、120和第二处理器108的计算资源。
[0071]本发明的实施例也可以包括:在块702处,从第一组处理器102、120中的处理器102接收来自在存储器缓冲器中的一系列缓冲输入项的第一缓冲输入项。在块704,处理数据的方法700可以包括:从在第一组处理器102、120中的处理器102接收从第一缓冲输入项得出的第一校验和。方法700可以进一步包括:在块706在第二处理器108上计算从第一缓冲输入项得出的第二校验和。方法700可以包含:在块708将第一校验和与第二校验和作比较。方法700可以包括:在块710处,如果第一校验和与第二校验和实质上不相等,则异步地请求从处理器102重发第一缓冲输入项,使得在处理器重发第一缓冲输入项之前接收在一系列缓冲输入项中的第二缓冲输入项。
[0072]图8是流程图,用于示出本发明所设想的、在用于在计算机系统中处理数据的示例性方法内的多级网络校验。
[0073]与图2的流程图相同,用于在计算机系统中处理数据的方法800可以包括:在块202通过第一组处理器102、120执行第一数据计算,第一组处理器102、120具有第一计算机处理器架构114、116。方法800可以通过在块204由第二处理器108执行第二数据计算来继续。方法800可以进一步包括:在块206处动态地分配第一组处理器102、120和第二处理器108的计算资源。
[0074]本发明的实施例还可以包括,在块802,向在第一组处理器102、120中的第三处理器120发送来自在第一组处理器102、120上的第一处理器102上执行的计算的第一结果,在第一组处理器102、120中的第三处理器120与第一处理器102不同。在块804,用于处理数据的方法800可以包括向在第一组处理器102、120中的第一处理器102发送来自在第一组处理器102、120中的第三处理器120上运行的计算的第二结果。
[0075]方法800可以包括:在块806中,在第一组处理器102、120中的第一处理器102上将第一结果与第二结果作比较,产生第一输出。方法800可以进一步包括:在块808,在第一组处理器102、120中的第三处理器120上将第一结果与第二结果作比较,产生第二输出。在块810处,用于处理数据的方法800可以包括从在第一组处理器102、120中的第一处理器102向第二处理器108发送第一输出。方法800可以包括在块812处从在第一组处理器102、120中的第三处理器120向第二处理器108发送第二输出。在块814处,方法800可以包含在第二处理器108上比较第一输出和第二输出。
[0076]例如,数据被从加速器114传输到主机服务器118,并且存在校验和不匹配。校验和不匹配可能是由于位翻转、在网络适配器中的软错误或在网络106上的传送中的问题。虽然主机服务器118可以请求加速器同步地重新发送数据,但是可能最佳的是,使用异相校验。在无状态的计算或具有多个独立的输入的计算中,已经与校验和不匹配的数据的部分被标注,并且其它的在其计算中继续。然后,异步地返回并且重发不匹配的数据。
[0077]图11是示出了本发明所设想的用于在计算机系统中处理数据的示例性方法的流程图。在块1102,方法1100可以包括:通过在具有第二处理器架构的第二处理器上执行的代理进程来管理在具有第一处理器架构的第一处理器上的工作负荷。在块1104处,方法1100可以包括通过代理进程激活在第二处理器上的冗余计算。在块1106处,方法1100可以包括至少两次执行来自工作负荷的相同计算。在块1108处,方法1100可以包括比较相同计算的结果。第一处理器通过网络耦合到第二处理器,第一处理器架构和第二处理器架构可以是不同的架构。冗余计算执行至少两次计算,并且比较计算的结果。在本发明的一个实施例中,在块1102处管理在第一处理器上的工作负荷使用开放计算语言(OpenCL)运行时系统。[0078]方法1100可以在块1110处通过基于服务等级协议来缩放工作负荷的计算的可靠性。服务等级协议可指定多个等级的可靠性之一。
[0079]在块1112,方法1100可以通过下述方式继续:在平台管理进程表中提供服务质量标记,其中,平台管理进程与平台管理进程表相关联,使得平台管理进程可以监视和管理第一处理器和第二处理器的资源和性能。在本发明的实施例中,平台管理进程表包括作业标识符,用于识别要在第二处理器上执行的工作负荷。在另一实施例中,该平台管理进程表包括冗余定义字段,用于配置工作负荷的硬件要求。
[0080]方法1100可以包括:在块1114,使用作业标识符查询平台管理进程。在块1116,该方法可以通过下述方式继续:接收是否基于在平台管理进程表中的服务质量标志的值执行相同的计算值的指示。
[0081]方法1100还可以包括:在块1118,使用固件配置加速器系统。
[0082]在块1120,方法1100还可以包括:将在加速器系统中的第二处理器架构配置成主处理器和副处理器,以同时在主处理器和副处理器上的相同的芯片的多个内核上计算相同的计算。
[0083]在块1122处,方法1100可以包括使用远程直接存储器访问协议从第一处理器向第二处理器传输数据。方法1100可以在块1124通过下述方式继续:激活第二处理器上的代理进程来执行相同的计算。在块1126,方法1100可以进一步包括在包括第二处理器的加速器系统上执行相同的计算。
[0084]图12是示出了本发明所设想的、用于在计算机系统中处理数据的示例性方法的另一个流程图。该方法1200类似于在图11中的方法1100,更换块1120为块1202。该方法1200在块1202可以包括将加速器配置为主处理器和副处理器,以同时在主处理器和副处理器上在不同的芯片的多个内核上同时计算相同的计算。
[0085]图13是示出了本发明所设想的用于在计算机系统中处理数据的方法的另一个流程图。方法1300类似于在图11中的方法1100,更换1120块为1302块。方法1300在块1302可以包括将加速器配置为主处理器和副处理器来在第二处理器中的单组一个或多个内核中依序计算相同的计算。
[0086]图14是示出了本发明所设想的、用于在计算机系统中处理数据的示例性方法的另一个流程图。方法1400类似于在图11中的方法1100,将块1120替换为块1402。方法1400在1402块可以包括配置加速器系统,以实现N-模冗余配置。加速器系统可除了第二处理器之外进一步包括至少两个处理器。
[0087]所属【技术领域】的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0088]可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0089]计算机可读信号介质可以包括例如在基带或作为载波的一部分的、其中体现了计算机可读程序代码的传播的数据信号。这样的传播信号可以采取各种形式的任何一种,包括但是不限于电磁、光学或其任何适当的组合。计算机可读信号介质可以是不作为计算机可读存储介质并且可以传输、传播或传送程序以由指令执行系统、装置或者器件使用或者与其结合使用的任何计算机可读介质。
[0090]体现在计算机可读介质上的程序代码可以用任何适当的介质传输,所述介质包括但不限于:无线、有线、光缆、RF等,或上述的任意合适的组合。
[0091]可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如OpenCL、Java、Smalltalk、C++,还包括常规的过程式程序设计语言一诸如” C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0092]本文中将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
[0093]也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
[0094]也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
[0095]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
【权利要求】
1.一种系统,包括: 第一处理器; 第一存储器,其耦合到所述第一处理器; 网络链路,其耦合到所述第一处理器; 第二处理器,其通过所述网络链路耦合到所述第一处理器;以及, 第二存储器,其耦合到所述第二处理器,所述第二存储器包括以其所体现的计算机可读程序代码,所述计算机可读程序代码被配置为: 设置标志,用于冗余校验在所述第二存储器中的计算,其中,所述冗余校验执行所述计算至少2次,并且将每一次计算的结果进行比较;并且 命令在所述第一处理器上执行的代理进程当根据所述标志的状态在所述第一处理器上运行所述计算时执行冗余校验。
2.根据权利要求1所述的系统,其中,基于策略信息来动态地设置所述标志。
3.根据权利要求1或权利要求2所述的系统,进一步包括: 其中,所述网络链路包括数据路径和控制路径;并且 其中,所述计算机可读程序代码进一步被配置为由所述第一处理器基于在所述数据路径上接收的数据来计算第一校验和,并且将所述校验和在所述控制路径上接收的、与由所述第二处理器计算的第二校验和作比较,·
4.一种用于在计算机系统中处理数据的方法,所述方法包括: 通过在具有第二处理器架构的第二处理器上执行的代理进程管理在具有第一处理器架构的第一处理器上的工作负荷; 通过所述代理进程激活在所述第二处理器上的冗余计算; 至少两次执行来自所述多个工作负荷的工作负荷的相同的计算;以及 将所述相同的计算的结果进行比较; 其中,所述第一处理器通过网络耦合到所述第二处理器,并且所述第一处理器架构和第二处理器架构是不同的架构。
5.根据权利要求4所述的方法,其中,管理在所述第一处理器上的所述工作负荷包括使用开放式计算语言运行时间系统。
6.根据权利要求4或5所述的方法,还包括在平台管理进程表中提供服务质量标志,其中,平台管理进程与所述平台管理进程表相关联,使得所述平台管理进程能够监控和管理所述第一处理器和所述第二处理器的资源和性能。
7.根据权利要求6的方法,其中,所述平台管理进程表包括作业标识符,用于识别要在所述第二处理器上执行的工作负荷。
8.根据权利要求7所述的方法,还包括:以所述作业标识符查询所述平台管理进程。
9.根据权利要求6的方法,其中,所述平台管理进程表包括冗余限定字段,用于配置工作负荷的硬件要求。
10.根据权利要求6所述的方法,还包括接收下述指示:是否基于在所述平台管理进程表中的服务质量标志的值执行相同的计算。
11.根据权利要求4至10中的任何一项所述的方法,还包括:在所述第二处理器上激活所述代理进程以执行相同的计算。
12.根据权利要求11所述的方法,还包括:在包括所述第二处理器的加速器系统上执行相同的计算。
13.根据权利要求12所述的方法,还包括使用固件配置所述加速器系统。
14.根据权利要求12所述的方法,还包括:将在所述加速器系统中的所述第二处理器架构配置成主处理器和副处理器,以同时在所述主处理器和所述副处理器上的相同芯片的多个内核上计算相同的计算。
15.根据权利要求12所述的方法,还包括:将所述加速器系统配置为主处理器和副处理器,以同时在所述主处理器和所述副处理器上的不同芯片的多个内核上计算相同的计笪
16.根据权利要求12所述的方法,还包括:将所述加速器系统配置为主处理器和副处理器,以在所述第二处理器中的单组的单个或多个内核上依序计算相同的计算。
17.根据权利要求12所述的方法,还包括:将所述加速器系统配置来实施N-模冗余,所述加速器系统除了所述第二处理器进一步包括至少两个处理器。
18.根据权利要求4至17中任何一项所述的方法,还包括使用远程直接存储器访问协议将数据从所述第一处理器传送到所述第二处理器。
19.根据权利要求4至18的任何一项所述的方法,进一步包括:基于服务等级协议来缩放所述工作负荷的计算的可靠性,所述服务等级协议指定可靠性的多个级别之一。
20.一种计算机程序产品,用于保持在计算机系统配置中的可靠性,所述计算机程序产品包括: 具有以其体现的计算机可读程序代码的计算机可读存储介质,所述计算机可读程序代码被配置为: 通过在具有第二处理器架构的第二处理器上执行的代理进程管理在具有第一处理器架构的第一处理器上的工作负荷; 通过所述代理进程激活在所述第二处理器上的冗余计算; 至少两次执行来自所述多个工作负荷的工作负荷的相同的计算;以及 将所述相同的计算的结果进行比较; 其中,所述第一处理器通过网络耦合到所述第二处理器,并且所述第一处理器架构和第二处理器架构是不同的架构。
21.一种计算机程序,包括程序代码组件,用于当所述程序在计算机上运行时执行权利要求4至19的所有步骤。
【文档编号】G06F11/18GK103582874SQ201280026381
【公开日】2014年2月12日 申请日期:2012年6月18日 优先权日:2011年6月28日
【发明者】R.克里斯纳默西, C.J.帕里斯, D.W.施米特, B.P.西格尔 申请人:国际商业机器公司

最新回复(0)