第三章 系统总线

3.1 总线的基本概念

为什么要用总线?

分散的各个部件要连接在一起,若是两两相连,那么就有非常多的线。若是添加一个新模块,那么就要添加N个线和已有的N个部件相连。为了解决这个问题,引入总线。


什么是总线

总线是连接各个部件的信息传输线,是各个部件共享的传输介质

在同一时间,只能有一对部件来使用总线。否则,总线会产生冲突。而多个部件可以同时从总线上接收相同的信息。

总线成为这个结构的瓶颈,但是这种结构可扩展性好,设计简单


总线上信息的传送

串行:把要传输的信息,一位一位的放到总线上,接收方再一位一位的进行接收。

并行:多位同时放到总线上,接收方多位同时接收。多位同时传输,需要多个数据线,但是如果距离远,线和线间会互相干扰,那么接收方很难接收到正确的数据。所以,通常来讲,并行传输的距离都比较短。

所以串行可以在机器和机器间传输,而并行一般都在机器内部


上图的这种结构,如果主存向外输出或IO输入主存,那么总线就会被占用,那么CPU和总线的交流就会阻塞,CPU执行程序的过程就会停止。严重影响CPU的效率

如果设备多,那么总线被多个设备争抢;设备多造成距离远,远距离的两个设备因为距离远也会速度慢。

那么,就可以引入多条总线,让数据可以并行传输。


I/O总线连接外部设备,M总线连接主存;

这种结构,主存和外部设备没有总线连接,只能以CPU作为媒介,如果主存和外部设备交流,那么CPU还是会被占用打断。


CPU和外部设备交流,通过系统总线;

主存和外部设备交流,通过系统总线;

CPU和主存交流,通过存储总线;

从现在技术来讲,主存不可以同时向存储总线、系统总线传输数据。

3.2 总线的分类

按照连接部件不同,分为以下三类:

片内总线:指芯片内部的总线,如在CPU芯片内部,寄存器和寄存器间、寄存器和ALU间都由片内总线连接

系统总线:CPU、主存、I/O设备各大部件间的信息传输线。由于这些设备通常放在主板或插件板上,又叫板级总线板间总线。按照系统总线传输信息的不同,又分为三类:

  1. 数据总线:传输个功能部件间的数据信息,他是双向传输总线(CPU中数据送到外部,外部也要送到CPU),其位数和机器字长、存储字长有关,一般是8位、16位、32位。数据总线的位数称为数据总线宽度;这是衡量系统性能的重要参数。如果数据总线宽度是8位,指令字长是16位,CPU在取指阶段要访问两次主存。
  2. 地址总线:指出数据总线上的源数据或目的数据在主存单元的地址,或I/O设备的地址。例如:从存储器读出一个数据,CPU要把这个数据所在的存储单元的地址送到地址总线上。又例如:某数据从I/O输出,CPU要把数据送到数据总线,还有把输出设备的地址送到地址总线上。地址总线上的代码是用来指明CPU欲访问的存储单元或I/O端口的地址,由CPU输出,单向传输。地址线的位数和存储单元的个数有关。如果地址线是20根,则对应的存储单元个数是2^20。
  3. 控制总线:数据总线、地址总线都是被挂在总线上的所有部件共享,如何使各部件能在不同时刻占有总线使用权,需要靠控制总线来完成。控制总线是用来发出各种控制信号的传输线。对于任一控制线而言,他的传输是单向的。例如:读写命令是CPU发出。但是对控制总线来讲,又是双向的。某些设备会向CPU发出请求。所以,对CPU而言,控制信号有输出、输入

通信总线:计算机之间、或计算机和其他系统(控制仪表、移动通信等)间通信。这类涉及很多方面,如外部连接,距离远近,工作方式等。按传输方式,分为串行通信、并行通信

3.3 总线的特性和性能指标

为了实现上图插板和总线的有效连接,总线就要有一些特性

  • 机械特性:尺寸、外形要匹配才能插到一起
  • 电器特性:数据线是双向的,地址线是单向的,高电平1,低电平0,什么电压是高,什么电压是低。
  • 功能特性:每根线上传的信号是什么信号?地址信号、数据信号、控制信号
  • 时间特性:一个时序电路要有效工作,各种电信号要有时序

总线宽度:8根线8位,16根16位

8086机器,20根地址线同时作为数据线使用。

总线的负载能力,一条线能挂在多少I/O设备。


不同的企业,生产不同的部件,所以要有一个总线标准。

3.4 总线结构

总线分为单总线和双总线结构两种

单总线结构

所有设备都通过一组总线来交换信息,极易造成瓶颈;它不允许两个以上的部件在同一时刻向总线传输信息,这种结构一般是小型、微型计算机使用。

虽然可以增加总线宽度来提高传输速率,但是数据量大、传输速率高时,单总线不能解决问题;


多总线结构

