“硬核”科普系列之总线

起源之库克的苹果

近期的一系列“硬核”科普都源于购入了一台M1丐版MBP,想着外接一个移动硬盘提升机器的工作能力,然后就去研究了硬盘的种类,接着研究起了各种硬盘的接口。于是又由苹果的雷电接口延伸到了整个USB家族,之后干脆把传输协议也温故知新了一番。最后的最后,心一横,把CPU芯片组和总线的相关知识的也顺带着扩展了广度与深度。计算机体系结构和组成原理课诚不欺我,日常生活中随随便便就需要用到的知识,不枉我当初用心学。

于是乎,这系列科普文章成就了近期的大工程。总体内容分为三大块:总线与数据通信,接口与数据传输,硬盘及其构造原理

以计算机为中心(CPU),各种外接设备围绕其展开各种各样与数据相关的工作为背景,好好整理一下有关总线、协议、接口、存储、传输、充电、音视频传输相关的既抽象,又具体的庞大概念体系。

(本系列内容均整理编排自网络,来源注于文末。)

先来说说总线与相关标准。

而要想清楚地了解总线是什么,就必须先简单科普一下主板和芯片组的相关知识,以下快速过一遍。

主板与芯片组

主板

基本概念

主板,又叫主机板(mainboard)、系统板(systemboard)或母板(motherboard)。它通常安装于主机箱内,是计算机最基本也最重要的部件之一。在整个计算机系统中,主板扮演着举足轻重的角色,主板制造质量的高低,决定了硬件系统的稳定性。主板与CPU关系密切,每一次CPU的重大升级,必然导致主板的换代。主板作为计算机硬件系统的核心,也是主机箱内面积最大的一块印刷电路板主板的主要功能是传输各种电子信号,部分芯片也负责初步处理一些外围数据

计算机主机中的各个部件都是通过主板来连接的,计算机在正常运行时对系统内存、存储设备和其他I/O设备的操控都必须通过主板来完成。计算机性能是否能够充分发挥,硬件功能是否足够,以及硬件兼容性如何等等,都取决于主板的设计。主板的优劣在某种程度上决定了一台计算机的整体性能、使用年限以及功能扩展能力。

主板的结构

主板一般为矩形电路板,上面安装了组成计算机的主要电路系统,一般有BIOS芯片、I/O控制芯片、键盘和面板控制开关接口、指示灯插接件、扩充插槽、主板及插卡的直流电源供电接插件等元件。主板采用了开放式结构,板上大都有6~15个扩展插槽,供PC机外围设备的控制卡(适配器)插接。通过更换这些插卡,可以对计算机的相应子系统进行局部升级,使厂家和用户在配置机型方面有更大的灵活性。

核心——芯片组:北桥芯片、南桥芯片、BIOS(Basic Input/ Output System,基本输入输出系统)芯片等。

扩展槽:又称为“总线插槽”,是主机通过系统总线外部设备联系的通道,用作外设接口电路的适配卡都插在扩展槽内。

主要接口

  • 硬盘接口:硬盘接口可分为IDE接口和SATA接口;
  • 软驱接口:连接软驱所用,多位于IDE接口旁,比IDE接口略短一些;
  • COM接口(串口):大多数主板都提供了两个COM接口,分别为COM1和COM2,作用是连接串行鼠标和外置Modem等设备;
  • PS/2接口:功能比较单一,仅能用于连接键盘和鼠标。一般情况下,鼠标的接口为绿色、键盘的接口为紫色。PS/2接口的传输速率比COM接口稍快一些,但这么多年使用之后,绝大多数主板依然配备该接口,但支持该接口的鼠标和键盘越来越少,大部分外设厂商也不再推出基于该接口的外设产品,更多的是推出USB接口的外设产品。不过值得一提的是,由于该接口使用非常广泛,因此很多使用者即使在使用USB也更愿意通过PS/2-USB转接器插到PS/2上使用,外加键盘鼠标每一代产品的寿命都非常长,接口依然使用效率极高,但在不久的将来,被USB接口所完全取代的可能性极高;
  • USB接口:如今最为流行的接口,最大可以支持127个外设,并且可以独立供电,其应用非常广泛。USB接口可以从主板上获得500mA的电流,支持热拔插,真正做到了即插即用。一个USB接口可同时支持高速和低速USB外设的访问,由一条四芯电缆连接,其中两条是正负电源,另外两条是数据传输线;
  • LPT接口(并口):一般用来连接打印机或扫描仪。并口的工作模式主要有三种SPP标准工作模式(半双工单向传输,传输速率较慢),EPP增强型工作模式(双向半双工数据传输,其传输速率比SPP高很多),ECP扩充型工作模式(双向全双工数据传输,传输速率比EPP还要高一些,但支持的设备不多)。使用LPT接口的打印机与扫描仪已经基本很少了,多为使用USB接口的打印机与扫描仪;
  • MIDI接口:声卡的MIDI接口和游戏杆接口是共用的;
  • SATA接口:SATA的全称是Serial Advanced Technology Attachment(串行高级技术附件,一种基于行业标准的串行硬件驱动器接口),是由Intel、IBM、Dell、APT、Maxtor和Seagate公司共同提出的硬盘接口标准,在IDF Fall 2001大会上,Seagate宣布了Serial ATA 1.0标准,正式宣告了SATA标准的确立。SATA标准将硬盘的外部传输速率理论值提高到了150MB/s,比PATA标准ATA/100高出50%,比ATA/133也要高出约13%,而随着未来后续版本的发展,SATA接口的速率还可扩展到2X和4X(300MB/s和600MB/s)。从其发展计划来看,未来的SATA也将通过提升时钟频率来提高接口传输速率,让硬盘也能够超频。

