发明内容
本申请提供一种确定NC芯片连接错误的方法及NC芯片,用以解决现有技术中存在的NC芯片之间连接错误难以定位的问题。
第一方面,本申请提供一种确定节点控制器NC芯片连接错误的方法,该方法包括:第一NC芯片在自身的第一RX端与第二NC芯片的第一TX端建立第一链路之后,通过该第一RX端接收第二NC芯片通过第一TX端发送的校验信息,该校验信息可以确定第一RX端连接的TX端的位置(或身份)或第一RX端连接的TX端应连接的RX端的位置,进而根据该校验信息确定第一RX端与第一TX端的连接是否错误,确定第一链路是否连接错误。
上述技术方案中,第一NC芯片的第一RX端与第二NC芯片的第一TX端连接后,通过第一RX端接收第二NC芯片的第一TX端发送的校验信息,根据该校验信息判断第一RX端与第一TX端是否连接错误,进而可以定位出NC芯片之间的错误连接,方便进行系统维护,也能够避免错误链路导致系统启动出错机或者数据传输异常。
结合第一方面,在第一方面的第一种可能的实现方式中,所述第一NC芯片根据所述校验信息确定所述第一链路是否连接错误的实现方式可以为:所述第一NC芯片读取所述第一NC芯片的配置信息,该配置信息可以由基本输入输出系统(basic input outputsystem,BIOS)或主板上的管理芯片给第一NC芯片配置,也可以由第一NC芯片自己从存储有该配置信息的存储器中读取配置信息。该配置信息用于指示第一NC芯片的端口的连接关系,包括指示第一NC芯片的NI接口的端口应连接哪个NC芯片的哪个端口,例如,该配置信息包括第一RX端应连接的第一目标TX的标识。所述第一NC芯片判断所述第一TX端的标识与所述第一目标TX的标识是否一致;若不一致,则所述第一NC芯片确定所述第一链路连接错误。上述方案实现方式简单,可以快速确定NC芯片间的链路是否连接错误。
结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述第一NC芯片根据所述校验信息确定所述第一链路是否连接错误的实现方式可以为:第二NC芯片发送的校验信息包括第一TX端应连接的第一目标RX端的标识,该第一目标RX端的标识可以由第二NC芯片从第二NC芯片的配置信息中读取,该配置信息可以由BIOS或主板上的管理芯片给第二NC芯片配置,也可以由第二NC芯片自己从存储有该配置信息的存储器中读取配置信息。第二NC芯片的配置信息用于指示第二NC芯片的端口的连接关系,包括第一TX端应连接的第一目标RX端的标识。所述第一NC芯片从校验信息中获取该第一目标RX端的标识,判断该第一目标RX端的标识与所述第一RX端的标识是否一致;若不一致,则所述第一NC芯片确定所述第一链路连接错误。上述方案实现方式简单,可以快速确定NC芯片间的链路是否连接错误。
结合第一方面以及第一方面的第一、第二种可能的实现方式中任一可能的实现方式,在第一方面的第三种可能的实现方式中,如果第一NC芯片根据该校验信息确定所述第一链路连接错误,所述第一NC芯片产生表示所述第一链路连接错误的中断,以便多处理器系统中的CPU或NC在检测到该中断之后,确定第一链路连接错误,可以中止使用该第一链路,或者使该第一链路处于无效状态。在一些可能的实施例中,多处理器系统中的CPU或NC在检测到该中断之后,可以通过输出装置提示用户该第一链路连接错误,指示用户更正该连接错误。上述技术方案中,第一NC芯片在确定第一NC芯片的第一RX端与第二NC芯片的第一TX端之间的第一链路连接错误之后,产生表明第一链路连接错误的中断,通知多处理器系统中CPU和/或NC该第一链路连接错误,避免使用该第一链路导致系统启动出错机或者数据传输异常。
结合第一方面以及第一方面的第一、第二种可能的实现方式中任一能的实现方式,在第一方面的第四种可能的实现方式中,在所述第一NC芯片确定所述第一链路连接错误之后,第一NC芯片可以在第以NC芯片的配置信息中遍历自己的RX端的目标TX端的标识,判断是否有RX端的目标TX端与第一TX端的标识一致,若确定第一TX端的标识与第二RX端的第二目标TX端的标识一致,所述第一NC芯片保持不中断所述第一链路的连接的状态。由于第一TX端的标识与第二RX端应连接的第二目标TX端的标识一致,表明第一TX端虽然没有连接配置的RX端口,但连接了配置的RX端口所在NC的其它RX端口(即第一RX端口),第二NC芯片能够根据该第一TX端与第一RX端之间的第一链路将数据传输至第一TX端配置的RX端所在的NC芯片(即第二NC芯片),因此,可以不中断第一链路的连接,进而在不改变当前的物理连接的情况下,利用错误的物理连接(该错误的物理连接表明该连接与配置信息的指示不一致,不表示该连接不能进行数据传输)将数据传输至正确的NC芯片,实现NC芯片间链路的自适应,不仅开销较小,且效率较高。另外,上述方案可以在NC间连接错误的情况下继续进行多处理器系统的启动,可以减少多处理器系统的启动耗时。
结合第一方面的第二种可能的实现方式,在第一方面的第五种可能的实现方式中,在所述第一NC芯片确定所述第一链路连接错误之后,第一NC芯片可以遍历第一NC芯片的RX端口,判断第一目标RX端的标识是否与第一NC芯片的任一RX端的标识一致。在第一RX端的标识与第一NC芯片的第二RX端的标识一致时,第一NC芯片保持不中断该第一链路的连接的状态。由于第一目标RX端的标识与第二RX端的标识一致,表明第一TX端虽然没有连接配置的RX端口,但连接了配置的第一目标RX端口所在NC的其它RX端口(即第一RX端口),第二NC芯片能够根据该第一TX端与第一RX端之间的第一链路将数据传输至第一TX端配置的第一目标RX端所在的NC芯片(即第二NC芯片),因此,可以不中断该第一链路的连接,进而在不改变当前的物理连接的情况下,利用错误的物理连接将数据传输至正确的NC芯片,实现NC芯片间链路的自适应,不仅开销较小,且效率较高。另外,上述方案可以在NC间连接错误的情况下继续进行多处理器系统的启动,可以减少多处理器系统的启动耗时。
结合第一方面的第四或第五种可能的实现方式,在第一方面的第六种可能的实现方式中,在所述第一NC芯片保持不产生表示所述第一链路连接错误的中断的状态之后,所述第一NC芯片将通过所述第一RX端接收的数据转交所述第二RX端。由于第一RX端连接第一TX端,而第一NC芯片的第二RX端为第一TX端配置的应连接的RX端,第一RX端将接收的数据转交第二RX端,能够实现第一TX端将数据传输至配置的应连接的RX端,进而在不改变当前的物理连接的情况下,利用错误的物理连接将数据传输至正确的端口,实现NI间链路的自适应,不仅开销较小,且效率较高。不仅如此,在该第二RX端配置(或关联)附加业务功能时,通过第一RX端接收的数据转交第二RX端能够保证数据经过该附加业务功能处理,保证数据业务的正常运行。
结合第一方面或第一方面的第一至第六种可能的实现方式中任一实现方式,在第一方面的第七种可能的实现方式中,第一NC芯片的TX端(例如第一NC芯片的第二TX端)也可以向其连接的NC芯片的RX端口(例如第三NC芯片的第三RX端,该第三NC芯片指除第二NC芯片之外的任一NC芯片)发送第二校验信息,该第二校验信息可以包括第二TX端的标识,或者第二校验信息还包括第二TX端应连接的第二目标RX端的标识,以使该第三NC芯片确定第二TX端与第三RX端的连接是正确连接还是错误连接。
结合第一方面的第七种可能的实现方式,在第一方面的第八种可能的实现方式中,所述第二校验信息还包括:所述第二TX端应连接端口所在的目标NC芯片的标识;在所述第一NC芯片通过第二TX端向所述第三RX端发送所述第二校验信息之后,第三NC芯片可以根据该第二校验信息确定该第二链路是否连接错误,如果所述第一NC芯片检测到所述第三NC芯片生成的表示所述第二链路连接错误的中断,所述第一NC芯片判断所述第一NC芯片与所述目标NC芯片之间是否存在连接正确的第三链路;若存在,所述第一NC芯片通过所述第三链路向所述目标NC芯片发送被配置为经由所述第二链路发送的数据。上述技术方案中,第一NC芯片在确定第二TX端连接错误之后,确定第二TX应连接的目标NC与自己之间连接正确的第三链路,通过该连接正确的第三链路向该目标NC发送原本指示经由第二TX端发送的数据,进而在不改变当前的物理连接的情况下,利用与目标NC之间的正确连接的链路传输数据,实现链路的备份,不仅开销较小,且效率较高。另外,由于在NC间连接错误的情况下通过链路数据备份实现多处理器系统的启动,也可以减少多处理器系统的启动耗时。
结合第一方面或第一方面的第一至第八种可能的实现方式中任一实现方式,在第一方面的第九种可能的实现方式中,第一NC芯片通过第一接收RX端接收第二NC芯片的第一发送TX端发送的校验信息这一步骤可以在第一RX端与第一TX端间的第一链路的链路训练完成之后执行,在NC芯片之间的链路的链路训练结束之后,先不进入L0状态,而是先执行确定NC芯片连接错误的方法,确定出连接错误的链路,在此之后,才进入L0状态。其中,所谓L0状态为链路激活状态,在多处理器的链路处于L0状态后,多处理器系统可以进行启动。上述技术方案可以避免系统启动出错或者数据传输异常。
第二方面,本申请提供一种第一节点控制器NC芯片,包括:通信连接的第一RX端以及处理模块。第一接收RX端用于在自身与第二NC芯片的第一发送TX端之间建立第一链路后,接收第二NC芯片的第一发送TX端发送的校验信息;处理模块,用于根据所述校验信息确定所述第一链路是否连接错误。上述方案可以定位出NC芯片之间的错误连接,方便进行系统维护,也能够避免错误链路导致系统启动出错机或者数据传输异常。
结合第二方面,在第二方面的第一种可能的实现方式中,所述第一NC芯片还包括:存储模块,用于存储所述第一NC芯片的配置信息,所述第一NC芯片的配置信息包括所述第一RX端应连接的第一目标TX的标识;所述处理模块,具体用于:读取第一目标TX的标识,在所述校验信息中包括的第一TX端的标识与所述第一目标TX的标识不一致时,确定所述第一链路连接错误。上述方案实现方式简单,可以快速确定NC芯片间的链路是否连接错误。
结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述处理模块,具体用于:在所述校验信息中包括的所述第一TX端应连接的第一目标RX端的标识与所述第一RX端的标识不一致时,确定所述第一链路连接错误。上述方案实现方式简单,可以快速确定NC芯片间的链路是否连接错误。
结合第二方面以及第二方面的第一、第二种可能的实现方式中任一可能的实现方式,在第二方面的第三种可能的实现方式中,所述处理模块还用于:在确定所述第一链路连接错误之后,产生表示所述第一链路连接错误的中断。上述方案避免使用该第一链路导致系统启动出错机或者数据传输异常。
结合第二方面以及第二方面的第一、第二种可能的实现方式中任一可能的实现方式,在第二方面的第四种可能的实现方式中,所述第一NC芯片的存储模块存储的所述第一NC芯片的配置信息包括所述第一NC芯片的第二RX端应连接的第二目标TX的标识;所述处理模块还用于:在所述第二目标TX端的标识与所述校验信息中包括的第一TX端的标识一致时,保持不中断所述第一链路的连接状态。上述方案可以不中断第一链路的连接,进而在不改变当前的物理连接的情况下,利用错误的物理连接将数据传输至正确的NC芯片,实现NC芯片间链路的自适应,不仅开销较小,且效率较高。另外,上述方案可以在NC间连接错误的情况下继续进行多处理器系统的启动,可以减少多处理器系统的启动耗时。
结合第二方面以及第二方面的第一、第二种可能的实现方式中任一可能的实现方式,在第二方面的第五种可能的实现方式中,所述处理模块还用于:在所述校验信息中包括的所述第一TX端应连接的第一目标RX端的标识与所述第一NC芯片的第二RX端的标识一致时,保持不中断所述第一链路的连接状态。上述方案可以不中断第一链路的连接,进而在不改变当前的物理连接的情况下,利用错误的物理连接将数据传输至正确的NC芯片,实现NC芯片间链路的自适应,不仅开销较小,且效率较高。另外,上述方案可以在NC间连接错误的情况下继续进行多处理器系统的启动,可以减少多处理器系统的启动耗时。
结合第二方面的第四或第五种可能的实现方式,在第二方面的第六种可能的实现方式中,所述第一NC芯片还包括第二RX端;所述处理模块还用于:在保持不中断所述第一链路的连接状态之后,指示所述第一RX端将接收的数据转交所述第二RX端。上述方案可以在不改变当前的物理连接的情况下,利用错误的物理连接将数据传输至正确的端口,实现NI间链路的自适应,不仅开销较小,且效率较高。不仅如此,在该第二RX端配置(或关联)附加业务功能时,通过第一RX端接收的数据转交第二RX端能够保证数据经过该附加业务功能处理,保证数据业务的正常运行。
结合第二方面以及第二方面的第一至第六种可能的实现方式中任一可能的实现方式,在第二方面的第七种可能的实现方式中,所述第一NC芯片还包括第二TX端;所述处理模块,还用于生成第二校验信息,所述第二校验信息包括所述第二TX端应连接的RX端所在的目标NC芯片的标识;所述第二TX端,用于在自身与第三NC芯片的第三RX端建立第二链路时,向第三NC芯片的第三RX端发送所述第二校验信息;所述处理模块,还用于在检测到所述第三NC芯片根据所述第二校验信息在确定出所述第二链路连接错误时、生成的表示所述第二链路连接错误的中断之后,确定所述第一NC芯片与所述目标NC芯片的标识对应的目标NC芯片之间存在连接正确的第三链路;并将由所述第二链路发送的数据转由通过所述第三链路向所述目标NC芯片发送。上述方案可以在不改变当前的物理连接的情况下,利用与目标NC之间的正确连接的链路传输数据,实现链路的备份,不仅开销较小,且效率较高。另外,由于在NC间连接错误的情况下通过链路数据备份实现多处理器系统的启动,也可以减少多处理器系统的启动耗时。
第三方面,本申请提供一种节点控制器NC芯片,该NC芯片用于执行上述第一方面或第一方面的任意可能的实现中的方法。具体的,该NC芯片包括处理器、存储器以及通信接口,所述处理器与所述存储器以及所述通信接口通信连接;所述存储器用于存储计算机指令,所述通信接口包括至少两个TX端以及至少两个RX端,所述处理器用于执行所述计算机指令,以在执行所述计算机指令时通过所述通信接口执行上述第一方面或第一方面的任意可能的实现中的方法。
第四方面,本申请提供一种计算机可读存储介质,所述可读存储介质中存储有计算机指令,所述指令在计算机上运行时,使得计算机执行上述第一方面或第一方面的任意可能的实现中的方法。
第五方面,本申请提供了一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行第一方面或第一方面的任意可能的实现中的方法。
本申请在上述各方面提供的实现的基础上,还可以进行进一步组合以提供更多实现。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。
本申请提供一种确定NC芯片连接错误的方法及NC芯片,用以解决现有技术中存在NC芯片之间连接错误难以定位的问题。其中,方法和NC芯片是基于同一发明构思的,由于方法及NC芯片解决问题的原理相似,因此NC芯片与方法的实施可以相互参见,重复之处不再赘述。
本申请中所涉及的多个,是指两个或两个以上。另外,需要理解的是,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
下面首先介绍本发明实施例中涉及的一些概念。
多处理器系统,是指包含两个或多个功能相近的CPU,CPU之间彼此可以交换数据,并能够共享输入/输出(input/output,I/O)设备以及外部设备,整个硬件系统由统一的操作系统控制,在CPU和程序之间实现作业、任务、程序、数组及其元素各级的全面并行。其中,CPU之间能够通过系统总线连接,例如快速通道互联(quickpath interconnect,QPI)总线以及现有技术中其他的用于CPU互联的总线,但是,每个CPU的总线接口数有限,使得CPU通过总线直接互联数有限,因此,参照图1,可以通过节点控制器NC芯片来扩展CPU的互联数,增强多处理器系统的处理能力。
节点控制器NC芯片,用于扩展CPU的互联数,即,没有通过系统总线相连的CPU可以通过NC芯片实现间接连接。实际情况中,两个CPU可以连接到同一NC芯片,通过该NC芯片实现间接连接;两个CPU也可以通过多个NC芯片实现互联,例如,CPU1连接NC芯片1,CPU2连接NC芯片2,NC芯片1与NC芯片2相连,进而实现CPU1与CPU2的连接。参照图2,NC芯片可以包括处理模块、存储模块以及NI接口,其中,存储模块可以存储配置参数,该配置参数指示NC芯片的各端口的连接关系,处理模块可以根据该配置参数指示各端口建立链路。除了NI接口之外,NC芯片还可以包括其它的接口,例如QPI接口、超级通道互联(Ultra PathInterconnect,UPI)接口等。需要说明的是,NC芯片的部件可以不限于图2中的部件,例如,NC芯片还可以包括QPI协议适配的模块。
本发明实施例中,NC芯片的处理模块还可以指示NI接口的发送(transmit,TX)端口向其连接的接收(receive,RX)端口发送验证信息,以使该RX端口所在的NC芯片确定该TX端口与RX端口之间的链路是否连接错误。该处理模块还用于:在NI接口的RX端口接收到与其连接的TX端口发送的校验信息之后,根据校验信息确定该RX端口与该TX端口之间的链路是否连接错误。
网络互联NI接口,NC芯片的用于实现与其他NC芯片相连的接口,一个NC芯片接口可以包括多个NI接口,一个NI接口可以包括多个TX端口以及多个RX端口。可选的,NI接口中TX端口与RX端口成对出现,一对TX端口与RX端口可以用于实现与另一NC芯片之间的双工通信。例如,NC芯片1的NI 1的TX1与RX1为一对端口,NC芯片2的NI 2的TX2与RX2为一对端口,TX1与RX2连接形成NC芯片1指向NC芯片2的数据传输链路,RX1与TX2连接形成NC芯片2指向NC芯片1的数据传输链路,通过上述两条链路可以实现NC芯片1与NC芯片2之间的双工数据传输。
图3所示为本发明实施例提供的确定NC芯片连接错误的方法,该方法包括:
步骤101、第二NC芯片通过第一TX端向第一NC芯片的第一RX端发送校验信息,第一TX端与第一RX端之间建立第一链路。
步骤102、第一NC芯片通过第一RX端接收第二NC芯片的第一TX端发送的校验信息。
步骤103、第一NC芯片根据校验信息确定第一链路是否连接错误。
步骤103可以有多种实现,包括但不限于:
方式1,参见图4a,步骤103包括:
步骤1031、第一NC芯片读取第一NC芯片的配置信息,该配置信息可以由基本输入输出系统(basic input output system,BIOS)或主板上的管理芯片给第一NC芯片配置,也可以由第一NC芯片自己从存储有该配置信息的存储器中读取配置信息。该配置信息用于指示第一NC芯片的端口的连接关系,包括指示第一NC芯片的NI接口的端口应连接哪个NC芯片的哪个端口,例如,该配置信息包括第一RX端应连接的第一目标TX的标识。
步骤1032、在读取该第一目标TX的标识之后,第一NC芯片判断第一TX端的标识与第一目标TX的标识是否一致;若一致,则执行步骤1033,若不一致,则执行步骤1034。
步骤1033、第一NC芯片确定第一链路连接正确。
步骤1034、第一NC芯片确定第一链路连接错误。
由于第一NC芯片的配置信息配置了第一RX端应当连接的第一目标TX端,所以如果第一TX端的标识与第一目标TX端的标识一致,表明第一TX端与第一NC芯片的配置信息指示的第一RX端应连接的TX端为同一端口,第一RX端与第一TX端的连接正确,反之,如果第一TX端的标识与第一目标TX端的标识不一致,则表明第一RX端连接的第一TX端并不是第一NC芯片的配置信息指示的第一RX端应连接的TX端,第一RX端与第一TX端的连接错误。
方式2,参见图4b,在步骤101之前,第二NC芯片可以读取本地保存的第二NC芯片的配置信息,与第一NC芯片的配置信息类似,第二NC芯片的配置信息也可以由BIOS或主板上的管理芯片给第二NC芯片配置,也可以由第二NC芯片自己从存储有该配置信息的存储器中读取配置信息。第二NC芯片的配置信息用于指示第二NC芯片的端口的连接关系,包括第一TX端应连接的第一目标RX端的标识。第二NC芯片从读取的配置信息中获得第一目标RX端的标识,生成校验信息,该校验信息包括第一TX端的标识以及第一目标RX端的标识。
步骤103包括:
步骤1035、第一NC芯片判断接收校验信息的第一RX端的标识与该第一目标RX端的标识是否一致,若一致,则执行步骤1033,若不一致,则执行步骤1034。
由于第二NC芯片的配置信息配置了第一TX端应当连接的第一目标RX端,所以如果第一RX端的标识与第一目标RX端的标识一致,表明第一RX端与第二NC芯片的配置信息指示的第一TX端应连接的RX端为同一端口,第一RX端与第一TX端的连接正确,反之,如果第一RX端的标识与第一目标RX端的标识不一致,则表明第一TX端连接的第一RX端并不是第二NC芯片的配置信息指示的第一TX端应连接的RX端,第一RX端与第一TX端的连接错误。
上述技术方案中,第一NC芯片的第一RX端与第二NC芯片的第一TX端连接后,通过第一RX端接收第二NC芯片的第一TX端发送的校验信息,根据该校验信息判断第一RX端与第一TX端是否连接错误,进而可以定位出NC芯片之间的错误连接,方便进行系统维护,也能够避免错误链路导致系统启动出错机或者数据传输异常。
可选的,步骤101可以在该第一链路的链路训练完成之后执行,即,参照图5,在NC芯片之间的链路的链路训练结束之后,先不进入L0状态,而是先执行本发明实施例提供的确定NC芯片连接错误的方法,确定出连接错误的链路,本发明实施例中将这个过程称为L0预备状态,在此之后,才进入L0状态。上述技术方案可以避免系统启动出错或者数据传输异常。
图6a所示为4个NC芯片正确地互联的示意图,图中N0~N4分别表示NC芯片1~NC芯片4,每个NC芯片可以包括三个NI接口,分别为NI0~NI2,N0的NI0与N2的NI0相连,N0的NI1与N3的NI1相连,N0的NI2与N1的NI2相连,N1的NI0与N3的NI0相连,N1的NI1与N2的NI1相连,N2的NI2与N3的NI2相连。其中,不妨设NI0至NI2中每个NI可以连接3跟线缆,每根线缆连接NI接口的一个TX端以及RX端,可进行双向传输,图6b所示为N0的NI0与N2的NI0之间的线缆连接。需要说明的是,本发明实施例并不限定NC芯片通过双向或单向传输的线缆互联。
图6c所示为NC芯片间连接错误的一种情形,错误连接为图中虚线所示的连接,包括:N0的NI0应当连接N2的NI0,却错误地连接N1的NI0;N3的NI0应当连接NI的NI0,却错误地连接N2的NI0。
图6d所示为NC芯片间连接错误的另一种情形,错误连接为图中虚线所示的连接,包括:N0的NI0的三根线缆应该均连接N2的NI0,其中的线缆0却错误地连接N1的NI0,只有线缆1以及线缆2保持正确连接;N3的NI的三根线缆应该均连接N1的NI0,其中的线缆0却错误地连接N2的NI0,只有线缆1以及线缆2保持正确连接。
可选的,参见图7,在步骤103之后,还包括如下步骤:
步骤104、在确定第一链路连接错误之后,第一NC芯片产生表示第一链路连接错误的中断。该中断表示第一链路连接错误,多处理器系统中的CPU或NC在检测到该中断之后,确定第一链路连接错误,可以中止使用该第一链路,或者使该第一链路处于无效状态。在一些可能的实施例中,多处理器系统中的CPU或NC在检测到该中断之后,可以通过输出装置提示用户该第一链路连接错误,指示用户更正该连接错误。
上述技术方案中,第一NC芯片在确定第一NC芯片的第一RX端与第二NC芯片的第一TX端之间的第一链路连接错误之后,产生表明第一链路连接错误的中断,通知多处理器系统中CPU和/或NC该第一链路连接错误,避免使用该第一链路导致系统启动出错机或者数据传输异常。
可选的,参见图8a,结合上述方式1或方式2,在步骤1034之后,还包括如下步骤:
步骤105、第一NC芯片遍历第一NC芯片的配置信息,判断第一TX端的标识是否与第一NC芯片的任一RX端应连接的TX端的标识一致。
步骤106、第一NC芯片在第一TX端的标识与第一NC芯片的第二RX端应连接的第二目标TX端的标识一致时,保持不中断第一链路的连接的状态。所谓保持不中断第一链路的连接的状态,可以为不产生前述表示该第一链路连接错误的中断,也可以为保持第一RX端的连接,不断开第一链路。
由于第一TX端的标识与第二RX端应连接的第二目标TX端的标识一致,表明第一TX端虽然没有连接配置的RX端口,但连接了配置的RX端口所在NC的其它RX端口(即第一RX端口),第二NC芯片能够根据该第一TX端与第一RX端之间的第一链路将数据传输至第一TX端配置的RX端所在的NC芯片(即第二NC芯片),因此,可以不中断第一链路的连接,进而在不改变当前的物理连接的情况下,利用错误的物理连接(该错误的物理连接表明该连接与配置信息的指示不一致,不表示该连接不能进行数据传输)将数据传输至正确的NC芯片,实现NC芯片间链路的自适应,不仅开销较小,且效率较高。另外,上述方案可以在NC间连接错误的情况下继续进行多处理器系统的启动,可以减少多处理器系统的启动耗时。
可选的,参见图8b,结合上述方式2,在步骤1034之后,还包括如下步骤:
步骤107、第一NC芯片遍历第一NC芯片的RX端口,判断第一目标RX端的标识是否与第一NC芯片的任一RX端的标识一致。
步骤108、第一NC芯片在第一目标RX端的标识与第一NC芯片的第二RX端的标识一致时,保持不中断第一链路的连接的状态。所谓保持不中断第一链路的连接,可以为不产生前述表示该第一链路连接错误的中断,也可以为保持第一RX端的连接,不断开第一链路。
需要说明的是,图8b所述的方案也可以结合上述方式1,但要求该校验信息还包括第一TX端应连接的该第一目标RX端的标识。
由于第一目标RX端的标识与第二RX端的标识一致,表明第一TX端虽然没有连接配置的RX端口,但连接了配置的第一目标RX端口所在NC的其它RX端口(即第一RX端口),第二NC芯片能够根据该第一TX端与第一RX端之间的第一链路将数据传输至第一TX端配置的第一目标RX端所在的NC芯片(即第二NC芯片),因此,可以不中断第一链路的连接,进而在不改变当前的物理连接的情况下,利用错误的物理连接将数据传输至正确的NC芯片,实现NC芯片间链路的自适应,不仅开销较小,且效率较高。另外,上述方案可以在NC间连接错误的情况下继续进行多处理器系统的启动,可以减少多处理器系统的启动耗时。
可选的,继续参照图8a、图8b,在步骤106或步骤108之后,还可以包括如下步骤:
步骤109、第一NC芯片将通过第一RX端接收的数据转交第二RX端。
由于第一RX端连接第一TX端,而第一NC芯片的第二RX端为第一TX端配置的应连接的RX端,第一RX端将接收的数据转交第二RX端,能够实现第一TX端将数据传输至配置的应连接的RX端,进而在不改变当前的物理连接的情况下,利用错误的物理连接将数据传输至正确的端口,实现NI间链路的自适应,不仅开销较小,且效率较高。不仅如此,在该第二RX端配置(或关联)附加业务功能时,通过第一RX端接收的数据转交第二RX端能够保证数据经过该附加业务功能处理,保证数据业务的正常运行。
图9所示为步骤109中“第一NC芯片将通过第一RX端接收的数据转交第二RX端”的实现方式,在图9中,NC芯片1的配置信息指示NC芯片1的TX11应连接的RX端口为NC芯片2的RX21,NC芯片2的配置信息指示NC芯片2的TX21应连接的RX端口为NC芯片1的RX11,但如图9中曲线所示,NC芯片1的TX11实际连接NC芯片2的RX22、NC芯片2的TX21实际连接NC芯片1的RX12,上述两条链路均为连接错误的链路。根据上述步骤109,NC芯片1在通过RX12接收数据后,可以将数据转交RX11,实现将数据从TX21传输至RX11。同理,NC芯片2在通过RX22接收数据后,可以将数据转交RX21,实现将数据从TX11传输至RX21。
可选的,参照图10,在步骤104之后,还包括如下步骤:
步骤110、第二NC芯片检测到第一NC生成的该中断,确定第一TX端连接错误。
步骤111、第二NC芯片根据第二NC芯片的配置信息确定第一TX端应连接的目标NC,所谓第一TX端应连接的目标NC指的是第一TX端应连接的第一目标RX端所在的NC,该目标NC可以是第一NC,也可以是其它NC。
步骤112、第二NC芯片判断第二NC芯片与目标NC之间是否存在连接正确的链路,若存在,则执行步骤113。具体的,第二NC芯片可以维护有自身的端口的状态,包括NI的端口连接了哪个NC的哪个端口,以及该连接是否错误,第二NC芯片根据维护的端口的状态的信息即可判断自身与目标NC之间是否存在连接正确的链路。参见图6d,虽然线N0的NI0的线缆0连接错误,但N0与N2之间仍存在连接正确的线缆1以及线缆2。
步骤113、第一NC芯片通过第二NC芯片与目标NC之间连接正确的链路向目标NC芯片发送指示经由第一链路发送的数据。
上述技术方案中,第二NC芯片在确定第一TX端连接错误之后,确定第一TX应连接的目标NC与自己之间连接正确的链路,通过该连接正确的链路向该目标NC发送原本指示经由第一TX端与第一目标RX端之间链路发送的数据,进而在不改变当前的物理连接的情况下,利用与目标NC之间的正确连接的链路传输数据,实现链路的备份,不仅开销较小,且效率较高。另外,由于在NC间连接错误的情况下通过链路数据备份实现多处理器系统的启动,也可以减少多处理器系统的启动耗时。
图11所示为步骤113的实现方式,NC芯片1的配置信息指示NC芯片1的TX13应连接的RX端口为NC芯片2的RX23,NC芯片2的配置信息指示NC芯片2的TX23应连接的RX端口为NC芯片1的RX13,但如图11所示,NC芯片1的TX13与NC芯片2的RX23未建立连接,其原因可能是TX13连接至NC芯片2的其它RX或者其它NC芯片的RX,或者,TX13未能与任何RX连接;同样的,NC芯片2的TX23与NC芯片1的RX13未建立连接。但是,NC芯片1与NC芯片2之间存在连接正确的链路,如图11中的TX14与RX24之间的链路以及TX24与RX14之间的链路。根据上述步骤113,NC芯片1在接收指示由TX13传输的数据后,可以将数据备份至与TX13应连接的NC2之间连接正确的链路,即TX14与RX24之间的链路,经由TX14与RX24之间的链路将数据传输至NC芯片2。同理,NC芯片2在接收指示由TX23传输的数据后,可以将数据备份至TX24与RX14之间的链路,经由TX24与RX14之间的链路将数据传输至NC芯片1。
需要说明的是,上述第一NC芯片的TX端(例如第一NC芯片的第二TX端)也可以向其连接的NC芯片的RX端口(例如第三NC芯片的第三RX端,该第三NC芯片指除第一NC芯片之外的任一NC芯片)发送第二校验信息,该第二校验信息包括第二TX端的标识,或者第二校验信息还包括第二TX端应连接的第二目标RX端的标识,以使该第三NC芯片确定第二TX端与第三RX端的连接是正确连接还是错误连接,其实现方式与第二NC芯片确定第一链路是否连接错误一致,在此不再重复。
另外,上述第一NC芯片、第二NC芯片可以是多处理器系统中的任意NC芯片,多处理器系统中的任意NC芯片可以执行上述图3至图11中任一所示方法中的步骤,确定NC间的连接是否错误。
再者,在多处理器系统包括多个NC时,在多处理器系统启动时,多个NC可以一起完成链路训练,并在链路训练完成之后,多个NC均执行图3至图11中任一所示方法,进行连接错误的链路的检查,在检查结束之后才进入L0状态,执行高可靠性、高可用性、高服务性(reliability availability serviceability,RAS)启动。
本发明实施例提供的一种节点控制器NC芯片,该NC芯片可以作为图3至图11所述的确定NC芯片连接错误的方法中的第一NC芯片,也可以作为该方法中的第二NC芯片,这里以第一NC芯片为例说明,可以继续参照图2,所述的NC芯片可以包括第一RX端31以及处理模块10,该处理模块10可以为中央处理模块(central processing unit,CPU),或者为数字处理模块等其它处理模块。该第一RX端31用于在自身与第二NC芯片的第一发送TX端之间建立第一链路后,接收第二NC芯片的第一发送TX端发送的校验信息。处理模块10用于根据该校验信息确定该第一链路是否连接错误,具体实现方式可以参照前述步骤103的各种可能的实现方式,再次不再重复。上述技术方案中,第一NC芯片的第一RX端与第二NC芯片的第一TX端连接后,通过第一RX端接收第二NC芯片的第一TX端发送的校验信息,根据该校验信息判断第一RX端与第一TX端是否连接错误,进而可以定位出NC芯片之间的错误连接,方便进行系统维护,也能够避免错误链路导致系统启动出错机或者数据传输异常。
一种可能的实现方式中,该第一NC芯片还包括存储模块20,用于存储该第一NC芯片的配置信息,该第一NC芯片的配置信息包括该第一RX端应连接的第一目标TX的标识。该处理模块10确定第一链路是否连接错误的一种实现方式为:读取第一目标TX的标识,在该校验信息中包括的第一TX端的标识与该第一目标TX的标识不一致时,确定该第一链路连接错误。上述方案实现方式简单,可以快速确定NC芯片间的链路是否连接错误。
一种可能的实现方式中,该处理模块10确定第一链路是否连接错误的一种实现方式为:在该校验信息中包括的该第一TX端应连接的第一目标RX端的标识与该第一RX端的标识不一致时,确定该第一链路连接错误。上述方案实现方式简单,可以快速确定NC芯片间的链路是否连接错误。
一种可能的实现方式中,该处理模块10还可用于:在确定该第一链路连接错误之后,产生表示该第一链路连接错误的中断。上述方案可避免使用该第一链路导致系统启动出错机或者数据传输异常。
一种可能的实现方式中,该第一NC芯片的存储模块20存储的该第一NC芯片的配置信息包括该NC芯片的第二RX端应连接的第二目标TX的标识;该处理模块还可用于:在该第二目标TX端的标识与该校验信息中包括的第一TX端的标识一致时,保持不中断该第一链路的连接状态。上述方案可以不中断第一链路的连接,进而在不改变当前的物理连接的情况下,利用错误的物理连接将数据传输至正确的NC芯片,实现NC芯片间链路的自适应,不仅开销较小,且效率较高。另外,上述方案可以在NC间连接错误的情况下继续进行多处理器系统的启动,可以减少多处理器系统的启动耗时。
一种可能的实现方式中,该处理模块10还可用于:在该校验信息中包括的该第一TX端应连接的第一目标RX端的标识与该第一NC芯片的第二RX端的标识一致时,保持不中断该第一链路的连接状态。上述方案可以不中断第一链路的连接,进而在不改变当前的物理连接的情况下,利用错误的物理连接将数据传输至正确的NC芯片,实现NC芯片间链路的自适应,不仅开销较小,且效率较高。另外,上述方案可以在NC间连接错误的情况下继续进行多处理器系统的启动,可以减少多处理器系统的启动耗时。
一种可能的实现方式中,该NC芯片还包括第二RX端32;该处理模块还可用于:在保持不中断该第一链路的连接状态之后,指示该第一RX端31将接收的数据转交该第二RX端32。上述方案可以在不改变当前的物理连接的情况下,利用错误的物理连接将数据传输至正确的端口,实现NI间链路的自适应,不仅开销较小,且效率较高。不仅如此,在该第二RX端配置(或关联)附加业务功能时,通过第一RX端接收的数据转交第二RX端能够保证数据经过该附加业务功能处理,保证数据业务的正常运行。
一种可能的实现方式中,该NC芯片还包括第二TX端33;该处理模块10还可用于生成第二校验信息,该第二校验信息包括该第二TX端应连接的RX端所在的目标NC芯片的标识。该第二TX端33用于在自身与第三NC芯片的第三RX端建立第二链路时,向第三NC芯片的第三RX端发送该第二校验信息。该处理模块10还可用于在检测到该第三NC芯片根据该第二校验信息在确定出该第二链路连接错误时、生成的表示该第二链路连接错误的中断之后,确定该第一NC芯片与该目标NC芯片的标识对应的目标NC芯片之间存在连接正确的第三链路;并将由该第二链路发送的数据转由通过该第三链路向该目标NC芯片发送。上述方案可以在不改变当前的物理连接的情况下,利用与目标NC之间的正确连接的链路传输数据,实现链路的备份,不仅开销较小,且效率较高。另外,由于在NC间连接错误的情况下通过链路数据备份实现多处理器系统的启动,也可以减少多处理器系统的启动耗时。
上述第一NC芯片的各模块的实现方式可以参照前述确定NC芯片连接错误的方法中由第一NC芯片执行的各步骤的实现方式。
本发明实施例还提供一种NC芯片,该NC芯片包括处理器、存储器以及通信接口,所述处理器与所述存储器以及所述通信接口通信连接;所述存储器用于存储计算机指令,所述通信接口包括至少两个TX端以及至少两个RX端,所述处理器用于执行所述计算机指令,以在执行所述计算机指令时通过所述通信接口执行前述确定NC芯片连接错误的方法中由第一NC芯片执行的各步骤。
本发明实施例还提供一种计算机可读存储介质,该可读存储介质中存储有计算机指令,该指令在计算机上运行时,使得计算机执行上述确定NC芯片连接错误的方法。
本发明实施例还提供一种计算机程序产品,该计算机程序产品在计算机上运行时,使得计算机执行上述确定NC芯片连接错误的方法。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。