为PCI设备保留PCI存储空间转让专利

申请号 : CN200880128459.2

文献号 : CN101983377A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : H·布赖恩克曼D·塞普利斯D·马修斯D·赖利

申请人 : 惠普开发有限公司

摘要 :

实施例包括用于为外围组件互连(PCI)设备保留存储空间的方法、装置和系统。一个实施例包括确定通过PCI交换机或PCI桥连接到主机计算机的外围设备并且然后将虚拟设备呈现为连接到PCI交换机或PCI桥的方法。为虚拟设备保留总线编号和存储器并且将其分配给热插入到主机计算机的PCI设备。

权利要求 :

1.一种方法,包括:

建立实际上通过外围组件互连(PCI)交换机或PCI桥连接到主机计算机的外围设备的列表;

将虚拟设备呈现为连接到所述PCI交换机或PCI桥;

为所述虚拟设备保留总线编号和存储器;以及

向热插入到所述主机计算机的PCI设备分配所述总线编号和存储器。

2.权利要求1的方法,进一步包括,向主机计算机将下游桥呈现为具有连接到该下游桥的PCI设备,其中连接到该下游桥的PCI设备是所述虚拟设备。

3.权利要求1的方法,进一步包括,在主机计算机的枚举过程期间请求存储器,其中被请求的存储器是用于虚拟设备的。

4.权利要求1的方法,进一步包括,在实际设备热插入到其中曾存在虚拟设备的端口或槽之后中止向主机计算机呈现虚拟设备。

5.权利要求1的方法,进一步包括,将先前分配给虚拟设备的存储空间分配给热插入到主机计算机的PCI设备之一。

6.权利要求1的方法,进一步包括,将先前分配给虚拟设备的存储空间分配给热插入到主机计算机的PCI设备之一。

7.权利要求1的方法,进一步包括,允许将设备热插入到共享的输入/输出(I/O)系统中,而不需要主机计算机执行枚举来认定连接到I/O系统的外围设备。

8.一种具有用于使得计算机执行方法的指令的有形计算机可读存储介质,该方法包括:确定通过一个或多个外围组件互连(PCI)交换机或PCI桥物理地连接到根节点的外围设备;

将虚拟设备呈现为连接到所述PCI交换机或PCI桥;

为虚拟PCI设备保留总线编号和存储器,将所述虚拟PCI设备向根节点呈现为连接到所述PCI交换机或PCI桥;以及将所述总线编号和存储器分配给热插入到所述根节点的PCI设备。

9.权利要求8的有形计算机可读存储介质,进一步包括,在实际设备热插入到其中曾存在虚拟PCI设备的桥之后中止向根节点呈现虚拟PCI设备。

10.权利要求8的有形计算机可读存储介质,进一步包括,创建存储器分配图,该存储器分配图为物理连接到根节点的外围设备和向根节点呈现为连接到PCI交换机和PCI桥的虚拟PCI设备提供空间。

11.权利要求8的有形计算机可读存储介质,进一步包括,确定外围设备何时被热插入到先前分配给虚拟PCI设备的交换机或桥。

12.权利要求8的有形计算机可读存储介质,进一步包括,向根节点将下游桥呈现为具有连接到该下游桥的PCI设备,其中连接到该下游桥的PCI设备是虚拟PCI设备。

13.权利要求8的有形计算机可读存储介质,进一步包括,在根节点的枚举过程期间请求存储器,其中被请求的存储器用于虚拟PCI设备。

14.权利要求8的有形计算机可读存储介质,进一步包括,将先前分配给虚拟PCI设备的存储空间分配给热插入到根节点的PCI设备之一。

15.权利要求8的有形计算机可读存储介质,进一步包括,将先前分配给虚拟PCI设备的存储空间分配给热插入到根节点的PCI设备之一。

16.权利要求8的有形计算机可读存储介质,进一步包括,允许将设备热插入到共享的输入/输出(I/O)系统中,而不需要根节点执行枚举以认定连接到I/O系统的外围设备。

17.一种计算机系统,包括:

存储算法的存储器;和

处理器,其执行所述算法以:

确定通过一个或多个外围组件互连(PCI)交换机或PCI桥连接到主机计算机的外围设备;

