用于主机适应可配置集成电路管芯的角色变化的方法和装置与流程

文档序号:21408225发布日期:2020-07-07 14:42阅读:142来源:国知局
用于主机适应可配置集成电路管芯的角色变化的方法和装置与流程

本公开涉及一种集成电路管芯,其容纳在多芯片封装中或安装在接口卡上并且可连接到接口总线。更具体地,本公开涉及可配置的集成电路管芯,其可以向外围组件互连快速总线呈现多个设备角色,其中,总线适应设备角色的变化。



背景技术:

可配置集成电路管芯可以被配置为实现多个不同的设备,其中,每个设备具有不同的设备角色。在不同时间,可配置集成电路管芯可以向连接的总线呈现不同设备的不同设备角色。不可动态地重新配置为与不同设备通信的连接的总线可能限制可配置集成电路管芯可以被配置为在连接的总线上实现的设备类型。需要新的可配置集成电路管芯和总线结构,其允许动态地重新配置总线结构以与可配置集成电路管芯可以向总线呈现的变化的设备进行通信。

附图说明

图1示出了在实施例中包括可配置ic管芯(例如,fpga)的主机。

图2示出了在另一实施例中包括可配置ic管芯(例如,fpga)的主机。

图3示出了在另一实施例中包括可配置ic管芯(例如,fpga)的主机。

图4示出了在另一实施例中包括可配置ic管芯(例如,fpga)的主机。

图5示出了实施例中的可配置ic管芯(例如,fpga)。

图6是在没有主机重启的情况下改变可配置ic管芯的角色并改变主机设置以识别角色改变的操作方法的流程图。

图7示出了在实施例中包括可配置ic管芯(例如,fpga)的主机。

图8是在实施例中在主机中为可配置ic管芯的电路设备预留存储器的操作方法的流程图,其中,电路设备具有大于可配置ic管芯(例如,fpga)的其他电路设备的存储器要求。

图9是在另一实施例中在主机存储器中为可配置ic管芯(例如,fpga)的虚设电路设备预留存储器的操作方法的流程图。

图10是在另一实施例中在可配置ic管芯(例如,fpga)的主机存储器中预留存储器的操作方法的流程图。

图11示出了在实施例中的主机操作系统的元素以及从主机操作系统的元素到可配置ic管芯的元素的通信链路。

图12示出了在另一实施例中的主机操作系统的元素以及将主机操作系统的元素链接到可配置ic管芯的元素的通信链路。

图13示出了在另一实施例中的主机操作系统的元素以及将主机操作系统的元素链接到可配置ic管芯的元素的通信链路。

图14示出了在另一实施例中的主机操作系统的元素以及将主机操作系统的元素链接到可配置ic管芯的元素的通信链路。

图15示出了实施例中的数据系统。

图16示出了另一实施例中的数据系统。

图17是在实施例中可配置ic管芯的操作方法的流程图。

图18是在实施例中对系统进行操作的方法的流程图。

具体实施方式

通常被封装为系统级封装(sip)设备的可配置集成电路(ic)管芯继续推动ic市场的发展。电路仿真市场、asic原型制造市场和数据中心市场是可配置ic管芯推动的一些正在发展的ic市场。针对电路仿真市场的可配置ic管芯通常包括许多被封装为sip的可配置ic管芯,以促进几乎无限数量的仿真电路,其中,单个可配置ic管芯可能无法提供足够的可编程结构来实现电路仿真。针对asic原型制造市场的可配置ic管芯通常包括许多被封装为sip的可配置ic管芯,以实现各种asic。针对数据中心市场的可配置ic管芯通常包括许多被封装为sip的可配置的ic,以促进数据中心的加速,增加处理能力,添加网络和虚拟网络能力,添加非易失性存储器快速能力,或者其他能力。

这些sip设备中包括的可配置ic管芯可以包括现场可编程门阵列(fpga)、可编程逻辑设备(pld)、复杂可编程逻辑设备(cpld)、可编程逻辑阵列(pla)、可配置逻辑阵列(cla)、存储器、传输管芯和其他ic。可配置ic管芯通常包括多个可配置逻辑块,其可以被配置为实现各种电路。逻辑块通过可配置的互连结构进行互连,所述可配置的互连结构可以被配置为以几乎任何期望的配置互连逻辑块以提供几乎任何期望的电路。

可配置ic管芯可以被配置为实现多个电路,其中,两个或更多个电路具有不同的设备个性(personality)。例如,fpga设备的可编程结构可以配置有许多具有不同设备个性的电路。电路可以独立操作,并且fpga可以动态地将在fpga上操作的电路从在fpga上操作的第一电路改变为在fpga上操作的第二电路。从在fpga上操作的第一电路到在fpga上操作的第二电路的转换可以在fpga的软件控制下发生。

例如,fpga可以被配置为用作非易失性存储器快速(nvme)控制器、网络接口卡(nic)、数据压缩电路、数据解压缩电路、数据加密电路、数据解密电路、非易失性存储器主机控制器接口(nvmhcis)或其他电路。

每个电路的每个设备角色(persona)可以包括识别设备角色的一个或多个设备角色信息。设备角色信息可以包括供应商标识符、设备标识符、修订标识符、编程接口标识符、类代码标识符、基类代码、子系统供应商标识符、子系统子类代码、诸如sr-iov之类的特定pcie能力的标识符、地址转换服务(ats)、进程地址空间id(pasid)、页面请求接口(pri)、其他标识符或这些标识符的任意组合的信息。设备角色可以被存储在fpga中。对设备角色信息的改变可以包括添加、移除或修改信息,例如添加、移除或修改特定pcie能力,所述特定pcie能力例如sr-iov、ats、pasid、pri或其他标识符。

图1示出了在实施例中包括可配置ic管芯40(例如,fpga)的主机5。主机5可以包括一个或多个处理器10、存储器15、存储器20、网络接口控制器(nic)25、总线系统30(例如,pcie总线)、pcie卡插槽以及支持pcie总线的pcie电路以及其他组件。一个或多个处理器可以包括中央处理单元(cpu)、微处理器、图形处理单元(gpu)、数字信号处理器(dsp)、专用集成电路(asic)、视觉处理单元(vpu)、图像阵列处理器(simd)、神经网络处理器、人工智能处理器、加密加速器(仅举几例)。

存储器15可以存储主机操作系统16、其他主机系统软件或二者。存储器15和20可以包括一种或多种类型的存储器,例如ram、闪存、磁盘存储器(例如,磁存储器、光存储器或其他)、其他类型的存储器,或者这些存储器类型的任意组合。

主机5可以是聚合的服务器或解聚的服务器。聚合的服务器可以在单个外壳中、在机架的单个托架(sled)上、在单个插入卡(例如,单个pcie卡)上、在单个主板上、或其他聚合的配置。解聚的服务器可以包括分布式组件,例如分布在外壳中的一个或多个电路板上、机架中的一个或多个托架上、不同机架中的一个或多个托架上、不同插入卡上、不同数据中心中的组件,或者可以具有其他组件分布。因此,虽然图1概括地示出了主机5是聚合的设备,但是图1中主机的图示表示具体实施例。

可配置ic管芯40可以安装在卡35上,例如pcie卡。卡可以包括一个或多个其他组件,例如处理器45、存储器子系统50、输入-输出(io)系统52、其他组件或这些组件的任意组合。卡可以插入主机的电路板之一上的卡槽中,例如pcie卡槽。

在实施例中,可配置ic管芯被配置(例如,编程)有电路设备中的两个或更多个,所述电路设备例如电路设备65a、65b……65n,其中,每个电路设备具有不同的角色。每个电路设备可以是完全兼容的pcie设备并且具有唯一的pcie身份。因此,电路设备可以访问和使用pcie属性,例如pcie设备驱动程序、单根输入-输出虚拟化(sr-iov)、现有pcie类、其他pcie属性或这些属性的任意组合。

如果可配置ic管芯是fpga,则电路设备可以在fpga的核心结构58中。fpga可以在不同时间操作这些电路设备。

可配置ic管芯包括硬件管理组件80和可重新配置的部分重配置(pr)插槽85。硬件管理组件可以是pcie物理功能、网络接口管理组件或其他管理组件。可重新配置的pr插槽可以是pcie物理功能、网络接口管理组件或另一可重新配置的插槽。可重新配置的pr插槽可由硬件管理组件重新配置。

可配置ic管芯的电路设备被指派给可重新配置的pr插槽85。例如,电路设备65a可以被指派给可重新配置的pr插槽,电路设备65b可以被指派给可重新配置的pr插槽,并且电路设备65n可以被指派给可重新配置的pr插槽。也就是说,每个电路设备被编程在相同的可重新配置的pr插槽之上。当电路设备在可配置ic管芯上操作时,可重新配置的pr插槽用电路设备之一的设备角色来编程或重新编程。

在可配置ic管芯是fpga的实施例中,硬件管理组件、可重新配置的pr插槽或二者可以在fpga的核心结构中。在一个实施例中,硬件管理组件的一个或多个组件是fpga外围设备55中的硬化组件。

可配置ic管芯40包括静态端口95。静态端口连接在硬件管理组件80和io块60(例如,硬化的fpgaio块)之间,并且连接在可重新配置的pr插槽85和io块之间。静态端口可以是主机附接的pcie物理功能、pcie交换机(switch)、网络接口端点、平台管理链路或其他类型的端口。主机附接的pcie物理功能可以是具有热插拔功能的软交换机。静态端口可以通过io块60与主机通信。io块可以在可配置ic管芯外围设备55(例如,fpga外围设备)中。

