第II篇PCI Express体系结构概述
虽然PCI总线取得了巨大的成功,但是随着处理器主频的不断提高,PCI总线提供的带宽愈发显得捉襟见肘。PCI总线也在不断地进行升级,其位宽和频率从最初的32位/33MHz扩展到64位/66MHz,而PCI-X总线更是将总线频率提高到533MHz,能够提供的最大理论带宽为4263MB。但是PCI总线仍无法解决其体系结构中存在的一些缺陷。PCI总线面临着一系列挑战,包括带宽、流量控制和数据传送质量等。
PCI总线的最高工作频率为66M,最大位宽为64b,从理论上讲,PCI总线可以提供的最大传输带宽为532MB。然而PCI总线作为一个共享总线,在其上的所有PCI设备必须要共享PCI总线的带宽。同时由于PCI总线的协议开销,导致PCI总线可以实际利用的数据带宽远小于其峰值带宽。
PCI总线采用提高总线位宽和频率的方法增加其传输带宽。但是这种方法从性能价格比的角度上看,并不是最优的。数据总线位宽的提高将直接影响芯片的生产成本,64位的PCI总线接口需要设计者使用更多的芯片引脚,从而导致64位的PCI总线接口芯片的价格远高于32位的PCI总线接口芯片。与32位PCI总线接口相比,设计者还需要使用更多的印制板层数来实现64位PCI总线接口。
而提高总线频率,除了给硬件工程师带来了一系列信号完整性的问题之外,更直接影响PCI总线的负载能力。一条33MHz的PCI总线最多可以驱动10个负载,而66Mhz的PCI总线最多只能驱动4个负载。因此片面提高PCI总线的频率和位宽,并不能有效地提高PCI总线的带宽。
除此之外PCI总线在设计之初并没有考虑服务质量的问题。有些实时数据采集卡,音频或者视频的多媒体应用需要PCI总线提供额定带宽,而PCI总线上的设备只能轮流使用PCI总线,当一个设备长期占用PCI总线时,将阻止其他PCI设备使用PCI总线,从而影响了PCI总线的传送质量。
基于以上几个原因,PCI总线在某种程度上说并不能完全适应现代处理器系统的需要,而使用PCIe总线可以有效解决PCI总线存在的一些问题。首先PCIe总线可以提供更大的总线带宽,PCIe V3.0支持的最高总线频率为4GHz,远高于PCI-X总线提供的最高总线频率。
其次PCIe总线支持虚通路VC(Virtual Channel)技术,优先级不同的数据报文可以使用不同的虚通路,而每一路虚通路可以独立设置缓冲,从而相对合理地解决了数据传送过程中存在的服务质量问题。
PCIe总线由若干层次组成,包括事务层、数据链路层和物理层。PCIe总线使用数据报文进行数据传递,这些数据报文需要通过PCIe总线的这些层次。PCIe总线的这种数据传递方式与互联网使用TCP/IP协议进行数据传递有类似之处。
实际上在互联网中存在的许多概念也存在于PCIe总线中,如交换、路由和仲裁机制等,不过这两者之间在实现上的最大不同在于前者主要使用软件程序实现其协议栈,而后者使用硬件逻辑实现。
半导体工艺的逐步提高,使得更多的软件算法可以使用硬件逻辑来实现,这给从事IC Design的工程师带来了巨大的挑战,因为他们使用Verilog/VHDL程序书写的算法,之前是使用C或者是C++这样的高别语言实现的。
PCIe总线在系统软件级与PCI总线兼容,基于PCI总线的系统软件几乎可以不经修改直接移植到PCIe总线中。绝大多数PCI/PCI-X总线使用的总线事务都被PCIe总线保留,而PCI设备使用的配置空间也被PCIe总线继承。基于PCI体系结构的系统编程模型,几乎可以在没有本质变化的前提下,直接在PCIe体系结构中使用。
但是从体系系统的角度上看,PCIe总线还是增加了一些新的特性,其中一些特性不仅仅是称呼上的变化,而且在功能上也得到了增强。如在PCIe体系结构中出现的RC(Root Complex)。RC的主要功能与PCI总线中的HOST主桥类似,但是在HOST主桥的基础上增加了许多功能。
在不同处理器系统中,RC的实现方式不同,因此仅仅用PCIe总线控制器称呼RC是不够的,实际上PCIe总线规范对RC并没有一个合适的解释。RC本身也是随处理器系统的不同而不同,是一个很模糊的概念。
Intel并没有使用PCIe总线控制器,而是使用RC管理PCIe总线,基于深层次的考虑。在x86处理器体系结构中,RC并不仅仅管理PCIe设备的数据访问,而且还包含访问控制、错误处理和虚拟化技术等一系列内容。因此使用PCIe总线控制器统称RC,在x86处理器体系结构中,并不合适。
在PCIe总线中,还有一些特性与PCIe总线协议的实现相关。与PCI总线相比,PCIe总线使用端到端的连接方式,添加流量控制机制,并对“访问序”做出了进一步优化。虽然从系统软件的角度上看,PCI总线与PCIe总线基本一致。但是从硬件设计的角度上看PCIe总线完全不同于PCI总线,基于PCIe总线各类设备的硬件设计难度远大于基于PCI总线的对应设备的设计难度。
目前PCIe总线规范,依然在迅猛发展,但并不是所有PCIe设备都支持这些在PCIe总线的最新规范中提及的概念。一般说来,PCIe总线规范提出的新的概念,最先在x86处理器系统的Chipset和Intel设计的EP中出现。
第II篇PCI Express体系结构概述的更多相关文章
- 002 PCI Express体系结构(二)
一.PCI总线的信号定义 PCI总线是一条共享总线,在一条PCI总线上可以挂接多个PCI设备.这些PCI设备通过一系列信号与PCI总线相连,这些信号由地址/数据信号.控制信号.仲裁信号.中断信号等多种 ...
- 001 PCI Express体系结构(一)
一 .PCI总线的基本知识 PCI总线作为处理器系统的局部总线,主要目的是为了连接外部设备,而不是作为处理器的系统总线连接Cache和主存储器.但是PCI总线.系统总线和处理器体系结构之间依然存在着紧 ...
- 003 PCI Express体系结构(三)
一.PCI总线的存储器读写总线事务 总线的基本任务是实现数据传送,将一组数据从一个设备传送到另一个设备,当然总线也可以将一个设备的数据广播到多个设备.在处理器系统中,这些数据传送都要依赖一定的规则,P ...
- 004 PCI Express体系结构(四)
一.PCI总线的中断机制 PCI总线使用INTA#.INTB#.INTC#和INTD#信号向处理器发出中断请求.这些中断请求信号为低电平有效,并与处理器的中断控制器连接.在PCI体系结构中,这些中断信 ...
- 000 PCI Express协议入门指南目录
一.001 PCI Express体系结构(一)
- 第I篇PCI体系结构概述
PCI总线作为处理器系统的局部总线,主要目的是为了连接外部设备,而不是作为处理器的系统总线连接Cache和主存储器.但是PCI总线.系统总线和处理器体系结构之间依然存在着紧密的联系. PCI总线作为系 ...
- Down to the TLP: How PCI express devices talk (Part II)
http://xillybus.com/tutorials/pci-express-tlp-pcie-primer-tutorial-guide-2 Data Link Layer Packets A ...
- PCI Express(三) - A story of packets, stack and network
原文出处:http://www.fpga4fun.com/PCI-Express3.html Packetized transactions PCI express is a serial bus. ...
- PCI Express(一)- Connector
在FPGA4FUN上看到一篇介绍PCI-E的帖子,简单易懂,适合入门,特地搬过来 原文地址:http://www.fpga4fun.com/PCI-Express.html 前言: As PCI Ex ...
随机推荐
- redis数据类型-列表类型
列表类型 列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段. 列表类型内部是使用双向链表(double linked list)实现的,所以向 ...
- JS小练习1
要求: 一.定义"改变颜色"的函数 二.定义"改变宽高"的函数 三.定义"隐藏内容"的函数 四.定义"显示内容"的函数 ...
- 理解js中的作用域,作用域链以及闭包
作用域变量作用域的类型:全局变量和局部变量全局作用域对于最外层函数定义的变量拥有全局作用域,即对任何内部函数来说,都是可以访问的 <script> var outerVar = " ...
- FastDFS分布式存储实战
<FastDFS分布式存储实战> 技术选型 FastDFS相关组件及原理 FastDFS介绍 FastDFS架构 FastDFS工作流程 上传 同步机制 下载 文件合并原理 实验环境说明 ...
- Sql Server的艺术(三) SQL聚合函数的应用
SQL提供的聚合函数有求和,最大值,最小值,平均值,计数函数等. 聚合函数及其功能: 函数名称 函数功能 SUM() 返回选取结果集中所有值的总和 MAX() 返回选取结果集中所有值的最大值 MIN( ...
- Electron应用使用electron-builder配合electron-updater实现自动更新(windows + mac)
发客户端一定要做的就是自动更新模块,否则每次版本升级都是一个头疼的事.下面是Electron应用使用electron-builder配合electron-updater实现自动更新的解决方案. 1.安 ...
- java中的二叉树排序问题
原创:转载请注明出处 目的:想用java实现二叉树排序算法 思想:利用java中面向对象的思想,即: Tree:类 树根Tree:root //static所属于每一个Tree 左节点Tree:lef ...
- Oracle Rac创建表空间及用户
1. 创建表空间: BEGIN DECLARE cnt integer := 0; BEGIN SELECT 1 INTO cnt FROM dual WHERE exists(SELECT * FR ...
- 05_Linux网络配置及CRT远程
占位占位占位占位占位占位占位占位
- CF266D. BerDonalds [图的绝对中心]
D. BerDonalds time limit per test 5 seconds memory limit per test 256 megabytes input standard input ...