首页 / 基地址寄存器资源管理方法、电子设备及介质

基地址寄存器资源管理方法、电子设备及介质有效专利 发明

技术领域

[0001] 本申请涉及计算机技术领域,尤其涉及一种基地址寄存器资源管理方法、电子设备及介质。

相关背景技术

[0002] 在高性能计算机、数据中心、云计算等应用场景,广泛采用了异构计算相关技术,因此将大量各种不同类型的设备通过外围器件互联(Peripheral Component Interconnect,PCI)和快捷外围器件互联(PCI Express,PCIE)所定义的总线标准进行总线连接。这样基于PCI总线和PCIE总线连接的PCI设备和PCIE设备,通过无意外(no surprise)方式实现热插拔,也即允许用户在没有事先通知系统软件的情况下插入设备或者移除设备。为了设备扩展,通过PCIE桥设备(PCIE Bridge)配置挂载在该PCIE桥设备下的PCIE端设备的基地址寄存器(Base Address Register,BAR)资源,这样PCIE端设备才能通过总线进行数据上下行操作和中断操作等。现有技术中的基地址寄存器资源管理方案,是通过基本输入输出系统(Basic Input Output System,BIOS),在系统启动和扫描PCIE拓扑阶段,扫描挂载在PCIE桥设备下的PCIE端设备并分配BAR资源。但是,通过无意外方式实现热插拔,意味着在系统启动和扫描PCIE拓扑阶段,BIOS扫描到PCIE桥设备时,PCIE桥设备下可能没有挂载PCIE端设备,但是之后在操作系统阶段可能通过热插拔方式加入新的PCIE端设备到PCIE桥设备下,这样就导致BIOS没有为新加入的PCIE端设备预留BAR资源,从而需要修改操作系统的启动项来再次分配BAR资源,不利于提升整体系统效率。
[0003] 为此,本申请提供了一种基地址寄存器资源管理方法、电子设备及介质,用于应对热插拔导致的基地址寄存器资源预留不足的技术难题。

具体实施方式

