一种地址资源分配方法及存储器的制作方法

文档序号:6438815阅读:239来源:国知局
专利名称:一种地址资源分配方法及存储器的制作方法
一种地址资源分配方法及存储器技术领域
本发明实施例涉及通信领域,尤其涉及一种为外围元件互连(PCI,Peripheral Component Interconnection)总线设备地址资源分配方法和存储器。
背景技术
基本输入输出系统(BI0S,Basic Input Output System)担负着初始化硬件,检测硬件功能,以及引导操作系统的责任。BIOS存放于一个掉电后内容不会丢失的只读存储器中,系统加电时处理器的第一条指令的地址会被定位到BIOS的存储器中,便于使初始化程序得到执行。
按照PCI规范,BIOS向PCI设备的基地址(Base Address)寄存器写入“_1”(或表示为32位宽的十六进制数OxFFFFFFFF),PCI设备收到指令后,反馈给BIOS自身需要的地址资源大小,BIOS读取这个资源数,据此来设定该设备的访问资源基地址(Base Address)。 基地址设置完成后,BIOS才可以对该PCI设备的寄存器采用基地址+偏移量(offset)的方式进行访问,并做更多配置。
目前常见的PCI设备地址资源分配方法为
BIOS完成CPU、内存等的初始化后,进入PCI设备初始化的阶段;
从“根总线”(bus number = 0)开始,逐层找到所有PCI设备,并为其分配总线号;
向每一个PCI设备的基地址寄存器中写入“_1”,然后等待PCI设备处理;
PCI设备反馈自己所需的分配的基地址;
BIOS根据反馈的分配的基地址,在整个系统还未分配的地址空间中分配一段给相应的PCI设备,即是向该PCI设备的基地址寄存器中写入为其分配的基地址。
本发明的发明人发现每次开机都要执行上述地址资源分配流程,而当系统扩大, PCI设备增多后,这一流程相对要占用更多时间,从而增加开机时间,不利于系统的快速启动。发明内容
本发明实施例提供了一种分配地址资源的方法,可以减少开机时间,加速系统启动。
一种地址资源分配方法,包括
获取外围元件互连PCI设备的设备号和功能号,PCI设备的数量和型号;
当获取的PCI设备的设备号和功能号与预先存储的PCI设备的设备号和功能号相同时,查询获取的PCI设备的数量和型号与预先存储的PCI设备的数量和型号是否一致;
若所述获取的PCI设备的数量和型号与预先存储的PCI设备的数量和型号一致, 则根据预先存储的PCI设备所需分配的基地址为PCI设备分配地址资源。
一种存储器,包括
获取单元,用于PCI设备的设备号和功能号,PCI设备的数量和型号;
查询单元,用于当获取单元获取的PCI设备的设备号和功能号与预先存储的PCI 设备的设备号和功能号相同时,查询获取单元获取的PCI设备的数量和型号与预先存储的 PCI设备的数量和型号是否一致;
地址分配单元,用于在查询单元查询到所述获取的PCI设备的数量和型号与预先存储的PCI设备的数量和型号一致时,根据预先存储的PCI设备所需分配的基地址为PCI 设备分配地址资源。
本发明实施例采用获取外围元件互连PCI设备的设备号和功能号,PCI设备的数量和型号;当获取的PCI设备的设备号和功能号与预先存储的PCI设备的设备号和功能号相同时,查询获取的PCI设备的数量和型号与预先存储的PCI设备的数量和型号是否一致; 若所述获取的PCI设备的数量和型号与预先存储的PCI设备的数量和型号一致,则根据预先存储的PCI设备所需分配的基地址为PCI设备分配地址资源。与现有技术相比,本发明实施例所提供的地址资源分配方法,不需要在每次开机后都要询问PCI设备需要多少地址资源,等待PCI设备回复后,再进行地址资源分配,可以减少开机时间,加速系统启动。