在实施例中,硬件管理组件的物理功能可以接收用于将在可配置ic管芯上操作的电路设备从第一电路设备切换到第二电路设备的请求。例如,在主机在数据中心中操作的实施例中,可配置ic管芯可以操作作为加密加速器的第一电路设备,并且可以从客户端设备接收用于操作第二电路设备的请求,所述第二电路设备是网络接口控制器(nic)、非易失性存储器快速(nvme)控制器或其他电路设备。

在硬件管理组件接收到用于将在可配置ic管芯上操作的电路设备从第一电路设备切换到第二电路设备的请求之后,硬件管理组件向具有热插拔功能的软交换机95发出请求以向操作系统、bios、虚拟机管理器(vmm)或在主机上操作以重新枚举可配置ic管芯的其他软件发出重新枚举请求。重新枚举请求可以包括由具有热插拔根据的软交换机95向操作系统、vmm、bios或在主机上操作的其他软件发出的用于针对正被重新配置为从第一电路设备到第二电路设备的物理功能执行热拔出事件的请求。对于热拔出事件,操作系统、bios、vmm或在主机上操作的其他软件,卸载在主机上操作的用于第一电路设备的驱动程序,移除用于第一电路设备的驱动程序参数,或者对第一电路设备进行其他修改。

在硬件管理组件请求具有热插拔功能的软交换机调用热拔出事件之后,硬件管理组件可以改变电路逻辑以表示第二电路设备的功能,并且然后改变识别功能的配置设置。

此后,硬件管理组件可以改变可重新配置的pr插槽的物理功能。也就是说,硬件管理组件可以控制可重新配置的pr插槽以将可重新配置的pr插槽向主机操作系统、bios、vmm或在主机上操作的其他软件呈现的物理功能。可重新配置的pr插槽可以将呈现的物理功能从用于第一电路设备的物理功能切换到用于第二电路设备的物理功能。例如,可重新配置的pr插槽的物理功能可以从用于后备加速器(lookasideaccelerator)的物理功能切换到用于nic、nvme控制器或另一电路设备的物理功能。通常,可配置ic管芯的一个物理功能(例如,用于硬件管理组件)改变可配置ic管芯的另一物理功能(例如,用于可重新配置的pr插槽)的配置空间。由此,可配置ic管芯的pcie身份(例如,角色)可以从用于第一电路设备的pcie身份(例如,可配置ic管芯的第一角色)切换到用于第二电路设备的pcie身份(例如,可配置ic管芯的第二角色)。

在硬件管理组件改变由可重新配置的pr插槽呈现的物理功能之后,硬件管理组件可以请求物理功能配置空间改变以表示对第二电路设备的改变。

重新枚举请求还可以包括硬件管理组件对具有热插拔功能的软交换机95的用于调用热插入事件的请求。此后,具有热插拔功能的软交换机可以请求操作系统、vmm、bios或在主机上操作的其他软件执行热插入事件。响应于用于执行热插入事件的请求,操作系统、bios、vmm或在主机上操作的其他软件将重新枚举用于第二电路设备的可重新配置的pr插槽的物理功能。

在重新枚举可配置ic管芯期间,第二电路设备的第二pcie身份(例如,第二角色)将由可重新配置的pr插槽向操作系统、bios、vmm或在主机上操作的其他软件暴露。操作系统、bios、vmm或在主机上操作的其他软件将取回用于第二电路的第二pcie身份,例如供应商标识符、设备标识符、修订标识符、编程接口标识符、类代码标识符、基类代码、子系统供应商标识符、子系统子类代码、其他标识符或这些标识符的任意组合。操作系统、bios、vmm或在主机上操作的其他软件将为第二电路安装和配置任何必要的驱动程序。此后,可配置ic管芯的第二电路设备可以在主机中用作兼容的pcie设备。在各种实施例中,可以改变前述操作顺序。例如,硬件管理组件可以在请求具有热插拔功能的软交换机请求热拔出事件之前对可重新配置的pr插槽进行重新配置。

图2示出了在实施例中包括可配置ic管芯240(例如,fpga)的主机205。主机205类似于主机5,但不同之处在于热插拔交换机是可配置ic管芯外部的硬件交换机97。热插拔交换机97可以是具有热插拔功能的分立pcie交换机。用于热插拔交换机的管芯可以在卡35上,所述卡35可以是pcie卡。替代地,用于热插拔交换机的管芯可以在主机中,例如在主机主板上,在处理器管芯上,在不同的卡上,例如不同的pcie卡。

主机205可以被配置为与主机5类似地操作,以将在可配置ic管芯上操作的电路设备从具有第一角色(例如,第一pcie身份)的第一电路设备切换到具有第二角色(例如,第二pcie身份)的第二电路设备,所述第二角色可以与第一角色部分地或完全地不同。

具体地,硬件管理组件的物理功能可以接收用于将在可配置ic管芯上操作的电路设备从第一电路设备切换到第二电路设备的请求。

此后,硬件管理组件可以向具有热插拔功能的分立交换机97发出请求,以向操作系统、bios、vmm或在主机上操作的其他软件发出重新枚举请求以重新枚举可配置的ic管芯。重新枚举请求可以包括由具有热插拔功能的分立交换机97向操作系统、bios、vmm或在主机上操作的其他软件发出的用于执行卡35的热拔出事件的请求。对于热拔出事件,操作系统、bios、vmm或在主机上操作的其他软件可以卸载在主机上操作的用于第一电路设备的驱动程序,移除用于第一电路设备的驱动程序参数,或者针对第一电路设备进行其他修改。

在硬件管理组件请求热插拔分立交换机调用热拔出事件之后,硬件管理组件可以改变电路逻辑以表示第二电路设备的功能,并且然后改变识别功能的配置设置。

此后,硬件管理组件的物理功能可以改变可重新配置的pr插槽的物理功能。也就是说,硬件管理组件可以控制可重新配置的pr插槽以将由可重新配置的pr插槽呈现的物理功能从用于第一电路设备的物理功能切换到用于第二电路设备的物理功能。

在硬件管理组件改变由可重新配置的pr插槽呈现的物理功能之后,硬件管理组件可以请求物理功能配置空间改变以表示对第二电路设备的改变。

重新枚举请求还可以包括由热插拔分立交换机向操作系统、bios、vmm或在主机上操作的其他软件发出的用于执行热插入事件的请求。响应于用于执行热插入事件的请求,操作系统、bios、vmm或在主机上操作的其他软件可以重新枚举用于第二电路设备的可重新配置的pr插槽。在重新枚举期间,第二电路设备的第二pcie身份(例如,第二角色)将由可重新配置的pr插槽向操作系统、bios、vmm或在主机上操作的其他软件暴露。操作系统、bios、vmm或在主机上操作的其他软件将取回用于第二电路的第二pcie身份,例如供应商标识符、设备标识符、修订标识符、编程接口标识符、类代码标识符、基类代码、子系统供应商标识符、子系统子类代码、其他标识符或这些标识符的任意组合。操作系统、bios、vmm或在主机上操作的其他软件将为第二电路安装和配置任何必要的驱动程序。此后,可配置ic管芯的第二电路设备可以在主机中用作兼容的pcie设备。

图3示出了在实施例中包括可配置ic管芯340(例如,fpga)的主机305。主机305类似于主机5和205,但不同之处在于可配置ic管芯305的外围设备55包括硬pcie端点块399。硬pcie端点块399是位于可配置ic管芯的外围设备55中的硬化的电路。硬化的pcie端点块399位于硬件管理组件80和io块60之间。硬化的pcie端点块399也位于可重新配置的pr插槽85的电路设备和io块60之间。可配置的ic管芯也包括部分重配置(pr)控制块94,其位于外围设备55中并且耦合到硬件管理组件或可配置ic管芯的另一元素。硬化的pcie端点块允许可配置的ic管芯启动在主机的主存储器和pcie端点块之间的数据传输,因此,从主机的其他部分(例如,处理核心)移除一些处理。pcie端点块还可以暴露用于硬件管理组件和可重新配置的pr插槽的物理功能。pr块允许可配置ic管芯的一个或多个部分保持可操作,同时可配置ic管芯的另一部分的功能被改变。当一个电路设备被去激活并且另一电路设备被激活时,pr块允许可配置ic管芯在可配置ic管芯的重新配置期间保持通信链路处于活动状态。

主机305可以以其他方式与上述用于改变设备角色和重新枚举的主机5和205类似地操作,使得当可配置ic管芯从第一电路设备的操作切换到第二电路设备时,第二电路设备可以在可配置ic管芯上操作。因此,将重新配置主机以识别第二电路设备的设备角色。

图4示出了在实施例中包括可配置ic管芯440(例如,fpga)的主机405。主机405类似于主机5、205和305,但不同之处在于主机操作系统16、bios、vmm或在主机上操作的其他软件包括位于存储器15中的热插拔仿真软件17。插件仿真软件适于执行模拟热拔出事件、模拟热插入事件或二者。热插拔仿真软件可以基于接收到的请求此类事件的一个或多个信号来触发热拔出事件、热插入事件或二者。可以从客户端系统、可配置ic管芯的管理模块或其他硬件或软件接收针对事件的请求。

