本发明涉及计算机技术领域,特别是涉及一种计算机、PCIE设备以及PCIE设备的心跳检测方法。
背景技术:
随着PCIE(Peripheral Component Interface Express,高速外围元件接口)设备(如PCIE SSD盘)在全闪存阵列中的广泛应用,对PCIE设备的暴力热插拔的支持是一种必然趋势。而按照PCIE协议规定的PCIE热插拔操作是预先通知模式的,而在实际的应用场景中,可能出现误操作、无意识的外力、特殊应用场景等情况出现PCIE设备在未通知系统热插拔驱动的情况下,直接发生与计算机的北桥芯片的PCIE连接链路断开。如果这个时候计算机中的PCIE设备驱动程序正在通过计算机的处理器下发命令访问该PCIE设备的寄存器等,就可能导致计算机的处理器出现MCE(Machine Check Exception,机器检测异常)错误,从而导致计算机系统复位。
PCIE设备的热拔出流程必须是先将热插拔事件通知到计算机的热插拔驱动程序,在热插拔驱动程序通知计算机系统中所有可能访问该设备的驱动程序停止访问该PCIE设备、并且将需要进行热插拔设备的资源卸载掉之后,再对PCIE设备下电,然后才能对PCIE设备进行热拔出。
PCIE设备的热插拔流程必须得先停止对PCIE设备的访问之后才能将PCIE设备从计算机中拔出(断开与计算机的北桥芯片的连接),其根本原因在于当计算机的处理器发起对一个PCIE设备寄存器的读/写请求时,若这个PCIE设备此时被突然拔出计算机的PCIE插槽,这时处理器发起的读/写请求得不到响应,处理器就会认为系统异常,报出MCE错误让整个计算机系统复位。
因此,计算机的处理器和PCIE设备之间,需要进行定时的握手,以保证业务逻辑能够正确执行,该握手过程称心跳。
在现有心跳技术中,计算机定时向PCIE设备发送心跳信息,而PCIE设备接受到心跳信息后,马上返回对应消息包,计算机接收到对应消息包后,完成一次完整的握手。计算机根据握手是否成功以及成功的次数,判断PCIE设备心跳是否正常,从而进行相关的业务逻辑和错误处理。
由于现有的心跳技术中,必须由计算机不断地主动发起心跳信息至PCIE设备,若计算机发出心跳信息至PCIE设备之后,PCIE设备来不及回复就被暴力热拔出,此时计算机发起的消息包得不到PCIE设备响应,计算机的处理器就会认为系统异常,此时处理器会报出MCE错误让整个计算机系统复位,使得计算机可靠性不高。
技术实现要素:
本发明实施方式提供一种计算机、PCIE设备以及PCIE设备的心跳检测方法,能够有效避免因PCIE设备热插拔而导致计算机系统复位的情况发生,进而提高计算机的可靠性。
第一方面提供一种PCIE设备的心跳检测方法,该方法应用于计算机,计算机设置有PCIE插槽,PCIE设备可插拔设置于PCIE插槽,且在插入PCIE插槽时与计算机建立PCIE链路连接,该方法包括:计算机检测PCIE设备是否插置于PCIE插槽中,如果是,在计算机的内存选择内存地址;计算机通过PCIE链路发送内存地址和预设频率至PCIE设备,以使得PCIE设备通过PCIE链路以预设频率周期地将心跳信息写入内存地址;计算机以预设频率周期地读取内存地址的内容,并判断内容是否是心跳信息,如果是,确认PCIE设备心跳正常,如果否,确认PCIE设备心跳异常。
在第一方面的第一种可能的实现方式中,计算机确认PCIE设备心跳异常之后,该方法还包括:计算机再次检测PCIE设备是否插置于PCIE插槽中,如果否,则清空内存地址的内容,并进行热插拔处理。
根据第一方面的第一种可能的实现方式,在第二种可能的实现方式中,在检测到PCIE设备插置于PCIE插槽中时,该方法还包括:计算机进一步检测PCIE链路是否出现故障,如果是,则进行PCIE链路故障处理。
根据第一方面的第一种可能的实现方式,在第三种可能的实现方式中,在检测到PCIE设备插置于PCIE插槽中时,该方法还包括:在检测到PCIE设备插置于PCIE插槽中时,该方法还包括:计算机进一步检测PCIE设备内部是否出现故障,如果是,则进行PCIE设备故障处理。
根据第一方面、第一方面的第一至第三种可能的实现方式中的任一者,在第四种可能的实现方式中,心跳信息包括依次递增的0至N,其中N为正整数,计算机判断内容是否是心跳信息具体包括:计算机判断内容是否为依次递增的0至N,如