CN107870662B - 一种多CPU系统中CPU复位的方法及PCIe接口卡 - Google Patents
一种多CPU系统中CPU复位的方法及PCIe接口卡 Download PDFInfo
- Publication number
- CN107870662B CN107870662B CN201610848201.6A CN201610848201A CN107870662B CN 107870662 B CN107870662 B CN 107870662B CN 201610848201 A CN201610848201 A CN 201610848201A CN 107870662 B CN107870662 B CN 107870662B
- Authority
- CN
- China
- Prior art keywords
- cpu
- reset
- controller
- currently
- pcie
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 81
- 230000008569 process Effects 0.000 claims description 48
- 230000002093 peripheral effect Effects 0.000 claims description 5
- 230000000977 initiatory effect Effects 0.000 claims 1
- 230000008878 coupling Effects 0.000 abstract description 6
- 238000010168 coupling process Methods 0.000 abstract description 6
- 238000005859 coupling reaction Methods 0.000 abstract description 6
- 238000012545 processing Methods 0.000 description 52
- 230000000694 effects Effects 0.000 description 12
- 230000003993 interaction Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 239000000306 component Substances 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/24—Resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种多CPU系统中CPU复位的方法及PCIe接口卡,用于解决多CPU系统中CPU复位的耦合性较强而导致的联动复位的技术问题。该多CPU系统包括第一CPU、第二CPU和控制器,控制器连接于第一CPU和第二CPU之间,该方法可以应用于控制器,该方法包括:接收第一CPU发送的复位触发信号;获得第二CPU发送的当前状态信息;根据第二CPU发送的当前状态信息确定第二CPU当前是否需要进行复位;若确定第二CPU当前需要进行复位,则向第二CPU发送复位触发信号;其中,复位触发信号用于触发多CPU系统中与第一CPU建立PCIe连接的第二CPU进行复位。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种多CPU系统中CPU复位的方法及PCIe接口卡。
背景技术
高速外围组件互连(Peripheral Component Interconnect Express,PCIe)总线技术是用来互联处理器和外围设备的高性能总线技术,PCIe可以提供较高的数据传输速率。作为服务器的板级高速互连总线,PCIe总线广泛应用于服务器、台式机、笔记本电脑、及通信工作站的内置设备等系统中。
例如在多中央处理器(Central Processing Unit,CPU)系统中,通过PCIe总线可以实现各个CPU之间的数据快速交互,进而加速多CPU之间的业务处理。在基于PCIe协议进行数据传输的多CPU系统中,其它的CPU一般呈现为其中一个CPU的PCIe端点设备(EndPoint,EP)的设备属性,例如其中一个CPU(例如CPU_A)最先存在于该多CPU系统中,根据PCIe体系架构的特性可知,新接入的其它的CPU则会呈现为CPU_A的PCIe EP的设备属性。那么,当CPU_A进行复位的时候,其它的CPU就会随着CPU_A的复位而自动进行复位,即其它的CPU会随同CPU_A的复位而进行联动复位,CPU进行复位的耦合性较强。
然而,此时其它的CPU可能正在进行正常的业务处理,如果进行联动复位,则可能导致正常业务中断或者造成其它的负面影响,影响用户的正常使用。
发明内容
本发明实施例提供一种多CPU系统中CPU复位的方法及PCIe接口卡,用于解决多CPU系统中CPU复位的耦合性较强而导致的联动复位的技术问题。
第一方面,提供一种多CPU系统中CPU复位的方法,该多CPU系统包括第一CPU、第二CPU和控制器,控制器连接于第一CPU和第二CPU之间,第一CPU和第二CPU可以通过PCIe总线连接,或者也可以通过外围组件互连(Peripheral Component Interconnect,PCI)总线连接,该方法可以应用于前述的控制器。在该方法中,控制器接收第一CPU发送的复位触发信号以及获得第二CPU发送的当前状态信息,根据接收到的第二CPU发送的当前状态信息确定第二CPU当前是否需要进行复位,若确定第二CPU当前需要进行复位,则向第二CPU发送复位触发信号。其中,复位触发信号用于触发该多CPU系统中与第一CPU建立PCIe连接的第二CPU进行复位,以及用于触发该多CPU系统中与第一CPU建立PCIe连接的其它CPU进行复位。第二CPU的当前状态信息可以用于表明第二CPU当前的工作状态。
本发明实施例中,例如将该多CPU系统中与第一CPU建立PCIe连接的所有CPU统称为其它CPU,那么第二CPU可以是其它CPU中的任意一个CPU。
由于复位触发信号是由第一CPU生成,并且复位触发信号的作用是用于触发多CPU系统中的其它CPU进行复位,即其它CPU均呈现为第一CPU的PCIe EP的设备属性,所以在第一CPU复位时便会生成复位触发信号以触发其它CPU均跟随第一CPU的复位而进行联动复位。由于第二CPU也与第一CPU建立了PCIe连接,所以第二CPU自然是其它CPU中的一个CPU,那么按照现有技术中的方案,当第一CPU复位时自然也会触发第二CPU跟随第一CPU的复位而进行联动复位。而本发明实施例是以第二CPU为例来代表说明其它CPU的复位情况,本发明实施例中对于其它与第一CPU建立有PCIe连接CPU的复位方式可以参考第二CPU。
本发明实施例中的多CPU系统包括至少两个CPU。当只包括两个CPU时,该两个CPU即为第一CPU和第二CPU。当包括多个CPU时,该多个CPU例如为第一CPU、第二CPU、第三CPU,第四CPU,等等。
另外,多CPU系统中的各个CPU之间可以具有主从关系,即可以包括一个或多个主CPU以及多个从CPU,从CPU可以作为主CPU的协处理器与主CPU一起处理业务,或者,多个CPU之间也可以是平等的,即每个CPU可以独立处理业务,各个CPU相互之间不具有任何约束关系。
在本发明实施例中的多CPU系统包括至少一个控制器,即多CPU系统中的控制器的数量可以是一个,也可以是多个。当只包括一个控制器时,该一个控制器可以进行全局控制,即通过该一个控制器可以对除第一CPU之外的其它CPU均进行控制。当包括多个控制器时,可以为其它CPU中的每个CPU一一对应配置一个控制器,此时控制器的数量与其它CPU所包括的CPU的总数量相等,或者也可以先将其它CPU分成多组,例如按处理业务类型的不同进行分组,而每组中可能包括一个CPU或多个CPU,进而再为每组CPU配置一个控制器,此时控制器的数量小于等于其它CPU所包括的CPU的总数量。
控制器在接收第一CPU发送的复位触发信号的同时或之后,还可以获得第二CPU的当前状态信息,进一步可以根据第二CPU发送的当前状态信息判断第二CPU当前是否需要进行复位,并且在确定第二CPU当前需要进行复位时将接收到的复位触发信号再发送给第二CPU,以使第二CPU能够根据复位触发信号进行复位,因为第二CPU的当前状态信息是用于表征第二CPU当前的工作状态的信息,所以控制器根据第二CPU的当前状态信息判断第二CPU当前是否需要进行复位,即是根据第二CPU当前的工作状态判断第二CPU当前是否到底具有复位需求,也就是说,通过控制器根据第二CPU的当前状态信息对第二CPU当前是否需要进行判断,这样可以较为真实地反映出第二CPU当前的实际复位需求,使得控制器向第二CPU发送复位触发信号的针对性更强,有效性更高,以尽量满足第二CPU的实际复位需求,提高第二CPU复位的准确性和有效性。通过控制器的控制作用,可以尽量避免第二CPU被动地跟随第一CPU进行联动复位而导致的业务中断或数据丢失等负面影响。
相对于现有技术来说,本发明实施例通过在第一CPU和第二CPU之间设置控制器,进而通过控制器的控制作用可以对其它CPU中的每个CPU(例如第二CPU)或部分CPU的复位单独进行控制,以解除CPU之间进行复位时的耦合关系,使得各个CPU能够根据自身的实际情况有选择性地进行复位,增强了对CPU进行复位的控制。
其中,控制器可以采用主动获取或被动接收的方式以获得第二CPU的当前状态信息。对于主动获取的方式来说,控制器可以先向第二CPU发送请求信息以请求第二CPU向控制器发送当前状态信息,由于第二CPU是基于控制器的请求才向控制器发送当前状态信息的,这样可以使得发送当前状态信息的目的性较强,以尽量避免信息的无效发送和无效传输。而对于被动接收的方式来说,第二CPU可以实时或定时将其当前状态信息上报给控制器,控制器直接接收第二CPU发送的当前状态信息即可,这样可以便于控制器能够及时获知第二CPU当前的工作状态,以确保控制器和第二CPU之间的实时信息交互。
结合第一方面,在第一方面的第一种可能的实现方式中,第二CPU发送的当前状态信息包括用于指示第二CPU当前是否已经完成启动的信息,即控制器获得第二CPU发送的当前状态信息,可以通过以下方式实现:控制器获得第二CPU发送的用于指示第二CPU当前是否已经完成启动的信息。相应的,控制器根据第二CPU发送的当前状态信息确定第二CPU当前是否需要进行复位,可以通过以下方式实现:若用于指示第二CPU当前是否已经完成启动的信息指示第二CPU当前正在进行启动,控制器则确定第二CPU当前需要进行复位,可替换的,若用于指示第二CPU当前是否已经完成启动的信息指示第二CPU当前已经完成启动,控制器则确定第二CPU当前不需要进行复位。
其中,第二CPU的启动可以包括CPU的上电过程和CPU内部寄存器或应用程序等的初始化过程。由于第二CPU进行启动与进行复位的作用相似,所以若第二CPU正在启动,则也可以认为第二CPU需要复位。即,通过第二CPU上报的用于指示第二CPU当前是否已经完成启动的信息可以较为准确地确定第二CPU当前是否具有复位需求,以保证复位的准确性,尽量避免无效的复位操作。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,第一CPU和第二CPU通过同一电源上电,第二CPU的启动包括通过该电源上电的过程,那么,若用于指示第二CPU当前是否已经完成启动的信息指示第二CPU当前正在进行启动,控制器则确定第一CPU所进行的复位的类型为上电复位;或,若用于指示第二CPU当前是否已经完成启动的信息指示第二CPU已经完成启动,控制器则确定第一CPU所进行的复位的类型为热复位。
在本发明实施例中,第一CPU和第二CPU通过同一电源供电,即第一CPU和第二CPU可以使用同一套供电系统,并且第二CPU的启动过程包括上电过程,如果当前第二CPU正在启动则表明第二CPU之前肯定被断电,自然第一CPU也被断电了,并且由于此时第一CPU又正在进行复位,所以可以认为第一CPU此时所进行的复位是上电复位,而如果第二CPU没有断电,那么表明第一CPU也没有断电,所以可以认为第一CPU当前所进行的复位是热复位。
也就是说,控制器可以根据第二CPU的用于指示第二CPU当前是否正在启动的信息对第一CPU的复位类型进行判断,由于不同的复位类型所对应的复位过程可能不同,在明确了第一CPU的复位类型之后,控制器可以对第二CPU进行对应的控制,以提高控制的准确性和针对性。
结合第一方面,在第一方面的第三种可能的实现方式中,多CPU系统还包括第三CPU,第三CPU与第一CPU建立PCIe连接,控制器还连接于第一CPU和第三CPU之间。控制器还可以获得第三CPU发送的第三CPU的当前状态信息,并根据第三CPU的当前状态信息确定第三CPU当前是否需要进行复位,若确定第三CPU当前不需要进行复位,则向第三CPU发送复位通知信息;其中,复位通知信息用于指示第一CPU进行了复位。
其中的第三CPU与前述的第二CPU类似,都呈现为第一CPU的PCIe EP的设备属性,所以第一CPU复位所产生的复位触发信号也会触发第三CPU根据第一CPU的复位而进行联动复位。
而在第一CPU进行复位的时候,第三CPU与第一CPU可能正在联合或并行处理同一业务,或者正在进行数据同步等操作,为了减小由于第一CPU复位而对第三CPU产生的影响,控制器在确定第三CPU当前不需要进行复位时,也可以通过向第三CPU发送复位通知信息的方式将第一CPU进行复位的消息告知第三CPU,以增强CPU之间的信息互通。第三CPU在根据复位通知信息确认第一CPU进行了复位之后,进一步地可以采取一些对应的处理措施以防止自身的业务受到影响等等,从而能够尽量保证数据的安全,提高业务处理的持续性和有效性。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,第三CPU的当前状态信息包括用于指示第三CPU当前是否已经完成启动的信息,若该信息指示第三CPU当前已经完成启动,控制器则确定第三CPU当前不需要进行复位。
由于第三CPU与第二CPU均呈现为第一CPU的PCIe EP的设备属性,当第三CPU的当前状态信息包括用于指示第三CPU当前是否已经完成启动的信息时,这与第二CPU的当前状态信息包括用于指示第二CPU当前是否已经完成启动的信息的情形类似,所以本发明实施例的实施可以参照前述第一方面的第一种可能的实现方式实施,此处就不再赘述了。
结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,第一CPU和第三CPU通过同一电源供电,第三CPU的启动包括通过该电源上电的过程,若前述的用于指示所述第三CPU当前是否已经完成启动的信息指示第三CPU当前已经完成启动,控制器则确定第一CPU所进行的复位的类型为热复位。
在本发明实施例中,假设第一CPU和第三CPU均通过第一电源供电,而第一CPU和第二CPU均通过第二电源供电,那么第一电源和第二电源可以是同一套电源,或者也可以是不同的电源。
也就是说,可以根据第三CPU的状态来判断第一CPU复位的类型,在具体实施过程中,可以参照第一方面的第二种可能的实现方式实施。
结合第一方面的第三种可能的实现方式至第一方面的第五种可能的实现方式中的任一种可能的实现方式,在第一方面的第六种可能的实现方式中,若确定第三CPU当前不需要进行复位,控制器可以向第三CPU发送接口初始化信号和/或业务中断信号,即,在确定第三CPU当前不需要进行复位时,控制器可以向第三CPU只发送接口初始化信号,或者可以只发送业务中断信号,或者可以同时发送接口初始化信号和业务中断信号。当然,此处所提到的“同时发送”,可以是指时间上的绝对同时,例如都在12时33分25秒发送,或者也可以是指将接口初始化信号和业务中断信号在一定时长内一并发送给第二CPU,例如在5秒内将上述两种信号一起发送给第三CPU,而发送的时间顺序可以不做限定。
其中,接口初始化信号用于触发第三CPU对第三CPU的PCIe总线接口进行初始化,第三CPU可以通过PCIe总线接口与第一CPU建立PCIe连接。第三CPU在接收控制器发送的接口初始化信号之后,则可以对PCIe总线接口进行初始化,使得PCIe硬件链路恢复到最初的状态,以确保第三CPU的PCIe硬件链路能够重新建立,进而提高PCIe硬件链路重新建立的可靠性。
业务中断信号用于触发第三CPU暂停当前正在进行的业务,第三CPU在接收控制器发送的业务中断信号之后,第三CPU则可以暂停当前正在进行的业务,当前正在进行的业务例如是与第一CPU有关联或者与第一CPU并行处理的某些业务,在第一CPU进行复位时通过暂停与第一CPU有关联的业务,可以使得第三CPU与第一CPU的业务处理进程尽量保持一致,以确保CPU之间业务处理的同步性。
在本发明实施例中,是以第二CPU需要进行复位以及第三CPU不需要进行复位为例进行示意性说明对应的处理方式,在具体实施过程中,在第二CPU不需要进行复位时,控制器可以采取与对第三CPU相同的处理方式对第二CPU进行操作,以及,在第三CPU需要进行复位时,控制器可以采取与对第二CPU相同的处理方式对第三CPU进行操作,这里就不重复说明了。
另外,在本发明实施例中的多CPU系统中,第二CPU和第三CPU可以共用同一控制器,即如前述示意性说明。或者,也可以为第二CPU和第三CPU分别配置一个独立的控制器,即包括两个控制器,一个控制器对第二CPU进行控制,一个控制器对第三CPU进行控制。
第二方面,提供一种PCIe接口卡,该PCIe接口卡包括第二CPU和与第二CPU连接的控制器,控制器和第二CPU可以是一一对应的关系,即在PCIe接口卡中为第二CPU单独配置一个控制器。第二CPU具有PCIe总线接口,通过PCIe总线接口可以与其它CPU建立PCIe连接,例如与第一CPU建立PCIe连接。在具体实施过程中,PCIe接口卡可以以电路板的形态呈现,在该电路板上集成设置有第二CPU和控制器,第二CPU和控制器之间至少具有电性连接关系,以便于第二CPU和控制器之间进行信息交互。
其中,控制器用于接收第一CPU发送的复位触发信号;获得第二CPU发送的当前状态信息;根据第二CPU发送的当前状态信息确定第二CPU当前是否需要进行复位;以及若确定第二CPU当前需要进行复位时,则向第二CPU发送复位触发信号。其中,复位触发信号用于触发与第一CPU建立PCIe连接的CPU进行复位,第二CPU的当前状态信息用于指示第二CPU当前的工作状态;
第二CPU用于向控制器发送第二CPU的当前状态信息;以及接收控制器发送的复位触发信号并根据复位触发信号进行复位。
本发明实施例中,PCIe接口卡中的控制器在接收第一CPU发送的复位触发信号时,可以根据PCIe中的第二CPU的当前状态信息确定第二CPU当前是否需要进行复位,并且在确定第二CPU当前需要进行复位时则将复位触发信号发送给第二CPU以触发第二CPU进行复位。由于第二CPU的当前状态信息是用于表征第二CPU当前的工作状态的,所以通过当前状态能够比较准确地反映出第二CPU当前是否具有复位需求,也就是说,通过控制器对复位触发信号的拦截并对第二CPU当前是否需要进行复位提前进行判断,可以尽量在第二CPU当前具有复位需求时才触发第二CPU进行复位,使得第二CPU能够尽量按需进行复位,以确保第二CPU复位的准确性和有效性。并且,通过控制器对复位触发信号的拦截,第一CPU无法直接将复位触发信号发送给第二CPU而触发第二CPU被动地进行联动复位,这样可以避免第二CPU在不需要进行复位时而被动地进行复位,因为第二CPU在被动复位时可能正在处理业务,这样可以尽量避免由于被动复位而导致的业务中断或数据丢失等负面影响。
结合第二方面,在第二方面的第一种可能的实现方式中,控制器还用于若确定第二CPU当前不需要进行复位,则向第二CPU发送复位通知信息;第二CPU还用于接收复位通知信息。其中,复位通知信息用于指示第一CPU进行了复位。也就是说,即使确定第二CPU当前不需要进行复位,但是为了增强CPU之间的信息互通,控制器可以通过向第二CPU发送复位通知信息的方式将第一CPU进行了复位的信息告知第二CPU,以便于第二CPU可以根据第一CPU当前进行了复位的系统状态变化采取一些对应的处理措施以尽量防止自身的业务受到影响。
结合第二方面,在第二方面的第二种可能的实现方式中,控制器还用于若确定第二CPU当前不需要进行复位,则向第二CPU发送接口初始化信号和/或业务中断信号;第二CPU还用于接收接口初始化信号和/或业务中断信号。其中,接口初始化信号用于触发第二CPU对第二CPU的PCIe总线接口进行初始化,业务中断信号用于触发第二CPU暂停当前正在进行的业务。
本发明实施例中,在确定第二CPU当前不需要进行复位时,控制器可以通过向第二CPU发送接口初始化信号的方式以控制第二CPU对其PCIe总线接口进行初始化,使得第二CPU的PCIe硬件链路恢复到最初的状态,以确保PCIe硬件链路能够重新建立,进而提高PCIe硬件链路重新建立的可靠性。
以及,可以通过向第二CPU发送业务中断信号的方式以控制第二暂停当前正在进行的业务,因为在第一CPU进行复位之前,第二CPU和第一CPU之间可能正在同时处理有关联的业务或者正在并行处理某一业务,那么在第一CPU复位则可以控制第二CPU暂停这些业务,使得第二CPU与第一CPU的业务处理进程尽量保持一致,以确保CPU之间业务处理的同步性。
结合第二方面、第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,第二CPU还用于向控制器发送用于指示第二CPU当前是否已经完成启动的信息;控制器还用于若用于指示第二CPU当前是否已经完成启动的信息指示第二CPU当前正在进行启动,则确定第二CPU当前需要进行复位,以及若用于指示第二CPU当前是否已经完成启动的信息指示第二CPU当前已经完成启动,则确定第二CPU当前不需要进行复位。
结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,第一CPU和第二CPU通过同一电源供电,即第一CPU和第二CPU共用一套电源系统,以及,第二CPU的启动包括通过前述同一电源进行上电的过程。控制器还用于若用于指示所述第二CPU当前是否已经完成启动的信息指示第二CPU当前正在进行启动,则确定第一CPU所进行的复位类型为上电复位;以及若用于指示第二CPU当前是否已经完成启动的信息指示第二CPU当前已经完成启动,则确定第一CPU所进行的复位类型为热复位。
在第二方面中的PCIe接口卡中,还可以包括与控制器连接的第三CPU,与第二CPU类似的,第三CPU可以向控制器发送第三CPU的当前状态信息,而控制器可以根据第三CPU的当前状态信息判断第三CPU当前是否需要进行复位,当确定第三CPU当前不需要进行复位时,控制器可以采用前述的当确定第二CPU不需要进行复位时针对第二CPU相同的处理方式对第三CPU进行类似的处理,当然,在确定第三CPU需要进行复位时,也可以采用前述的当确定第二CPU需要进行复位时针对第二CPU相同的处理方式对第三CPU进行类似的处理,这里就不再重复说明了。
第三方面,提供一种多CPU系统,该多CPU系统包括PCIe接口卡和第一CPU,该PCIe接口卡可以是第二方面中的任意一种可能的PCIe接口卡;或者,该PCIe接口卡可以如下:包括第二CPU和与第二CPU连接的控制器,第二CPU具有PCIe总线接口,第一CPU通过PCIe总线与PCIe接口卡中的第二CPU连接。在具体实施过程中,该多CPU系统可以以电路板的形态呈现,在该电路板上集成了PCIe接口卡和第一CPU,除第一CPU和PCIe接口卡中的第二CPU通过PCIe总线连接之外,第一CPU和PCIe接口卡之间还可以具有其它电性连接关系,例如通过该其它电性连接关系,第一CPU可以将所生成的复位触发信号发送给PCIe接口卡中的控制器。
其中,控制器用于接收第一CPU发送的复位触发信号;获得第二CPU发送的当前状态信息;根据当前状态信息确定第二CPU当前是否需要进行复位;以及若确定第二CPU当前需要进行复位时,则向第二CPU发送复位触发信号。其中,第二CPU通过PCIe总线接口与第一CPU建立PCIe连接,复位触发信号用于触发与第一CPU建立PCIe连接的CPU进行复位,当前状态信息用于指示第二CPU当前的工作状态;
第二CPU用于向控制器发送当前状态信息;以及接收复位触发信号并根据复位触发信号进行复位。
本发明实施例中的多CPU系统可以包括一个或多个PCIe接口卡,而前述的包括第二CPU的PCIe接口卡可以是多个PCIe接口卡中的一个,并且每个PCIe接口卡之间也可以具有PCIe连接关系或者其它电性连接关系。在每个PCIe接口卡中均包括一个CPU和与其对应的控制器,即在本发明实施例的多CPU系统中,控制器的数量和PCIe接口卡的数量可以是相等的。
在本发明实施例中,通过控制器对第一CPU发送的复位触发信号的拦截和对第二CPU当前是否具有复位需求的提前判断,可以尽量在第二CPU当前具有复位需求时才将复位触发信号发送给第二CPU,以尽量确保第二CPU复位的有效性和准确性,避免第二CPU的被动复位而导致的例如业务中断或数据丢失等负面影,提高系统的可靠性。
结合第三方面,在第三方面的第一种可能的实现方式中,控制器还用于若确定第二CPU当前不需要进行复位,则向第二CPU发送复位通知信息;第二CPU还用于接收复位通知信息。其中,复位通知信息用于指示第一CPU进行了复位。
结合第三方面,在第三方面的第二种可能的实现方式中,控制器还用于若确定第二CPU当前不需要进行复位,则向第二CPU发送接口初始化信号和/或业务中断信号;第二CPU还用于接收接口初始化信号和/或业务中断信号。其中,接口初始化信号用于触发第二CPU对第二CPU的PCIe总线接口进行初始化,业务中断信号用于触发第二CPU暂停当前正在进行的业务。
结合第三方面、第三方面的第一种可能的实现方式或第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,第二CPU还用于向控制器发送用于指示第二CPU当前是否已经完成启动的信息;控制器还用于若用于指示第二CPU当前是否已经完成启动的信息指示第二CPU当前正在进行启动,则确定第二CPU当前需要进行复位;以及若用于指示第二CPU当前是否已经完成启动的信息指示第二CPU当前已经完成启动,则确定第二CPU当前不需要进行复位。
结合第三方面的第三种可能的实现方式,在第三方面的第四种可能的实现方式中,第一CPU和第二CPU通过同一电源供电,即第一CPU和第二CPU共用一套电源系统,以及,第二CPU的启动包括通过前述同一电源进行上电的过程。控制器还用于若用于指示所述第二CPU当前是否已经完成启动的信息指示第二CPU当前正在进行启动,则确定第一CPU所进行的复位类型为上电复位;或若用于指示第二CPU当前是否已经完成启动的信息指示第二CPU当前已经完成启动,则确定第一CPU所进行的复位类型为热复位。
第四方面,提供一种多CPU系统,该多CPU系统包括第一CPU、第二CPU和控制器,第一CPU和第二CPU通过PCIe总线或者PCI总线连接,控制器分别与第一CPU和第二CPU连接。在该多CPU系统中,还可以包括其它CPU,例如还可以包括第三CPU,并且在该多CPU系统中,当第一CPU进行复位时第一CPU则会生成复位触发信号以触发其它与第一CPU具有PCIe连接的其它CPU进行复位,例如会触发第二CPU和第三CPU进行复位。
该多CPU系统可以包括一个或多个控制器。当只包括一个控制器时,该一个控制器可以进行全局控制,即通过该一个控制器可以对与第一CPU建立PCIe连接的所有CPU的复位进行控制。当包括多个控制器时,可以是为与第一CPU建立PCIe连接的所有CPU中的每个CPU一一对应配置一个控制器,或者也可以先将与第一CPU建立PCIe连接的所有进行分组,再为分好组后的每组CPU单独配置一个CPU,等等。
在具体实施过程中,该多CPU系统还可以包括其它CPU或者其它组件,该多CPU系统可以以电路板的形态进行呈现,在该电路板上集成第一CPU、第二CPU、控制器以及其它CPU和其它组件,对于第一CPU、第二CPU和控制器三者的位置不作具体限定。其中:
第一CPU用于产生复位触发信号并将复位触发信号发送给控制器;其中,复位触发信号用于触发该多CPU系统中与第一CPU建立PCIe连接CPU进行复位;
控制器用于接收复位触发信号;获得第二CPU发送的当前状态信息;根据当前状态信息确定第二CPU当前是否需要进行复位;以及若确定第二CPU当前需要进行复位,则向第二CPU发送复位触发信号;其中,当前状态信息可以用于指示第二CPU当前的工作状态;
第二CPU用于向控制器发送当前状态信息,以及接收复位触发信号并根据复位触发信号进行复位。
结合第四方面,在第四方面的第一种可能的实现方式中,控制器还用于若确定第二CPU当前不需要进行复位,则向第二CPU发送复位通知信息;第二CPU还用于接收复位通知信息。其中,复位通知信息用于指示第一CPU进行了复位。
结合第四方面,在第四方面的第二种可能的实现方式中,控制器还用于若确定第二CPU当前不需要进行复位,则向第二CPU发送接口初始化信号和/或业务中断信号;第二CPU还用于接收接口初始化信号和/或业务中断信号。其中,接口初始化信号用于触发第二CPU对第二CPU的PCIe总线接口进行初始化,业务中断信号用于触发第二CPU暂停当前正在进行的业务。
结合第四方面、第四方面的第一种可能的实现方式或第四方面的第二种可能的实现方式,在第四方面的第三种可能的实现方式中,第二CPU还用于向控制器发送用于指示第二CPU当前是否已经完成启动的信息;控制器还用于若用于指示第二CPU当前是否已经完成启动的信息指示第二CPU当前正在进行启动,则确定第二CPU当前需要进行复位,以及若用于指示第二CPU当前是否已经完成启动的信息指示第二CPU当前已经完成启动,则确定第二CPU当前不需要进行复位。
结合第四方面的第三种可能的实现方式,在第四方面的第四种可能的实现方式中,控制器还用于若用于指示所述第二CPU当前是否已经完成启动的信息指示第二CPU当前正在进行启动,则确定第一CPU所进行的复位类型为上电复位;或若用于指示第二CPU当前是否已经完成启动的信息指示第二CPU当前已经完成启动,则确定第一CPU所进行的复位类型为热复位。
在第四方面中,是以第二CPU进行示意性介绍,对于例如第三CPU的其它的与第一CPU建立PCIe连接的CPU的处理方式,控制器可以采用与对第二CPU类似的处理方式进行处理,这里就不再重复说明了。
本发明实施例中,通过在第一CPU和第二CPU之间增设控制器,进而可以通过控制器的控制作用让第二CPU有选择性地进行复位,以解除与第一CPU之间的复位耦合关系,确保第二CPU复位的准确性和有效性。
本发明的这些方面或其它方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中的多CPU系统的架构示意图;
图2A为本发明实施例中多CPU系统包括多个控制器的架构示意图;
图2B为本发明实施例中多CPU系统包括一个控制器的架构示意图;
图3为本发明实施例中第一CPU、第二CPU和控制器的连接示意图;
图4为本发明实施例中多CPU系统中CPU复位的方法的流程图;
图5为本发明中的PCIe接口卡的结构示意图;
图6为本发明中的PCIe接口卡的另一种结构示意图;
图7为本发明实施例中多CPU系统的另一架构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
首先介绍本发明实施例的应用场景。
随着业务量的增加,服务器系统中的数据存储量和处理量也在不断增加,为了满足大量数据的处理需求,可以在服务器中设置多个处理器,通过多个处理器可以进行并行运算。一般将包括多个处理器的系统称作多处理器系统或多CPU系统,多CPU系统是指包含两个或多个功能相近的CPU的系统,CPU之间彼此可以交换数据,并且为了满足不同的业务需求,CPU之间可以基于多种数据传输协议进行数据交互,例如可以基于PCIe协议进行数据交互,或者还可以基于其它协议进行数据交互,等等。
多CPU系统所包括的CPU的数量可以为至少两个,例如包括2个CPU、3个CPU或6个CPU,等等。多CPU系统中,各个CPU之间包括但不限于以下两种关系:1、平等关系。即,在多CPU系统中,每个CPU可以独立处理业务,此时各个CPU之间是平等的。2、主从关系。即,在多CPU系统中,可以具有一个或多个主CPU,与每个主CPU对应具有一个或多个从CPU,从CPU可以作为主CPU的协处理器处理业务,此时从CPU可以受控于主CPU。
在基于PCIe协议进行数据交互的多CPU系统中,CPU之间可以通过PCIe总线或外围组件互连(Peripheral Component Interconnect,PCI)总线连接。例如图1所示,CPU_A通过PCIe总线分别与CPU_B、CPU_C和CPU_D连接,从处理业务的角度来说,此时CPU_A与其它CPU之间可以是主从的关系,即其它CPU均可以作为CPU_A的协处理器以协助CPU_A处理业务,或者,CPU_A与其它CPU之间为平等关系,即图1中的各CPU可以相互独立地处理各种业务,在处理业务时各CPU之间不具有约束关系。另外,在图1中是以多CPU系统包括4个CPU为例进行图示说明,在实际情况中,多CPU系统当然还可以包括其它数量的CPU。
以图1为例,CPU_B、CPU_C和CPU_D均通过PCIe总线与CPU_A连接,假设CPU_B、CPU_C和CPU_D均晚于CPU_A接入该多CPU系统中,且CPU_B、CPU_C和CPU_D均通过PCIe总线与CPU_A进行数据交互的通信,那么对于CPU_A来说,CPU_B、CPU_C和CPU_D均呈现为CPU_A的PCIe EP的设备属性。由于CPU_A最先存在于该多CPU系统中,可以将CPU_A看作是基于PCIe架构下的多CPU系统中的主CPU,为了便于描述,例如将PCIe架构下的多CPU系统中的主CPU称为PCIe主CPU,以及将与PCIe主CPU建立PCIe连接的所有CPU均称为PCIe从CPU,那么则可以将前述的CPU_A看作是PCIe主CPU,以及将前述的CPU_B、CPU_C和CPU_D看作是PCIe从CPU。
在现有技术中,当PCIe主CPU进行复位时会生成复位触发信号,而PCIe从CPU则会根据该复位触发信号自动进行联动复位,相当于是PCIe主CPU的复位可以带动所有的PCIe从CPU均进行复位。其中,PCIe主CPU根据用户所进行的复位操作指令而进行复位,或者,当PCIe主CPU的系统出现故障或者系统崩溃时,为了进行系统的自我恢复PCIe主CPU会自动进行复位,通过复位可以将CPU内部的寄存器和各引脚置为初始状态,并将程序指针指向程序的初始位置,CPU中的各个逻辑电路可以按照既定的设计“按部就班”地工作,以确保CPU正常、有序地运行。
然而,假设此时PCIe从CPU正在处理业务,如果PCIe从CPU跟随PCIe主CPU的复位而自动进行联动复位的话,则可能会导致业务中断,造成数据丢失,影响用户的正常使用,可见,在现有技术中,PCIe主CPU进行复位则会带动PCIe主CPU均进行联动复位,PCIe从CPU是否进行复位无法单独进行控制,PCIe从CPU与PCIe主CPU之间进行复位的耦合性较强,不便于用户的实际使用。
鉴于此,本发明实施例在PCIe主CPU和PCIe从CPU之间设置控制器,通过控制器可以对PCIe主CPU所产生的复位触发信号进行拦截,并根据PCIe从CPU的当前状态信息判断PCIe从CPU当前是否需要进行复位,进而决策是否将所拦截的复位触发信号再发送给PCIe从CPU。
在本发明实施例中,多CPU系统中可以包括至少一个控制器,即可以包括一个控制器,或者可以包括多个控制器。
当控制器的数量为多个时,如图2A所示的多CPU系统,此时为每个PCIe从CPU均单独配置一个控制器,即如图2A中所示,为CPU_B、CPU_C和CPU_D分别对应配置控制器1、控制器2和控制器3,此时控制器的数量与PCIe从CPU的数量相等,这样便于对每个PCIe从CPU进行独立控制和管理,以尽量满足每个PCIe从CPU的实际复位需求。
可选的,当只包括一个控制器时,该控制器可以进行全局控制,即所有的PCIe从CPU均共用一个控制器,如图2B所示的多CPU系统,通过一个控制器可以同时对所有的PCIe从CPU是否复位进行控制,即可以对CPU_B、CPU_C和CPU_D分别进行控制。例如在CPU_A复位的当前时刻,若CPU_B和CPU_C需要复位而CPU_D不需要进行复位,那么控制器则可以分别向CPU_B和CPU_C发送复位触发信号,而不向CPU_D发送,以使得CPU_B和CPU_C能跟随CPU_A进行联动复位,而CPU_D不进行联动复位,以此解除CPU_D和CPU_A的复位耦合关系,同时又能够满足CPU_B和CPU_C的实际复位需求。
或者,还可以先将所有的PCIe从CPU分成多组,例如按处理业务类型的不同进行分组,而每组中可能包括一个PCIe从CPU或多个PCIe从CPU,进而再为每组PCIe从CPU配置一个控制器,继续以图2A为例,例如为CPU_B和CPU_C配置同一个控制器,而为CPU_D再单独配置另一个控制器,在该情形下控制器的数量小于等于PCIe从CPU的总数量,此时控制器的数量可以是一个也可能是多个,为了简化,此处就不再另做图示说明了。
再或者,用户可以根据自己的使用需求为PCIe从CPU设置控制器,继续以图2A为例,根据用户的实际使用需求,或许只希望让CPU_B和CPU_C按需进行复位,即只希望对CPU_B和CPU_C进行控制,而对CPU_D则可以让其根据CPU_A的复位而进行联动复位,即不为CPU_D设置控制器。那么此时可以为CPU_C和CPU_D分别单独配置一个控制器,此时控制器的数量小于PCIe从CPU的总数量,或者可以为CPU_C和CPU_D配置同一个控制器,此时控制器的数量还是小于PCIe从CPU的总数量。
可见,无论该多CPU系统中包括几个控制器,对于任意一个不需要与PCIe主CPU同时执行联动复位的PCIe从CPU(例如CPU_B)来说,均有一个控制器与其对应,即均具有一个对应的控制器能够对其是否复位进行单独控制,该一个控制器可能是针对CPU_B单独配置的,或者也可能是为CPU_B与其它CPU(例如图2A中的CPU_C和CPU_D)共同配置的。为了便于描述,在后续的介绍中以每个PCIe从CPU一一对应配置一个控制器为例进行介绍说明。
控制器在PCIe从CPU当前需要进行复位时则将拦截的复位触发信号再发送给当前需要进行复位的PCIe从CPU,以使得PCIe从CPU所进行的复位是按需进行的复位操作,即在PCIe从CPU当前具有复位需求时才让其跟随PCIe主CPU进行联动复位,以尽量避免出现当前不需要进行复位时而被动地跟随PCIe主CPU进行联动复位而导致的业务中断或数据丢失等不良后果,也就是说,在本发明实施例中,通过控制器的控制作用,可以降低甚至解除PCIe从CPU与PCIe主CPU之间的复位耦合关系,使得对于PCIe从CPU的复位能够单独进行控制,并且能够尽量满足PCIe从CPU的实际复位需求,以提高系统的智能性。
由于控制器可以接收PCIe主CPU发送的复位触发信号,以及可以将所接收到的复位触发信号再发送给PCIe从CPU,所以控制器与PCIe主CPU和PCIe从CPU之间是进行连接的,即控制器连接设置于PCIe主CPU和PCIe从CPU之间,控制器与PCIe主CPU和PCIe从CPU均具有连接关系,例如具有电性连接关系。
在具体实施过程中,控制器至少可以以以下两种形态呈现。
1、通过在硬件器件中设置软件模块实现,例如在可编程逻辑器件或者微控制单元(MicroController Unit,MCU)中经过软件编程实现,其中可编程逻辑器件例如可以是复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)或现场可编程门阵列(Field-Programmable Gate Array,FPGA)。通过软件编程,在硬件器件中可以设置多个功能模块,每个功能模块均可执行预定的方法流程,例如可以执行后续图4中所示的方法流程。
2、以硬件电路实现,即可以通过搭建硬件电路实现控制器的功能,例如通过搭建触发器电路和开关电路来实现控制器的功能,那么可以将触发器电路和开关电路总称为控制器。
当然,在实际中,控制器还可以以其它形态呈现,此处就不一一进行举例说明了。
在实际中,多CPU系统中用户希望其能够按需进行复位的CPU可能具有多个,但是为了便于描述,本发明实施例选择其中一个为例进行后续描述说明,例如后续的第二CPU或第三CPU。并且,以第一CPU表示前述的PCIe主CPU,即图2A和2B中所示的CPU_A,而以第二CPU或第三CPU表示所有PCIe从CPU中用户希望其按需进行复位的PCIe从CPU,即图2A和图2B中所示的CPU_B、CPU_C和CPU_D中的任意一个CPU。
例如请参见图3,图3为第一CPU、控制器和第二CPU之间的连接示意图,此时以控制器针对第二CPU单独配置为例,例如图2A中所示的情形。在具体实施过程中,第三CPU和第二CPU可以共用一个控制器,即如图2B所示的情形,或者,第三CPU和第二CPU可以单独配置一个控制器,即如图2A所示的情形。
下面结合说明书附图对本发明实施例中的技术方案进行详细的说明。在下面的介绍过程中,以图3所示的架构为例。
请参见图4,本发明实施例提供一种多CPU系统中CPU复位的方法,该方法可以应用在如图2A或图2B所示的多CPU系统架构的场景中,本发明实施例中的第一CPU可以是图2A或图2B中的CPU_A,即图2A或图2B中的PCIe主CPU,本发明实施例中的第二CPU和第三CPU可以是图2A或图2B中的CPU_B、CPU_C或CPU_D,即图2A或图2B中的PCIe从CPU。本发明实施例中的方法流程如下。
S11、在第一CPU进行复位时,第一CPU可以向控制器发送复位触发信号。
在第一CPU进行复位时,第一CPU可以生成复位触发信号,该复位触发信号用于触发多CPU系统中与第一CPU建立有PCIe连接的CPU进行复位,即第一CPU通过该复位触发信号可以触发所有的PCIe从CPU进行联动复位,由于第二CPU和第三CPU均是第一CPU的PCIe从CPU,所以复位触发信号自然也会触发第二CPU和第三CPU进行联动复位。
如果按照现有技术中的方案,第一CPU会直接将该复位触发信号发送给第二CPU和第三CPU以触发第二CPU和第三CPU进行联动复位,而在本发明实施例中,由于在第一CPU和第二CPU之间,以及在第一CPU和第三CPU之间增设了控制器,第一CPU在生成复位触发信号之后可以将其发送给控制器,而控制器可以接收第一CPU所发送的复位触发信号,相当于是通过控制器可以拦截第一CPU向第二CPU和第三CPU所发送的复位触发信号。
在实际中,对于一个CPU来说,例如对于第二CPU来说,在不同的时刻其可能具有不同的复位需求,例如在第一时刻,第二CPU需要进行复位,而在第二时刻,第二CPU则可能不需要进行复位,当然第三CPU也是如此。为了便于本领域技术人员理解,本发明实施例中以第二CPU表示需要进行复位的CPU,且以第三CPU表示不需要进行复位的CPU进行示例性介绍,在具体实施过程中,若第二CPU不需要进行复位时,则可以采用本发明实施例中针对第三CPU的处理流程进行类似处理,以及,若第三CPU需要进行复位,则可以采用本发明实施例中针对第二CPU的处理流程进行类似处理,后续就不再重复说明了。
步骤S12、控制器获得第二CPU的当前状态信息。
本发明实施例中将用于表明第二CPU当前的工作状态的信息称为第二CPU的当前状态信息,即通过第二CPU的当前状态信息可以确定第二CPU当前的工作状态。例如,当前状态信息可以是指表明第二CPU当前是否正在启动的信息,或者可以是指表明第二CPU当前是否发生故障的信息,等等。
在具体实施过程中,控制器获得第二CPU的当前状态信息,至少可以包括以下两种实施方式:
1、控制器主动获取。即S13、控制器可以先向第二CPU发送请求信息以请求第二CPU向控制器发送第二CPU的当前状态信息,第二CPU基于请求信息才向控制器发送当前状态信息。在该种实施方式中,第二CPU是基于控制器的请求才向控制器发送当前状态信息的,这样发送当前状态信息的目的性较强,可以避免信息的无效发送和无效传输。
另外,如果控制器向第二CPU发送请求信息之后的一定时长内还未接收到第二CPU发送的当前状态信息,那么控制器可以认为第二CPU此时发生了故障而无法向第二CPU发送当前状态信息。因为基于器件的正常交互来说,控制器在向第二CPU发送请求信息之后,第二CPU应该在一定时长内进行响应,如果未响应的话则可以认为请求信息发送不成功或者第二CPU由于故障而无法进行响应。
2、控制器被动接收。例如第二CPU可以实时或定时向控制器上报第二CPU的当前状态信息,即第二CPU可以实时或定时向控制器发送当前状态信息,控制器直接接收第二CPU发送的当前状态信息即可。在该种实施方式中,第二CPU将其当前状态信息进行实时上报,以便控制器能够及时获知第二CPU当前的工作状态,以确保控制器和第二CPU之间的实时交互。
另外,当控制器向第二CPU发送请求信息之后,第二CPU可以在与第二CPU对应的交互界面上将复位询问信息进行显示以便用户能够查看到,用户可以根据当前的实际需求确定到底是否需要第二CPU进行复位,若用户认为需要第二CPU进行复位,那么则可以进行相应操作以确定第二CPU需要进行复位,进一步地,第二CPU可以根据用户的操作生成对应的状态信息并将所生成的状态信息上报给控制器,即可以根据用户的实际使用需求来获得第二CPU的当前状态信息,控制器根据这样的信息对第二CPU进行复位控制的适用性更强,这样可以尽量满足用户的实际使用需求。
在具体实施过程中,第二CPU向控制器发送的当前状态信息还可以是其它类型的信息,但是无论是何种类型的信息,控制器均可以根据该信息判断第二CPU当前是否需要进行复位,例如控制器中可以存储有状态信息与是否进行复位的对应关系,在接收到第二CPU发送的当前状态信息之后,控制器可以将其与对应关系进行比对匹配,进而确定第二CPU当前究竟是否需要复位。
在具体实施过程中,控制器接收第一CPU发送的复位触发信号的步骤与获得第二CPU发送的当前状态信息的步骤可以按照任意顺序进行。
可选的,控制器可以在接收到复位触发信号之后再获得第二CPU发送的当前状态信息,即此时接收复位触发信号的步骤先于获得当前状态信息的步骤执行,这样尽量确保当前状态信息的有效性,提高当前状态信息的利用率。
S14、控制器在接收到第二CPU的当前状态信息后,会根据第二CPU的当前状态信息判断第二CPU当前是否需要进行复位。
控制器在接收到第二CPU的当前状态信息之后,便可以根据第二CPU的当前状态信息判断第二CPU当前是否需要进行复位,也就是说,控制器可以根据第二CPU的当前状态信息决策是否对第二CPU进行复位触发。
例如,若第二CPU的当前状态信息表明第二CPU当前正在进行启动,则可以确定第二CPU当前需要进行复位。又例如,若第二CPU的当前状态信息表明第二CPU出现故障,通过复位的话可以对第二CPU进行初始化或许可能解除故障,所以此时确定第二CPU当前需要进行复位。再例如,若第二CPU的当前状态信息表明第二CPU的核心组件当前温度过高,为了避免温度过高而导致的组件损坏,此时可以认为第二CPU需要进行复位,等等。
S15、当确定第二CPU当前需要进行复位时,控制器将复位触发信号发送给第二CPU。第二CPU在接收到复位触发信号后便可以进行复位,因为当前状态信息是用于表征第二CPU当前的工作状态的信息,所以控制器根据当前状态信息判断第二CPU当前是否需要进行复位,即是根据当前工作状态信息确定第二CPU当前是否到底具有复位需求,也就是说,通过控制器根据当前状态信息对第二CPU当前是否需要进行判断,可以较为真实地反映出第二CPU当前的实际复位需求,这样使得控制器向第二CPU发送复位触发信号的针对性更强,有效性更高,从而可以尽量满足第二CPU的实际复位需求,提高第二CPU复位的准确性和有效性,进而可以尽量避免第二CPU被动地跟随第一CPU进行联动复位而导致的业务中断或数据丢失等负面影响。
当确定第二CPU不需要进行复位时,控制器可以不进行任何操作,复位触发信号由于控制器的截断而没有被传输到第二CPU,所以第二CPU也不会进行复位,这样则可以避免第二CPU进行联动复位而导致的一些负面影响。进一步地,当确定第二CPU不需要进行复位时,还可以对第二CPU进行一些其它操作,具体的处理方式可以参照后续介绍的针对第三CPU的处理方式。
以上介绍的是针对第二CPU是否进行复位的判断和对应的处理方式,以下再针对第三CPU进行介绍说明。
S16、控制器获得第三CPU的当前状态信息。在该步骤中,可以参考步骤S12的实施,此处就不再赘述了。
S17、控制器在接收到第三CPU的当前状态信息后,会根据第三CPU的当前状态信息判断第三CPU当前是否需要进行复位。在该步骤中,对于根据第三CPU的当前状态信息以判断第三CPU当前是否需要进行复位的处理流程可以参考步骤S14的实施,此处就不再赘述了。
S18、若确定第三CPU当前不需要进行复位,控制器可以向第三CPU发送用于指示第一CPU进行了复位的复位通知信息。
即通过向第三CPU发送复位通知信息的方式将第一CPU进行了复位的消息告知第三CPU,第三CPU在接收到的复位通知信息之后便可以确定第一CPU进行了复位,此时,由于第三CPU可能与第一CPU正在联合或并行处理同一业务,或者正在进行数据同步等操作,为了减小由于第一CPU复位而导致业务无法并行处理或者数据丢失等负面影响,第三CPU可以暂停当前正在进行的业务,或者采取一些对应的处理措施以尽量避免由于第一CPU的复位而可能导致的负面影响。
也就是说,为了使得CPU之间能够进行消息互通,控制器在确定第三CPU当前不需要进行复位时还是会将第三CPU进行了复位的消息告知第三CPU,以便第三CPU能够根据自身的业务情况进行一些对应的处理,以尽量消除或减小由于第一CPU的复位而可能导致的负面影响,提高业务处理的持续性和有效性。
S19、若确定第三CPU当前不需要进行复位,控制器还可以向第三CPU发送接口初始化信号。
S20、若确定第二CPU当前不需要进行复位,控制器还可以向第三CPU发送业务中断信号。
在具体实施过程中,S19和S20可以单独执行,或者也可以同时执行。当然,此处所提到的“同时”,可以是指时间上的绝对同时,例如都在12时33分25秒发送,或者也可以是指将接口初始化信号和业务中断信号在一定时长内一并发送给第三CPU,例如在5秒内将上述两种信号一起发送给第三CPU,而发送的时间顺序可以不做限定。
其中,接口初始化信号用于触发第三CPU对第三CPU的PCIe总线接口进行初始化,第三CPU可以通过PCIe总线接口与第一CPU建立PCIe连接。第三CPU在接收控制器发送的接口初始化信号之后,则可以对PCIe总线接口进行初始化,使得PCIe硬件链路恢复到最初的状态,以确保PCIe硬件链路能够重新建立,进而提高PCIe硬件链路重新建立的可靠性。
业务中断信号用于触发第三CPU暂停当前正在进行的业务,第三CPU在接收控制器发送的业务中断信号之后,第三CPU则可以暂停当前正在进行的业务,当前正在进行的业务例如是与第一CPU有关联或者与第三CPU并行处理的某些业务,在第一CPU进行复位时通过暂停与第一CPU有关联的业务,可以使得第三CPU与第一CPU的业务处理进程尽量保持一致,以确保CPU之间业务处理的同步性。
也就是说,在确定第三CPU不需要进行复位时,控制器可以向第三CPU发送不同于复位触发信号的其它信号,而其它信号可以用于触发第三CPU执行一些不同于复位操作的其它操作,而上述的接口初始化信号和业务中断信号即为其它信号的一些具体举例,在具体实施过程中,还可以根据多CPU系统的实际业务场景、第一CPU和第三CPU所处理的业务关联程度或其它因素来确定向第三CPU发送何种信号以触发第三CPU进行不同的响应,例如控制器还可以向第三CPU发送其它信号以触发第三CPU进行流控、文件备份、调整数据路由等操作,这样可以尽量确保多CPU系统中业务的持续性处理,并且还可以尽量确保第一CPU和第三CPU之间的业务进程保持一致。
例如将第二CPU向控制器发送的第二CPU的当前状态信息称作第一当前状态信息,以及第三CPU向控制器发送的第三CPU的当前状态信息称作第二当前状态信息,那么第一当前状态信息可以是用于指示第二CPU当前是否已经完成启动的信息,而第二当前状态信息可以是用于指示第三CPU当前是否已经完成启动的信息。
其中,CPU的启动可以包括CPU的上电过程和CPU内部寄存器和/或应用程序的初始化过程,由于CPU进行启动与进行复位的作用相似,所以在CPU进行启动的过程中,可以认为CPU也确实具有复位需求,即通过CPU上报的当前状态信息可以准确地确定出CPU当前是否确实具有复位需求,以保证复位的准确性,尽量避免不必的复位操作。
控制器在接收到第一当前状态信息之后,可以根据第一当前状态信息判断第二CPU当前是否正在进行启动,若确定第二CPU当前正在进行启动,则表明第二CPU当前具有复位需求,即确定第二CPU当前需要进行复位。
在确定第二CPU当前正在进行启动时,若第一CPU和第二CPU共用一套电源系统的话,由于第二CPU的启动包括上电过程,那表明第一CPU也同时进行了上电,而由于此时第一CPU进行了复位,所以可以确定第一CPU此时所进行的复位的类型为上电复位。
控制器在接收到第二当前状态信息之后,可以根据第二当前状态信息判断第三CPU当前是否正在进行启动,若确定第三CPU当前已经进完成启动,则表明第三CPU当前不具有复位需求,即确定第三CPU当前不需要进行复位。
在确定第三CPU当前已经完成启动时,即第三CPU当前未进行启动时,但此时第一CPU却进行了复位,那么则可以确定第一CPU当前所进行的复位的类型为热复位。
也就是说,控制器可以根据CPU上报的用于指示CPU当前是否正在启动的信息对第一CPU的复位类型进行判断,由于不同的复位类型所对应的系统状态可能不同,在明确了第一CPU的复位类型之后,控制器可以对PCIe从CPU进行对应的控制,以提高控制的准确性和针对性。
本发明实施例中,控制器在接收到第一CPU发送的复位触发信号后,可以根据第二CPU发送的当前状态信息判断第二CPU当前是否需要进行复位,并且在确定第二CPU当前需要进行复位时将接收到的复位触发信号发送给第二CPU,以使第二CPU根据复位触发信号进行复位,因为当前状态信息是用于表征第二CPU当前的工作状态的信息,所以控制器根据当前状态信息判断第二CPU当前是否需要进行复位,即是根据当前工作状态信息确定第二CPU当前是否到底具有复位需求,也就是说,通过控制器根据当前状态信息对第二CPU当前是否需要进行判断,可以较为真实地反映出第二CPU当前的实际复位需求,这样使得控制器向第二CPU发送复位触发信号的针对性更强,有效性更高,从而可以尽量满足第二CPU的实际复位需求,提高第二CPU复位的准确性和有效性,进而可以尽量避免第二CPU被动地跟随第一CPU进行联动复位而导致的业务中断或数据丢失等负面影响。
相对于现有技术来说,本发明实施例通过在第一CPU和第二CPU之间设置控制器,并通过控制器的控制作用可以对CPU的复位单独进行控制,以解除CPU之间进行复位时的耦合关系,使得各个CPU能够根据自身的实际情况有选择性地进行复位,增强了对CPU进行复位的控制。
请参见图5,本发明实施例提供一种PCIe接口卡,该PCIe接口卡包括第二CPU和与第二CPU连接的控制器,控制器和第二CPU可以是一一对应的关系,即在PCIe接口卡为该第二CPU单独配置一个控制器,例如图2A所示的情形。第二CPU具有PCIe总线接口,通过PCIe总线接口可以与其它CPU建立PCIe连接,例如与第一CPU建立PCIe连接。在具体实施过程中,PCIe接口卡可以以电路板的形态呈现,在该电路板上集成设置有第二CPU和控制器,第二CPU和控制器之间可以至少具有电性连接关系,以便于第二CPU和控制器之间进行信息交互。
其中,控制器用于接收第一CPU发送的复位触发信号并获得第二CPU发送的当前状态信息,再根据第二CPU的当前状态信息确定第二CPU当前是否需要进行复位,并且在确定第二CPU当前需要进行复位时向第二CPU发送复位触发信号。其中,复位触发信号用于触发与第一CPU建立PCIe连接的CPU进行复位,则自然可以触发第二CPU进行复位,第二CPU的当前状态信息用于指示第二CPU当前的工作状态。
本发明实施例中,PCIe接口卡中的控制器在接收第一CPU发送的复位触发信号时,可以根据PCIe中的第二CPU的当前状态信息确定第二CPU当前是否需要进行复位,并且在确定第二CPU当前需要进行复位时则将复位触发信号发送给第二CPU以触发第二CPU进行复位。由于第二CPU的当前状态信息是用于表征第二CPU当前的工作状态的,所以通过当前状态能够比较准确地反映出第二CPU当前是否具有复位需求,也就是说,通过控制器对复位触发信号的拦截并对第二CPU当前是否需要进行复位提前进行判断,可以尽量在第二CPU当前具有复位需求时才触发第二CPU进行复位,使得第二CPU能够尽量按需进行复位,以确保第二CPU复位的准确性和有效性。并且,通过控制器对复位触发信号的拦截,第一CPU无法直接将复位触发信号发送给第二CPU而触发第二CPU被动地进行联动复位,这样可以避免第二CPU在不需要进行复位时而被动地进行复位,因为第二CPU在被动复位时可能正在处理业务,这样可以尽量避免由于被动复位而导致的业务中断或数据丢失等负面影响。
其中,所第二CPU的当前状态信息可以包括用于指示第二CPU当前是否已经完成启动的信息,若用于指示第二CPU当前是否已经完成启动的信息指示第二CPU当前正在进行启动,控制器则确定第二CPU当前需要进行复位,或者,控制器可以确定第一CPU所进行的复位的类型为上电复位。
或者,若用于指示第二CPU当前是否已经完成启动的信息指示第二CPU当前正在进行启动,控制器则确定第二CPU当前不需要进行复位,或者,控制器可以确定第一CPU所进行的复位的类型为热复位。
请参见图6,本发明实施例中的PCIe接口卡还可以包括第三CPU,第三CPU也具有PCIe总线接口,第三CPU可以通过第三CPU的PCIe总线接口与第一CPU建立PCIe连接,第三CPU和控制器之间可以至少具有电性连接关系,以便于第三CPU和控制器之间进行信息交互。在图6所示的PCIe接口卡中,是以第二CPU和第三CPU共用同一个控制器进行图示举例,在具体实施过程中,在该PCIe接口卡中也可以为第二CPU和第三CPU分别配置一个控制控制,即该PCIe接口卡可以包括两个控制器,一个用于控制第二CPU,一个用户控制第三CPU。
对于还包括第三CPU的PCIe接口卡来说,控制器还可以用于获得第三CPU发送的第三CPU的当前状态信息,并根据第三CPU的当前状态信息判断第三CPU当前是否需要进行复位,以及在确定第三CPU当前不需要进行复位的时候,向第三CPU发送复位通知信息;其中,复位通知信息用于指示第一CPU进行了复位。
也就是说,可以将本发明实施例中的第一CPU理解为是前述的PCIe主CPU,而将第二CPU和第三CPU理解为是前述的PCIe从CPU。
在第一CPU进行复位的时候,第三CPU与第一CPU可能正在联合或并行处理同一业务,或者正在进行数据同步等操作,为了减小由于第一CPU复位而对第三CPU产生的影响,控制器在确定第三CPU当前不需要进行复位时,也可以通过向第三CPU发送复位通知信息的方式将第一CPU进行复位的消息告知第三CPU,以增强CPU之间的信息互通。第三CPU在根据复位通知信息确认第一CPU进行了复位之后,进一步地可以采取一些对应的处理措施以防止自身的业务受到影响等等,从而能够尽量保证数据的安全,提高业务处理的持续性和有效性。
另外,控制器还可以用于若确定第三CPU当前不需要进行复位,则向第三CPU发送接口初始化信号和/或业务中断信号;第三CPU还用于接收接口初始化信号和/或业务中断信号。其中,接口初始化信号用于触发第三CPU对第三CPU的PCIe总线接口进行初始化,业务中断信号用于触发第三CPU暂停当前正在进行的业务。
当然,此处所提到的“同时发送”,可以是指时间上的绝对同时,例如都在12时33分25秒发送,或者也可以是指将接口初始化信号和业务中断信号在一定时长内一并发送给第二CPU,例如在5秒内将上述两种信号一起发送给第三CPU,而发送的时间顺序可以不做限定。
其中,接口初始化信号用于触发第三CPU对第三CPU的PCIe总线接口进行初始化,第三CPU可以通过PCIe总线接口与第一CPU建立PCIe连接。第三CPU在接收控制器发送的接口初始化信号之后,则可以对PCIe总线接口进行初始化,使得PCIe硬件链路恢复到最初的状态,以确保第三CPU的PCIe硬件链路能够重新建立,进而提高PCIe硬件链路重新建立的可靠性。
业务中断信号用于触发第三CPU暂停当前正在进行的业务,第三CPU在接收控制器发送的业务中断信号之后,第三CPU则可以暂停当前正在进行的业务,当前正在进行的业务例如是与第一CPU有关联或者与第一CPU并行处理的某些业务,在第一CPU进行复位时通过暂停与第一CPU有关联的业务,可以使得第三CPU与第一CPU的业务处理进程尽量保持一致,以确保CPU之间业务处理的同步性。
本发明实施例中,由于第二CPU和第三CPU均为作为第一CPU的PCIe从CPU,而在前述描述中,整体上是以第二CPU需要进行复位以及第三CPU不需要进行复位时控制器分别对第二CPU和第三CPU所对应进行的处理,而由于在不同时刻第二CPU可能需要复位或者也可能不需要复位,即在不同时刻第二CPU可能具有不同的复位需求,当然第三CPU也类似,所以在具体实施过程中,若第二CPU不需要进行复位时,则可以采用本发明实施例中针对第三CPU的处理流程进行类似处理,以及,若第三CPU需要进行复位,则可以采用本发明实施例中针对第二CPU的处理流程进行类似处理,这里就不再重复进行说明了。
请参见图6,本发明实施例提供一种多CPU系统,该多CPU系统包括如PCIe接口卡和第一CPU,该PCIe接口卡可以是如图5所描述的PCIe接口卡,此时的多CPU系统的架构如图7所示,或者,该PCIe接口卡还可以是如图6所描述的PCIe接口卡。为了简化说明,以下以包括图5所示的PCIe接口卡为例对本发明实施例中的多CPU系统进行介绍说明,即以图7所示的多CPU系统进行介绍明。
如图7所示,PCIe接口卡中的第二CPU通过PCIe总线接口与第一CPU建立PCIe连接。在具体实施过程中,该多CPU系统可以以电路板的形态呈现,在该电路板上集成有前述的PCIe接口卡和第一CPU,除第一CPU和PCIe接口卡中的第二CPU通过PCIe总线连接之外,第一CPU和PCIe接口卡之间还可以具有其它电性连接关系,例如通过该电性连接关系,第一CPU可以将所生成的复位触发信号发送给PCIe接口卡中的控制器。
其中,控制器用于接收第一CPU发送的复位触发信号并获得第二CPU发送的当前状态信息,再根据当前状态信息确定第二CPU当前是否需要进行复位;以及若确定第二CPU当前需要进行复位时,则向第二CPU发送复位触发信号。其中,复位触发信号用于触发与第一CPU建立PCIe连接的CPU进行复位,当前状态信息用于指示第二CPU当前的工作状态;
第二CPU用于向控制器发送当前状态信息;以及接收复位触发信号并根据复位触发信号进行复位。
本发明实施例中的多CPU系统可以包括一个或多个PCIe接口卡,而前述的包括第二CPU的PCIe接口卡可以是多个PCIe接口卡中的一个,并且每个PCIe接口卡之间也可以具有PCIe连接关系或者其它电性连接关系。在每个PCIe接口卡中均包括一个CPU和与其对应的控制器,即在本发明实施例的多CPU系统中,控制器的数量和PCIe接口卡的数量可以是相等的。
在本发明实施例中,通过控制器对第一CPU发送的复位触发信号的拦截和对第二CPU当前是否具有复位需求的提前判断,可以尽量在第二CPU当前具有复位需求时才将复位触发信号发送给第二CPU,以尽量确保第二CPU复位的有效性和准确性,避免第二CPU的被动复位而导致的例如业务中断或数据丢失等负面影,提高系统的可靠性。
在一种可能的实施方式中,控制器还可以用于若确定第二CPU当前不需要进行复位,则向第二CPU发送复位通知信息;第二CPU还用于接收控制器发送的复位通知信息。其中,复位通知信息用于指示第一CPU进行了复位。
在一种可能的实施方式中,控制器还可以用于若确定第二CPU当前不需要进行复位,则向第二CPU发送接口初始化信号和/或业务中断信号;第二CPU还用于接收接口初始化信号和/或业务中断信号。其中,接口初始化信号用于触发第二CPU对第二CPU的PCIe总线接口进行初始化,业务中断信号用于触发第二CPU暂停当前正在进行的业务。
在一种可能的实施方式中,第二CPU还可以用于向控制器发送用于指示第二CPU当前是否已经完成启动的信息;控制器还可以用于若用于指示第二CPU当前是否已经完成启动的信息指示第二CPU当前正在进行启动,则确定第二CPU当前需要进行复位,若用于指示第二CPU当前是否已经完成启动的信息指示第二CPU当前已经完成启动,则确定第二CPU当前不需要进行复位。
在一种可能的实施方式中,第一CPU和第二CPU通过同一电源供电,即第一CPU和第二CPU共用一套电源系统,以及,第二CPU的启动包括通过前述同一电源进行上电的过程,控制器还可以用于若用于指示第二CPU当前是否已经完成启动的信息指示第二CPU当前正在进行启动,则确定第一CPU所进行的复位类型为上电复位;或若用于指示第二CPU当前是否已经完成启动的信息指示第二CPU当前已经完成启动,则确定第一CPU所进行的复位类型为热复位。
在一种可能的实施方式中,控制器还可以用于向第二CPU发送请求信息以请求第二CPU向控制器发送当前状态信息;第二CPU还用于获得请求信息和当前状态信息,以及将当前状态信息发送给控制器。
以上实施例仅用以对本申请的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本发明的方法及其核心思想,不应理解为对本发明的限制。本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (14)
1.一种多中央处理器CPU系统中CPU复位的方法,其特征在于,所述多CPU系统包括第一CPU、第二CPU、第三CPU和控制器,所述控制器连接于所述第一CPU和所述第二CPU之间以及连接于所述第一CPU和所述第三CPU之间,所述方法包括:
所述控制器接收所述第一CPU发送的复位触发信号,所述复位触发信号用于触发所述多CPU系统中与所述第一CPU建立高速外围组件互连PCIe连接的所述第二CPU、所述第三CPU进行复位;
所述控制器获得所述第二CPU发送的当前状态信息;
所述控制器根据所述第二CPU发送的当前状态信息确定所述第二CPU当前是否需要进行复位;
若确定所述第二CPU当前需要进行复位,则所述控制器向所述第二CPU发送所述复位触发信号;
所述方法还包括:
所述控制器获得所述第三CPU发送的当前状态信息;
所述控制器根据所述第三CPU发送的当前状态信息确定所述第三CPU当前是否需要进行复位;
若确定所述第三CPU当前不需要进行复位,则所述控制器向所述第三CPU发送复位通知信息;其中,所述复位通知信息用于指示所述第一CPU进行了复位。
2.如权利要求1所述的方法,其特征在于,所述第二CPU发送的当前状态信息包括用于指示所述第二CPU当前是否已经完成启动的信息;所述控制器根据所述第二CPU发送的当前状态信息确定所述第二CPU当前是否需要进行复位,包括:
若所述用于指示所述第二CPU当前是否已经完成启动的信息指示所述第二CPU当前正在进行启动,则所述控制器确定所述第二CPU当前需要进行复位。
3.如权利要求2所述的方法,其特征在于,所述第一CPU和所述第二CPU通过同一电源供电,所述第二CPU的启动包括通过所述电源上电的过程;所述方法还包括:
若所述用于指示所述第二CPU当前是否已经完成启动的信息指示所述第二CPU当前正在进行启动,则所述控制器确定所述第一CPU所进行的复位的类型为上电复位。
4.如权利要求1所述的方法,其特征在于,所述方法还包括:
若确定所述第三CPU当前需要进行复位,则所述控制器向所述第三CPU发送所述复位触发信号。
5.如权利要求1所述的方法,其特征在于,所述第三CPU发送的当前状态信息包括用于指示所述第三CPU当前是否已经完成启动的信息;所述控制器根据所述第三CPU发送的当前状态信息确定所述第三CPU当前是否需要进行复位,包括:
若所述用于指示所述第三CPU当前是否已经完成启动的信息指示所述第三CPU当前已经完成启动,则所述控制器确定所述第三CPU当前不需要进行复位。
6.如权利要求5所述的方法,其特征在于,所述第一CPU和所述第三CPU通过同一电源供电,所述第三CPU的启动包括通过所述电源上电的过程;所述方法还包括:
若所述用于指示所述第三CPU当前是否已经完成启动的信息指示所述第三CPU当前已经完成启动,则所述控制器确定所述第一CPU所进行的复位的类型为热复位。
7.如权利要求1所述的方法,其特征在于,所述方法还包括:
若确定所述第三CPU当前不需要进行复位,则所述控制器向所述第三CPU发送接口初始化信号和/或业务中断信号;其中,所述接口初始化信号用于触发所述第三CPU对所述第三CPU的PCIe总线接口进行初始化;所述业务中断信号用于触发所述第三CPU暂停当前正在进行的业务。
8.一种高速外围组件互连PCIe接口卡,其特征在于,所述PCIe接口卡包括第二CPU、第三CPU和分别与所述第二CPU、所述第三CPU连接的控制器,所述第二CPU和所述第三CPU均具有PCIe总线接口,所述第二CPU通过所述第二CPU的PCIe总线接口与第一CPU建立PCIe连接,所述第三CPU通过所述第三CPU的PCIe总线接口与所述第一CPU建立PCIe连接;其中:
所述控制器,用于接收所述第一CPU发送的复位触发信号;获得所述第二CPU发送的当前状态信息;根据所述第二CPU发送的当前状态信息确定所述第二CPU当前是否需要进行复位;以及若确定所述第二CPU当前需要进行复位,则向所述第二CPU发送所述复位触发信号;其中,所述复位触发信号用于触发与所述第一CPU建立PCIe连接的CPU进行复位;
所述第二CPU,用于向所述控制器发送所述第二CPU的当前状态信息;以及接收所述控制器发送的所述复位触发信号并根据所述复位触发信号进行复位;
所述控制器还用于:获得所述第三CPU发送的当前状态信息;根据所述第三CPU发送的当前状态信息确定所述第三CPU当前是否需要进行复位;以及若确定所述第三CPU当前不需要进行复位,则向所述第三CPU发送复位通知信息;其中,所述复位通知信息用于指示所述第一CPU进行了复位;
所述第三CPU,用于向所述控制器发送所述第三CPU的当前状态信息;以及接收所述控制器发送的所述复位通知信息。
9.如权利要求8所述的PCIe接口卡,其特征在于,所述第二CPU的当前状态信息包括用于指示所述第二CPU当前是否已经完成启动的信息;所述控制器还用于:
若所述用于指示所述第二CPU当前是否已经完成启动的信息指示所述第二CPU当前正在进行启动,则确定所述第二CPU当前需要进行复位。
10.如权利要求9所述的PCIe接口卡,其特征在于,所述第一CPU和所述第二CPU通过同一电源供电,所述第二CPU的启动包括通过所述电源上电的过程;所述控制器还用于:
若所述用于指示所述第二CPU当前是否已经完成启动的信息指示所述第二CPU当前正在进行启动,则确定所述第一CPU所进行的复位的类型为上电复位。
11.如权利要求8所述的PCIe接口卡,其特征在于,
所述控制器还用于:若确定所述第三CPU当前需要进行复位,则向所述第三CPU发送所述复位触发信号;
所述第三CPU,还用于接收所述控制器发送的所述复位触发信号并根据所述复位触发信号进行复位。
12.如权利要求8所述的PCIe接口卡,其特征在于,所述第三CPU发送的当前状态信息包括用于指示所述第三CPU当前是否已经完成启动的信息;所述控制器还用于:
若所述用于指示所述第三CPU当前是否已经完成启动的信息指示所述第三CPU当前已经完成启动,则确定所述第三CPU当前不需要进行复位。
13.如权利要求12所述的PCIe接口卡,其特征在于,所述第一CPU和所述第三CPU通过同一电源供电,所述第三CPU的启动包括通过所述电源上电的过程;所述控制器还用于:
若所述用于指示所述第三CPU当前是否已经完成启动的信息指示所述第三CPU当前已经完成启动,则确定所述第一CPU所进行的复位的类型为热复位。
14.如权利要求8所述的PCIe接口卡,其特征在于,所述控制器还用于:
若确定所述第三CPU当前不需要进行复位,则向所述第三CPU发送接口初始化信号和/或业务中断信号;其中,所述接口初始化信号用于触发所述第三CPU对所述第三CPU的PCIe总线接口进行初始化;所述业务中断信号用于触发所述第三CPU暂停当前正在进行的业务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610848201.6A CN107870662B (zh) | 2016-09-23 | 2016-09-23 | 一种多CPU系统中CPU复位的方法及PCIe接口卡 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610848201.6A CN107870662B (zh) | 2016-09-23 | 2016-09-23 | 一种多CPU系统中CPU复位的方法及PCIe接口卡 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107870662A CN107870662A (zh) | 2018-04-03 |
CN107870662B true CN107870662B (zh) | 2020-03-20 |
Family
ID=61751558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610848201.6A Active CN107870662B (zh) | 2016-09-23 | 2016-09-23 | 一种多CPU系统中CPU复位的方法及PCIe接口卡 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107870662B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111371582B (zh) * | 2018-12-26 | 2021-04-16 | 大唐移动通信设备有限公司 | 一种pcie链路故障的处理方法及装置 |
CN110187659B (zh) * | 2019-05-28 | 2020-12-11 | 成都星时代宇航科技有限公司 | 状态监控方法、系统及立方星 |
CN110825547B (zh) * | 2019-09-23 | 2024-04-12 | 京信网络系统股份有限公司 | 一种基于smbus的pcie卡异常恢复装置及方法 |
WO2021056458A1 (zh) * | 2019-09-27 | 2021-04-01 | 深圳市大疆创新科技有限公司 | 基于PCIe总线的数据处理方法及装置、可移动平台 |
CN113515312A (zh) * | 2020-03-25 | 2021-10-19 | 华为技术有限公司 | 芯片启动方法、装置及计算机设备 |
CN111930214B (zh) * | 2020-08-14 | 2022-04-29 | 山东云海国创云计算装备产业创新中心有限公司 | 一种fpga加速卡复位的方法、装置及fpga加速卡 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1828573A (zh) * | 2005-03-01 | 2006-09-06 | 华为技术有限公司 | 一种多cpu系统及其控制方法 |
CN102508533A (zh) * | 2011-09-21 | 2012-06-20 | 迈普通信技术股份有限公司 | 一种复位控制装置和方法 |
CN102707782A (zh) * | 2012-05-15 | 2012-10-03 | 江苏中科梦兰电子科技有限公司 | 一种基于多核cpu计算机主板复位系统及方法 |
CN105204600A (zh) * | 2015-09-16 | 2015-12-30 | 上海斐讯数据通信技术有限公司 | 一种i2c总线复用实现集成芯片复位方法、系统及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9218029B2 (en) * | 2012-10-22 | 2015-12-22 | Infineon Technologies Ag | Method and system for resetting a SoC |
-
2016
- 2016-09-23 CN CN201610848201.6A patent/CN107870662B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1828573A (zh) * | 2005-03-01 | 2006-09-06 | 华为技术有限公司 | 一种多cpu系统及其控制方法 |
CN102508533A (zh) * | 2011-09-21 | 2012-06-20 | 迈普通信技术股份有限公司 | 一种复位控制装置和方法 |
CN102707782A (zh) * | 2012-05-15 | 2012-10-03 | 江苏中科梦兰电子科技有限公司 | 一种基于多核cpu计算机主板复位系统及方法 |
CN105204600A (zh) * | 2015-09-16 | 2015-12-30 | 上海斐讯数据通信技术有限公司 | 一种i2c总线复用实现集成芯片复位方法、系统及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107870662A (zh) | 2018-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107870662B (zh) | 一种多CPU系统中CPU复位的方法及PCIe接口卡 | |
US20190303255A1 (en) | Cluster availability management | |
EP2793428B1 (en) | Pcie switch-based server system and switching method and device thereof | |
JP6409229B2 (ja) | 複数のモジュールを備えるサーバ | |
US11392417B2 (en) | Ultraconverged systems having multiple availability zones | |
US10083053B2 (en) | System and method for virtual machine live migration | |
US9430266B2 (en) | Activating a subphysical driver on failure of hypervisor for operating an I/O device shared by hypervisor and guest OS and virtual computer system | |
JP5953573B2 (ja) | ペリフェラル・コンポーネント・インターコネクト・エクスプレス・エンドポイントデバイスにアクセスするためのコンピュータシステム、方法、および装置 | |
US20080043769A1 (en) | Clustering system and system management architecture thereof | |
WO2017071274A1 (zh) | 双活集群系统中容灾的方法及装置 | |
CN102724083A (zh) | 基于软件同步的可降级三模冗余计算机系统 | |
CN109245926B (zh) | 智能网卡、智能网卡系统及控制方法 | |
US20110093574A1 (en) | Multi-blade interconnector | |
US20110093572A1 (en) | Low level initializer | |
CN105763488B (zh) | 数据中心汇聚核心交换机及其背板 | |
CN107209725A (zh) | 处理写请求的方法、处理器和计算机 | |
CN115904520A (zh) | 基于pcie拓扑状态变更的配置保存方法及相关设备 | |
US20030065861A1 (en) | Dual system masters | |
US9154448B2 (en) | Apparatus and method for switching connection to a communication network | |
WO2015139327A1 (zh) | 失效切换方法、装置和系统 | |
CN109542834B (zh) | 一种确定nc芯片连接错误的方法及nc芯片 | |
KR102053849B1 (ko) | 항공기 시스템 및 그것의 제어 방법 | |
CN108090004B (zh) | 硬件资源共用系统及连线桥接平台的操作方法 | |
US20110113160A1 (en) | Domain management processor | |
US10719310B1 (en) | Systems and methods for reducing keyboard, video, and mouse (KVM) downtime during firmware update or failover events in a chassis with redundant enclosure controllers (ECs) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211223 Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province Patentee after: xFusion Digital Technologies Co., Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |