系统总线

前言

本博文将主要讲述总线的基本概念、分类、结构以及控制逻辑

总线的基本概念

通常来说连接计算机中五大部件的方法有两种,一种是五大部件之间各自通过单独的线相互连接,这种方式叫做分散连接,还有一种方式就是将各个部件连接到一组信息传输线上,通过这组线来传输数据,这种方式叫做总线连接
总线连接是多个设备连在了一组线上,但是总线上不能有多个设备同时发送数据(可以多个设备从总线上接收数据),计算机中有那么多的设备,而且计算机中需要大量的信息传输,如果只是单单的把多个设备连在一条总线上,势必会影响计算机的效率。下面给出比较典型的一种总线结构:
系统总线
总线实际上就是由若干条线路或者通路组成的,每条线可以传输一位二进制代码,若干条传输线同时传输就可以一下子传输多个二进制位

总线的分类

先来说一说分类吧,分类肯定是按照一定的标准来进行分类,如果没有标准那还谈什么分类呢?我们这里就按照总线连接的部件不同来说一说总线的类别

1.片内总线

位于芯片内部的总线,例如cpu中连接各个寄存器的总线

2.系统总线

系统总线是我们讨论的重点,它是连接cpu、主存、以及I/O设备等各大部件的一组线路。而系统总线按照它传输的信息不同又可以分为:数据总线、地址总线、控制总线

数据总线

数据总线当中传输的信息被计算机当做数据处理,它是双向数据传输线,其位数与机器字长、存储字长有关,而且它还是衡量计算机性能的一个重要指标,因为如果数据总线的宽度为8位(也就是有8条线路),那么如果指令字长为16位,那么cpu就必须要访问两次主存才可以完成操作。

地址总线

地址总线传输地址信息的,这个地址信息就是我们的数据在主存当中的位置,我们每个存储单元都是有它的一个地址的,特定的地址存放着特定的信息,我们想要取到某一信息,就必须要指出它的地址。地址总线的宽度决定了计算机能够访问的存储空间的大小,例如你的地址总线的宽度为20,那么你就能访问1kb的空间

控制总线

地址总线、数据总线都是各个部件共享的,什么时候该谁使用就由控制总线中的指令类决定了,我们可以理解为控制总线中的数据就是各种指令,掌控生杀大权。对任一控制线而言它是单向传输的,指令只能从一个部件到另一个部件,但是对控制总线总体而言,控制总线又是双向的,例如cpu可以发号施令,但是其它部件也可以向cpu请求。

3.通信总线

这类总线用于计算机系统之间或者计算机系统与其它系统的通信,计算机网络中的某些线路就可以算作同信总线。按照传输方式的不同可以分为:串行中线、并行总线。

总线特性及性能指标

总线特性

从物理角度来说总线就是一组电导线,被印制在电路板上,然后各个部件插在这个电路板上的就实现了总线与各个部件的连同,如下图所示:
系统总线
当然这样直接连接上了看上去很简单,其实还必须满足一定的标准各个部件才可以与总线相互交流。这些标准也可以说是总线的特性,分别是:机械特性、电气特性、功能特性、时间特性

机械特性

前面说到各个部件要插在电路板上,那么它们之间插板的规格或者说引脚数肯定是要有一个标准吧,不然不同厂家制造出来的部件各式各样,就乱套了。

电气特性

规定了机械特性,各个部件可以正确的连接在总线上了,但是这只是物理上连接成功了,想要传输数据嘛当然是要知道各个电平代表什么含义呐,以及电平在哪个范围内代表高电平哪个电平范围属于低电平,这些不统一了,通信也会乱套

功能特性

功能特性是指每根传输线是什么功能,如地址总线是传输的地址信息等,试想一下如果地址线被各个部件当做数据线来处理那岂不是….

时间特性

时间特性指出了每一条线路在什么时候有效,每条总线上的各种信号都存在一种时序关系,是可以用时序图表示出来的。

总线性能指标

总线宽度、标准传输率、时钟同步/异步、总线复用、信号线数、总线控制方式以及其他的一些指标

总线结构

单总线结构

单总线结构就是讲cpu、主存、I/O设备都挂在一组总线上,这样所有设备都通过一组总线交换数据,具有便于扩展的优点,但是也有很大的弊端,我们知道多个设备不能同时向总线发送数据,所以,如果计算机的设备多了,那么计算机的效率势必大大降低,出现瓶颈。

多总线结构

先说说双总线结构,双总线结构就是讲速度较低的i/o设别从系统总线上分离出来连接在I/O总线上,这种结构一般用在中、大型计算机系统上。如图所示:

