计算机组织结构(十一) 总线
总线
芯片内部总线
连接芯片的各个部分
例如连接寄存器, 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 准备好, 释放等待线.
分割事务: 分割总线事务: 当设备准备好数据时释放总线
将一个总线事务分割成两个过程
优势:提高了总线利用率
缺点:增加了每个总线事务的持续时间和系统复杂性
总线带宽和数据传输率
总线带宽:总线的最大数据传输率
- 不考虑总线仲裁, 地址传送
数据传输率:
- 考虑地址传输
总线宽度:组成总线的总的线路数
- 数据线越宽, 一次传输的位数就越大
- 地址总线越宽, 可寻址的范围也就越大