CN106708596B - 一种输入输出虚拟化资源的调整方法及处理器 - Google Patents
一种输入输出虚拟化资源的调整方法及处理器 Download PDFInfo
- Publication number
- CN106708596B CN106708596B CN201510780016.3A CN201510780016A CN106708596B CN 106708596 B CN106708596 B CN 106708596B CN 201510780016 A CN201510780016 A CN 201510780016A CN 106708596 B CN106708596 B CN 106708596B
- Authority
- CN
- China
- Prior art keywords
- cpu
- central processing
- initialization information
- processing unit
- hot
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种输入输出虚拟化资源的调整方法及装置,用于进行I/O虚拟化资源调整,以实现集成有IIO模块的CPU的热插拔。本发明一实施例方法包括:所述第一CPU调用基本输入输出***BIOS检测到热添加进来的第二CPU,获取集成在所述第二CPU上的内部输入输出IIO模块的初始化信息,并将所述初始化信息保存到差别化***描述表DSDT,所述初始化信息用于调整输入输出虚拟化资源;所述第一CPU根据所述DSDT中的所述初始化信息,配置输入输出虚拟化资源以完成所述第二CPU的热添加。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种输入输出虚拟化资源的调整方法及处理器。
背景技术
Intel X86架构包括一个中央处理器(Central Processing Unit,简称CPU)或者多个CPU,CPU具有热插拔功能,在不关闭***和不切断电源的情况下,可以对CPU进行热移除或热添加,以提高***对灾难的及时恢复能力、扩展性和灵活性等。另外,架构中还包括输入输出中心(Input/Output Hub,简称IOH)芯片,IOH和CPU相连,用来处理外部设备的读写访问请求。随着技术的进步与发展,IOH芯片被逐渐集成到CPU中,形成内部输入输出模块(Internal Input Output,简称IIO)。在CPU集成IIO模块后,要完成CPU热插拔,则要完成IIO模块热插拔的相关处理。
IIO模块中主要包括三个组件,分别如下:
快速***元件互联(Peripheral Component Interconnect Express,简称PCIe)根桥,集成在IIO模块上用来连接更多的PCIe或者PCIe设备,管理PCIe设备的输入输出请求;
输入输出高级可编程中断控制器(Input/Output Advanced ProgrammableInterrupt Controller,简称I/O APIC),集成在IIO模块上用来管理I/O设备的中断请求;
输入输出内存管理单元(Input Output Memory Management Unit,简称IOMMU),集成在IIO模块上实现I/O虚拟化,在Intel技术中,用于实现直接内存访问虚拟化技术(Virtualization Technology Direct Memory Access,简称VT-d)。
其中,业界标准的PCIe规范已经提供了PCIe根桥以及根桥下外挂PCIe设备的热插拔实现方案,同样高级控制与电源管理接口(Advanced Configuration and PowerManagement Interface,简称ACPI)规范也提供了I/OAPIC设备的热插拔实现方案,这些方案仅针对PCIe设备或I/O APIC设备的单独热插拔实现,但目前业内并没有提供适用于CPU中集成IIO模块热插拔的解决方案,以最终实现CPU热插拔。
发明内容
本发明实施例提供了一种输入输出虚拟化资源的调整方法及处理器,用于解决现有技术中集成有IIO模块的CPU的热插拔问题。
本发明第一方面提供了一种输入输出虚拟化资源的调整方法,应用于X86***,上述X86***中包括一个第一中央处理器CPU,上述X86***通过热插拔方式热添加第二CPU,该方法可包括:
上述第一CPU调用基本输入输出***(Basic Input/Output System,简称BIOS)检测到热添加进来的第二CPU,获取集成在上述第二CPU上的内部输入输出IIO模块的初始化信息,并将上述初始化信息保存到差别化***描述表(Differentiated SystemDescription Table,简称DSDT),上述初始化信息用于调整输入输出虚拟化资源;
上述第一CPU根据上述DSDT中的上述初始化信息,配置输入输出虚拟化资源以完成上述第二CPU的热添加。
其中,DSDT表是APCI规范中提供的一种描述动态变化的表,可以用于描述同一个***中多个同类设备的个体差异,或者动态反映一个设备在不同时期的状态差异。在本发明实施例中采用该DSDT来保存热插拔相关的CPU的IIO模块的初始化信息,从而使得第一CPU在任何时候都能获取到X86***当前所有CPU的IIO模块的初始化信息。
可以看出,本发明实施例中BIOS可以检测到热添加进来的第二CPU,并获取第二CPU中集成的IIO模块的初始化信息,并将该初始化信息保存到上述DSDT表中,从而第二CPU能够从DSDT表中获取该初始化信息,对热添加进来的第二CPU完成输入输出虚拟化资源的配置,以实现整个第二CPU的热添加。
可选地,上述初始化信息至少包括设备类型、分段号、总线号、所占用的内存地址区间、上述内存地址区间对应的亲和域。
在本发明一些实施例中,在上述第一CPU调用BIOS检测热添加的第二CPU之前包括:在上述X86***初始化时,上述第一CPU调用上述BIOS检测上述X86***中已添加的其它CPU,获取上述其它CPU中集成的IIO模块的初始化信息,并将获取的初始化信息保存到上述DSDT。在本发明实施例中,在X86***初始化时,BIOS能够检测到X86***中其它CPU(不包括上述第二CPU)的存在,然后将其它CPU集成的IIO模块的初始化信息也保存到DSDT表中,以确保X86***中所有CPU的更新状态都呈现在DSDT表中。
本发明第二方面提供了一种输入输出虚拟化资源的调整方法,应用于X86***,上述X86***中包括一个第一中央处理器CPU,上述X86***通过热插拔方式热移除第二CPU,该方法包括:
上述第一CPU调用基本输入输出***BIOS检测需要热移除的第二CPU;
上述第一CPU从差别化***描述表DSDT获取上述第二CPU中集成的内部输入输出IIO模块的初始化信息,上述初始化信息用于调整输入输出虚拟化资源;
上述第一CPU根据上述初始化信息,删除输入输出虚拟化资源以实现上述第二CPU的热移除。
可以看出,在本发明实施例中BIOS能够感知到需要移除的第二CPU,然后第一CPU从DSDT表中获取该第二CPU集成的IIO模块的初始化信息,根据该初始化信息去删除已配置的输入输出虚拟化资源,然后完成第二CPU的热移除。
可选地,在本发明实施例中,上述初始化信息至少包括设备类型、分段号、总线号、所占用的内存地址区间、该内存地址区间对应的亲和域。
在本发明一些实施例中,上述第一CPU调用基本输入输出***BIOS检测热移除的第二CPU之前包括:在上述X86***初始化时,上述第一CPU调用上述BIOS检测上述X86***中已添加的上述第二CPU和其它CPU,获取上述第二CPU中集成的IIO模块的初始化信息和上述其它CPU中集成IIO模块的初始化信息,并将获取的初始化信息保存到上述DSDT。在本发明实施例中,上述第二CPU若是在X86***启动前已添加进来,那么在X86初始化时,将第二CPU集成的IIO模块的初始化信息保存到DSDT表,那么后续需要热移除时,可以从DSDT表中获取到该初始化信息,完成相应输入输出虚拟化资源的删除,从而完成第二CPU的热移除。同时,当X86***中还存在已添加的其它CPU,将其它CPU集成的IIO模块的初始化信息也保存到DSDT表,以便后续需要对其它CPU热移除时,可以从DSDT中获取初始化信息。
在本发明另一些实施例中,上述第一CPU调用基本输入输出***BIOS检测热移除的第二CPU之前包括:上述第一CPU调用上述BIOS检测到上述第二CPU热添加进来,获取上述第二CPU集成的IIO模块的初始化信息,并将上述第二CPU的IIO模块的初始化信息保存到上述DSDT。在本发明实施例中,该第二CPU还可能是在X86***启动后才热添加进来的,那么在热添加该第二CPU时,将第二CPU集成的IIO模块的初始化信息保存到DSDT中,以便后续从DSDT获取初始化信息。
本发明第三方面提供了一种处理器,该处理器设置于X86***中,该X86***通过热插拔方式热添加第二CPU,该处理器可包括:
检测模块,用于调用基本输入输出***BIOS检测到热添加进来的第二CPU,获取集成在上述第二CPU上的内部输入输出IIO模块的初始化信息,并将上述初始化信息保存到差别化***描述表DSDT,上述初始化信息用于调整输入输出虚拟化资源;
资源调整模块,用于根据上述DSDT中的上述初始化信息,配置输入输出虚拟化资源以完成上述第二CPU的热添加。
可选地,上述第三方面提供的初始化信息至少包括设备类型、分段号、总线号、所占用的内存地址区间、该内存地址区间对应的亲和域。
在本发明一些实施例中,上述检测模块还用于,在该X86***初始化时,调用所述BIOS检测所述X86***中已添加的其它第二CPU,获取所述其它CPU中集成的IIO模块的初始化信息,并将获取的初始化信息保存到所述DSDT。
本发明第四方面提供了一种处理器,该处理器设置于X86***中,该X86***通过热插拔方式热移除第二CPU,可包括:
检测模块,用于调用基本输入输出***BIOS检测需要热移除的第二CPU;
资源调整模块,用于从差别化***描述表DSDT获取上述第二CPU中集成的内部输入输出IIO模块的初始化信息,上述初始化信息用于调整输入输出虚拟化资源;根据上述初始化信息,删除输入输出虚拟化资源以实现上述第二CPU的热移除。
可选地,本发明第四方面提供的初始化信息至少包括设备类型、分段号、总线号、所占用的内存地址区间、所述内存地址区间对应的亲和域。
本发明一些实施例中,上述检测模块还用于,在所述X86***初始化时,调用所述BIOS检测所述X86***中已添加的所述第二CPU和其它CPU,获取所述第二CPU中集成的IIO模块的初始化信息和所述其它CPU中集成的IIO模块的初始化信息,并将获取的初始化信息保存到所述DSDT。
在本发明另一些实施例中,上述检测模块还用于,调用所述BIOS检测到所述第二CPU热添加进来,获取所述第二CPU集成的IIO模块的初始化信息,并将所述第二CPU的IIO模块的初始化信息保存到所述DSDT。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的输入输出虚拟化资源的调整方法的流程示意图;
图2为本发明实施例提供的处理器的结构示意图;
图3为本发明实施例提供的处理器的另一结构示意图;
图4为本发明实施例提供的处理器的另一结构示意图。
具体实施方式
下面将结合本发明实施例的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种输入输出虚拟化资源的调整方法,用于实现集成有IIO模块的CPU的热插拔。本发明实施例还提供了一种输入输出虚拟化资源的调整方法对应的处理器。
本发明可以应用于一些服务器,如英特尔(intel)的X86***,在intel X86***中安装有一个CPU(比如Legacy),该CPU通过蓝桥外挂安装着BIOS程序的闪存(flash),在运行时,通过将闪存中的BIOS程序拷贝到内存进行执行,同时,intel X86***的硬盘中安装着操作***(Operating System,简称OS),OS存储着其它应用程序,这些应用程序将由CPU调用执行。通常而言,由于该CPU外挂安装着BIOS的闪存,是不参与热插拔操作的。X86***需要处理的业务较多,单个CPU处理能力往往无法满足,因此可以通过多CPU方式解决,并且通过热插拔方式在intel X86***中热添加或热移除其它CPU。
本发明实施例提供的CPU内部集成IIO模块,IIO模块包括IOMMU,能够实现I/O虚拟化技术(Virtualization Technology–DMA,简称VT-d),也就是DMA重映射。现有PCIe规范对PCIe根桥和根桥下的PCIe设备的热插拔做了详细介绍,另外,ACPI规范定义了IOAPIC的热插拔,因此,要完成CPU热插拔,在现有PCIe规范和ACPI规范基础上,还需要相应完成I/O虚拟化资源调整,包括在热添加CPU时配置I/O虚拟化资源,以及在热移除CPU时删除I/O虚拟化资源。
OS和BIOS进行数据交换的方法可以有多种,其中与电源管理和设备配置相关的数据往往通过ACPI传递。由于OS一般是通用的,不了解硬件的特征,而BIOS是随着硬件定制的,对硬件特征有足够的了解,因此BIOS可以通过ACPI将硬件的一些特征抽象为ACPI的数据传递给OS。
ACPI简单来说就是提供了很多种数据表格,每种表格描述了一类硬件的一些特性。用于保存初始化信息的表格即为DMAR表,其中,DMAR表中保存了CPU中IIO模块的初始化信息,该初始化信息包括设备类型、分段号(Segment Number)、总线号(Bus Number)、所占用的内存地址区间、该内存地址区间对应的亲和域(Proximity Domain)以及支持高级翻译服务(Advanced Translation Services,简称ATS)等。
在X86***启动时,BIOS启动进入环境配置阶段(Driver ExecutionEnvironment,简称DXE)时,CPU的IIO模块初始化生成DMAR表。但是,ACPI规范定义的DMAR表是一个静态表,也就是一旦生成,内容无法更改,也就无法适应热插拔的需求。因为热插拔发生时,设备所分配到的地址区间、地址区间所对应的亲和域,以及所管理的下游设备等信息都是有可能发生变化的,在X86***运行过程中,当有CPU热添加时,OS对其IIO模块的初始化信息就不能再从DMAR获取,因为DMAR中的初始化信息是开机启动时的状态,未包括热添加进来的IIO模块的初始化信息。当有CPU热移除时,DMAR中的该IIO模块的初始化信息也不会同时被删除。在这两种情况下,都会造成DMAR中的信息跟X86***的状态不符合。
而ACPI规范提供了一类表格DSDT,是一种描述动态变化的表,可以用于描述同一个***中多个同类设备的个体差异,或者动态反映一个设备在不同时期的状态差异。在本发明实施例中采用该DSDT来保存热插拔相关的CPU的IIO模块的初始化信息,从而使得第一CPU在任何时候都能获取到X86***当前所有CPU的IIO模块的初始化信息。因此,在本发明实施例中将利用现有的DSDT进行及时更新CPU的IIO模块的初始化信息,使得OS能够实时从DSDT表中获取到当前CPU的IIO模块的初始化信息。
下面将以具体实施例,对本发明进行详细介绍。
请参阅图1,图1为本发明实施例提供的输入输出虚拟化资源的调整方法流程示意图;如图1所示,一种输入输出虚拟化资源的调整方法,可包括:
101、启动X86***;
102、第一CPU通过BIOS检测X86***中已添加的其它CPU,获取其它CPU集成的IIO模块的初始化信息,生成DMAR表;
这里所指的其它CPU是不包括第一CPU在内的其它可以以热插拔方式进行热添加或热移除的CPU。本发明实施例中所指的第一CPU为上述介绍的通过蓝桥外挂flash的CPU(可以为Legacy),该flash中存储有BIOS程序。
在本发明实施例中,DMAR表根据IIO模块的初始化信息生成,DMAR表包括所有其它CPU集成的IIO模块的初始化信息。每一个CPU中的IIO模块都具有自己的设备标识(例如设备编号),因此,在DMAR表中可以以IIO模块的设备标识区分保存。且此时两份表格的初始化信息一致。
可以理解,是由BIOS通过ACPI将初始化时硬件的信息抽象成初始化信息生成DMAR表。
103、第一CPU通过BIOS将DMAR表中的IIO模块的初始化信息拷贝到DSDT;
可以理解,在生成DMAR表后,将DMAR表中的IIO模块的初始化信息拷贝到DSDT中,在DSDT中IIO模块的初始化信息同样以设备标识进行区分保存。
在本发明一些实施例中,在X86***启动时,BIOS在内存中申请到一个自定义内存,然后将DMAR中的IIO模块的初始化信息拷贝到自定义内存中,且以DSDT的格式将初始化信息保存到自定义内存。在DSDT中定义关键字,利用该关键字与自定义内存建立关联,在后续OS从DSDT中获取初始化信息时,则可以通过该关联关系从自定义内存中获取(具体实现流程将在后续介绍)。
104、第一CPU通过BIOS检测到热添加进来的第二CPU时,获取第二CPU集成的IIO模块的初始化信息,将第二CPU的IIO模块的初始化信息添加到上述DSDT;
在CPU热添加时,将会有IIO模块的初始化程序运行,这些程序运行在BIOS的***管理中断模式(System Management Mode,简称SMM)下。因此,BIOS能够感知到第二CPU的IIO模块的初始化信息并获取,再通过ACPI将获取到的第二CPU的IIO模块保存进上述DSDT表(此时的DSDT已将X86***初始化时所有其它CPU的IIO模块的初始化信息保存进来,那么在此基础上将添加进第二CPU的IIO模块的初始化信息),第二CPU的IIO模块的初始化信息同样以设备标识进行保存。此时DSDT中将比DMAR表多了第二CPU的IIO模块的初始化信息。
在本发明一些实施例中,同样是通过将第二CPU的IIO模块的初始化信息保存到上述自定义内存中,由于自定义内存与DSDT表的关联,从而实现将第二CPU的IIO模块的初始化信息保存到DSDT表。
执行完步骤104后转向步骤105。
105、第一CPU从DSDT读取第二CPU的IIO模块的初始化信息,配置输入输出虚拟化资源以完成该第二CPU的热添加;
需要说明,在CPU热添加时,除了完成对热添加的第二CPU的IIO模块的初始化信息的配置,还创建相应的数据结构,同时,也将分配PCIe根桥和IOAPIC的资源和创建相关数据结构。
其中,输入输出虚拟化资源配置是根据第二CPU的IIO模块的初始化信息完成,具体是为IIO模块配置分段号、对应的内存地址区间、内存地址区间对应的亲和域等,以便在该IIO模块外接I/O设备时,该I/O设备能够利用这些资源。
在本发明一些实施例中,第二CPU的IIO模块的初始化信息是保存在自定义内存中,那么DSDT可以让OS根据其与自定义内存的关联关系获取自定义内存中的初始化信息很重要的一个原因是,DSDT中提供了一种叫做“Method”的机制。DSDT中的方法(Method)通过描述一种行为来告诉OS的ACPI驱动应该做什么来获取相应的信息。比如DSDT提供的Method(_GSB),当写成返回(120)即return(120)的时候,表示每次OS想获取_GSB的值时,ACPI驱动将读到120。也可以将该方法改写成return(XXXX),则表示每次OS想获取_GSB的值时,ACPI驱动将读到XXXX这个变量的值,而XXXX的值可以由开发者根据用户需要设置。
DSDT的开发软件中包括诸多设备描述,是按照包含与被包含的层级关系来排布的。比如IIO模块包含PCIE根桥、IOAPIC、IOMMU三个部分,也就是三个子设备,可以在DSDT中表示为:
上述伪代码仅用来示意层级排布的表达方式,并且假设I/O虚拟化在ACPI规范中定义了_HID。关键字设备(Device)后面用一对大括号表示包含关系,称为域(Scope),上述伪代码中将PCIE根桥、IOAPIC、VT-d三个子设备放在IIO模块的域中,表示这三个设备是属于IIO模块的设备。
这里进一步介绍一下方法Method(_DSM),其中,_DSM(Device Specific Method)是由ACPI规范定义的用来给主板和操作***的开发者自定义功能的方法。也就是说,只要符合_DSM的输出、输出参数要求,开发者可以用_DSM为某个设备自定义功能。_DSM的传入4个参数包括设备的通用唯一标识符(Universally Unique Identifier,简称UUID)、版本号、功能号和一个定制参数包,而输出则为一个数据缓存块。所以只要DSDT的提供者(BIOS)与DSDT的消费者(OS的ACPI驱动)约定好_DSM的输入、输出参数,就可以实现向OS相对实时提供IIO模块的初始化信息。
为了进行I/O虚拟化资源的调整,就在每个IIO模块的scope中放入一个_DSMMethod,在进行CPU热插拔时,OS通过ACPI驱动利用设备的包含关系找到对应的_DSM,然后在通过_DSM的返回参数获得IIO模块的初始化信息。例如可以简单表示如下:
因此,在本发明实施例中,通过将Method(_DSM)描述一个行为就是:将“自定义内容”的数据拷贝到ACPI缓存,并将ACPI缓存作为Method(_DSM)的返回值,从而第一CPU(也就是OS)能够获取到自定义内存中的初始化信息。
106、第一CPU通过BIOS检测有需要热移除的第三CPU;
其中,该第三CPU可以是上述步骤102中的其它CPU中的任意一个或者上述步骤104中的第二CPU。同样,在X86***运行过程中,如有CPU要热移除,BIOS同样能够感知得到。
107、第一CPU从DSDT获取第三CPU集成的IIO模块的初始化信息,删除输入输出虚拟化资源以完成该第三CPU的热移除。
X86***运行过程中,如果有CPU热移除,从DSDT中获取初始化信息,然后将I/O虚拟化资源停用,并且删除相应的数据结构。当然,还需要将PCIe根桥和IOAPIC对应的资源停用,使得要被移除的设备不再被分配到物理资源,并控制其断电,以便将整个CPU从硬件***中拔出。
可以看出,本发明实施例中,利用ACPI提供的动态表DSDT,在X86***初始化时,将X86***中已添加的CPU的IIO模块的初始化信息保存到改DSDT表。在X86***运行过程中,若有热添加的CPU,则将热添加的CPU的IIO模块的初始化信息也保存到该DSDT,并且从该DSDT读取添加进去的初始化信息完成该CPU的热添加。之后,若需要对X86***中当前的CPU热移除时,则可以从DSDT表中获取热移除的CPU的IIO模块的初始化信息,以完成该CPU的热移除。
请参阅图2,图2为本发明实施例提供的处理器的结构示意图;如图2所示,该处理器设置于X86***中,该X86***通过热插拔方式热添加第二CPU,该处理器可包括:
检测模块210,用于调用基本输入输出***BIOS检测到热添加进来的第二CPU,获取集成在所述第二CPU上的内部输入输出IIO模块的初始化信息,并将所述初始化信息保存到差别化***描述表DSDT,所述初始化信息用于调整输入输出虚拟化资源;
资源调整模块220,用于根据所述DSDT中的所述初始化信息,配置输入输出虚拟化资源以完成所述第二CPU的热添加。
可选地,上述初始化信息至少包括设备类型、分段号、总线号、所占用的内存地址区间、所述内存地址区间对应的亲和域。
在本发明一些实施例中,上述检测模块210还用于,在所述X86***初始化时,调用所述BIOS检测所述X86***中已添加的其它第二CPU,获取所述其它CPU中集成的IIO模块的初始化信息,并将获取的初始化信息保存到所述DSDT。
请参阅图3,图3为本发明实施例提供的处理器的另一结构示意图;如图3所示,该处理器设置于X86***中,该X86统通过热插拔方式热添加第二CPU,该处理器可可包括:
检测模块310,用于调用基本输入输出***BIOS检测需要热移除的第二CPU;
资源调整模块320,用于从差别化***描述表DSDT获取所述第二CPU中集成的内部输入输出IIO模块的初始化信息,所述初始化信息用于调整输入输出虚拟化资源;根据所述初始化信息,删除输入输出虚拟化资源以实现所述第二CPU的热移除。
可选地,初始化信息至少包括设备类型、分段号、总线号、所占用的内存地址区间、所述内存地址区间对应的亲和域。
在本发明一些实施例中,上述检测模块310还用于,在所述X86***初始化时,调用所述BIOS检测所述X86***中已添加的所述第二CPU和其它CPU,获取所述第二CPU中集成的IIO模块的初始化信息和所述其它CPU中集成的IIO模块的初始化信息,并将获取的初始化信息保存到所述DSDT。
在本发明一些实施例中,上述检测模块310还用于,调用所述BIOS检测到所述第二CPU热添加进来,获取所述第二CPU集成的IIO模块的初始化信息,并将所述第二CPU的IIO模块的初始化信息保存到所述DSDT。
请参考图4,图4为本发明实施例提供的处理器的另一结构示意图,其中,该处理器401通过至少一个通信总线与至少一个网络接口或者其它通信接口、存储器402连接通信。所述处理器401用于执行存储器中存储的可执行模块,例如计算机程序。所述存储器402可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个网络接口(可以是有线或者无线)实现该***网关与至少一个其它网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
如图4所示,在一些实施方式中,所述存储器402中存储了程序指令,程序指令可以被处理器401执行,所述处理器401具体执行以下步骤:调用基本输入输出***BIOS检测到热添加进来的第二CPU,获取集成在所述第二CPU上的内部输入输出IIO模块的初始化信息,并将所述初始化信息保存到差别化***描述表DSDT,所述初始化信息用于调整输入输出虚拟化资源;根据所述DSDT中的所述初始化信息,配置输入输出虚拟化资源以完成所述第二CPU的热添加;
或者,调用基本输入输出***BIOS检测需要热移除的第二CPU;从差别化***描述表DSDT获取所述第二CPU中集成的内部输入输出IIO模块的初始化信息,所述初始化信息用于调整输入输出虚拟化资源;根据所述初始化信息,删除输入输出虚拟化资源以实现所述第二CPU的热移除。
在一些实施方式中,所述处理器401还可以执行以下步骤:在所述X86***初始化时,调用所述BIOS检测所述X86***中已添加的其它CPU,获取所述其它CPU中集成的IIO模块的初始化信息,并将获取的初始化信息保存到所述DSDT。
在一些实施方式中,所述处理器401还可以执行以下步骤:在所述X86***初始化时,调用所述BIOS检测所述X86***中已添加的所述第二CPU和其它CPU,获取所述第二CPU中集成的IIO模块的初始化信息和所述其它CPU中集成IIO模块的初始化信息,并将获取的初始化信息保存到所述DSDT。
在一些实施方式中,所述处理器401还可以执行以下步骤:调用所述BIOS检测到所述第二CPU热添加进来,获取所述第二CPU集成的IIO模块的初始化信息,并将所述第二CPU的IIO模块的初始化信息保存到所述DSDT。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本发明所提供的一种输入输出虚拟化资源的调整方法及处理器进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (14)
1.一种输入输出虚拟化资源的调整方法,其特征在于,应用于X86***,所述X86***中包括一个第一中央处理器CPU,所述X86***通过热插拔方式热添加第二中央处理器CPU,所述方法包括:
所述第一中央处理器CPU调用基本输入输出***BIOS检测到热添加进来的第二中央处理器CPU,获取集成在所述第二中央处理器CPU上的内部输入输出IIO模块的初始化信息,并将所述初始化信息保存到差别化***描述表DSDT,所述初始化信息用于调整输入输出虚拟化资源;
所述第一中央处理器CPU根据所述DSDT中的所述初始化信息,配置输入输出虚拟化资源以完成所述第二中央处理器CPU的热添加。
2.根据权利要求1所述的方法,其特征在于,所述初始化信息至少包括设备类型、分段号、总线号、所占用的内存地址区间、所述内存地址区间对应的亲和域。
3.根据权利要求1或2所述的方法,其特征在于,所述第一中央处理器CPU调用基本输入输出***BIOS检测热添加的第二中央处理器CPU之前包括:
在所述X86***初始化时,所述第一中央处理器CPU调用所述BIOS检测所述X86***中已添加的其它中央处理器CPU,获取所述其它中央处理器CPU中集成的IIO模块的初始化信息,并将获取的初始化信息保存到所述DSDT。
4.一种输入输出虚拟化资源的调整方法,其特征在于,应用于X86***,所述X86***中包括一个第一中央处理器CPU,所述X86***通过热插拔方式热移除第二中央处理器CPU,所述方法包括:
所述第一中央处理器CPU调用基本输入输出***BIOS检测需要热移除的第二中央处理器CPU;
所述第一中央处理器CPU从差别化***描述表DSDT获取所述第二中央处理器CPU中集成的内部输入输出IIO模块的初始化信息,所述初始化信息用于调整输入输出虚拟化资源;
所述第一中央处理器CPU根据所述初始化信息,删除输入输出虚拟化资源以实现所述第二中央处理器CPU的热移除。
5.根据权利要求4所述的方法,其特征在于,所述初始化信息至少包括设备类型、分段号、总线号、所占用的内存地址区间、所述内存地址区间对应的亲和域。
6.根据权利要求4或5所述的方法,其特征在于,所述第一中央处理器CPU调用基本输入输出***BIOS检测热移除的第二中央处理器CPU之前包括:
在所述X86***初始化时,所述第一中央处理器CPU调用所述BIOS检测所述X86***中已添加的所述第二中央处理器CPU和其它中央处理器CPU,获取所述第二中央处理器CPU中集成的IIO模块的初始化信息和所述其它中央处理器CPU中集成IIO模块的初始化信息,并将获取的初始化信息保存到所述DSDT。
7.根据权利要求4或5所述的方法,其特征在于,所述第一中央处理器CPU调用基本输入输出***BIOS检测热移除的第二中央处理器CPU之前包括:
所述第一中央处理器CPU调用所述BIOS检测到所述第二中央处理器CPU热添加进来,获取所述第二中央处理器CPU集成的IIO模块的初始化信息,并将所述第二中央处理器CPU的IIO模块的初始化信息保存到所述DSDT。
8.一种处理器,其特征在于,所述处理器设置于X86***中,所述X86***通过热插拔方式热添加第二中央处理器CPU,所述处理器包括:
检测模块,用于调用基本输入输出***BIOS检测到热添加进来的第二中央处理器CPU,获取集成在所述第二中央处理器CPU上的内部输入输出IIO模块的初始化信息,并将所述初始化信息保存到差别化***描述表DSDT,所述初始化信息用于调整输入输出虚拟化资源;
资源调整模块,用于根据所述DSDT中的所述初始化信息,配置输入输出虚拟化资源以完成所述第二中央处理器CPU的热添加。
9.根据权利要求8所述的处理器,其特征在于,
所述初始化信息至少包括设备类型、分段号、总线号、所占用的内存地址区间、所述内存地址区间对应的亲和域。
10.根据权利要求8或9所述的处理器,其特征在于,
所述检测模块还用于,在所述X86***初始化时,调用所述BIOS检测所述X86***中已添加的其它第二中央处理器CPU,获取所述其它中央处理器CPU中集成的IIO模块的初始化信息,并将获取的初始化信息保存到所述DSDT。
11.一种处理器,其特征在于,所述处理器设置于X86***中,所述X86***通过热插拔方式热移除第二中央处理器CPU,包括:
检测模块,用于调用基本输入输出***BIOS检测需要热移除的第二中央处理器CPU;
资源调整模块,用于从差别化***描述表DSDT获取所述第二中央处理器CPU中集成的内部输入输出IIO模块的初始化信息,所述初始化信息用于调整输入输出虚拟化资源;根据所述初始化信息,删除输入输出虚拟化资源以实现所述第二中央处理器CPU的热移除。
12.根据权利要求11所述的处理器,其特征在于,所述初始化信息至少包括设备类型、分段号、总线号、所占用的内存地址区间、所述内存地址区间对应的亲和域。
13.根据权利要求11或12所述的处理器,其特征在于,
所述检测模块还用于,在所述X86***初始化时,调用所述BIOS检测所述X86***中已添加的所述第二中央处理器CPU和其它中央处理器CPU,获取所述第二中央处理器CPU中集成的IIO模块的初始化信息和所述其它中央处理器CPU中集成的IIO模块的初始化信息,并将获取的初始化信息保存到所述DSDT。
14.根据权利要求11或12所述的处理器,其特征在于,
所述检测模块还用于,调用所述BIOS检测到所述第二中央处理器CPU热添加进来,获取所述第二中央处理器CPU集成的IIO模块的初始化信息,并将所述第二中央处理器CPU的IIO模块的初始化信息保存到所述DSDT。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510780016.3A CN106708596B (zh) | 2015-11-13 | 2015-11-13 | 一种输入输出虚拟化资源的调整方法及处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510780016.3A CN106708596B (zh) | 2015-11-13 | 2015-11-13 | 一种输入输出虚拟化资源的调整方法及处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106708596A CN106708596A (zh) | 2017-05-24 |
CN106708596B true CN106708596B (zh) | 2020-02-14 |
Family
ID=58930328
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510780016.3A Active CN106708596B (zh) | 2015-11-13 | 2015-11-13 | 一种输入输出虚拟化资源的调整方法及处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106708596B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112069113B (zh) * | 2020-09-04 | 2023-01-06 | 龙芯中科技术股份有限公司 | I2c设备配置方法和*** |
CN112069102B (zh) * | 2020-09-04 | 2022-08-26 | 龙芯中科技术股份有限公司 | Gpio控制器配置方法和*** |
CN112069112B (zh) * | 2020-09-04 | 2022-08-19 | 龙芯中科技术股份有限公司 | Uart控制器配置方法和*** |
CN115543545B (zh) * | 2022-11-25 | 2023-03-17 | 麒麟软件有限公司 | Jailhouse使用ACPI实现设备隔离的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222014A (zh) * | 2011-06-16 | 2011-10-19 | 华中科技大学 | 基于内存热插拔的虚拟机动态内存管理*** |
CN103412836A (zh) * | 2013-06-26 | 2013-11-27 | 华为技术有限公司 | 热插拔处理方法、装置以及*** |
CN103699444A (zh) * | 2013-12-17 | 2014-04-02 | 华为技术有限公司 | 中央处理器热插拔的实现方法及装置 |
CN104375881A (zh) * | 2014-10-28 | 2015-02-25 | 江苏中科梦兰电子科技有限公司 | 龙芯处理器的主核热插拔方法 |
-
2015
- 2015-11-13 CN CN201510780016.3A patent/CN106708596B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222014A (zh) * | 2011-06-16 | 2011-10-19 | 华中科技大学 | 基于内存热插拔的虚拟机动态内存管理*** |
CN103412836A (zh) * | 2013-06-26 | 2013-11-27 | 华为技术有限公司 | 热插拔处理方法、装置以及*** |
CN103699444A (zh) * | 2013-12-17 | 2014-04-02 | 华为技术有限公司 | 中央处理器热插拔的实现方法及装置 |
CN104375881A (zh) * | 2014-10-28 | 2015-02-25 | 江苏中科梦兰电子科技有限公司 | 龙芯处理器的主核热插拔方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106708596A (zh) | 2017-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10282192B1 (en) | Updating device code through a bus | |
JP6739633B2 (ja) | 構成可能論理プラットフォーム | |
US10241951B1 (en) | Device full memory access through standard PCI express bus | |
US8645605B2 (en) | Sharing multiple virtual functions to a host using a pseudo physical function | |
KR101602991B1 (ko) | 비가상화 시스템에서의 메모리 확장을 지원하기 위한 상호 운영 시스템 메모리 핫스왑 | |
JPH04263349A (ja) | コンピュータにbiosをロードする装置及び方法 | |
JP6017706B2 (ja) | ピアモニタにて信頼性・可用性・保守性(ras)フローをサポートする機構 | |
US20090265708A1 (en) | Information Processing Apparatus and Method of Controlling Information Processing Apparatus | |
US20150356049A1 (en) | Assigning processors to memory mapped configuration | |
CN106708596B (zh) | 一种输入输出虚拟化资源的调整方法及处理器 | |
US10572434B2 (en) | Intelligent certificate discovery in physical and virtualized networks | |
US10303487B2 (en) | System and method for booting an information handling system | |
US9417886B2 (en) | System and method for dynamically changing system behavior by modifying boot configuration data and registry entries | |
JP5778296B2 (ja) | 仮想計算機システム、仮想化機構、及びデータ管理方法 | |
US10318460B2 (en) | UMA-aware root bus selection | |
TWI436281B (zh) | 注入異動以支援實體裝置控制器之虛擬化的技術 | |
JP2010152892A (ja) | ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移行するためのチップセットサポート | |
CN103842980B (zh) | 用于协议中立织物的方法、***和装置 | |
US11392512B2 (en) | USB method and apparatus in a virtualization environment with multi-VM | |
US9734103B2 (en) | Systems and methods for transforming a central processing unit (CPU) socket into a memory and/or input/output (I/O) expander | |
JP2010218449A (ja) | リソース割り当てシステム、及びリソース割り当て方法 | |
US10339082B2 (en) | Technologies for stable secure channel identifier mapping for static and dynamic devices | |
WO2015006923A1 (en) | Techniques for dynamically redirecting device driver operations to user space | |
TWI840849B (zh) | 計算系統、電腦實施方法及電腦程式產品 | |
US11995452B2 (en) | Firmware memory map namespace for concurrent containers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |