计算机组成原理:3、总线

Posted by 蔡华的博客 on September 20, 2018

概要

  • 总线(bus):是连接各个部件的信息传输线,是各个部件共享的传输介质。
  • 一条总线是总是主模块向从模块发出地址和命令,但是在分离式通信时是没有从模块的。

总线解决的是什么问题?

  • 计算机的不同模块需要用线连接起来,如果采用分散连接(两两连接)那么需要的线路太多,都设计在电路板上难度太大,而且设备的连接接口太多。
  • 分散连接还存在一个扩展困难的问题,如果新加一个接口就要将这个接口与已存在的接口相连。
  • 计算机总线使用有限的线路数量将所有的部件连接起来,解决了上面两个问题。

劣势是什么

  • 因为总线是共享的,在一个时刻只能有一对(两个)部件进行数据的传输,因此会成为系统的瓶颈。e.g IO与主存在数据传输时,CPU与主存就无法传输了。因此在传输周期上设计了分离式的传输方式,用于解决总线被占用期间出现无效的等待。
  • 总线并行传输在线路比较长时会出现信号干扰,所以一般并行都是在PC机箱内。

多总线

  • 为了解决同一时刻只能一对部件使用总线的问题,引入了多路的总线。
  • 其中一种是:以主存作为中心,一条存储总线,一条系统总线。

总线分类

  • 芯片内总线:芯片内部
  • 系统总线:计算机各部件之间的信息传输线。根据传输信号类型的不同分为:
    • 数据总线:
      • 双向;
      • 宽度通常小于等于机器字长、存储字长。
      • e.g 64位计算器,数字总线可以是8位,要进行一次64位计算,需要传输64位的数据,那么就需要传输8次。
    • 地址总线:
      • 通过地址才能找到存储单元和设备。
      • 通常单向:CPU到IO和主存;
      • 与存储地址、IO地址有关。
      • 地址总线的条数与地址单元个数相关。在本书中地址总线宽度和MAR寄存器宽度一样。
    • 控制总线:
      • 向系统各个部件传递控制信号;
      • 或者各个部件向外传递状态信号。
      • e.g : 存储器的读写、总线使用的许可、中断确认。
  • 通信总线:
    • 计算机之间或者与其它设备的连接。
    • 串行
    • 并行

总线的特效

  • 机械特性:尺寸、形状、管脚数、排列顺序
  • 电器特性:传输方向(上面的单双向),有效电平范围
  • 功能特性:地址、数据、控制
  • 时间特性:信号的时序关系

性能指标

  • 总线宽度:数据线的根数
  • 标准传输率:每秒传输的最大字节数 MBps
  • 时钟同步/异步:同步、不同步
  • 总线复用:地址线与数据线的复用,这个复用其实是共享使用。这样设计是为了减少CPU管脚数。e.g 8086CPU,20个地址线中16跟还作为数据线使用。
  • 信号线数:地址线、数据线、控制箱总和
  • 总线控制方式:突发、自动、仲裁、逻辑、计算
  • 其他指标:负载

总线结构

  • 总结结构有很多,不同的硬件的设计也不同,但是总结来看有几个原则:
    • CPU与主存之间总是有一条专门的总线,或者CPU与cache与主存之间。
    • 高速设备与低俗设备使用不同的总线。
  • 四总线结构

四总线结构

总线占有控制

  • 前面说了总线在同一时刻只能由一对部件来使用,那么当多个部件同时请求使用时是如何来控制的呢?这个就是总线判优的问题了。
  • 总线判优有两种主要方式集中式和分布式。集中式只指优先度是总线控制部件来决定的,它分为三种方式:
    • 链式查询方式
    • 计数器定时查询
    • 独立请求方式

链式查询方式

链式查询

  • 链式查询实际上是从接口0开始逐个的去询问是谁申请了总线的使用。如果1和N都申请了,但是因为先询问的1所以1就会占有总线。
  • 优先级由接口的顺序来决定,比较死板。
  • 弊端是如果BG上有线路的损坏后续就询问就无法继续了。

计数器定时查询

计数器定时查询

  • 总线控制器中有个计数器
  • 多了一条设备地址,这条线是用来将计数器的值向外输出的。
  • 当有多个IO接口申请总线时走的还是BR,总线控制器收到申请后如果判断可以交出总线的权限就会将当前的计数器的值通过设备地址线传递出去。
  • e.g 一开始计数器的值是0,当1和N申请总线时,就会对IO接口0进行查询是否申请了。如果IO接口0没有申请,那么计数器+1,然后开始对接口1进行查询。
  • 这种方式的优势:因为计数器是可以设置的,所以优先级是可以设定的。
  • 设备地址线宽度与设备数量相关

独立请求方式

独立请求方式

  • 这个方式在效率上是最高的,因为每个部件都有自己的BR,因此总线控制器在同意后可以很明确的用BG来返回。
  • 缺点是线路太多

总线通信

  • 总线在一段时间内被一对主从设备占用,总线通信的目的是为了解决通信双方协调配合问题。

总线传输周期

  • 申请分配阶段:主模块申请,总线仲裁决定
  • 寻址阶段:主模块通过地址找到从模块,并给出命令。
  • 传数阶段:主模块和从模块数据交换。
  • 结束阶段:主、从模块撤销相关信息。

总线通信的方式

同步通信:
  • 由统一定宽定距的时标控制数据传输,主从模块强制同步,在同一个时限内完成规定的操作。
  • 对于速度不同的模块要选择速度最慢的模块作为统一的时标,对于高速模块来说没有发挥它的作用。
  • 同步通信的使用场景是总线比较短,并且各个模块存取时间比较一致的情况。
  • 下面举例说明一下同步式的数据读取(输入)

