一种系统及其动态分配MMIO资源的方法技术方案

技术编号:15329270 阅读:84 留言:0更新日期:2017-05-16 12:59
本发明专利技术公开了一种系统及其动态分配MMIO资源的方法。该方法包括以下步骤:获取一CPU所需的MMIO资源的大小;查询内存地址空间中的MMIO资源空余的地址段;判断内存地址空间中的MMIO资源空余的地址段是否大于或等于CPU所需的MMIO资源的大小,并在判断的结果为是时,从空余的地址段中分配对应大小的地址段给CPU。通过上述方式,本发明专利技术可以动态的提供对应大小的MMIO资源给CPU,以解决CPU上MMIO资源不够而导致的设备无法使用的问题,并且实现MMIO资源充分利用。

A system and method for dynamically allocating MMIO resources

The invention discloses a system and a method for dynamically allocating MMIO resources. The method comprises the following steps: obtaining a CPU MMIO resources needed to address segment size; query MMIO resources free memory in the address space; determine the MMIO address segment resources free memory address space of CPU is greater than or equal to the required MMIO resource size, and in the judgment of the results is. Address is assigned to the CPU corresponding to the size of a vacancy from the address. Through the above method, the invention can dynamically provide corresponding size MMIO resources to the CPU, so as to solve the problem that the equipment caused by insufficient MMIO resources on the CPU can not be used, and the full utilization of the MMIO resources can be realized.

【技术实现步骤摘要】
一种系统及其动态分配MMIO资源的方法
本专利技术涉及资源分配
,尤其是涉及一种系统及其动态分配MMIO资源的方法。
技术介绍
现有的大部分系统,例如X86系统中,大部分的PCI(PeripheralComponentInterconnect,外设部件互连标准)设备都需要用到32位的MMIO(MemorymappingI/O,内存映射I/O)资源,通常我们将32位的MMIO资源称为MMIOL(MemoryMapIOLow,低内存映射I/O)资源。MMIOL资源通常位于系统的内存地址4GB以下。在多节点大系统中,由于系统中CPU(CentralProcessingUnit,中央处理器)数量比较多,PCI设备所需的MMIOL资源显得比较紧缺。如何合理的分配MMIOL资源显得尤为重要,现有技术提供了两种MMIOL资源的分配方案,具体如下文所述。第一种分配方案:属于完全固定的MMIOL资源分配方式。具体而言,每个物理CPU所分配到的MMIOL资源的大小都是不变的。例如,若MMIOL资源的大小为2GB,规定每个CPU分配32MB的MMIOL资源。则在64个CPU组成的NC系统中,MMIOL资源全部分配到每个CPU中。但在32个CPU组成的NC系统中,由于每个CPU同样是分配到32MB的MMIOL资源,则会剩余1GB的MMIOL资源,由此造成资源的浪费。第二种分配方案:属于不完全固定的MMIOL资源分配方式。具体而言,不论多节点系统的规模是多大,系统中所有的MMIOL资源都会被分配完。例如,若MMIOL资源的大小为2GB,则在64个CPU组成的NC系统中,每个CPU分配到32MB的MMIOL资源中。在32个CPU组成的NC系统中,每个CPU分配到64MB的MMIOL资源。综上,现有技术的两种分配方案都是分配给CPU固定的MMIOL资源,如果在某个CPU上多插几个PCI设备,则很可能导致资源不足而导致设备无法使用。
技术实现思路
本专利技术主要解决的技术问题是提供一种系统及其动态分配MMIO资源的方法,能够动态分配MMIO资源,以解决某个或某几个CPU上MMIO资源不够而导致的设备无法使用的问题,并且实现MMIO资源充分利用。第一方面提供一种系统动态分配MMIO资源的方法,方法包括以下步骤:获取一CPU所需的MMIO资源的大小;查询内存地址空间中的MMIO资源空余的地址段;判断内存地址空间中的MMIO资源空余的地址段是否大于或等于CPU所需的MMIO资源的大小,并在判断的结果为是时,从空余的地址段中分配对应大小的地址段给CPU。在第一方面的第一种可能的实现方式中,方法还包括:在判断的结果为否时,不进行MMIO资源的地址段的分配,并返回错误提示。在第一方面的第二种可能的实现方式中,方法还包括:枚举CPU的PCI设备,并根据PCI设备来计算CPU所需的MMIO资源的大小。在第一方面的第三种可能的实现方式中,从空余的地址段中分配对应大小的地址段给CPU的步骤还包括:对对应大小的地址段设置译码规则,然后再将设置了译码规则的对应大小的地址段分配给CPU,使得CPU可以根据译码规则去访问对应大小的地址段。在第一方面的第四种可能的实现方式中,方法还包括:判断是否给每一个CPU都分配了对应大小的地址段,并在判断的结果为否时继续执行获取CPU所需的MMIO资源的大小的步骤,以给未分配对应大小的地址段的CPU分配MMIO资源空余的地址段。在第一方面的第五种可能的实现方式中,MMIO资源的大小为1GB-2GB。第二方面提供一种系统,系统包括至少一个节点,至少一个节点包括至少一个CPU和节点控制器,其中,节点控制器与至少一个CPU电连接,系统包括:获取模块,用于获取CPU所需的MMIO资源的大小;查询模块,用于查询内存地址空间中的MMIO资源空余的地址段,进一步判断内存地址空间中的MMIO资源空余的地址段是否大于或等于CPU所需的MMIO资源的大小;分配模块,用于在查询模块判断的结果为是时,从空余的地址段中分配对应大小的地址段给CPU。在第二方面的第一种可能的实现方式中,分配模块在查询模块判断的结果为否时,不进行MMIO资源的地址段的分配,并返回错误提示。在第二方面的第二种可能的实现方式中,获取模块枚举CPU的PCI设备,并根据PCI设备来计算CPU所需的MMIO资源的大小。在第二方面的第三种可能的实现方式中,分配模块进一步用于对对应大小的地址段设置译码规则,然后再将设置了译码规则的对应大小的地址段分配给CPU,使得CPU可以根据译码规则去访问对应大小的地址段。在第二方面的第四种可能的实现方式中,至少一个节点包括多个CPU,多个CPU均与节点控制器电连;查询模块进一步判断是否给每一个CPU都分配了对应大小的地址段;获取模块在查询模块判断的结果为否时继续执行获取CPU所需的MMIO资源的大小,以给未分配对应大小的地址段的CPU分配MMIO资源空余的地址段。在第二方面的第五种可能的实现方式中,MMIO资源的大小为1GB-2GB。本专利技术的有益效果是:区别于现有技术的情况,本专利技术的系统动态分配MMIO资源的方法为:首先获取一CPU所需的MMIO资源的大小,然后查询内存地址空间中的MMIO资源空余的地址段,最后判断内存地址空间中的MMIO资源空余的地址段是否大于或等于该CPU所需的MMIO资源的大小,并在判断的结果为是时,从空余的地址段中分配对应大小的地址段给该CPU。因此,本专利技术可以动态的提供对应大小的MMIO资源给CPU,以解决CPU上MMIO资源不够而导致的设备无法使用的问题,并且实现MMIO资源充分利用。附图说明图1是本专利技术实施例提供的一种系统的结构示意图;图2是本专利技术实施例提供的一种系统的结构框图;图3是本专利技术的4GB以下的内存地址空间的结构示意图;图4是本专利技术实施例提供的一种系统动态分配MMIO资源的方法的流程图。具体实施方式请一并参阅图1和图2,图1是本专利技术实施例提供的一种系统的结构示意图,图2是本专利技术实施例提供的一种系统的结构框图。如图1所示,本专利技术的系统10包括至少一个节点11。其中,至少一个节点11包括至少一个CPU110和节点控制器111,节点控制器111与至少一个CPU110电连接。本实施例中,举例系统10为多节点系统,其包括多个节点11,应理解图1只是示例性的示出两个节点11,并不该理解为对本实施例的系统10的节点数量的限制。其中,每个节点11包括两个CPU110和一个节点控制器111,并且每个CPU110都与节点控制器111电连接。应理解,在其他实施例中,系统10还可以为其他数量节点的系统,并且每个节点的CPU110数量和节点控制器111的数量也可以为其他。例如每个节点包括多个CPU,多个CPU均与节点控制器电连接。本实施例中,多节点系统10优选为X86系统,其大部分的PCI设备都需要用到32位的MMIO资源,通常我们定义32位的MMIO资源称为MMIOL资源。32位的MMIO资源位于内存地址空间的4GB以下。请参阅图3所示,图3是本专利技术的4GB以下的内存地址空间的结构示意图。4GB以下内存地址空间包括1~2GB的Memory(内存)区间、256MB的MMCFGL(低内存映射配置)空间、40MB左本文档来自技高网
...
一种系统及其动态分配MMIO资源的方法

