3.1 总线的基本概念
一、为什么要用总线?
为了实现不同部分之间的连接。另外如果分别使用不同的线,那么成本非常高,难度也非常大,设备之间的接口要占用大量的空间,如果要新增一个模块,那么就要增加N束线,所以又不能用分散连接。所以使用总线(BUS)。
二、什么是总线?
总线是连接各个部件的信息传输线,是各个部件共享的传输介质。
三、总线上信息的传送
包括串行和并行。不再做解释。通常情况下,并行距离比较短,串行距离比较长。
四、总线结构的计算机举例
1.单总线结构框图
图1.1 单总线结构图
把所有部件都连接到1个总线上。但是它存在以下问题:
(1)同一时刻只能一个部分使用总线,这会成为整个系统的瓶颈。如果主存在和一个I/O设备传输的话,主存和CPU就无法进行传输,那实际上,如果不采取措施,在主存和I/O进行传输的时候,CPU的工作就无法进行,严重影响CPU运行效率;
(2)若总线较长,则远端设备向主存传输信息,时间延时也会比较长;
(3)总线争用。
2.面向CPU的双总线结构框图
图1.2 面向CPU的双总线结构
这种方法解决了CPU与主存传输、主存与I/O传输两者的冲突,但是也存在问题:如果主存想和I/O设备进行数据传输,那么主存无法和I/O设备直接进行传输,只能通过CPU来作为中介进行传输,一旦发生外部设备与主存进行传输,那么CPU还是会无法运行。
图1.3 以存储器为中心的双总线结构框图
本框图解决了图1.1、图1.2框架的问题。但是现代技术来说,这个框架仍然有问题,CPU、主存无法同时和I/O接口进行传输数据(目前采用的是分时传输)。
3.2总线的分类
从位置可分为:
1.片内总线:芯片内部的总线。
2.系统总线:计算机各部件之间的信息传输线,包括:
(1)数据总线:双向,与机器字长、存储字长有关;
(2)地址总线:单向,与存储地址、I/O地址有关;
(3)控制总线:有出(中断请求、总线请求),有入(存储器读、存储器写,总线允许、中断确认)。
3.通信总线:用于计算机系统之间或计算机系统与其他系统之间的通信。
从传输方式可分为串行通信总线和并行通信总线。
3.3 总线的特性及性能指标
总线就是在主板上的,CPU、主存等都是通过接口与总线相连的。
二、总线特性
1、机械特性:尺寸、形状、管脚数及排列顺序;
2.电气特性:传输方向和有效电平范围;
3.功能特性:每条传输线的功能(地址、数据、控制);
4.时间特性:信号的时序关系。
三、总线的性能指标
1.总线宽度:数据线的根数;
2.标准传输率:每秒传输的最大字节数(MBps);
3.时钟同步:同步、不同步;
4.总线复用:地址线与数据线复用;
5.信号线数:地址线、数据线和控制线的总和;
6.总线控制方式:突发、自动、仲裁、逻辑、计数;
7.其它指标:负载能力(能挂载多少I/O设备)。
四、总线标准
图3.2 总线标准
3.4 总线结构
一、单总线结构
如图1.1所示。
二、多总线结构
1.双总线结构
除了图1.2、图1.3所示类型,还有其他类型。如下:
4.1 双总线结构的一种框图
通道有自己的控制系统,能执行一些简单的程序。通道的程序是由操作系统编写,而不是程序员编写。
2.三总线结构
图4.2 三总线结构(1)
三总线是:I/O总线、DMA总线(直接内存存取)、主存总线。DMA是外部设备直接访问主存。但是一些高速设备和主存进行存取,是通过DMA总线,低速设备依旧需要通过I/O总线。
3.三总线结构形式2
图4.3 三总线结构(2)
上面是一条局部总线,CPU和主存的交换是最大的,但是CPU发展速度很快,但是主存性能提高很慢,为了解决这个问题,添加了一个小容量、高速的Cache。还有一个局部I/O控制器,连接一些高速的I/O设备。各种设备都可以连接到扩展总线上。但是看到多种传输速度的设备都连接到了扩展总线上,是会影响外部设备工作速度。
4.四总线结构
图4.4 四总线结构
四总线包括:局部总线、系统总线、高速总线、扩展总线。局部总线实现了CPU和Cache/桥的连接,系统总线实现了主存和Cache/桥的连接。Cache/桥扩展出高速总线,所有高速设备都连接到高速总线上。高速总线拓展出一个拓展总线接口,与之相连一个扩展总线,所有低速设备连接到这个总线上,通过扩展总线接口逐步连接到Cache/桥上。这种方式把高速设备和低速设备,使得传输速率可以更高。
三、总线结构举例
1.传统微型机总线结构
图4.5 传统微型机总线结构
CPU和存储器通过系统总线相连接,通过标准总线控制器可以拓展与其他控制器相连接。
2.VL-BUS局部总线结构
图4.6 VL-BUS局部总线结构
3.PCI总线结构
图4.7 PCI总线结构
4.多层PCI总线结构
图4.8 多层PCI总线结构(PCI总线能力不够的情况下)
3.5 总线控制
一、总线判优控制
因为总线在同时只能有一个设备控制,若两个或两个以上设备申请使用总线则会产生冲突。所以需要研究总线的判友控制。
1.基本概念
主设备(模块) 对总线有控制权
从设备(模块) 响应从主设备发来的总线命令
总线判优控制分为两类,其一是集中式(链式查询、计数器定时查询、独立请求方式),其二是分布式。
2.集中式——链式查询方法
图5.1 链式查询方式
总线控制部分是集中在一起的,这是集中式总线判优控制的典型特征。另外还有数据总线用于信息交换数据传输,还有地址总线,主设备占用了总线之后,要通过地址总线找到从设备。再另外,还有三条很重要。
一条是BR(总线请求),所有设备都从这条线发出总线占用或者总线使用的请求。
BS(总线忙),如果某个设备占用了总线控制权,那么就通过这个信号告诉其它部件总线忙。
BG(总线同意,这是链式查询的特征地方),是一个一个向下查询。如果I/O接口n想要占用总线,它会向总线控制部件提出占用请求,总线控制部件接受请求后,并且此时可以让出控制权给该I/O设备控制的时候,总线要通过BG逐个向下查询。
在多个I/O接口向总线控制部件提出控制请求后,首先查I/O接口0,看它是否提出了请求,如果它提出了,那么总线使用权限就给了0,如果0没有提出,那么就继续往下传递,直到第一个提出总线占用请求的设备(此时假设第一个提出的是1),然后I/O接口1发出BS表示总先忙,然后开始传输信息。
这个方式有以下特征:
(1)各个设备占用总线的优先级确认方式:优先级和BG的查询顺序有直接关系,,这个连接顺序是固定好了的,谁靠近控制部件近,谁优先,这样的话距离较远的设备可能永远都得不到使用总线的权限。
(2)对询问链的电路故障很敏感,如果第i个设备的接口中有关链的电路有故障,那么第i个以后的设备都不能进行工作。
(3)结构简单,一共3条线,增删设备非常容易,可以向后一直排下去,进行可靠性设计的时候比较容易实现。
(4)速度较慢
用在微型计算机或者简单嵌入式系统中。
3.计数器定时查询方式
图5.2 计数器定时查询方式
首先它还是有数据线和地址线,另外还有一条线是设备地址,实际上这条线就是这种方式名称的来源,这上面传输的地址是计数器给出的,用这种方式来查询某个设备是否发出了设备请求,当然BS和BR还是有的。
总线控制部件里面有一个计数器(初值任意),如果某个主设备想占用总线和从设备进行信息传输,它通过BR这条向控制部件提出总线控制请求。总线控制部件在总线可以被控制的情况下就会启动计数器,计数器的值是通过设备地址这条线向外传输,计数器给出哪个值,就对哪个接口进行查询,看哪个接口有提出使用总线请求,若没有则自动对计数器加1,直到找到那个提出请求的,然后此接口被选中,通过BS发出信号,然后开始工作。
这种方法的特点:
(1)优先级确定灵活,既可以是事先确定(计数器初始化为定值或者上一次停止时候的值),也可以是随机的(计数器初始化随机);
(2)这种方式少了BG,多了一个设备地址线(条数和设备数有关系,有logn条),总的来说线条数为(logn)+2条
4.独立请求方式
前两种都是按照顺序来查找的,速度比较慢。独立请求方式改变了这种情况,速度更快。如下图所示。
图5.3 独立请求方式
每个设备都有BR和BG两条线。优先级的排队是用排队器来实现的。优先级的设置是非常灵活,可以人为直接设置,也可以用自适应的方式,也可以采用计数器的方式等。这种方式用线太多,需要2n条线。
二、总线通信控制
1.基本概念
总线通信控制是为了解决通信双方协调配合的问题。总线传输周期有以下过程:
①申请分配阶段:主模块申请,总线仲裁决定。
②寻址阶段:主模块向从模块给出地址和命令。
③传数阶段:主模块和从模块交换数据。
④结束阶段:主模块撤销有关信息。
2.总线通信的四种方式
(1)同步通信:由统一时标控制数据传送。
(2)异步通信:采用应答方式,没有公共时钟标准。
(3)半同步通信:同步、异步结合。
(4)分离式通信:充分挖掘系统总线每个瞬间的潜力。
3.同步通信
(1)同步式数据输入
图5.4 同步式数据输入时序图
加入CPU通过同步的方式从外部设备进行数据输入,同步的特点是由一个定宽定距的的时标来进行控制,如图所示这个,整个总线周期由4个时钟周期组成。在固定时间点上进行固定操作。在T1上升沿,CPU(主设备)必须给出地址信号,在T2上升沿,必须给出读命令信号,告诉从设备要读数据了,在T3上升沿之前,从设备必须给出数据让主设备读取。T4的上升沿读命令和数据撤销,在T4结束的时候,地址命令也撤销。
(2)同步式数据输出
图5.5 同步式数据输出时序图
同步式数据数据与同步式数据输入类似,不再累述。
在同步模式中,主设备和从设备的时钟是强制统一的,因此在速度不同的设备时,要选择最慢的模块作为时钟标准进行设计。这种方式用在总线比较短,各个模块存取时间比较一致的情况下。
4.异步通信
图5.6 异步通信模式图
主设备发起此次通信。主设备和从设备之间没有定宽定距的时标,但是多了两条线——发出请求线和应答线。异步通信有三种方式,分别是不互锁、半互锁和全互锁。
下面来看一下第一种方式,不互锁。主设备发出请求,从设备接收到通信请求后进行应答,之后主设备撤销请求信号,从设备撤销应答信号。在这个过程中,主设备不管是否接收到应答信号,在经过一段时间后都会撤销请求信号,从设备也不管主设备是否接收到应答信号,一段时间后会撤销应答信号。这种方式可靠性有问题。
接下来看半互锁。主设备发出请求,从设备接收到请求后发出应答信号,主设备接收到应答信号后会撤销请求信号,如果没有接收到,会一直发出请求信号。但是从设备不管主设备是否接收到应答信号,一段时间后会撤销应答信号。有可能造成请求信号一直高电平。
最后看全互锁。主设备发出请求,从设备接收到请求后发出应答信号,只有主设备接收到应答信号后会撤销请求信号,同样,只有主设备的请求信号撤销以后,从设备才会撤销应答请求。
5.半同步通信(同步、异步结合)
同步特征:有一个定宽定距的时标。发送方用系统时钟前沿发信号;接收方用系统时钟后沿判断、识别。
异步特征:允许不同速度的模块和谐工作,为了协调快慢,增加一条“等待”响应信号(WAIT)
以输入数据为例的半同步通信时序,如图所示。
图5.7 半同步通信时序图
上述三种通信的共同点:
一个总线传输周期(以输入数据为例)
(1)主模块发地址、命令:占用总线。
(2)从模块准备数据:不占用总线,总线空闲。
(3)从模块向主模块发数据:占用总线。
我们说总线连接了多个模块,总线的传输能力是系统的瓶颈。而在这个过程中中间这个步骤总线是空闲的,对总线资源来说是一种浪费。
6.分离式通信
充分挖掘系统总线每个瞬间的潜力。
一个总线传输周期:
(1)子周期1:主模块申请占用总线,使用完后即放弃总线的使用权。
(2)子周期2:从模块申请占用总线,将各种信息送至总线。
分离式通信特点:
(1)各模块有权申请占用总线;
(2)采用同步方式通信,不等对方回答;
(3)各模块准备数据时,不占用总线;
(4)总线被占用时,无空闲。
充分提高了总线的有效占用!