图中的通道是一种处理器。

多总线结构其实就是将不同速率的外设进行分类连接在不同的通道上,这样可以提高效率,增加系统吞吐量。

总线控制

总线控制是最重要的一部分,因为总线上连接着许许多多的部件,想要交互信息肯定需要规章制度,这和我们的交通控制一样,总线控制就可以看做各种交通规则以及交警的指挥。总线控制主要是两大部分:判优控制、通信控制

判优控制

总线上连接着多个部件,主动发送请求的设备叫做主设备,被动接受信息的叫做从设备,如果总线上多个主设备同时请求使用总线发送数据,那么就应该有一个决定那个先使用总线的机制,我们称之为判优控制,判优控制又分为集中式与分布式,我们这里主要讨论三种集中式的判优控制:
1.链式查询
链式查询就是通过一个总线控制器挨个挨个的问这些设备,是否需要总线服务,这样的话,离总线控制器越近的设备就优先级越高,实现这种判优需要三根线来控制总线,分别是BS(总线忙)、BR(总线请求)、BG(总线同意)。工作流程大概是:总线同意信号一个一个询问,当到达某个部件有总线请求信号时就不再往下传递信号,并且置总线忙,表示总线被占用了。链式查询线路简单,但是一处坏了就都坏了。示意图:
系统总线
2.计数器定时查询
计数器定时查询就不像链式查询那样“近水楼台先得月”了,先看图
系统总线
由图可见,这种方式少了BG,多了一天设备地址线,工作原理大概是总线控制部件维护一个计数器,这个计数器可以从零开始,也可以从某一个特定的值开始(所以相对灵活),总线忙BS=0时,计数器开始计数,如果某个发出总线请求的设备地址与计数器的值一致的话,就获得使用权。
3.独立请求方式
先上图:
系统总线
由图可见,每个设备都有BG与BR,这一方式的工作原理是:总线控制器中维护这一个队列,每个请求的总线都需要排队。该方式使用的线路最多。

通信控制

总线的通信控制主要是解决通信双方如何获知通信的开始和结束,以及如何协调配合。四种通信方式:同步通信、异步通信、半同步、分离式通信
同步通信
同步通信并不是说通信双方同时做什么,而是说在机器某一特定的时间做特定的操作,所以同步通信需要一样的时标
系统总线
我们来解读一下这幅图,在第一个上中上升沿,发送方应该开始发送地址信息,在第二个时钟上升沿应该开始读取命令了,在第三个时钟上升沿就要开始发送数据了…..同步通信就是按照这样的方式(在特定的时间做特定的事),这样收发双方就都知道什么时候开始什么时候结束。
异步通信
异步通信相对来说就不那么“按部就班”,异步通信云讯双方“不一致”,实现的方式是采用应答模式,即发送方发送了某一信息,必须收到回应才继续,这样也可以避免出错。异步通信也分为三种模式:不互锁,半互锁,全互锁
三种模式示意图:
系统总线
1)不互锁方式。主模块发出请求信号后,不等待接到从模块的回答信号,而是经过一段时间。确认从模块已收到请求信号后,便撤消其请求信号;从设备接到请求信号后,在条件允许时发出回答信号,并且经过一段时间,确认主设备已收到回答信号后,自动撤消回答信号。可见通信双方并无互锁关系。
(2)半互锁方式。主模块发出请求信号,待接到从模块的回答信号后再撤消其请求信号,存在着简单的互锁关系:而从模块发出回答信号后,不等待主模块回答,在一段时间后便撤消其回答信号,无互锁关系。故称半互锁方式。
(3)全互锁方式。主模块发出请求信号,待从模块回答后再撤其请求信号;从模块发出回答信号,待主模块获知后,再撤消其回答信号。故称全互锁方式。
半同步通信
半同步通信引入了一天低电平有效的wait线,半同步通信也是按照在特定时间做特定操作,但是如果某一操作不能及时完成,就可以通过wait线传送等待信号,告知另一方等一会。
分离式通信
说道分离式通信就不得不说一年总线传输周期都要做哪些事:
(1)申请总线阶段
(2)寻址阶段,就是找到从模块的地址
(3)数据交换阶段
(4)结束阶段
数据交换之前肯定是需要进行数据准备的,所以这段时间总线时间上是空闲的,所以分离式通信的策略就是讲总线传输周期分为两个子周期,当某一对设备不需要使用总线(准备数据时),先暂时让出总线使用权,这样可以最大限度的利用总线资源。

每天进步一点点