PCI/PCIe基础
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基础相关推荐
- 【PCI】PCI PCIE基础(一)
关于PCI相关基础知识请参阅 王齐 先生的著作<PCI Express 体系结构导读>,个人认为这本书是学习PCI与PCIE的经典之作,以下简要说明初学者应阅读哪些章节. PCI 第一 ~ ...
- pci配置基地址_PCI/PCIe基础——配置空间
简介 PCI/PCIe设备有自己的独立地址空间,这部分空间会映射到整个系统的地址空间. 映射地址在BIOS/UEFI下指定(如果有的话,对于使用非BIOS启动的OS,不清楚),它有两种类型,一种是MM ...
- Linux(debian7)操作基础(三)之PCI/PCI-E设备配置空间
⑴ 概念 PCI和PCI Express,是计算机常使用的一种高速总线.操作系统中的PCI/PCI-E设备驱动以及操作系统内核,都需要访问PCI及PCI-E配置空间.PCI/PCI-E设备的正常运行, ...
- PCIe | 基础知识点扫盲
本文总结 lspci 相关的知识点 1' 2' 3' 4' 5' 6. 本文的内容主要源自互联网技术博客及 SSDfans 网站 7. 持续更新中 - Update: 2023 / 1 / 23 PC ...
- PCIe基础知识及Xilinx相关IP核介绍
补发以下以前学习PCIe总结的知识. PCIe学习笔记系列: PCIe基础知识及Xilinx相关IP核介绍 概念了解:简单学习PCIe的数据链路与拓扑结构,另外看看有什么相关的IP核. [PG054] ...
- 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设备直接分 ...
- 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设备直接分 ...
- PCI-E基础知识学习
PCIE特点: (1)2种路由方式:基于地址的路由方式.基于ID(BDFR)的路由方式 (2)2种数据发送方式:Posted方式和No-Posted方式: (3)多种总线事务:配置读写.内存读写.IO ...
- Remotely Controlling(远程控制) an Octeon through PCI, PCIe, or EJTAG
Remotely Controlling(远程控制) an Octeon through PCI, PCIe, or EJTAG 1. Introduction In development, and ...
最新文章
- 获取某字符 之后 之前
- important meeting with friends
- 前端完全分离和前端不完全分离
- Mysql数据类型之字符串的案例介绍(含latin1下varchar的最大长度是65532还是65533)
- C#锐利体验-第五讲 构造器与析构器(转)
- 用ABAP代码读取S/4HANA生产订单工序明细 1
- css3 下边框缓缓划过_干货来袭!web前端开发工程师必看之如何使用CSS3实现瀑布流效果?...
- Unity官方教程Ruby大冒险的自学笔记
- Linux: wget 使用技巧
- vb如何用代码对Excel的指定区域实行保护
- 【我来解惑】.Net应该学什么怎么学(二)
- LeetCode_9_回文数字
- 员工收“老板”QQ消息转账98万 警方挽回被骗资金
- 精读CSS权威指南第四版(3)
- java 经纬度 地图_基于JAVA的地图经纬度坐标查询api调用代码实例
- 阮一峰es6,Proxy和Reflect学习
- Computer Vision: Algorithms and Applications阅读笔记
- 珍藏多年的视频文案网站
- 高校教室多媒体设备报修管理系统
- css如何将div画成三角形
热门文章
- msvcp140.dll是什么?怎么修复msvcp140.dll缺失的问题
- java中按位异或(XOR)运算
- android OS系统如何适配蓝牙遥控器
- excel计算式自动计算_45套电气自动计算表格+计算软件!EXCEL自动生成版分享
- 各大搜索引擎提交网站入口
- MapReduce 自定义计数器
- 获取安卓设备的有线网卡的MAC地址(安卓TV、安卓系统的广告机等)
- 员工入职背景调查需要查哪些内容?
- java 国际化方案,java 项目国际化完全实现
- 怎么把java安装进老年机_环境搭建 - 老人与JAVA - 博客园