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还是会无法运行。

3.以存储器为中心的双总线结构框图

图1.3 以存储器为中心的双总线结构框图

本框图解决了图1.1、图1.2框架的问题。但是现代技术来说,这个框架仍然有问题,CPU、主存无法同时和I/O接口进行传输数据(目前采用的是分时传输)。

3.2总线的分类

从位置可分为:

1.片内总线:芯片内部的总线。

2.系统总线:计算机各部件之间的信息传输线,包括:

(1)数据总线:双向,与机器字长、存储字长有关;

(2)地址总线:单向,与存储地址、I/O地址有关;

(3)控制总线:有出(中断请求、总线请求),有入(存储器读、存储器写,总线允许、中断确认)。

3.通信总线:用于计算机系统之间或计算机系统与其他系统之间的通信。

从传输方式可分为串行通信总线并行通信总线

3.3 总线的特性及性能指标

一、总线物理实现

图3.1 总线的物理实现

总线就是在主板上的,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)总线被占用时,无空闲。

充分提高了总线的有效占用!