在热拔出事件期间,热插拔仿真软件可以清除用于操作系统、bios、vmm或在主机上操作的其他软件的一个或多个存储器堆栈,其中,存储器堆栈包含在可配置ic管芯上正被禁用的第一电路设备以及在可配置ic管芯上正被启用的第二电路设备的信息。

此后,在模拟的热插入事件期间,热插拔仿真软件可以重新枚举pcie卡以发现由可配置ic管芯的可重新配置的pr插槽暴露的任何电路设备。在热插拔仿真软件确定第二电路设备的pcie身份之后,热插拔仿真软件可以为第二电路设备加载任何适当的驱动程序。此后,可配置ic管芯的第二电路设备可以在主机中用作兼容的pcie设备。

图5示出了实施例中的可配置ic管芯540。可配置ic管芯可以是fpga或另一可配置设备。可配置ic管芯540类似于上述可配置ic管芯40、240、340和440,但不同之处在于可配置ic管芯540包括第一可重新配置的pr插槽85a和至少第二可重新配置的pr插槽85n。在一些实施例中,可配置ic管芯包括多于两个可重新配置的pr插槽。

可配置ic管芯包括第一电路设备65a,例如nic,其被指派给第一可重新配置的pr插槽的插槽0。第一电路设备可以包括一个或多个端口。在实施例中,第一电路设备包括被标记为端口0的第一端口和被标记为端口1的第二端口。每个端口可以被指派给虚拟功能。在实施例中,端口0被指派给标记为vf0的第一虚拟功能,并且端口1被指派给标记为vf1的第二虚拟功能1。第一和第二虚拟功能可以是pcie虚拟功能。

可以将第一电路设备指派给标记为pf1的第二物理功能。第二物理功能可以是pcie物理功能,其将第一电路设备的pcie身份呈现给操作系统、bios、vmm或在主机上操作的其他软件。当枚举可配置ic管芯时以及当例如在硬件管理组件的请求下重新枚举可配置ic管芯时,可以呈现pcie身份。第二物理功能可以例如基于由第二物理功能接收的分组中的信息将分组路由到第一和第二虚拟功能。分组可以通过第一和第二虚拟功能存储在虚拟存储器堆栈中,直到取回分组以供第一电路设备使用。

可配置ic管芯包括第二电路设备65n,例如nvme,其被指派给第二可重新配置的pr插槽85n的插槽1。第二电路设备可以被指派给标记为pf2的第三物理功能。第三物理功能可以是pcie物理功能,其将第二电路设备的pcie身份呈现给操作系统、bios、vmm或在主机上操作的其他软件。当枚举可配置ic管芯时以及当例如在硬件管理组件的请求下重新枚举可配置ic管芯时,可以呈现pcie身份。

可以将硬件管理组件80指派给标记为pf0的第一物理功能。第一物理功能可以是pcie物理功能,其将硬件管理组件的pcie身份呈现给操作系统、bios、vmm或在主机上操作的其他软件。当枚举可配置ic管芯时,可以呈现pcie身份。硬件管理组件可以重新配置pf1、pf2或二者,使得这些物理功能中的一个或两个可以呈现可配置ic管芯的电路设备的设备身份的变化。硬件管理组件可以如上所述地重新配置可配置ic管芯,使得各种电路设备可以在可配置ic管芯上操作。硬件管理组件还可以经由对具有热插拔功能的软交换机、具有热插拔功能的分立pcie交换机或在主机上操作的热插拔仿真软件的请求来发起对pf1、pf2或二者的重新枚举。

图6是使用热拔出事件和热插入事件中的一个或两个来改变可配置ic管芯的角色并且改变主机设置以识别角色变化的方法的流程图。由此,可以在没有主机重启的情况下发生角色变化。该流程图表示一个示例实施例。在不偏离实施例的范围的情况下,可以向流程图添加、从中移除或在其中组合步骤。

在600处,将角色改变请求发送到可配置ic管芯40的硬件管理组件80。可以从其他主机5组件向硬件管理组件发送角色改变请求。如果客户端系统例如请求主机资源,其中,主机资源是可配置ic管芯被配置为提供的电路设备之一(例如,电路设备65a、65b……65n之一),则可以进行该请求,并且所请求的主机资源不是在发出针对主机资源的请求时在可配置ic管芯上操作的有源电路设备。

在605处,硬件管理组件接收角色改变请求并且基于所接收的请求,此后请求操作系统、bios、vmm或在主机上操作的其他软件的主机重新枚举组件移除用于第一电路设备的一个或多个现有功能。

基于所接收的用于移除用于第一电路设备的一个或多个现有功能的请求,主机重新枚举组件触发操作系统、bios、vmm或在主机上操作的其他软件以通过针对卡35引起拔出事件来移除用于第一电路设备的一个或多个功能。拔出事件有时被称为热拔出事件。在实施例中,基于由交换机从硬件管理组件接收的请求,由具有热插拔功能的分立pcie交换机195发出针对硬件拔出事件的请求。

在另一实施例中,基于由交换机从硬件管理组件接收的请求,由具有热插拔功能的软pcie交换机95发出针对软件拔出事件的请求。在另一实施例中,硬件拔出事件由主机操作系统、bios、vmm或在主机上操作的其他软件的热插拔仿真软件17模拟,其中,操作系统、bios、vmm或在主机上操作的其他软件的主机重新枚举组件触发操作系统、bios、vmm或在主机上操作的其他软件中的拔出事件。

在610处,基于硬件管理组件接收到角色改变请求,硬件管理组件改变可配置ic管芯的角色。硬件管理组件可以通过修改可配置ic管芯的一个或多个物理功能(例如,pcie物理功能)来改变可配置ic管芯的角色。例如,硬件管理组件可以通过修改可重新配置的pr插槽的物理功能来改变可配置ic管芯的角色。也就是说,可配置ic管芯的一个物理功能(例如,硬件管理组件的物理功能)改变可配置ic管芯的另一物理功能(例如,可重新配置的pr插槽的物理功能),使得可配置的ic管芯的pcie身份被改变。更具体地,可重新配置的pr插槽的pcie身份可以从用于第一电路设备的第一pcie身份改变为用于第二电路设备的第二pcie身份。

除了改变可重新配置的pr插槽的物理功能之外,硬件管理组件还可以基于对角色请求的改变的接收来对可配置ic管芯进行其他改变。例如,在硬件管理组件请求热拔出事件之后,硬件管理组件可以改变电路逻辑以表示第二电路设备的功能,并且然后改变识别功能的配置设置。另外,在硬件管理组件改变由可重新配置的pr插槽呈现的物理功能之后,硬件管理组件可以请求物理功能配置空间改变以表示对第二电路设备的改变。

第一和第二电路设备的pcie身份可以具有一个或多个相同的身份元素。因此,当第一pcie身份被改变为第二pcie身份时,可以不改变身份元素中的一个或多个。替代地,如果第一和第二电路设备的pcie身份不具有任何相同的身份元素,则当第一pcie身份被改变为第二pcie身份时,可以改变pcie身份的每个身份元素。pcie身份可以包括身份元素,例如供应商标识符、设备标识符、修订标识符、编程接口标识符、类代码标识符、基类代码、子系统供应商标识符、子系统子类代码、特定pcie功能(例如,sr-iov、地址转换服务(ats)、进程地址空间id(pasid)、页面请求接口(pri))的标识符、其他标识符或这些标识符的任意组合。对设备角色信息的改变可以包括添加、移除或修改信息,例如添加、移除或修改特定pcie功能,例如sr-iov、ats、pasid、pri、其他标识符或这些标识符的任意组合。

在615处,硬件管理组件向操作系统、bios、vmm或在主机上操作的其他软件发送请求,以供主机重新枚举组件重新扫描(即,重新枚举)pcie总线以发现由可配置ic管芯的可重新配置的pr插槽呈现的物理功能。在一个实施例中,还重新扫描硬件管理组件。在另一实施例中,不重新扫描硬件管理组件。

基于所接收的请求,操作系统、bios、vmm或在主机上操作的其他软件的主机重新枚举组件触发主机操作系统、bios、vmm或在主机上操作的其他软件重新扫描pcie总线。由操作系统、bios、vmm或在主机上操作的其他软件进行的重新扫描可以使用硬件插入事件或者可以使用热插拔仿真软件17来模拟硬件插入事件。

在620处,当操作系统、bios、vmm或在主机上操作的其他软件重新扫描pcie总线时,可重新配置的pr插槽的物理功能暴露第二电路设备的pcie身份。当操作系统、bios、vmm或在主机上操作的其他软件重新扫描pcie总线时,硬件管理组件的物理功能还将其pcie身份向操作系统、bios、vmm或在主机上操作的其他软件暴露。由此,操作系统、bios、vmm或在主机上操作的其他软件发现用于第二电路设备的物理功能,并且发现用于第二电路设备的pcie身份。然后,操作系统、bios、vmm或在主机上操作的其他软件可以从存储器取回用于第二电路设备的任何驱动程序,并且为驱动程序配置一个或多个设置。

在625处,第二电路设备变得可在可配置ic管芯上和主机上操作。

图7示出了在实施例中包括可配置ic管芯740(例如,fpga)的主机705。主机705类似于主机5,但不同之处在于可配置ic管芯包括资源预留组件710,例如pcie资源预留组件。资源预留组件可以是pcie物理功能。资源预留组件可以位于可配置ic管芯的核心结构中。在一个实施例中,资源预留组件被包括在硬件管理组件中。在另一实施例中,资源预留组件不被包括在硬件管理组件中。

资源预留组件710、可重新配置的pr插槽85和硬件管理组件80的物理功能适于向主机暴露资源使用要求。暴露的资源使用要求是资源预留组件710、可重新配置的pr插槽85和硬件管理组件80的资源使用要求。

由物理功能暴露的资源使用要求可以包括地址范围,并且可以包括一个或多个其他资源。地址范围可以包括io地址范围、资源范围、存储器地址范围、总线地址范围或这些范围和资源的任意组合。预留的主机资源可以包括存储器映射的io(mmio)、io端口、总线设备功能号(例如,请求者id)或这些资源的任意组合。

在主机加电和启动的时间段期间发生的初始枚举期间,资源预留组件710的物理功能分别暴露了具有大于每个其他电路设备的资源使用要求的电路设备的资源使用要求。例如,如果第一电路设备65a分别具有大于任何其他电路设备(例如,第二电路设备65b至第n电路设备65n)的资源使用要求,则资源预留组件的物理功能将在初始枚举期间暴露最大资源使用要求。

在初始枚举期间,可重新配置的pr插槽85的物理功能向主机操作系统、bios、vmm或在主机上操作的其他软件暴露零资源或相对小的(例如,极小的)使用要求(例如,零地址范围或约一个系统页的地址范围)。在初始枚举之后的重新枚举期间,可重新配置的pr插槽的物理功能可以暴露被调度在可配置ic管芯上操作的电路设备的资源使用要求。

在初始枚举期间,硬件管理组件80的物理功能向主机操作系统、bios、vmm或在主机上操作的其他软件暴露资源使用要求。暴露的使用资源要求是对于硬件管理组件的使用资源要求。

由资源预留组件、可重新配置的pr插槽和硬件管理组件的物理功能暴露的资源使用要求是累积资源使用要求。累积资源使用要求可以是由物理功能暴露的资源使用要求的累积地址范围。基于累积资源使用要求,主机预留各种主机资源。

在实施例中,为初始枚举确定的累积资源使用要求保持不变,并且由主机为累积资源使用要求预留的资源保持不变。当主机重新枚举可配置ic管芯时,操作系统、bios、vmm或其他主机软件不可以对预留的主机资源进行任何后续修改。预留的主机资源是可用于资源预留组件、可重新配置的pr插槽和硬件管理组件的固定的资源量。

具体地,在重新枚举期间,如果由资源预留组件、可重新配置的pr插槽或硬件管理组件的物理功能之一暴露的资源使用要求增加,则没有增加的其他物理功能中的一个或两个的资源使用要求将被减少。例如,在可配置ic管芯的初始枚举期间,用于资源预留组件的物理功能可以暴露非零的第一资源使用要求(例如,第一地址范围)。第一资源使用要求可以针对分别与每个其他电路设备(例如,电路设备65b……65n)相比具有最大资源使用要求的第一电路设备(例如,电路设备65a)。用于可重新配置的pr插槽的物理功能可以暴露可以为零的第二资源使用要求(例如,第二地址范围)。用于硬件管理器组件的物理功能可以暴露非零的第三资源使用要求(例如,第三地址范围)。

在初始枚举之后的后续重新枚举期间,用于资源预留组件的物理功能可以暴露与第一资源使用要求不同的第四资源使用要求(例如,第四地址范围)。用于可重新配置的pr插槽的物理功能可以暴露第五资源使用要求(例如,第五地址范围)。第五资源使用要求可以是被调度在可配置ic管芯上操作的电路设备的资源使用要求。例如,可配置ic管芯可以在重新枚举期间从操作第一电路设备(例如,第一电路设备65a)切换到第二电路设备(例如,第二电路设备65b)。用于硬件管理器组件的物理功能可以继续暴露第三资源使用要求。第四和第五资源使用要求可以等于第一和第二资源使用要求。因此,在重新枚举期间暴露的累积资源使用要求可以保持不变,并且预留的主机资源可以保持未链接。

可配置ic管芯740提供多个益处。例如,在初始枚举期间,因为资源预留组件的物理功能暴露了具有最大资源使用要求的电路设备的资源使用要求,所以主机将具有充分预留的主机资源以供该电路设备在没有主机资源约束的情况下正确地操作。如果在主机上预留少于所描述的所需资源,则具有最大地址范围的电路设备可能无法正确操作。此外,当选择这些设备以在可配置ic管芯上操作时,具有小于最大资源使用要求的资源使用要求的电路设备也能够在没有资源约束的情况下操作。此外,因为资源预留组件、可重新配置的pr插槽和硬件管理组件的累积资源使用要求在初始枚举之后的一个或多个重新枚举期间不改变,因此主机可以避免改变被预留用于初始枚举的预留的主机资源。

在一个实施例中,对于初始枚举,累积资源使用要求(例如,累积地址范围)被存储在一个或多个存储器设备中。一个或多个存储器可以包括可配置ic管芯中的存储器、可配置ic管芯可以封装在其中的sip中的存储器、插入卡上的存储器、主机的存储器、另一存储器或这些存储器设备的任意组合。

在一个实施例中,存储在存储器中的累积资源使用要求不会由于主机的断电和加电而改变。主机可以在加电期间从存储器收集累积资源使用要求,并且可以基于存储在存储器中的累积资源使用要求为可配置ic管芯预留资源。如果可配置ic管芯的核心结构被重新配置为包括附加的、更少的或不同的电路设备,则可以改变累积资源使用要求。还可以基于其他触发事件来改变累积资源使用要求。

图8是用于为可配置ic管芯预留主机资源并分配预留的主机资源的操作方法的流程图,其中,预留的主机资源在分配期间保持不变。该流程图表示一个示例实施例。在不偏离实施例的范围的情况下,可以向流程图添加步骤、从中移除步骤或在其中组合步骤。

在800处,主机705加电并启动。当主机加电时,卡35和安装在卡上的可配置ic管芯740加电。

在805处,可配置ic管芯最初由主机枚举。初始枚举发生在主机的加电和启动期间。

在810处,在可配置ic管芯的初始枚举期间,资源预留组件的物理功能向操作系统、bios、vmm或者其他主机软件暴露第一资源使用要求(例如,第一地址范围)。第一资源使用要求可以是核心结构中的第一电路设备的资源使用要求,其中,第一电路设备核心结构中分别具有大于每个其他电路设备的资源使用要求。

在可配置ic管芯的初始枚举期间,可重新配置的pr插槽的物理功能适于向操作系统、bios、vmm或其他主机软件暴露第二资源使用要求(例如,第二地址范围)。第二资源使用要求(例如,第二地址范围)可以是零或非零。可重新配置的pr插槽的物理功能还可以适于暴露在初始枚举之后将在可配置的ic管芯上操作的电路设备(例如,空的或有效的电路设备)的设备身份(例如,pcie身份)。电路设备的设备身份还可以由可重新配置的pr插槽的物理功能向操作系统、bios、vmm或枚举可配置ic管芯的其他主机软件暴露。

在可配置ic管芯的初始枚举期间,硬件管理组件的物理功能适于暴露硬件管理组件的第三资源使用要求(例如,第三地址范围)。第三资源使用要求可以是非零的。

在815处,操作系统、bios、vmm或其他主机软件为可配置ic管芯预留主机资源。预留的主机资源用于第一、第二和第三资源使用要求(例如,累积资源使用要求)。预留的主机资源可以包括存储器映射的io(mmio)、io端口、总线设备功能号(例如,请求者id)、或者基于第一电路设备的地址范围要求的这些资源的任意组合。操作系统、bios、vmm或其他主机软件还可以为可配置ic管芯配置主机以及的路径中的任何其他pcie交换机的pcie资源窗口。

在820处,硬件管理组件或其他硬件或软件请求对可配置ic管芯的重新枚举。

在825处,由主机重新枚举可配置ic管芯。

在830处,在重新枚举期间,资源预留组件的物理功能向操作系统、bios、vmm或其他主机软件暴露第四资源使用要求(例如,第四地址范围)。

在重新枚举期间,可重新配置的pr插槽的物理功能适于向操作系统、bios、vmm或其他主机软件暴露第五资源使用要求(例如,第五地址范围)。第五资源使用要求(例如,第五地址范围)可以用于在重新枚举之后将在可配置ic管芯上操作的电路设备(例如,第二电路设备)。电路设备(例如,第二电路设备)的设备身份也可以通过可重新配置的pr插槽的物理功能向操作系统、bios、vmm或枚举可配置ic管芯的其他主机软件暴露。

在可配置ic管芯的初始枚举期间,硬件管理组件的物理功能适于暴露硬件管理组件的第六资源使用要求(例如,第六地址范围)。第六资源使用要求可以与第三资源使用要求相同。

第一、第二和第三资源使用要求的累积资源使用要求可以与第四、第五和第六资源使用要求相同。此外,如果第三和第六使用资源要求从初始枚举到重新枚举保持不变,则第一和第二资源使用要求可以与第四和第五使用资源要求相同。

在835处,在重新枚举之后,主机可以为资源预留组件分配预留主机资源的第一部分。预留主机资源的第一部分可以用于在重新枚举期间由资源预留组件的物理功能暴露的第四资源使用要求。

在重新枚举之后,主机可以为被调度在重新枚举之后在可配置ic管芯上操作的电路设备分配预留主机资源的第二部分。预留主机资源的第二部分可以用于在重新枚举之后在可配置ic管芯上操作的电路设备的第五资源使用要求。

在重新枚举之后,主机可以为硬件管理组件分配预留主机资源的第三部分。预留主机资源的第三部分可以用于硬件管理组件的第六资源使用要求。

对于重新枚举,主机可以不改变由主机为初始枚举预留的预留主机资源。此外,对于初始枚举之后的任意数量的重新枚举,主机可以不改变由主机为初始枚举预留的预留主机资源。

可以重复对820、825、830和835的重新枚举。例如,当硬件管理组件接收用于改变在核心结构中操作的电路设备的请求时,硬件管理组件可以请求后续的重新枚举。

为了重复重新枚举(例如,重复820、825、830和835),主机可以改变被分配给资源预留组件710、可重新配置的pr插槽85和硬件管理组件80的预留主机资源的部分。

例如,主机可以改变被分配给资源预留组件和可重新配置的pr插槽的预留主机资源的部分,但是可以留下被分配给硬件管理组件的预留主机资源的部分。如果在重复的重新枚举之前和之后在核心结构中操作的电路设备是具有不同资源使用要求的不同电路设备,则主机可以改变被分配给电路设备的预留主机资源的部分。主机还可以改变被分配给资源预留组件的预留主机资源的部分。然而,在重复的重新枚举之前被分配给电路设备和资源预留组件的预留主机资源的累积部分是相同的。也就是说,在重复的重新枚举之前和之后分配的预留主机资源量是恒定的。

图9是本专利中描述的主机中的一个或多个主机的操作方法的流程图,其中,可配置ic管芯可以不包括资源预留组件。流程图表示一个示例实施例。在不偏离实施例的范围的情况下,可以向流程图添加、从中移除或在其中组合步骤。

在900处,主机加电并启动。在主机加电时,被包括在主机中的可配置ic管芯加电。

在905处,可配置ic管芯最初由主机枚举。初始枚举发生在主机加电和启动期间。

在910处,在可配置ic管芯的初始枚举期间,可重新配置的pr插槽的物理功能适于向操作系统、bios、vmm或其他主机软件暴露第一资源使用要求(例如,第一地址范围)。第一资源使用要求(例如,第一地址范围)可以是足以使核心结构中的任何一个电路设备在主机中适当地操作的资源使用要求。硬件管理组件可以适于配置可重新配置的pr插槽以在初始枚举期间暴露第一资源使用要求。第一资源使用要求的信息(例如,地址范围)可以被存储在存储器可配置ic管芯、可配置ic管芯安装在其中的sip的存储器、可配置ic管芯可以安装在其上的pcie卡的存储器或其他存储器中。存储器可以是闪速存储器或其他类型的存储器。

可重新配置的pr插槽的物理功能还可以适于暴露在初始枚举之后将在可配置的ic管芯上操作的电路设备(例如,第一电路设备)的设备身份(例如,pcie身份)。电路设备的设备身份可以向操作系统、bios、vmm或枚举可配置ic管芯的其他主机软件暴露。

在可配置ic管芯的初始枚举期间,硬件管理组件的物理功能适于暴露硬件管理组件的第二资源使用要求(例如,第二地址范围)。第二资源使用要求可以是非零的。

在915处,操作系统、bios、vmm或其他主机软件为可配置ic管芯预留主机资源。预留的主机资源用于第一和第二资源使用要求(例如,累积资源使用要求)。预留的主机资源可以包括存储器映射的io(mmio)、io端口、总线设备功能号(例如,请求者id),或者基于第一电路设备的地址范围要求的这些资源的任意组合。操作系统、bios、vmm或其他主机软件还可以为可配置ic管芯配置主机以及路径中的任何其他pcie交换机的pcie资源窗口。

在920处,硬件管理组件可以请求对可配置ic管芯的重新枚举。

在925处,由主机重新枚举可配置ic管芯。

在930处,在重新枚举期间,可重新配置的pr插槽的物理功能适于向操作系统、bios、vmm或其他主机软件暴露第三资源使用要求(例如,第三地址范围)。第三资源使用要求(例如,第三地址范围)可以用于在重新枚举之后将在可配置ic管芯上操作的电路设备(例如,第二电路设备)。

在实施例中,第一和第三资源使用要求是相同的资源使用要求。在替代实施例中,第一和第三资源使用要求是不同的资源使用要求。具体地,第三资源使用要求可以小于第一资源使用要求,但可以不大于第一资源使用要求。

电路设备(例如,第二电路设备)的设备身份也可以由可重新配置的pr插槽的物理功能向操作系统、bios、vmm或枚举可配置ic管芯的其他主机软件暴露。硬件管理组件可以适于配置可重新配置的pr插槽的物理功能,以暴露在重新枚举之后将在可配置的ic管芯上操作的电路设备的第三地址范围和设备身份。硬件管理组件可以接收用于改变在可配置ic管芯上操作的电路的请求,并且如所描述的那样配置可重新配置的pr插槽的物理功能。

在重新枚举可配置ic管芯期间,硬件管理组件的物理功能适于暴露硬件管理组件的第四资源使用要求(例如,第四地址范围)。第四资源使用要求可以与第二资源使用要求相同。

在935处,在重新枚举之后,主机可以将预留主机资源的第一部分分配给可重新配置的pr插槽,以用于被调度为在重新枚举之后在可配置ic管芯上操作的电路设备的操作。预留的主机资源的第一部分可以用于在重新枚举期间由可重新配置的pr插槽的物理功能暴露的第三资源使用要求。

在重新枚举之后,主机可以为硬件管理组件分配预留主机资源的第二部分。预留主机资源的第二部分可以用于在重新枚举期间由可重新配置的pr插槽的物理功能暴露的第四资源使用要求。

对于重新枚举,主机可以不改变由主机在915处为初始枚举预留的预留主机资源。此外,对于在初始枚举之后的任意数量的重新枚举,主机可以不改变由主机在915处为初始枚举预留的预留主机资源。

在一个实施例中,当第一和第三资源使用要求不同并且当第二和第四资源使用要求相同时,则被分配给可重新配置的pr插槽以及硬件管理组件的预留主机资源的第一和第二部分小于在915处预留的预留主机资源的总量。此外,减少了被分配给可重新配置的pr插槽的预留主机资源的第一部分。

在一个实施例中,可配置ic管芯的一个或多个模块可以被指派未被分配给可重新配置的pr插槽和硬件管理组件的预留主机资源量,使得预留的主机资源量不被改变。累积的预留主机资源包括被分配给可重新配置的pr插槽的预留主机资源的第一部分以及被指派给可配置ic管芯的一个或多个模块的资源量,所述累积的预留主机资源是恒定的并且在可配置ic管芯的每个连续重新枚举期间不被改变。

图10是本专利中描述的主机中的一个或多个主机的操作方法的流程图,其中,可配置ic管芯可以不包括资源预留组件。该流程图表示一个示例实施例。在不偏离实施例的范围的情况下,可以向流程图添加、从中移除或在其中组合步骤。

在1000处,主机加电并启动。在主机加电时,被包括主机中的可配置ic管芯加电。

在1005处,可配置ic管芯最初由主机枚举。初始枚举发生在主机加电和启动期间。

在1010处,在可配置ic管芯的初始枚举期间,可重新配置的pr插槽的物理功能适于向操作系统、bios、vmm或其他主机软件暴露第一资源使用要求(例如,第一地址范围)。第一资源使用要求(例如,第一地址范围)可以是足以使核心结构中的任何一个电路设备在主机中适当地操作的资源使用要求。硬件管理组件可以适于配置可重新配置的pr插槽以在初始枚举期间暴露第一资源使用要求。第一资源使用要求的信息(例如,地址范围)可以存储在可配置ic管芯的存储器、可配置ic管芯安装在其中的sip的存储器、可配置ic管芯可以安装在其上的pcie卡的存储器或其他存储器中。存储器可以是闪速存储器或其他类型的存储器。

可重新配置的pr插槽的物理功能还可以适于暴露将在初始枚举之后在可配置的ic管芯上操作的电路设备(例如,第一电路设备)的设备身份(例如,pcie身份)。电路设备的设备身份还可以由可重新配置的pr插槽的物理功能向操作系统、bios、vmm或枚举可配置ic管芯的其他主机软件暴露。

在可配置ic管芯的初始枚举期间,硬件管理组件的物理功能适于暴露硬件管理组件的第二资源使用要求(例如,第二地址范围)。第二资源使用要求可以是非零的。

在1015处,操作系统、bios、vmm或其他主机软件为可配置ic管芯预留主机资源。预留的主机资源基于第一和第二资源使用要求(例如,累积资源使用要求)或基于从存储器取出的某个预先配置或预编程的值或二者的组合。预留的主机资源可以包括存储器映射的io(mmio)、io端口、总线设备功能号(例如,请求者id)、或者基于第一电路设备的地址范围要求的这些资源的任意组合。操作系统、bios、vmm或其他主机软件还可以为可配置ic管芯配置主机以及路径中的任何其他pcie交换机的pcie资源窗口。

在1020处,硬件管理组件可以请求对可配置ic管芯的重新枚举。

在1025处,由主机重新枚举可配置ic管芯。

在1030处,在重新枚举期间,可重新配置的pr插槽的物理功能适于向操作系统、bios、vmm或其他主机软件暴露第三资源使用要求(例如,第三地址范围)。第三资源使用要求(例如,第三地址范围)可以用于在重新枚举之后将在可配置ic管芯上操作的电路设备(例如,第二电路设备)。

在实施例中,第一和第三资源使用要求是不同的资源使用要求。在替代实施例中,第一和第三资源使用要求是不同的资源使用要求。具体地,第三资源使用要求可以小于第一资源使用要求,但可以不大于第一资源使用要求。

电路设备(例如,第二电路设备)的设备身份也可以由可重新配置的pr插槽的物理功能向操作系统、bios、vmm或枚举可配置ic管芯的其他主机软件暴露。硬件管理组件可以适于配置可重新配置的pr插槽的物理功能,以暴露第三地址范围和在重新枚举之后将在可配置的ic管芯上操作的电路设备的设备身份。硬件管理组件可以接收用于改变在可配置ic管芯上操作的电路的请求,并且如所描述的那样配置可重新配置的pr插槽的物理功能。

在重新枚举可配置ic管芯期间,硬件管理组件的物理功能适于暴露硬件管理组件的第四资源使用要求(例如,第四地址范围)。第四资源使用要求可以与第二资源使用要求相同。

在1035处,在重新枚举之后,主机可以将预留主机资源的第一部分分配给可重新配置的pr插槽,以用于被调度为在重新枚举之后在可配置ic管芯上操作的电路设备的操作。预留的主机资源的第一部分可以用于在重新枚举期间由可重新配置的pr插槽的物理功能暴露的第三资源使用要求。

在重新枚举之后,主机可以为硬件管理组件分配预留的主机资源的第二部分。预留的主机资源的第二部分可以用于在重新枚举期间由硬件管理组件的物理功能暴露的第四资源使用要求。

对于重新枚举,主机可以不改变在1015处由主机为初始枚举预留的预留主机资源。此外,对于在初始枚举之后的任意数量的重新枚举,主机可以不改变在1015处主机为初始枚举预留的预留主机资源。

当第一和第三资源使用要求不同并且第二和第四资源使用要求相同时,则被分配给可重新配置的pr插槽和硬件管理组件的预留主机资源的第一和第二部分小于在1015处预留的预留主机资源的总量。预留的主机资源的分配部分和预留的主机资源的总量的差异可以由主机保持,并且可以不被分配以供主机使用,而在1030处暴露的电路设备在可配置ic管芯的核心结构中操作。然而,以下二者之和(即,总数)等于在1015处由主机预留的预留主机资源的总量:(i)预留主机资源的分配部分,以及(ii)预留主机资源的分配部分与由主机保持的预留主机资源总量的差异。

可以重复1020、1025、1030和1035的重新枚举。例如,当硬件管理组件接收到用于改变在核心结构中操作的电路设备的请求时,硬件管理组件可以请求后续的重新枚举。

为了重复重新枚举(例如,重复1020、1025、1030和1035),主机可以改变被分配给可重新配置的pr插槽85的预留主机资源的部分和保持未分配以便在1035处使用的预留主机资源量。

例如,如果在重复的重新枚举之前和之后在核心结构中操作的电路设备是具有不同资源使用要求的不同电路设备,则主机可以改变被分配给可重新配置的pr插槽的预留主机资源的部分和未指派的预留主机资源的部分。然而,在1015处由主机预留的预留主机资源总数保持不变。此外,以下二者之和(即,总数)等于在1015处由主机预留的预留主机资源的总量:(i)预留主机资源的分配部分,以及(ii)预留主机资源的分配部分与由主机保持的预留主机资源总量的差异。

图11示出了在实施例中主机操作系统16的元素和通信链路1100,所述通信链路1100将主机操作系统的元素链接到可配置ic管芯1140的元素。可配置ic管芯可以是fpga。

可配置ic管芯1140可以与上述任何一个可配置ic管芯相同或相似。可配置ic管芯可以包括任意组合的上述任何可配置ic管芯的任何元素,例如多个电路设备65a……65n(例如,nic、nvme或其他设备)。

主机操作系统包括管理应用1110和可配置ic管芯api1115。管理应用和可配置ic管芯api可以驻留在操作系统的环0或环3中。主机操作系统还包括用于硬件管理组件物理功能80的驱动程序1120。主机操作系统包括用于一个或多个电路设备65a……65n的一个或多个设备驱动程序1125a……1125n。用于电路设备65a……65n的设备驱动程序1125a……1125n可以链接到用于这些电路设备的物理功能和寄存器。主机操作系统包括用于pcie总线(未示出)的一个或多个pcie驱动程序1130以及链接主机操作系统16和可配置ic管芯1140的pcie功能。驱动程序1120、1125a……1125n和1130可以驻留在操作系统的环0或环3中。

在实施例中,软件架构是裸机操作系统。也就是说,软件架构用于在没有虚拟机管理器(即,管理程序)的情况下操作的主机。操作系统和可配置ic管芯可以如上所述操作,其中,操作系统适于在可配置ic管芯上操作的改变的电路设备的改变的pcie身份。也就是说,pcie驱动程序1130可以枚举并重新枚举在可配置ic管芯上操作的pcie设备(例如,电路设备65a……65n)的pcie物理功能。可以为被发现的pcie设备初始化和配置pcie驱动程序1130。此后,可以初始化和配置设备驱动程序1125a……1125n。

图12示出了在实施例中主机操作系统16的元素和通信链路1200,所述将主机操作系统的元素链接到可配置ic管芯1240的元素。还示出了访客操作系统1216,其中,通信链路1200将访客操作系统的元素链接到可配置ic管芯的元素。可配置ic管芯可以是fpga。

可配置ic管芯1240可以与上述任何一个可配置ic管芯相同或相似。可配置ic管芯可以包括任意组合的上述任何可配置ic管芯的任何元素,例如多个电路设备65a……65n(例如,nic、nvme或其他设备)。

主机操作系统包括管理应用1210和可配置ic管芯api1215。管理应用和可配置ic管芯api可以驻留在操作系统的环0或环3中。主机操作系统还包括用于硬件管理组件物理功能80的驱动程序1220。主机操作系统包括用于电路设备65a的设备驱动程序1225a。主机操作系统可以包括用于附加电路设备的附加设备驱动程序,所述附加电路设备例如电路设备65b或其他电路设备。主机操作系统包括用于pcie总线(未示出)的pcie驱动程序1230,所述pcie总线链接主机操作系统16和可配置ic管芯1240。驱动程序1220、1225a和1230a可以驻留在操作系统的环0或环3中。硬件管理组件80和电路设备65a被指派给操作系统的驱动程序。

主机包括访客操作系统1216。访客操作系统1216包括用于可配置ic管芯1205的第n电路设备的驱动程序1225n并且包括pcie驱动程序1230b。用于在可配置ic管芯上操作的第n电路设备65n的物理功能被指派给访客操作系统1216,作为到访客操作系统的pcie直加电路设备(pciepassthroughcircuitdevice)。用于电路设备65a……65n的驱动程序1225a……1225n可以链接到用于电路设备的物理功能和寄存器。

诸如输入-输出存储器管理单元(iommu)之类的存储器管理单元(mmu)1262可以位于操作系统和可配置ic管芯之间,并且管理用于操作系统和可配置ic管芯的虚拟存储器。mmu还可以位于访客操作系统和可配置ic管芯之间,并且管理用于访客操作系统和可配置ic管芯的虚拟存储器。

操作系统、访客操作系统和可配置ic管芯可以如上所述操作,其中,操作系统和访客操作系统适于在可配置ic管芯上操作的改变的电路设备的改变的pcie身份。也就是说,操作系统和访客操作系统的pcie驱动程序可以枚举和重新枚举在可配置ic管芯上操作的pcie设备(例如,电路设备65a……65n)的pcie物理功能。可以为发现的pcie设备初始化和配置pcie驱动程序1230a……1230n。此后,可以初始化和配置用于电路设备的驱动程序的设备功能。在初始化和配置之后,设备功能可以由用于电路设备的驱动程序管理。如果电路设备65a之一被配置用于在可配置ic管芯上操作,则操作系统可以在枚举或重新枚举期间发现该设备,并且如果第n电路设备未被配置为操作,则访客操作系统可以不发现第n电路设备65n。替代地,如果电路设备65a未被配置用于在可配置ic管芯上操作,则操作系统可以在枚举或重新枚举期间不发现该设备,并且如果第n电路设备65n被配置为操作,则访客操作系统可以发现第n电路设备。

图13示出了在实施例中主机操作系统16的元素以及通信链路1300,所述通信链路1300将主机操作系统的元素链接到可配置ic管芯1340的元素。还示出了访客操作系统1316,其中,通信链路1300将访客操作系统的元素链接到可配置ic管芯的元素。可配置ic管芯可以是fpga。

可配置ic管芯1340可以与上述可配置ic管芯中的任何一个相同或相似。可配置ic管芯可以包括任意组合的上述任何可配置ic管芯的任何元素,例如多个电路设备65a……65n(例如,nic、nvme或其他设备)。

