一种挂载系统、方法、集群以及存储介质转让专利

申请号 : CN202311175954.1

文献号 : CN116909639B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 胡培培

申请人 : 珠海星云智联科技有限公司

摘要 :

本申请提供了一种挂载系统、方法、集群以及存储介质。上述系统包括:数据处理器,用于对外围器件互联扩展设备进行模拟,所述外围器件互联扩展设备包括外围器件互联扩展桥设备以及外围器件互联扩展端设备;处理器,用于通过驱动程序驱动所述外围器件互联扩展设备;数据处理器,用于在准备将新创建的第一外围器件互联扩展端设备挂载到第一外围器件互联扩展桥设备的情况下,触发第一中断;处理器,用于在基于所述第一中断检测出所述第一外围器件互联扩展桥设备的状态为第一状态,并且,所述第一外围器件互联扩展桥设备之前已经挂载第二外围器件互联扩展端设备的情况下,删除所述第二外围器件互联扩展端设备。

权利要求 :

1.一种挂载系统,其特征在于,包括:

数据处理器,用于提供外围器件互联扩展设备以及所述外围器件互联扩展设备的拓扑关系的硬件逻辑,所述数据处理器还设置有模拟器,所述模拟器用于提供外围器件互联扩展设备以及所述外围器件互联扩展设备的拓扑关系的软件逻辑,并与所述硬件逻辑之间协商交互以实现对所述外围器件互联扩展设备的模拟,所述外围器件互联扩展设备包括外围器件互联扩展桥设备以及外围器件互联扩展端设备,所述外围器件互联扩展桥设备以及所述外围器件互联扩展端设备均是所述数据处理器模拟出来的;

处理器,用于通过驱动程序驱动所述外围器件互联扩展设备;

数据处理器,用于在准备将新创建的第一外围器件互联扩展端设备挂载到第一外围器件互联扩展桥设备的情况下,触发第一中断;

处理器,用于在基于所述第一中断检测出所述第一外围器件互联扩展桥设备的状态为第一状态,并且,所述处理器认为所述第一外围器件互联扩展桥设备之前已经挂载第二外围器件互联扩展端设备的情况下,删除处理器内所述第二外围器件互联扩展端设备的相关信息;

数据处理器,用于将所述第一外围器件互联扩展桥设备的状态从所述第一状态更改为第二状态,触发第二中断;

处理器,用于在基于所述第二中断检测出所述第一外围器件互联扩展桥设备的状态为所述第二状态的情况下,调用所述第一外围器件互联扩展端设备的驱动程序以将所述第一外围器件互联扩展端设备挂载到所述第一外围器件互联扩展桥设备上;

在所述第一外围器件互联扩展桥设备的存在检测状态的值为第一值,数据链路层链路有效性为第一值,存在检测改变为第二值,数据链路层状态改变为第二值的情况下,所述第一外围器件互联扩展桥设备的状态为所述第一状态;

在所述第一外围器件互联扩展桥设备的存在检测状态的值为第二值,数据链路层链路有效性为第二值,存在检测改变为第二值,数据链路层状态改变为第二值的情况下,所述第一外围器件互联扩展桥设备的状态为所述第二状态。

2.根据权利要求1所述的系统,其特征在于,

处理器,用于在基于所述第一中断检测出处理器认为所述第一外围器件互联扩展桥设备之前没有挂载外围器件互联扩展端设备的情况下,退出所述第一中断。

3.根据权利要求1所述的系统,其特征在于,

所述处理器删除所述处理器内部所述第二外围器件互联扩展端设备的相关信息的方式为意外删除方式,其中,所述意外删除方式的程序比无意外删除方式的程序简单。

4.根据权利要求1所述的系统,其特征在于,所述数据处理器模拟的所述外围器件互联扩展端设备在所述模拟器异常发生的情况下不可用。

5.根据权利要求4所述的系统,其特征在于,所述第二外围器件互联扩展端设备在所述模拟器异常发生之前挂在所述第一外围器件互联扩展桥设备上,在所述模拟器进行异常恢复之后,所述第二外围器件互联扩展端设备恢复失败。

6.一种挂载方法,其特征在于,应用于外围器件互联扩展设备挂载系统,所述外围器件互联扩展设备挂载系统包括相互通信的数据处理器以及处理器,所述数据处理器用于提供外围器件互联扩展设备以及所述外围器件互联扩展设备的拓扑关系的硬件逻辑,所述数据处理器还设置有模拟器,所述模拟器用于提供外围器件互联扩展设备以及所述外围器件互联扩展设备的拓扑关系的软件逻辑,并与所述硬件逻辑之间协商交互以实现对所述外围器件互联扩展设备的模拟,所述外围器件互联扩展设备包括外围器件互联扩展桥设备以及外围器件互联扩展端设备,所述外围器件互联扩展桥设备以及所述外围器件互联扩展端设备均是所述数据处理器模拟出来的;所述处理器用于通过所述处理器加载驱动程序驱动所述外围器件互联扩展设备;