同步通信输入

  • T1时钟上升沿主设备CPU要给出地址信号
  • T2时钟上升沿要给出读命令信号,告诉从设备CPU要读取数据
  • T3时钟上升沿之前从设备要给出数据信号
  • T4时钟上升沿之前数据信号和读信号(控制信号) 撤销
  • T4结束地址信号撤销
  • NOTE:上图中每一行的空白区域是对应的信号的存在时间
异步通信:
  • 采用应答方式,没有公共时钟标准。
  • 在通信控制过程中分为不互锁、半互锁和全互锁。
  • 按照下图所展示的进行说明:

异步通信

  • 不互锁:指的是主设备发出请求信号后从设备发应答信号,然后主设备和从设备依次退出信号。过程中主设备不管是否接收到了应答信号,经过一定延迟后都会撤销请求信号,而从设备也不管主设备是否接受到了应答信号,经过一段时间后就撤销信号。

  • 半互锁:主设备发出请求信号,从设备发应答信号。区别在于主设备的请求信号只有在收到应答信号后才撤销,而从设备仍旧经过一段时间后就撤销了信号。造成的问题就是可能从设备一直不回复,那么主设备就一直等待。

  • 全互锁:本质和TCP三次握手一样。主设备发请求、从设备应答,主设备只有收到应答后才撤销,而从设备只有请求信号撤销后才撤销应答信号。在传输期间发生错误的话,主设备可以要求从设备重新发送或者接受数据。

半同步通信:
  • 同步异步结合,解决两个不同速度的设备交换数据。
  • 同步方面:发送方用系统时钟前沿发信号,接收方用系统时钟后沿判断、识别。
  • 异步方面:运行不同速度的模块和谐工作,增加一条“等待”响应信号”WAIT”,信号线。

半同步通信

  • 从上图可以看出前面在T1和T2都和同步通信是一致的,但是在T3前,如果从设备没有能够准备好数据的传输那么久会发出TW信号。主设备检查到TW存在时就会等待一个时钟周期,然后每过一个时钟周期就检查一下TW是否在低位。知道从设备准备好数据传输了,然后TW变成高电位。然后就继续T3、T4。
前三种小总结
  • 主模块发地址、命令→占用总线
  • 从模块准备数据→不占用总线,总线空闲
  • 从模块想主模块发数据→占用总线
  • 在准备数据时是有总线浪费的,所以有了分离式的通信。
分离式通信:
  • 充分挖掘系统总线每个瞬间的潜力。
  • 本质上分离式通信是讲一个原来的总线传输周期分割成多个子周期
    • 子周期1:主模块申请占用总线,使用完后放弃总线控制权
    • 子周期2:从模块申请占用总线,讲各种信息送到总线上
  • 特点:
    • 各模块都有权申请占用总线,所以都是主模块。
    • 采用同步方式通信,不等对方回答。
    • 各模块准备数据时不占用总线
    • 总线被占用时无空闲(这不是废话么)

延伸阅读

总线频率

1.主频:主频也叫时钟频率,单位是MHz,用来表示CPU的运算速度。主频由外频和倍频决定,其计算公式 为 主频=外频 * 倍频。外频就是系统总线的工作频率;而倍频则是指CPU外频与主频相差的倍数。如 Intel Pentium4 3.06GHz处理器的外频为133,倍频23,则主频=133*23=3.06Ghz

2.外频:外频是CPU的基准频率,单位也是MHz。外频是CPU与主板之间同步运行的速度,而且目前的绝大 部分电脑系统中,外频也是内存与主板之间的同步运行的速度,在这种方式下,可以理解为CPU的外频直接 与内存相连通,实现两者间的同步运行状态。

3.前端总线:前端总线频率直接影响CPU与内存直接数据的交换速度。由于数据传输最大带宽取决于所有同 时传输的数据的宽度和传输频率,即数据传输量=(总线频率数据带宽)/8。外频与前端总线频率的区别: 前端总线的速度指的是数据传输的速度,外频是CPU与主板之间同步运行的速度。比如说,100MHz外频特 指数字脉冲信号在每秒钟震荡一千万次:而100MHz前端总线指的是每秒钟CPU可接受的数据传输量是 100MHz64bit/(8Byte/bit)=800MB/s。

4.倍频系数:倍频系数是指CPU主频与外频之间的相对比例关系。在相同的外频下,倍频越高CPU的频率也 越高。但实际上,在相同外频的前提下,倍频高的CPU本身意义并不大。这是因为CPU与系统之间数据传 输速度是有限的,一味追求高倍频而得到高主频的CPU就会出现明显的“瓶颈”效应——CPU从系统得到数据 的极限速度不能满足CPU运算的速度。

5.内存总线速度:CPU处理的数据来自存储器,而主存储器就是内存。一般放在外存(磁盘或者各种存储介 质)上面的数据都要通过内存,再进入CPU进行处理。所以CPU与内存之间的通道的内存总线速度对整个 系统性能就显得很重要。由于内存和CPU之间的运行速度或多或少会有差异,因此便出现了二级缓存,来协 调两者之间的差异,而内存总线速度就是指CPU与二级高速缓存和内存之间的通信速度。

6.扩展总线速度:扩展总线指的是安装在计算机系统上的局部总线如VESA或PCI总线,我们打开电脑的时候 会看见一些插槽般的东西,这些就是扩展槽,而扩展总线就是CPU联系这些外部设备的桥梁。

时钟周期

时钟周期也称为振荡周期,定义为时钟频率的倒数。时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。时钟周期是一个时间的量。时钟周期表示了SDRAM所能运行的最高频率。更小的时钟周期就意味着更高的工作频率。

参考

  • https://blog.csdn.net/commandow/article/details/5844617
  • https://baike.baidu.com/item/%E6%97%B6%E9%92%9F%E5%91%A8%E6%9C%9F