PCI/PCIe基础

news/2024/10/24 12:24:25/

PCI/PCIe基础

处理器系统中的PCI

PCI总线全称Peripheral Component Interconnect,它是处理器系统的一部分,属于局部总线,其主要功能是连接外部设备。

PCI总线有独立的地址空间,它与处理器地址空间是隔离的。隔离两者的是一种叫做Host Bus Controller的组件。

下面是一个具有PCI总线的系统的逻辑示意图: 

首先是CPU的结构,下面以Intel I7处理器为例:

上图还没有涉及到PCI的部分,PCI部分位于上图的Chipset中(其实CPU上也是可以有PCI控制器的)。Chipset有南北桥之分,之前北桥是独立的,不过现在一般集成在CPU当中;南桥也不再叫南桥了,而是被称为PCH的部件所代替。另外,对于一些用于嵌入式的系统,连南桥(PCH)也集成在了CPU中。

从上图可以看到多个Host  Bus Controller(即上图的HB x)。一个Chipset可以包含多个HB,而每一个HB可以包含一个到多个的PCI Root Bridge:

一个PCI Root Bridge是PCI树结构的根节点,从它往下可以挂不同的设备。PCI Root Bridge下的总线一般称为BUS(0),不过需要注意这里的0并非表示实际的总线地址是0,因为一个Host Bus Controller下可能存在多个PCI Root Bridge,所以实际的地址要根据PCI Root Bridge的个数来分配。例如有两个PCI Root Bridge,而一个Host Bus Controller下总线的最大个数是256个(0x00~0xFF),所以两个PCI Root Bridge下的总线应该是0x00和0x80,即将总线地址分成了两个PCI总线域。

下面是有两个Host Bus Controller的系统:

由于存在两个Host Bus Controllers,因此这个系统支持最多512个PCI总线。

注意,上面的几张图中有个问题,即CPU连接Chipset分别使用了FSB和QPI两种不同的总线,这个不需要特别关注。实际上两种总线都是用来连接CPU和Chipset的,只是QPI更新一点,所以效率更高一点(带宽更大),新的Intel处理器系统一般都使用了QPI而不再使用FSB。

历史

PCI是一种并行总线,在它之前也有一些连接外设的并行总线,如IAS、EISA和MCA等。

而在PCI之后,也有PCI-X和PCIe总线,两者都是基于PCI总线设计的。

PCI-X总线仍旧采用并行总线技术,而PCIe使用了高速差分总线来达到更高的频率和更大的带宽,且不同于PCI的共享方式,PCIe总线采用端到端的连接方式,在每一条PCIe链路上只能连接两个设备。

PCI树

前面已经讲到PCI Root Bridge是PCI树的根节点,在它之下是BUS(0)。

而在BUS(0)下面可以接两种类型的PCI设备,分别是PCI Bridge和PCI Agent。

其中PCI Bridge用来扩展原来的PCI总线,在PCI Bridge之下可以延伸出新的总线,以此连接更多的设备。

而PCI Agent就是真正的PCI设备(比如网卡)了,是PCI树的最末端。

另外,PCI Bridge还分透明桥和非透明桥,PCI Agent还分主设备和从设备,在这里不多做介绍。

在Linux下,可以通过lspci命令查看PCI树:


http://www.ppmy.cn/news/474488.html

相关文章

PCI、PCIE、PIC

PCI总线 PCI(Peripheral Component Interconnect,外设部件互连标准,或外围器件互联)是目前个人电脑中使用最为广泛的接口,几乎所有的主板产品上都带有这种插槽。PCI插槽也是主板带有最多数量的插槽类型,在…

PCIE指导

1 介绍 本文档对如何使用PCIE/PCI设备给出好的例子并解释了背后的原因。 注意PCIE特性仅在X86架构上使用q35机器类型和AArch64架构使用virt机器类型时有效。其他机器类型目前不支持PCIE。 下列文档可以与本文档一起阅读: (1)Q35 overview h…

深入PCI与PCIe之一:硬件篇

PCI总线和设备树是X86硬件体系内很重要的组成部分,几乎所有的外围硬件都以这样或那样的形式连接到PCI设备树上。虽然Intel为了方便各种IP的接入而提出IOSF总线,但是其主体接口(primary interface)还依然是PCIe形式。我们下面分成两部分介绍PCI和他的继承…

PCIE 转 spi 总线

一、系统结构 图1.系统结构 主要由PCIE接口芯片PEX8311、FPGA芯片Altera EP2C20、SDRAM等构成。 主要功能: PCIEx1总线的数据通讯。使用PEX8311芯片完成PCIE总线到局部总线的转换。PEX8311局部总线连接到FPGA芯片,通过Verilog语言对8311进行时序控制。…

PCI总线和PCIe总线

PCI总线结构 PCI是共享总线,一个总线上可以挂接多个设备,速率越高可挂接的设备越少; PCIe总线结构 与PCI总线不同,PCle总线使用端到端的连接方式,在一条PCle链路的两端只能各连接一个设备,这两个设备互为…

基于FPGA的PCIE设计(3)

PCIE协议基础 参考文献PCIE常用软件项目简述PCIE概述***PCIE协议主要包括四个部分:******下面将以主板上面的PCIE拓扑结构来介绍PCIE结构中上面的四个部件。******PCIE设备为了避免布线的交叉,引入了Lane Reversal功能***,***PCIE的接口形式主…

PCI/PCIe硬件相关知识

Linux下PCI驱动实现(硬件篇) 首先要说明一点,由于作者对内核也不是完全熟悉,所以做内核编程时喜欢猜测,即根据对内核的了解去猜测内核会怎么做,文章有部分内核行为是作者自己猜测,如有错误,欢迎批评指正。…

FPGA 实现PCI转localbus

把PCI转localbus调通了,取代了以前使用的PCI芯片PCI9030,PCI9054等芯片.全部用FPGA实现。 使用P1020主板可以识别到FPGA PCI卡,DEVICE_ID和VENDOR_ID的参数在config_mux.v里面设置。以及后面的class/rev参数设置如下 2、接下来要做的工作是将…