首页> 中国专利> 面向集中地址译码的非PCI片上总线的PCI虚拟化装置及方法

面向集中地址译码的非PCI片上总线的PCI虚拟化装置及方法

摘要

本发明公开了一种面向集中地址译码的非PCI片上总线的PCI虚拟化方法及装置,该装置包括至少一个处理器及非PCI总线,还包括:一虚拟PCI部件,配置于所述处理器和所述非PCI总线之间,用于接收、处理和转发所述处理器发出的所有访问设备配置空间、存储空间和I/O空间的交易,进而实现将所述非PCI设备虚拟化为PCI设备。通过本装置,物理上位于非PCI总线上的设备可以被计算机程序识别为逻辑上位于PCI总线上的设备,和物理上位于PCI总线的设备一起,参与系统资源的分配,从而将非PCI设备虚拟化为PCI设备。

著录项

  • 公开/公告号CN101676894A

    专利类型发明专利

  • 公开/公告日2010-03-24

    原文格式PDF

  • 申请/专利号CN200910163709.2

  • 申请日2009-08-14

  • 分类号G06F13/40(20060101);G06F13/42(20060101);

  • 代理机构11006 北京律诚同业知识产权代理有限公司;

  • 代理人梁挥;祁建国

  • 地址 100032 北京市海淀区中关村北大街151号资源大厦11层

  • 入库时间 2023-12-17 23:40:01

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-04-20

    专利权的转移 IPC(主分类):G06F13/40 登记生效日:20160330 变更前: 变更后: 申请日:20090814

    专利申请权、专利权的转移

  • 2012-02-29

    专利权的转移 IPC(主分类):G06F13/40 变更前: 变更后:

    专利申请权、专利权的转移

  • 2011-08-17

    授权

    授权

  • 2010-05-05

    实质审查的生效 IPC(主分类):G06F13/40 申请日:20090814

    实质审查的生效

  • 2010-03-24

    公开

    公开

说明书

技术领域

本发明涉及系统对集中地址译码的非PCI(Peripheral ComponentInterconnect,周边元件扩展接口)设备的自动识别和初始化,使得基于非PCI总线架构的系统芯片(System-on-Chip,以下简称为SoC)支持工业标准的PCI设备枚举。

背景技术

PCI总线是一种不依赖于某个具体处理器的局部总线,它提供了将系统中的外围设备连接起来的总线协议,已经成为事实上的工业标准。PCI SpecialInterest Group于1998年发布了基于共享总线架构的PCI V2.2总线规范,描述PCI设备的电气特性、连接方法以及和软件之间的交互。PCI-X总线在PCI V2.2版本的基础上,支持更高的总线频率,采用多任务流水线机制,从而提高总线利用率,增大总线带宽。PCI Express总线是一种点对点串行连接的设备连接方法,每个设备具有各自独立的数据连接,可以并发传输数据,这是一种不同于以往PCI总线的全新总线规范。PCI V2.2、PCI-X和PCI Express总线具有与PCI兼容的配置机制及配置寄存器,支持设备的识别和初始化,本发明适用于以上任何一种PCI总线,以下统称为PCI总线,即物理PCI总线。

每个PCI设备内部都实现一组配置寄存器,构成PCI配置空间。标准的PCI配置空间包括256个8位配置寄存器,它是独立于存储空间和I/O空间的物理空间,是PCI总线所特有的一个空间。配置空间包括预定义头部区域以及与设备相关区域。直接影响设备特性的配置寄存器在预定义头部区域,其他部分则因设备而异。在PCI配置寄存器中的设备ID、制造商ID、版本号、头部类型、类别代码、命令寄存器和状态寄存器在所有的PCI设备中都必须实现;基地址寄存器和中断相关寄存器指明了PCI设备所需的存储空间大小、I/O空间大小、中断等资源需求情况。每个PCI设备只需实现该设备所必需的配置寄存器。

系统上电时,与设备无关PCI设备枚举程序通过访问配置空间,实现对系统中PCI设备的检测、识别、配置和初始化工作。程序以轮询的方式访问PCI总线0上每个插槽的配置空间,检测位于PCI总线0上的PCI设备和PCI/PCI桥,为检测到的PCI/PCI桥分配一个总线号1,然后在PCI总线1上继续轮询,检测PCI设备和PCI/PCI桥,直到在每条检测到的PCI总线上每个插槽都被轮询到并且所有PCI设备被检测到为止。对所发现的安装在系统中的每个PCI设备,了解其资源需求情况,配置该设备配置空间中适当的基地址寄存器,从而完成系统资源的无冲突分配,建立地址映射,并加载相应的设备驱动程序。

近年来,处理器和存储器的性能不断提高,而PCI总线协议对总线时钟频率、数据传输延迟和带宽以及数据通路宽度都有严格要求,限制了系统的整体性能。半导体工艺的进步和集成电路设计技术的发展,使得在单一芯片上集成整个系统的功能部件成为可能,越来越多的外围设备将位于片上高速总线上。为提高设计效率,基于IP复用的设计方法已经在SoC设计中得到了广泛应用,如何尽可能少地对IP进行改动也成为SoC设计的一个重要目标。

影响较大的嵌入式SoC总线包括ARM公司的AMBA(AdvancedMicrocontroller Bus Architecture)总线、IBM公司的CoreConnect总线、AMD公司的GeodeLink总线和Silicore公司的Wishbone总线等,在本发明中我们统称为非PCI总线。它们具有各自不同的特性和协议规范,但共同之处在于采用集中的地址译码机制。较高性能和较高时钟频率的设备位于高速系统总线上,如网络控制器、硬盘控制器和DMA控制器等。较低性能和较低时钟频率的设备位于低速外围总线上,如串行接口、并行接口和音频控制器等。高速系统总线和低速外围总线通过高速/低速总线桥接器进行连接和通讯,高速系统总线和PCI总线通过Host/PCI桥接器进行连接和通讯。但是,位于这些非PCI总线上的设备没有实现PCI配置空间,所以基于非PCI总线的SoC不支持工业标准的PCI设备枚举,从而非PCI设备不能被上层应用软件识别和初始化,参与系统资源的分配。

中国专利公开号CN1522415的对比文件,提供了一种虚拟PCI设备装置和方法将非PCI设备识别和初始化配置为PCI设备,提供了一种非PCI设备参与系统资源分配,并为上层软件所访问的方法。对于配置交易访问(用于分配存储空间、I/O空间、ROM空间和中断等系统资源),被虚拟的设备在其内部实现主机总线接口、必要的PCI配置空间寄存器、PCI配置地址镜像和监控模块。当计算机程序通过PCI配置交易为被虚拟的设备分配系统资源时,被虚拟的设备根据分配的设备号,采用总线监听(snooping)机制将接收并处理配置交易。在配置完成后,当计算机程序访问被虚拟的设备的I/O空间或存储空间时,每个被虚拟设备的监控模块都监听总线上的交易,根据内部的资源分配信息,判断是否接收并处理该总线交易。Host/PCI桥接器保存了分配给PCI总线的资源信息,也通过监听机制来接收并处理配置交易、以及I/O交易和存储交易。该专利文件所提供的虚拟PCI设备装置和方法中,每个被虚拟化的设备以及Host/PCI桥接器都必须实现PCI配置交易的监控处理逻辑,并保存系统资源分配信息,这就要求对每个被虚拟化的设备进行修改,而且还存在信息冗余,可能造成不一致。专利号为5832246的美国专利《Virtualization of the ISAbus on PCI with the existence of a PCI to ISA bridge》提出了一种将ISA设备虚拟化为PCI设备的方法和系统,特别针对需要使用DMA操作的ISA设备,通过一个位于PCI总线上的“virtualizing hardware”的模块来实现。该模块实现了PCI接口,监测PCI总线并声明交易,模拟了DMA通道并实现DMA的功能,帮助ISA设备与内存之间读写数据。该专利的工作方式如下:假如位于PCI总线上的“virtualizing hardware”模块,对应于一个ISA设备,模拟了DMA通道1。当处理器通过legacy I/O端口进行DMA操作时,虚拟的PCI设备接收并分析这个交易是否是自己所需的,如果是,那么它就进行虚拟的DMA工作,在ISA设备和内存之间移动数据;否则虚拟的PCI设备忽略这个交易,并且发送PCI retry请求,并且下次不再声明这个交易。这样,处理器发出的这个交易便被发送到了PCI-ISA桥上,由真实的DMA进行处理。该专利文件提供的将ISA设备虚拟化为PCI设备的方法和系统中尚有以下问题需要解决:首先,其实现ISA设备PCI虚拟化的方法是为每个设备上都实现一个“virtualizing hardware”模块,属于分布式,其设计比较复杂性,效率也比较低,可扩展性也较差;其次,该专利文件针对ISA设备,并不实现PCI配置空间寄存器,因此若要实现即插即用(Plug and Play,以下简称PnP),需要与PnP BIOS一起工作;第三,该主机通过位于PCI总线的PCI/ISA桥接器访问ISA总线上的设备,虚拟化模块位于PCI总线上,并不适用于将片上总线的设备虚拟化为PCI设备的领域。

发明内容

本发明所要解决的技术问题在于,提供一种面向集中地址译码的非PCI片上总线的PCI虚拟化装置及方法,利用非PCI总线的集中地址译码特性,通过集中式的PCI虚拟化机制解决了现有技术存在的问题,使得不必对非PCI设备IP和Host/PCI桥接器作任何改动,计算机程序就可以无差别地识别、配置和访问PCI设备和非PCI设备。

为达到上述目的,本发明提供的面向集中地址译码的非PCI片上总线的PCI虚拟化装置包括至少一个处理器及非PCI总线,其特征在于,还包括:

一虚拟PCI部件(Virtual PCI component,以下简称VPCI部件),位于所述处理器和所述非PCI总线之间,用于接收、处理和转发所述处理器发出的所有访问设备配置空间、存储空间和I/O空间的交易,进而实现将所述非PCI设备虚拟化为PCI设备。

上述面向集中地址译码的非PCI片上总线的PCI虚拟化装置,其特征在于,所述虚拟PCI部件进一步包括:

虚拟PCI配置空间,用于分别为每个非PCI设备实现一个虚拟PCI配置空间;

虚拟配置端口寄存器,用于负责所述虚拟PCI配置空间的访问;

监测逻辑模块,用于监测所述处理器发出的配置交易,根据配置交易的地址阶段的总线号和设备号,控制所述虚拟PCI配置空间和物理PCI配置空间的访问;

转发逻辑模块,用于转发所述处理器对非PCI设备和物理PCI设备的存储空间和I/O空间的访问交易。

上述面向集中地址译码的非PCI片上总线的PCI虚拟化装置,其特征在于,所述虚拟PCI配置空间和物理PCI配置空间相同,所述虚拟PCI配置空间的配置寄存器记录了设备的基本信息及资源需求信息,以实现上层应用软件识别和初始化所述非PCI设备。

上述面向集中地址译码的非PCI片上总线的PCI虚拟化装置,其特征在于,所述虚拟配置端口寄存器包括虚拟配置地址寄存器VIR_CONFIG_ADDR和虚拟配置数据寄存器VIR_CONFIG_DATA,所述虚拟配置地址寄存器VIR_CONFIG_ADDR和虚拟配置数据寄存器VIR_CONFIG_DATA在功能上和Host/PCI桥接器中的物理配置地址寄存器CONFIG_ADDR和物理配置数据寄存器CONFIG_DATA相同。

上述面向集中地址译码的非PCI片上总线的PCI虚拟化装置,其特征在于,所述每个非PCI设备都由系统预设一段固定的存储空间,用于I/O交易转换。

上述面向集中地址译码的非PCI片上总线的PCI虚拟化装置,其特征在于,所述基本信息包括:设备ID、制造商ID、版本号、头部类型、类别代码、命令寄存器及状态寄存器;所述资源需求信息包括:存储空间、I/O空间及中断等。

上述面向集中地址译码的非PCI片上总线的PCI虚拟化装置,其特征在于,所述虚拟配置端口寄存器还包括一标志寄存器,当所述标志寄存器设置为有效时,表示当前的配置交易是访问所述虚拟PCI配置空间,由所述虚拟PCI部件负责处理该配置交易;当所述标志寄存器设置为无效时,表示当前的配置交易是访问所述物理PCI配置空间,由Host/PCI桥接器负责处理该配置交易。

上述面向集中地址译码的非PCI片上总线的PCI虚拟化装置,其特征在于,所述配置交易包括地址阶段和数据阶段,其中,地址阶段交易通过写配置地址寄存器,指明要访问设备的配置空间中配置寄存器的地址;数据阶段交易通过读/写配置数据寄存器,由相关控制逻辑读/写地址阶段所指明的配置寄存器,对物理PCI配置空间访问的控制逻辑由Host/PCI桥接器提供,读取数据被锁存入配置数据寄存器并返回给处理器,写数据被锁存入配置地址寄存器并写入相应配置空间的相应配置寄存器中。

上述面向集中地址译码的非PCI片上总线的PCI虚拟化装置,其特征在于,所述非PCI片上总线是指任何采用集中式的地址译码机制的总线,可以是ARM公司的AMBA(Advanced Microcontroller Bus Architecture)总线或者IBM公司的CoreConnect总线,也可以是AMD公司的GeodeLink总线或者Silicore公司的Wishbone总线。

上述面向集中地址译码的非PCI片上总线的PCI虚拟化装置,其特征在于,所述PCI设备是兼容PCI的一类设备的统称,是位于PCI V2.2总线上的PCI设备、或者是位于PCI-X总线上的PCI-X设备、或者是位于PCI Express总线上的PCI Express设备。

进一步的,本发明还提供了一种面向集中地址译码的非PCI片上总线的PCI虚拟化方法,用于包括至少一个处理器及非PCI总线的面向集中地址译码的非PCI片上总线的PCI虚拟化装置,其特征在于,包括:

一PCI虚拟步骤,通过位于所述处理器和所述非PCI总线之间的虚拟PCI部件,接收、处理和转发所述处理器发出的所有访问设备配置空间、存储空间和I/O空间的交易,进而实现将所述非PCI设备虚拟化为PCI设备。

上述面向集中地址译码的非PCI片上总线的PCI虚拟化方法,其特征在于,所述PCI虚拟步骤进一步包括:

虚拟PCI配置空间分配步骤,用于分别为每个非PCI设备实现一个和物理PCI配置空间功能相同的虚拟PCI配置空间;

虚拟配置端口寄存器配置步骤,用于配置虚拟配置地址寄存器和虚拟配置数据寄存器,实现对所述虚拟PCI配置空间的访问;

监测逻辑步骤,用于监测所述处理器发出的配置交易,根据配置交易的地址阶段的总线号和设备号,控制所述虚拟PCI配置空间和物理PCI配置空间的访问;

转发逻辑步骤,用于转发所述处理器对非PCI设备和物理PCI设备的存储空间和I/O空间的访问交易。

上述面向集中地址译码的非PCI片上总线的PCI虚拟化方法,其特征在于,所述监测逻辑步骤进一步包括:

步骤31,系统复位;

步骤32,等待并接收所述处理器发出的交易;

步骤33,判断是否为配置交易,若是,开始配置交易处理,否则执行转发逻辑步骤;

步骤34,判断配置交易为地址阶段交易还是数据阶段交易,若是地址阶段交易,则根据地址阶段的总线号和设备号判断是否访问虚拟PCI设备执行步骤35;若是数据阶段交易,则进一步判断标志寄存器是否为有效执行步骤36;

步骤35,若是访问虚拟PCI设备,将地址阶段的写数据锁存到虚拟配置地址寄存器中,并将所述标志寄存器置为有效;否则,将该地址阶段交易发给Host/PCI桥接器,并将所述标志寄存器置为无效;

步骤36,若标志寄存器为有效,则访问相应设备的虚拟PCI配置空间的相应寄存器,将读取的数据锁存到所述虚拟配置数据寄存器中,并返回给所述处理器;否则,将该数据阶段交易发给Host/PCI桥接器。

上述面向集中地址译码的非PCI片上总线的PCI虚拟化方法,其特征在于,所述转发逻辑步骤进一步包括:

步骤141,判断交易类型为I/O交易还是存储交易;

步骤142,若为I/O交易,查找所述虚拟PCI配置空间的I/O基地址寄存器;若为存储交易,则发给高速系统总线;

步骤143,查找所述虚拟PCI配置空间的I/O基地址寄存器,如果不命中任何一个系统分配的I/O空间,则将该I/O交易转换成一种特殊的存储交易发给Host/PCI桥接器,如果命中系统为某个非PCI设备分配的I/O空间,则将该I/O交易转换成对命中设备的固定存储空间访问的存储交易发给高速系统总线;

步骤144,判断高速系统总线译码器能否对所述存储交易进行正常译码,若能,则选择相应的非PCI设备接收并响应该存储交易;否则,将该存储交易发给Host/PCI桥接器,由物理PCI设备接收并响应该存储交易。

上述面向集中地址译码的非PCI片上总线的PCI虚拟化方法,其特征在于,所述非PCI片上总线是指任何采用集中式的地址译码机制的总线,可以是ARM公司的AMBA(Advanced Microcontroller Bus Architecture)总线或者IBM公司的CoreConnect总线,也可以是AMD公司的GeodeLink总线或者Silicore公司的Wishbone总线。

上述面向集中地址译码的非PCI片上总线的PCI虚拟化方法,其特征在于,所述PCI设备是兼容PCI的一类设备的统称,是位于PCI V2.2总线上的PCI设备、或者是位于PCI-X总线上的PCI-X设备、或者是位于PCI Express总线上的PCI Express设备。

与现有技术相比,本发明提供的面向集中地址译码的非PCI片上总线的PCI虚拟化装置及方法,通过一个单独的硬件部件,提供了集中的PCI虚拟化方法,不必修改被虚拟化的设备,这对基于IP复用的SoC设计是至关重要的,而且还消除了信息冗余的问题;因为集中的实现方式,不需要为每个被虚拟化的设备都实现一个单独的PCI硬件模块,降低了设计复杂性,效率更高,可扩展性更好;同时实现了PCI配置空间寄存器,提供完全的PnP功能。

附图说明

图1为本发明面向集中地址译码的非PCI片上总线的PCI虚拟化装置的基本结构以及在系统中的位置示意图;

图2为该PCI虚拟化装置的内部结构示意图;

图3为处理器访问设备配置空间时的基本工作流程;

图4为处理器访问设备存储空间和I/O空间时的基本工作流程。

具体实施方式

下面结合附图和具体实施方法对本发明作进一步的详细描述,以进一步了解本发明之目的、方案及功效,但并非作为对本发明保护范围的限制。

图1是该装置的基本结构以及在系统中的位置。VPCI部件10位于处理器11和高速系统总线12之间,负责监测和转发处理器11发出的所有访问设备的配置交易、存储交易和I/O交易,VPCI部件10与高速系统总线12的译码器121和低速外围总线13的译码器131协同工作,对非PCI总线上的交易进行译码。系统中的处理器11可以是x86兼容处理器,也可以是任何其他嵌入式处理器;可以是一个处理器,也可以是两个或者多个处理器。位于高速系统总线12上的设备具有较高性能和较高时钟频率,可以是网络控制器、硬盘控制器和DMA控制器等,CPU、片上存储器和协处理器也位于高速系统总线12上;位于低速外围总线13上具有较低性能和较低时钟频率,可以是串行接口、并行接口和音频控制器等。高速系统总线12和低速外围总线13之间通过高速/低速总线桥接器123进行连接和通信。Host/PCI桥接器124位于高速系统总线和物理PCI总线之间,桥接高速系统总线和物理PCI总线0。Host/PCI桥接器124本身也是一个PCI设备,具有PCI配置空间,内部实现了配置地址寄存器CONFIG_ADDR和配置数据寄存器CONFIG_DATA,支持计算机程序对位于物理PCI总线上设备的配置空间访问,负责处理器对物理PCI总线0上设备的识别、初始化和访问。如果处理器11发出的配置交易访问虚拟PCI配置空间101,则由VPCI部件10内部的虚拟PCI配置空间101进行响应,否则发给Host/PCI桥接器124,由物理PCI设备的配置空间进行响应。VPCI部件10将处理器11发出的访问设备存储空间的交易直接发向高速系统总线12,或者选择相应的高速非PCI设备,或者通过高速/低速总线桥接器123发向低速外围总线13,由低速外围总线译码器131选择相应的低速非PCI设备,或者通过Host/PCI桥接器124发向物理PCI总线,由PCI设备接收并响应。

图2详细描述了VPCI部件10的内部结构和功能。VPCI部件10由四部分组成:虚拟PCI配置空间101、虚拟配置端口相关寄存器102、监测逻辑模块103和转发逻辑模块104。在VPCI部件10内部,虚拟PCI配置空间101划分为1、2……n各独立的虚拟PCI配置空间,为每个非PCI设备都实现了一个虚拟的PCI配置空间,并为它们各自分配一个虚拟PCI总线号和虚拟PCI设备号,它们和物理PCI设备是统一编号且不冲突的,在计算机程序看来,系统中的设备所对应的总线号和设备号都是独一无二的。非PCI设备或者是位于物理PCI总线上的虚拟PCI设备,或者是位于虚拟PCI总线上的虚拟PCI设备,其中该虚拟PCI总线通过虚拟的PCI/PCI桥与物理PCI总线0连接,在本发明的实例中,为描述简便起见,非PCI设备在计算机程序看来是位于物理PCI总线0上的虚拟PCI设备,没有虚拟PCI总线。虚拟编号信息只存在于VPCI部件中,或者通过硬连线实现,或者在系统复位后由BIOS初始化代码写入,这些信息对Host/PCI桥接器来说是不可见的。虚拟PCI配置空间和物理PCI配置空间相同,配置寄存器记录了设备ID、制造商ID、版本号、头部类型、类别代码、命令寄存器和状态寄存器等设备基本信息,以及存储空间、I/O空间、中断等资源需求情况,为上层应用软件识别和初始化非PCI设备提供了可能。

配置端口是上层应用软件访问配置空间的唯一途径,虚拟配置端口由虚拟配置地址寄存器VIR_CONFIG_ADDR和虚拟配置数据寄存器VIR_CONFIG_DATA实现,在功能上,它们分别和Host/PCI桥接器124中的物理配置地址寄存器CONFIG_ADDR和物理配置数据寄存器CONFIG_DATA完全相同,但VPCI部件实现了相关的控制逻辑,负责虚拟PCI配置空间101的访问。为正确地路由和转发处理器11发出的配置交易,VPCI部件10还实现标志寄存器CFG_INT_PCI,当标志寄存器有效时表明当前的配置交易是访问虚拟PCI配置空间101,由VPCI部件10处理该配置交易,当标志寄存器无效时表明当前的配置交易是访问物理PCI配置空间,由Host/PCI桥接器124处理该配置交易。

监测逻辑模块103负责监测处理器11发出的对配置空间访问的配置交易。配置交易通过对配置端口的访问来完成,包括地址阶段交易和数据阶段交易。地址阶段交易通过写配置地址寄存器,指明要访问设备配置空间的总线号、设备号和配置寄存器偏移等地址信息,数据阶段交易通过读或者写配置数据寄存器,由相关控制逻辑读或者写地址阶段所指明的配置寄存器,对物理PCI配置空间访问的控制逻辑由Host/PCI桥接器124提供,读取数据被锁存入配置数据寄存器并返回给处理器11,写数据被锁存入配置地址寄存器并写入相应设备的配置空间的相应配置寄存器中。

如果地址阶段交易的总线号和设备号是分配给非PCI设备,则VPCI部件10捕获该配置交易的地址阶段交易以及后续的数据阶段交易,VPCI部件10将地址阶段的写数据写入内部的VIR_CONFIG_ADDR寄存器中,并将标志寄存器CFG_INT_PCI设置为有效,用于指明后续的数据阶段均为访问虚拟PCI配置空间,数据阶段的读交易被VPCI部件截获并响应,通过访问内部的相应设备的虚拟PCI配置空间101完成,读取的数据被放入VIR_CONFIG_DATA寄存器,并返回给处理器11;数据阶段交易的写交易被VPCI部件截获并响应,写数据被放入VIR_CONFIG_DATA寄存器,并写入内部的相应设备的虚拟PCI配置空间,在这一过程中,配置交易直接由VPCI部件11处理,不会发到高速系统总线12上,Host/PCI桥接器124也不会接收到配置交易的任何请求。如果地址阶段交易的总线号和设备号是分配给物理PCI设备,则VPCI部件将该配置交易的地址阶段交易发给Host/PCI桥接器124,并将标志寄存器CFG_INT_PCI设置为无效,以便将后续的数据阶段交易也发给Host/PCI桥接器124。Host/PCI桥接器124在接收到配置交易后,更新CONFIG_ADDR和CONFIG_DATA寄存器,并在PCI总线上产生相应的配置交易,由相应的物理PCI设备的配置空间接收并响应该配置交易。

转发逻辑模块104负责转发处理器11发出的对设备存储空间和I/O空间的访问交易。对于存储交易,VPCI部件11直接发向高速系统总线12,高速系统总线的译码器121根据VPCI部件的虚拟PCI配置空间的基地址寄存器信息,了解系统为各非PCI设备分配的存储空间的起始地址和空间大小,判断存储交易是访问哪个非PCI设备的,如果访问位于高速系统总线12上的设备,则选择相应的设备接收并响应该存储交易;如果访问位于低速外围总线13上的设备,则通过高速/低速总线桥接器发给低速外围总线13,低速外围总线的译码器131根据VPCI部件10的虚拟PCI配置空间的基地址寄存器信息,选择相应的设备接收并响应该存储交易;如果高速系统总线的译码器121不能对存储交易进行正常译码,则将该存储交易通过Host/PCI桥接器124发给PCI总线,物理PCI总线上的相应设备接收并响应该存储交易。

对于I/O交易,系统为所有非PCI设备都各自预留了一段固定的存储空间用于I/O交易转换,这段存储空间是不能作为系统资源,被计算机程序分配的,高速系统总线的译码器121和低速外围总线的译码器131除了根据VPCI部件10中的虚拟PCI配置空间的基地址寄存器进行译码外,还使用这些固定的信息进行译码。VPCI部件10通过查找内部的各个虚拟PCI配置空间的基地址寄存器,判断是访问哪个非PCI设备的I/O空间,如果命中,则将I/O交易转换成对该设备对应的固定存储空间的存储交易,发向高速系统总线12,高速系统总线的译码器121根据转换后的存储交易的地址和译码器内部的设备特定存储空间信息,选择相应的设备接收并响应该交易;如果没有命中,该I/O交易访问的I/O空间没有被分配给非PCI设备,而是被分配给物理PCI设备,I/O交易被转换成一种特殊的存储交易,通过高速系统总线12发给Host/PCI桥124接器,Host/PCI桥接器124负责将该特殊的存储交易重新转换为I/O交易,发向PCI总线,实现相应I/O空间的物理PCI设备将接收并响应该I/O交易。非PCI设备的存储空间和I/O空间分配信息被保存在VPCI部件10内部的虚拟PCI配置空间的基地址寄存器中,物理PCI设备的存储空间和I/O空间分配信息被保存在各物理PCI设备内部的物理PCI配置空间的基地址寄存器中,它们共同构成系统的地址空间分配和映射。VPCI部件实现的虚拟配置端口寄存器VIR_CONFIG_ADDR和VIR_CONFIG_DATA只负责虚拟PCI配置空间的访问,Host/PCI桥接器124实现的物理配置端口寄存器CONFIG_ADDR和CONFIG_DATA只负责物理PCI配置空间的访问。不管是配置空间中的配置寄存器,还是控制配置寄存器访问的配置端口寄存器等信息,均不存在信息的冗余,一方面减少了信息不一致的危险,另一方面不需对原有设备IP做任何修改,只需在处理器和高速系统总线之间添加一个集中控制部件,就可支持非PCI设备的识别和初始化。高速系统总线译码器在路由和转发处理器交易的过程中扮演重要角色,Host/PCI桥接器124是高速系统总线译码的默认路径,不能被正常译码的处理器交易均发向Host/PCI桥接器。

本发明还提供了一种应用上述实现的面向集中地址译码的非PCI片上总线的PCI虚拟化方法,包括:一PCI虚拟步骤,通过配置位于处理器和非PCI总线之间的VPCI部件,接收、处理和转发处理器发出的所有访问设备配置空间、存储空间和I/O空间的交易,进而实现将非PCI设备虚拟化为PCI设备。

该PCI虚拟步骤进一步包括:虚拟PCI配置空间分配步骤,用于分别为每个非PCI设备实现一个和物理PCI配置空间功能相同虚拟PCI配置空间;虚拟配置端口寄存器配置步骤,用于配置虚拟配置地址寄存器和虚拟配置数据寄存器实现对所述虚拟PCI配置空间的访问;监测逻辑步骤,用于监测所述处理器发出的配置交易,根据配置交易的地址阶段的总线号和设备号,控制所述虚拟PCI配置空间和物理PCI配置空间的访问;转发逻辑步骤,用于转发所述处理器对非PCI设备和物理PCI设备的存储空间和I/O空间的访问交易。

图3是处理器访问设备的配置空间时的基本工作流程。该流程被VPCI部件10的监测逻辑模块103执行。包括以下步骤:

步骤S301,开始,系统复位,其将导致处理器、系统中的所有设备和VPCI部件内部的寄存器被设置为缺省值,VPCI部件的各虚拟PCI配置空间寄存器的缺省值由相应设备来决定,虚拟配置地址寄存器VIR_CONFIG_ADDR和虚拟配置数据寄存器VIR_CONFIG_DATA的缺省值为全零,标志寄存器CFG_INT_PCI的缺省值为无效,表明默认的配置交易均访问物理PCI总线上设备的配置空间;

步骤S302,获取处理器交易,即等待并接收处理器发出的交易;

步骤S303,判断是否为配置交易,若结果是肯定的,则进入步骤S304,开始配置交易的处理,否则进行存储交易或I/O交易的处理(图4);

步骤S304,判断配置交易,若配置交易是地址阶段交易,则执行步骤S305,若是数据阶段交易,则执行步骤S307;

步骤S305,根据地址阶段的总线号和设备号判断是否访问虚拟PCI设备,若结果是肯定的,执行步骤S306,否则执行步骤S308;

步骤S306,将地址阶段的写数据锁存到VPCI内部的虚拟配置地址寄存器VIR_CONFIG_ADDR寄存器中,并将标志寄存器CFG_INT_PCI置为有效;

步骤S307,进一步判断标志寄存器CFG_INT_PCI是否有效,若有效执行步骤S309,否则,执行步骤S308;

步骤S308,将该地址阶段交易发给Host/PCI桥接器,并将标志寄存器CFG_INT_PCI置为无效;

步骤S309,访问VPCI内部的相应设备的虚拟PCI配置空间的相应寄存器,将读取的数据锁存到虚拟配置数据寄存器VIR_CONFIG_DATA中,并返回给处理器。

图4是处理器访问设备的存储空间和I/O空间的基本工作流程。该方法被VPCI部件11的转发逻辑模块104执行。图4由图3的步骤S303转入。系统为非PCI设备分配的存储空间和I/O空间的起始地址被写入VPCI部件中该设备所对应的虚拟PCI配置空间的基地址寄存器中,除此之外,每个非PCI设备都有一段固定的存储空间,用于I/O交易的转换。处理器对设备存储空间访问的交易,VPCI部件直接发给高速系统总线,高速系统总线的译码器采用集中式的地址译码机制,根据存储交易的地址和VPCI部件中基地址存储器等信息,产生片选信号,选择相应设备接收并响应该交易。处理器对设备I/O空间访问的交易被VPCI部件先转换成访问该设备的特定存储空间的存储交易,然后再发给高速系统总线,高速系统总线的译码器根据转换后的存储交易的地址和译码器内部的设备特定存储空间信息,产生片选信号,选择相应的设备接收并响应该交易。经过高速系统总线译码后,如果存储交易是访问低速外围设备的,则通过高速/低速总线桥接器发给低速外围总线,其低速外围总线的译码过程类似。具体包括如下步骤:

步骤S401,判断该交易的类型,若为I/O交易则进入步骤S402;如果步判断为存储交易,则直接进入步骤S405。

步骤S402,查找VPCI部件内部的虚拟PCI配置空间的I/O基地址寄存器;如果不命中任何一个系统分配的I/O空间,则执行步骤S403;如果命中系统为某个非PCI设备分配的I/O空间,则进入步骤S404;

步骤S403,将该I/O交易转换成一种特殊的存储交易发向Host/PCI桥接器;

步骤S404,将该I/O交易转换成对命中设备的固定存储空间访问的存储交易,并进入步骤S405。

步骤S405,发给高速系统总线;

步骤S406,判断高速系统总线译码器能否对存储交易进行正常译码,若是,进入步骤S407;否则进入步骤S408;

步骤S407:选择相应的非PCI设备接收并响应该存储交易;

步骤S408:将该存储交易发给Host/PCI桥接器,对于存储交易,物理PCI总线上的设备接收并响应,对于特殊存储交易,Host/PCI桥接器将之重新转换成I/O交易,和处理器发出的I/O交易完全相同,由实现相应I/O空间的物理PCI总线上的设备接收并响应。

本发明适用于所有集中式地址译码的非PCI总线的嵌入式SoC,尽管本发明描述的系统只是将非PCI设备虚拟化为物理PCI总线0上的虚拟PCI设备,但是本领域技术人员可以理解,在此所描述的方法可以被应用于具有更多设备的复杂系统中,例如将非PCI设备虚拟化位于虚拟PCI总线1上的虚拟PCI设备,而虚拟PCI/PCI桥作为物理PCI总线0上的一个虚拟PCI设备,负责虚拟PCI总线1和物理PCI总线0的连接和通讯。

虽然本发明已以一较佳实施例揭露如上,然其并非用以限定本发明,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号