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树:

PCI/PCIe基础相关推荐

  1. 【PCI】PCI PCIE基础(一)

    关于PCI相关基础知识请参阅 王齐 先生的著作<PCI Express 体系结构导读>,个人认为这本书是学习PCI与PCIE的经典之作,以下简要说明初学者应阅读哪些章节. PCI 第一 ~ ...

  2. pci配置基地址_PCI/PCIe基础——配置空间

    简介 PCI/PCIe设备有自己的独立地址空间,这部分空间会映射到整个系统的地址空间. 映射地址在BIOS/UEFI下指定(如果有的话,对于使用非BIOS启动的OS,不清楚),它有两种类型,一种是MM ...

  3. Linux(debian7)操作基础(三)之PCI/PCI-E设备配置空间

    ⑴ 概念 PCI和PCI Express,是计算机常使用的一种高速总线.操作系统中的PCI/PCI-E设备驱动以及操作系统内核,都需要访问PCI及PCI-E配置空间.PCI/PCI-E设备的正常运行, ...

  4. PCIe | 基础知识点扫盲

    本文总结 lspci 相关的知识点 1' 2' 3' 4' 5' 6. 本文的内容主要源自互联网技术博客及 SSDfans 网站 7. 持续更新中 - Update: 2023 / 1 / 23 PC ...

  5. PCIe基础知识及Xilinx相关IP核介绍

    补发以下以前学习PCIe总结的知识. PCIe学习笔记系列: PCIe基础知识及Xilinx相关IP核介绍 概念了解:简单学习PCIe的数据链路与拓扑结构,另外看看有什么相关的IP核. [PG054] ...

  6. KVM 介绍(4):I/O 设备直接分配和 SR-IOV [KVM PCI/PCIe Pass-Through SR-IOV]

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  7. linux禁用及启用pcie设备,KVM 介绍(4):I/O设备直接分配和 SRIOV [KVM PCI/PCIe PassThrough SRIOV]...

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  8. PCI-E基础知识学习

    PCIE特点: (1)2种路由方式:基于地址的路由方式.基于ID(BDFR)的路由方式 (2)2种数据发送方式:Posted方式和No-Posted方式: (3)多种总线事务:配置读写.内存读写.IO ...

  9. Remotely Controlling(远程控制) an Octeon through PCI, PCIe, or EJTAG

    Remotely Controlling(远程控制) an Octeon through PCI, PCIe, or EJTAG 1. Introduction In development, and ...

最新文章

  1. 获取某字符 之后 之前
  2. important meeting with friends
  3. 前端完全分离和前端不完全分离
  4. Mysql数据类型之字符串的案例介绍(含latin1下varchar的最大长度是65532还是65533)
  5. C#锐利体验-第五讲 构造器与析构器(转)
  6. 用ABAP代码读取S/4HANA生产订单工序明细 1
  7. css3 下边框缓缓划过_干货来袭!web前端开发工程师必看之如何使用CSS3实现瀑布流效果?...
  8. Unity官方教程Ruby大冒险的自学笔记
  9. Linux: wget 使用技巧
  10. vb如何用代码对Excel的指定区域实行保护
  11. 【我来解惑】.Net应该学什么怎么学(二)
  12. LeetCode_9_回文数字
  13. 员工收“老板”QQ消息转账98万 警方挽回被骗资金
  14. 精读CSS权威指南第四版(3)
  15. java 经纬度 地图_基于JAVA的地图经纬度坐标查询api调用代码实例
  16. 阮一峰es6,Proxy和Reflect学习
  17. Computer Vision: Algorithms and Applications阅读笔记
  18. 珍藏多年的视频文案网站
  19. 高校教室多媒体设备报修管理系统
  20. css如何将div画成三角形

热门文章

  1. msvcp140.dll是什么?怎么修复msvcp140.dll缺失的问题
  2. java中按位异或(XOR)运算
  3. android OS系统如何适配蓝牙遥控器
  4. excel计算式自动计算_45套电气自动计算表格+计算软件!EXCEL自动生成版分享
  5. 各大搜索引擎提交网站入口
  6. MapReduce 自定义计数器
  7. 获取安卓设备的有线网卡的MAC地址(安卓TV、安卓系统的广告机等)
  8. 员工入职背景调查需要查哪些内容?
  9. java 国际化方案,java 项目国际化完全实现
  10. 怎么把java安装进老年机_环境搭建 - 老人与JAVA - 博客园