[0023] 下面将结合附图对本申请实施例作进一步地详细描述。
[0024] 应当理解的是,在本申请的描述中,“至少一个”指一个或一个以上,“多个”指两个或两个以上。另外,“第一”、“第二”等词汇,除非另有说明,否则仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
[0025] 图1为本申请实施例提供的一种基地址寄存器资源管理方法的流程示意图。如图1所示,所述基地址寄存器资源管理方法包括以下步骤。
[0026] 步骤S101:响应于检测到快捷外围器件互联桥设备相关联的快捷外围器件互联链路在位,确定所述快捷外围器件互联桥设备的上行端口所连接的每一个下行端口下是否存在空闲快捷外围器件互联端设备,从而确定所述快捷外围器件互联桥设备相关联的空闲快捷外围器件互联端设备集合。
[0027] 步骤S103:针对所述空闲快捷外围器件互联端设备集合中的每一个空闲快捷外围器件互联端设备,创建只包含第零号基地址寄存器空间的虚拟设备并挂载所述虚拟设备到该空闲快捷外围器件互联端设备所对应的下行端口下,其中,所述第零号基地址寄存器空间是所述快捷外围器件互联桥设备相关联的快捷外围器件互联标准所定义的多个基地址寄存器空间中的首个基地址寄存器空间,并且,所述虚拟设备所包含的所述第零号基地址寄存器空间的大小是所述快捷外围器件互联桥设备所支持的所有类型的快捷外围器件互联端设备中的最大基地址寄存器空间的大小,然后,至少在确定所述虚拟设备相关联的多个基地址寄存器空间中的最后一个基地址寄存器空间的配置完成之后,删除所述虚拟设备并且配置所述快捷外围器件互联桥设备不再挂载快捷外围器件互联端设备到该空闲快捷外围器件互联端设备所对应的下行端口下,以及,设置目的地为所述虚拟设备的事务层数据包报文的回复为请求不支持。
[0028] 图1所示的基地址寄存器资源管理方法,可以应用在高性能计算机、数据中心、云计算等应用场景,可以适用于异构计算、虚拟化、半虚拟化等各种技术,通过将大量各种不同类型的设备通过外围器件互联(Peripheral Component Interconnect,PCI)和快捷外围器件互联(PCI Express,PCIE)所定义的总线标准进行总线连接,可以满足用户定制化输入输出的需求,而且支持通过无意外(no surprise)方式实现热插拔,也即允许用户在没有事先通知系统软件的情况下插入设备或者移除设备。宿主机系统在开机后先后经历系统启动阶段和操作系统阶段。在系统启动阶段,也叫扫描快捷外围器件互联拓扑阶段,通过基本输入输出系统(Basic Input Output System,BIOS),扫描快捷外围器件互联桥设备下的快捷外围器件互联端设备并分配基地址寄存器(Base Address Register,BAR)资源,这样快捷外围器件互联端设备利用分配好的基地址寄存器资源,可以通过总线进行数据上下行传输和中断操作等。在系统启动阶段也即扫描快捷外围器件互联拓扑阶段之后,操作系统启动,进入操作系统阶段,操作系统默认地使用基本输入输出系统扫描快捷外围器件互联拓扑的结果。因此,通过无意外方式实现热插拔,如果在扫描快捷外围器件互联拓扑阶段没有分配足够的基地址寄存器资源,甚至完全没有分配基地址寄存器资源,则可能导致通过热插拔来新加入的快捷外围器件互联端设备缺乏合适的基地址寄存器资源来运行,为此需要操作系统的启动项来再次分配基地址寄存器资源,不利于提升整体系统效率。考虑到通过无意外方式实现热插拔来增加设备、删除设备或者替换设备,这意味着在操作系统阶段,操作系统和系统软件是难以事先预计到可能通过热插拔来增加的新设备的需求,而各种不同类型的设备可能有不同的基地址寄存器资源的需求,而且宿主机可以支配的基地址寄存器资源的整体是有限的,需要优化整体资源利用率的同时也尽量避免资源预留不足的问题。下面结合图1详细说明,图1所示的基地址寄存器资源管理方法,如何实现系统不感知的热插拔功能,并且可以灵活适配不同厂商的各种类型的快捷外围器件互联端设备的需求,以及灵活适配不同厂商的各种基本输入输出系统的系统启动流程和扫描快捷外围器件互联拓扑阶段的操作特性。
[0029] 参考图1,在步骤S101,响应于检测到快捷外围器件互联桥设备相关联的快捷外围器件互联链路在位,确定所述快捷外围器件互联桥设备的上行端口所连接的每一个下行端口下是否存在空闲快捷外围器件互联端设备,从而确定所述快捷外围器件互联桥设备相关联的空闲快捷外围器件互联端设备集合。这里,快捷外围器件互联桥设备相关联的快捷外围器件互联链路意味着检测到了宿主机侧的链路在位的信号。服务器正常启动过程中,会给快捷外围器件互联链路也即PCIE链路上电,因此可以通过检测快捷外围器件互联链路的上电信号来检测快捷外围器件互联链路在位。当快捷外围器件互联链路在位后,基本输入输出系统开始工作,也即进入系统启动阶段,也叫扫描快捷外围器件互联拓扑阶段,通过基本输入输出系统扫描快捷外围器件互联桥设备下的快捷外围器件互联端设备并分配基地址寄存器资源。在步骤S101,响应于检测到快捷外围器件互联桥设备相关联的快捷外围器件互联链路在位,确定所述快捷外围器件互联桥设备的上行端口所连接的每一个下行端口下是否存在空闲快捷外围器件互联端设备,从而确定所述快捷外围器件互联桥设备相关联的空闲快捷外围器件互联端设备集合。这意味着,当某个下行端口下没有挂载任何快捷外围器件互联端设备时,该下行端口下存在空闲快捷外围器件互联端设备,因此可以确定所述快捷外围器件互联桥设备相关联的空闲快捷外围器件互联端设备集合。换句话说,通过遍历所述快捷外围器件互联桥设备的上行端口所连接的每一个下行端口,可以确定每一个下行端口下是否挂载了快捷外围器件互联端设备,如果没有挂载任何快捷外围器件互联端设备,则意味着存在空闲快捷外围器件互联端设备,从而可以通过所述快捷外围器件互联桥设备相关联的空闲快捷外围器件互联端设备集合来记录所有的空闲快捷外围器件互联端设备,用于后续的预留基地址寄存器资源的流程。如果在遍历所述快捷外围器件互联桥设备的上行端口所连接的每一个下行端口之后,没有检测到任何空闲快捷外围器件互联端设备,这说明所有的下行端口下均挂载了快捷外围器件互联端设备,那么就不需要继续执行后续的预留基地址寄存器资源的流程。
[0030] 继续参考图1,在步骤S103,针对所述空闲快捷外围器件互联端设备集合中的每一个空闲快捷外围器件互联端设备,创建只包含第零号基地址寄存器空间的虚拟设备并挂载所述虚拟设备到该空闲快捷外围器件互联端设备所对应的下行端口下。其中,所述第零号基地址寄存器空间是所述快捷外围器件互联桥设备相关联的快捷外围器件互联标准所定义的多个基地址寄存器空间中的首个基地址寄存器空间,并且,所述虚拟设备所包含的所述第零号基地址寄存器空间的大小是所述快捷外围器件互联桥设备所支持的所有类型的快捷外围器件互联端设备中的最大基地址寄存器空间的大小。这里,针对每一个空闲快捷外围器件互联端设备,也即针对每一个下面没有挂载任何快捷外围器件互联端设备的下行端口,创建虚拟设备(dummy),所述虚拟设备用于占位也即预留基地址寄存器资源。应当理解的是,创建虚拟设备是发生在扫描快捷外围器件互联拓扑阶段之前,因此,基本输入输出系统会扫描到所创建的虚拟设备并且为虚拟设备分配基地址寄存器资源。这里,因为虚拟设备只包含第零号基地址寄存器空间,因此虚拟设备的其他基地址寄存器空间为空,这意味着基本输入输出系统扫描到虚拟设备所包含的第零号基地址寄存器空间会确定所述第零号基地址寄存器空间的大小并分配相应的基地址寄存器资源,因此为虚拟设备分配的基地址寄存器资源是对应了所述快捷外围器件互联桥设备所支持的所有类型的快捷外围器件互联端设备中的最大基地址寄存器空间的大小。这里,因为所述第零号基地址寄存器空间是所述快捷外围器件互联桥设备相关联的快捷外围器件互联标准所定义的多个基地址寄存器空间中的首个基地址寄存器空间,因此,基本输入输出系统扫描多个基地址寄存器空间时首先扫描到首个基地址寄存器空间也即所述第零号基地址寄存器空间,这样确保了基本输入输出系统在扫描快捷外围器件互联拓扑阶段为所创建的虚拟设备分配相当于所述第零号基地址寄存器空间的大小的基地址寄存器资源。
[0031] 继续参考图1,在步骤S103,创建了所述虚拟设备并挂载所述虚拟设备到该空闲快捷外围器件互联端设备所对应的下行端口下之后,然后,至少在确定所述虚拟设备相关联的多个基地址寄存器空间中的最后一个基地址寄存器空间的配置完成之后,删除所述虚拟设备并且配置所述快捷外围器件互联桥设备不再挂载快捷外围器件互联端设备到该空闲快捷外围器件互联端设备所对应的下行端口下,以及,设置目的地为所述虚拟设备的事务层数据包(Transaction Layer Packet,TLP)报文的回复为请求不支持。这里,至少在确定所述虚拟设备相关联的多个基地址寄存器空间中的最后一个基地址寄存器空间的配置完成之后,这意味着基本输入输出系统已经扫描了所述虚拟设备相关联的多个基地址寄存器空间,并且扫描到了最后一个基地址寄存器空间并配置完成。因此,结合上述的所述第零号基地址寄存器空间是所述快捷外围器件互联桥设备相关联的快捷外围器件互联标准所定义的多个基地址寄存器空间中的首个基地址寄存器空间,这里要求在确定所述虚拟设备相关联的多个基地址寄存器空间中的最后一个基地址寄存器空间的配置完成之后,如此,确保了基本输入输出系统扫描全部的多个基地址寄存器空间,这样有助于灵活适配不同厂商的各种类型的快捷外围器件互联端设备的需求,也有助于适配不同厂商的各种基本输入输出系统的系统启动流程和扫描快捷外围器件互联拓扑阶段的操作特性。例如,PCIE协议规定了每个PCIE设备可以有6个BAR空间,编号为BAR0到BAR5。取决于具体的设备需求和BIOS的系统启动流程,有的PCIE设备可能占用了BAR0和BAR1,有的PCIE设备可能占用了BAR0到BAR3,因此每个PCIE设备要占用的这六个BAR空间的数量以及每个BAR空间的大小,是可以基于PCIE设备的自身需求和用户定制化需求来设定的。而且,不同的厂商的服务器、主机、系统等,采用的BIOS也即基本输入输出系统的系统启动流程可能有所不同。因此,为了确保所创建的虚拟设备可以成功地预留设计好的基地址寄存器资源,通过定义所述第零号基地址寄存器空间是所述快捷外围器件互联桥设备相关联的快捷外围器件互联标准所定义的多个基地址寄存器空间中的首个基地址寄存器空间,这样确保了基本输入输出系统在扫描到虚拟设备时必然读取了首个基地址寄存器空间也即第零号基地址寄存器空间(BAR0)的信息,从而分配了相当于所述快捷外围器件互联桥设备所支持的所有类型的快捷外围器件互联端设备中的最大基地址寄存器空间的大小的基地址寄存器资源,然后,通过限定至少在确定所述虚拟设备相关联的多个基地址寄存器空间中的最后一个基地址寄存器空间的配置完成之后,才删除所述虚拟设备,这样意味着在完成所有的多个基地址寄存器空间(例如从BAR0到BAR5)之后,也即确定了最后一个基地址寄存器空间(如BAR5)的配置完成,如此,确保了基本输入输出系统扫描及分配基地址寄存器资源的整个流程的完整性,可以适配不同厂商的基本输入输出系统的处理流程,避免出现基本输入输出系统的异常。
[0032] 继续参考图1,至少在确定所述虚拟设备相关联的多个基地址寄存器空间中的最后一个基地址寄存器空间的配置完成之后,删除所述虚拟设备并且配置所述快捷外围器件互联桥设备不再挂载快捷外围器件互联端设备到该空闲快捷外围器件互联端设备所对应的下行端口下,以及,设置目的地为所述虚拟设备的事务层数据包报文的回复为请求不支持。通过配置所述快捷外围器件互联桥设备不再挂载快捷外围器件互联端设备到该空闲快捷外围器件互联端设备所对应的下行端口下,这样确保了预留的基地址寄存器资源不会被占用,也就符合了设计目的也即预留了相当于所述快捷外围器件互联桥设备所支持的所有类型的快捷外围器件互联端设备中的最大基地址寄存器空间的大小的基地址寄存器资源。这里,所述快捷外围器件互联桥设备所支持的所有类型的快捷外围器件互联端设备中的最大基地址寄存器空间的大小。例如,所述快捷外围器件互联桥设备所支持的所有类型的快捷外围器件互联端设备包括网络设备类型、存储设备类型还有远程直接内存访问设备类型,假设其中网络设备类型的快捷外围器件互联端设备需要的基地址寄存器空间的大小是
16千兆字节(KB),存储设备类型的快捷外围器件互联端设备需要的基地址寄存器空间的大小是16KB,远程直接内存访问设备类型的快捷外围器件互联端设备需要的基地址寄存器空间的大小是32KB。那么所述快捷外围器件互联桥设备所支持的所有类型的快捷外围器件互联端设备中的最大基地址寄存器空间的大小就是远程直接内存访问设备类型的快捷外围器件互联端设备需要的基地址寄存器空间的大小,也就是32KB。通过限定所述虚拟设备所包含的所述第零号基地址寄存器空间的大小是所述快捷外围器件互联桥设备所支持的所有类型的快捷外围器件互联端设备中的最大基地址寄存器空间的大小,通过创建虚拟设备和为所创建的虚拟设备分配基地址寄存器资源,实现了在该空闲快捷外围器件互联端设备所对应的下行端口下,预留了相当于所述快捷外围器件互联桥设备所支持的所有类型的快捷外围器件互联端设备中的最大基地址寄存器空间的大小的基地址寄存器资源。这样设计的好处,是使得在后续的操作系统阶段,从所述快捷外围器件互联桥设备所支持的所有类型的快捷外围器件互联端设备中,选择任意一种类型的快捷外围器件互联端设备,例如从网络设备类型、存储设备类型还有远程直接内存访问设备类型中任意选择其中一种设备类型,这样被选择的设备或者设备类型,可以通过热插拔方式添加到该空闲快捷外围器件互联端设备所对应的下行端口下,并且确保了所预留的基地址寄存器资源足够支持新添加的设备的运行,从而实现了系统无感知下的热插拔,而且可以灵活适配不同厂商的各种类型的快捷外围器件互联端设备的需求,以及灵活适配不同厂商的各种基本输入输出系统的系统启动流程和扫描快捷外围器件互联拓扑阶段的操作特性。
[0033] 继续参考图1,设置目的地为所述虚拟设备的事务层数据包报文的回复为请求不支持。这意味着,在配置所述快捷外围器件互联桥设备不再挂载快捷外围器件互联端设备到该空闲快捷外围器件互联端设备所对应的下行端口下的基础上,例如通过配置快捷外围器件互联桥设备的状态寄存器从而指示其下不再挂载任何快捷外围器件互联端设备,进一步地,对于收到的所有目的地为所述虚拟设备的事务层数据包报文,需要回复不支持的请求(Unsupported Request)报文,也即设置回复一律为请求不支持。这样设计的好处是,在利用虚拟设备作为占位设备来预留基地址寄存器资源的基础上,为了避免占位设备影响正常数据业务,将目的地为虚拟设备的TLP报文一律回复不支持请求,从而确保了系统稳定性。
[0034] 总之,图1所示的基地址寄存器资源管理方法,面对热插拔导致的基地址寄存器资源预留不足的问题,响应于检测到快捷外围器件互联链路在位,创建虚拟设备作为占位设备来预留基地址寄存器资源,通过限定虚拟设备包含的第零号基地址寄存器空间是首个基地址寄存器空间以及其大小,再通过限定在确定最后一个基地址寄存器空间的配置完成之后才删除虚拟设备,确保了基本输入输出系统扫描及分配基地址寄存器资源的整个流程的完整性,可以适配不同厂商的基本输入输出系统的处理流程,还可以灵活适配不同厂商的各种类型的快捷外围器件互联端设备的需求,实现系统不感知的热插拔功能和确保系统稳定性。
[0035] 图2为本申请实施例提供的一种参考图1所示的基地址寄存器资源管理方法的PCIE桥设备的示意图。如图2所示,宿主机201的根端口203连接快捷外围器件互联桥设备210的上行端口220,通过上行端口220再连接多个下行端口,分别是下行端口A230,下行端口B232,下行端口C234,下行端口D236。这里,快捷外围器件互联桥设备210就是参考图1所示的基地址寄存器资源管理方法的PCIE桥设备。多个下行端口各自的挂载情况是有所不同的。其中,下行端口A230下挂载了网络设备240。下行端口B232下没有挂载任何快捷外围器件互联端设备,因此,下行端口B232下存在空闲快捷外围器件互联端设备,为此,创建虚拟设备A242并挂载虚拟设备A242到下行端口B232下。下行端口C234下挂载了块设备244(block,BLK),这里,块设备244可以是基于虚拟化技术而生成的存储设备,例如基于virtio技术而生成的virtio‑BLK设备。块设备244可以是通过数据处理器(data processing unit,DPU)的嵌入式中央处理器(Embedded CPU,ECPU)侧的模拟器来生成,例如操作系统模拟器(Quick EMUlator,QEMU)。下行端口D236下没有挂载任何快捷外围器件互联端设备,因此,下行端口D236下存在空闲快捷外围器件互联端设备,为此,创建虚拟设备B246并挂载虚拟设备B246到下行端口D236下。可以看出,结合各种虚拟化技术、半虚拟化技术,挂载在快捷外围器件互联桥设备210下的可以是具有物理实体的快捷外围器件互联端设备,也可以是模拟生成的虚拟化设备,也可以是参考图1所示的基地址寄存器资源管理方法来创建的专门用于为空闲快捷外围器件互联端设备预留基地址寄存器资源的虚拟设备A242和虚拟设备B246。
[0036] 图2所示的PCIE桥设备,面对热插拔导致的基地址寄存器资源预留不足的问题,响应于检测到快捷外围器件互联链路在位,创建虚拟设备(虚拟设备A242和虚拟设备B246)作为占位设备来预留基地址寄存器资源,通过限定虚拟设备(虚拟设备A242和虚拟设备B246)包含的第零号基地址寄存器空间是首个基地址寄存器空间以及其大小,再通过限定在确定最后一个基地址寄存器空间的配置完成之后才删除虚拟设备(虚拟设备A242和虚拟设备B246),确保了基本输入输出系统扫描及分配基地址寄存器资源的整个流程的完整性,可以适配不同厂商的基本输入输出系统的处理流程,还可以灵活适配不同厂商的各种类型的快捷外围器件互联端设备的需求,实现系统不感知的热插拔功能和确保系统稳定性。
[0037] 参考图1和图2,在一种可能的实施方式中,所述快捷外围器件互联桥设备所支持的所有类型的快捷外围器件互联端设备包括网络设备类型的快捷外围器件互联端设备、存储设备类型的快捷外围器件互联端设备和远程直接内存访问设备类型的快捷外围器件互联端设备。如此,灵活适配不同厂商的各种类型的快捷外围器件互联端设备的需求。
[0038] 在一种可能的实施方式中,所述快捷外围器件互联桥设备所支持的所有类型的快捷外围器件互联端设备中的最大基地址寄存器空间的大小是基于所述快捷外围器件互联桥设备所支持的所有类型的快捷外围器件互联端设备所需要的最大基地址寄存器资源而确定的。如此,通过限定所述虚拟设备所包含的所述第零号基地址寄存器空间的大小是所述快捷外围器件互联桥设备所支持的所有类型的快捷外围器件互联端设备中的最大基地址寄存器空间的大小,通过创建虚拟设备和为所创建的虚拟设备分配基地址寄存器资源,实现了在该空闲快捷外围器件互联端设备所对应的下行端口下,预留了相当于所述快捷外围器件互联桥设备所支持的所有类型的快捷外围器件互联端设备中的最大基地址寄存器空间的大小的基地址寄存器资源。这样设计的好处,是使得在后续的操作系统阶段,从所述快捷外围器件互联桥设备所支持的所有类型的快捷外围器件互联端设备中,选择任意一种类型的快捷外围器件互联端设备,例如从网络设备类型、存储设备类型还有远程直接内存访问设备类型中任意选择其中一种设备类型,这样被选择的设备或者设备类型,可以通过热插拔方式添加到该空闲快捷外围器件互联端设备所对应的下行端口下,并且确保了所预留的基地址寄存器资源足够支持新添加的设备的运行,从而实现了系统无感知下的热插拔,而且可以灵活适配不同厂商的各种类型的快捷外围器件互联端设备的需求,以及灵活适配不同厂商的各种基本输入输出系统的系统启动流程和扫描快捷外围器件互联拓扑阶段的操作特性。
[0039] 在一种可能的实施方式中,当接收到所述虚拟设备相关联的多个基地址寄存器空间中的最后一个基地址寄存器空间所对应的配置事务层数据包报文时,确定所述虚拟设备相关联的多个基地址寄存器空间中的最后一个基地址寄存器空间的配置完成。如此,为了确保所创建的虚拟设备可以成功地预留设计好的基地址寄存器资源,通过定义所述第零号基地址寄存器空间是所述快捷外围器件互联桥设备相关联的快捷外围器件互联标准所定义的多个基地址寄存器空间中的首个基地址寄存器空间,这样确保了基本输入输出系统在扫描到虚拟设备时必然读取了首个基地址寄存器空间也即第零号基地址寄存器空间(BAR0)的信息,从而分配了相当于所述快捷外围器件互联桥设备所支持的所有类型的快捷外围器件互联端设备中的最大基地址寄存器空间的大小的基地址寄存器资源,然后,通过限定至少在确定所述虚拟设备相关联的多个基地址寄存器空间中的最后一个基地址寄存器空间的配置完成之后,才删除所述虚拟设备,这样意味着在完成所有的多个基地址寄存器空间(例如从BAR0到BAR5)之后,也即确定了最后一个基地址寄存器空间(如BAR5)的配置完成,如此,确保了基本输入输出系统扫描及分配基地址寄存器资源的整个流程的完整性,可以适配不同厂商的基本输入输出系统的处理流程,避免出现基本输入输出系统的异常。
[0040] 在一种可能的实施方式中,所述快捷外围器件互联桥设备相关联的基本输入输出系统,在扫描快捷外围器件互联拓扑阶段,扫描所述快捷外围器件互联桥设备的上行端口所连接的每一个下行端口下所挂载的设备相关联的多个基地址寄存器空间,并且,按照从所述多个基地址寄存器空间的首个基地址寄存器空间到所述多个基地址寄存器空间的最后一个基地址寄存器空间的次序来逐个地分配所述多个基地址寄存器空间各自所需的基地址寄存器资源。创建虚拟设备是发生在扫描快捷外围器件互联拓扑阶段之前,因此,基本输入输出系统会扫描到所创建的虚拟设备并且为虚拟设备分配基地址寄存器资源。这里,因为虚拟设备只包含第零号基地址寄存器空间,因此虚拟设备的其他基地址寄存器空间为空,这意味着基本输入输出系统扫描到虚拟设备所包含的第零号基地址寄存器空间会确定所述第零号基地址寄存器空间的大小并分配相应的基地址寄存器资源,因此为虚拟设备分配的基地址寄存器资源是对应了所述快捷外围器件互联桥设备所支持的所有类型的快捷外围器件互联端设备中的最大基地址寄存器空间的大小。这里,因为所述第零号基地址寄存器空间是所述快捷外围器件互联桥设备相关联的快捷外围器件互联标准所定义的多个基地址寄存器空间中的首个基地址寄存器空间,因此,基本输入输出系统扫描多个基地址寄存器空间时首先扫描到首个基地址寄存器空间也即所述第零号基地址寄存器空间,如此,确保了基本输入输出系统在扫描快捷外围器件互联拓扑阶段为所创建的虚拟设备分配相当于所述第零号基地址寄存器空间的大小的基地址寄存器资源。
[0041] 在一些实施例中,所述虚拟设备在所述基本输入输出系统扫描到该空闲快捷外围器件互联端设备所对应的下行端口之前被创建,所述基本输入输出系统按照所述虚拟设备所包含的所述第零号基地址寄存器空间的大小来分配基地址寄存器资源,并且,所述虚拟设备在所述基本输入输出系统扫描所述虚拟设备相关联的多个基地址寄存器空间中的最后一个基地址寄存器空间之后被删除。至少在确定所述虚拟设备相关联的多个基地址寄存器空间中的最后一个基地址寄存器空间的配置完成之后,这意味着基本输入输出系统已经扫描了所述虚拟设备相关联的多个基地址寄存器空间,并且扫描到了最后一个基地址寄存器空间并配置完成。因此,结合上述的所述第零号基地址寄存器空间是所述快捷外围器件互联桥设备相关联的快捷外围器件互联标准所定义的多个基地址寄存器空间中的首个基地址寄存器空间,这里要求在确定所述虚拟设备相关联的多个基地址寄存器空间中的最后一个基地址寄存器空间的配置完成之后,如此,确保了基本输入输出系统扫描全部的多个基地址寄存器空间,这样有助于灵活适配不同厂商的各种类型的快捷外围器件互联端设备的需求,也有助于适配不同厂商的各种基本输入输出系统的系统启动流程和扫描快捷外围器件互联拓扑阶段的操作特性。
[0042] 在一种可能的实施方式中,所述基地址寄存器资源管理方法还包括:当所述快捷外围器件互联桥设备的上行端口所连接的每一个下行端口下均不存在空闲快捷外围器件互联端设备时,不创建所述虚拟设备。通过遍历所述快捷外围器件互联桥设备的上行端口所连接的每一个下行端口,可以确定每一个下行端口下是否挂载了快捷外围器件互联端设备,如果没有挂载任何快捷外围器件互联端设备,则意味着存在空闲快捷外围器件互联端设备,从而可以通过所述快捷外围器件互联桥设备相关联的空闲快捷外围器件互联端设备集合来记录所有的空闲快捷外围器件互联端设备,用于后续的预留基地址寄存器资源的流程。如果在遍历所述快捷外围器件互联桥设备的上行端口所连接的每一个下行端口之后,没有检测到任何空闲快捷外围器件互联端设备,这说明所有的下行端口下均挂载了快捷外围器件互联端设备,那么就不需要继续执行后续的预留基地址寄存器资源的流程。如此,有助于适配复杂多变的应用环境。
[0043] 在一种可能的实施方式中,所述快捷外围器件互联标准所定义的多个基地址寄存器空间依次是所述第零号基地址寄存器空间,第一号基地址寄存器空间,第二号基地址寄存器空间,第三号基地址寄存器空间,第四号基地址寄存器空间,以及,第五号基地址寄存器空间,其中,所述第五号基地址寄存器空间是所述快捷外围器件互联标准所定义的多个基地址寄存器空间中的最后一个基地址寄存器空间。如此,有助于灵活适配快捷外围器件互联标准的具体定义。
[0044] 在一种可能的实施方式中,当所述虚拟设备相关联的多个基地址寄存器空间中的最后一个基地址寄存器空间的配置完成时,该空闲快捷外围器件互联端设备所对应的下行端口被预留基于所述虚拟设备所包含的所述第零号基地址寄存器空间的大小而确定的基地址寄存器资源,以便用于该空闲快捷外围器件互联端设备所对应的下行端口下的设备热插拔。如此,实现了系统无感知下的热插拔,而且可以灵活适配不同厂商的各种类型的快捷外围器件互联端设备的需求,以及灵活适配不同厂商的各种基本输入输出系统的系统启动流程和扫描快捷外围器件互联拓扑阶段的操作特性。
[0045] 在一些实施例中,所述虚拟设备在所述快捷外围器件互联桥设备相关联的基本输入输出系统扫描快捷外围器件互联拓扑阶段之前被创建,并且,所述虚拟设备至少在操作系统阶段之前被删除,以及,在所述操作系统阶段,操作系统不感知该空闲快捷外围器件互联端设备所对应的下行端口下的设备热插拔。如此,实现系统不感知的热插拔功能,并且可以灵活适配不同厂商的各种类型的快捷外围器件互联端设备的需求,以及灵活适配不同厂商的各种基本输入输出系统的系统启动流程和扫描快捷外围器件互联拓扑阶段的操作特性。
[0046] 在一种可能的实施方式中,所述基地址寄存器资源管理方法还包括:响应于检测到所述快捷外围器件互联链路不在位,删除所述空闲快捷外围器件互联端设备集合中的每一个空闲快捷外围器件互联端设备所对应的下行端口下的虚拟设备。如此,检测到快捷外围器件互联链路也即PCIE链路不在位了,例如宿主机关机了,则将虚拟设备都删除掉,这样有助于避免发生系统异常。一般情况下,所创建的虚拟设备,在确定所述虚拟设备相关联的多个基地址寄存器空间中的最后一个基地址寄存器空间的配置完成之后,就应该被删除了。通过额外的检测到所述快捷外围器件互联链路不在位时,删除所有虚拟设备,有助于避免系统异常,提高了系统稳定性。
[0047] 在一种可能的实施方式中,所述快捷外围器件互联桥设备和挂载在所述快捷外围器件互联桥设备下的快捷外围器件互联端设备均由数据处理器的嵌入式中央处理器侧的模拟器来模拟生成。可以是通过数据处理器(data processing unit,DPU)的嵌入式中央处理器(Embedded CPU,ECPU)侧的模拟器来生成,例如操作系统模拟器(Quick EMUlator,QEMU)。如此,可以适配各种虚拟化、半虚拟化技术以及基于DPU的系统。
[0048] 在一种可能的实施方式中,当所述快捷外围器件互联桥设备的上行端口所连接的任一下行端口下没有挂载任何快捷外围器件互联端设备时,确定所述任一下行端口下存在空闲快捷外围器件互联端设备。如此,通过遍历所述快捷外围器件互联桥设备的上行端口所连接的每一个下行端口,可以确定每一个下行端口下是否挂载了快捷外围器件互联端设备,如果没有挂载任何快捷外围器件互联端设备,则意味着存在空闲快捷外围器件互联端设备,从而可以通过所述快捷外围器件互联桥设备相关联的空闲快捷外围器件互联端设备集合来记录所有的空闲快捷外围器件互联端设备,用于后续的预留基地址寄存器资源的流程。如果在遍历所述快捷外围器件互联桥设备的上行端口所连接的每一个下行端口之后,没有检测到任何空闲快捷外围器件互联端设备,这说明所有的下行端口下均挂载了快捷外围器件互联端设备,那么就不需要继续执行后续的预留基地址寄存器资源的流程。
[0049] 图3是本申请实施例提供的一种计算设备的结构示意图,该计算设备300包括:一个或者多个处理器310、通信接口320以及存储器330。所述处理器310、通信接口320以及存储器330通过总线340相互连接。可选地,该计算设备300还可以包括输入/输出接口350,输入/输出接口350连接有输入/输出设备,用于接收用户设置的参数等。该计算设备300能够用于实现上述的本申请实施例中设备实施例或者系统实施例的部分或者全部功能;处理器310还能够用于实现上述的本申请实施例中方法实施例的部分或者全部操作步骤。例如,该计算设备300执行各种操作的具体实现可参照上述实施例中的具体细节,如处理器310用于执行上述方法实施例中部分或者全部步骤或者上述方法实施例中的部分或者全部操作。再例如,本申请实施例中,计算设备300可用于实现上述装置实施例中一个或者多个部件的部分或者全部功能,此外通信接口320具体可用于为了实现这些装置、部件的功能所必须的通讯功能等,以及处理器310具体可用于为了实现这些装置、部件的功能所必须的处理功能等。
[0050] 应当理解的是,图3的计算设备300可以包括一个或者多个处理器310,并且多个处理器310可以按照并行化连接方式、串行化连接方式、串并行连接方式或者任意连接方式来协同提供处理能力,或者多个处理器310可以构成处理器序列或者处理器阵列,或者多个处理器310之间可以分成主处理器和辅助处理器,或者多个处理器310之间可以具有不同的架构如采用异构计算架构。另外,图3所示的计算设备300,相关的结构性描述及功能性描述是示例性且非限制性的。在一些示例性实施例中,计算设备300可以包括比图3所示的更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。
[0051] 处理器310可以有多种具体实现形式,例如处理器310可以包括中央处理器(central processing unit,CPU)、图形处理器(graphic processing unit,GPU)、神经网络处理器(neural‑network processing unit,NPU)、张量处理器(tensor processing unit,TPU)或数据处理器(data processing unit,DPU)等一种或多种的组合,本申请实施例不做具体限定。处理器310还可以是单核处理器或多核处理器。处理器310可以由CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application‑specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field‑programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。处理器310也可以单独采用内置处理逻辑的逻辑器件来实现,例如FPGA或数字信号处理器(digital signal processor,DSP)等。通信接口320可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、局域互联网络(local interconnect network,LIN)等,无线接口可以是蜂窝网络接口或使用无线局域网接口等。
[0052] 存储器330可以是非易失性存储器,例如,只读存储器(read‑only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。存储器330也可以是易失性存储器,易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。存储器330也可用于存储程序代码和数据,以便于处理器310调用存储器330中存储的程序代码执行上述方法实施例中的部分或者全部操作步骤,或者执行上述设备实施例中的相应功能。此外,计算设备300可能包含相比于图3展示的更多或者更少的组件,或者有不同的组件配置方式。
[0053] 总线340可以是快捷外围器件互联(peripheral component interconnect express,PCIE)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。总线340可以分为地址总线、数据总线、控制总线等。总线340除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0054] 本申请实施例提供的方法和设备是基于同一发明构思的,由于方法及设备解决问题的原理相似,因此方法与设备的实施例、实施方式、示例或实现方式可以相互参见,其中重复之处不再赘述。本申请实施例还提供一种系统,该系统包括多个计算设备,每个计算设备的结构可以参照上述所描述的计算设备的结构。该系统可实现的功能或者操作可以参照上述方法实施例中的具体实现步骤和/或上述装置实施例中所描述的具体功能,在此不再赘述。
[0055] 本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机设备(如一个或者多个处理器)上运行时可以实现上述方法实施例中的方法步骤。所述计算机可读存储介质的处理器在执行上述方法步骤的具体实现可参照上述方法实施例中所描述的具体操作和/或上述装置实施例中所描述的具体功能,在此不再赘述。
[0056] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本申请实施例可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(如软盘、硬盘、磁带)、光介质、或者半导体介质。半导体介质可以是固态硬盘,也可以是随机存取存储器,闪存,只读存储器,可擦可编程只读存储器,电可擦可编程只读存储器,寄存器或任何其他形式的合适存储介质。
[0057] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0058] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并或删减;本申请实施例系统中的模块可以根据实际需要进行划分、合并或删减。如果本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页 第1页 第2页 第3页