虚拟机中bios调整 cpu显卡插槽pcie 16x数量

初步了解完PCI总线标准之后我们接下来正式开始PCIe设备的漫游之旅。从我们按下PC的电源按钮开始BIOS就接管系统控制权开始工作,它会先进行一些内存和设备的初始化工作(當然也包括我们的PCI设备),由于商业上的原因Phoenix等厂商的BIOS代码需要授权协议,在此我们以另外一个款开源BIOS(openbios)为例,来剖析BIOS中我们嘚PCIe设备是如何被找到以及初始化的。



PCI设备的扫描是基于深度优先搜索算法(DFS:Depth First Search)也就是说,下级分支最多的PCI桥将最先完成其子设备的扫描下面我们以图片来具体说明,BIOS是如何一步步完成PCI 设备扫描的


系统继续扫描后发现Bus 3 下面已经没有任何Bridge了,意味着该PCI总线下已经沒有任何挂载下游总线了因此Bridge 4的Subordinate Bus Number的值已经可以确定为3了。


下面已经没有任何Bridge了意味着该PCI总线下已经没有挂载任何下游总线了,因此Bridge 3 的Subordinate Bus Number嘚值已经可以确定为4了如下图所示:


完成Bus 4的扫描后,系统返回到Bus 1继续扫描 发现Bus 1下面已经没有其他Bridge了。此时Bridge 1的Subordinate Bus Number的值已经可以确定为4系統返回Bus 0继续扫描(Bus 0下如果有其他它Bridge,将重复上述的步骤进行扫描)至此,本例中的整个PCI的设备扫描已经完成了最终的设备和总线的扫描结果如下图所示。


了解了上面PCI设备扫描的大概流程我们接下来看看Bios代码中具体是如何实现这些扫描的。

一般来说我们可以通过两个寄存器来访问PCI的配置空间(寄存器CONFIG_ADDRESS与CONFIG_DATA),在x86体系下这两个寄存器分别对应0xCF8和0xCFC端口,对配置空间的访问都是通过对这两个寄存器的读写来實现先CONFIG_ADDRESS寄存器的具体位组成如下图所示:


每个PCI设备可根据上图所示的四个信息:Bus Number, Device Number, Function Number,Register Number 来进行具体设备的定位并对其配置空间访问当我们偠访问PCI设备的配置空间时,先根据以上格式设置CONFIG_ADDRESS寄存器然后再读取CONFIG_DATA寄存器即可得到相应的配置空间寄存器的值。

因此BIOS中PCI配置空间的读寫可以封装成下面的函数:

总体来说。该BIOS扫描过程中调用如下几个主要的函数:

//获取系统指定的memeory与I/O空间的范围分配给PCIe设备。

具体某条总線上的设备扫描由以下函数实现:

  1. 通过以上这些步骤Bios就完成了所有PCI设备的扫描,并且为每个设备分配好了系统资源

x86处理器使用南北桥结構连接CPU和PCI设备其中北桥(North Bridge)连接快速设备,如显卡、和内存条并推出PCI总线,HOST主桥包含在北桥中而南桥(South Bridge)连接慢速设备。x86处理器使用的南北橋结构如图2?6所示

Intel使用南北桥概念统一PC架构。但是从体系结构的角度上看南北桥架构并不重要,北桥中存放的主要部件不过是存储器控制器、显卡控制器和HOST主桥而已而南桥存放的是一些慢速设备,如ISA总线和中断控制器等

不同的处理器系统集成这些组成部件的方式并鈈相同,如PowerPC、MIPS和ARM处理器系统通常将CPU和主要外部设备都集成到一颗芯片中组成一颗基于SoC架构的处理器系统。这些集成方式并不重要每一個处理器系统都有其针对的应用领域,不同应用领域的需求对处理器系统的集成方式有较大的影响Intel采用的南北桥架构针对x86处理器的应用領域而设计,并不能说采用这种结构一定比MPC8548处理器中即含有HOST-to-PCI主桥也含有HOST-to-PCIe主桥更为合理

在许多嵌入式处理器系统中,即含有PCI设备也含有PCIe设備为此MPC8548处理器同时提供了PCI总线和PCIe总线接口,在这个处理器系统中PCI设备可以与PCI总线直接相连,而PCIe设备可以与PCIe总线直接相连因此并不需偠使用PCIe桥扩展PCI总线,从而在一定程度上简化了嵌入式系统的设计


嵌入式系统所面对的应用千姿百态,进行芯片设计时所要考虑的因素相對较多因而在某种程度上为设计带来了一些难度。而x86处理器系统所面对的应用领域针对个人PC**务器向前兼容和通用性显得更加重要。在哆数情况下一个通用处理器系统的设计难过专用处理器系统的设计,Intel为此付出了极大的代价

在一些相对较老的北桥中,如Intel 440系列芯片组Φ包含了HOST主桥从系统软件的角度上看HOST-to-PCI主桥实现的功能与HOST-to-PCIe主桥实现的功能相近。本节仅简单介绍Intel的HOST-to-PCI主桥如何产生PCI的配置周期有关Intel HOST-to-PCIe主桥[9]的詳细信息参见第5章。

x86处理器定义了两个I/O端口寄存器分别为CONFIG_ADDRESS和CONFIG_DATA寄存器,其地址为0xCF8和0xCFCx86处理器使用这两个I/O端口访问PCI设备的配置空间。PCI总线规范也以这个两个寄存器为例说明处理器如何访问PCI设备的配置空间。其中CONFIG_ADDRESS寄存器存放PCI设备的ID号而CONFIG_DATA寄存器存放进行配置读写的数据。


CONFIG_ADDRESS寄存器的各个字段和位的说明如下所示

  • Enable位,第31位该位为1时,对CONFIG_DATA寄存器进行读写时将引发PCI总线的配置周期

当x86处理器对CONFIG_DATA寄存器进行I/O读写访问,且CONFIG_ADDR寄存器的Enable位为1时HOST主桥将这个I/O读写访问转换为PCI配置读写总线事务,然后发送到PCI总线上PCI总线根据保存在CONFIG_ADDR寄存器中的ID号,将PCI配置读写请求发送到指定PCI设备的指定配置寄存器中

x86处理器使用小端地址模式,因此从CONFIG_DATA寄存器中读出的数据不需要进行模式转换这点和PowerPC处理器不同,此外x86处理器的HOST主桥也实现了存储器域到PCI总线域的地址转换但是这个概念在x86处理器中并不明晰。

本书将在第5章以HOST-to-PCIe主桥为例详细介绍Intel处悝器的存储器地址与PCI总线地址的转换关系,而在本节不对x86处理器的HOST主桥做进一步说明x86处理器系统的升级速度较快,目前在x86的处理器体系結构中已很难发现HOST主桥的身影。

Count)、IDE和USB总线当然也包括一些低带宽的PCIe总线接口。

在Intel最新的Nehelem[10]处理器系统中MCH被一份为二,存储器控制器和圖形控制器已经与CPU内核集成在一个Die中而MCH剩余的部分与ICH合并成为PCH(Peripheral Controller Hub)。但是从体系结构的角度上看这些升级与整合并不重要。

目前Intel在Menlow[11]平台基礎上计划推出基于SoC架构的x86处理器,以进军手持设备市场在基于SoC构架的x86处理器中将逐渐淡化Chipset的概念,其拓扑结构与典型的SoC处理器如ARM和PowerPC處理器,较为类似

[8]WBA字段并没有保存存储器域的第24~35位地址,因为Outbound窗口大小至少为4KB

}

我要回帖

更多关于 显卡插槽pcie 16x 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信