公开/公告号CN107193752A
专利类型发明专利
公开/公告日2017-09-22
原文格式PDF
申请/专利权人 郑州云海信息技术有限公司;
申请/专利号CN201710358593.2
申请日2017-05-19
分类号
代理机构济南诚智商标专利事务所有限公司;
代理人王汝银
地址 450018 河南省郑州市郑东新区心怡路278号16层1601室
入库时间 2023-06-19 03:23:15
法律状态公告日
法律状态信息
法律状态
2020-08-25
授权
授权
2020-08-14
专利申请权的转移 IPC(主分类):G06F12/02 登记生效日:20200727 变更前: 变更后: 申请日:20170519
专利申请权、专利权的转移
2017-10-24
实质审查的生效 IPC(主分类):G06F12/02 申请日:20170519
实质审查的生效
2017-09-22
公开
公开
技术领域
本发明涉及服务器、存储类服务器测试技术领域,具体地说是一种解决外插卡内存地址不够分配的方法。
背景技术
随着云时代的来临,大数据(Big data)也吸引了越来越多的关注.大数据(Bigdata)通常用来形容一个公司创造的大量非结构化和半结构化数据,这些数据在下载到关系型数据库用于分析时会花费过多时间和金钱。大数据分析常和云计算联系到一起,因为实时的大型数据集分析需要像MapReduce一样的框架来向数十、数百或甚至数千的电脑分配工作。因此在此背景下,在特定的应用场景下,传统服务器很难满足需求。就需要有几十个甚至上百个外插卡的机器来实现功能。
发明内容
本发明的目的在于提供一种解决外插卡内存地址不够分配的方法,用于解决由于内存地址分配不够导致的系统不能启动宕机的问题。
本发明解决其技术问题所采取的技术方案是:一种解决外插卡内存地址不够分配的方法,其特征是,具体包括以下步骤:
1)、BIOS的自检程序检测到外插卡;
2)、PCIE设备初始化,资源分配;
3)、BIOS检测CPU的内存寻址范围,并判断地址范围是否够用;
4)、如果够用,则使用真实的地址为外插卡分配资源,启动进入OS;否,则执行步骤5)操作;
5)、为外插卡分配虚拟的地址,启动进入OS。
进一步地,步骤3)中BIOS检测CPU的内存寻址范围,并判断地址范围是否够用的方法具体包括:
31)、BIOS读取CPU内部寄存器;
32)、得到CPU支持的地址线根数N,从而得到CPU自身支持的地址范围0-2N;
33)、BIOS检测外插卡的地址空间,判断其是否大于2N,如果是,则表示CPU地址范围不够用;否则,则表示CPU地址范围够用。
进一步地,步骤5)操作中为外插卡分配虚拟的地址的具体方法包括:
51)、BIOS修改PciResourceMem64Base和PciResourceMem64Base;
52)、BIOS修改FakeMMIObase和FakeMMIOSize;
53)、把分配的虚拟地址加入MMIO。
进一步地,步骤51)操作中修改PciResourceMem64Base和PciResourceMem64Base的具体方式为:
从CPU支持的最大地址范围起建立虚拟地址,虚拟地址的长度为从CPU支持的最大地址范围起的外插卡内存地址的空间。
进一步地,步骤52)操作中BIOS修改FakeMMIObase和FakeMMIOSize的具体方法为:
定义虚拟地址的base和长度与检测到外插卡的起始地址和长度一致。
进一步地,步骤53)操作中把分配的虚拟地址加入MMIO的方法具体包括:
把虚拟地址定义为MMIO,加入内存地址映射空间供BIOS使用。
本发明的有益效果是:
本发明修改底层代码(BIOS)在为PCIE外插卡分配内存资源时分配虚拟地址(假地址),从而避免了由于内存地址分配不够导致的系统不能启动宕机的问题。突破了现有的内存资源分配方式,通过使用该方法可以支持更多的外插卡,节省大量的硬件成本。通过分配虚拟内存地址的方式实现支持更多的外设。
附图说明
图1为本发明的流程图。
具体实施方式
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
如图1所示,一种解决外插卡内存地址不够分配的方法,具体包括以下步骤:
1)、BIOS的自检程序检测到外插卡;
2)、PCIE设备初始化,资源分配;
3)、BIOS检测CPU的内存寻址范围,并判断地址范围是否够用;
4)、如果够用,则使用真实的地址为外插卡分配资源,启动进入OS;否,则执行步骤5)操作;
5)、为外插卡分配虚拟的地址,启动进入OS。
步骤3)中BIOS检测CPU的内存寻址范围,并判断地址范围是否够用的方法具体包括:
31)、BIOS读取CPU内部寄存器;
32)、得到CPU支持的地址线根数N,从而得到CPU自身支持的地址范围0-2N;
33)、BIOS检测外插卡的地址空间,判断其是否大于2N,如果是,则表示CPU地址范围不够用;否则,则表示CPU地址范围够用。
步骤5)操作中为外插卡分配虚拟的地址的具体方法包括:
51)、BIOS修改PciResourceMem64Base和PciResourceMem64Base;
52)、BIOS修改FakeMMIObase和FakeMMIOSize;
53)、把分配的虚拟地址加入MMIO。
步骤51)操作中修改PciResourceMem64Base和PciResourceMem64Base的具体方式为:
从CPU支持的最大地址范围起建立虚拟地址,虚拟地址的长度为从CPU支持的最大地址范围起的外插卡内存地址的空间。
步骤52)操作中BIOS修改FakeMMIObase和FakeMMIOSize的具体方法为:
定义虚拟地址的base和长度与检测到外插卡的起始地址和长度一致。
步骤53)操作中把分配的虚拟地址加入MMIO的方法具体包括:
把虚拟地址定义为MMIO,加入内存地址映射空间供BIOS使用。
本实施例采用的CPU有36根地址线,其寻址范围为64G;采用16张K40GPU外插卡,外插卡需要16x32GB=512GB内存地址空间,因此明显CPU的寻址范围不够用,因此提出了一种解决外插卡内存地址不够分配的方法。
1)、BIOS的自检程序检测到外插卡,外插卡的内存地址空间为512G;
2)、PCIE设备初始化,资源分配;
3)、BIOS检测CPU的内存寻址范围为64G,判断地址范围不够用;
4)、为外插卡分配虚拟的地址,启动进入OS。
5)、BIOS修改PciResourceMem64Base和PciResourceMem64Base,从64G起建立512G的虚拟空间;
6)、BIOS修改FakeMMIObase和FakeMMIOSize,定义虚拟地址的base和长度与检测到外插卡的起始地址和长度一致,为512G。
7)、把分配的虚拟地址定义为MMIO,加入内存地址映射空间供BIOS使用。
以上所述只是本发明的优选实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也被视为本发明的保护范围。
机译: 一种用于管理闪存的方法,该方法使用对物理内存地址的细化分配逻辑,使用混合类型的存储设备进行存储
机译: 将内存地址分配给缓冲区组件,尤其是内存模块,从而每个缓冲区组件都有一个或多个内存组件,并为其分配可用的内存地址
机译: 一种用于控制和控制硬膜外导管,维持硬膜外导管无菌性并防止硬膜外导管污染的硬膜外导管分配器系统