枚举输入输出设备的方法和设备的制作方法

文档序号:6358992阅读:192来源:国知局
专利名称:枚举输入输出设备的方法和设备的制作方法
技术领域
本发明实施例涉及硬件系统架构,更具体地说,涉及硬件系统中枚举输入输出设备的方法和设备。
背景技术
一般在硬件系统架构,例如x86、Itanium系统硬件架构中,处理器例如中央处理单兀(Central Processing Unit,简称CPU)和输入输出集中控制器(Input/Output Hub或Input/Output Controller Hub,简称IOH或ICH)通过总线相互连接,用于数据传输。硬件系统架构中可以同时存在多个处理器和多个Ι0Η,每个IOH可以连接多个输入输出(Input/Output,简称10)设备。IOH内部可以集成多个桥设备,从桥设备引出的总线通过系统中的第一条总线(BusO)与处理器相连。以x86、Itanium系统硬件架构为例,一般运行在硬件系统架构上的系统开机后的流程是,首先运行固化在闪存只读存储器(Flash ROM)里的系统固件(System Firmware)程序,System Firmware负责配置、检测服务器的所有硬件设备如处理器、内存、10总线等,保证硬件系统可以正常工作后,由System Firmware负责在系统里的存储设备里查找操作系统加载器(Operating System Loader,简称OS Loader)、调用OS Loader加载操作系统内核程序。虽然可能硬件系统中可能有多个处理器(大型服务器可能有数百个),但是目前的System Firmware初始化系统10总线,例如枚举系统中的10设备时还是只由其中的一个处理器来完成这项工作,这个处理器在系统里有特殊的地位一它是Firmware阶段的系统主处理器。这样做的主要原因是为了使系统资源的分配保持一致性。但是这一过程会花去很多时间,延长了系统启动的时间,在系统开始启动很长时间后用户才能正常使用系统,这会降低用户对系统的满意度和产品认同感。另外,在产品设计开发阶段,也会对系统进行反复重启以验证某种修改是否生效、检验系统功能和性能,如果系统启动一次的时间很长,会降低产品设计开发的效率,从而增加产品成本,降低产品竞争力。

发明内容
本发明实施例所要解决的一个技术问题是提高系统初始化系统10总线的效率,加快枚举系统中的10设备的过程。本发明实施例提出了一种枚举输入输出设备的方法,所述方法包括获取系统中的各处理器的标识和各输入输出10集中控制器的标识;根据所述各处理器的标识以及所述各10集中控制器的标识,分别指令处理器同时枚举特定的10集中控制器及与之相连的输入输出10设备;获取被指令的处理器枚举的10设备的相关信息。本发明实施例提出了一种枚举输入输出设备的设备,所述设备包括信息收集模块,用于获取系统中的各处理器的标识和各输入输出10集中控制器 的标识;
调度模块,用于根据所述各处理器的标识以及所述各IO集中控制器的标识,分别指令处理器同时枚举特定的IO集中控制器及与之相连的输入输出IO设备;结果收集模块,用于获取被指令的处理器枚举的IO设备的相关信息。根据本发明实施例,可以将枚举系统IO设备的工作分配给多个处理器同时进行,由此大大减少了枚举过程所消耗的时间,加快了系统初始化的过程。