将虚拟设备呈现为连接到所述PCI交换机或PCI桥;

为向所述主机计算机呈现为连接到所述PCI交换机或PCI桥的虚拟设备保留总线编号和存储器;以及将所述总线编号和存储器分配给热插入到所述主机计算机的PCI设备。

18.权利要求17的计算机系统,其中针对下游桥后面的总线出现总线编号。

19.权利要求17的计算机系统,其中所述处理器进一步执行所述算法以为热插入到主机计算机的PCI设备在线性存储器分配图中保留存储器。

20.权利要求17的计算机系统,其中所述处理器进一步执行所述算法以:将先前分配给虚拟设备的存储空间分配给热插入到主机计算机的PCI设备之一;以及将先前分配给虚拟设备的存储空间分配给热插入到主机计算机的PCI设备之一。

说明书 :

为PCI设备保留PCI存储空间

背景技术

[0001] 外围组件互连或PCI标准定义了用于将外围设备附接到母板的计算机总线。该PCI规范描述了所述总线的物理属性、电气特性、总线时序、通信协议等等。PCI特别兴趣小组(PCI-SIG)维护和管理用于各种PCI架构的规范。
[0002] 当计算机最初启动时,PCI枚举(enumeration)时间段开始。在这个时间期间,计算机中的PCI枚举软件编制所有安装的外围设备和它们的存储空间需求的列表。换言之,该计算机确定哪些外围设备被连接到PCI总线。该软件然后创建为所有安装的设备分派空间的存储器分配图(memory map)。
[0003] 所创建的存储器分配图可以被紧密装填,而没有包含用于将来任何设备的孔。而且,PCI总线编号可能不会为在枚举完成之后连接的设备留下PCI总线。对于可以接受热插拔设备的系统,这产生了一个问题。特别地,改变存储器分配图和PCI总线编号以包含用于在枚举之后热插入的设备的空间可能是有问题的。一些计算机系统要求在设备被热插入之后主机重新枚举该系统。

附图说明

[0004] 图1是根据示范性实施例的用于为虚拟PCI设备保留PCI总线编号和存储空间并将其发给(issue)所述虚拟PCI设备的计算机系统的框图。
[0005] 图2是根据示范性实施例的用于为虚拟PCI设备保留PCI总线编号和存储空间的流程图。
[0006] 图3是根据示范性实施例的用于把保留的PCI总线编号和存储空间发给热插入的PCI设备的流程图。

具体实施方式