【技术保护点】
一种系统动态分配MMIO资源的方法,其特征在于,所述方法包括以下步骤:获取一CPU所需的MMIO资源的大小;查询内存地址空间中的MMIO资源空余的地址段;判断所述内存地址空间中的MMIO资源空余的地址段是否大于或等于所述CPU所需的MMIO资源的大小,并在判断的结果为是时,从所述空余的地址段中分配对应大小的地址段给所述CPU。

【技术特征摘要】
1.一种系统动态分配MMIO资源的方法,其特征在于,所述方法包括以下步骤:获取一CPU所需的MMIO资源的大小;查询内存地址空间中的MMIO资源空余的地址段;判断所述内存地址空间中的MMIO资源空余的地址段是否大于或等于所述CPU所需的MMIO资源的大小,并在判断的结果为是时,从所述空余的地址段中分配对应大小的地址段给所述CPU。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在判断的结果为否时,不进行MMIO资源的地址段的分配,并返回错误提示。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:枚举所述CPU的PCI设备,并根据所述PCI设备来计算所述CPU所需的MMIO资源的大小。4.根据权利要求1所述的方法,其特征在于,所述从所述空余的地址段中分配对应大小的地址段给所述CPU的步骤还包括:对所述对应大小的地址段设置译码规则,然后再将设置了译码规则的所述对应大小的地址段分配给所述CPU,使得所述CPU可以根据所述译码规则去访问所述对应大小的地址段。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:判断是否给每一个CPU都分配了对应大小的地址段,并在判断的结果为否时继续执行获取一CPU所需的MMIO资源的大小的步骤,以给未分配对应大小的地址段的CPU分配MMIO资源空余的地址段。6.根据权利要求1所述的方法,其特征在于,所述MMIO资源的大小为1GB-2GB。7.一种系统,其特征在于,所述系统包括至少一个节点,所述至少一个节点包括至少一个CPU和节点控制...

【专利技术属性】
技术研发人员:周超杨腾飞姜广吉
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1