一、引子
这一节中,我们简单了解一下总线标准。(408不考)
经过之前的学习,我们知道,总线是多种多样的,有可能是并行总线,也可能是串行总线。
对于总线的仲裁方式,可以采用链式查询,也可以采用计数器定时查询,还有独立请求的方式。
对于总线的操作和定时,可以采用同步通信的方式,异步通信(不互锁、半互锁、全互锁)等。
可以看到,总线的种类多种多样,而各个厂商制造的硬件部件都想要挂在总线上并正常工作。所以我们需要制定总线标准来规定总线的属性。然后,各个厂商就可以根据总线标准来制造硬件部件。
:question: 如何定义一个总下标准呢?
首先可以确定这个总线是并行传输还是串行传输。如果是并行传输的话,还要确定同时要传输多少位的数据,就意味着要设置多少条数据线。然后就是总线仲裁方式、总线定时方式等。
比如:
二、总线标准
1.基本概念
由于CPU工作速度非常快,所以系统总线的工作速度也应该是主板上最快的。
现代主板上,有CPU,北桥,南桥。北桥的速度一般比南桥快。
局部总线一般和北桥芯片连接。
2.总线标准
下面来介绍一下总线的标准。
只需要简单了解,能够记住总线标准的英文缩写和简单特性即可,不需要过多深究。
(1)系统总线
上述文字了解即可。
①ISA
系统总线。用于连接CPU、主存,甚至直接连接各种I/O设备。由CPU直接控制。
主要用于IBM的16位机器上,是一个并行总线。
可以同时传递8bit或者16bit的数据,工作频率是8MHz(比较低)。
每个总线周期传送2个字节(B),每秒只能传送8M次,所以最大速度是16MB/s。(这些速度啥的不用记忆)
②EISA扩展总线
系统总线。
E是扩展的意思(Extend)。
并行传输的位数增加了一倍(32),速度也提升了一倍(32MB/s)。
③拓展
随着CPU速度的发展,上述两种总线无法满足CPU速度的需求。
后来,Intel提出了一种系统总线标准FBS前端总线,比上述两种总线速度都要快。
后来,Intel又对这种总线标准进行了更近一步的提升,提出了QPI总线标准。这种总线的标准,是现在很多处理器上还在使用的。
(2)局部总线
局部总线通常用于连接显卡、高速网卡等高速的硬件部件。
①VESA
局部总线一般不会和CPU直接相连,而是和高速的北桥芯片相连。
1991年,微软之类的公司,都开始出现了图形化的操作系统。由于这种图形化的操作系统需要处理活动图像(比如窗口拖动等),这些图像数据要比之前字符数据大得多。
所以,这些图像数据,要输出到显示器上,就需要更大的带宽。
这时候,视频电子标准协会这个组织就提出了新的局部总线的标准叫VESA,也是并行总线,一用来专门传送图像数据。
早期的VESA总线对外暴露出的总线接口如下:
②PCI
VESA的工作频率完全受到CPU的控制,由于VESA的工作频率是有固定上限的,因此当CPU发展越来越快,CPU给出的时钟信号也越来越高之后,VESA总线标准很难跟上CPU的发展。
所以,Intel公司提出了一种新的总线标准PCI。
可以看到,PCI总线速度比VESA总线快的多。
而且,PCI总线不依附于某个具体的处理器。在这种总线刚开始出现的时候,它是由北桥芯片控制的。所以当CPU工作频率越来越高之后,PCI也能适应接下来的需求,因为PCI并不受到CPU的控制。
这种总线,早期也被直接用作系统总线,即直接连接CPU。
PCI总线对外暴露的接口如下:
③AGP
并行总线,可以同时传送多位数据。
随着多媒体技术的不断发展,开始出现了3D类的游戏等。
由于我们对图像数据的传送带宽需求越来越大,PCI也逐渐跟不上时代的发展。
于是,Intel又提出了AGP总线标准。
这种总线标准是基于PCI 2.1版本扩充修改得到的。
速度前面的*1
可以理解为:位宽扩展了一位。
AGP其实是一系列标准,可以包含一倍速标准,也可以包含八倍速标准。
④PCI-E
之前说的PCI,是一种并行总线,同时传送多个bit的数据。
这里的E
是指Express,非常快的意思。
<1> 第三代I/O技术:将总线技术从并行传输转换为了串行传输。
之前提到的ISA、EISA等,都是并行传输。那么想要提升传输速度,比较简单的方法就是增加数据线,但是想要短时间内提升并行总线的工作频率是比较困难的。
所以之前的总线发展,无非就是提升数据线数量或者工作频率。
虽然串行传输,一次只能传送1个bit的数据,但是串行传输不需要考虑数据线之间的干扰问题,所以工作频率可以非常高。速度也就可以非常快了。
<2> 除了串行这个特点,还有一个点对点方式,即每一个PCI-E的设备都可以拥有自己独立的数据连接,各个设备之间并发的数据传输互不影响。布线空间变少,同时布线成本更低。
并行总线传输,是把多个设备挂在同一条并行总线上,就会出现多个设备争用总线的问题。
<3> PCI-E还支持双向传输模式,比如两个设备之间可以双向传输数据。
<4> PCI-E对外暴露的总线接口还支持热拔插。
也就是说硬件部件只要遵循PCI-E的标准,那么只需要将硬件部件插在PCI-E的接口上就可以直接使用。
还可以看到,PCI-E*1
的针脚比PCI-E*16
针脚少很多。
为啥呢?一会儿再说。
(3)设备总线
①RS-232C
串行通信总线。
通信总线:计算机系统与外界打印机系统的通信。
设备总线:打印机也可以看作连接在计算机上的设备。
所以通信总线也可以叫做设备总线。
RS-232C传输速度很慢。
这种总线标准刚开始提出是为了连接打印机。早期的打印机是针式打印机,对速度要求很小。所以RS-232C这种速度就可以满足需求了。
上图可以看见很多针脚,但是每次只能传送1bit的数据。
②SCSI
随着I/O设备不断发展,开始出现了一些对速度要求比较高的I/O设备。
比如激光打印机、彩色打印机等。
所以,人们又提出了SCSI总线标准,它是一种并行总线,可以同时传输多个比特的数据,传输的频率也比较高。
③PCMCIA
PC:个人电脑
MC:存储卡
IA:国际协会
在早期,计算机网络传输速度非常慢,所以计算机与计算机想要进行数据的交换,并不像现在这么方便。90年代初,计算机之间的数据交互,通常需要存储卡作为媒介进行交互。
所以PCMCIA用于连接便携的存储设备。比如将PC卡插在电脑上,将文件存在PC卡上,再把PC卡拿给其他人,存到别人的电脑里面。
支持即插即用。
这种总线标准对外暴露的接口如下图:
④USB
USB属于设备总线,串行总线(同一时刻只能传送1bit的数据)。
之前提到的都是并行总线。
USB这种总线标准对应的接口可以有很多种。
手机充电器那个大头对应的是上图第三个,这种接口是Type A,A型接口。
Type B通常用于显示器里面。
现在通常会见到Type C(也叫USB-C),它其实也是USB总线标准里面的一种。
我们来看一下Type-A接口,来简单介绍一下,串行传输数据的大致原理。
可以看到,它对外暴露了四个金属针脚(4个小铁片)。
1号和4号是用来供电的,不用于数据的传输。VCC是供电端,GND是接地端。
2号和3号会配合着传输1bit的数据。并不是两个bit数据往两条线走,而是两个同时传输1bit数据。
这是怎么实现的呢?
采用的是差模信号的方式表示二进制的0和1,就是2号和3号之间的电压差是多少,用电压差来确定传送的是0还是1。比如,检测到2号高、3号低就是1,2号低、3号高就是0。这种方式抗干扰能力强,所以工作频率可以很高。
对于之前说的并行传输,一根线传送1bit数据,高电平表示1、低电平表示0。但是这种方式很容易因为环境的干扰而导致电信号失态。比如现在想传送一个0.5v的低电平信号,但是由于环境的干扰变成了2.5v这种不高不低的电信号。
再回到刚才说的接口,2号和3号这两根线通常会拧成麻花状,如下图:
这种双绞线,也可以提高抗干扰能力。
看一下实际的USB线,确是如此:
红线和绿线用来传送二进制的0和1。在数据线内部,确实被拧成了麻花形状。
3.连接硬盘总线标准
接下来我们来看一下连接硬盘的总线标准。
硬盘同样可以看作一种外部设备,但是硬盘对于速度的需求,显然要比其他很多外部设备都要高。因为硬盘读写的快慢,会很大程度上影响系统整体的运行速度。
①IDE
90年代使用的一种总线标准叫做IDE。是一种并行总线(速度不是很高),同时传送多个bit的数据。
IDE又可以称作ATA,或者PATA(P表示并行的意思)。
看一下长下面的样子:(硬盘插在上面就可以用了)
IDE接口长这样:
②SATA
这里的ATA和上面的一样,只不过这里加了S,是串行的意思。
这种总线标准传输速度非常快,SATA3.0能达到600MB/s。
SATA总线接口如下:
三、总结
1.速度对比
将刚才的总线标准,做一张表,对比一下速度。
如下:
画横框的考频比较高。
速度不用记忆,只需要知道英文缩写是不是总线标准,能够分辨这种总线属于系统总线还是局部总线还是设备总线即可。
2.总线标准的发展
如下:
经过学习,我们发现,整体总线发展有一个规律:串行总线替代并行总线。
:question:为何串行总线取代并行总线?
==并行总线,各条线不能有长度差。==
解释一下。
假设现在制造一个并行总线,要同时传送4个bit的数据。
如果现在第四根线制作的长度比较长,当我们传送电信号时。对于比较长的线来说,接收端接收到信号的时间会有延迟。
现在还要结合同步定时的方式。
本来第一个时钟信号内就应该接收4个bit数据,然而在第一个时钟信号内,第4个电信号比其他的信号后到达。
这就可能导致,当传输第一个数据0101的时候,前三根数据线已经传送了010,进入下一个传输阶段,比如传输1011,此时第四根数据线才将上一个数据的1送达。这个数应该在上一个传输阶段就要送达的!
现在的串行,通常是基于包来传输的。
虽然说是串行,但是可以用多个数据通路分别串行传输多个数据包。
再回到之前说的问题,这个地方,✖1就是有一个数据通路,✖16就是有16个数据通路。(16个通路就可以同时传送16个数据包,当我们从每条线上收到80bit数据的时候,再将数据包排序即可)
:bookmark: 这种串行总线多个数据通路和并行总线是有区别的。
并形总线每条线传过来的数据,一定是每一次收到一整组,这一组数据作为数据的整体。
对于串行总线来说,是每一条线发送一组数据,16条线可以同时发送16组数据,收到16组数据之后,再对这16组数据进行排序。
所以,综上所述,串行总线工作频率可以很高,而且可以设置多个串行数据通路,所以串行总线会逐步取代并行总线。
3.实例
这个简单了解即可。
如下是Intel的一款很古老的处理器奔腾三代。
这个处理器和北桥芯片相连接的系统总线是FBS,北桥芯片和显卡相连接的是AGP。
PCI总线会对外暴露一些插槽、接口。
南桥芯片通过IDE与硬盘、光驱连接。
ISA是一种系统总线,在早期是直接连接CPU的。但在奔腾三代处理器主板上,ISA总线用于连接某些ISA设备,它在后来变成了设备总线,用于连接一些比较慢的I/O设备。