总线类型、仲裁、带宽、传输速率、层次结构

# Lecture13 - 总线

# 类型

image-20221129164542001

image-20221129164549696

系统总线 - io 控制器

通信总线 - io 设备

地址线和数据线可以复用

# 总线结构

image-20221129164619373

image-20221129164628381

image-20221129164646312

# 设计要素

image-20221129163100682

# 用途

image-20221129163132214

专用总线: “或”

# 仲裁

image-20221129163146357

# 集中式

image-20221129163331416

# 链式查询

image-20221129163345822

橙色 “繁忙” 的是双向箭头

在总线不忙的时候,才能发起请求,但是一个时钟周期内可能有多个设备发起请求。

总线仲裁器在总线不忙的时候,才能发起允许信号。

设备 1 优先级最高,设备 N 优先级最低。

image-20221129163403728

不能保证公平性 —— 设备 N 很难拿到允许信号

对电路故障敏感 —— 后面的设备无法判断是前面的设备想使用,还是前面的设备坏了。之前的设备坏了,后面的电路都无法使用。

限制总线的速度 —— 平均要等待 n 2 / 2 的时间

# 计数器查询

image-20221129163732251

与 “链式查询” 相比,绿色(串联的线)变成一条总线。

报到自己的 ID 则可以占用。

image-20221129163749814

# 独立请求

image-20221129163827636

每个设备都有允许线和请求线。

只要总线不繁忙,想要请求就可以请求,每个设备没有无谓的等待的时间。

image-20221129163837822

# 分布式

image-20221129163337594

# 自举式

image-20221129162852324

自举式(自主选举式)

向上的箭头 —— 表达自己想要用的请求

向下的箭头 —— 接受优先级更高的设备是否有想用的请求

设备 3 的优先级最高

设备 0 的优先级最低,没有请求线,没有优先级更低的设备去监听请求

# 冲突检测

image-20221129163853249

只要总线空闲,就立刻请求

"随机时间间隔"

# 时序

image-20221129164021701

离散事件、系统动力

同步时序、异步时序、半同步是一类,分离事务是另外一个

同步时序:时钟周期

异步时序:事务的相对顺序

# 同步时序

image-20221129164211629

约定好,第一个时刻取地址,第二个时刻取数据,etc……

快的迁就慢的

# 异步时序

image-20221130000246383

Ready: 你可以来拿了

Ack: 我已经拿好了

都有上升沿和下降沿(在总线上放好了,撤好了)

非互锁 —— 仅表示前后顺序

半互锁 ——Ack 上升,Ready 才可以撤,可以防止 Ready 提前撤,Ready 持续等

全互锁 —— 防止 Ack 先撤,Ready 没接收到持续等

image-20221129165308456

有两根 ready 线,ReadReq 和 DataRdy

1 CPU 告诉存储器,地址已经准备好

2 存储器告诉 CPU,已经读取完毕

3 CPU 收到读取完毕信号,释放 Ready

4 存储器收到释放完毕的信号,释放 Ack

5 存储器告诉 CPU,数据已经准备好

6 CPU 告诉存储器,数据已经读取完毕

7 存储器释放 Ready 信号

8 CPU 释放 Ack 信号

image-20221129165321583

# 半同步时序

image-20221129171706250

发生在时钟上升沿才认为是有效的

# 分离事务

image-20221129171714657

中间过程释放给其他设备使用,数据需要准备时间,数据准备好再请求。

# 总线带宽和数据传输速率

image-20221129171725186

区分总线带宽和数据传输速率

总线带宽更偏向于理想状态

数据传输速率偏向于实际状态(一般求的是数据传输速率)

# 例题

image-20221129171825254

image-20221129172040507

5 的时候,如果数据准备不好,那么就不能如期进行数据传输

image-20221129172437848

同步总线需要使用整数倍的时钟周期

image-20221129172451555

每次传输,一个地址。

64 位宽 —— 每次可以传输两个字

4 同步读取 并且 cache 降低

200MHz 时钟频率 ——5ns 时钟周期

image-20221129172817342

image-20221129172827388

image-20221129172907110

要么提高数据量,要么减少所耗费的时间

块传输 —— 减少地址时间,减少后面的数据的访问时间

分离总线事务 —— 一个事务分成两个过程,中间的过程让别的事务来,节省数据准备的时间

分离地址线和数据线 —— 原先是地址和数据分别传输,现在地址和数据可以同时传输

# 总线层次结构

# 单总线结构

image-20221129172920605

车越多,路越堵

# 双总线结构 I

image-20221129172929509

增加存储器总线

CPU 和存储器的传输占很大的一部分负担

# 双总线结构 II

image-20221129172936750

增加 IO 总线和 IOP

# 多总线结构 I

image-20221129172945516

# 多总线结构 II

image-20221129172953025

DMA 总线 (IO 部分会讲)

image-20221129173001369

# 总结

image-20221129173013477