工作原理

在电路板下面,是错落有致的电路布线;在上面,则为分工明确的各个部件:插槽、芯片、电阻、电容等。当主机加电时,电流会在瞬间通过CPU、南北桥芯片、内存插槽、AGP插槽、PCI插槽、IDE接口以及主板边缘的串口、并口、PS/2接口等。随后,主板会根据BIOS(基本输入输出系统)来识别硬件,并进入操作系统发挥出支撑系统平台工作的功能

芯片组

主板芯片组(Chipset)是主板的核心组成部分,如果说中央处理器(CPU)是整个电脑系统的心脏,那么芯片组将是整个身体的躯干。芯片组可以看作CPU与周边设备沟通的桥梁。在电脑界称设计芯片组的厂家为Core Logic,Core的中文意义是核心或中心,光从字面的意义就足以看出其重要性。对于主板而言,芯片组几乎决定了这块主板的功能,进而影响到整个电脑系统性能的发挥,芯片组是主板的灵魂。芯片组性能的优劣,决定了主板性能的好坏与级别的高低。CPU的型号与种类繁多、功能特点不一,如果芯片组不能与CPU良好地协同工作,将严重地影响计算机的整体性能甚至不能正常工作。

南桥芯片与北桥芯片

在传统的芯片组构成中,一直沿用南桥芯片与北桥芯片搭配的方式,在主板上可以发现它们的具体位置。通常在主板上,CPU的插槽附近会有一个散热器,那下面的就是北桥芯片。而南桥芯片一般离CPU较远,常裸露在PCI插槽旁边,块头比较大。

北桥芯片是系统控制芯片,主要负责CPU、内存、显卡三者之间的数据交换,在与南桥芯片组成的芯片组中起主导作用,掌控一些高速设备,如CPU、Host bus等。北桥提供对CPU类型和主频的支持、系统高速缓存的支持、主板的系统总线频率、内存管理(内存类型、容量和性能)、显卡插槽规格,ISA/PCI/AGP插槽、ECC纠错等支持。北桥芯片往往有较高的工作频率,所以发热量颇高。

南桥芯片主要决定主板的功能,主板上的各种接口、PS/2鼠标控制、USB控制、PCI总线IDE以及主板上的其他芯片(如集成声卡、集成RAID卡、集成网卡等),都归南桥芯片控制。南桥芯片提供对CPU类型和主频的支持、系统高速缓存的支持、主板的系统总线频率内存管理(内存类型、容量和性能)、显卡插槽规格,ISA/PCI/AGP插槽、ECC纠错等支持。

技术发展

芯片组的技术,这几年来也是突飞猛进,从ISA、PCI到AGP,从ATA到SATA,Ultra DMA技术,双通道内存技术,高速前端总线等等,每一次新技术的进步,都带来电脑性能的提高。2004年,芯片组技术迎来重大变革,最引人注目的就是PCI Express总线技术,它将取代PCI和AGP,极大地提高了设备带宽,从而带来一场电脑技术的革命。另一方面,芯片组技术也在向着高整合性方向发展,例如AMD Athlon 64CPU内部,已经整合了内存控制器,这大大降低了芯片组厂家设计产品的难度。而且现在的芯片组产品已经整合了音频、网络、SATA、RAID 等功能,大大降低了用户的成本。

什么是总线?