[0007] 示范性实施例针对用于为PCI设备保留PCI存储空间的方法、系统和装置。在一个实施例中,为在计算机启动并且PCI枚举发生之后热插入的PCI设备保留存储空间。
[0008] 在一个示范性实施例中,具有热插拔能力但没有任何连接设备的下游桥将在它们后面的总线上呈现(present)虚拟设备。这些虚拟设备代表稍后可被安装的设备请求“虚设的(dummy)”存储器。一旦设备已被热插入,则下游桥不再呈现虚拟设备。然后,虚拟设备最初所请求的“虚设的”存储空间变得可用于分配给热插入的设备。而且,分配给虚拟设备的PCI总线变得可用于热插入设备。
[0009] 在一个实施例中,当主机初始引导时,主机看到或检测到物理设备,所述物理设备被主机与该设备之间的桥描绘为虚拟设备。主机还看到虚设的虚拟设备,其仅仅是由桥所创建的占位符以用于稍后当描绘为虚拟设备的物理设备被热插入到该桥之时。新设备的物理附接不必连接到桥。
[0010] 图1是根据示范性实施例的用于为虚拟PCI设备保留PCI总线编号和存储空间并将其发给虚拟PCI设备的计算机系统100的框图。为了图示说明,显示使用高速(Express)PCI架构的计算机系统,但是示范性实施例不限于任何特定类型的PCI架构。
[0011] 图1示出包括根复合体(root complex)、多个端点(例如,输入/输出(I/O)设备)、交换机和高速PCI到PCI/PCI-X桥的单个结构实例或层级,所有这些经由高速PCI总线或链路互连。具体而言,根节点、计算节点或主机计算机110通过一个或多个交换机130(为了图示方便起见示出一个交换机)连接到多个高速PCI端点120。根节点通过高速PCI总线或链路160连接到多种设备(比如端点或端节点、桥、交换机等等)。在一个实施例中,一个或多个高速PCI端点120物理地连接到交换机130。在其他实施例中,一个或多个高速PCI端点120与交换机130分离。换言之,端点120不是物理地连接到端口170B而是分离的。
[0012] 根节点110包括通过主总线155耦合的CPU 140、存储器145和根复合体150。根复合体150通过各种高速PCI总线160连接到各种虚拟高速PCI端点125、高速PCI到PCI/PCI-X桥165和交换机130。PCI/PCI-X桥165提供高速PCI结构与PCI/PCI-X层级之间的连接。
[0013] 根复合体(RC)150表示将CPU/存储器子系统连接到I/O设备的I/O层级的根。该根复合体可以支持一个或多个端口。
[0014] 每个接口定义单独的层级域,并且每个层级域包括单个端点或子层级,所述子层级包含一个或多个交换机组件和端点。通过根复合体在层级域之间路由对等(P2P)事务(transaction)的能力是可选的并且是实现方式有关的。例如,一种实现方式可以包括位于根复合体内部的真实的或虚拟的交换机,从而以软件透明的方式实现完全的对等(P2P)支持。
[0015] 根复合体150可以运行或支持下列一个或多个:支持作为请求者产生配置请求,支持作为请求者产生I/O请求和支持作为请求者产生锁定请求。
[0016] 所述端点包括虚拟端点和实际或物理端点二者。物理或实际端点是可以为代表其自身或代表不同的非PCI设备(不同于PCI设备或主CPU)的PCI事务的请求者或完成者的设备或设备集,所述非PCI设备例如高速PCI附接的图形控制器、高速PCI-USB主控制器等或其他I/O设备(比如盘驱动器)。相比之下,虚拟端点表示实际上和物理上不存在和/或没有连接到计算机系统的设备。因此,主机110检测到或相信物理设备连接到计算机系统中的槽/端口,但是实际上并不真正存在物理设备。
[0017] 如图所示,交换机130包括多个端口170和多个虚拟PCI-PCI桥175。为了说明的目的,交换机130被示出为具有一个上游端口170A和三个下游端口170B。交换机通过PC I链路160连接一个或多个物理端点120和虚拟端点125。
[0018] 所述交换机遵循一个或多个下列规则:对于配置软件,交换机表现为两个或更多逻辑PCI到PCI桥,交换机使用PCI桥机构转发事务(如基于地址的路由),以及交换机在端口的集合之间转发各种类型的事务层分组。
[0019] 在一个实施例中,每个高速PCI链路160通过虚拟PCI到PCI桥结构被映射并且具有与其相关联的逻辑PCI总线。虚拟PCI到PCI桥结构可以是高速PCI根复合体端口、交换机上游端口或交换机下游端口的一部分。根端口是从高速PCI根复合体发起(originate)高速PCI层级域的虚拟PCI到PCI桥结构。设备被映射到配置空间中,使得每个设备将响应于特定的设备号。
[0020] 在一个实施例中,当主机110初始引导时,主机看到或检测到物理设备,所述物理设备被该主机与该设备之间的桥或交换机(即,交换机130)描绘为虚拟设备(即,虚拟高速PCI端点125)。主机还将虚拟高速PCI端点125看作物理连接的设备。然而,这些设备实际上是虚设的(dummy)虚拟设备,其仅仅是由交换机130创建的占位符以用于稍后当描绘为虚拟设备的物理设备被热插入到桥之时。
[0021] 图2是根据示范性实施例的用于为虚拟PCI设备保留PCI总线编号和存储空间的流程图。
[0022] 根据方框200,主机计算机或根节点加电。例如,开启或重启主机。
[0023] 根据方框210,主机执行PCI枚举。在计算机启动之后,PCI枚举时间段开始。在该时间期间,计算机中的PCI枚举软件编制所有安装的外围设备和它们的存储空间需求的列表。换言之,计算机确定哪些外围设备实际上或物理上连接到PCI总线。
[0024] 在一个实施例中,在将计算机引导到操作系统(OS)之前所述计算机建立地址图。枚举软件确定所述系统中有多少存储器以及系统中的I/O控制器需要多少地址空间。该图(通常被称为PCI资源分派图)是地址图,其示出在加电期间什么地址被分配给PCI槽中的接口卡和/或I/O控制器。
[0025] 根据方框220,所述主机获得连接到PCI总线的设备列表。例如,所述主机接收连接到系统的物理或实际端点(比如图1所示的高速PCI端点120)的列表。
[0026] 根据方框230,虚拟端点作为实际的、物理端点被呈现给主机或计算节点。这使得主机执行根据方框240的两个功能。作为一个功能,主机为下游桥后面的总线保留总线编号。作为第二功能,主机为虚拟设备在线性存储器分配图中保留存储器。
[0027] 因此,所述主机创建为计算机系统中所有安装的和虚拟的设备分派空间和总线编号的存储器分配图。该存储器分配图包括用于还没有连接到PCI总线的任何未来设备(例如,PCI可热插拔设备)的可用空间。而且,所述PCI总线编号包括用于还没有连接到PCI总线的任何未来设备的可用编号。
[0028] 图3是根据示范性实施例的用于把保留的PCI总线编号和存储空间发给热插入的PCI设备的流程图。
[0029] 根据方框300,所述一个或多个设备被热插入到计算机系统中。例如,一个端点被热插入到PCI桥或交换机。图1示出虚拟高速PCI端点125的示例,其中在枚举之后实际的、物理设备可被插入或附接到交换机130。
[0030] 根据方框310,所述主机发现新加入的设备或端点。一旦该设备被热插入到端口或槽中,虚拟设备就不再被呈现给主机。换言之,所述下游桥不再将虚拟设备呈现为连接到该桥,因为现在连接了实际的物理设备。
[0031] 接下来,根据方框320,所述主机根据先前在枚举期间为虚拟设备分派的一个或多个总线编号和存储器设置新加入的设备。例如,所述主机向所述设备提供分配给所述端口或槽的总线编号并且为该端口或槽提供对应的存储空间。
[0032] 一旦给所述设备提供总线编号和存储空间,则根据方框330,该设备在该端口或槽中可供使用。现在,所述主机准备好在另一个端口或槽中接受另一个新的热插拔设备并且然后继续返回到方框300。
[0033] 该过程解决了可以接受热插拔设备的系统的问题。具体而言,当新设备被加入时,所述存储器分配图不会被改变,因为它已经包括用于新加入的热插入的设备的未使用的或可用的空间。照此,在热插入设备之后,不要求所述计算机系统重新引导或重新枚举该系统。因此,示范性实施例允许共享的I/O系统中设备的热插入,而无需主机的完全重新枚举。
[0034] 定义:如本文和权利要求中所使用的下面的词语和术语定义如下:
[0035] 词语“桥”意指使用相同的协议(例如,以太网或令牌环)连接两个局域网(LAN)或LAN区段的设备。例如,桥是虚拟地或实际地将PCI/PCI-X区段或高速PCI端口与内部组件互连或与另一个PCI/PCI-X总线区段或高速PCI端口连接的功能。
[0036] 术语“配置空间”意指PCI架构内的地址空间。具有配置空间地址的分组用于配置设备内的功能(即,地址实体)。
[0037] 词语“下游”意指离根复合体较远的互连/系统元件(端口/组件)的相对位置。例如,不是上游端口的交换机上的端口是下游端口。根复合体上的所有端口是下游端口。因此,下游也包括其中信息远离根复合体流动的信息流方向。
[0038] 词语“端点”或“端节点”意指设备(即,可寻址的电子实体)或根据不同组规则运行的设备的集合。
[0039] 词语“热插拔”、“热插入”或“热交换(swap)”等等意指在机器或系统继续运行的同时移除和更换机器或系统的电子组件的能力。例如,热交换使得一个或多个设备(例如,硬盘驱动器)能够被调换或维修,而不影响该设备所在的整个刀片或机箱(enclosure)的运行。例如,在故障情况下,单独的硬盘驱动器从刀片中移除并且用新的或不同的硬盘驱动器来替换。所述新硬盘驱动器连接到刀片而不中断刀片的持续运行,同时它保持在所述机箱内。
[0040] 首字母简略词“PCI”意指外围组件互连。PCI规范描述了总线的物理属性、电气特性、总线时序、通信协议等等。PCI特别兴趣小组(PCI-SIG)维护和管理各种PCI架构的规范。
[0041] 词语“端口”在逻辑上意指组件与链路(即,两个设备之间的通信路径)之间的接口,并且在物理上意指定位在芯片上的定义链路的一组发送器和接收器。
[0042] 术语“根复合体”意指包括主桥和一个或多个端口的设备或设备集。例如,主机计算机具有PCI到主机桥接功能,其是根复合体。该根复合体提供CPU总线(比如超传输)和PCI总线之间的桥。
[0043] 术语“根节点”意指主机计算机、计算机系统或服务器。
[0044] 词语“交换机”意指连接两个或更多端口以允许分组从一个端口路由到另一个端口的设备或设备集。对于配置软件,交换机表现为虚拟PCI到PCI桥的集合。
[0045] 词语“虚拟”意指非真实的并且将仅仅为概念性的事物(例如,物理设备)与具有物理真实性的事物区分开。作为一个示例,当实际上物理端点没有实际地连接到总线时,主机可以将虚拟端点看作是或检测为物理端点(所述设备是虚构的但是被主机检测到或被相信存在)。虚拟的反义词是真实或物理的。
[0046] 词语“上游”意指更接近根复合体的互连/系统元件(端口/组件)的相对位置。例如,拓扑上最接近根复合体的交换机上的端口是上游端口。例如,仅仅包括端点的组件上的端口是上游端口。上游还包括其中信息朝向根复合体流动的信息流方向。
[0047] 在一个示范性实施例中,本文所讨论的一个或多个方框或步骤是自动化的。换言之,装置、系统和方法自动地运行(occur)。如本文所使用的术语“自动化的”或“自动地”(和其类似的变化)意指使用计算机和/或机械/电气设备控制装置、系统和/或过程的操作,而无需人为干涉、观察、努力和/或决策。
[0048] 根据本发明的示范性实施例的方法被提供为示例并且不应当被解释为限制本发明的范围内的其他实施例。例如,图中的方框或数字(比如(1)、(2)等)不应当被解释为必须以特定的顺序来进行的步骤。附加的方框/步骤可以被添加,一些方框/步骤可以删除,或者方框/步骤的顺序可以改变并且仍然在本发明的范围内。而且,不同附图内所讨论的方法或步骤可以被添加到其他附图中的步骤方法或与之交换。而且,特定的数字数据值(比如特定的数量、数字、类别等)或其他特定信息应当被解释为说明性的以用于讨论示范性实施例。这种特定信息不是被提供用于限制本发明。
[0049] 在根据本发明的各种实施例中,实施例被实现为方法、系统和/或装置。作为一个示例,示范性实施例和与其相关的步骤被实现为用以实现本文所描述的方法的一个或多个计算机软件程序。所述软件被实现为一个或多个模块(也被称为代码子例程,或者在面向对象的编程中被称为“对象”)。所述软件的位置对于各种可替代实施例而言是不同的。软件编程代码例如由计算机或服务器的一个或多个处理器从诸如CD-ROM驱动器或硬盘驱动器之类的某些类型的长期存储介质中访问。所述软件编程代码被包括或存储在与数据处理系统一起使用的多种已知介质的任一种上或存储在任意存储器设备中,诸如半导体设备、磁设备和光学设备(包括盘、硬盘驱动器、CD-ROM、ROM等)。所述代码分布在这样的介质上,或从一个计算机系统的存储器或存储装置通过某类型的网络分发到其他计算机系统的用户以供这样的其他系统的用户使用。可替代地,所述编程代码被包括在存储器中并且由处理器使用总线访问。用于将软件编程代码包含在存储器中、物理介质上和/或将软件代码经由网络进行分发的技术和方法是众所周知的并且本文将不会进一步讨论。
[0050] 上述讨论旨在说明本发明的原理和各种实施例。对于本领域技术人员而言,一旦完全理解了上述公开,多种变形和修改将变得显然。下面的权利要求意欲被解释为包含所有这样的变形和修改。