总线是连接各个部件的信息传输线,是各个部件共享的传输介质。(如果没有总线,那么每新增一个组件,就需要增加若干线和其余组件相连)
在任何一个时刻,只能有一对设备(固件)使用总线,其余设备若想要使用则需要等待总线释放。(可拓展性强)
串行(要传输的信息一位一位放到总线,接收方也是一位一位接收)
并行(要传输的数据多位同时放到总线,接收方也同时接收多位数据)需要多条数据线进行传输。如果传输距离长,数据线平行向外走,线和线之间会干扰,传输信号会变形,接收方很难接收到正确数据。通常并行传输距离短,集中在计算机机箱内部。
(假如主存和某一I/O设备在传输,那么CPU和主存之间就无法利用总线传输)
这里说的计数器是???
cpu运行程序时指令和数据都来自主存,两者信息交换非常繁忙。
这种处理方式弊端是主存和I/O设备没有直接信息通路。
但是现在存储总线和系统总线依然不能同时工作。
1.双总线结构
此处通道具有特殊功能的处理器,由通道对I/O统一处理(通道有自己的控制器和指令系统。能执行通道指令和通道程序)
2.三总线结构
dma:外部设备直接访问系统内存
高速设备和主存信息交换用的DMA总线,低速设备依然使用I/O总线。
3.三总线结构的又一形式
cpu性能提高每年52%,内存每十年才会提升。内存速度是瓶颈。
小容量高速度cache,对主存数据进行缓存。cpu运行的指令和数据主要来自cache。
多种速度类型设备都连接到扩展总线上,会影响外部设备工作速度。
4.四总线结构
桥扩展出高速总线,低速设备连接到扩展总线上。
1.传统微型机总线结构
2. VL_BUS局部总线结构
VL_BUS是一条高速总线
3.PCI总线结构
4.多层PCI总线结构
如果连接设备比较多,总线驱动能力不够,可通过PCI桥拓展。
总线判优控制? 多个设备同时向总线发出占用总线请求,选择哪个设备使用总线?
占用总线后如何完成通讯过程,保证通讯过程正确性?
1.基本概念
总线判优控制
链式查询方式
BR:所有部件都是通过一条线提出的总线请求,不知道哪个设备优先权更高。
BG:逐个查询。各个设备优先级和BG查询顺序有关。(对电路故障特别敏感,出现故障会无法向下传。速度慢,需要一直向下查询。但是该结构简单)
定时器定时查询方式
设备地址:地址由计数器给出。
也是先从接口0开始查询,若接口0无请求,计数器会加1。
计数器的启动值可以配置,比如配置为上一次停止计数值开始,则变成了循环优先级。
设备地址线位宽和外部设备数量有关。
独立请求方式
上面都是按顺序查找,
排队器:可预先设备优先级。还可以自适应优先级,重要设备给与高优先级。
1.目的 解决通信双方协调配合问题
2.总线传输周期 主设备和从设备完成一次完整可靠的传输所需时间。
3.总线通信的四种方式
(1)同步式数据输入
固定时间点给出固定操作
t1时钟上升沿,必须给出地址信号。t2时钟上升沿,必须给出读命令信号。t3时钟上升沿之前,从设备必须给出数据信号。t4时钟周期上升沿,数据信号和控制信号撤销。
(2)同步式数据输出
强制同步,对多个不同的速度模块,必须选择速度最慢的模块作为统一时标。
(3)异步通信
和同步相比,不用定宽时标,增加了两条线。
主设备发出通信请求,从设备接收到通信请求后进行应答。之后主、从设备撤销请求、应答。在该过程中,主设备不管是否接收到应答信号,一段延时后都会撤销请求信号。从设备不管主设备是否接收到应答信号,都会撤销应答信号。(不互锁,通信可靠性有问题)
主设备发出通信请求,从设备接收到请求后,发出应答信号。主设备接收到应答信号后,撤销请求。如果接收不到,请求保持。 但是从设备不管总设备是否接收到应答信号。一段时间后都会撤销应答信号(半互锁,有可能导致请求信号一直保持)
主设备发出通信请求,从设备接收到请求后,发出应答信号。主设备接收到应答信号后,才会撤销请求。只有主设备请求撤销以后,从设备才会撤销自己的应答信号。 (全互锁)
(4)半同步通信(同步、异步结合)
同步 发送方用系统时钟前沿发信号
接收方用系统时钟后沿判断识别
异步 允许不同速度的模块和谐工作
增加一条“等待”响应信号 ~wait
以输入数据为例的半同步通信时序
t1 主模块发地址
t2 主模块发命令
tw 当~wait为低电平时,等待一个t (t3到来前,从模块发出wait信号。主设备如果检测到wait信号为低电平,就会插入一个t,等待wait信号。重复检测)
。。。。
(如cpu和主存之间,cpu速度快于主存,t3之前从模块无法提供数据)
t3上升沿到来之前,从模块必须提供数据
t4从模块撤销数据,主模块撤销命令
允许不同设备的主从设备进行交互。
以上三种通信的共同点
一个总线传输周期(以输入数据为例)
(5)分离式通信
充分挖掘系统总线每一个瞬间的潜力
一个总线传输周期
主模块可以变成从模块
分离式通信特点