总线设备的热插拔方法及总线装置
技术领域
本发明涉及计算机领域,特别涉及一种总线设备的热插拔方法及总线装置。
背景技术
PCIe(PeripheralComponentInterconnectExpress,高速外围组件互连)标准是由英特尔公司提出的新一代总线技术。目前,计算机的主流外设产品几乎都是直接或者间接的通过PCIe总线与中央处理器(英文:CentralProcessingUnit,简称:CPU)通信,尽管PCIe总线的带宽在不断的倍增,时延在逐步降低,但是在高性能计算(英文:HighPerformanceComputing,简称:HPC)、小型机、存储等对性能极致追求的领域,PCIe总线的带宽和延时仍是性能瓶颈,因此在这些领域出现了采用快速通道互联(英文:QuickPathInterconnect,简称:QPI)接口取代PCIe接口的设备。
现有PCIe总线上的PCIe设备通过操作系统(英文:OperatingSystem,简称:OS)提供的标准软硬件接口即可实现热插拔,而现有OS中并未定义用于QPI总线上的QPI设备的热插拔的标准软硬件接口,因此如何实现QPI设备的热插拔是一个急需解决的问题。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种总线设备的热插拔方法及总线装置。所述技术方案如下:
本发明实施例提供了一种总线设备的热插拔方法,所述方法包括:
接收总线设备的热插拔请求;
产生系统管理中断,以进入系统管理模式;
在系统管理模式下,调用基本输入输出系统BIOS更改所述总线设备的配置,使所述总线设备不再响应系统请求或者使所述总线设备开始响应系统请求;
调用所述BIOS控制所述总线设备下电或者上电,完成所述总线设备的热拔或者热插。
在本发明实施例的一种实现方式中,所述产生系统管理中断,包括:
通过操作系统写虚拟引脚端口VPP寄存器的电源控制位,以产生系统管理中断;或者,
调用所述BIOS写所述VPP寄存器的电源控制位,以产生系统管理中断。
在本发明实施例的另一种实现方式中,所述更改所述总线设备的配置,包括:
控制所述总线设备进入静默模式;
修改所述总线设备的系统路由、地址解码和在位标记;
控制所述总线设备退出静默模式。
在本发明实施例的另一种实现方式中,所述方法还包括:
在调用所述BIOS控制所述总线设备下电或者上电后,退出所述系统管理模式。
在本发明实施例的另一种实现方式中,所述方法还包括:
在完成所述总线设备的热拔或热插时,输出指示信息,所述指示信息用于表示所述总线设备的热拔或热插已经完成。
另一方面,本发明实施例还提供了一种总线装置,所述装置包括:
接收模块,用于接收总线设备的热插拔请求;
中断模块,用于产生系统管理中断,以进入系统管理模式;
调用模块,用于在系统管理模式下,调用基本输入输出系统BIOS更改所述总线设备的配置,使所述总线设备不再响应系统请求或者使所述总线设备开始响应系统请求;
调用所述BIOS控制所述总线设备下电或者上电,完成所述总线设备的热拔或者热插。
在本发明实施例的一种实现方式中,所述中断模块,
用于通过操作系统写VPP寄存器的电源控制位,以产生系统管理中断;或者,
调用所述BIOS写所述VPP寄存器的电源控制位,以产生系统管理中断。
在本发明实施例的另一种实现方式中,所述调用模块,
用于调用所述BIOS控制所述总线设备进入静默模式;修改所述总线设备的系统路由、地址解码和在位标记;控制所述总线设备退出静默模式。
在本发明实施例的另一种实现方式中,所述中断模块,还用于在调用所述BIOS控制所述总线设备下电或者上电后,退出所述系统管理模式。
在本发明实施例的另一种实现方式中,所述装置还包括:
输出模块,用于在完成所述总线设备的热拔或热插时,输出指示信息,所述指示信息用于表示所述总线设备的热拔或热插已经完成。
本发明实施例提供的技术方案带来的有益效果是:
通过在接收到总线设备的热插拔请求时,产生系统管理中断,进入系统管理模式,在系统管理模式下,调用BIOS更改总线设备的配置,使总线设备不再响应系统请求或者使总线设备开始响应系统请求,并调用BIOS控制总线设备下电或者上电,从而实现了总线设备的热插拔。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的总线设备的热插拔方法的流程图;
图2是本发明实施例二提供的总线设备的热插拔方法的流程图;
图3是本发明实施例三提供的总线装置的结构示意图;
图4是本发明实施例四提供的总线装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
本发明实施例提供了一种总线设备的热插拔方法,该方法适用于连接在系统总线上的总线设备,该方法由系统总线上的芯片或处理器执行,其中,系统总线可以是QPI总线、基泽技术接口(英文:KeizerTechnologyInterface,简称:KTI)总线和超传输(英文:HyperTransport,简称:HT)总线,参见图1,该方法包括:
步骤101:接收总线设备的热插拔请求,热插拔请求包括热插请求和热拔请求。热拔请求用于请求将总线设备下电,热插请求则用于请求为总线设备上电。
其中,总线设备可以是QPI设备、KTI总线设备和HT总线设备。
步骤102:产生系统管理中断,以进入系统管理模式。
步骤103:在系统管理模式下,调用基本输入输出系统BIOS更改总线设备的配置,使总线设备不再响应系统请求或者使总线设备开始响应系统请求。
在本实施例中,当接收到总线设备的热插拔请求时,即触发产生系统管理中断(具体如何触发见实施例二),产生系统管理中断时,会进入系统管理模式,而在系统管理模式下,通过系统管理中断(英文:SystemManagementInterrupt,简称:SMI)处理程序执行预设的处理函数,以调用BIOS完成总线设备的配置和后续上电或下电。具体地,预设的处理函数存放在特殊内存区域-系统管理内存(英文:SystemManagementRAM,简称:SMRAM)中,该预设的处理函数可以为BIOS代码。其他类型的中断无法读写存放在特殊内存区域SMRAM中的BIOS代码,而只有当进入系统管理模式时,才会被SMI处理程序所执行。即:在系统管理模式下,SMI处理程序运行预先存放在特殊内存区域SMRAM中的处理函数,以调用BIOS更改总线设备的配置。
步骤104:调用BIOS控制总线设备下电或者上电,完成总线设备的热拔或者热插。
本发明实施例通过在接收到总线设备的热插拔请求时,产生系统管理中断,进入系统管理模式,在系统管理模式下,调用BIOS更改总线设备的配置,使总线设备不再响应系统请求或者使总线设备开始响应系统请求,并调用BIOS控制总线设备下电或者上电,从而实现了总线设备的热插拔。
实施例二
本发明实施例提供了一种总线设备的热插拔方法,该方法适用于连接在系统总线上的总线设备,该方法由系统总线上的芯片或处理器执行,其中,系统总线可以是QPI总线、KTI总线和HT总线,参见图2,该方法包括:
步骤201:接收总线设备的热插拔请求,热插拔请求包括热插请求和热拔请求。热拔请求用于请求将总线设备下电,热插请求则用于请求为总线设备上电。
其中,总线设备可以是QPI设备(如显卡、声卡等)、KTI总线设备和HT总线设备。
其中,热插拔请求可以采用下述方式产生:用户按压总线设备上的热拔插按钮,或者用户通过软件发送的热拔插请求。
步骤202:产生系统管理中断,以进入系统管理模式。
在本实施例中,步骤202可以采用下述方式实现:
通过操作系统写虚拟引脚端口(英文:VirtualPinPort,简称:VPP)寄存器的电源控制位,以产生系统管理中断;或者,
调用BIOS写VPP寄存器的电源控制位,以产生系统管理中断。
具体地,通过操作系统写VPP寄存器的电源控制位时,可以通过操作系统中的Native方法来写VPP寄存器的电源控制位;而通过BIOS写VPP寄存器的电源控制位时,可以通过BIOS中的高级配置和电源管理接口(英文:AdvancedConfigurationandPowerManagementInterface,简称:ACPI)模式中的Ej0方法写VPP寄存器的电源控制位。
本实施例通过写VPP寄存器的电源控制位,从而触发系统管理中断,进入系统管理模式。当然,在其他实施例中,还可以通过其他方式触发系统管理中断,这里不再赘述。
步骤203:在系统管理模式下,调用基本输入输出系统BIOS更改总线设备的配置,当步骤201中接收到的是热拔请求时,使总线设备不再响应系统请求;当步骤201中接收到的是热插请求时,或者使总线设备开始响应系统请求。
在本实施例中,当接收到总线设备的热插拔请求时,即触发产生系统管理中断,产生系统管理中断时,会进入系统管理模式,而在系统管理模式下,通过SMI处理程序执行预设的处理函数,以调用BIOS完成总线设备的配置和后续上电或下电。具体地,预设的处理函数存放在特殊内存区域系统管理内存SMRAM中,该预设的处理函数可以为BIOS代码。其他类型的中断无法读写存放在特殊内存区域SMRAM中的BIOS代码,而只有当进入系统管理模式时,才会被SMI处理程序所执行。即:在系统管理模式下,SMI处理程序运行预先存放在特殊内存区域SMRAM中的处理函数,以调用BIOS更改总线设备的配置。当然,在SMRAM中可能预先存储了多种功能的处理函数,SMI处理程序可以根据触发该系统管理中断的总线设备执行相应的处理函数。本实施例中,热插拔请求、VPP寄存器与SMRAM中的处理函数三者之间具有预设的对应关系。即根据发出热拔插请求的总线设备,写VPP寄存器的相应位;根据VPP寄存器的相应位执行相应的处理函数。当系统管理中断是通过写VPP寄存器的电源控制位触发的时候,SMI处理程序执行用于调用BIOS更改总线设备的配置的处理函数。
具体地,更改总线设备的配置,可以包括几个步骤:
步骤一、控制总线设备进入静默模式,以使总线设备上的资源不再响应系统请求,以保障后续操作安全可靠。
步骤二、修改总线设备的系统路由、地址解码和在位标记。
具体地,通过修改总线设备的系统路由,可以使原本应该发往总线设备的报文,不再路由到该总线设备;通过修改总线设备的地址解码,可以使总线设备不再响应原本应该发往自身的报文;通过修改总线设备的在位标记,可以使总线设备不再被其他设备感知。其中,报文为总线报文,如QPI报文,该报文中可以携带系统发出的消息、命令和数据。
步骤三、控制总线设备退出静默模式,恢复到正常模式。
步骤204:调用BIOS控制总线设备下电或者上电,完成总线设备的热拔或者热插。
具体地,当步骤201中接收到的是热拔请求时,调用BIOS控制总线设备下电;当步骤201中接收到的是热插请求时,调用BIOS控制总线设备上电。
步骤205:在调用BIOS控制总线设备下电或者上电后,退出系统管理模式。
进一步地,该方法还可以包括:
在完成总线设备的热拔或热插时,输出指示信息,指示信息用于表示总线设备的热拔或热插已经完成。
具体地,可以将系统总线上的芯片或处理器分为操作系统及业务层、驱动及固件层、硬件层3个层。其中,操作系统及业务层用来接收热插拔请求,然后写VPP寄存器的电源控制位;硬件层产生系统管理中断;驱动及固件层完成总线设备的配置;然后再由硬件层完成总线设备的上下电。因此,从操作系统及业务层看来,只需要接收热插拔请求,然后写VPP寄存器的电源控制位即可实现总线设备热拔插,与PCIe设备热拔插相似,即本实施例可以为总线设备提供了一个统一的热拔插交互界面,使得不同总线设备的热拔插实现统一化。
本发明实施例通过在接收到总线设备的热插拔请求时,产生系统管理中断,进入系统管理模式,在系统管理模式下,调用BIOS更改总线设备的配置,使总线设备不再响应系统请求或者使总线设备开始响应系统请求,并调用BIOS控制总线设备下电或者上电,从而实现了总线设备的热插拔。
实施例三
本发明实施例提供了一种总线装置,该总线装置用于控制连接在系统总线上的总线设备,系统总线可以是QPI总线、KTI总线和HT总线,参见图3,该装置包括:
接收模块301,用于接收总线设备的热插拔请求,热插拔请求包括热插请求和热拔请求。热拔请求用于请求将总线设备下电,热插请求则用于请求为总线设备上电;
中断模块302,用于产生系统管理中断,以进入系统管理模式;
调用模块303,用于在系统管理模式下,调用基本输入输出系统BIOS更改总线设备的配置,使总线设备不再响应系统请求或者使总线设备开始响应系统请求;
调用BIOS控制总线设备下电或者上电,完成总线设备的热拔或者热插。
在本实施例中,当接收到总线设备的热插拔请求时,即触发产生系统管理中断,产生系统管理中断时,会进入系统管理模式,而在系统管理模式下,通过SMI处理程序执行预设的处理函数,以调用BIOS完成总线设备的配置和后续上电或下电。具体地,预设的处理函数存放在特殊内存区域系统管理内存SMRAM中,该预设的处理函数可以为BIOS代码。其他类型的中断无法读写存放在特殊内存区域SMRAM中的BIOS代码,而只有当进入系统管理模式时,才会被SMI处理程序所执行。即:调用模块303在系统管理模式下,通过SMI处理程序运行预先存放在特殊内存区域SMRAM中的处理函数,以调用BIOS更改总线设备的配置。
本发明实施例通过在接收到总线设备的热插拔请求时,产生系统管理中断,进入系统管理模式,在系统管理模式下,调用BIOS更改总线设备的配置,使总线设备不再响应系统请求或者使总线设备开始响应系统请求,并调用BIOS控制总线设备下电或者上电,从而实现了总线设备的热插拔。
实施例四
本发明实施例提供了一种总线装置,该总线装置用于控制连接在系统总线上的总线设备,系统总线可以是QPI总线、KTI总线和HT总线,参见图4,该装置包括:
接收模块401,用于接收总线设备的热插拔请求,热插拔请求包括热插请求和热拔请求。热拔请求用于请求将总线设备下电,热插请求则用于请求为总线设备上电;其中,热插拔请求可以采用下述方式产生:用户按压总线设备上的热拔插按钮,或者用户通过软件发送的热拔插请求;
中断模块402,用于产生系统管理中断,以进入系统管理模式;
调用模块403,用于在系统管理模式下,调用基本输入输出系统BIOS更改总线设备的配置,使总线设备不再响应系统请求或者使总线设备开始响应系统请求;
调用BIOS控制总线设备下电或者上电,完成总线设备的热拔或者热插。
在本实施例中,当接收到总线设备的热插拔请求时,即触发产生系统管理中断,产生系统管理中断时,会进入系统管理模式,而在系统管理模式下,通过SMI处理程序执行预设的处理函数,以调用BIOS完成总线设备的配置和后续上电或下电。具体地,预设的处理函数存放在特殊内存区域系统管理内存SMRAM中,该预设的处理函数可以为BIOS代码。其他类型的中断无法读写存放在特殊内存区域SMRAM中的BIOS代码,而只有当进入系统管理模式时,才会被SMI处理程序所执行。即:调用模块403在系统管理模式下,通过SMI处理程序运行预先存放在特殊内存区域SMRAM中的处理函数,以调用BIOS更改总线设备的配置。当然,在SMRAM中可能预先存储了多种功能的处理函数,SMI处理程序可以根据触发该系统管理中断的总线设备执行相应的处理函数。本实施例中,热插拔请求、VPP寄存器与SMRAM中的处理函数三者之间具有预设的对应关系。即根据发出热拔插请求的总线设备,写VPP寄存器的相应位;根据VPP寄存器的相应位执行相应的处理函数。调用模块403在系统管理中断是通过写VPP寄存器的电源控制位触发的时候,通过SMI处理程序执行用于调用BIOS更改总线设备的配置的处理函数。
其中,中断模块402,
用于通过操作系统写VPP寄存器的电源控制位,以产生系统管理中断;或者,
调用BIOS写VPP寄存器的电源控制位,以产生系统管理中断。
具体地,通过操作系统写VPP寄存器的电源控制位时,可以通过操作系统中的Native方法来写VPP寄存器的电源控制位;而通过BIOS写VPP寄存器的电源控制位时,可以通过BIOS中的ACPI模式中的Ej0方法写VPP寄存器的电源控制位。
本实施例通过写VPP寄存器的电源控制位,从而触发系统管理中断,进入系统管理模式。当然,在其他实施例中,还可以通过其他方式触发系统管理中断,这里不再赘述。
其中,调用模块403,
用于调用BIOS控制总线设备进入静默模式,以使总线设备上的资源不再响应系统请求,以保障后续操作安全可靠;修改总线设备的系统路由、地址解码和在位标记;控制总线设备退出静默模式,恢复到正常模式。
具体地,通过修改总线设备的系统路由,可以使原本应该发往总线设备的报文,不再路由到该总线设备;通过修改总线设备的地址解码,可以使总线设备不再响应原本应该发往自身的报文;通过修改总线设备的在位标记,可以使总线设备不再被其他设备感知。其中,报文为总线报文,如QPI报文,该报文中可以携带系统发出的消息、命令和数据。
其中,中断模块402,还用于在调用BIOS控制总线设备下电或者上电后,退出系统管理模式。
进一步地,该装置还可以包括:
输出模块404,用于在完成总线设备的热拔或热插时,输出指示信息,指示信息用于表示总线设备的热拔或热插已经完成。
本发明实施例通过在接收到总线设备的热插拔请求时,产生系统管理中断,进入系统管理模式,在系统管理模式下,调用BIOS更改总线设备的配置,使总线设备不再响应系统请求或者使总线设备开始响应系统请求,并调用BIOS控制总线设备下电或者上电,从而实现了总线设备的热插拔。
需要说明的是:上述实施例提供的总线装置在进行总线设备热插拔时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的总线装置与总线设备的热插拔方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。