1.PCI

外设互联标准(或称个人电脑接口,Personal Computer Interface),实际应用中简称PCI(Peripheral Component Interconnect),是一种连接电子计算机主板和外部设备的总线标准。一般PCI设备可分为两种形式:直接布放在主板上的集成电路,在PCI规范中称作”平面设备“,另一种是安装在插槽中的扩展卡。

PCI bus常见于现代的个人计算机中,已经取代ISA和VESA局部总线,成为标准扩展总线。PCI总线最终将被PCI Express或者更先进的技术取代。

PCI是并行基于总线控制,所有设备共同分享单向32bit/64bit并行总线(半双工)。如果有多个PCI设备共用总线,他们将共享总的传输速率。

PCI标准于1993年7月被Intel发明,每个接口最多连接1个设备,可以工作在33MHz和66MHz(工作时电压33MHz为5V,66MHz为3V),2004年被PCI Express替代。

PCI插槽可以插很多类型的卡,包括网卡、声卡、调制解调器(内置Modem)、电视卡、磁盘控制器(RAID卡)、视频采集卡、IDE接口卡、IEEE1394卡、USB卡和串行等,原本也可以插显卡,但很快PCI的带宽不足以支持显卡的性能。PCI插槽通过插不同的卡几乎可以实现所有的外接功能。后来显卡使用AGP插槽,现在已被PCI Express插槽取代。

PCI接口分32bit和64bit两种。早期的PCI(PCI2.1标准)工作在32bit、33.33MHz、5V下,最大传输速度133MB/s(33.33MHz * 32bit / 8bit/byte = 133MB/s),后来又出现了PCI2.2 2.3等标准。现在PCI有32bit和64bit两种,32bit的一般用在PC上,64bit的一般应用于服务器上,64bit的要比32bit的长一些。32bit和64bit都有5v和3.3v电压两种,5v电压的是PCI2.1标准工作在33MHz,3.3v电压的是PCI2.2标准工作在66MHz的时钟频率上。频率或者位宽增加都会增加传输速率,实现也是通过这两个指标来实现的。

在PC上,64位PCI还没有成为主流。原因在于制造64位和66MHzPCI主板的难度很大。首先,使用64位PCI插槽需要64位南桥芯片组支持,该南桥控制器必须可以正确处理64位的数据。Intel和AMD都有64位的南桥可提供给主板厂商,但是价格很高;其次是因为66Mz
PCI槽对主板配套元件要求极高,且需要特殊的布线设计。这就是66MHzPCI技术一直停留在服务器领域的原因。

PCI有几种不同的接口样图:现在生产的多为通用模式的以防插错。还有64bit统一比32bit的宽出右边缺口的部分。

PCI 32bit的网卡都可以查到PCI 64bit插槽上使用。3.3v的插到3.3v的上,5v的插到5v的上。

有一些PCI网卡同时支持32位和64位标准的兼容网卡,这类网卡相比前面介绍的纯64位PCI网卡来说,在外观上也有一个明显的区别,那就是它又多了一个缺口,有3个缺口(上图右边第三个图)

PCI千兆网卡的局限性:

通常我们用的个人PC主板上的PCI总线频率位33MHz,总线位宽位32bit,PCI总线的带宽位133MB/s,换算下来是1064Gbps,理论上这是符合千兆往可的带宽的。但实际上,PCI设备是共享一个总线带宽的,像IDE总线,集成声卡等都是通过PCI总线工作的,这样自然分配给PCI千兆网卡的带宽自然就不够了。要真正的达到千兆网卡的速度,要求全双工工作,输入输出都是1Gbps,这样就要求带宽达到2Gbps,这样PCI总线是万万达不到的。因此在普通电脑上还是要采用PCI-E设备才能真正的达到千兆的速度。

2.PCI-X

PCI-X是传统PCI总线的改版,有更高的带宽。PCI-X插槽类型基本于64bit的PCI插槽相同。

PCI-X于1998年被IBM、HP和Compaq发明,64bit位宽,传输方式并发,2004年被新出的PCI Express替代。

PCI-X多用于服务器上,不过也是昙花一现。

无论PCI还是PCI-X都只是半双工的通信机制但PCI Express 却完全可以用全双工方式进行通信。此外在同一个总线里因为平行传输的关系,虽然控制器可以和每个接入的设备自动协调传输速率但却必需选用各个设备中速度最慢者的速度作为总线内共同的传输速度上限,高速设备往往因此而无用武之地。

PCI-X目前的最新版本是2.0。下面讲的的1.0版本,在外观上,它与64位PCI接口差不多。目前主要有100MHz和133MHz两种外频模式,不过目前主要用的是133MHzPCI-X接口,理论共享传输速率达到了1.06GB/s。后来推出的2.0版本,频率位266MHz和533MHz,共享传输速率为2.1GB/s和4.2GB/s。后来出的3.0标准1066MHz在PCI-E的冲击下没有了下文。

PCI-X相比PCI 32bit而言除了扩大到64bit,其余的传输协议、讯号和标准街头格式都一并兼容,因此它可以向下兼容于所有早期的+3.3V PCI 总线(但不容于最早期的+5V PCI BUS)。3.3v的PCI可以插到PCI-X中。

3.PCI-E

PCI-E于2004年被Intel发明,采用串行方式通信,支持全双工通信方式。

PCIe设备能够支持热拔插以及热交换特性,支持的三种电压分别为+3.3V、3.3Vaux以及+12V。

PCI-E的接口根据总线位宽不同而有所差异,包括X1、X4、X8以及X16,而X2模式将用于内部接口而非插槽模式。

PCI-E有向下兼容的特性。既X16的接口可以插X1、X4、X8接口的卡。

PCI-E接口样图:

图中从上到下依次是PCIEX16、X1、X4、X16,图中没有X8的,X8的长度右边部分(主接口区)长度基本是X4的2倍,略小。

PCI-E有各版本的传输速度:

版本 数据传输带宽 单向单通道带宽 双向16通道带宽 原始传输率 发表日期
1.0 2Gb/s 250MB/s 8GB/s 2.5GT/s 2002年7月22日
1.0a 2Gb/s 250MB/s 8GB/s 2.5GT/s 2003年4月15日
1.1 2Gb/s 250MB/s 8GB/s 2.5GT/s 2005年3月28日
2.0 4Gb/s 500MB/s 16GB/s 5.0GT/s 2006年12月20日
2.1 4Gb/s 500MB/s 16GB/s 5.0GT/s 2009年3月4日
3.0 8Gb/s 1GB/s 32GB/s 8.0GT/s 2010年11月10日
4.0 16Gb/s 2GB/s 64GB/s 16.0GT/s 2014年-2015年

PCI-E不同传输通道数设备的金手指数(双面金手指)和长度:

传输通道数 脚Pin总数 主接口区Pin数 总 长 度 主接口区 长度
x1 36 14 25 mm 7.65 mm
x4 64 42 39 mm 21.65 mm
x8 98 76 56 mm 38.65 mm
x16 164 142 89 mm 71.65 mm

4.三种接口的传输速度比较

规格 总线宽度 工作时钟频率 数据速率
PCI 2.3 32 比特 33/66 MHz 133/266 MB/s
PCI-X 1.0 64 比特 66/100/133 MHz 533/800/1066 MB/s
PCI-X 2.0(DDR) 64 比特 133 MHz 2.1 GB/s
PCI-X 2.0(QDR) 64 比特 133 MHz 4.2 GB/s
PCI-E 1.0 X1 1 比特 2.5 GHz 500 MB/s(双工,文稿数据)
PCI-E 1.0 X2 2 比特 2.5 GHz 1 GB/s(双工)
PCI-E 1.0 X4 4 比特 2.5 GHz 2 GB/s(双工)
PCI-E 1.0 X8 8 比特 2.5 GHz 4 GB/s(双工)
PCI-E 1.0 X16 16 比特 2.5 GHz 8 GB/s(双工)

PCI 64bit的数据速率乘以2。