主机操作系统包括管理应用1310和可配置ic管芯api1315(fpgaapi)。管理应用和可配置ic管芯api可以驻留在操作系统的环0或环3中。主机操作系统还包括用于硬件管理组件物理功能80的驱动程序1320。主机操作系统包括用于电路设备65a的设备驱动程序1325a。用于电路设备65a的设备驱动程序1325a可以链接到用于电路设备65a的物理功能和寄存器。

主机操作系统包括用于pcie总线(未示出)的pcie驱动程序1330a,所述pcie总线链接主机操作系统16和可配置ic管芯1340。驱动程序1320、1325a和1330a可以驻留在操作系统的环0或环3中。硬件管理组件80和电路设备65a被指派给操作系统的驱动程序。

主机包括访客操作系统1316。访客操作系统1316包括用于电路设备65a的设备驱动程序1325b。设备驱动程序1325b可以链接到用于电路设备65a的物理功能的虚拟功能,并且链接到用于虚拟功能的寄存器。访客操作系统1316包括用于电路设备65n的设备驱动程序1325n。设备驱动程序可以链接到用于电路设备65n的物理功能,并且链接到用于该物理功能的寄存器。访客操作系统包括pcie驱动程序1330b和1330n,它们分别链接到用于电路设备65a和电路设备65n的驱动程序,并且链接到用于这些电路设备的虚拟功能和物理功能。

mmu1362可以在操作系统和可配置ic管芯之间,并且管理用于操作系统和可配置ic管芯的虚拟存储器。mmu还可以位于访客操作系统和可配置ic管芯之间,并且管理用于访客操作系统和可配置ic管芯的虚拟存储器。

用于在可配置ic管芯上操作的第n电路设备65n的物理功能被指派给访客操作系统1316,作为到访客操作系统的pcie直加电路设备。用于在可配置ic管芯上操作的电路设备65a的虚拟功能被指派给访客操作系统1316,作为到访客操作系统的pcie直加电路设备。操作系统和可配置ic管芯被配置用于用于电路设备65a的物理功能上的sr-iov功能,其中,该电路设备可以是nic。

此外,操作系统、访客操作系统和可配置ic管芯可以如上所述操作,其中,操作系统和客户操作系统适于在可配置ic管芯上操作的改变的电路设备的改变的pcie身份。也就是说,操作系统和访客操作系统的pcie驱动程序可以枚举和重新枚举在可配置ic管芯上操作的pcie设备(例如,电路设备65a……65n)的pcie物理功能。

可以为被发现的pcie设备初始化和配置pcie驱动程序1330a……1330n。此后,可以初始化和配置用于电路设备的设备驱动程序的设备功能。如果电路设备65a之一被配置用于在可配置ic管芯上操作,则操作系统可以在枚举或重新枚举期间发现该设备,并且如果第n电路设备未被配置为操作,则访客操作系统可以不发现第n电路设备65n。替代地,如果电路设备65a未被配置用于在可配置ic管芯上操作,则操作系统可以在枚举或重新枚举期间不发现该设备,并且如果第n电路设备配置为操作,则访客操作系统可以发现第n电路设备65n。

图14示出了在实施例中主机操作系统16的元素和通信链路1400,所述通信链路1400将主机操作系统的元素链接到可配置ic管芯1440的元素的。还示出了访客操作系统1416,其中,通信链路1400将访客操作系统的元素链接到可配置ic管芯的元素。可配置ic管芯可以是fpga。

可配置ic管芯1440可以与上述任何一个可配置ic管芯相同或相似。可配置ic管芯可以包括任意组合的上述任何可配置ic管芯的任何元素,例如多个电路设备65a……65n(例如,nic、nvme或其他设备)。

主机操作系统包括管理应用1410和可配置ic管芯api1415。管理应用和可配置ic管芯api可以驻留在操作系统的软件环0或环3中。主机操作系统还包括用于硬件管理组件物理功能80的驱动程序1420。主机操作系统包括用于电路设备65a的设备驱动程序1425a。用于电路设备65a的设备驱动程序1425a可以链接到用于该电路设备的物理功能和寄存器。

主机操作系统包括用于pcie总线(未示出)的pcie驱动程序1430a和链接主机操作系统16和可配置ic管芯1440的pcie功能。驱动程序1420、1425a和1430a可以驻留在操作系统的软件环0或环3中。硬件管理组件80和电路设备65a被指派给操作系统的驱动程序。

主机包括访客操作系统1416。访客操作系统1416包括用于电路设备65a的驱动程序1425b。驱动程序可以链接到用于电路设备65a的物理功能的虚拟功能,并且链接到用于虚拟功能的寄存器。访客操作系统1416包括用于电路设备65n的驱动程序1425n。驱动程序可以链接到用于电路设备65n的物理功能并且链接到用于该物理功能的寄存器。访客操作系统包括pcie驱动程序1430b和1430n,它们分别链接到用于电路设备65a和电路设备65n的驱动程序,并且链接到用于这些电路设备的虚拟功能和物理功能。

mmu1462可以在操作系统和可配置ic管芯之间,并且管理用于操作系统和可配置ic管芯的虚拟存储器。mmu还可以位于访客操作系统和可配置ic管芯之间,并且管理用于访客操作系统和可配置ic管芯的虚拟存储器。

用于在可配置ic管芯上操作的第n电路设备65n的物理功能被指派给访客操作系统1416,作为到访客操作系统的pcie直加电路设备。

用于电路设备65a的虚拟功能1被指派给容器1412。用于电路设备65a的虚拟功能2被指派给访客操作系统1416,作为到访客操作系统的pcie直加电路设备。操作系统和可配置ic管芯被配置用于用于电路设备65a的物理功能上的sr-iov功能,其中,该电路设备可以是nic。

操作系统、访客操作系统和可配置ic管芯可以如上所述地操作,其中,操作系统和访客操作系统适于在可配置ic管芯上操作的改变的电路设备的改变的pcie身份。也就是说,操作系统和访客操作系统的pcie驱动程序可以枚举和重新枚举在可配置ic管芯上操作的pcie设备(例如,电路设备65a……65n)的pcie物理功能。可以为发现的pcie设备初始化和配置pcie驱动程序1430a……1430n。此后,可以初始化和配置用于电路设备的驱动程序的设备功能。在初始化和配置之后,设备功能可以由用于电路设备的驱动程序管理。如果电路设备65a之一被配置用于在可配置ic管芯上的操作,则操作系统可以在枚举或重新枚举期间发现该设备,并且如果第n电路设备未被配置为操作,则访客操作系统可以不发现第n电路设备65n。替代地,如果电路设备65a未被配置用于在可配置ic管芯上操作,则操作系统可以在枚举或重新枚举期间不发现该设备,并且如果第n电路设备被配置为操作,则访客操作系统可以发现第n电路设备65n。

主机的配置允许多个益处。例如,可以重新配置主机操作系统和bios以识别第二电路设备,所述第二电路设备在第一电路设备被禁用操作之后启用操作而不关闭并且重新加电主机以用于重新枚举可配置的ic管芯的pcie功能。而且,在主机加电期间分配相对大的存储器,使得在可配置ic管芯上操作的任何电路设备将在没有存储器约束的情况下操作。主机不必断电并重新加电以重新分配用于第二电路设备的存储器,其中,第二电路设备具有大于第一电路设备的存储器要求。灵活性允许利用可配置ic管芯(例如,fpga)的多电路设备功能,而主机通过模拟热拔出和热插入事件(其中,没有实际发生热拔出或热插入)来保持完全加电。现有的pcie功能被改变意图以允许该电路设备切换。

图15示出了实施例中的数据系统1500。数据系统1500包括客户端系统1505,其适于使用通信网络1515访问数据中心1510。客户端系统1505可以包括适于访问存储在数据中心中的数据的一个或多个客户端计算机。客户端计算机可以包括服务器、桌上型计算机、膝上型计算机、移动设备(例如,平板计算机、智能手机或其他设备)、这些设备的任意组合或其他设备。客户端计算机可以将数据传输到数据中心以存储在数据中心中、从数据中心取回数据或者请求改变数据中心中的数据。通信网络1515可以包括一个或多个网络,例如因特网、一个或多个内联网或其他网络系统。

数据中心1510包括主机5(即,服务器)、大容量存储装置1530、ip交换机1535,并且可以包括其他元素。虽然图15示出了数据中心包括服务器5,但是数据中心可以包括所描述的任何服务器,例如服务器205、305、405或705。此外,数据中心中的服务器可以包括以下各项中的任何一项:如上所述并在附图(例如,图1、图2、图3、图4、图5、图7、图10、图11、图12和图13)中示出的操作系统、访客操作系统或者二者。数据中心中的服务器可以根据所描述和示出的任何方法进行操作,所述方法例如图6、图8、图9和图10中所示的方法。

大容量存储装置1530包括一种或多种类型的存储器设备,例如包括多个磁盘存储器设备(例如,磁盘存储器)的磁盘阵列、光学存储装置(例如,光盘存储装置)、固态存储器、磁带存储器等。存储器设备可以位于一个或多个数据中心机架中,所述数据中心机架包括一个或多个服务器、ip交换机、二者,或者不包括服务器和ip交换机。ip交换机在服务器和大容量存储装置的存储器设备之间路由通信分组。

服务器的一个或多个处理核心10可以以半双工模式或全双工模式以单倍数据速率(sdr)、双倍数据速率(ddr)或四倍数据速率(qdr)与存储器子系统通信。存储器子系统可以包括ddr非易失性存储器、3dxpoint非易失性存储器或其他类型的存储器。

