PCIe总线学习笔记(一、PCI基础知识简介)
来源:互联网 发布:永暑礁 知乎 编辑:程序博客网 时间:2024/05/02 15:31
PCIe总线是继承了PCI总线而设计而来的,所以理解PCIe总线先熟悉PCI总线会有很大帮助;我写的blog是根据《PCI Express 体系结构导读》作者:王齐,这本书学习后的整理笔记,都是自己理解后用自己的意思表达的,如果理解上有什么出入希望大家可以指出,请以作者原书为准,谢谢;
在看这个书时我规规矩矩的从前往后看,其实有些内容在后面会有很多理解和答案;先看下下面的图示,会很好理解PCI总线的整个架构:
PCI总线和其他总线比较有几个突出优点:
1、PCI总线空间和处理器空间隔离
PCI总线上的设备都有自己的PCI地址(PCI总线地址),处理器空间地址和PCI总线地址通过HOST主桥(HOST主桥就是连接处理器和PCI总线的一个设备器件)进行隔离。HOST主桥中有很多寄存器,这就可以使得处理器工作的频率和总线工作频率可以不一样,通过寄存器缓存数据。当处理器要访问PCI设备时,需要通过HOST主桥进行地址转换,把处理器地址转换成PCI总线地址,然后才能访问PCI设备;同理,PCI设备中的数据要往外走,也要通过HOST主桥进行地址转换。说到底,HOST主桥就是一个桥梁。
2、可扩展性
所谓可扩展性就是说在PCI总线上可以挂个PCI桥(PCI桥就是连接PCI总线和PCI总线的),然后PCI桥会推出一条PCI总线,该总线上又可以挂一个PCI桥,然后又可以推出一条PCI总线.......;但是一颗PCI总线树(PCI总线树以HOST主桥为树根PCI总线连接的所有设备)上的设备上限为256,其中包括HOST主桥和PCI桥;再提一个概念,上游总线和下游总线:上游总线是PCI桥靠近HOST主桥(或者说处理器)的一段总线,下游总线就是另外一端总线了;
PCI桥的作用可以隔离PCI设备,不影响各条总线的带宽,总线x1上通讯和总线x2上是否通讯无关;同一条总线上的设备可以自由通讯,同HOST主桥下(PCI域)中设备可以通讯,而不需要处理器操作。当PCI桥出现故障时,如:PCI桥x1出现故障,那么PCI设备11和PCI设备12可以通讯,但是数据不能出去,当然也不影响其他总线上的通讯;
如果HOST主桥支持Peer-to-Peer数据传输方式,那么设备可以跨PCI桥直接通讯,比如:PCI设备01和PCI设备12;
3、动态配置机制
PCI设备的地址可以由系统软件动态分配,解决了地址冲突。每一个PCI设备都有一个独立的配置空间,在配置空间中有该设备在总线上的地址系列的基地址,这个基地址也是有系统软件动态分配的。PCI桥的配置空间中有其PCI子树使用的地址范围;
4、共享总线机制
PCI总线上有多个设备,但他们需要通讯时,都必须向PCI总线仲裁器提出申请,当得到允许后才能在总线中发送数据;
5、中断机制
PCI总线上的设备可以使用四根中断请求信号INTA INTB INTC INTD向处理器发出中断请求;其中INTA是单功能设备,其他的是多功能设备;
PCI总线知识重点
(1) 当 PCI 主设备获得总线使用权之后, 将在 CLK1 的上升沿置 FRAME#信号有效, 启动 PCI总线事务。当 PCI 总线事务结束后,FRAME#信号将被置为无效。
(2) PCI 总线周期的第一个时钟周期(CLK1 的上升沿到 CLK2 的上升沿之间)为地址周期。在地址周期中,PCI 主设备将访问的目的地址和总线命令分别驱动到 AD[31:0]和 C/BE#信号上。如果当前总线命令是配置读写,那么 IDSEL 信号线也被置为有效,IDSEL 信号与 PCI 总线的AD[31:11]相连。
(3) 当 IRDY#、TRDY#和 DEVSEL#信号都有效后,总线事务将使用数据周期,进行数据传递。当 IRDY#和 TRDY#信号没有同时有效时,PCI 总线不能进行数据传递,PCI 总线使用这两个信号进行传送控制。
(4) PCI 总线支持突发周期,因此在地址周期之后可以有多个数据周期,可以传送多组数据。而目标设备并不知道突发周期的长度,如果目标设备不能继续接收数据时,可以 disconnect 当前总线事务。值得注意的是,只有存储器读写总线事务可以使用突发周期。一个完整的 PCI 总线事务远比上述过程复杂的多,因为 PCI 总线还支持许多传送方式,如双地址周期、fast back-to-back(快速背靠背)、插入等待状态、重试和断连、总线上的错误处理等一系列总线事务。
- PCIe总线学习笔记(一、PCI基础知识简介)
- PCIe总线学习笔记(一、PCI基础知识简介)
- PCI总线学习笔记(一)
- PCI总线学习(一)---> PCI概述
- PCIe学习笔记(1)---PCI相关
- PCI 总线学习笔记
- PCIe学习笔记(2)---PCI-x相关
- PCI总线(一)
- PCI总线(一)
- pci-pcie总线序号分配
- PCI 总线学习笔记-PCI9054
- PCIe 学习笔记(一)
- PCIe总线的基础知识
- PCIe总线的基础知识
- DWC PCIE学习笔记(一)----->PCIE PHY接口
- PCI/PCIe 的那些事(1)- 总线基本知识
- PCI总线和PCIE总线的差异
- PCIe学习笔记(12)--- PCIe总线的枚举过程 ENUMERATION
- C语言指针学习七
- 社説 20150501 首相米議会演説 「希望の同盟」へ問われる行動
- ACM--steps--dyx--5.1.5--Code Lock
- android EditText inputType说明
- Android 使用SQLite数据库使用Cursor(游标)来进行操作
- PCIe总线学习笔记(一、PCI基础知识简介)
- 好的资料库
- poj 1862 Stripies
- 分析一个Java Class文件
- B. School Marks (CF #301 (Div. 2))
- 苹果开发 笔记(17)
- Android视频播放项目总结之 使用第三方Vitamio库,开发万能播放器(四)
- 重载运算符
- poj 1338 Ugly Numbers