双总线结构的特点,是把速度低的I/O从单总线分离。通道是一个具有特殊功能的处理器,CPU的部分功能下放给通道,让他对I/O有同一管理的能力。这种结构一般用于大、中型计算机。通道的程序,通常是由操作系统来编写

如果把速率不同的I/O设备进行分类,把他们连接在不同的通道上,那么计算机系统的工作效率将会更高,由此发展成多总线。

DMA(direct memory access):直接存储器访问,外部设备(高速外设)直接访问系统的内存,低速设备要和主存进行信息交换,依然要通过IO总线

CPU的速度不断的加快,而内存的速度增长的比CPU慢很多,所以内存的速度成为瓶颈。为了解决这个问题,现代计算机在CPU和主存间加入了一个小容量、高速度的cache,对主存中的数据进行缓存。CPU运行时需要的数据和指令主要从cache中获取。局部IO控制器可以连接一些高速的局部设备。

扩展总线通过接口连接在系统总线上,然后其他设备连接在扩展总线上,解决了IO扩展的问题。但是多种外部设备都连接到扩展总线上,这回影响到外部设备的工作速度。

高速设备连接到高速总线上,低速设备连接到扩展总线上,这种结构把高速、低速设备分离,是设备传输速率更高。


总线结构举例

标准总线控制器扩展出IO总线,把各种设备都连接到IO总线上,这是一个简单的结构,就是把系统总线和IO总线进行分离。

这种结构也实现了高速设备和低速设备的分离,扩展出VL-BUS这一个高速总线,这上面连接了高速的图形设备,然后再扩展出一条ISA、EISA这条低速总线,连接低速的设备(图文传真)

通过PCI桥扩展出了一条高速总线(PCI总线),连接高速设备。通过标准总线控制器扩展出了ISA、EISA之类的低速总线

如果PCI总线连接的设备过多,那么总线的驱动能力不够,可以通过PCI桥来扩展,通过桥实现了总线驱动能力的提高和总线的扩展

3.5 总线控制

总线判优控制

总线上连接的各类设备,按对总线是否有控制功能分为主设备、从设备。

主设备(主模块):可以提出总线的占用申请,在占用总线后,可以控制和另外一台设备间进行通信过程

从设备(从模块):不能对总线进行控制,也不能提出占用请求,只能响应从注设备发出的总线命令

多个主设备同时要使用总线,由总线控制器的判优、仲裁逻辑判断哪个主设备可以使用总线。只有获得总线使用权的主设备才能传输数据。(总线判优控制是针对主设备的)

总线判优控制:两种方法

  1. 集中式:把总线判优逻辑做在一个部件上,如:放在CPU中
  • 链式查询
  • 计数器定时查询
  • 独立请求方式
  1. 分布式:逻辑发布到各个设备上

Bus Request,总线请求线BR

Bus Grant ,总线响应线BG

Bus State ,总线状态线BS

首先IO设备通过一条BR线发出请求,所以控制部件不知道是谁发出的请求。然后BG线去逐个查询是谁发出的BR,总线同意信号BG是串行地从一个IO接口到下一个IO接口。如果BG到达的接口有总线请求,那么BG就不再向下传,意味着该接口获得了总线使用权,并且建立总线忙的BS信号,表示它占用了总线。

可见,链式查询中,离总线控制部件最近的设备具有最高的优先级。这种方式的特点:只需少许的几根就能按一定优先次序实现总线控制,并且容易扩充设备。但是对电路故障很敏感,且优先级低的设备可能很难获得请求。所以链式查询这种结构通常用在微型、小型计算机

计数器定时查询,比链式查询多了一根设备地址线,少了一根同意总线BG。总线控制部件收到BR传来的请求信号后,在总线未被使用的情况下(BS=0),总线控制部件中的计数器开始计数,并通过设备地址线,向各设备发出一组地址信号。当某个请求占用总线的设备地址与计数值一致时,便获得总线使用权,此时终止计数查询。这种方式的特点是:计数起点可以任意设置,可以从0或者从上一次计数的终点开始或由程序来设置初始值(调整优先级)。这种方式对电路故障功能不如链式查询敏感,但是增加了控制线(设备地址)数,控制也比较复杂。这种要log2n + 2 根线

每台设备都有一对BR和BG,设备用总线时,便发出此设备的请求信号,总线控制部件中有一排队电路,可根据优先次序确定响应那一台设备的请求。特点:响应速度快,优先次序控制灵活(通过程序改变),但是控制线数量多,总线控制更复杂。链式查询用两根线,计数器查询Log2 n 线,独立请求要2n根。


总线通信控制

众多部件共享总线,争夺总线使用权时,按照各部件优先等级来解决。在通信时间上,则应该按照分时方式来处理,即以获得总线使用权的先后顺序分时占用总线,即哪一个部件获得使用权,此刻就由他传送。

转载于:https://my.oschina.net/u/3687912/blog/3058900

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值