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

文档序号:6495401阅读:184来源:国知局
用于混合系统的统一的自适应ras的制作方法
【专利摘要】一种用于在计算机系统中保持可靠性的方法、系统和计算机程序产品。在一个示例性实施例中,所述方法包括:通过第一组处理器执行第一数据计算,该第一组处理器具有第一计算机处理器架构。该方法通过耦合到第一组处理器的第二处理器执行第二数据计算来继续,第二处理器具有第二计算机处理器架构,第一计算机处理器架构与第二计算机处理器架构不同。最后,该方法包括在第一组处理器和第二处理器在运行的同时基于至少一个度量动态地分配第一组处理器和第二处理器的计算资源,使得优化第一数据计算和第二数据计算的精度和处理速度。
【专利说明】用于混合系统的统一的自适应RAS
【技术领域】
[0001]本发明涉及计算机系统领域,更具体地涉及用于混和系统的统一的、工作负荷优化的、自适应的可靠性、可用性和可维护性(RAS )。
【背景技术】
[0002]混合系统是异构计算环境,并且可能包括具有不同架构或指令集的服务器组合。某些这些服务器可能是高度可靠的,如IBM系统z和其他大型系统。混合系统的其他组件可能包括商品附件,如家电、如x86的刀锋以及如图形处理单元(GPU)和FPGA (现场可编程门阵列)的加速器。这些商品附件可能有比高端大型机系统低的可靠性、可用性和可维护性(RAS)0
[0003]假设具有系统A和系统B的系统的一个系统。设R表示与下述概率相关的可靠性函数:如果实体在时间t = O处未失败,则它在时间t将不失败。假设R (A) >R (B)0对于在系统的该系统上执行的工作负荷,有效的可靠性是产品R (A)XR (B)。如果R (A)为0.8并且R (B)为0.1,那么有效的可靠性为R (A)XR (B)或0.08。这个值是低于R (B)。因此,有效的可靠性小于在链中最薄弱的环节。

【发明内容】

[0004]本发明的一个示例性实施例是一种用于在计算机系统中处理数据的方法。所述方法包括:第一组处理器执行第一数据计算,所述第一组处理器具有第一计算机处理器架构。所述方法通过下述部分来继续:耦合到所述第一组处理器的第二处理器执行第二数据计算。所述第二处理器具有第二计算机处理器架构。所述第一计算机处理器架构与所述第二计算机处理器架构是不同。所述方法包括:在所述第一组处理器和所述第二处理器在运行的同时,基于至少一个度量来动态地分配所述第一组处理器和所述第二处理器的计算资源,使得优化所述第一数据计算和所述第二数据计算的精度和处理速度。
[0005]本发明的另一个实施例是用于保持可靠性的系统。所述系统包括:第一处理器;第一存储器,其耦合到所述第一处理器;网络链路,其耦合到所述第一处理器;第二处理器,其通过所述网络链路耦合到所述第一处理器;以及,第二存储器,其耦合到所述第二处理器。所述第二存储器包括其上所体现的计算机可读程序代码,所述计算机可读程序代码被配置为:设置用于在所述第一存储器中的冗余校验的计算的标志,并且查询在所述第一处理器上执行的代理进程以当在所述第一处理器上运行所述计算时接通冗余校验。
[0006]本发明的另一实施例是一种计算机程序产品,用于保持在计算机系统配置中的可靠性。所述计算机程序产品包括其上体现计算机可读程序代码的计算机可读存储介质。所述计算机可读程序代码被配置为获得在来自至少两个处理器的数据流中的一条数据,其中,所述处理器具有不同的处理器架构。所述计算机程序产品进一步包括:比较来自所述至少两个处理器的每一个的所述数据流中的那条数据。所述计算机程序产品包括:标记在所述数据流中的那条数据,其中,来自至少两个物理上独立的加速器的每一个的那条数据实质上不相等。
【专利附图】

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