类型
- 芯片内部总线:连接芯片内部的各个部分
- 例:CPU中连接寄存器、ALU等部分
- 系统总线:连接CPU、存储器、IO控制器和其他功能设备
- 通信总线:连接主机和IO设备(打印机、硬盘),或连接不同的计算机系统
总线上数据传输的特点
• 总线可以被多个设备监听,但同一时刻只能由一个设备发送数据
• 如果同一时刻多个设备同时发送数据,会造成数据之间的混淆
• 使用总线进行数据传输
• 如果连在总线上的某个设备希望向另一个设备发送数据,需要:
• 获得总线的使用权
• 通过总线传送数据
• 如果连在总线上的某个设备希望向另一个组件请求数据,需要:
• 获得总线的使用权
• 通过总线向另一个设备发送请求,等待另一个设备发送数据
• 当总线在被使用过程中,其它设备不可以抢占
设计要素
用途
专用(dedicated)总线:始终只负责一项功能,或始终分配给
特定的计算机组件
- 优点:高吞吐量,减少总线冲突
- 缺点:增加了系统的规模和成本
复用(multiplexed)总线:将同一线路用于多种用途
(地址线和数据线可以复用)
- 优点:使用的布线数量少,节省空间和成本
- 缺点:每个模块需要更复杂的控制电路,且共享可能会降低性能
仲裁
链式查询
- 所有的设备都是串行连接的,并将允许信号从优先级最高的设备下发到优先级最低的设备
- 总线仲裁器收到请求后,在总线不忙的前提下,发起允许信号
- 如果某个设备收到了允许信号并且发起了总线请求,该设备将总线设置为繁忙状态,允许信号将不再被进一步传递
计数器查询
独立请求
自举式
- 设备3优先级最高:不需要关心其他设备的请求。向上的红色线:发出的请求,向下的红色线:监听设备3的请求
- 设备3通过红线向BR3发出请求,告诉其他设备我要使用总线
BR0
了。然后再通过蓝线向BR0
传送数据 - 设备0发出请求不会被监听,所以不需要额外发请求
冲突检测
- 直接进入传输阶段,进行请求
- 请求冲突了,就停止
- 随机间隔后,再次请求:此处请求指判断总线是否繁忙,而不是请求线
时序
- 同步时序:有时间刻度的 – 系统动力学
- 异步时序:离散事件仿真,不关心时间,只关心顺序。需要触发下一个事件
同步时序
时间越长,时钟的偏差越大,因此总线长度不能过长
异步时序
注意上升沿和下降沿:
- 上升沿:表示该信号占用了总线。ready信号上升,表示进入了ready状态了。ack信号上升,表示已经确认完毕了
- 下降沿:表示该信号从总线上撤离。ready信号撤回,为下一次进入ready状态做准备。ack信号下降,表示对方已经收到了确认,可以从总线上撤回了
- 用三次握手完成地址传输:从CPU传输给存储器
- 使用步骤4来实现地址必须在数据之前传送完成 的规定
- 用三次握手完成数据传输 :从存储器传输给CPU
- 地址线和数据线复用在
Data
线上
半同步时序
上升沿:向上的间隙
可以迁就快的
分离事务
总线带宽和数据传输速率
- 总线带宽:理论上的最大值
- 数据传输速率:考虑现实因素
- 总线宽度:和时间无关
例题1
例题2
- 同步时序:需要是时钟周期的整数倍
例题3
总线事务:分为传输地址和传输数据
如果准备时间不是时钟周期的整数倍,则需要调整为时钟周期的k倍
提高数据传输率
总线层次结构
单总线结构
双总线结构1
双总线结构2
多总线结构1
多总线结构2
多总线结构3
高速IO设备直接和总线相连,多个低速IO设备连接作为一个高速IO设备
高速IO设备和总线相连时有自己的DMADirect Memory Access