CN105183533A - 一种总线虚拟化的方法、装置及系统 - Google Patents
一种总线虚拟化的方法、装置及系统 Download PDFInfo
- Publication number
- CN105183533A CN105183533A CN201410226199.XA CN201410226199A CN105183533A CN 105183533 A CN105183533 A CN 105183533A CN 201410226199 A CN201410226199 A CN 201410226199A CN 105183533 A CN105183533 A CN 105183533A
- Authority
- CN
- China
- Prior art keywords
- bus
- configuration register
- processor cores
- mark
- bus transaction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Multi Processors (AREA)
Abstract
本发明公开了一种总线虚拟化的方法,包括:所述总线的根复合体RC中包括多个配置寄存器对,且每个配置寄存器对包括一个地址寄存器和一个数据寄存器;所述RC接收处理器内核中的总线代理装置发出的总线事务消息,所述总线事务消息中包含本次总线事务的标识,所述RC从所述多个配置寄存器对中,确定所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对。本发明实施例提供的总线虚拟化的方法中,可以确保每个处理器内核在访问总线设备时,可以使用独立的一个配置寄存器对,从而可以保证处理器内核对总线设备访问正确性。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种总线虚拟化的方法、装置及系统。
背景技术
现有技术中的多内核操作系统是指在一个物理计算节点内包含多个处理器内核,处理器内核使用同一根全局数据总线,也叫前端总线,前端总线通过主桥(hostbridge)或者根复合体(RC,rootcomplex)的转接可以连接到PCIE总线,于是,运行于不同处理器内核的内核代码都可以通过一个配置寄存器对扫描连接在PCIE总线上的总线设备、对PCI总线上的总线设备进行访问。一个配置寄存器对包括一个地址寄存器和一个数据寄存器。
现有技术中,每个处理器内核都可以通过一个配置寄存器对扫描总线和配置读写总线设备。这样:所有的处理器内核只有一个配置寄存器对,多个处理器内核对该配置寄存器对进行共享,这样,地址寄存器和数据寄存器中的值就会出现混乱,导致正确性的问题。
发明内容
本发明实施例提供一种总线虚拟化的方法,可以确保每个处理器内核在访问总线设备时,可以使用独立的一个配置寄存器对,从而可以保证处理器内核对总线设备访问正确性。本发明实施例还提供了相应的装置及系统。
本发明第一方面提供一种总线虚拟化的方法,包括:所述总线的根复合体RC中包括多个配置寄存器对,且每个配置寄存器对包括一个地址寄存器和一个数据寄存器;
所述RC接收处理器内核中的总线代理装置发出的总线事务消息,所述总线事务消息中包含本次总线事务的标识,所述本次总线事务的标识用于标识发起所述本次总线事务的所述处理器内核;
所述RC从所述多个配置寄存器对中,确定所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对,以便所述处理器内核向确定的所述配置寄存器对的地址寄存器中写入要配置的地址信息,向确定的所述配置寄存器对的数据寄存器中读写要给总线设备配置的数据。
结合第一方面,在第一种可能的实现方式中,所述RC从所述多个配置寄存器对中,确定所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对,包括:
所述RC根据所述本次总线事务的标识,从总线事务标识与配置寄存器对的关联关系中,确定与所述本次总线事务的标识对应的配置寄存器对,作为所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对。
结合第一方面,在第二种可能的实现方式中,所述RC从所述多个配置寄存器对中,确定所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对,包括:
所述RC从所述多个配置寄存器对中,确定状态处于空闲态的配置寄存器对;
从状态处于空闲态的配置寄存器对中,选择一个配置寄存器对,作为所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对。
结合第一方面第二种可能的实现方式,在第三种可能的实现方式中,所述从状态处于空闲态的配置寄存器对中,选择一个配置寄存器对,作为所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对之后,所述方法还包括:
将选择的所述一个配置寄存器对中记录的总线事务标识修改为所述本次总线事务的标识,将所述一个配置寄存器对的状态修改为使用状态。
结合第一方面第二种可能的实现方式,在第四种可能的实现方式中,当确定状态处于空闲态的配置寄存器对时,确定出所述多个配置寄存器对的状态都处于使用状态,则向所述处理器内核发出异常报告。
结合第一方面、第一方面第一种至第四种可能的实现方式中的任意一种,在第五种可能的实现方式中,当所述总线事务消息中还包含事务类型的索引信息时,所述RC从所述多个配置寄存器对中,确定所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对之后,所述方法还包括:
根据所述事务类型的索引信息和设备访问权限表,确定所述处理器内核对所述事务类型的索引信息所标识的总线设备是否具有访问权限,所述设备访问权限表用于描述处理器内核对事务类型的索引信息所标识的总线设备是否具有访问权限;
当确定具有访问权限时,则允许所述处理器内核访问所述事务类型的索引信息所标识的总线设备。
结合第一方面、第一方面第一种至第四种可能的实现方式中的任意一种,在第六种可能的实现方式中,所述本次总线事务的标识为单核中央处理器CPU的标识、运行于处理器内核上的负载操作系统的标识或者是多个负载操作系统构成的分区的区域标识。
本发明第二方面提供一种总线的根复合体RC装置,包括:多个配置寄存器对,且每个配置寄存器对包括一个地址寄存器和一个数据寄存器;
接收单元,用于接收处理器内核中的总线代理装置发出的总线事务消息,所述总线事务消息中包含本次总线事务的标识,所述本次总线事务的标识用于标识发起所述本次总线事务的所述处理器内核;
确定单元,用于从所述多个配置寄存器对中,确定所述接收单元接收的所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对,以便所述处理器内核向确定的所述配置寄存器对的地址寄存器中写入要配置的地址信息,向确定的所述配置寄存器对的数据寄存器中读写要给总线设备配置的数据。
结合第二方面,在第一种可能的实现方式中,
所述确定单元,用于根据所述本次总线事务的标识,从总线事务标识与配置寄存器对的关联关系中,确定与所述本次总线事务的标识对应的配置寄存器对,作为所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对。
结合第二方面,在第二种可能的实现方式中,
所述确定单元,用于从所述多个配置寄存器对中,确定状态处于空闲态的配置寄存器对,从状态处于空闲态的配置寄存器对中,选择一个配置寄存器对,作为所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对。
结合第二方面第二种可能的实现方式,在第三种可能的实现方式中,
所述确定单元,还用于将选择的所述一个配置寄存器对中记录的总线事务标识修改为所述本次总线事务的标识,将所述一个配置寄存器对的状态修改为使用状态。
结合第二方面第二种可能的实现方式,在第四种可能的实现方式中,所述装置还包括发送单元,
所述发送单元,用于当所述确定单元确定状态处于空闲态的配置寄存器对时,确定出所述多个配置寄存器对的状态都处于使用状态,则向所述处理器内核发出异常报告。
结合第二方面、第二方面第一种至第四种可能的实现方式中的任意一种,在第五种可能的实现方式中,当所述总线事务消息中还包含事务类型的索引信息时,
所述确定单元,还用于根据所述事务类型的索引信息和设备访问权限表,确定所述处理器内核对所述事务类型的索引信息所标识的总线设备是否具有访问权限,所述设备访问权限表用于描述处理器内核对事务类型的索引信息所标识的总线设备是否具有访问权限;
所述装置还包括:
权限验证单元,用于当所述确定单元确定具有访问权限时,则允许所述处理器内核访问所述事务类型的索引信息所标识的总线设备。
本发明第三方面提供一种总线虚拟化的系统,包括:多个处理器内核、总线的根复合体RC和总线设备,所述每个处理器内核中都包含一个总线代理装置,所述总线的根复合体RC中包括多个配置寄存器对,且每个配置寄存器对包括一个地址寄存器和一个数据寄存器;
所述RC接收处理器内核中的总线代理装置发出的总线事务消息,所述总线事务消息中包含本次总线事务的标识,所述本次总线事务的标识用于标识发起所述本次总线事务的所述处理器内核;
所述RC从所述多个配置寄存器对中,确定所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对,以便所述处理器内核向确定的所述配置寄存器对的地址寄存器中写入要配置的地址信息,向确定的所述配置寄存器对的数据寄存器中读写要给总线设备配置的数据。
本发明实施例提供的总线虚拟化的方法中,所述总线的根复合体RC中包括多个配置寄存器对,且每个配置寄存器对包括一个地址寄存器和一个数据寄存器;所述RC接收处理器内核中的总线代理装置发出的总线事务消息,所述总线事务消息中包含本次总线事务的标识,所述本次总线事务的标识用于标识发起所述本次总线事务的所述处理器内核;所述RC从所述多个配置寄存器对中,确定所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对,以便所述处理器内核向确定的所述配置寄存器对的地址寄存器中写入要配置的地址信息,向确定的所述配置寄存器对的数据寄存器中读写要给总线设备配置的数据。与现有技术中所有处理器内核都共用一个配置寄存器对相比,本发明实施例提供的总线虚拟化的方法中,可以确保每个处理器内核在访问总线设备时,可以使用独立的一个配置寄存器对,从而可以保证处理器内核对总线设备访问正确性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中总线虚拟化的方法的一实施例示意图;
图2是本发明实施例中总线虚拟化的方法的另一实施例示意图;
图3是本发明实施例中总线虚拟化的方法的另一实施例示意图;
图4是本发明实施例中总线虚拟化的方法的另一实施例示意图;
图5是本发明实施例中总线虚拟化的方法的另一实施例示意图;
图6是本发明实施例中总线的根复合体装置的一实施例示意图;
图7是本发明实施例中总线的根复合体装置的另一实施例示意图;
图8是本发明实施例中总线的根复合体装置的另一实施例示意图;
图9是本发明实施例中总线的根复合体装置的另一实施例示意图;
图10是本发明实施例中总线虚拟化的系统的一实施例示意图。
具体实施方式
本发明实施例提供一种总线虚拟化的方法,可以确保每个处理器内核在访问总线设备时,可以使用独立的一个配置寄存器对,从而可以保证处理器内核对总线设备访问正确性。本发明实施例还提供了相应的装置及系统。以下分别进行详细说明。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的总线虚拟化的方法的一实施例包括:
本发明实施例是以一个计算节点为例进行说明的,实际上,本发明实施例提供的总线虚拟化适用于每个计算节点。
在对称多处理结构(SymmetricMulti-Processing,SMP)体系下,系统中可以运行一个多内核操作系统,该多内核操作系统可由多个负载操作系统组成,一个负载操作系统运行与一个或多个处理器内核之上。
计算节点内的处理器内核通过总线的根复合体(RC,RootComplex)控制外接的总线设备,本发明实施例中的总线设备可以为控制器、显卡等可以连接在总线上的设备。
本发明实施例提供的总线虚拟化的方法,所述总线的根复合体RC中包括多个配置寄存器对,且每个配置寄存器对包括一个地址寄存器和一个数据寄存器,例如:地址寄存器0CF8h,描述地址,数据寄存器0CFFh,描述数据。
每个处理器内核中都有一个总线代理装置,处理器内核通过总线代理装置处理总线事务。
在处理总线事务时,总线代理装置将总线事务消息发送到RC中,总线事务消息中包含本次总线事务的标识,本次总线事务的标识可以为处理器内核的标识、例如:假设中央处理器(CentralProcessingUnit,CPU)为单核时,则一个处理器内核为一个CPU,则处理器内核的标识为中央处理器的标识(CPUID,Identification),当然,CPU可以是多核的,本发明实施例中只是举例说明,并不限定CPU的核数。在单体操作系统中,本次总线事务的标识还可以是进程组的标识或其他分组信息。在多内核操作系统中,本次总线事务的标识还可以是一个负载操作系统的标识或者是多个负载操作系统构成的分区的区域标识。本发明实施例中以本次总线事务的标识是CPUID为例进行说明,实际上,并不限定是CPUID。
所述RC接收处理器内核中的总线代理装置发出的总线事务消息,所述RC从所述多个配置寄存器对中,确定所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对可以有多种方法,本发明以两种方法为例进行说明:
第一种方法是:为每个处理器内核预先配置好一个配置寄存器对,当CPU为单核时,就可以为每个CPU预先配置好一个配置寄存器对。这样,在RC通过总线事务消息获知本次总线事务的标识为CPUID时,就可以根据该CPUID,到CPUID与配置寄存器对的关联关系中,确定该CPUID所对应的配置寄存器对。
CPUID与配置寄存器对的关联关系可以通过表格的形式来展示,例如:如表1所示:
表1:CPUID与配置寄存器对的关联关系表
CPU ID | 地址寄存器 | 数据寄存器 |
CPU ID:0 | 地址寄存器0 | 数据寄存器0 |
CPU ID:1 | 地址寄存器1 | 数据寄存器1 |
CPU ID:2 | 地址寄存器2 | 数据寄存器2 |
CPU ID:3 | 地址寄存器3 | 数据寄存器3 |
这样,当CPUID为CPUID:0时,就可以确定对应的配置寄存器对为地址寄存器0和数据寄存器0。
本发明实施例中的具体过程,可以参阅图1进行理解:如图1所示,
RootComplex中CAM-1表示一个CPU将使用的配置寄存器对,CAM-2表示另一个CPU将使用的配置寄存器对。图1中只画出了这两个配置寄存器对,实际上可以有很多个,图1并不对本发明实施例的配置寄存器对的个数造成限定。
CPU的总线代理装置通过主桥(HostBridge)与RC通信,RC上外接有总线设备PCIEbridge1和PCIEbridge2。
本发明实施例中,以CPU2的总线事务过程为例进行说明:在总线事务中,CPU2通过总线代理装置BUSagent2向RC发送总线事务消息,所述总线事务消息中包含CPU2的标识,CPUID:2。例如:总线事务请求阶段的消息(FSBrequestphase)。
RC根据CPUID:2到对应的CPUID与配置寄存器对的关联关系表中查找到对应的配置寄存器对为地址寄存器2和数据寄存器2。
第二种方法是:当配置寄存器对的数量少于处理器内核的数量时,可以不预先设置CPUID与配置寄存器对的对应关系,而是,从配置寄存器对中找到处于空闲状态的配置寄存器对,然后将该处于空闲状态的配置寄存器对配置给该CPU。
在配置寄存器对中添加一个“Busy”字段,用来表示当前配置寄存器对的状态。在CPU读写配置寄存器时,会先对地址寄存器进行写操作,然后对数据寄存器进行读写操作。在地址寄存器被写之后,相应的Busy字段会被RC置为1,表示配置过程没有完成。在数据寄存器被读或写之后,相应的busy字段会被RC置为0,表示一次配置过程完成。
当RC通过CPUID索引不到对应的配置寄存器对时,RC将一次查找配置寄存器组中Busy字段为0的配置寄存器对。如果发现有busy字段为0的配置寄存器对,RC将其CPUID修改为当前总线事务消息中包含的CPUID的值,例如:CPUID:0,并将busy字段置为1。如果没有busy为0的字段,则向相应的CPU报告异常事件。
第二种方法用表格的形式来展示可以如表2所示:
表2:状态查询表
状态位 | CPU ID | 地址寄存器 | 数据寄存器 |
1 | CPU ID:0 | 地址寄存器0 | 数据寄存器0 |
1 | CPU ID:1 | 地址寄存器1 | 数据寄存器1 |
0 | CPU ID:2 | 地址寄存器2 | 数据寄存器2 |
1 | CPU ID:3 | 地址寄存器3 | 数据寄存器3 |
如表2所示,当RC查找表2确定只有第三行的CPUID:2处于空闲状态,则可以将CPUID:2修改为CPUID:0,然后将状态位的0修改为1。修改后的表格如表3所示:
表3:修改后的状态查询表
状态位 | CPU ID | 地址寄存器 | 数据寄存器 |
1 | CPU ID:0 | 地址寄存器0 | 数据寄存器0 |
1 | CPU ID:1 | 地址寄存器1 | 数据寄存器1 |
1 | CPU ID:0 | 地址寄存器2 | 数据寄存器2 |
1 | CPU ID:3 | 地址寄存器3 | 数据寄存器3 |
这样,就可以将地址寄存器2和数据寄存器2提供给CPUID:0对应的CPU使用。
如图2所示,图2所示的情况是未预先建立CPU与配置寄存器对之间的对应关系,而是根据状态位是否繁忙来为CPU寻找配置寄存器对,其他过程已通过表2和表3中的内容进行了介绍,在此不再做过多赘述。
本发明实施例中,为了保证总线虚拟化的效果,还提出了使用“一种节点内安全分区”的方法,用来配置各CPU对总线设备的配置、访问权限。
当所述总线事务消息中还包含事务类型的索引信息时,所述RC从所述多个配置寄存器对中,确定所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对之后,所述方法还可以包括:
根据所述事务类型的索引信息和设备访问权限表,确定所述处理器内核对所述事务类型的索引信息所标识的总线设备是否具有访问权限,所述设备访问权限表用于描述处理器内核对事务类型的索引信息所标识的总线设备是否具有访问权限;
当确定具有访问权限时,则允许所述处理器内核访问所述事务类型的索引信息所标识的总线设备。
事务类型的索引信息可以为总线设备的DeviceID或者总线地址,具体的,配置事务使用DeviceID作为索引,存储器读写事务使用总线地址作为索引。RC中可存储有一张CPU对总线设备的访问权限表,该CPU对总线设备的访问权限表可以参阅表4进行理解:
表4:CPU对总线设备的访问权限表
从表4可知,当总线事务消息中携带有DeviceID和CPUID时,就可以从表4中确定该CPU对该DeviceID对应的总线设备的读权限和写权限,如果读权限时不可读,则该CPU不可以读取该总线设备,如果写权限时不可写,则该CPU不可以配置该总线设备。
可选的,以上CPUID的值可以替换为一种“虚拟总线ID”,用来表示当前CPU所在的总线的ID。包括表4CPUID-总线设备的权限表可以修改为总线ID-总线设备权限表,这样,整个计算节点,也可以成为宿主机就变成了由总线ID分离的多个虚拟化总线组成的系统。
本发明实施例中提供的总线虚拟化过程还可以参阅图3进行进一步的理解:如图3所示:
101、CPU扫描或配置总线设备。
102、CPU发送总线事务请求消息,读写配置寄存器对,总线事务请求消息包含该CPU的标识CPUID。
103、RC查找当前CPUID对应的配置寄存器对。
104、确定是否存在该配置寄存器对,如果存在,则直接执行步骤106。
105、当不存在时,RC替换出一个当前为空闲的配置寄存器对,标记其CPUID域为当前PCUID。如果没有处于空闲的配置寄存器对,则向CPU报告异常。
106、RC置当前配置寄存器对为繁忙,其它CPU不可使用。
107、RC检查此CPUID对该总线设备的操作权限。
108、确定该CPU对该总线设备是否有配置权限。
109、当有配置权限时,则RC直接向该总线设备转发配置请求。
110、当没有配置权限时,则RC向CPU发送异常事件报告。
参阅图4,本发明实施例中的总线虚拟化的方法的另一实施例包括:
1.1、配置寄存器对索引,RC检查当前CPUID的配置寄存器对是否存在。
2.1、设备权限表检查:RC根据DeviceID(CFG_ADDR中高端字段)和CPUID到表4的设备权限表检查该CPU是否对该总线i有配置读或写权限。
3、RC转换该读写操作为PCI总线事务
3.1、地址周期:地址转换CFG_ADRESS=>PCIADBus(地址与数据总线)
3.2、数据周期:
传递PCI配置事务的控制字段;
直接将CFG_DATA传递到PCI数据周期的PCIADBus中,进行读写操作(直接读写到CFG_DATA)。
本发明上述所描述的总线虚拟化的方法,可以确保每个处理器内核在访问总线设备时,可以使用独立的一个配置寄存器对,从而可以保证处理器内核对总线设备访问正确性。
通过本发明的,可以构建一种安全的总线虚拟化方法,进而让各个处理器核能够独立的扫描总线、配置总线设备。由于不使用全局锁,没有锁竞争,本发明保证了硬件访问上的安全性,具有较好的可扩展性,为众核平台下多内核操作系统的安全提供了重要保证。
本技术方案除了直接对总线设备扫描和配置需要使用的配置寄存器进行安全性保证以外,还可以用于其它RootComplex中的寄存器共用带来的安全问题。这些RootComplex中由各个CPU(或者说各个操作系统实例)共用的寄存器,由于分布式锁并不能保证它们的绝对的安全,但是在硬件上通过使用CPUID索引的配置寄存器对来保证每个CPU能够独立访问各自的配置寄存器对。
参阅图5,本发明实施例提供的总线虚拟化的方法的另一实施例包括:
所述总线的根复合体RC中包括多个配置寄存器对,且每个配置寄存器对包括一个地址寄存器和一个数据寄存器;
201、所述RC接收处理器内核中的总线代理装置发出的总线事务消息,所述总线事务消息中包含本次总线事务的标识,所述本次总线事务的标识用于标识发起所述本次总线事务的所述处理器内核。
202、所述RC从所述多个配置寄存器对中,确定所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对,以便所述处理器内核向确定的所述配置寄存器对的地址寄存器中写入要配置的地址信息,向确定的所述配置寄存器对的数据寄存器中读写要给总线设备配置的数据。
本发明实施例中,所述总线的根复合体RC中包括多个配置寄存器对,且每个配置寄存器对包括一个地址寄存器和一个数据寄存器,所述RC接收处理器内核中的总线代理装置发出的总线事务消息,所述总线事务消息中包含本次总线事务的标识,所述本次总线事务的标识用于标识发起所述本次总线事务的所述处理器内核,所述RC从所述多个配置寄存器对中,确定所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对,以便所述处理器内核向确定的所述配置寄存器对的地址寄存器中写入要配置的地址信息,向确定的所述配置寄存器对的数据寄存器中读写要给总线设备配置的数据。与现有技术中所有处理器内核都共用一个配置寄存器对相比,本发明实施例提供的总线虚拟化的方法中,可以确保每个处理器内核在访问总线设备时,可以使用独立的一个配置寄存器对,从而可以保证处理器内核对总线设备访问正确性。
可选地,在上述图5对应的实施例的基础上,本发明实施例提供的总线虚拟化的方法的另一实施例中,所述RC从所述多个配置寄存器对中,确定所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对,可以包括:
所述RC根据所述本次总线事务的标识,从总线事务标识与配置寄存器对的关联关系中,确定与所述本次总线事务的标识对应的配置寄存器对,作为所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对。
可选地,在上述图5对应的实施例的基础上,本发明实施例提供的总线虚拟化的方法的另一实施例中,所述RC从所述多个配置寄存器对中,所述RC从所述多个配置寄存器对中,确定所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对,可以包括:
所述RC从所述多个配置寄存器对中,确定状态处于空闲态的配置寄存器对;
从状态处于空闲态的配置寄存器对中,选择一个配置寄存器对,作为所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对。
可选地,在上述图5对应的可选实施例的基础上,本发明实施例提供的总线虚拟化的方法的另一实施例中,所述从状态处于空闲态的配置寄存器对中,选择一个配置寄存器对,作为所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对之后,所述方法还可以包括:
将选择的所述一个配置寄存器对中记录的总线事务标识修改为所述本次总线事务的标识,将所述一个配置寄存器对的状态修改为使用状态。
可选地,在上述图5对应的可选实施例的基础上,本发明实施例提供的总线虚拟化的方法的另一实施例中,当确定状态处于空闲态的配置寄存器对时,确定出所述多个配置寄存器对的状态都处于使用状态,则向所述处理器内核发出异常报告。
可选地,在上述图5对应的实施例或可选实施例的基础上,本发明实施例提供的总线虚拟化的方法的另一实施例中,当所述总线事务消息中还包含事务类型的索引信息时,所述RC从所述多个配置寄存器对中,确定所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对之后,所述方法还可以包括:
根据所述事务类型的索引信息和设备访问权限表,确定所述处理器内核对所述事务类型的索引信息所标识的总线设备是否具有访问权限,所述设备访问权限表用于描述处理器内核对事务类型的索引信息所标识的总线设备是否具有访问权限;
当确定具有访问权限时,则允许所述处理器内核访问所述事务类型的索引信息所标识的总线设备。
本发明实施例所提供的总线虚拟化的方法,可以参阅图1-图4部分的描述进行理解,本处不做过多赘述。
参阅图6,本发明实施例提供的总线的根复合体RC装置的一实施例包括:多个配置寄存器对,且每个配置寄存器对包括一个地址寄存器和一个数据寄存器;
接收单元301,用于接收处理器内核中的总线代理装置发出的总线事务消息,所述总线事务消息中包含本次总线事务的标识,所述本次总线事务的标识用于标识发起所述本次总线事务的所述处理器内核;
确定单元302,用于从所述多个配置寄存器对中,确定所述接收单元301接收的所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对,以便所述处理器内核向确定的所述配置寄存器对的地址寄存器中写入要配置的地址信息,向确定的所述配置寄存器对的数据寄存器中读写要给总线设备配置的数据。
本发明实施例中,总线的根复合体RC装置包括:多个配置寄存器对,且每个配置寄存器对包括一个地址寄存器和一个数据寄存器;接收单元301接收处理器内核中的总线代理装置发出的总线事务消息,所述总线事务消息中包含本次总线事务的标识,所述本次总线事务的标识用于标识发起所述本次总线事务的所述处理器内核;确定单元302从所述多个配置寄存器对中,确定所述接收单元301接收的所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对,以便所述处理器内核向确定的所述配置寄存器对的地址寄存器中写入要配置的地址信息,向确定的所述配置寄存器对的数据寄存器中读写要给总线设备配置的数据。与现有技术中所有处理器内核都共用一个配置寄存器对相比,本发明实施例提供的总线的根复合体RC装置中,可以确保每个处理器内核在访问总线设备时,可以使用独立的一个配置寄存器对,从而可以保证处理器内核对总线设备访问正确性。
可选地,在上述图6对应的实施例的基础上,本发明实施例提供的总线的根复合体RC装置的另一实施例中,
所述确定单元302,用于根据所述本次总线事务的标识,从总线事务标识与配置寄存器对的关联关系中,确定与所述本次总线事务的标识对应的配置寄存器对,作为所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对。
可选地,在上述图6对应的实施例的基础上,本发明实施例提供的总线的根复合体RC装置的另一实施例中,
所述确定单元302,用于从所述多个配置寄存器对中,确定状态处于空闲态的配置寄存器对,从状态处于空闲态的配置寄存器对中,选择一个配置寄存器对,作为所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对。
可选地,在上述图6对应的实施例的基础上,本发明实施例提供的总线的根复合体RC装置的另一实施例中,
所述确定单元302,还用于将选择的所述一个配置寄存器对中记录的总线事务标识修改为所述本次总线事务的标识,将所述一个配置寄存器对的状态修改为使用状态。
可选地,在上述图6对应的实施例的基础上,参阅图7,本发明实施例提供的总线的根复合体RC装置的另一实施例中,所述装置30还包括发送单元303,
所述发送单元303,用于当所述确定单元302确定状态处于空闲态的配置寄存器对时,确定出所述多个配置寄存器对的状态都处于使用状态,则向所述处理器内核发出异常报告。
可选地,在上述图6对应的实施例的基础上,参阅图8,本发明实施例提供的总线的根复合体RC装置的另一实施例中,当所述总线事务消息中还包含事务类型的索引信息时,
所述确定单元302,还用于根据所述事务类型的索引信息和设备访问权限表,确定所述处理器内核对所述事务类型的索引信息所标识的总线设备是否具有访问权限,所述设备访问权限表用于描述处理器内核对事务类型的索引信息所标识的总线设备是否具有访问权限;
所述装置30还包括:
权限验证单元304,用于当所述确定单元303确定具有访问权限时,则允许所述处理器内核访问所述事务类型的索引信息所标识的总线设备。
图9是本发明实施例总线的根复合体装置30的结构示意图。总线的根复合体装置30可包括输入设备310、输出设备320、处理器330和存储器340。
存储器340可以包括只读存储器和随机存取存储器,并向处理器330提供指令和数据。存储器340的一部分还可以包括非易失性随机存取存储器(NVRAM)。
存储器340存储了如下的元素,可执行模块或者数据结构,或者它们的子集,或者它们的扩展集:
操作指令:包括各种操作指令,用于实现各种操作。
操作系统:包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
在本发明实施例中,处理器330通过调用存储器340存储的操作指令(该操作指令可存储在操作系统中),执行如下操作:
所述总线的根复合体RC中包括多个配置寄存器对,且每个配置寄存器对包括一个地址寄存器和一个数据寄存器;
所述RC接收处理器内核中的总线代理装置发出的总线事务消息,所述总线事务消息中包含本次总线事务的标识,所述本次总线事务的标识用于标识发起所述本次总线事务的所述处理器内核;
所述RC从所述多个配置寄存器对中,确定所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对,以便所述处理器内核向确定的所述配置寄存器对的地址寄存器中写入要配置的地址信息,向确定的所述配置寄存器对的数据寄存器中读写要给总线设备配置的数据。
本发明实施例中,本发明实施例提供的总线的根复合体RC装置中,可以确保每个处理器内核在访问总线设备时,可以使用独立的一个配置寄存器对,从而可以保证处理器内核对总线设备访问正确性。处理器330控制总线的根复合体装置30的操作,处理器330还可以称为CPU(CentralProcessingUnit,中央处理单元)。存储器340可以包括只读存储器和随机存取存储器,并向处理器330提供指令和数据。存储器340的一部分还可以包括非易失性随机存取存储器(NVRAM)。具体的应用中,总线的根复合体装置30的各个组件通过总线系统350耦合在一起,其中总线系统350除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统350。
上述本发明实施例揭示的方法可以应用于处理器330中,或者由处理器330实现。处理器330可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器330中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器330可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器340,处理器330读取存储器340中的信息,结合其硬件完成上述方法的步骤。
可选地,所述处理器330具体用于:
根据所述本次总线事务的标识,从总线事务标识与配置寄存器对的关联关系中,确定与所述本次总线事务的标识对应的配置寄存器对,作为所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对。
可选地,所述处理器330具体用于:
从状态处于空闲态的配置寄存器对中,选择一个配置寄存器对,作为所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对。
可选地,所述处理器330还用于:
将选择的所述一个配置寄存器对中记录的总线事务标识修改为所述本次总线事务的标识,将所述一个配置寄存器对的状态修改为使用状态。
可选地,所述输出设备320用于:
当确定状态处于空闲态的配置寄存器对时,确定出所述多个配置寄存器对的状态都处于使用状态,则向所述处理器内核发出异常报告。
可选地,当所述总线事务消息中还包含事务类型的索引信息时,所述处理器330还用于:
根据所述事务类型的索引信息和设备访问权限表,确定所述处理器内核对所述事务类型的索引信息所标识的总线设备是否具有访问权限,所述设备访问权限表用于描述处理器内核对事务类型的索引信息所标识的总线设备是否具有访问权限;
当确定具有访问权限时,则允许所述处理器内核访问所述事务类型的索引信息所标识的总线设备。
参阅图10,本发明实施例提供的总线虚拟化的系统的一实施例包括:多个处理器内核、总线的根复合体RC和总线设备,所述每个处理器内核中都包含一个总线代理装置,所述总线的根复合体RC中包括多个配置寄存器对,且每个配置寄存器对包括一个地址寄存器和一个数据寄存器;
所述RC接收处理器内核中的总线代理装置发出的总线事务消息,所述总线事务消息中包含本次总线事务的标识;
所述RC从所述多个配置寄存器对中,确定所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对,以便所述处理器内核向确定的所述配置寄存器对的地址寄存器中写入要配置的地址信息,向确定的所述配置寄存器对的数据寄存器中读写要给总线设备配置的数据。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
以上对本发明实施例所提供的总线虚拟化的方法、装置以及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (14)
1.一种总线虚拟化的方法,其特征在于,包括:所述总线的根复合体RC中包括多个配置寄存器对,且每个配置寄存器对包括一个地址寄存器和一个数据寄存器;
所述RC接收处理器内核中的总线代理装置发出的总线事务消息,所述总线事务消息中包含本次总线事务的标识,所述本次总线事务的标识用于标识发起所述本次总线事务的所述处理器内核;
所述RC从所述多个配置寄存器对中,确定所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对,以便所述处理器内核向确定的所述配置寄存器对的地址寄存器中写入要配置的地址信息,向确定的所述配置寄存器对的数据寄存器中读写要给总线设备配置的数据。
2.根据权利要求1所述的方法,其特征在于,所述RC从所述多个配置寄存器对中,确定所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对,包括:
所述RC根据所述本次总线事务的标识,从总线事务标识与配置寄存器对的关联关系中,确定与所述本次总线事务的标识对应的配置寄存器对,作为所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对。
3.根据权利要求1所述的方法,其特征在于,所述RC从所述多个配置寄存器对中,确定所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对,包括:
所述RC从所述多个配置寄存器对中,确定状态处于空闲态的配置寄存器对;
从状态处于空闲态的配置寄存器对中,选择一个配置寄存器对,作为所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对。
4.根据权利要求3所述的方法,其特征在于,所述从状态处于空闲态的配置寄存器对中,选择一个配置寄存器对,作为所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对之后,所述方法还包括:
将选择的所述一个配置寄存器对中记录的总线事务标识修改为所述本次总线事务的标识,将所述一个配置寄存器对的状态修改为使用状态。
5.根据权利要求3所述的方法,其特征在于,当确定状态处于空闲态的配置寄存器对时,确定出所述多个配置寄存器对的状态都处于使用状态,则向所述处理器内核发出异常报告。
6.根据权利要求1-5任一所述的方法,其特征在于,当所述总线事务消息中还包含事务类型的索引信息时,所述RC从所述多个配置寄存器对中,确定所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对之后,所述方法还包括:
根据所述事务类型的索引信息和设备访问权限表,确定所述处理器内核对所述事务类型的索引信息所标识的总线设备是否具有访问权限,所述设备访问权限表用于描述处理器内核对事务类型的索引信息所标识的总线设备是否具有访问权限;
当确定具有访问权限时,则允许所述处理器内核访问所述事务类型的索引信息所标识的总线设备。
7.根据权利要求1-5任一所述的方法,其特征在于,所述本次总线事务的标识为单核中央处理器CPU的标识、运行于处理器内核上的负载操作系统的标识或者是多个负载操作系统构成的分区的区域标识。
8.一种总线的根复合体RC装置,其特征在于,包括:多个配置寄存器对,且每个配置寄存器对包括一个地址寄存器和一个数据寄存器;
接收单元,用于接收处理器内核中的总线代理装置发出的总线事务消息,所述总线事务消息中包含本次总线事务的标识,所述本次总线事务的标识用于标识发起所述本次总线事务的所述处理器内核;
确定单元,用于从所述多个配置寄存器对中,确定所述接收单元接收的所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对,以便所述处理器内核向确定的所述配置寄存器对的地址寄存器中写入要配置的地址信息,向确定的所述配置寄存器对的数据寄存器中读写要给总线设备配置的数据。
9.根据权利要求8所述的装置,其特征在于,
所述确定单元,用于根据所述本次总线事务的标识,从总线事务标识与配置寄存器对的关联关系中,确定与所述本次总线事务的标识对应的配置寄存器对,作为所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对。
10.根据权利要求8所述的装置,其特征在于,
所述确定单元,用于从所述多个配置寄存器对中,确定状态处于空闲态的配置寄存器对,从状态处于空闲态的配置寄存器对中,选择一个配置寄存器对,作为所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对。
11.根据权利要求10所述的装置,其特征在于,
所述确定单元,还用于将选择的所述一个配置寄存器对中记录的总线事务标识修改为所述本次总线事务的标识,将所述一个配置寄存器对的状态修改为使用状态。
12.根据权利要求10所述的装置,其特征在于,所述装置还包括发送单元,
所述发送单元,用于当所述确定单元确定状态处于空闲态的配置寄存器对时,确定出所述多个配置寄存器对的状态都处于使用状态,则向所述处理器内核发出异常报告。
13.根据权利要求8-12任一所述的装置,其特征在于,当所述总线事务消息中还包含事务类型的索引信息时,
所述确定单元,还用于根据所述事务类型的索引信息和设备访问权限表,确定所述处理器内核对所述事务类型的索引信息所标识的总线设备是否具有访问权限,所述设备访问权限表用于描述处理器内核对事务类型的索引信息所标识的总线设备是否具有访问权限;
所述装置还包括:
权限验证单元,用于当所述确定单元确定具有访问权限时,则允许所述处理器内核访问所述事务类型的索引信息所标识的总线设备。
14.一种总线虚拟化的系统,其特征在于,包括:多个处理器内核、总线的根复合体RC和总线设备,所述每个处理器内核中都包含一个总线代理装置,所述总线的根复合体RC中包括多个配置寄存器对,且每个配置寄存器对包括一个地址寄存器和一个数据寄存器;
所述RC接收处理器内核中的总线代理装置发出的总线事务消息,所述总线事务消息中包含本次总线事务的标识,所述本次总线事务的标识用于标识发起所述本次总线事务的所述处理器内核;
所述RC从所述多个配置寄存器对中,确定所述本次总线事务的标识对应的所述处理器内核应使用的配置寄存器对,以便所述处理器内核向确定的所述配置寄存器对的地址寄存器中写入要配置的地址信息,向确定的所述配置寄存器对的数据寄存器中读写要给总线设备配置的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410226199.XA CN105183533B (zh) | 2014-05-26 | 2014-05-26 | 一种总线虚拟化的方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410226199.XA CN105183533B (zh) | 2014-05-26 | 2014-05-26 | 一种总线虚拟化的方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105183533A true CN105183533A (zh) | 2015-12-23 |
CN105183533B CN105183533B (zh) | 2018-09-28 |
Family
ID=54905631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410226199.XA Active CN105183533B (zh) | 2014-05-26 | 2014-05-26 | 一种总线虚拟化的方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105183533B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109002159A (zh) * | 2018-06-28 | 2018-12-14 | 珠海全志科技股份有限公司 | 一种cpu的状态控制电路及方法 |
CN115150458A (zh) * | 2022-05-20 | 2022-10-04 | 阿里云计算有限公司 | 设备管理系统以及方法 |
CN117311604A (zh) * | 2023-07-18 | 2023-12-29 | 武汉中航通用科技有限公司 | 一种嵌入式多元备份及加载方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1983185A (zh) * | 2005-12-12 | 2007-06-20 | 国际商业机器公司 | 在操作系统实例中共享输入/输出适配器的方法和系统 |
CN1987858A (zh) * | 2005-12-19 | 2007-06-27 | 国际商业机器公司 | 在计算机间共享计算机数据的方法和设备 |
CN101983365A (zh) * | 2008-04-02 | 2011-03-02 | 惠普开发有限公司 | 在共享的i/o系统中转换重置 |
CN103778018A (zh) * | 2014-01-16 | 2014-05-07 | 江苏华丽网络工程有限公司 | 一种用于pcie虚拟化管理的方法 |
-
2014
- 2014-05-26 CN CN201410226199.XA patent/CN105183533B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1983185A (zh) * | 2005-12-12 | 2007-06-20 | 国际商业机器公司 | 在操作系统实例中共享输入/输出适配器的方法和系统 |
CN1987858A (zh) * | 2005-12-19 | 2007-06-27 | 国际商业机器公司 | 在计算机间共享计算机数据的方法和设备 |
CN101983365A (zh) * | 2008-04-02 | 2011-03-02 | 惠普开发有限公司 | 在共享的i/o系统中转换重置 |
CN103778018A (zh) * | 2014-01-16 | 2014-05-07 | 江苏华丽网络工程有限公司 | 一种用于pcie虚拟化管理的方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109002159A (zh) * | 2018-06-28 | 2018-12-14 | 珠海全志科技股份有限公司 | 一种cpu的状态控制电路及方法 |
CN115150458A (zh) * | 2022-05-20 | 2022-10-04 | 阿里云计算有限公司 | 设备管理系统以及方法 |
CN117311604A (zh) * | 2023-07-18 | 2023-12-29 | 武汉中航通用科技有限公司 | 一种嵌入式多元备份及加载方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105183533B (zh) | 2018-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4000487A (en) | Steering code generating apparatus for use in an input/output processing system | |
CN107636630B (zh) | 中断控制器 | |
US8990451B2 (en) | Controller for direct access to a memory for the direct transfer of data between memories of several peripheral devices, method and computer program enabling the implementation of such a controller | |
CN102646045A (zh) | 多处理器系统及其并行启动方法 | |
US10078568B1 (en) | Debugging a computing device | |
US10592285B2 (en) | System and method for information handling system input/output resource management | |
CN103092798A (zh) | 片上系统及总线下的访问设备的方法 | |
US9575796B2 (en) | Virtual device timeout by memory offlining | |
CN104102549A (zh) | 一种实现多线程互斥操作的方法、装置和芯片 | |
CN105335227B (zh) | 一种节点内的数据处理方法、装置和系统 | |
CN115203110A (zh) | PCIe功能及其操作方法 | |
US10176131B1 (en) | Controlling exclusive access using supplemental transaction identifiers | |
CN105183533A (zh) | 一种总线虚拟化的方法、装置及系统 | |
US10168934B2 (en) | Method and device for monitoring data integrity in shared memory environment | |
CN105893322A (zh) | 一种cpu互联系统及实现方法 | |
US20090144476A1 (en) | Hot plug in a link based system | |
US9672173B2 (en) | Shared PCI interrupt line management | |
CN103412838A (zh) | 一种扩展系统、通信方法、地址配置方法、设备及装置 | |
WO2019233689A1 (en) | Mmio addressing using a translation table | |
JP5904948B2 (ja) | システムのいくつかの構成要素のメモリ間の直接データ転送を許可するそのシステム | |
US9330024B1 (en) | Processing device and method thereof | |
EP2942714B1 (en) | Monitoring method, monitoring apparatus, and electronic device | |
US20150286584A1 (en) | Method and apparatus for providing memory protection | |
CN114666103A (zh) | 可信度量装置、设备、系统及可信身份认证方法 | |
CN114006819A (zh) | 一种检测策略生成及装置、数据传输方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |