总线

芯片内部总线

连接芯片的各个部分

例如连接寄存器, ALU和 CPU 的其他部分

通信总线

连接主机和 I/O 设备或者连接不同的计算机系统

系统总线

连接 CPU, 主存, I/O 控制器和其他的功能设备

内容

总线可以分为三种功能组

  • 数据线: 在系统模块之间移动数据. 数据线的数量决定了一次能能够传送的数据的最大容量

  • 地址线: 指定数据线上的数据的来源或者去向. 地址线也用于 I/O 端口的寻址. 地址线的数量决定了寻址空间的大小

  • 控制线: 控制对数据和地址线路的访问和使用.

    各种控制信号:

    • 时钟: 用于总线同步
    • 总线请求(Bus Request): 表示模块需要获得对总线的控制
    • 总线允许(Bus Grant): 表示发出请求的模块已经被允许控制总线
    • 中断请求: 表示某个中断尚未被处理
    • 中断响应: 未决的中断请求被响应
    • 存储器写: 引起总线上的数据写入被寻址的单元
    • 存储器读: 使所寻址的单元的数据放在总线上
    • I/O 读: 从 I/O 端口读取数据到总线
    • I/O 写: 将数据从总线写入到 I/O 端口

设计要素

总线类型

专用:

永久地分配给一个功能或者计算机部件的物理子集

优势:高吞吐率, 因为有更少的总线竞争

缺点: 增加了尺寸和成本

复用:

多种用途使用相同的线路

优势: 更少的线路, 节省了空间和成本

缺点: 每个模块中需要更加复杂的电路, 可能会降低共享的性能

仲裁

总线可以被多个设备监听, 但只能被一个设备发送信息

总线仲裁: 当多个设备要与总线通信的时候, 用某种策略选择一台设备

平衡:

  • 优先级: 优先级高的设备应该先得到服务
  • 公平性: 优先级最低的设备不可能永远被推迟

集中式:

一个被称为总线控制器的单独的硬件设备, 负责位总线分配时间

  • 菊花链

    所有的设备串行连接, 许可从最高优先级设备传到最低优先级设备

    若一个设备收到授权, 并且有总线请求, 设置总线忙并且许可不再被传递.

    优势: 确定优先级很容易, 添加设备很灵活

    劣势:无法兼顾公平性, 对设备故障敏感, 限制了总线速度

  • 计数器查询

    移除了总线许可线, 使用设备 ID 线.

    若总线不繁忙, 仲裁器将通过设备 ID 线发送计数, 若设备 ID 线上的 ID 与一设备 ID 相同, 同时该设备发出请求, 则将总线设为忙, 同时停止计数

    优势:对电路故障不敏感, 可以通过灵活地报数来兼顾公平和优先性

    劣势:增加了 ID 线, 需要解码和比较 ID 信号

    ps: ID 线是一组而不是一根

  • 独立请求

    每个设备都有它的总线请求和总线许可线

    当一个设备请求总线时, 它通过总线请求先向总线仲裁器发送请求信号.由仲裁器决定哪些设备可以使用总线.

    确定策略: 固定优先级, 菊花链, LRU, FIFO

    优势:响应快,无等待, 优先级很灵活

    劣势:控制逻辑复杂, 更多的控制线

分布式:

没有中央控制器, 而是在每个模块中包含访问控制逻辑, 这些模块共同作用, 分享总线.

  • 自举式

    固定优先级

    每个设备在它的总线请求线上发送请求, 最低优先级的设备没有请求线

    每个设备独立决定它是否拥有最高优先级

  • 碰撞检测

    当一个设备想要使用总线的时候, 检查总线是否为忙, 如果不忙, 使用总线.

    若发生碰撞(冲突),即两个设备发现总线不忙, 但是它们同时发起请求. 在数据传输时, 设备会监听总线, 检查是否存在碰撞, 如碰撞发生了, 所有使用总线的设备将停止数据传输, 并在随机持续一段时间后再次请求总线.

时序

总线上协调时间的方式: 决定每个总线事务的开始和结束时间

  • 同步时序: 总线上的事件的发生由时钟决定

    总线事务: 地址 + 数据 + 数据 +…+ 数据

    优势:容易实现 , 测试

    劣势: 所有的设备共享时钟; 无法避免时钟漂移的影响

    CLK 时钟, BReq 总线请求, BG 总线许可

  • 异步时序: 总线上一个事件的发生遵循并取决于前一个事件的发生

    总线事务: 地址 + 数据 + 数据 +…+ 数据

    使用 握手协议

    优势: 对速度不同的各种设备都很灵活

    劣势: 对噪声敏感; 接口逻辑复杂

    握手的样例:

  • 半同步时序: 结合同步时序(时钟)和异步时序(握手)

    为了减小噪声的影响, 在异步时序中使用时钟.时钟上升沿的就绪信号和应答信号都是有效的. 额外加一条等待线, 以协调不同速度的设备, 比如图中在第三个时钟周期时, Data1 尚未准备完毕, 所以继续等待直到 Data1 准备好, 释放等待线.

  • 分割事务: 分割总线事务: 当设备准备好数据时释放总线

    将一个总线事务分割成两个过程

    优势:提高了总线利用率

    缺点:增加了每个总线事务的持续时间和系统复杂性

总线带宽和数据传输率

总线带宽:总线的最大数据传输率

  • 不考虑总线仲裁, 地址传送

数据传输率:

  • 考虑地址传输

总线宽度:组成总线的总的线路数

  • 数据线越宽, 一次传输的位数就越大
  • 地址总线越宽, 可寻址的范围也就越大

数据传输类型