根据上面各个接口带宽的数据我们可以看到PCI-e X1的接口可以提供单向250MB/s的带宽,普通的千兆网卡用PCI-e X1接口就可以满足了,但是万兆网卡的就至少要PCI-e X4才能刚刚满足带宽需求,因此可以解释市场上见到的万兆网卡基本上都是PCI-e X8接口的,比如Intel PRO 10GBE XF LR(10千米,采用长波模块(LR)因此传输距离可以达到10公里,及 Intel PRO 10GBE XF SR(300米)采用的是短波(SR)模块,传输距离是300米。

PCI PCI-X PCI-E介绍的更多相关文章

  1. SATA接口、PCI/PCIe、NVMe的介绍

    SATA接口.PCI/PCIe.NVMe的介绍 SATA接口 SATA是Serial ATA的缩写,即串行ATA. SATA已经完全取代旧式PATA(Parallel ATA或旧称IDE)接口的旧式硬 ...

  2. 2.3 PCI桥与PCI设备的配置空间

    PCI设备都有独立的配置空间,HOST主桥通过配置读写总线事务访问这段空间.PCI总线规定了三种类型的PCI配置空间,分别是PCI Agent设备使用的配置空间,PCI桥使用的配置空间和Cardbus ...

  3. PCI DSS合规建设ASV扫描介绍

    最近查一些Nessus.Nexpose漏洞扫描工具相关资料,工具介绍都会提到一些审计功能,其中最常见的就是PCI DSS合规性审计.从网上找到一篇介绍较详尽的文章,与大家分享. 原文摘自:http:/ ...

  4. 【转】PCI学习笔记

    1.PCI设备编号    每一个PCI device都有其unique PFA(PCI Fcntion Address)    PFA由 bus number.device number.functi ...

  5. PCI Express(一)- Connector

    在FPGA4FUN上看到一篇介绍PCI-E的帖子,简单易懂,适合入门,特地搬过来 原文地址:http://www.fpga4fun.com/PCI-Express.html 前言: As PCI Ex ...

  6. 基于WDF的PCI/PCIe接口卡Windows驱动程序(1)-WDF概述及开发环境搭建

    原文出处:http://www.cnblogs.com/jacklu/p/4619110.html 本科毕业设计是这方面的工作,所以想开几篇博客来介绍使用WDF开发PCI/PCIe接口卡的驱动程序方法 ...

  7. 【翻译】运行于x86机器上的FreeBSD的PCI中断

    来源 http://people.freebsd.org/~jhb/papers/bsdcan/2007/article/article.html 摘要 在拥有多个独立设备的计算机里一个重要的元素是一 ...

  8. 《Linux Device Drivers》第十二章 PCI司机——note

    一个简短的引论 它给这一章总线架构的高级概述 集中访问讨论Peripheral Component Interconnect(PCI,外围组件互连)外设内核函数 PCI公交车是最好的支持的内核总线 本 ...

  9. 1.3 PCI总线的存储器读写总线事务

    总线的基本任务是实现数据传送,将一组数据从一个设备传送到另一个设备,当然总线也可以将一个设备的数据广播到多个设备.在处理器系统中,这些数据传送都要依赖一定的规则,PCI总线并不例外. PCI总线使用单 ...

  10. 1.2 PCI总线的信号定义

    PCI总线是一条共享总线,在一条PCI总线上可以挂接多个PCI设备.这些PCI设备通过一系列信号与PCI总线相连,这些信号由地址/数据信号.控制信号.仲裁信号.中断信号等多种信号组成. PCI总线是一 ...

随机推荐

  1. 二叉堆(小到大)-数据结构-JavaScript版

    /** * Created by caoke on 2015/11/21. */ //二叉树 特点父节点比子节点小 var Tree2=function(){ //初始化 二叉树的子元素 this.c ...

  2. 2019.3.26 SQL语句(进阶3)

    表的联查 员工表与部门表 员工表:id,姓名,年龄,部门id 部门表:部门id,部门名,部门成立时间,部门领导,部门职责.... 表和表之间的关系 一对一 一对多 多对多 创建联查 创建表 先创建被依 ...

  3. python中变量,常量

    1.变量 变量的作用:一个变化的值 把程序运算的中间结果临时存到内存里,以备后面的代码继续调用,这几个名字的学名就叫做“变量“ 查看变量在内存中的位置用id(name) 变量定义规则: 变量名只能是 ...

  4. Python+Selenium-BDD框架之behave

    (查看behave具体教程可以访问官网: http://pythonhosted.org/behave/) 1.安装behave 安装好python后,使用 pip install behave命令安 ...

  5. (转)增加定时检测linux占用内存,及时清理功能

    增加定时检测linux占用内存,及时清理功能 原文:http://www.voidcn.com/article/p-wnmannom-boa.html free -m 查看,发现内存跑满了. 再 to ...

  6. git使用问题及解决方法

    1. 设置pull默认rebasegit config --global pull.rebase true 2. 问题解决:Unlink of file '.git/objects/pack/pack ...

  7. 九度oj题目1521:二叉树的镜像

    题目1521:二叉树的镜像 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:2061 解决:560 题目描述: 输入一个二叉树,输出其镜像. 输入: 输入可能包含多个测试样例,输入以EOF ...

  8. 命令行编译java项目

    命令行编译java项目 项目名: testproj 目录 src -> cn -> busix -> test bin lib 编译项目 cd testproj javac -d . ...

  9. Java学习第十七天

    1:登录注册案例(理解) 2:Set集合(理解) (1)Set集合的特点 无序,唯一 (2)HashSet集合(掌握) A:底层数据结构是哈希表(是一个元素为链表的数组) B:哈希表底层依赖两个方法: ...

  10. 整理代码,将一些曾经用过的功能整合进一个spring-boot

    一 由于本人的码云太多太乱了,于是决定一个一个的整合到一个springboot项目里面. 附上自己的项目地址https://github.com/247292980/spring-boot 功能 1. ...