对计算机系统中的设备进行动态资源配置的方法及系统的制作方法

文档序号:6612337阅读:202来源:国知局
专利名称:对计算机系统中的设备进行动态资源配置的方法及系统的制作方法
技术领域
本发明涉及一种对计算机系统中的设备迸行资源配置的方法及系 统,特别是涉及一种动态配置计算机系统中的设备的资源的方法及系 统。
背景技术
为实现对计算机系统中的设备进行资源配置,需要检测计算机系 统中所有总线和设备的等级拓扑。等级拓扑建立了计算机系统中所有
设备的物理关系。等级拓扑中的桥(bridge)或控制器等设备相对于连 接在其后面的下一级设备是"父设备"(parent device),而下一级设备 相对于桥或控制器等上一级设备是"子设备"(child device)。由于资源 分配的等级特性,位于桥或控制器后面的设备需要的资源必须可以被 桥或控制器首先获取,以使该资源传输到桥或控制器后面的设备。如 果某一设备需要的资源超过了其上一级设备的资源范围,则该设备不 能被分配到足够的资源,从而不能正常启动。
下面以CardBus控制器为例来具体说明传统的资源配置方法。 CardBus控制器是一种PCI-to-PCI桥(bridge),其连接周边元件扩展接 口 ( Peripheral Component Interconnect; PCI )总线禾卩CardBus槽。CardBus 槽用来接收32-bit CardBus卡或者16-bit PCMCIA版本2卡(PCMCIA Revision 2 card),也称作"R2卡"。由于CardBus控制器是一种 PCI-to-PCI桥,在Windows系统中,PCI驱动(PCI driver)对CardBus 控制器进行枚举(enumerate)和配置。但是,与PCI桥不同,当R2 卡插入到CardBus槽中时,由PCMCIA马区动(PCI driver)负责对CardBus 控制器的枚举和配置。
在Windows系统中,对CardBus控制器进行资源配置的传统方法 如图1所示。在步骤102, BIOS监测和配置设备,将CardBus控制器
设置为PC卡I/O卡(PC Card I/O Card; PCIC)模式。在计算机系统 启动后,BIOS监测系统中的设备,并分配资源,如输入/输出空间(I/O Space)和内存空间(Memory Space),给相应的设备。如果配置码
(Configuration Code)在BIOS中被正确执行,所有的控制器、bridge 和子设备(child devices)都将获得启动所需要的资源。在步骤104, NTDetect系统文件扫描ISA中断,确定哪一个ISA中断连接到CardBus 控制器,以鉴别用来支持插入CardBus槽中的R2卡的ISA中断。在步 骤106,高级配置与电源接口 (Advanced Configuration and Power Interface; ACPI)驱动加载,操作系统启用(call)与CardBus控制器 相关的jNI方法,将CardBus控制器设置为CardBus模式。在步骤108, 操作系统(Operating System)枚举CardBus控制器和分配默认资源
(default resource)给未被配置的CardBus控制器,其详细流程如图2 所示。
请参照图2,在步骤202, PCI总线驱动(PCI bus driver)扫描总 线,找到CardBus控制器。在步骤204, PCI总线驱动判定CardBus控 制器是否已经被BIOS配置。若CardBus控制器己经被BIOS配置,PCI 总线驱动不改变Car犯us控制器的配置。若CardBus控制器没有被BIOS 配置,如由于配置过程中的错误而导致CardBus控制器没有被BIOS配 置,在步骤206, PCI总线驱动分配默认资源给CardBus控制器,如在 Windows XP中,CardBus控制器被分配一个4KB的内存空间、 一个1 MB的预留内存空间和两个256-byte的I/O空间。在步骤208, PCI总 线驱动启动CardBus控制器并扫描位于控制器后面的总线。如果位于 CardBus控制器总线后面的是CardBus设备,在步骤210, PCI总线驱 动分配PCI资源给CardBus设备。如果位于CardBus控制器后面的是 R2设备,在步骤212, PCMCIA驱动分配Legacy资源给R2设备。
如果分配给CardBus控制器的PCI资源对位于控制器后面的设备 而言是足够的,PCI总线驱动将配置给CardBus控制器的PCI资源分配 给所有的CardBus设备,所有的CardBus设备都能启动和正常的运作。 如果分配给CardBus控制器的PCI资源对位于控制器后面的设备而言 是不够的,PCI总线驱动将配置给CardBus控制器的PCI资源分配给
CardBus设备直到资源被用尽。资源一旦配置完成后是不能重新配置 的,因此没有被分配资源的设备不能启动。也就是说,在CardBus控 制器得到资源配置并启动后,它的PCI资源不能被重新配置。如果出 现在CardBus控制器后面的CardBus设备需要CardBus控制器资源范 围以外的资源,操作系统不能再重新配置资源以解决该问题。
PCIE (PCI Express)总线是对PCI总线的发展,为了将PCIE总 线转换为CardBus界面,需要设置PCIE-CardBus控制器。由于PCIE 规范中没有定义PCIE-CardBus控制器,在启动Windows时,BIOS依 据对PCI-CardBus控制器的配置方式对PCIE-CardBus控制器进行配置, 但是分配的资源不能满足PCIE-CardBus控制器的需要。
如上所述,由于资源分配的等级特性,如果PCIE-CardBus控制器 位于PCI-to-PCI桥的后面,连接到PCIE-CardBus控制器的CardBus设 备只能从CardBus控制器接收由操作系统分配给PCI-to-PCI桥的默认 资源,如在Windows XP中,该默认资源是4 KB的I/O空间和最小1 MB 的Memory空间,而CardBus设备最少需要4 KB的Memory空间、1 MB 的预留Memory空间和两个256字节的I/O空间,因此,CardBus设备 不能工作。也就是说, 一旦CardBus设备需要的资源不在PCI-to-PCI 桥被分配的资源和PCIE-CardBus控制器被分配的资源的范围内, CardBus设备将不能运作。如上所述,由于资源一旦配置完成后是不能 重新配置的,Windows XP不会基于PCI-to-PCI桥后面的PCIE-CardBus 控制器的需求来重新配置资源,这导致即便系统有充足的资源,而 PCIE-CardBus控制器后面的CardBus设备却由于资源缺乏而不能启动。 因此,需要提供一种新的方法来对不能被传统方法成功配置的设 备,如PCIE-CardBus控制器,进行资源配置。

