系统总线

0x00.总线的基本概念

为什么要使用总线

早期计算机使用的分散连接方法使用了太多的线,使得计算机结构非常乱且体积非常大,而且不利于扩展。
于是就有了总线。

什么是总线

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

在任何时刻,只能有一对设备/部件使用总线。

总线上信息的传输

  • 串行:通常传输距离比较长,传输效率
  • 并行(多条数据线):通常传输距离比较短(如果距离过长,数据线之间不再平行,会产生干扰,导致传输信号变形)

资源路径有问题

并行传输最好的例子就是存储芯片DDR,它是有一组数据线D0—D7,加DQS,DQM,这一组线是一起传输的,无论哪位产生错误,数据都不会正确的传送过去,只有重新传输。所以数据线每根线要等长,必须得绕几下才行。

串行数据就不一样,数据是一位一位的传,位与位之间是没有联系的。不会因为这位有错误,使下一位不能传输。并行数据是一组数据其中一位不对,整组数据都不行。

总线结构

单总线结构框架图

资源路径有问题

如前面所说,每一个时刻只能有一对设备使用总线,故单总线结构非常不合理,当我们输入输出给主存的时候,CPU就不能工作,CPU效率非常低。

于是就有了面向CPU的双总线结构

双总线结构框架图(面向心脏——CPU)

资源路径有问题

当外部设备和主存进行信息传输的话,CPU的计算任务/执行程序,还是会被打断。

于是又有了面向存储器的双总线结构

双总线结构框架图(面向存储器)

资源路径有问题

它是在单总线结构的基础上又开辟出的一条CPU与主存之间的总线,称为存储总线。这组总线速度高,只供主存与CPU之间传输信息。这样既提高了传输效率,又减轻了系统总线的负担,还保留了I/O设备与存储器交换信息时不经过CPU的特点。

但是就现代技术而言,其实双口存储器给两个端口发数据的时候,还是分时来做的,也就是说,其实这两个总线并不能同时为存储器工作,至于主要的优越性体现在哪里,我已经去问知乎了…………

0x01.总线的分类与结构

总线的分类

按数据传输方式划分

  1. 并行传输总线
  2. 串行传输总线

    按连接部件划分

  • 片内总线:芯片内部的总线
  • 系统总线:计算机各部件之间的信息传输线,按照传输信息的不同,又可以分为三类:
    • 数据总线:双向 与机器字长、存储字长有关,传输数据信息
    • 地址总线:单向 与存储地址、I/O地址有关,指出数据总线上的源数据在主存单元的地址或I/O设备的地址。
    • 控制总线:有出(存储器读、存储器写,总线允许、中断确认) 有入 (中断请求、总线请求)
  • 通信总线:用于计算机系统之间或计算机系统与其他系统(如控制仪表、移动通信等)之间的通信

总线特性及性能指标

打开计算机,你会看到一个很大的印刷电路板,这块电路板上面会看见总线,总线上有接口,让计算机其他部件或者模块来连接。

总线特性:

  1. 机械特性:尺寸、形状、管脚数、排列顺序
  2. 电气特性:传输方向、有效的电平范围
  3. 功能特性:每根传输线的功能——地址/数据/控制
  4. 时间特性:信号的时序关系

    总线的性能指标

  5. 总线宽度:数据线的根数(数据线的根数越多,同时传输的位数越多)
  6. 标准传输率(总线带宽):每秒传输的最大字节数(MBps-兆字节每秒)
  7. 时钟同步/异步:同步、不同步
  8. 总线复用:地址线和数据线复用
  9. 信号线数:地址线、数据线、控制线总和
  10. 总线控制方式:突发、自动、仲裁、逻辑、计数
  11. 其他指标:负载能力

总线标准

因为计算机各个部件可能来自不同企业,要想让最后各个部件可以正确的连接起来,这就需要遵循一套标准。

资源路径有问题

多总线结构

上面我们了解了一下经典单总线结构、面向CPU/存储器的双总线结构,现在再来了解一下其他多总线结构:

双总线结构

资源路径有问题

三总线结构

资源路径有问题

高速设备可以直接通过DMA总线与内存进行信息交换。
低速设备的话依然要通过I/O总线

三总线结构的又一种形式

资源路径有问题

因为CPU的高速发展与内存的平稳发展,现代计算机都设有cache缓存,这个总线结构很好地安排了这种架构,并且局部总线中设有局部I/O控制器,可以允许高速的I/O设备。

不过多种不同速度的设备都连接到了扩展总线上,这会影响外部速度。

四总线结构

资源路径有问题

高速设备就连接到了高速总线上,低速设备放到了扩展总线上,这样整体数据传输的速率会更高。

0x02.总线控制

总线判优控制

基本概念

  • 主设备(模块):对总线有控制权
  • 从设备(模块):响应从主设备发来的总线命令

总线判优控制:

  • 集中式:总线的判优逻辑在一个部件上,例如在CPU当中
    • 链式查询
    • 计数器定时查询
    • 独立请求方式
  • 分布式:判优逻辑分布到各个设备或者各个设备的端口上。

集中式的链式查询方式

资源路径有问题