服务器可以是聚合的服务器或解聚的服务器。服务器的各种组件可以位于数据中心机架中的单个托架上、分布在数据中心机架中的两个或更多个托架中、或者分布在多个数据中心机架中的多个托架当中。在托架、数据中心机架或二者当中分布服务器的组件可以通过将频繁通信的选择组件彼此相对接近地定位选择来促进组件之间的相对快的通信。例如,在处理器访问存储器子系统的频率高于可配置ic管芯(例如,fpga)的服务器中,处理器和存储器子系统可以在数据中心机架中定位得相对靠近(例如,在第一托架上)并且可配置ic管芯可以在数据中心机架中与存储器子系统定位得较远(例如,在不同的第二托架上)。替代地,例如,如果可配置ic管芯以高于处理器的频率访问大容量存储装置,则第二托架可以与比第一托架相比定位得靠近大容量存储装置。

图16示出了实施例中的数据系统1600。数据系统1600类似于数据中心1500,但包括数据中心1610,所述数据中心1610包括多个主机5(即,服务器)。虽然图16示出了数据中心包括服务器5,但是数据中心可以包括所描述的任何服务器,例如服务器205、305、405或705。此外,数据中心中的服务器可以包括以下各项中的任何一项:如上所述并在附图(例如,图1、图2、图3、图4、图5、图7、图10、图11、图12和图13)中示出的操作系统、访客操作系统或者二者。数据中心中的服务器可以根据所描述和示出的任何方法来操作,所述方法例如图6、图8、图9和图10中所示的方法。

在实施例中,半导体设备包括核心结构。核心结构能够配置为包括:可重新配置的部分重配置(pr)插槽,其包括第一物理功能;第一电路设备,其被指派给所述可重新配置的pr插槽并具有第一设备角色。所述核心结构能够配置为包括第二电路设备,其被指派给所述可重新配置的pr插槽并具有第二设备角色。所述第一电路设备和所述第二电路设备是不同的电路设备,并且所述第一设备角色和所述第二设备角色是不同的设备角色。所述核心结构能够配置为包括硬件管理组件。所述硬件管理组件适于:重新配置所述第一物理功能以暴露所述第二设备角色而非暴露所述第一设备角色;触发主机重新枚举组件以请求主机的主机操作系统重新枚举所述第一物理功能以发现所述第二角色并且用所述第二设备角色替换所述主机操作系统中的所述第一设备角色,禁用所述第一电路设备用所述主机操作系统操作;并且启用所述第二电路设备用所述主机操作系统操作。

所述硬件管理组件可以包括第二物理功能,其适于重新配置所述第一物理功能以暴露所述第二设备角色以用于所述重新枚举,而非暴露所述第一设备角色以用于所述重新枚举。

所述半导体设备可以包括外围设备,所述外围设备包括硬化的输入-输出块。所述核心结构包括耦合在所述硬件管理组件和所述输入-输出块之间并且耦合在所述可重新配置的pr插槽和所述输入-输出块之间的硬pcie端点块。

所述核心结构可以包括所述主机重新枚举组件,所述主机重新枚举组件是具有热插拔功能的软交换机。主机操作系统可以包括所述主机重新枚举组件,所述主机重新枚举组件是所述主机操作系统的热插拔仿真组件。所述主机重新枚举组件可以是具有热插拔功能的分立交换机。

所述硬件管理组件可以被配置为请求所述主机重新枚举组件触发从所述主机操作系统移除用于所述第一电路设备的第一驱动程序。

所述硬件管理组件可以被配置为请求所述主机重新枚举组件触发所述主机操作系统中的第二驱动程序的安装、加载或二者,并且所述第二驱动程序是用于所述第二电路设备的驱动程序。

所述核心结构能够配置为包括具有第三设备角色的第三电路设备,包括第二物理功能的第二可重新配置的pr插槽,并且所述第三电路设备被指派给所述第二可重新配置的pr插槽和所述第二物理功能。

图17是在实施例中可配置ic管芯的操作方法的流程图。该流程图表示一个示例实施例。在不偏离实施例的范围的情况下,可以向流程图添加、从中移除或在其中组合步骤。

在1700处,可配置集成电路(ic)管芯的硬件管理组件接收角色改变请求。

在1705处,硬件管理组件向可配置ic管芯的可重新配置的部分重配置(pr)插槽发出请求,以将可配置ic管芯的第一电路设备的第一设备角色改变为可配置ic管芯的第二电路设备的第二设备角色。硬件管理组件、可重新配置的pr插槽以及第一和第二电路设备被配置在可配置ic管芯的核心结构中。

在1710处,可重新配置的pr插槽将第一设备角色切换到第二设备角色。

在1715处,硬件管理组件向主机重新枚举组件发出重新枚举请求。

在1720处,主机重新枚举组件接收重新枚举请求。

在1725处,主机重新枚举组件触发对可重新配置的pr插槽的主机重新枚举。

在1730处,在主机重新枚举期间,可重新配置的pr插槽暴露用于第二电路设备的第二设备角色,使得耦合到可配置ic管芯的主机可重新配置为识别可配置ic管芯的第二电路设备。

该方法还可以包括:在主机重新枚举期间,不通过可重新配置的pr插槽暴露用于第一电路设备的第一设备角色,使得主机将不识别可配置ic管芯的第一电路设备。

重新枚举组件可以是具有热插拔功能的软交换机,其被配置在可配置ic管芯的核心结构中。

重新枚举组件可以是主机的主机操作系统的热插拔仿真组件。

该方法还可以包括由硬件管理组件请求从主机的主机操作系统移除用于第一电路设备的所安装的设备驱动程序。

该方法还可以包括由硬件管理组件请求由主机为第二电路设备加载、安装或加载并安装设备驱动程序。

由可重新配置的pr插槽将第一设备角色切换到第二设备角色可以包括硬件管理组件的第一物理功能控制可重新配置的pr插槽以将可重新配置的pr插槽的第二物理功能重新配置为暴露第二设备角色并且不暴露第一设备角色。

图18是实施例中的操作方法的流程图。该流程图表示一个示例实施例。在不偏离实施例的范围的情况下,可以向流程图添加、从中移除或在其中组合步骤。

在1800处,外围卡被配置为当外围卡安装于其中的主机加电并启动时,使外围卡加电。外围卡包括安装在外围卡上的可配置ic管芯。可配置ic管芯包括可配置ic管芯的核心结构中的第一电路设备和第二电路设备。

在1805处,在由主机进行的第一枚举期间,允许资源预留组件的物理功能将第一电路设备的第一资源量要求向主机暴露,允许可重新配置的pr插槽的物理功能将第二资源量要求向主机暴露。第二资源量要求为零在实施例中,第二资源量是极小的量,例如可以用于大约一个系统页的地址范围内的资源量。

在1810处,在由主机进行的第一枚举期间,允许硬件管理组件的物理功能将第三资源量要求向主机暴露。

在1815处,配置主机操作系统以使用第一资源量要求、第二资源量要求和第三资源量要求为可配置ic管芯预留一定量的主机资源。在由主机进行的第一枚举期间,主机可以接收第一资源量要求、第二资源量要求和第三资源量要求。

在1820处,在由主机进行的第二枚举期间,允许资源预留组件的物理功能向主机暴露第四资源量要求,允许可重新配置的pr插槽的物理功能向主机暴露第五资源量要求,并且允许硬件管理组件的物理功能向主机暴露第六资源量要求。第一资源量要求和第二资源量要求的第一累积资源量要求等于第四资源量要求和第五资源量要求的第二累积资源量要求。

在1825处,配置主机操作系统以基于第四资源量要求将一定量的主机资源的第一部分分配给资源预留组件,并且基于第五资源量求将一定量的主机资源的第二部分分配给用于第二电路设备的可重新配置的pr插槽。

该方法还可以包括:在由主机进行的第三枚举期间,允许资源预留组件的物理功能向主机暴露第七资源量要求,允许可重新配置的pr插槽的物理功能向主机暴露第八资源量要求,并且允许硬件管理组件的物理功能向主机暴露第九资源量要求。在由主机进行的第三枚举期间,允许主机接收第七资源量要求和第八资源量要求。第七资源量要求和第八资源量要求的第三累积资源量要求等于第四资源量要求和第五资源量要求的第二累积资源量要求。

该方法还可以包括:在由主机进行的第三枚举期间,允许配置主机操作系统以基于第七资源量要求将一定量的主机资源的第三部分分配给资源预留组件,并且基于第八资源量要求将一定量的主机资源的第四部分分配给用于第三电路设备的可重新配置的pr插槽。

该方法还可以包括配置主机以不改变一定量的主机资源。第一资源量要求是第一地址范围要求,并且第二资源量要求是第二地址范围要求。

已经出于说明和描述的目的呈现了该描述。其并非旨在穷举或将本发明限制于所描述的精确形式,并且依据上述教导,许多修改和变型是可能的。例如,虽然上面已经描述了sip设备,但是所描述的实施例可以应用于各种多芯片模块、多管芯组装件、系统级封装设备和其他多管芯设备。出于最好地解释实施例的原理及其实际应用的目的选择和描述了实施方式。该描述将使得本领域的其他技术人员能够在各种实施方式中以及在适合于特定用途的各种修改的情况下最好地利用和实践本发明。本发明的范围由所附权利要求限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1