发明内容
本发明要解决的技术问题在于提供一种对PCIE-CardBus控制器
等设备进行动态资源配置的方法及计算机系统,可以基于设备的需求 来重新配置资源,以使该设备后面的下一级设备能正常启动。
为解决上述技术问题,本发明提供了一种对计算机系统中的设备
进行动态资源配置的方法。该方法包括以下步骤检测计算机系统的 总线拓扑,找到该设备的上一级设备;搜索可以分配给上一级设备的 空闲资源;在所述空闲资源的范围内,分配预定的资源给上一级设备; 以及在分配给上一级设备的资源范围内,分配预定的资源给所述设备。 作为上述方案的改进,搜索可以分配给上一级设备的空闲资源包 括检测与所述上一级设备连接的上级总线的资源;搜索连接到上级 总线的其他设备所分配的资源;以及从上级总线的资源中扣除分配给 连接到上级总线的其他设备的资源。
作为上述方案的改进,所述设备是PCIE-Car犯us控制器,所述上 一级设备是虚拟PCI-to-PCI桥。
本发明还提供了一种实现动态配置PCIE-CardBus控制器资源的 计算机系统。该计算机系统包括中央处理器和与中央处理器通信的 PCIE-CardBus控制器。中央处理器检测计算机系统的总线拓扑,确定 PCIE-CardBus控制器的物理连接;检测与PCIE-CardBus控制器连接的 虚拟PCI-to-PCI桥的上级总线的资源;寻找上级总线中可用于虚拟 PCI-to-PCI桥的空闲资源;在空闲资源的范围内,分配资源给虚拟 PCI-to-PCI桥;在虚拟PCI-to-PCI桥分配的资源的范围内,分配资源给 PCIE-CardBus控制器。
与现有技术相比,本发明找到需要配置资源的设备(如 PCIE-CardBus控制器)的上一级设备(如虚拟PCI-to-PCI桥),并搜索 到上一级设备可以获得的空闲资源,并根据该空闲资源,分配资源给 上一级设备,再根据上一级设备可以分配的资源,正确配置该设备, 从而使该设备后面的下一级设备能正常启动和工作。
以下结合附图和具体实施例对本发明的技术方案进行详细的说 明,以使本发明的特性和优点更为明显。