当有I/O设备发出总线控制请求,会通过BR线告诉总线控制部件,然后总线控制部件会通过BG线逐个去查询哪一个I/O设备发出的控制请求。
遇到那个提出控制请求的I/O设备后,这个I/O设备就会获得总线控制权,并且利用BS线去告诉其他I/O设备“总先忙!”。

设备的优先级和相对位置有关,排在后面的I/O设备可能永远也不会得到控制权。

另外,这种结构对电路故障特别敏感,一个小部分出现了问题的话,后面的设备可能永远也访问不到了。

优点:结构简单、增删设备非常容易、进行可靠性设计的时候比较容易实现。

一般用在微型计算机或者简单的嵌入式设备中。

集中式的计数器定时查询方式

资源路径有问题

总线控制部件中有一个计数器(初值可以是零或者其他),如果某一个主设备请求占用总线根某一个从设备进行数据传输。
那么,它通过BR线向总线控制设备提出总线控制请求,总线控制部件如果允许他们传输,就会启动计数器,计数器的值通过设备地址这条线向外进行输出,如果计数器是0,他就会去查看是否I/O设备0提出了占用请求,如果没有则计数器加1,然后继续往后。当找到主设备后,主设备会发出响应,通过BS线告诉总线控制部件该设备被选中。

相比于链式查询方式,这种方式我们可以通过调整计数器来自由安排优先级次序。

链式查询和计数器定时查询方式都是一种按顺序的查询

集中式的独立请求方式

资源路径有问题

每个设备都和总线控制部件有BR和BG,在总线控制部件内部存在一个排队器,这样优先级的排列就非常灵活,可以在排队器中定好优先级,或者混合,或者循环。

总线通信控制

目的

解决通信双方(主设备-从设备)协调配合问题

总线传输周期

  1. 申请分配调用
    主模块申请,总线仲裁决定
  2. 寻址阶段
    主模块向从模块给出地址和命令
  3. 传数阶段
    主模块和从模块交换数据
  4. 结束阶段
    主模块撤销有关信息,从模块也撤销

总线通信的四种方式

  1. 同步通信:由统一时标控制数据传送

资源路径有问题

上例所示,总线传输周期我们分成了四个时间段。
在T1的时钟上升沿(T1最左边),主设备必须要给出地址信号。
在第二个周期的上升沿(T2最左边),必须给出读命令信号(低电平有效);告诉从设备:主设备要从从设备读入数据。
在第三个时钟周期的上升沿,从设备必须要通过数据总线给出数据信号。
在第四个时钟周期的上升沿,读信号和数据信号就可以撤销了
在第四个时钟周期结束的时候,地址信号就也撤销了。

同步数据输入特点:必须要有定宽定距的时钟来控制整个数据传输的过程。

同步式数据输出也是同样同样的道理
资源路径有问题

同步式数据传输一般用于总线长度比较短、各个模块存取时间比较一致的情况下。

  1. 异步通信:采用应答方式,没有公共时钟标准

    资源路径有问题

不互锁:主设备不管是否收到应答信号,一段延时后都会撤销请求信号;从设备也不管是否主设备收到应答信号,一段延时后自己也会撤销应答信号。

半互锁:主设备发送请求,从设备应答,当主设备收到应答信号,才会撤销请求信号。如果接收不到,请求会一直保持。而从设备不管主设备有没有收到应答信号,只要它发出了应答信号,一段延时后从设备就会撤销自己的应答信号(故半互锁有可能造成请求信号一直保持高电平)。

全互锁:主设备发出请求,从设备接到请求以后发出应答信号,主设备接到应答信号后撤销请求信号,主设备撤销请求后会告诉从设备,这时从设备才会撤销自己的应答信号。

  1. 半同步通信:同步、异步结合
  • 同步
    • 发送方用系统时钟前沿发信号
    • 接收方用系统时钟后沿判断、识别
  • 异步
    • 允许不同速度的模块和谐工作
    • 增加一条“等待”响应信号 WAIT

资源路径有问题
在同步通信的基础上,增加了以“等待信号”,当 WAIT置于低电平的时候(即从设备还没有准备好传输数据),主设备会进入等待中(Tw周期),直到WAIT恢复之后才会继续。

相比于同步控制通信,这样可以有效避免设备间存取速度不同产生的错误。

  1. 分离式通信:充分挖掘系统总线每一瞬间的潜力

    上述三种通信的共同点:

    1. 主模块发地址、命令(占用总线)
    2. 从模块准备数据(不占用总线)
    3. 从模块向主模块发数据(占用总线)
      在从模块准备数据的时候是一个空闲期,这个时间段对总线资源是一种浪费,于是我们就产生了分离式通信。

一个总线传输周期被分成了两个子周期:

  • 子周期1:主模块申请占用总线,使用完后立即放弃总线使用权
  • 子周期2:从设备申请占用总线,将各种信息送到总线上(这个时候,从模块已经变成了新的主模块)

如此一来,总线就让出了那段空闲时间。

分离式通信的特点:

  1. 各模块有权申请占用总线
  2. 采用同步方式通信,不等对方回答
欢迎请我喝奶茶(*゜ェ゜*)
---这篇文章到头了---感谢您的阅读-------------