通过所述数据处理器在准备将新创建的第一外围器件互联扩展端设备挂载到第一外围器件互联扩展桥设备的情况下,触发第一中断;

通过所述处理器在基于所述第一中断检测出所述第一外围器件互联扩展桥设备的状态为第一状态,并且,所述处理器认为所述第一外围器件互联扩展桥设备之前已经挂载第二外围器件互联扩展端设备的情况下,删除处理器内所述第二外围器件互联扩展端设备的相关信息;

通过所述数据处理器将所述第一外围器件互联扩展桥设备的状态从所述第一状态更改为第二状态,触发第二中断;

通过处理器在基于所述第二中断检测出所述第一外围器件互联扩展桥设备的状态为所述第二状态的情况下,调用所述第一外围器件互联扩展端设备的驱动程序以将所述第一外围器件互联扩展端设备挂载到所述第一外围器件互联扩展桥设备上;

在所述第一外围器件互联扩展桥设备的存在检测状态的值为第一值,数据链路层链路有效性为第一值,存在检测改变为第二值,数据链路层状态改变为第二值的情况下,所述第一外围器件互联扩展桥设备的状态为所述第一状态;

在所述第一外围器件互联扩展桥设备的存在检测状态的值为第二值,数据链路层链路有效性为第二值,存在检测改变为第二值,数据链路层状态改变为第二值的情况下,所述第一外围器件互联扩展桥设备的状态为所述第二状态。

7.一种计算设备集群,其特征在于,包括至少一个处理器以及至少一个数据处理器,至少一个数据处理器,用于提供外围器件互联扩展设备以及所述外围器件互联扩展设备的拓扑关系的硬件逻辑,所述数据处理器还设置有模拟器,所述模拟器用于提供外围器件互联扩展设备以及所述外围器件互联扩展设备的拓扑关系的软件逻辑,并与所述硬件逻辑之间协商交互以实现对所述外围器件互联扩展设备的模拟,所述外围器件互联扩展设备包括外围器件互联扩展桥设备以及外围器件互联扩展端设备,所述外围器件互联扩展桥设备以及所述外围器件互联扩展端设备均是所述数据处理器模拟出来的;

至少一个处理器,用于通过驱动程序驱动所述外围器件互联扩展设备;

至少一个数据处理器,用于在准备将新创建的第一外围器件互联扩展端设备挂载到第一外围器件互联扩展桥设备的情况下,触发第一中断;

至少一个处理器,用于在基于所述第一中断检测出所述第一外围器件互联扩展桥设备的状态为第一状态,并且,所述处理器认为所述第一外围器件互联扩展桥设备之前已经挂载第二外围器件互联扩展端设备的情况下,删除处理器内所述第二外围器件互联扩展端设备的相关信息;

至少一个数据处理器,用于将所述第一外围器件互联扩展桥设备的状态从所述第一状态更改为第二状态,触发第二中断;

至少一个处理器,用于在基于所述第二中断检测出所述第一外围器件互联扩展桥设备的状态为所述第二状态的情况下,调用所述第一外围器件互联扩展端设备的驱动程序以将所述第一外围器件互联扩展端设备挂载到所述第一外围器件互联扩展桥设备上;

在所述第一外围器件互联扩展桥设备的存在检测状态的值为第一值,数据链路层链路有效性为第一值,存在检测改变为第二值,数据链路层状态改变为第二值的情况下,所述第一外围器件互联扩展桥设备的状态为所述第一状态;

在所述第一外围器件互联扩展桥设备的存在检测状态的值为第二值,数据链路层链路有效性为第二值,存在检测改变为第二值,数据链路层状态改变为第二值的情况下,所述第一外围器件互联扩展桥设备的状态为所述第二状态。

8.一种计算机可读存储介质,其特征在于,包括指令,所述指令被计算设备执行的时候,能够实现如权利要求6所述的方法。

说明书 :

一种挂载系统、方法、集群以及存储介质

技术领域

[0001] 本发明涉及数据处理器,尤其涉及一种挂载系统、方法、集群以及存储介质。

背景技术

[0002] 外围器件互联(peripheral component interconnect,PCI)是由PCISIG(PCI special interest group)推出的一种局部并行总线标准。PCI总线是一种树型结构,并且独立于中央处理器(central processing unit,CPU)总线,可以和CPU总线并行操作。PCI总线上可以挂接PCI设备和PCI桥片,PCI总线上只允许有一个PCI主设备,其他的均为PCI从设备,而且读写操作只能在主从设备之间进行,从设备之间的数据交换需要通过主设备中转。其中,外围器件互联扩展(PCI Express,PCIE)由早期的PCI扩展衍生而来并且对兼容PCI,两者的主要区别在于并行到串行的切换,且速率更快。PCI Express是一种分层协议,由事务层,数据链路层和物理层组成。
[0003] 但是,如果某一个桥设备插槽里面已经存在了一个PCIE设备,如果再次将另一个的PCIE设备插入到该桥设备中,就会导致主机卡死。