图1为本发明实施例中地址资源分配方法的一实施例示意图2为本发明实施例中地址资源分配方法应用场景实施例示意图3为本发明存储器的一实施例示意图4为本发明存储器的另一实施例示意图5为本发明存储器的另一实施例示意图
图6为本发明存储器的另一实施例示意图。
具体实施方式
本发明实施例提供了一种分配地址资源的方法,可以减少开机时间,加速系统启动。本发明实施例还提供了相应的存储器。下面分别进行详细说明。
请参阅图1,本发明地址资源分配方法的一实施例包括
101、获取PCI设备的设备号和功能号,PCI设备的数量和型号。
首次开机时,基本输入输出系统BIOS完成CPU、内存等的初始化后,进入PCI设备初始化的阶段;
从“根总线”(bus number = 0)开始,逐层找到所有PCI设备,并为其分配总线号, 向每一个PCI设备的基地址寄存器中写入“_1”,然后等待PCI设备处理,PCI设备反馈自己所需的分配的基地址,BIOS根据反馈的分配的基地址,在整个系统还未分配的地址空间中分配一段给相应的PCI设备,即是向该PCI设备的基地址寄存器中写入为其分配的基地址。
在开机后,可以获取每个PCI设备所需分配的基地址,在逐层找到所有PCI设备时,可以获取每个PCI设备的设备号和功能号,PCI设备的数量和型号;将获取到的每个PCI 设备所需分配的基地址和每个PCI设备的设备号和功能号,PCI设备的数量和型号;对应存储在存储器中,以方便后续开机时直接读取。
PCI设备的数量和型号通过PCI设备生产商标识符(VID,Vendor Identifier),设备标识符(DID,Device Identifier)和版本号(RID, Revision Identifier),来反映,获取PCI设备的数量和型号具体为获取PCI设备的生产商标识符,设备标识符和版本号;并将所述生产商标识符,设备标识符和版本号与PCI设备的设备号和功能号对应存储。
首次开机后,存储器中会有预先存储的PCI设备的设备号和功能号,PCI设备的数量和型号和预先存储的PCI设备所需分配的基地址;
在非首次开机时,要想知道PCI设备是否发生变化,需要获取PCI设备的设备号和功能号,PCI设备的数量和型号。
102、当获取的PCI设备的设备号和功能号与预先存储的PCI设备的设备号和功能号相同时,查询获取的PCI设备的数量和型号与预先存储的PCI设备的数量和型号是否一致;若一致,执行步骤103。
在后一次开机时,以第二次开机为例,存储器中已经有首次开机时所存储的PCI 设备的设备号和功能号,PCI设备的数量和型号,当PCI设备的设备号和功能号与之前存储的PCI设备的设备号和功能号相同时,只需要考虑PCI设备的数量和型号是否发生变化,无论是数量变化还是型号变化,都认为是PCI设备的数量和型号不一致;
PCI设备包括PCI根桥设备和PCI外插设备,PCI根桥设备有外接插槽,PCI外插设备插接在PCI根桥设备上,PCI根桥设备在数量和型号上是不会发生变化的,变化的只有 PCI外插设备。
关于PCI外插设备的认定可采用如下方法,用一份列表记录PCI设备的VID和 DID,在该表上会给出PCI设备是否为PCI根桥设备,所述PCI根桥设备上是否有外接插槽, 每个插槽对应的总线号可以查看PCI根桥设备上的根接口(Root Port)寄存器信息来确定,只需判断哪些设备接在Root Port上来确定PCI外插设备,其中确定PCI外插设备的表如下
表 1
Device ID & Vendor ID是否为PCI根桥设备是否有外接插槽mmmm8086Ye sYesxxxx8086YesNonnnnlOecNoNo
即通过这个表格就可以知道哪个设备(VID和DID与PCI设备是一一对应的)是桥设备,它是否有引出外接插槽。如果有引出外接插槽,那么接在它的RootPort后面的PCI 设备就被认定为外插设备。
查询获取的PCI设备的数量和型号与预先存储的PCI设备的数量和型号是否一致具体为查询获取的PCI设备的生产商标识符,设备标识符和版本号与预先存储的PCI设备的生产商标识符,设备标识符和版本号是否一致;若一致,说明PCI外插设备在数量和型号上都没有变化。
103、若所述获取的PCI设备的数量和型号与预先存储的PCI设备的数量和型号一致,则根据预先存储的PCI设备所需分配的基地址为PCI设备分配地址资源。
当获取的PCI设备的数量和型号与预先存储的PCI设备的数量和型号一致时,即本次开机时查询到的PCI设备的数量与型号与前一次开机时的PCI设备的数量与型号相同,从根据预先存储的PCI设备所需分配的基地址为PCI设备分配地址资源,对应的将为 PCI设备分配的地址资源写入到PCI设备基地址寄存器中。
本发明实施例获取PCI设备的设备号和功能号,PCI设备的数量和型号;当获取的 PCI设备的设备号和功能号与预先存储的PCI设备的设备号和功能号相同时,查询获取的 PCI设备的数量和型号与预先存储的PCI设备的数量和型号是否一致;若所述获取的PCI 设备的数量和型号与预先存储的PCI设备的数量和型号一致,则根据预先存储的PCI设备所需分配的基地址为PCI设备分配地址资源。与现有技术相比,本发明实施例所提供的地址资源分配方法,不需要在每次开机后都要询问PCI设备需要多少地址资源,等待PCI设备回复后,再进行地址资源分配,可以减少开机时间,加速系统启动。
可选地,在图1对应的实施例的基础上,在步骤101之后还可以包括判断获取的 PCI设备的设备号和功能号与预先存储的PCI设备的设备号和功能号是否相同。判断获取的PCI设备的设备号和功能号与预先存储的PCI设备的设备号和功能号是否相同具体为 判断获取的PCI设备的功能配置项是否发生变化,所述功能配置项为影响设备号和功能号的的选项;若所述功能配置项未发生变化,则获取的PCI设备的设备号和功能号与预先存储的PCI设备的设备号和功能号相同;若所述功能配置项发生变化,则获取的PCI设备的设备号和功能号与预先存储的PCI设备的设备号和功能号不相同。所述功能配置选项包括硬盘的AHCI、RAID,显卡的HDMI。
可选地,在图1对应的实施例的基础上,当获取的PCI设备的设备号和功能号与预先存储的PCI设备的设备号和功能号不相同时,获取PCI设备所需分配的基地址,并将获取的PCI设备所需分配的基地址与获取的PCI设备的设备号和功能号对应存储;并删除预先存储的PCI设备所需分配的基地址和预先存储的PCI设备的设备号和功能号。
可选地,在图1对应的实施例的基础上,当所述获取的PCI设备的数量和型号与预先存储的PCI设备的数量和型号不一致时,获取PCI设备所需分配的基地址,并将获取的 PCI设备所需分配的基地址与获取的PCI设备的数量和型号对应存储;并删除预先存储的 PCI设备所需分配的基地址和预先存储的PCI设备的数量和型号。
为便于理解,下面以具体应用场景为例,对本发明提供的地址资源分配方法进行详细说明。
参阅图2,本发明应用场景的一实施例包括
201、首次开机时,获取并对应存储PCI设备所需分配的基地址,PCI设备的设备号和功能号,PCI设备的数量与型号。
从“根总线”(bus number = 0)开始,逐层找到所有PCI设备,并为其分配总线号, 向每一个PCI设备的基地址寄存器中写入“_1”,然后等待PCI设备处理,PCI设备反馈自己所需的分配的基地址,BIOS根据反馈的分配的基地址,在整个系统还未分配的地址空间中分配一段给相应的PCI设备,即是向该PCI设备的基地址寄存器中写入为其分配的基地址。
在首次开机后,可以获取每个PCI设备所需分配的基地址,在逐层找到所有PCI设备时,可以获取每个PCI设备的设备号和功能号,将所述获取到的每个PCI设备所需分配的基地址和每个PCI设备的设备号和功能号存储在存储器中,存储列表如下
权利要求
1.一种地址资源分配方法,其特征在于,包括获取外围元件互连PCI设备的设备号和功能号,PCI设备的数量和型号;当获取的PCI设备的设备号和功能号与预先存储的PCI设备的设备号和功能号相同时,查询获取的PCI设备的数量和型号与预先存储的PCI设备的数量和型号是否一致;若所述获取的PCI设备的数量和型号与预先存储的PCI设备的数量和型号一致,则根据预先存储的PCI设备所需分配的基地址为PCI设备分配地址资源。
2.根据权利要求1所述的地址资源分配方法,其特征在于,当首次开机时,还包括获取PCI设备所需分配的基地址,并将获取的PCI设备所需分配的基地址与获取的PCI设备的设备号和功能号,PCI设备的数量和型号对应存储。
3.根据权利要求1所述的地址资源分配方法,其特征在于,还包括当获取的PCI设备的设备号和功能号与预先存储的PCI设备的设备号和功能号不相同时,获取PCI设备所需分配的基地址,并将获取的PCI设备所需分配的基地址与获取的PCI 设备的设备号和功能号对应存储;并删除预先存储的PCI设备所需分配的基地址和预先存储的PCI设备的设备号和功能号。
4.根据权利要求1所述的地址资源分配方法,其特征在于,还包括当所述获取的PCI设备的数量和型号与预先存储的PCI设备的数量和型号不一致时, 获取PCI设备所需分配的基地址,并将获取的PCI设备所需分配的基地址与获取的PCI设备的数量和型号对应存储;并删除预先存储的PCI设备所需分配的基地址和预先存储的 PCI设备的数量和型号。
5.根据权利要求1所述的地址资源分配方法,其特征在于,所述获取外围元件互连PCI 设备的设备号和功能号之后还包括判断获取的PCI设备的设备号和功能号与预先存储的PCI设备的设备号和功能号是否相同。
6.根据权利要求5所述的地址资源分配方法,其特征在于,所述判断获取的PCI设备的设备号和功能号与预先存储的PCI设备的设备号和功能号是否相同具体为判断获取的PCI设备的功能配置项是否发生变化,所述功能配置项为影响设备号和功能号的的选项;若所述功能配置项未发生变化,则获取的PCI设备的设备号和功能号与预先存储的 PCI设备的设备号和功能号相同;若所述功能配置项发生变化,则获取的PCI设备的设备号和功能号与预先存储的PCI 设备的设备号和功能号不相同。
7.根据权利要求1 6任意一项所述的地址资源分配方法,其特征在于,所述获取PCI设备的数量和型号具体为获取PCI设备的生产商标识符,设备标识符和版本号;所述查询获取的PCI设备的数量和型号与预先存储的PCI设备的数量和型号是否一致具体为查询获取的PCI设备的生产商标识符,设备标识符和版本号与预先存储的PCI设备的生产商标识符,设备标识符和版本号是否一致。
8.一种存储器,其特征在于,包括获取单元,用于获取PCI设备的设备号和功能号,PCI设备的数量和型号;查询单元,用于当获取单元获取的PCI设备的设备号和功能号与预先存储的PCI设备的设备号和功能号相同时,查询获取单元获取的PCI设备的数量和型号与预先存储的PCI 设备的数量和型号是否一致;地址分配单元,用于在查询单元查询到所述获取的PCI设备的数量和型号与预先存储的PCI设备的数量和型号一致时,根据预先存储的PCI设备所需分配的基地址为PCI设备分配地址资源。
9.根据权利要求8所述的存储器,其特征在于,还包括所述获取单元,还用于当首次开机时,获取PCI设备所需分配的基地址; 存储单元,用于将获取单元获取的PCI设备所需分配的基地址与获取的PCI设备的设备号和功能号,PCI设备的数量和型号对应存储。
10.根据权利要求9所述的存储器,其特征在于,还包括所述获取单元,还用于当获取的PCI设备的设备号和功能号与预先存储的PCI设备的设备号和功能号不相同时,获取PCI设备所需分配的基地址;所述存储单元,还用于将获取单元获取的PCI设备所需分配的基地址与获取的PCI设备的设备号和功能号对应存储;删除单元,用于在存储单元对应存储PCI设备所需分配的基地址与获取的PCI设备的设备号和功能号后,删除预先存储的PCI设备所需分配的基地址和预先存储的PCI设备的设备号和功能号。
11.根据权利要求10所述的存储器,其特征在于,还包括所述获取单元,还用于当所述获取的PCI设备的数量和型号与预先存储的PCI设备的数量和型号不一致时,获取PCI设备所需分配的基地址;所述存储单元,还用于将获取单元获取的PCI设备所需分配的基地址与获取的PCI设备的数量和型号对应存储;所述删除单元,还用于在存储单元对应存储PCI设备所需分配的基地址与获取的PCI 设备的数量和型号后,删除预先存储的PCI设备所需分配的基地址和预先存储的PCI设备的数量和型号。
12.根据权利要求8 11任意一项所述的存储器,其特征在于,还包括判断单元,用于判断获取单元获取的PCI设备的设备号和功能号与预先存储的PCI设备的设备号和功能号是否相同。
13.根据权利要求12所述的存储器,其特征在于,还包括所述判断单元,还用于判断获取的PCI设备的功能配置项是否发生变化,所述功能配置项为影响设备号和功能号的的选项。
14.根据权利要求13所述的存储器,其特征在于,还包括所述获取单元,还用于获取PCI设备的生产商标识符,设备标识符和版本号; 所述查询单元,还用于查询获取的PCI设备的生产商标识符,设备标识符和版本号与预先存储的PCI设备的生产商标识符,设备标识符和版本号是否一致。
全文摘要
本发明公开了一种地址资源分配方法,获取外围元件互连PCI设备的设备号和功能号,PCI设备的数量和型号;当获取的PCI设备的设备号和功能号与预先存储的PCI设备的设备号和功能号相同时,查询获取的PCI设备的数量和型号与预先存储的PCI设备的数量和型号是否一致;若所述获取的PCI设备的数量和型号与预先存储的PCI设备的数量和型号一致,则根据预先存储的PCI设备所需分配的基地址为PCI设备分配地址资源。本发明实施例所提供的地址资源分配方法,不需要在每次开机后都要询问PCI设备需要多少地址资源,等待PCI设备回复后,再进行地址资源分配,可以减少开机时间,加速系统启动。
文档编号G06F13/42GK102521195SQ20111036935
公开日2012年6月27日 申请日期2011年11月18日 优先权日2011年11月18日
发明者俞柏峰, 王元钢 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1