为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I是本发明实施例的方法的流程图;图2是本发明实施例一的流程图;图3是本发明实施例一中枚举各节点内的IO设备的流程图;图4是本发明实施例二的流程图;图5是本发明实施例的设备的示意结构图;图6是本发明实施例的设备的进一步细化的示意结构图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。术语“硬件系统架构”指的是包括处理器、输入输出集中控制器等硬件组成部分的系统架构,例如常见的x86、Itanium系统硬件架构,这些硬件系统架构主要指普通个人计算机和服务器等。硬件系统架构可以包含节点,每个节点分别具有处理器封装(Socket),输入输出集中控制器。硬件系统架构也可以是只含一个节点的个人计算机或服务器,也可以是含有更多节点的大型服务器。一个节点也可以只有一个处理器Socket、或者多于2个处理器Socket,只要符合X86、Itanium架构规范即可。还有另外可能的变形是处理器与输入输出集中控制器集成到一个封装里,或者多个输入输出集中控制器集成到一个芯片封装里。为了便于管理,硬件系统架构里的每个处理器、每个输入输出集中控制器都会有一个相互不同的编号,这个编号可以由硬件设计时确定,也可以由软件编程指定,不同的平台可能采用不同的方法,运行在系统里的软件可以通过系统内部总线读出上述编号,或者通过系统管理总线(System Management Bus,简称SMBus)读出上述编号,不同的系统可能采用不同的设计,本发明并不限定上述编号的设定和读取的方法。本文虽然以x86、Itanium平台为例进行描述,但是本发明实施例并不仅仅适用于x86、Itanium平台,而是适用于具有类似逻辑机构的任意硬件系统架构。所述含有更多节点的大型服务器中,各个节点之间的连接方式在不同的系统里可能是不同的,例如可以用处理器直接拥有的专有高速互连接口(例如QuickPathInterconnect接口,简称QPI)直接相连。本发明不限定节点间互联的方式和所使用的协议类型。所述系统管理总线属于一种带外总线。带外总线指的是系统内部总线以外的总线。系统内部总线就是带内总线,指的是把处理器、内存、IO设备的各功能块连成一个系统的高速率、高带宽的总线,用于完成系统主要功能。带外总线一般速率低、带宽低,一般用于系统管理。术语“系统固件”指的是固化在一个Flash ROM里,并在系统加电后用来配置系统硬件设备,包括配置他们的寄存器、为它们分配资源的软件。在所有系统里,存在多种系统固件。在x86、Itanium系统里,系统固件更常用的名字是基本输入输出系统(Basic Input/Output System,简称BIOS),这里的BIOS既指目前正在广泛使用的传统(Legacy)BIOS,
也指目前在逐渐流行的新一代BIOS--统一可扩展固件接口 BIOS (Unified Extensible
Firmware Interface BIOS,简称UEFI BIOS)。为了更加通用化,本文一律使用系统固件这一名称。术语“10集中控制器”指的是集成了一个或多个10桥、或者集成了一个或多个10端点设备、或者同时集成了一个或多个10桥设备和端点设备的10芯片、10集线器、10设备集中挂载点、10 交换器、10 Bridge Chip、10 Switch、10 Hub、1/0 Controller Hub、10Router、或其它具备类似功能的模块/芯片。图I是根据本发明实施例的枚举系统10总线的方法的流程图。如图I所示,方法100包括110 :获取系统中的各处理器的标识和各10集中控制器的标识;120 :根据所述各处理器的标识以及所述各10集中控制器的标识,分别指令处理器同时枚举特定的10集中控制器及与之相连的10设备;130 :获取被指令的处理器枚举的10设备的相关信息。下面结合具体实施例的方案详细说明本发明实施例的方法。实施例一图2是本发明实施例一的枚举系统中的10设备的方法200的流程图。实施例一的方法200适合用于存在多个节点的硬件系统架构中。如上所述,每个节点均存在节点主处理器来处理该节点内的节点级事务。另外,系统中也存在被称为系统主处理器的处理器,作为该系统内级别最高的处理器,负责系统级的事务,同时系统主处理器也是它所在节点的节点主处理器。需要注意,系统主处理器和节点主处理器是通过一定机制由系统自行选择出来的,例如,可以规定某些编号的处理器自动成为系统主处理器或节点主处理器,或者由独立于主机系统的其它软件(比如系统管理软件)指定哪个处理器成为系统主处理器、哪些处理器分别成为节点主处理器。这个机制在不同的平台上可能不同,本发明实施例并不限定这个机制。系统主处理器和节点主处理器只是一个逻辑上的概念,它们并非物理上 特殊的处理器。如图2所示,方法200包括210 :系统主处理器获取系统中的各节点的节点主处理器的标识和每个节点内的10集中控制器的标识。应该理解,系统主处理器同时也可以获取自身的标识。根据本发明实施例,系统主处理器还可以同时获取10集中控制器的其它他相关信息,例如10集中控制器的数量。这里获取处理器和IO集中控制器的标识,包括但不限于获取处理器和IO集中控制器的编号。这里获取IO集中控制器的其它相关信息标识,针对不同的系统可以采用不同的方法,例如通过硬件信号收集每个节点有多少个IO集中控制器,因为IO集中控制器个数愈多则IO总线和IO设备就越多、需要的资源也越多;如果硬件系统架构支持,另外一种可以收集更细致信息的方法是在系统里运行独立于主机系统的管理软件,该管理软件可以通过某种物理通道如系统管理总线去访问每个芯片的内部寄存器,不但可以发现每个IO设备,而且可能发现每个IO设备内部集成的IO子设备(包括桥设备),从而收集到非常细致的信息。本发明实施例并不限制收集处理器的标识和IO集中控制器的标识和相关信息的方法。系统主处理器获取的各节点主处理器的标识以及每个节点内的IO集中控制器的标识可以存储在系统内存中,其中所述的系统内存可以由所述各处理器访问。220 :系统主处理器根据每个节点内的IO集中控制器的个数或IO设备的个数,为每个节点预分配资源,在内存中建立资源预分配表。根据本发明实施例的构思,通过多个处理器同时枚举系统中的IO设备来加快枚举进程。为了保证整个系统资源分配的一致性,需要提前为每个节点预分配资源,防止发生 资源冲突。这里预分配资源的方法例如根据每个节点IO集中控制器的多少进行排序,IO集中控制器越多,则认为IO设备规模越大,资源需求则越多。本发明不限制这个预分配资源的方法。本领域技术人员可以根据需要,相应地选择适当的方法为每个节点预分配资源,目的是保证各节点间资源分配均衡且各节点的IO设备不会发生资源冲突。在内存中建立的资源预分配表例如表I所示。表I :资源预分配表
节点O节点I节点2节点3
资源项I起始值-数量起始值-数量起始值-数量起始值-数量
资源项2起始值-数量起始值-数量起始值-数量起始值-数量这里的资源项例如包括内存空间地址,IO空间地址,总线号等。需要明确的是,资源项可以是不同于上述列出的其它类型,本发明不限制资源项的类型和数量。230 :系统主处理器通过特定的机制驱动每个节点的节点主处理器开始枚举本节点内的IO设备,同时系统主处理器枚举其所处节点内的IO设备。这个机制在不同的硬件平台下可能是不同的,例如在X86平台下,系统主处理器可以通过编程中断控制器发出“处理器间中断信号”的方法来驱动其它处理器(例如,节点主处理器)完成指定的任务;或者系统主处理器与各节点主处理器通过系统约定的内存共享的方法来传递任务和数据。例如,一种内存共享的方法是在系统内存中设置指令区域,用于存放指令信息,所述指令用于驱动被指令的处理器,例如每个节点的节点主处理器,同时枚举各节点内的IO集中控制器及与之相连的IO设备。本发明实施例不限定系统主处理器驱动节点主处理器的具体机制。因为资源预分配表是建立在系统内存里的,而系统里的每个处理器,包括系统主处理器和节点主处理器都可以访问系统内存,所以,每个节点主处理器都可以获得资源预分配表。240 :系统主处理器和各节点主处理器枚举各自节点内的IO总线设备。枚举各自节点内的IO设备的过程例如如图3所示。枚举各节点内的IO设备的步骤240包括241 :按照一定的顺序扫描本节点的IO总线,找到一个桥设备;242 :为该桥设备分配总线号; 243 :判断是否扫描完本节点内的桥设备;244 :按照一定的顺序扫描本节点的IO总线,找到一个IO设备,询问该IO设备的资源需求;245 :根据资源预分配表中为本节点预分配的资源,为该IO设备分配资源;246 :将资源分配情况记录在系统内存中,例如记录在系统内存的枚举结果区域中;247 :将资源分配记录写入该IO设备的寄存器中;248 :可选地,设置该IO设备的非资源分配配置项;249 :判断是否扫描完本节点内的IO设备。在所有节点主处理器扫描完各自节点内的IO设备之后,方法200包括250 :系统主处理器接收通过特定的机制从各节点主处理器反馈的枚举出的IO设备的相关信息,例如将各节点内的IO设备的标识反馈回系统主处理器。这里所述的相关信息包括枚举出的IO设备的类型、标识、资源分配(例如内存起始地址和内存区域大小等)、总线号、设备编号等等。这里所述的反馈机制在不同的硬件系统架构下可能是不同的,例如可以通过系统主处理器与各节点主处理器内存共享的方法在各个处理器之间传递结果。例如一种内存共享的方法是在系统内存中设置枚举结果区域,用于存放枚举出的IO设备的相关信息,以使系统主处理器获取所述被指定的处理器,例如每个节点的节点主处理器枚举出的IO设备的相关信息。本发明不限定这个反馈机制。本发明实施例一特别适用于大型系统,分组方法简单有效,因为一般的大型系统都由多个节点组成。实施例一优势在于把枚举IO设备的任务分配到各个节点同时并行进行,时间减少到目前技术的1/N,N为系统中的节点数。实施例二本发明实施例二与实施例一不同之处在于,实施例二中硬件系统架构没有明确的节点概念,例如该硬件系统架构中仅有一个节点。在这种硬件系统架构中,对IO集中控制器的分组以及对用来枚举各组IO集中控制器及与之相连的IO设备的处理器的选取都具有更大的灵活性。图4是本发明实施例二的枚举IO设备的方法400的流程图。具体说明如下,方法400包括410 :系统主处理器获取系统中的IO集中控制器的标识以及其他处理器的标识。当然系统主处理器也可以获取其自身的标识。与实施例一类似,系统主处理器还可以获取IO集中控制器的数量信息。420 :根据具体情况,系统主处理器将IO集中控制器分组,每组包括至少一个IO集中控制器。例如,可以根据IO集中控制器的标识对IO集中控制器分组。或者,可以先选定参加IO设备枚举的特定的处理器,然后把与所述特定的处理器相连的IO集中控制器分成一组。
430 :系统主处理器根据每个组内的IO集中控制器的个数,为每个组预分配资源,在内存中建立资源预分配表。为每组IO集中控制器预分配资源的方法以及在内存中建立的资源预分配表类似实施例一。所不同的是这里以分组代替节点。440 :针对每组IO集中控制器,系统主处理器根据各其他处理器的标识,有选择地指令所述其他处理器枚举各组IO集中控制器中每个IO集中控制器及与之相连的IO设备。在本实施例中,为每组IO集中控制器指定一个处理器来枚举IO设备。根据本发明实施例,系统主处理器也用来枚举一组IO集中控制器,例如与其相连的一组IO集中控制器。450 :系统主处理器和被指令的其他处理器枚举对应的各组IO集中控制器及与之相连的IO设备。枚举的具体步骤类似于实施例一中的步骤241至249,不再赘述。460:系统主处理器接收通过特定的机制从各被指令的其他处理器反馈的相关信息,例如将各组IO集中控制器的IO设备的标识及资源分配情况反馈回系统主处理器。这个反馈机制在不同的硬件系统架构下可能是不同的,例如实施例一中所述,可以通过系统 主处理器与各被指令的处理器内存共享的方法在处理器之间传递相关信息。本发明不限定这个反馈机制。根据本发明实施例,可以将枚举系统IO设备的工作分配给多个处理器同时进行,由此大大减少了枚举过程所消耗的时间,加快了系统初始化的过程。图5是实现本发明实施例的枚举系统中的IO设备的方法的设备500的示意结构图。如图5所示,设备500包括信息收集模块510,用于获取系统中的各处理器的标识和各IO集中控制器的标识;调度模块520,用于根据所述各处理器的标识以及所述各IO集中控制器的标识,分别指令处理器同时枚举特定的IO集中控制器及与之相连的IO设备;结果收集模块530,用于获取被指令的处理器枚举的IO设备的相关信息。如图6所示,根据本发明实施例,调度模块520进一步包括分组子模块522,用于根据所述IO集中控制器的标识将所述IO集中控制器分成多个组,每个组包括至少一个IO集中控制器;资源预分配子模块524,用于根据每组IO集中控制器的数量,为每组IO集中控制器预分配资源,在系统内存中建立资源预分配表;枚举子模块526,用于针对每组IO集中控制器,根据所述各处理器的标识,分别指令处理器枚举各组IO集中控制器中每个IO集中控制器及与之相连的IO设备。根据本发明实施例,所述分组子模块522用于将系统中每个节点所属的IO集中控制器分为一组,并且所述枚举子模块526用于指令系统主处理器枚举其所处节点内的IO集中控制器及与之相连的IO设备,并指令每个节点的节点主处理器来枚举该节点所属的IO集中控制器及与之相连的IO设备。根据本发明实施例,所述枚举子模块526用于分别指令处理器按一定的顺序扫描各组IO集中控制器及与之相连的IO设备,在找到IO设备时,根据为各组IO集中控制器预分配的资源,为所述IO设备分配资源,把资源分配信息记录在系统内存中,把资源分配记录写入所述IO设备的寄存器中,设置该IO设备的非资源分配配置项。根据本发明实施例,所述信息收集模块510通过系统中的硬件信号获取所述各处理器的标识和各IO集中控制器的标识,或者通过访问系统管理总线来获取所述各处理器的标识和各IO集中控制器的标识,或者与系统管理软件配合获取所述各处理器的标识和各IO集中控制器的标识。根据本发明实施例,所述信息收集模块510还用于将所述各处理器的标识以及所述各IO集中控制器的标识存储在系统内存中,其中所述的系统内存可以由所述各处理器访问。根据本发明实施例,所述调度模块520用于在系统内存中设置指令区域,用于存放指令信息,所述指令用于驱动被指令的处理器同时枚举各组IO集中控制器及与之相连的IO设备。根据本发明实施例,所述结果收集模块530用于在系统内存中设置枚举结果区域,用于存放枚举出的IO设备的相关信息,以使系统主处理器获取所述被指令的处理器枚举出的IO设备的相关信息。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或计算机软件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM, Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵 盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
权利要求
1.一种枚举输入输出设备的方法,其特征在于,所述方法包括 获取系统中的各处理器的标识和各输入输出IO集中控制器的标识; 根据所述各处理器的标识以及所述各IO集中控制器的标识,分别指令处理器同时枚举特定的IO集中控制器及与之相连的输入输出IO设备; 获取被指令的处理器枚举的IO设备的相关信息。
2.如权利要求I所述的方法,其特征在于, 所述根据所述各处理器的标识以及所述各IO集中控制器的标识,分别指令处理器同时枚举特定的IO集中控制器及与之相连的IO设备,包括 根据所述各IO集中控制器的标识将所述IO集中控制器分成多个组,每个组包括至少一个IO集中控制器; 根据每组IO集中控制器的数量,为每组IO集中控制器预分配资源,在系统内存中建立资源预分配表; 针对每组IO集中控制器,根据所述各处理器的标识,分别指令处理器同时枚举各组IO集中控制器中每个IO集中控制器及与之相连的IO设备,并根据为各组IO集中控制器预分配的资源为枚举得到的IO设备分配资源。
3.如权利要求2所述的方法,其特征在于, 所述根据所述各IO集中控制器的标识将所述IO集中控制器分成多个组,包括 将系统中每个节点所属的IO集中控制器分为一组, 所述针对每组IO集中控制器,根据所述各处理器的标识,分别指令处理器同时枚举各组IO集中控制器中每个IO集中控制器及与之相连的IO设备,并根据为各组IO集中控制器预分配的资源为枚举得到的IO设备分配资源,包括 指令系统主处理器枚举其所处节点内的IO集中控制器及与之相连的IO设备,并指令每个节点的节点主处理器来枚举该节点内的IO集中控制器及与之相连的IO设备,并根据为各组IO集中控制器预分配的资源为枚举得到的IO设备分配资源。
4.如权利要求2或3所述的方法,其特征在于, 所述针对每组IO集中控制器,根据所述各处理器的标识,分别指令处理器同时枚举各组IO集中控制器中每个IO集中控制器及与之相连的IO设备,并根据为各组IO集中控制器预分配的资源为枚举得到的IO设备分配资源,包括 分别指令处理器按特定的顺序扫描各组IO集中控制器及与之相连的IO设备,在找到IO设备时,根据为各组IO集中控制器预分配的资源,为所述IO设备分配资源,把资源分配信息记录在系统内存中,把资源分配记录写入所述IO设备的寄存器中,设置该IO设备的非资源分配配置项。
5.如权利要求I至4任一项所述的方法,其特征在于, 所述获取系统中的各处理器的标识和各输入输出IO集中控制器的标识,包括 通过系统中的硬件信号获取所述各处理器的标识和各IO集中控制器的标识,或者通过访问系统带外总线来获取所述各处理器的标识和各IO集中控制器的标识,或者通过独立于系统的管理软件来获取所述各处理器的标识和各IO集中控制器的标识。
6.如权利要求I至5任一项所述的方法,其特征在于, 所述获取系统中的各处理器的标识和各IO集中控制器的标识,还包括将所述各处理器的标识以及所述各IO集中控制器的标识存储在系统内存中,其中所述系统内存可以由所述各处理器访问。
7.如权利要求2至6任一项所述的方法,其特征在于, 所述针对每组IO集中控制器,根据所述各处理器的标识,分别指令处理器同时枚举各组IO集中控制器中每个IO集中控制器及与之相连的IO设备,包括 在系统内存中设置指令区域,用于存放指令信息,所述指令信息用于驱动被指令的处理器同时枚举各组IO集中控制器及与之相连的IO设备。
8.如权利要求I至7任一项所述的方法,其特征在于, 所述获取被指令的处理器枚举的IO设备的相关信息,包括 在系统内存中设置枚举结果区域,用于存放枚举出的IO设备的相关信息,以使系统主处理器获取所述被指令的处理器枚举出的IO设备的相关信息。
9.如权利要求8所述的方法,其特征在于, 所述IO设备的相关信息包括下列信息至少一项所述IO设备的制造商标识、IO设备标识、IO设备类型、IO设备资源分配、IO设备总线号信息。
10.一种枚举输入输出设备的设备,其特征在于,所述设备包括 信息收集模块,用于获取系统中的各处理器的标识和各IO集中控制器的标识; 调度模块,用于根据所述各处理器的标识以及所述各IO集中控制器的标识,分别指令处理器同时枚举特定的IO集中控制器及与之相连的IO设备; 结果收集模块,用于获取被指令的处理器枚举的IO设备的相关信息。
11.如权利要求10所述的设备,其特征在于,所述调度模块具体包括 分组子模块,用于根据所述各IO集中控制器的标识将所述各IO集中控制器分成多个组,每个组包括至少一个IO集中控制器; 资源预分配子模块,用于根据每组IO集中控制器的数量,为每组IO集中控制器预分配资源,在系统内存中建立资源预分配表; 枚举子模块,用于针对每组IO集中控制器,根据所述各处理器的标识,分别指令处理器同时枚举各组IO集中控制器中每个IO集中控制器及与之相连的IO设备。
12.如权利要求11所述的设备,其特征在于,所述分组子模块用于将系统中每个节点所属的IO集中控制器分为一组,并且所述枚举子模块用于指令系统主处理器枚举其所处节点内的IO集中控制器及与之相连的IO设备,并且所述枚举子模块指令每个节点的节点主处理器来枚举该节点所属的IO集中控制器及与之相连的IO设备。
13.如权利要求11或12所述的设备,其特征在于,所述枚举子模块用于分别指令所述处理器按特定的顺序扫描各组IO集中控制器及与之相连的IO设备,在找到IO设备时,根据为各组IO集中控制器预分配的资源,为所述IO设备分配资源,把资源分配信息记录在系统内存中,把资源分配记录写入所述IO设备的寄存器中,设置该IO设备的非资源分配配置项。
14.如权利要求10至13任一项所述的设备,其特征在于,所述信息收集模块通过系统中的硬件信号获取所述各处理器的标识和各IO集中控制器的标识,或者通过访问系统带外总线来获取所述各处理器的标识和各IO集中控制器的标识,或者通过独立于系统的管理软件来获取所述各处理器的标识和各IO集中控制器的标识。
15.如权利要求10至14任一项所述的设备,其特征在于,所述信息收集模块还用于将所述各处理器的标识以及所述IO集中控制器的标识存储在系统内存中,其中所述的系统内存可以由所述各处理器访问。
16.如权利要求10至15任一项所述的设备,其特征在于,所述调度模块用于在系统内存中设置指令区域,用于存放指令信息,所述指令信息用于驱动被指令的处理器同时枚举各组IO集中控制器及与之相连的IO设备。
17.如权利要求10至16任一项所述的设备,其特征在于,所述结果收集模块用于在系统内存中设置枚举结果区域,用于存放枚举出的IO设备的相关信息,以使系统主处理器获取所述被指令的处理器枚举出的IO设备的相关信息。
18.如权利要求17所述的设备,其特征在于,所述IO设备的相关信息包括下列信息至少一项所述IO设备的制造商标识、IO设备标识、IO设备类型、IO设备资源分配、IO设备总线号信息。
全文摘要
本发明实施例涉及枚举输入输出设备(IO设备)的方法和设备。枚举输入输出设备的方法包括获取系统中的各处理器的标识和各输入输出(IO)集中控制器的标识;根据所述各处理器的标识以及所述各IO集中控制器的标识,分别指令处理器同时枚举特定的IO集中控制器及与之相连的输入输出IO设备;获取被指令的处理器枚举的IO设备的相关信息。根据本发明实施例,可以将枚举系统IO设备的工作分配给多个处理器同时进行,由此大大减少了枚举过程所消耗的时间,加快了系统初始化的过程。
文档编号G06F9/50GK102725749SQ201180001440
公开日2012年10月10日 申请日期2011年8月22日 优先权日2011年8月22日
发明者刘云海, 朱冠宇 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1