总线(Bus计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统

工作原理

如果说主板(Mother Board)是一座城市,那么总线就像是城市里的公共汽车(bus),能按照固定行车路线,传输来回不停运作的比特(bit)。一条线路在同一时间内都仅能负责传输一个比特,因此,必须同时采用多条线路才能传送更多数据。总线可同时传输的数据数就称为宽度(width),以比特为单位,总线宽度越大,传输性能就越佳。总线的带宽(即单位时间内可以传输的总数据数)为:总线带宽 = 频率 x 宽度(Bytes/sec)。当总线空闲(其他器件都以高阻态形式连接在总线上)且一个器件要与目的器件通信时,发起通信的器件驱动总线,发出地址和数据。其他以高阻态形式连接在总线上的器件如果收到(或能够收到)与自己相符的地址信息后,即接收总线上的数据。发送器件完成通信,将总线让出(输出变为高阻态)。
总线必须有明确的规范: 总线定时协议,即在总线上传送信息时必须遵守一定的定时规则,例如同步总线定时,异步总线定时,半同步总线定时等。总线的物理特性,包括信号、电源、地址的电气特性,以及连线、接插件的机械特性。

总线的分类

按其所连接的对象,总线可分为

  • 片总线,又称器件级总线,它是中央处理器芯片内部的总线。
  • 内总线,又称系统总线或板级总线,它是计算机各功能部件之间的传输通路,微型计算机总线通常称为内总线。
  • 外总线,又称通信总线,它是计算机系统之间,或者是计算机主机与外围设备之间的传输通路。

功能和规范,总线可分为

  • 数据总线(Data Bus):在CPU与RAM之间来回传送需要处理或是需要存储的数据
  • 地址总线(Address Bus):用来指定在RAM(Random Access Memory)之中存储的数据地址
  • 控制总线(Control Bus):将微处理器控制单元(Control Unit)的信号传送到周边设备。
  • 扩展总线(Expansion Bus):外部设备和计算机主机进行数据通信的总线,例如ISA总线PCI总线
  • 局部总线(Local Bus):取代更高速数据传输的扩展总线

其中的数据总线DB(Data Bus)、地址总线AB(Address Bus)和控制总线CB(Control Bus),也统称为系统总线,即通常意义上所说的总线。

有的系统中,数据总线和地址总线是复用的,即总线在某些时刻出现的信号表示数据而另一些时刻表示地址;而有的系统是分开的。51系列单片机的地址总线和数据总线是复用的,而一般PC中的总线则是分开的

数据总线DB

用于传送数据信息。数据总线是双向三态形式的总线,既可以把CPU的数据传送到存储器或I/O接口等其它部件,也可以将其它部件的数据传送到CPU。数据总线的位数是微型计算机的一个重要指标,通常与微处理的字长相一致。例如Intel 8086微处理器字长16位,其数据总线宽度也是16位。需要指出的是,数据的含义是广义的,它可以是真正的数据,也可以是指令代码或状态信息,有时甚至是一个控制信息,因此,在实际工作中,数据总线上传送的并不一定仅仅是真正意义上的数据。常见的数据总线有ISA、EISA、VESA、PCI等。

地址总线AB

专门用来传送地址。由于地址只能从CPU传向外部存储器或I/O端口,所以地址总线总是单向三态的,这与数据总线不同。地址总线的位数决定了CPU可直接寻址的内存空间大小,比如8位微机的地址总线为16位,则其最大可寻址空间为$2^{16} = 64$KB,16位微型机(x位处理器指一个时钟周期内微处理器能处理的位数bit,即字长大小)的地址总线为20位,其可寻址空间为$2^{20} = 1$MB。一般来说,若地址总线为n位,则可寻址空间为$2^n$字节。

控制总线CB

用来传送控制信号和时序信号。控制信号中,有的是微处理器送往存储器和I/O接口电路的,如读/写信号,片选信号、中断响应信号等;也有的是其它部件反馈给CPU的,比如:中断申请信号、复位信号、总线请求信号、设备就绪信号等。因此,控制总线的传送方向由具体控制信号而定,(信息)一般是双向的。控制总线的位数要根据系统的实际控制需要而定,实际上控制总线的具体情况主要取决于CPU

信息传输的方式,总线可分为并行总线串行总线

总线是一种共享型的数据传送设备。虽然总线上可联接多个设备,但任一时刻通常只能有一对设备参与数据传输。
  • 并行总线对n位二进制信息用n条传输线同时传送,其特点是传输速度,但系统结构较复杂,它用于计算机系统内的各部件之间的连接。并行总线的数据线通常超过2根。常见的串行总线有SPI、I2C、USB及RS232等;
  • 串行总线对多位二进制信息共用一条传输线,多位二进制数据按时间先后顺序逐位通过一根数据线发送到目的器件,它的特点是结构简单,但其传输速度较

按时钟信号是否独立,可以分为同步总线异步总线

同步总线的时钟信号独立于数据,而异步总线的时钟信号是从数据中提取出来的。SPI、I2C是同步串行总线,RS232采用异步串行总线。

技术指标

总线的带宽

总线的带宽指的是单位时间内总线上传送的数据量,单位为MB/S,即每秒钟传送兆字节的最大稳态数据传输率,它是总线所能达到的最高传输率。与总线密切相关的两个因素是总线的位宽和总线的工作频率,总线的带宽 = 总线的工作频率 * 总线的位宽 / 8 或者总线的带宽 =(总线的位宽 / 8 )/ 总线周期。

总线的位宽

总线的位宽指的是总线能同时传送的二进制数据的位数,或数据总线的位数,即32位、64位等总线宽度的概念。总线的位宽越宽,每秒钟数据传输率越大,总线的带宽越宽

总线的工作频率

总线的工作时钟频率以MHz为单位,工作频率越高,总线工作速度越快,总线带宽越宽

常见总线

总线不仅是一组信号线,从广义上讲,总线是一组传送线路及相关标准

CPU总线——前端总线(CPU <=> 北桥芯片)

计算机总线的种类很多,前端总线的英文名字是Front Side Bus,通常用FSB表示,是将CPU连接到北桥芯片的总线。主板的北桥芯片负责联系内存、显卡等数据吞吐量最大的部件,并和南桥芯片连接。CPU就是通过前端总线(FSB)连接到北桥芯片,进而通过北桥芯片和内存、显卡交换数据。前端总线是CPU和外界交换数据的最主要通道,因此前端总线的数据传输能力对计算机整体性能作用很大,如果没足够快的前端总线,再强的CPU也不能明显提高计算机整体速度。数据传输的最大带宽取决于所有同时传输的数据的宽度和传输频率,即总线带宽 =(总线频率 × 数据位宽)/ 8。PC机上所能达到的前端总线频率有266MHz、333MHz、400MHz、533MHz、800MHz几种,前端总线频率越大,代表着CPU与北桥芯片之间的数据传输能力越大,更能充分发挥出CPU的功能。CPU技术发展很快,运算速度提高很快,而足够大的前端总线可以保障有足够的数据供给给CPU,较低的前端总线将无法供给足够的数据给CPU,这样就限制了CPU性能得发挥,成为系统瓶颈。

硬盘总线

一般有SCSI、ATA、SATA等几种。SATA是串行ATA的缩写,为什么要使用串行ATA就要从PATA——并行ATA的缺点说起。我们知道ATA或者说普通IDE硬盘的数据线最初就是40根的排线,这40根线里面有数据线、时钟线、控制线、地线,其中32根数据线是并行传输的(一个时钟周期可以同时传输4个字节的数据),因此对同步性的要求很高。这就是为什么从PATA-66(就是常说的DMA66)接口开始必须使用80根的硬盘数据线,其实增加的这40根全是屏蔽用的地线,而且只在主板一边接地(千万不要接反了,反了的话屏蔽作用大大降低),有了良好的屏蔽,硬盘的传输速度才能达到66MB/s、100MB/s和最高的133MB/s。但是在PATA-133之后,并行传输速度已经到了极限,而且PATA的三大缺点暴露无遗:信号线长度无法延长、信号同步性难以保持、5V信号线耗电较大。那为什么SCSI-320接口的数据线能达到320MB/s的高速,而且线缆可以很长呢?你有没有注意到SCSI的高速数据线是“花线”?这可不是为了好看,那“花”的部分实际上就是一组组的差分信号线两两扭合而成,这成本可不是普通电脑系统愿意承担的。

其他总线

计算机中其他的总线还有:通用串行总线USB(Universal Serial Bus)、IEEE1394、PCI等等。

总线结构的优缺点

采用总线结构的主要优点

1、面向存储器的双总线结构信息传送效率较高,这是它的主要优点。但CPU与I/O接口都要访问存储器时,仍会产生冲突。
2、CPU与高速的局部存储器和局部I/O接口通过高传输速率的局部总线连接,速度较慢的全局存储器和全局I/O接口与较慢的全局总线连接,从而兼顾了高速设备和慢速设备,使它们之间不互相牵扯。
3、简化了硬件的设计。便于采用模块化结构设计方法,面向总线的微型计算机设计只要按照这些规定制作cpu插件、存储器插件以及I/O插件等,将它们连入总线就可工作,而不必考虑总线的详细操作。
4、简化了系统结构。整个系统结构清晰。连线少,底板连线可以印制化。
5、系统扩充性好。一是规模扩充,规模扩充仅仅需要多插一些同类型的插件。二是功能扩充,功能扩充仅仅需要按照总线标准设计新插件,插件插入机器的位置往往没有严格的限制。
6、系统更新性能好。因为cpu、存储器、I/O接口等都是按总线规约挂到总线上的,因而只要总线设计恰当,可以随时随着处理器的芯片以及其他有关芯片的进展设计新的插件,新的插件插到底板上对系统进行更新,其他插件和底板连线一般不需要改。
7、便于故障诊断和维修。用主板测试卡可以很方便找到出现故障的部位,以及总线类型。

采用总线结构的缺点

由于在CPU与主存储器之间、CPU与I/O设备之间分别设置了总线,从而提高了微机系统信息传送的速率和效率。但是由于外部设备与主存储器之间没有直接的通路,它们之间的信息交换必须通过CPU才能进行中转,从而降低了CPU的工作效率(或增加了CPU的占用率。一般来说,外设工作时要求CPU干预越少越好。CPU干预越少,这个设备的CPU占用率就越低,说明设备的智能化程度越高),这是面向CPU的双总线结构的主要缺点。同时还包括:
1、利用总线传送具有分时性。当有多个主设备同时申请总线的使用是必须进行总线的仲裁。
2、总线的带宽有限,如果连接到总线上的某个硬件设备没有资源调控机制容易造成信息的延时(这在某些即时性强的地方是致命的)。
3、连到总线上的设备必须有信息的筛选机制要判断该信息是否是传给自己的

总线标准

任何一个微处理器都要与一定数量的部件和外围设备连接,但如果将各部件和每一种外围设备都分别用一组线路与CPU直接连接,那么连线将会错综复杂,甚至难以实现。为了简化硬件电路设计、简化系统结构,常用一组线路,配置以适当的接口电路,与各部件和外围设备连接,这组共用的连接线路被称为总线。采用总线结构便于部件和设备的扩充,尤其制定了统一的总线标准则容易使不同设备间实现互连

为什么要制定总线标准?

便于机器的扩充和新设备的添加。有了总线标准,不同厂商可以按照同样的标准和规范生产各种不同功能的芯片、模块和整机,用户可以根据功能需求去选择不同厂家生产的、基于同种总线标准的模块和设备,甚至可以按照标准,自行设计功能特殊的专用模块和设备,以组成自己所需的应用系统。这样可使芯片级、模块级、设备级等各级别的产品都具有兼容性和互换性,以使整个计算机系统的可维护性和可扩充性得到充分保证。

总线标准的技术规范

  • 机械结构规范:模块尺寸、总线插头、总线接插件以及安装尺寸均有统一规定。
  • 功能规范:总线每条信号线(引脚的名称)、功能以及工作过程要有统一规定。
  • 电气规范:总线每条信号线的有效电平、动态转换时间、负载能力等。

哪种总线是标准的?

主板上的处理器<=>主存总线经常是特定专用总线,而用于连接各种I/O模块的I/O总线底板式总线则通常可在不同计算机中互用。实际上,底板式总线和I/O总线通常是标准总线,可被许多不同公司制造的不同计算机使用。

常见的总线标准

内部总线

并发

  • CAMAC,用于仪表检测系统
  • 工业标准架构总线(ISA
  • 扩展ISA(EISA)
  • Low Pin Count(LPC)
  • 微通道(MCA)
  • MBus
  • 多总线(Multibus),用于工业生产系统
  • NuBus,或称IEEE 1196
  • OPTi本地总线,用于早期Intel 80486主板
  • 外围部件互联总线(PCI)
  • S-100总线(S-100 bus),或称IEEE 696,用于Altair或类似微处理器
  • SBus或称IEEE 1496
  • VESA本地总线(VLB,VL-bus)
  • VERSAmodule Eurocard bus(VME总线)
  • STD总线(STD bus),用于八位或十六位微处理器系统
  • Unibus
  • Q-Bus
  • PC/104
  • PC/104 Plus
  • PC/104 Express
  • PCI-104
  • PCIe-104

串行

  • 1-Wire
  • HyperTransport
  • I²C
  • 串行PCI(PCIe
  • 串行外围接口总线(SPI总线)
  • 火线i.Link(IEEE 1394)

外部总线

指缆线和连接器系统,用来传输I/O路径技术指定的数据和控制信号,另外还包括一个总线终结电阻或电路,这个终结电阻用来减弱电缆上的信号反射干扰。

并发

  • ATA:磁盘/磁带周边附件总线,也称 PATA、IDE、EIDE、ATAPI 等等(the original ATA is parallel, but see also the recentserial ATA)。
  • HIPPI(HIgh Performance Parallel Interface):高速平行接口。
  • IEEE-488:也称GPIB(General-Purpose Instrumentation Bus)或HPIB(Hewlett-Packard Instrumentation Bus)。
  • PC card:前身为知名的PCMCIA,常用于笔记本电脑和其它便携式设备,但自从引入USB以及嵌入式网络后,这个总线就慢慢不再使用了。
  • SCSI(Small Computer System Interface):小型电脑系统接口,磁盘/磁带周边附件总线。

串行

  • USB Universal Serial Bus, 大量外部设备均采用此总线
  • Serial Attached SCSI and other serial SCSI buses
  • Serial ATA
  • Controller Area Network(“CAN总线”)
  • EIA-485
  • FireWire
  • Thunderbolt

ISA

ISA(IndustrialStandardArchitecture)总线是IBM公司1984年为推出PC/AT机而建立系统总线标准。所以也叫AT总线

主要特点

(1)支持64K的I/O地址空间,16M主存地址空间的寻址,支持15级硬中断、7级DMA通道。
(2)是一种简单的多主控总线。除了CPU外,DMA控制器、DRAM刷新控制器和带处理器的智能接口控制卡都可成为总线主控设备。
(3)支持8种总线事务类型:存储器读、存储器写、I/O读、I/O写、中断响应、DMA响应、存储器刷新、总线仲裁。
它的时钟频率为8MHz,共有98根信号线。数据线和地址线分离,数据线宽度为16位,可以进行8位或16位数据的传送,所以最大数据传输率为16MB/s。

EISA

EISA(Extended Industrial Standerd Architecture)总线是一种在ISA总线基础上扩充的开放总线标准,支持多总线主控和突发传输方式。时钟频率为8.33MHz。共有198根信号线,在原ISA总线的98根线的基础上扩充了100根线,与原ISA总线完全兼容。具有分立的数据线和地址线。数据线宽度为32位,具有8位、16位、32位数据传输能力,所以最大数据传输率为33MB/s。地址线的宽度为32位,所以寻址能力达$2^32$。即:CPU或DMA控制器等这些主控设备能够对4G范围的主存地址空间进行访问。

PCI

PCI(Peripheral Component Interconnect)总线是一种高性能的32位局部总线。它由Intel公司于1991年底提出,后来又联合IBM、DEC等100多家PC业界主要厂家,于1992年成立PCI集团,称为PCISIG,进行统筹和推广PCI标准的工作。
PCI总线主要用于高速外设的I/O接口和主机相连,采用自身33MHz的总线频率,数据线宽度为32位,可扩充到64位,所以数据传输率可达132MB/s~264MB/s。
速度快、支持无限突发传输方式 、支持并发工作(PCI桥提供数据缓冲,并使总线独立于CPU) ,可在主板上和其他系统总线(如:ISA、EISA或MCA)相连接,系统中的高速设备挂接在PCI总线上,而低速设备仍然通过ISA、EISA等这些低速I/O总线支持。支持基于微处理器的配置,可用在单处理器系统中,也可用于多处理器系统。

总线发展史(兴趣拓展)

最早的系统总线——ISA

ISA是一种尺寸巨大的插槽,一般情况下都会采用黑色配色,比我们现在熟知的PCIe长很多

作为最早的PC总线,ISA诞生于1981年,那时候它作为IBM的基于8-bit Intel 8088处理器的PC/XT电脑的系统总线首次出现。由于PC/XT曾经在相当长一段时间内都是PC领域的统治者,所以系统总线最开始被称为PC总线或PC/XT总线。之后在1984年,IBM推出的基于16-bit Intel 80286处理器的PC/AT电脑当中,系统总线也相应地扩展为16bit,并被称呼为PC/AT总线。而为了开发与IBM PC兼容的外围设备,行业内便逐渐确立了以IBM PC总线标准为基础ISA(Industry Standard Architecture,工业标准架构)总线

ISA是8/16bit的系统总线,最大传输速率仅为8MB/S,但在当时是足够满足速度需求的。ISA允许多个CPU共享系统资源,且具有良好的设备兼容性,这让它成了当时最流行的系统总线。ISA接口也就因此而成为了主板上的标准配置,无论声卡、显卡、解压卡还是别的什么设备,当时我们所要用到的几乎所有外接板卡都需要ISA接口。

不过,ISA的弱点也是显而易见的,作为最初的数据总线,ISA的传输速率很快便成了周边设备性能提升的瓶颈,它还有CPU占用率高以及占用硬件中断资源等其他问题,所以渐渐的也就无法再满足高速发展的外围设备的需求了,因此业界开始了对ISA总线的放弃以及对替代品的寻找。这位继任者,便是几乎陪伴了一代人的PCI。

最长寿的总线——PCI

由于ISA/EISA总线速度缓慢,一度出现CPU的速度甚至还高过总线的速度,造成硬盘、显示卡以及其它的外围设备只能通过慢速并且狭窄的瓶颈来发送和接受数据,使得整机的性能受到严重的影响。为了解决这个问题,1992年,Intel在发布486处理器的时候,也同时提出了32-bit的PCI(Peripheral Component Interconnect,外围组件互连)总线

PCI总线是独立于CPU的系统总线,推出至今已走过了30载春秋。以最初目的而言,它并不是作为ISA的终结者出现的。PCI在结构上可以被视为CPU和原来的ISA之间插入的一级新总线,它拥有全新的操作方式,可以经由桥接电路来协调数据的传送,新加入的管理器能够提供信号缓冲,这让PCI的外设支持数量明显提升,并能在高时钟频率下保持高性能,它为当时的显卡、声卡、网卡、MODEM甚至数据采集卡等等设备提供了连接接口。

32-bit PCI总线的交互速度为33MHz,理论带宽就是4Byte/s * 33MHz = 133MB/s。而PCI总线及接口家族并没有像ISA那样仅仅发展了一代便戛然而止,随着对更高性能的要求,更为高速的64bit PCI/PCI-X总线也被提出,其频率规划提升到66~133MHz,理论带宽就提升到了533MB/s。这种思路似乎就像是将两个PCI接口合并使用,但又不是完全相同。这些总线及接口大多服务于更高级别的服务器产品线,所以我们所见最广泛的仍旧是采用32 bit/33MHz的标准PCI接口。良好且异常广泛的兼容性,理想的系统资源占有率以及低廉的成本让PCI接口成了相当长一个时期里主板上出现最多的接口,它甚至变成了衡量主板可扩展性及实用性的标志之一。

以133MB/S的带宽而言,PCI接口及总线对声卡、网卡、视频卡等绝大多数输入/输出设备显得绰绰有余了,这是PCI能够在今天仍旧继续存在的原因之一。不过PCI的速度和带宽对性能高速增长的某些外部设备,比如胃口越来越大的3D 显卡来说,很快就显得有些力不从心,成为了制约显示子系统和整机性能的瓶颈。在这种需求的催生下,近乎于昙花一现的一代著名总线——AGP现世了。

短命的显卡御用总线——AGP

在上个世纪九十年代末期,随着Voodoo 2、TNT以及G200等第二代3D显卡的问世,PC用户们忽然发现了一个令人震惊的事实——在数倍激增的多边形以及材质解析度的作用下,PCI总线看似富裕的133MB/S的带宽,在新一代3D显卡面前竟然已经变得不够用了。好在技术端的反应一直都是快于市场端的,新一代3D显卡的需求,早在其研发阶段就已经被业界所注意到了,与新一代3D显卡一同到来的,还有新的AGP标准。

与PCI一样,AGP(Accelerated Graphics Port)同样由Intel所提出。早在第一代3D加速卡刚刚普及的90年代中期,Intel就注意到了激增图形需求所带来的通讯带宽即将超过PCI总线的承受能力,为了应对这一矛盾,Intel在PCI V2.1的基础上提出了全新的图形设备专用总线——AGP标准,并在1997年的440LX芯片组当中首次予以实现。

用通俗但并不严谨的理解,AGP可以被看做是运行在66MHz+倍频设计的PCI,两者基于同样的基础,但AGP拥有自己独特的特点——它也引入了包括AGP DME(Direct Memory Execution)以及AGP TA(Texture Acceleration),甚至是AGP FW(Fast Write,仅NVIDIA提供)在内的一系列新技术,同时将PCI的带宽从133MB/S提升到了266MB/S起跳,工作频率则从66MHz开始,这很好的满足了新一代图形显卡的需求。

随着显卡的高速发展,AGP也在不断的提升着自己的能力。AGP 1X标准可以提供266MB/s的理论带宽,而到了AGP 2X的版本,采用了新的双向数据传输技术(上升沿和下降沿各传输一个数据),从而理论带宽翻倍,达到了533MB/s。在画面处理需求几何增长之后,AGP 2X的带宽又不够用了,AGP 4X应运而生,工作频率没变,通过提升数据宽度,又将其理论带宽翻倍,提升至了1066MB/s。后期又推出了AGP 8X版本将带宽再次翻倍,达到2133MB/s。与此同时,工作电压也一步步下降到了0.8V之低。尽管如此,AGP保持了PCI外形不变且统一的光荣传统,其独特的单一棕色接口,在那个时代几乎成了“图形接口”的代名词。 

然而,作为PCI的特殊拓展,AGP从诞生之日起就有许多无法回避的缺陷,它仅支持单一设备连接,无法实现多卡互联扩展,到了后期,AGP的高占用缺陷凸显。并且,其与PCI日渐背离的巨大带宽差异也成了很大的麻烦。所以与PCI长达26年的服役经历形成了鲜明对比,AGP在发展至8X之后便停止了前进,最终带宽也定格在了2133MB/S。2002年,AGP的替代品——PCI Express也就是PCIe标准被确认,不过由于刚开始的价格较高,就出现了主板上同时搭载AGP和PCIe接口的情况,很长一段时间内,用户还是坚持选择AGP显卡来装机。

最广泛最通用——PCI-Express

在AGP/PCI之后,成本高昂的PCI-X并没有成为接班人,主板的PC总线及接口来到了PCI-Express时代。

早在2001年的春季,英特尔公司就提出了要用新一代的技术取代PCI总线和多种芯片的内部连接,并称之为第三代I/O总线技术。随后在2001年底,包括Intel、AMD、DELL、IBM在内的20多家业界主导公司开始起草新技术的标准,并在2002年完成,对其正式命名为PCI Express,简称PCIe。它采用了目前业内流行的点对点串行连接,比起PCI以及更早期的计算机总线的共享并行架构,每个设备都有自己的专用连接,不需要向整个总线请求带宽,而且可以把数据传输率提高到一个很高的频率,达到PCI所不能提供的高带宽。

PCIe以优秀的高速点对点传输形式带来了巨大的带宽提升,其兼容性和扩展灵活性也达到了前所未有的高度。PCIe将PCI及AGP使用的并行数据传输方式更改为了串行传输方式,串行传输的优势是传输速度可以更快,缺点是容易出现数据损失,不过这个缺陷在不断进步的新技术面前已经不是什么问题。在经过了短暂的更替之后,PCIe接口便完全取代PCI/AGP并成为了大部分主板的唯一板卡扩展接口。PC的扩展接口经历了相当长时间的各种混搭之后,在PCIe时代首次迎来了大一统的格局。

PCIe接口的带宽分为1X/2X/4X/8X/16X,目前主板上已经很少见其他接口,主要就是PCIe扩展接口,2X的插槽也比较少见。视可扩展性需求不同,现代主板的标准接口配置通常会包含若干个PCIe 1X短槽以及2个以上的PCIe 8/16X长槽,这些PCIe接口已经取代了其他所有接口的功能,连接了包括显卡、声卡、扩展卡甚至SSD硬盘在内的几乎所有PC扩展硬件。除非芯片组提供支持,你甚至连PCI接口都很难再看到。

PCIe 1.0标准提供了2.5GT/s(Giga Transmissionper second ,千兆传输/秒,即每一秒内传输的次数,不同于Gbps)的传输速度,常用的PCIe 16X提供16位的数据宽度,其单向理论带宽已经可以达到5GB/s。由于是串行传输,PCIe 2.0以前采用的是8bit/10bit标准,在传输数据的时候会增加“开始标志和终止标志”,实际传输8bit的数据就需要占用10bit的传输量,所以其实际单向传输速度大约为4GB/s。即使这样还是远超过AGP 8X的2.1GB/s。如果算上双向数据传输(上升沿和下降沿各传输一个数据),则其实际带宽可以达到8GB/s。PCIe 2.0标准没有对其进行大的修改,不过将2.5GT/s的传输速度翻倍成为5.0GT/s,在原有不变的情况下,PCIe 2.0 16X的双向带宽为16GB/s。目前使用最广的PCIe 3.0标准在提升传输速度至8GT/s的同时,将传输标准升级为了128bit/130bit,编码损耗几乎可以忽略不计,PCIe 3.0 16X的理论双向带宽可以达到32GB/s。

2017年,PCI-SIG组织正式发布了全新的传输标准:PCIe 4.0,其传输速率定义为16GT/s,比3.0翻番,带宽速率则可以提供到64GB/s。AMD平台已经全面支持PCIe 4.0,从消费级到数据中心,显卡、处理器、主板芯片组全都有。NVIDIA方面,除了在FPGA等领域已支持PCIe 4.0,新一代“安培”(Ampere)架构,主攻AI、数据中心、高性能计算等市场领域,也首次引入了PCIe 4.0。2019年5月29日,PCIe 5.0标准正式发布,达到了32GT/s的传输速度,同时保持低功耗和向后兼容以前几代的技术。依然使用128/130编码方式,16X带宽从64GB/s提升到了128GB/s。

总结

从最开始的ISA总线起算,PC总线经历了从并行到串行,再到最后串并行的交替。伴随着总线及其接口的不断演变,我们所使用的数据带宽也从最开始的几MB每秒逐渐提升到了数GB乃至几十GB每秒。正是总线的不断进步,让有了我们获得了更快速的显卡和更高速硬盘的机会。

发展和更迭是任何事物都要面对的历程,总线也不例外,而我们关于PC的记忆以及种种快乐,正是这不断的变化连接在一起所造就的。不过说实话,总线发展到今天已经没有什么再向上的空间了,关于PCIe的标准,最大的推动力就是显卡,但是毫不夸张的说,PCIe 4.0甚至5.0足够满足任何高性能显卡,还有很大性能冗余。

虽然PCIe带宽在不断地提升,但不得不说,它们在PC市场的用武之地越来越小,因为消费级市场根本用不到这么高的带宽,只有高性能服务器、网络等产品上才有意义。

参考资料:

https://baike.baidu.com/item/主板/104636

https://baike.baidu.com/item/芯片组/305749

https://baike.baidu.com/item/总线/108823

https://biz.51cto.com/art/201709/552288.htm

https://www.chinafix.com/article-9528-1.html

posted @ 2021-01-15 18:20  箐茗  阅读(3126)  评论(0编辑  收藏  举报