图1是现有技术中在Windows系统中,对CardBus控制器进行资 源配置的传统方法的流程图。
图2是图1中操作系统枚举CardBus控制器和分配默认资源给未
被配置的CardBus控制器的详细流程图。
图3是本发明实现动态配置PCIE-CardBus控制器资源的计算机系 统的结构框图。
图4是图3所示的计算机系统动态配置PCIE-CardBus控制器资源 的流程图。
具体实施例方式
图3是本发明实现动态配置PCIE-CardBus控制器资源的计算机系 统的结构框图,其包括中央处理器(CPU) 302和根联合体(Root Complex) 304。根联合体304包括一个与CPU连接的主机PCI桥、一 个或多个虚拟PCI-to-PCI桥和连接主机PCI桥和虚拟PCI-to-PCI桥的 PCI总线。根联合体304不仅将内存306通过前端总线(Front Side Bus; FSB)连接至CPU,而且也使计算机系统的所有模组和设备通过PCIE 连接在一起。根联合体304的每个虚拟PCI-to-PCI桥后面连接有一个 设备,如PCIE设备310、转换器Switch 312和PCIE-CardBus控制器 314。 PCIE-CardBus控制器314后面连接着CardBus设备316。转换器 Switch 312包括一个或多个虚拟PCI-to-PCI桥。转换器Switch 312通过 一个虚拟PCI-to-PCI桥与根联合体304连接。转换器Switch 312的一 个虚拟PCI-to-PCI桥的后面连接有PCIE设备318。 PCIE-CardBus控制 器314也可以与转换器Switch 312的虚拟PCI-to-PCI桥连接。因此, PCIE-CardBus控制器314可以连接至根联合体304的虚拟PCI-to-PCI 桥或者转换器Switch 312的虚拟PCI-to-PCI桥,以与CPU 302进行通 信。
中央处理器302对PCIE-CardBus控制器314进行资源配置,其具 体流程如图4所示。本领域的技术人员可以清楚地知道不论计算机系 统中的设备是否得到电源,其被默认处于"非初始化"状态,然后在 枚举和配置程序中得到枚举和配置,在这之后,设备才进入"活跃" 状态,即处于完全运作状态。此时,内存空间和1/0空间等资源是可用 的。如图4所示,在步骤402,检测计算机系统的总线拓扑,确定 PCIE-CardBus控制器314的物理连接,即找至l」PCIE-CardBus控制器
314的上一级设备。如图3所示,PCIE-CardBus控制器314的上一级 设备可以是根联合体304中的虚拟PCI-to-PCI桥或转换器Switch 312 中的虚拟PCI-to-PCI桥。这一步骤是为了检测计算机系统中所有总线 和设备的等级拓扑。PCIE-CardBus控制器314相对于位于其后面的 CardBus设备316是"父设备"(parent device),而CardBus设备316 则被认为是PCIE-CardBus控制器314的"子设备"(child device)。图3 所示的计算机系统中的大部分模组和设备是通过PCIE连接在一起。每 个PCIE的一端连接至虚拟PCI-to-PCI桥,作为虚拟PCI-to-PCI桥的 次总线(secondary bus )。
在步骤404,检测与PCIE-CardBus控制器314连接的虚拟 PCI-to-PCI桥的上级总线的资源,如Memory空间和I/O空间。在本发 明的一个实施例中,虚拟PCI-to-PCI桥的上级总线是根联合体304内 部的PCI总线。由于计算机系统中设备和总线的等级拓扑结构, PCIE-CardBus控制器314所需要的资源是通过虚拟的PCI-to-PCI桥从 它的上一级总线传输而来的。PCIE-CardBus控制器314和根联合体304 中的虚拟PCI-to-PCI桥并不消耗资源,他们只是将分配的资源传送到 下一级设备,如真正消耗资源的CardBus设备316或其他I/O设备。因 此,PCIE-CardBus控制器314可以获得的资源应该在它的上一级设备, 即虚拟PCI-to-PCI桥所分配的资源的范围内,而虚拟PCI-to-PCI桥可 以获得的资源应该在其上一级总线,即根联合体304内部的PCI总线 所分配资源的范围内。
在步骤406,寻找上级总线中可用于所述虚拟PCI-to-PCI桥的空 闲资源。在步骤404中检测到虚拟PCI-to-PCI桥的上级总线的资源, 即根联合体304中的PCI总线的资源,检测根联合体304中位于PCI 总线后面的与PCIE-CardBus控制器314连接的虚拟PCI-to-PCI桥之外 的其他虚拟PCI-to-PCI桥的资源,只要这些虚拟PCI-to-PCI桥的资源 没有被传送给相应的下一级设备,就可以将分配给这些虚拟PCI-to-PCI 桥的资源从PCI总线的资源中扣除掉,从而得到PCI总线的空闲资源。 由于资源空间的地址是连续分配的,剩下的地址空间可以由 PCIE-CardBus控制器314连接的上一级虚拟PCI-to-PCI桥使用。以内
存空间分配为例,CPU分配64MB内存空间给根联合体304中的主机 PCI桥,其中4MB被传送给根联合体304中与转换器switch 312连接 的虚拟PCI-to-PCI桥,1 MB被传送给根联合体304中与PCIE设备310 连接的虚拟PCI-to-PCI桥,不论在之前枚举和配置的过程中有多少资 源被传送给根联合体304中与PCIE-CardBus控制器314连接的虚拟 PCI-to-PCI桥,事实上,该虚拟PCI-to-PCI桥可以获得59 MB的内存 空间。1/0空间的分配规则也是如此,只不过分配给虚拟PCI-to-PCI桥 的最小1/0空间是4KB。
在步骤408,在所述空闲资源的范围内,通过更新资源空间的大小 和起始地址(Base address),分配资源给与PCIE-CardBus控制器314 连接的虚拟PCI-to-PCI桥。在本发明的一个实施例中,通过更新Memory 空间大小、I/O空间大小和空间的起始地址(Base address),分配2MB Memory空间和4 KB I/O空间给与PCIE-CardBus控制器314连接的虚 拟PCI-to-PCI桥。应该认识到,这里重新分配给虚拟PCI-to-PCI桥的 资源空间的大小只是经验取值,也可以选择其他的Memory空间和I/O 空间的范围,但需满足操作系统对CardBus控制器所要求的最少资源。 事实上,应该在步骤406检测到的可用于虚拟PCI-to-PCI桥的空闲资 源的范围内,重新分配资源给与PCIE-CardBus控制器314连接的虚拟 PCI-to-PCI桥。
在步骤410,在所述虚拟PCI-to-PCI桥分配的资源的范围内,分 配资源给PCIE-CardBus控制器314。在步骤408,更新了 PCIE-CardBus 控制器314的上一级设备的资源,即虚拟PCI-to-PCI桥的资源,虚拟 PCI-to-PCI桥在步骤408获得的资源被传送给PCIE-CardBus控制器 314。 PCIE-CardBus控制器314的资源应该在它的上一级设备,即虚拟 PCI-to-PCI桥的范围内。PCIE-CardBus控制器被分配到足够的资源, 然后将这些资源传送给它的子设备,如CardBus设备316,从而使 CardBus设备得到需要的资源来正常启动和工作。
本发明对PCIE-CardBus控制器314进行资源配置的方法可以在现 有计算机系统的配置程序中增加一个环节来实现。例如,在本发明的 一个实施例中,通过修改现有的BIOS,以对PCIE-CardBus控制器314
进行初始化处理,中央处理器302在BIOS对设备枚举和配置过程中执 行对PCIE-CardBus控制器314的动态资源配置。在本发明的另一个实 施例中,通过提供自定义的软件驱动(custom-built software driver)来 实现本发明对PCIE-CardBus控制器314的资源配置,中央处理器302 在BIOS运行之后,即在ACPI驱动加载之后,Windows操作系统枚举 PCIE-CardBus控制器之前执行对PCIE-CardBus控制器3I4的动态资源 配置。
由于本发明通过寻找与PCIE-CardBus控制器连接的虚拟 PCI-to-PCI桥的上级总线的空闲资源,并根据该空闲资源,更新虚拟 PCI-to-PCI桥的资源,以满足操作系统对PCIE-CardBus控制器所要求 的最少资源,从而正确配置PCIE-CardBus控制器,使PCIE-CardBus 控制器后面的CardBus设备能正常启动和工作。
本领域的技术人员应该认识到,虽然实施例中是以配置 PCIE-CardBus控制器为例对本发明作了详细描述,但本发明并不限于 此,本发明可以适用于任何其他不能被现有的BIOS和操作系统正确配 置或分配足够资源的设备。
最后所应说明的是以上实施例仅用以说明本发明而非限制,尽 管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员 应当理解,可以对本发明进行修改或者等同替换,而不脱离本发明的 精神和范围,其均应涵盖在本发明的权利要求范围当中。
权利要求
1. 一种对计算机系统中的设备进行动态资源配置的方法,其特征在于,该方法包括以下步骤检测计算机系统的总线拓扑,找到该设备的上一级设备;搜索可以分配给上一级设备的空闲资源;在所述空闲资源的范围内,分配预定的资源给上一级设备;及在分配给上一级设备的资源范围内,分配预定的资源给所述设备。
2. 根据权利要求1所述的对计算机系统中的设备进行动态资源配 置的方法,其特征在于,所述搜索可以分配给上一级设备的空闲资源包括检测与所述上一级设备连接的上级总线的资源;搜索连接到上级总线的其他设备所分配的资源;及从上级总线的资源中扣除分配给连接到上级总线的其他设备的资源。
3. 根据权利要求1或2所述的对计算机系统中的设备进行动态资 源配置的方法,其特征在于,所述设备是PCIE-CardBus控制器。
4. 根据权利要求3所述的对计算机系统中的设备进行动态资源配 置的方法,其特征在于,所述上一级设备是虚拟PCI-to-PCI桥。
5. 根据权利要求4所述的对计算机系统中的设备进行动态资源配 置的的方法,其特征在于,所述分配预定的资源给上一级设备包括分配2MB的内存空间和4KB的输入/输出空间。
6. 根据权利要求1或2所述的对计算机系统中的设备进行动态资 源配置的方法,其特征在于,所述分配预定的资源给上一级设备包括分配预定大小的内存空间给所述上 一 级设备; 分配预定大小的预留内存空间给所述上一级设备;及分配预定大小的输入/输出空间给所述上一级设备。
7. 根据权利要求1或2所述的对计算机系统中的设备进行动态资 源配置的方法,其特征在于,所述分配预定的资源给所述设备包括分配预定大小的内存空间给所述设备; 分配预定大小的预留内存空间给所述设备;及 分配预定大小的输入/输出空间给所述设备。
8. —种实现动态配置PCIE-CardBus控制器资源的计算机系统, 包括中央处理器,其特征在于,所述计算机系统还包括与中央处理器 通信的PCIE-CardBus控制器,所述中央处理器检测计算机系统的总线 拓扑,确定PCIE-CardBus控制器的物理连接;检测与PCIE-CardBus 控制器连接的虚拟PCI-to-PCI桥的上级总线的资源;寻找上级总线中 可用于所述虚拟PCI-to-PCI桥的空闲资源;在所述空闲资源的范围内, 分配资源给所述虚拟PCI-to-PCI桥;在所述虚拟PCI-to-PCI桥分配的 资源的范围内,分配资源给所述PCIE-CardBus控制器。
9. 根据权利要求8所述的实现动态配置PCIE-CardBus控制器资 源的计算机系统,其特征在于,所述计算机系统还包括根联合体,该 根联合体包括与所述中央处理器连接的主机PCI桥和与所述 PCIE-CardBus控制器连接的所述虚拟PCI-to-PCI桥。
10. 根据权利要求8所述的实现动态配置PCIE-CardBus控制器资 源的计算机系统,其特征在于,所述计算机系统还包括转换器Switch, 所述转换器Switch通过其内部的虚拟PCI-to-PCI桥与所述根联合体内 部的虚拟PCI-to-PCI桥连接,以与所述根联合体进行通信;所述转换 器Switch还可以通过其内部的虚拟PCI-to-PCI桥与所述PCIE-CardBus 控制器连接。
全文摘要
本发明公开了一种对计算机系统中的设备进行动态资源配置的方法及系统,该方法包括以下步骤检测计算机系统的总线拓扑,找到该设备的上一级设备;搜索可以分配给上一级设备的空闲资源;在所述空闲资源的范围内,分配预定的资源给上一级设备;以及在分配给上一级设备的资源范围内,分配预定的资源给所述设备。所述系统包括中央处理器和与所述中央处理器通信的PCIE-CardBus控制器。本发明通过上述的方法和系统可以正确配置该设备,从而使该设备后面的下一级设备能正常启动和工作。
文档编号G06F13/20GK101387993SQ20071015388
公开日2009年3月18日 申请日期2007年9月14日 优先权日2007年9月14日
发明者余晓光, 炜 姚, 赵红晓 申请人:凹凸科技(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1