发明内容

[0004] 本发明实施例提供了一种挂载系统、方法、集群以及存储介质,能够确保在模拟器异常恢复之后,也不会出现热插入PCIE设备而导致主机卡死。
[0005] 第一方面,提供了一种挂载系统,包括:
[0006] 数据处理器,用于提供至外围器件互联扩展设备以及所述外围器件互联扩展设备的拓扑关系的硬件逻辑,所述数据处理器还设置有模拟器,所述模拟器用于提供外围器件互联扩展设备以及所述外围器件互联扩展设备的拓扑关系的软件逻辑,并与所述硬件逻辑之间协商交互以实现对所述外围器件互联扩展设备的模拟,所述外围器件互联扩展设备包括外围器件互联扩展桥设备以及外围器件互联扩展端设备;
[0007] 处理器,用于通过驱动程序驱动所述外围器件互联扩展设备;
[0008] 数据处理器,用于在准备将新创建的第一外围器件互联扩展端设备挂载到第一外围器件互联扩展桥设备的情况下,触发第一中断;
[0009] 处理器,用于在基于所述第一中断检测出所述第一外围器件互联扩展桥设备的状态为第一状态,并且,所述处理器认为所述第一外围器件互联扩展桥设备之前已经挂载第二外围器件互联扩展端设备的情况下,删除处理器内所述第二外围器件互联扩展端设备的相关信息。
[0010] 在一些可能的设计中,处理器,用于在基于所述第一中断检测出所述第一外围器件互联扩展桥设备之前没有挂载外围器件互联扩展端设备的情况下,退出所述第一中断。
[0011] 在一些可能的设计中,数据处理器,用于将所述第一外围器件互联扩展桥设备的状态从所述第一状态更改为第二状态,触发第二中断;
[0012] 处理器,用于在基于所述第二中断检测出所述第一外围器件互联扩展桥设备的状态为所述第二状态的情况下,调用所述第一外围器件互联扩展端设备的驱动程序以将所述第一外围器件互联扩展端设备挂载到所述第一外围器件互联扩展桥设备。
[0013] 在一些可能的设计中,在所述第一外围器件互联扩展桥设备的存在检测状态的值为第一值,数据链路层链路有效性为第一值,存在检测改变为第二值,数据链路层状态改变为第二值的情况下,所述第一外围器件互联扩展桥设备的状态为所述第一状态;
[0014] 在所述第一外围器件互联扩展桥设备的存在检测状态的值为第二值,数据链路层链路有效性为第二值,存在检测改变为第二值,数据链路层状态改变为第二值的情况下,所述第一外围器件互联扩展桥设备的状态为所述第二状态。
[0015] 在一些可能的设计中,所述处理器删除所述处理器内部所述第二外围器件互联扩展端设备的相关信息的方式为意外删除方式,其中,所述意外删除方式的程序比无意外删除方式的程序简单。
[0016] 在一些可能的设计中,所述数据处理器模拟的所述外围器件互联扩展端设备在所述模拟器异常发生的情况下不可用。
[0017] 在一些可能的设计中,所述第二外围器件互联扩展端设备在所述模拟器异常发生之前挂在所述第一外围器件互联扩展桥设备上,在所述模拟器进行异常恢复之后,所述第二外围器件互联扩展端设备恢复失败。
[0018] 第二方面,提供了一种挂载方法,所述外围器件互联扩展设备挂载系统包括相互通信的数据处理器以及处理器,所述数据处理器用于提供至外围器件互联扩展设备以及所述外围器件互联扩展设备的拓扑关系的硬件逻辑,所述数据处理器还设置有模拟器,所述模拟器用于提供外围器件互联扩展设备以及所述外围器件互联扩展设备的拓扑关系的软件逻辑,并与所述硬件逻辑之间协商交互以实现对所述外围器件互联扩展设备的模拟,所述外围器件互联扩展设备包括外围器件互联扩展桥设备以及外围器件互联扩展端设备;所述处理器用于通过所述处理器加载驱动程序驱动所述外围器件互联扩展设备;
[0019] 通过所述数据处理器在准备将新创建的第一外围器件互联扩展端设备挂载到第一外围器件互联扩展桥设备的情况下,触发第一中断;
[0020] 通过所述处理器在基于所述第一中断检测出所述第一外围器件互联扩展桥设备的状态为第一状态,并且,所述处理器认为所述第一外围器件互联扩展桥设备之前已经挂载第二外围器件互联扩展端设备的情况下,删除处理器内所述第二外围器件互联扩展端设备的相关信息。
[0021] 第三方面,提供了一种计算设备集群,包括至少一个处理器以及至少一个数据处理器,
[0022] 至少一个数据处理器,用于提供至外围器件互联扩展设备以及所述外围器件互联扩展设备的拓扑关系的硬件逻辑,所述数据处理器还设置有模拟器,所述模拟器用于提供外围器件互联扩展设备以及所述外围器件互联扩展设备的拓扑关系的软件逻辑,并与所述硬件逻辑之间协商交互以实现对所述外围器件互联扩展设备的模拟,所述外围器件互联扩展设备包括外围器件互联扩展桥设备以及外围器件互联扩展端设备;
[0023] 至少一个处理器,用于通过驱动程序驱动所述外围器件互联扩展设备;
[0024] 至少一个数据处理器,用于在准备将新创建的第一外围器件互联扩展端设备挂载到第一外围器件互联扩展桥设备的情况下,触发第一中断;
[0025] 至少一个处理器,用于在基于所述第一中断检测出所述第一外围器件互联扩展桥设备的状态为第一状态,并且,所述处理器认为所述第一外围器件互联扩展桥设备之前已经挂载第二外围器件互联扩展端设备的情况下,删除处理器内所述第二外围器件互联扩展端设备的相关信息。
[0026] 第四方面,提供了一种计算机可读存储介质,包括指令,所述指令被计算设备执行的时候,能够实现如第二方面所述的方法。

附图说明

[0027] 为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。
[0028] 图1是本申请提供的一种挂载系统的结构示意图;
[0029] 图2是本申请提供的一种处理器的结构示意图;
[0030] 图3是本申请提供的一种数据处理器的结构示意图;
[0031] 图4是本申请提供的一种挂载方法的流程示意图。

具体实施方式

[0032] 下面结合本发明实施例中的附图对本发明实施例进行描述。本发明的实施方式部分使用的术语仅用于对本发明的具体实施例进行解释,而非旨在限定本发明。
[0033] 参见图1,图1是本申请提供的一种挂载系统的结构示意图。如图1所示,本申请提供的挂载系统包括:处理器(central processing unit,CPU)11和数据处理器(Data Processing Unit,DPU)12。
[0034] CPU 11是运算核心和控制核心,能够对复杂的情况进行处理。CPU 11可以是一块超大规模的集成电路。在CPU 11中安装有主操作系统和其他软件程序,从而CPU 11能够实现对内存及各种PCIE设备的访问。CPU 11可以通过片内总线快速访问本地内存。CPU 11中可以包括一个或多个处理器核(core)。在一种实现中,CPU 11可以是一个多核芯片,即包含多个处理核心的芯片。在另一种实现中,CPU 11中可以包括一个或多个处理器核(core)。可以为具有一个处理核心的芯片。
[0035] 参见图2,图2是本申请提供的一种处理器的结构示意图。如图2所示,CPU 可以包括存储器地址寄存器101、存储器数据寄存器102、程序计数器103、指令寄存器104、指令译码器105、微码只读存储器106、操作控制器107、计算单元108、通用寄存器组109、累加器110、程序状态字寄存器111、时序电路112以及处理器总线120。其中,处理器总线120也可以是数据总线、电源总线、控制总线或者状态信号总线等。
[0036] CPU 用于处理内存113中存放的指令和数据。在一些实施例中,指令可以包括一个或多个指令格式。指令格式可以指示各种字段(位的数量、位的位置等)来指定待执行的数据处理的操作和操作数,其中该操作将在该操作数上被执行。一些指令格式可以进一步由指令模板(或子格式)定义。
[0037] 在CPU 中,存储器地址寄存器101用于保存CPU 当前所要访问的内存的地址。存储器数据寄存器102用于保存CPU 从该地址中读取或写入的数据和读取或写入的指令,以便弥补处理器和存储器之间存在的操作速度上的差异。
[0038] 时序电路112通过固定时钟为各部件提供一个时间基准,处理器执行一条指令的时间为一个指令周期。程序计数器103用于存放下一条指令的地址,当指令顺序执行时,每取一条指令后程序计数器103自动加上一条指令的字节数。当遇到转移指令时,程序计数器103通过转移指令中的地址码字段来指定下一条指令的地址。指令寄存器104用于保存当前正在执行的指令。指令包括操作码和地址码两个字段,操作码部分由指令译码器105对操作码部分进行译码,以产生指令所要求操作的控制电位。操作控制器107可以根据指令译码器输出的控制电位信号和时序电路112产生的时序信号,生成各种操作控制信号,控制CPU 其余部件完成取指令和执行指令的操作。
[0039] 微指令是处理器执行指令的最小单位,一条指令可以是单个微指令,也可以由若干个微指令组成。由多条微指令组合的指令称为复杂指令,可以使用各种不同的机制来实现指令译码器105对复杂指令的解码。具体的解码机制包括但不限于查找表,硬件实现,可编程逻辑阵列(PLA),微码只读存储器(ROM)等方式。在一个实施例中,可以将复杂指令对应的微指令的步骤存储在微码只读存储器106中,指令译码器105在译码的过程中,可以从微码只读存储器106中查询并得到组成复杂指令的微指令的操作码和地址码,依次对微指令的操作码部分进行译码,产生微指令所要求操作的控制电位。
[0040] 操作控制器107具有多个缓冲器,可以根据指令的种类,将解码后的指令送往各自的保留站中保存下来。并根据计算单元的硬件电路的状态和各指令能否提前执行的具体情况分析后,将能提前执行的指令调度给相应计算单元108执行。在这期间对指令流进行重新排序,以使指令流水线行进并被平滑调度。示例性地,对于整数计算的指令,操作控制器107可以使用整数保留站保存指令,并分配给整数计算单元执行计算;对于浮点数计算的指令,操作控制器107可以使用浮点数保留站保存指令,并分配给浮点数计算单元执行计算。
[0041] 通用寄存器组109用于根据指令的地址码,保存地址码对应的数据。计算单元108用于接收操作控制器107的操作控制信号并对保存在通用寄存器组109中的数据执行计算,包括算术运算(包括加减乘数等基本运算及其附加运算)和逻辑运算(包括移位、逻辑测试或两个值比较)。计算中产生的临时变量存放在累加器110中,产生的状态的信息存放在程序状态字寄存器111中,例如运算结果进/借位标志(C)、运算结果溢出标志(O)、运算结果为零标志(Z)、运算结果为负标志(N)、运算结果符号标志(S)等。程序状态字寄存器还用来保存中断和计算设备工作状态等信息,以便CPU及时了解机器运行状态和程序运行状态。
[0042] 计算单元108中包含多种不同的电路模块,可以分别用于执行不同的指令。例如,整数计算单元1081以及浮点数计算单元1082,分别用于对整数和浮点数进行算术运算和逻辑运算。
[0043] 可以理解,上述CPU仅仅为一具体的实施例,在实际应用中,还可以具有更多或者更少的部件,此处不展开描述。
[0044] DPU 12中包含多个处理核(core),多个处理核可以并行进行数据处理,因此,DPU 12往往具有强大的计算能力。参见图3,DPU 包括:多个存储器121、多个处理核122和通讯接口123等等硬件资源。例如,处理核122可以包括第一处理核、第二处理核、…、第N处理核,存储器121包括第一存储器、第二存储器、…、第N存储器。在一种可能的实施例中,DPU 12中的处理核122的计算能力弱于CPU 11中的处理器的计算能力,DPU 12中的存储器121的存储能力弱于CPU 11中的存储器的存储能力。因此,CPU 11适合处理数量不多的复杂指令,而DPU 
12适合处理批量的简单指令。存储器121可以是非易失性固态存储器。在一种可能的实施例中,存储器121包括只读存储器ROM(Read—Only Memory)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(Programmable ROM,PROM)、可擦除PROM(Electrical Programmable ROM,EPROM)、电可擦除PROM(Electrically Erasable Programmable ROM,EEPROM)、电可改写ROM(Electrically Alterable ROM,EAROM)或闪存,或者两个或及其以上这些的组合。DPU上可以安装从操作系统,从操作系统用于对DPU上的硬件资源进行管理。
在一种可能的实施例中,DPU 12中的从操作系统的功能弱于CPU 11中的主操作系统。DPU 
12可以用于对至少一个外围器件互联扩展设备以及至少一个PCIE设备的拓扑关系进行模拟。DPU的硬件资源用于提供PCIE设备以及PCIE设备的拓扑关系的硬件逻辑。DPU 12中可以安装有模拟器,模拟器用于提供PCIE设备以及PCIE设备的拓扑关系的软件逻辑。DPU 12通过软件逻辑与硬件逻辑之间协商交互以实现对PCIE设备的模拟。
[0045] DPU中模拟的PCIE设备可以包括PCIE端设备以及PCIE桥设备。PCIE端设备可以提供各种功能,例如,PCIE端设备可以是网卡,提供网络数据传输的功能,可以是声卡,提供对音源的处理。PCIE桥设备用于连接多个PCIE端设备,组成不同的拓扑关系。PCIE设备的拓扑关系可以包括星型关系、树形关系,环形关系、总线关系等等中的一种或多种。以图1所述PCIE设备的部分拓扑关系为例,第一PCIE桥设备作为上级节点,第一PCIE端设备连接到上级节点第一PCIE桥设备之上。第一PCIE端设备是在模拟器发生异常之后挂载到第一PCIE桥设备之上的。在模拟器发生异常之前,第一PCIE桥设备上挂载的是第二PCIE端设备。PCIE端设备和PCIE桥设备之间通过无意外(no surprises)方式实现热插拔,即,用户不允许在未告知处理器的情况下插入或者移除PCIE端设备;用户告知处理器将要插入或者移除PCIE端设备之后,将进行相关操作,之后告知用户是否可以进行安全的进行这个操作(通过相应的指示器);然后用户才可以进行接下来的操作。可以理解,图1中仅仅是拓扑关系中的一部分,其他部分都进行了省略。
[0046] 当假设第一PCIE端设备、第二PCIE端设备和第一PCIE桥设备不是DPU模拟出来的设备时,那么第一PCIE端设备或者第二PCIE端设备通过PCIE插槽和第一PCIE桥设备进行连接时,是会产生明确的电信号的。所以,处理器非常清楚第一PCIE端设备或者第二PCIE端设备是否确实连接在第一PCIE桥设备之上。当第二PCIE端设备连接在第一PCIE桥设备时,处理器根据电信号确定第二PCIE端设备通过PCIE插槽挂载在第一PCIE桥设备上,然后,当用户将第二PCIE端设备拔出PCIE插槽时,电信号消失,处理器确定第二PCIE端设备已经从PCIE插槽拔出。当用户将第一PCIE端设备插入PCIE插槽时,处理器检测到电信号,因此,处理器确定第一PCIE端设备挂载在第一PCIE桥设备上。从上面的陈述可以知道,当第一PCIE端设备、第二PCIE端设备和第一PCIE桥设备不是DPU模拟出来的设备时,处理器是很清楚第一PCIE端设备、第二PCIE端设备是否挂载在第一PCIE桥设备之上,也很清楚第一PCIE端设备、第二PCIE端设备是否已经从PCIE插槽拔出。
[0047] 但是,当第一PCIE端设备、第二PCIE端设备和第一PCIE桥设备是DPU模拟出来的设备时,处理器并不一定清楚第一PCIE端设备、第二PCIE端设备是否挂载在第一PCIE桥设备之上,也不一定清楚第一PCIE端设备、第二PCIE端设备是否已经从PCIE插槽拔出。假设在模拟器发生异常之前,DPU模拟出第二PCIE端设备挂载在第一PCIE桥设备之上。在模拟器发生异常之后,第二PCIE端设备不可用,并且,第二PCIE端设备异常恢复失败,此时,第二PCIE端设备已经从第一PCIE桥设备上卸载,DPU知道第二PCIE端设备已经从第一PCIE桥设备上卸载,但是,处理器并不清楚第二PCIE端设备已经从第一PCIE桥设备上卸载,处理器一直以为第二PCIE端设备依然挂载在第一PCIE桥设备之上。所以,当DPU新创建第一PCIE端设备时,会将新创建的第一PCIE端设备挂载在第一PCIE桥设备之上,但是,处理器一直认为第二PCIE端设备依然挂载在第一PCIE桥设备,当接收到第一PCIE端设备的指令的时候,处理器就会发生混乱,从而导致处理器卡死。
[0048] 因此,DPU在准备将新创建的第一PCIE端设备挂载到第一PCIE桥设备的情况下,触发第一中断。处理器在接收到第一中断之后,检测出第一PCIE桥设备的状态为第一状态时,处理器会检测一下自己内部是否认为第一PCIE桥设备之前已经挂载第二PCIE端设备。如果处理器认为第一PCIE桥设备之前已经挂载第二PCIE端设备,则删除处理器内部第二PCIE端设备的相关信息。如果处理器认为第一PCIE桥设备之前没有挂载第二PCIE端设备,则退出第一中断。然后,数据处理器将第一PCIE桥设备的状态从第一状态更改为第二状态,触发第二中断。处理器在接收到第二中断之后,检测出第一PCIE桥设备的状态为第二状态的情况下,调用第一PCIE端设备的驱动程序以将第一PCIE端设备挂载到第一PCIE桥设备。这样,通过两次中断的机制,可以确保处理器会将之前的挂载在第一PCIE桥设备之上的第二PCIE端设备的相关信息删除干净,再将第一PCIE端设备挂载在第一PCIE桥设备之上,从而避免DPU中将第一PCIE端设备挂载在第一PCIE桥设备之上,而处理器则认为第二PCIE端设备依然是挂载在第一PCIE桥设备之上,从而导致处理器出现混乱,导致处理器卡死。
[0049] 在一些可能的实施例中,可以通过第一PCIE桥设备的PCIE配置空间中的PCIE能力集来记录第一PCIE桥设备的状态,例如,在第一PCIE桥设备的存在检测状态(Presence Detect State,PDS)的值为第一值,数据链路层链路有效性(Data Link Layer Link Active,DLLLA)为第一值,存在检测改变(Presence Detect Changed,PDC)为第二值,数据链路层状态改变(Data Link Layer State Changed,DLLSC)为第二值的情况下,第一PCIE桥设备的状态为第一状态;在第一PCIE桥设备的存在检测状态的值为第二值,数据链路层链路有效性为第二值,存在检测改变为第二值,数据链路层状态改变为第二值的情况下,第一PCIE桥设备的状态为第二状态。举例来说,DPU在准备将新创建的第一PCIE端设备挂载到第一PCIE桥设备的情况下,将PDS的值置0,DLLLA的值置0,PDC的值置1,DLLSC的值置1,触发第一中断。处理器在接收到第一中断之后,检测出第一PCIE桥设备的状态为PDS的值置0,DLLLA的值置0,PDC的值置1,DLLSC的值置1时,知道第一PCIE桥设备下的设备不存在了。则处理器会检测一下自己内部是否认为第一PCIE桥设备之前已经挂载第二PCIE端设备。如果处理器认为第一PCIE桥设备之前已经挂载第二PCIE端设备,则删除处理器内部第二PCIE端设备的相关信息。如果第二PCIE端设备认为第一PCIE桥设备之前没有挂载第二PCIE端设备,则退出第一中断。然后,数据处理器将第一PCIE桥设备的PDS的值置1,DLLLA的值置1,PDC的值置1,DLLSC的值置1,产生第二中断。处理器在接收到第二中断之后,检测出第一PCIE桥设备的状态为PDS的值置1,DLLLA的值置1,PDC的值置1,DLLSC的值置1的情况下,调用第一PCIE端设备的驱动程序以将第一PCIE端设备挂载到第一PCIE桥设备。上述方案中,通过复用第一PCIE桥设备的PCIE配置空间中的PCIE能力集来记录第一PCIE桥设备的状态,有效减少不必要的配置信息。
[0050] 在一些可能的实施例中,处理器删除内部第二PCIE端设备的相关信息的方式为意外删除方式。无意外删除方式的时候,第二PCIE端设备实际上还挂载在第一PCIE桥设备之上,所以,删除的程序是相对比较复杂的,但是,意外删除的时候,第二PCIE端设备实际上已经没有挂载在第一PCIE桥设备之上了,因此,处理器直接将第二PCIE端设备的相关信息进行删除即可,所以,删除的程序是相对比较简单的。
[0051] 参见图4,图4是本申请提供的一种挂载方法的流程示意图。如图4所示,本实施例的挂载方法应用于图1所示的挂载系统。本实施例的挂载方法包括:
[0052] S101:通过数据处理器在准备将新创建的第一PCIE端设备挂载到第一PCIE桥设备的情况下,触发第一中断。
[0053] S102:通过处理器在基于第一中断检测出第一PCIE桥设备的状态为第一状态。
[0054] 在一些可能的实施例中,可以通过第一PCIE桥设备的PCIE配置空间中的PCIE能力集来记录第一PCIE桥设备的第一状态,例如,在第一PCIE桥设备的存在检测状态(Presence Detect State,PDS)的值为第一值,数据链路层链路有效性(Data Link Layer Link Active,DLLLA)为第一值,存在检测改变(Presence Detect Changed,PDC)为第二值,数据链路层状态改变(Data Link Layer State Changed,DLLSC)为第二值的情况下,第一PCIE桥设备的状态为第一状态。举例来说,DPU在准备将新创建的第一PCIE端设备挂载到第一PCIE桥设备的情况下,DPU将PDS的值置0,DLLLA的值置0,PDC的值置1,DLLSC的值置1,此时,第一PCIE桥设备的状态为第一状态。
[0055] S103:通过处理器检测处理器是否认为第二PCIE端设备之前已经挂载在第一PCIE桥设备之上。如果是,进入步骤S104,如果否,进入步骤S105。
[0056] S104:删除处理器内第二PCIE端设备的相关信息。
[0057] 在一些可能的实施例中,处理器删除内部第二PCIE端设备的相关信息的方式为意外删除方式。无意外删除方式的时候,第二PCIE端设备实际上还挂载在第一PCIE桥设备之上,所以,删除的程序是相对比较复杂的,但是,意外删除的时候,第二PCIE端设备实际上已经没有挂载在第一PCIE桥设备之上了,因此,处理器直接将第二PCIE端设备的相关信息进行删除即可,所以,删除的程序是相对比较简单的。
[0058] S105:退出第一中断。
[0059] 在一些可能的实施例中,因为之前没有设备挂载在第一PCIE桥设备之上,所以,处理器可以不执行任何操作而直接退出第一中断。
[0060] S106:通过数据处理器将第一PCIE桥设备的状态从第一状态更改为第二状态,触发第二中断。
[0061] 在一些可能的实施例中,可以通过第一PCIE桥设备的PCIE配置空间中的PCIE能力集来记录第一PCIE桥设备的第二状态,例如,在第一PCIE桥设备的存在检测状态(Presence Detect State,PDS)的值为第二值,数据链路层链路有效性(Data Link Layer Link Active,DLLLA)为第二值,存在检测改变(Presence Detect Changed,PDC)为第二值,数据链路层状态改变(Data Link Layer State Changed,DLLSC)为第二值的情况下,第一PCIE桥设备的状态为第二状态。举例来说,DPU将PDS的值置1,DLLLA的值置1,PDC的值置1,DLLSC的值置1时,第一PCIE桥设备的状态为第二状态。
[0062] S107:通过处理器在检测出第一PCIE桥设备的状态为第二状态。
[0063] S108:通过处理器调用第一PCIE端设备的驱动程序以将第一外围器件互联扩展端设备挂载到第一PCIE桥设备。
[0064] 上述方案中,第一PCIE端设备、第二PCIE端设备和第一PCIE桥设备是DPU模拟出来的设备,处理器并不一定清楚第一PCIE端设备、第二PCIE端设备是否挂载在第一PCIE桥设备之上,也不一定清楚第一PCIE端设备、第二PCIE端设备是否已经从PCIE插槽拔出。假设在模拟器发生异常之前,DPU模拟出第二PCIE端设备挂载在第一PCIE桥设备之上。在模拟器发生异常之后,第二PCIE端设备不可用,并且,第二PCIE端设备异常恢复失败,此时,第二PCIE端设备已经从第一PCIE桥设备上卸载,DPU知道第二PCIE端设备已经从第一PCIE桥设备上卸载,但是,处理器并不清楚第二PCIE端设备已经从第一PCIE桥设备上卸载,处理器一直以为第二PCIE端设备依然挂载在第一PCIE桥设备之上。所以,当DPU新创建第一PCIE端设备时,会将新创建的第一PCIE端设备挂载在第一PCIE桥设备之上,但是,处理器一直认为第二PCIE端设备依然挂载在第一PCIE桥设备,当接收到第一PCIE端设备的指令的时候,处理器就会发生混乱,从而导致处理器卡死。但是,本实施例中通过两次中断的机制,可以确保处理器会将之前的挂载在第一PCIE桥设备之上的第二PCIE端设备的相关信息删除干净,再将第一PCIE端设备挂载在第一PCIE桥设备之上,从而避免DPU中将第一PCIE端设备挂载在第一PCIE桥设备之上,而处理器则认为第二PCIE端设备依然是挂载在第一PCIE桥设备之上,从而导致处理器出现混乱,导致处理器卡死。
[0065] 本申请还提供了一种计算设备集群,包括至少一个处理器以及至少一个数据处理器,
[0066] 至少一个数据处理器,用于提供至外围器件互联扩展设备以及所述外围器件互联扩展设备的拓扑关系的硬件逻辑,所述数据处理器还设置有模拟器,所述模拟器用于提供外围器件互联扩展设备以及所述外围器件互联扩展设备的拓扑关系的软件逻辑,并与所述硬件逻辑之间协商交互以实现对所述外围器件互联扩展设备的模拟,所述外围器件互联扩展设备包括外围器件互联扩展桥设备以及外围器件互联扩展端设备;
[0067] 至少一个处理器,用于通过驱动程序驱动所述外围器件互联扩展设备;
[0068] 至少一个数据处理器,用于在准备将新创建的第一外围器件互联扩展端设备挂载到第一外围器件互联扩展桥设备的情况下,触发第一中断;
[0069] 至少一个处理器,用于在基于所述第一中断检测出所述第一外围器件互联扩展桥设备的状态为第一状态,并且,所述处理器认为所述第一外围器件互联扩展桥设备之前已经挂载第二外围器件互联扩展端设备的情况下,删除处理器内所述第二外围器件互联扩展端设备的相关信息。
[0070] 为了简便起见,本实施例并没有展开说明,具体可以参见图1至图4以及相关描述。
[0071] 在上述实施例中,可以全部或部分地通过软件、硬件、固件或者任意组合来实现。当使用软件实现时,可以全部或者部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令,在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络或其他可编程装置。所述计算机指令可存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网络站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、微波等)方式向另一个网络站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质,也可以是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如软盘、硬盘、磁带等)、光介质(例如DVD等)、或者半导体介质(例如固态硬盘)等等。
[0072] 在上述实施例中,对各个实施例的描述各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。