计组-理论-总线和IO
总线
总线的概念
计算机部件的连接方式:分散连接->总线连接
总线:连接多个功能部件的一组公共的信号传输线。通过总线,计算机在各部件之间实现地址、数据和控制信息的交换
- 连接多个部件的信息传输线,多个部件共享的传输介质
- 为了避免冲突,在一个时刻只允许有一个部件向总线发送信息,其他多个部件可以同接收
总线实际上是由许多传输线组成,每条线可传输一位二进制码,一串二进制码在一段时间内注意传输。要传输多位宽信息则需要用若干条传输线同时传输
特征
机械特性:机械连接方式,如几何尺寸、引脚数量、插头标准
电气特性:信号传输方向、有效电平、电平逻辑(正逻辑、负逻辑)等
功能特性:信号功能定义
时间特性:信号之间的时序关系
设计要素/性能指标
总线的设计要素:
类型:专用/复用;地址总线和数据总线是否复用
仲裁方式:集中式/分布式
时序:同步/异步方式;总线上的数据与时钟同步工作的总线为同步总线,与时钟异步的为总线为异步总线
总线宽度:位宽
标准传输速率:每秒传输的最大字节数
信号线数:所有信号线的总数
总线的分类
片内总线:芯片内连接各元件的总线,如CPU内各寄存器、寄存器与ALU之间传递信息的公共通道
系统总线:CPU、主存、IO部件之间传递信息的公共通道。一般分为数据总线、地址总线和控制总线三部分
- 数据总线:传递数据
- 地址总线:传递存储器地址和IO地址
- 控制总线:
- 数据传输控制信号:存储器读写控制信号、IO读写控制信号、应答信号
- 总线请求和交换信号:总线请求、总线允许、终端请求与响应信号等
- 其他控制信号:时钟、复位、电源线
通信总线:用于计算机系统之间或计算机系统与其他系统之间的通信
总线的通信过程
总线的一次信息传送过程,需要以下五个阶段:
- 请求总线:由需要使用总线的部件或设别提出总线使用请求
- 总线仲裁:仲裁器决定下一传输周期的总线使用权是否授予该部件或设备
- 寻址 : 获得总线使用权的部件或设备,发出地址和有关命令
- 信息传送:进行数据传输
- 状态返回:该部件或设备有关信息从总线上撤除,让出总线使用权
通信的仲裁/控制方式
由于总线在一时刻只能有唯一的信息发送者,所以要对谁能发送信息进行决策,即总线同行的仲裁
总线仲裁的策略:优先级或公平
分布式的孔氏方式:总线仲裁逻辑分散在与总线连接的各部件上
集中式的控制方式: 总线仲裁逻辑集中在一处(如在 CPU 中)
-
链式查询控制方式:总线控制器/仲裁其收到总线申请BR,总线同意信号逐级往下传。如果遇到某个接口提出申请,则允许该接口的申请,BG停止往下传递,同时建立总线忙信号BG
-
优点:所需要的线少、易扩充
-
缺点:优先级固定:离总线控制器近的优先级搞、故障敏感
-
-
计数器定时查询方式:总线控制器收到BR后,计数器开始计数,若某个总线申请的设备地址(设备地址是简单化后的)和计数器一致,则获得总线使用权,建立BS
-
优点:优先级灵活
-
缺点:线多
-
-
独立请求方式:每个设备有独立的请求信号和总线同意信号,总线控制器根据设备的优先级觉得将总线的使用权给哪个设备
-
优点:响应快、优先级灵活、请求可屏蔽
-
缺点:线多.
-
-
自举分布式仲裁方式:不需要集中的总线仲裁器,每个设别的优先级固定,根据优先级使用总线。即每个设备判断当先总线的是否忙和有申请情况下的优先级,只有总线空闲且自身优先级最高,才获得总线使用权
通信控制方式
为协调通信双方,需要进行通信控制,常见的有同步通信控制和异步通信控制两种
同步通信控制
数据传输在一个统一的时钟信号的控制下进行
异步通信控制
不需要统一的公共时钟信号,也因而没有固定的时钟周期
采用应答方式完成数据传输:你知道我知道了吗,你知道我知道你知道了吗。理论上多少次握手都不够:你知不知道我知道你知道了我知道你知道…
有全锁、半互锁和不互锁三种方式
IO
基本概念
外部设备的种类是无穷的,而计算机的资源是有限的,因而设计了IO接口:外部设备并不直接挂接在系统总线上,而是通过IO接口为桥实现与系统总线的连接
- 各种外设使用不同的操作方法,由 CPU 来直接控制不同的外设不切实际
- 外设的数据传送速度比存储器和处理器的速度慢得多,使用高速的系统总线与慢速的外设直接连接,不切实际
- 外设经常使用与处理器不同的数据格式和字长度
IO的功能
IO接口的功能有:
- 识别IO地址,即地址译码
- 实现主机与IO设备的数据交换、控制命令的传递、状态检测与传递
- 提供缓冲、暂存、驱动能力
- 进行数据格式、类型方面的转换:串并行转换,电平转换等
- 支持一定的IO方式:程序查询、程序中断、 DMA 等
- IO 控制与定时
IO接口的分类
按传送数据格式:串行接口,并行接口
- 串行接口:适合速度低、传输距离长的环境
- 并行接口:适合速度高、传输距离短的环境
按IO方式:程序查询接口、中断接口、DMA 接口、通道控制接口
按时序控制方式:同步接口、异步接口
- 同步接口:数据传送由一个统一的时钟信号同步控制
- 异步接口:数据传送采用异步应答方式控制
IO操作的过程
- CPU 查询IO接口状态,以 检查其连接设备的状态
- IO 接口回送设备 状态给 CPU
- 如果设备状态显示设备 可用,并准备好,CPU 向IO接口发出命令,请求传送
- IO 接口获得来自外设的数据(字或字节)
- 数据从IO接口传送至 CPU
IO地址译码
IO地址:实际上是IO接口电路中寄存器的位置
编址方式:独立编址方式和统一编址方式
- 独立编址方式: 存储器地址与IO地址分开,CPU 具有专用的IO指令,系统总线中具有区别存储器读写和 IO操作的控制信号,并以此区别地址总线上的地址是存储器地址还是IO地址
- 统一编址方式: 存储器地址与IO地址统一考虑,地址空间的一部分是存储器,另一部分是IO。支持存储器操作的指令都可用于IO操作。访问IO部分的地址时需要特殊操作,需要桥进行对应
通过IO即实现桥的功能,当进行读IO操作/访问IO对应的地址时,进行IO的读写操作,由IO统一管理与外部的数据交换
进行IO操作的方式
主要有程序查询、中断、DMA三种方式进行IO数据传送
程序查询IO的方式
IO与主机信息交换的控制方式主要有4种:程序查询方式、程序中断方式、直接内存访问(DMA)和通道方式
IO接口设置响应的状态寄存器以表示外部设备的工作状态,CPU不断读取状态寄存器以查询外部设备的状态。在外部设备就绪时,CPU通过IO接口中的数据寄存器与外设完成数据交换
- IO操作由 CPU 直接完成,通过执行IO指令完成
- 外设速度慢,CPU 速度快,在外设准备过程中,CPU 处在不断的查询之中,极大地浪费了 CPU 的性能
- 外设与 CPU 完全串行工作,CPU 效率低
中断与中断IO方式
中断的概念无需赘述,其核心是出现高优先级任务时停下当前的任务去执行高优先级任务
中断向量:中断服务子程序的入口地址
中断向量表:保存所有中断向量的内存区域,一般固定
中断请求
中断请求触发器INTR:为每一个中断源配置一个中断请求触发器,中断源可以通过设置中断请求触发器来提出中断申请
中断请求标记寄存器:各中断源的请求触发器组成
当前指令执行完后,才会响应中断
中断IO的特点
将IO外部请求视作一种中断,处理IO外部信息的过程就是一种响应中断的过程。
在外设准备阶段,CPU可以执行其他程序,仅在外设准备就绪后,CPU才中断正在执行的程序,处理IO事务。 在此阶段,可以认为CPU 与外设的工作是并行的
多次中断
在响应中断的过程中,如果有更高级的中断,则需要停下当下的中断响应程序,执行更高级中断的中断相应程序
DMA:不经过CPU的响应
程序IO与中断IO的不足:
- I/O 传送速度受处理器测试和给设备提供服务的速度的限制
- 处理器直接负责管理IO,对于每一次IO传送,处理器必须执行一些指令
DMA(Direct Memory Access):CPU 对总线的控制被临时禁止。DMA 控制器接管总线控制权,控制数据直接在存储器与外设之间高速交换。CPU不再介入具体的IO操作,由 DMA 控制器来负责提供存储器地址信号、读写控制信号等。
- CPU 与IO设备在更大的程度上并行工作,效率更高
- DMA 方式适合高速批量的数据传输,如视频显示刷新、磁盘存储系统的读写,存储器到存储器的传输等
DMA的响应过程
有了DMA后,相关的响应操作给DMA进行处理,CPU 仅在开始 DMA 操作之前和完成 DMA 操作之后参与I/O 处理,在 DMA 过程中,CPU 可以运行原来的程序
CPU 的工作:初始化 DMA 控制器
- 设置数据传送方向:是请求读还是请求写(对存储器而言)
- 设置IO接口地址: DMA 操作所涉及的IO接口的地址
- 设置存储器起始地址:读或写存储器的起始单元地址
- 设置传送的数据数量:传送数据的字数
- 有关中断方式的设置: DMA 结束后通过中断方式请求 CPU 处理
DMA 请求:当接口做好数据传输的准备,通过有关逻辑向 CPU 发出 DMA 请求信号
DMA 响应:CPU 接到 DMA 请求,在当前总线周期操作结束后,暂停 CPU对系统总线的控制和使用,发出 DMA 响应信号,并交出系统总线的控制权
DMA 操作:DMA 控制器接到 DMA 应答信号后,通过控制逻辑向系统总线发送存储器地址信号、存储器读写控制信号、I/O 接口读写控制信号等,完成一次数据传送。这些操作完全由硬件控制。一般仅需要一个总线周期,所以这种方式称为周期窃用( cycle stealing) 方式。所有数据传送结束后,通过中断方式告知 CPU 进行善后处理。
DMA的工作方式
对于速度不同的外设,DMA也有不同的工作方式
周期窃取方式(单字传送方式):每次 DMA 请求得到响应后, DMA 控制器窃取一个总线周期完成一次数据传送,然后释放总线。
一般适应存储器速度远高于IO设备速度的情况。
停止 CPU 访问内存(成组传送方式):一次 DMA 请求得到响应后, DMA 控制器完全占用总线,进行多次 DMA 传送,直到所有数据传送完毕才释放总线,这段时间完全停止 CPU 访问内存。
适应高速外设与存储器交换数据的情况。
DMA的结构
Counter:长度计数器,保存传送数据的字数
Data Reg:数据寄存器
Address Reg:地址寄存器,向地址总线提供存储器地址。
DMA控制逻辑
DMA状态逻辑
中断控制逻辑
DMA和中断响应IO的区别
响应时机:中断是在一条指令结束后响应;而DMA可在指令周期内的任一存取周期结束时响应
现场保护:中断要中断现行程序,需保护现场;而DMA不中断现行程序,无须保护现场
适应场合:中断适于处理紧急或异常事件;而DMA适于传送大批数据
传送方式:中断需要靠程序传送数据;而DMA靠硬件传送
IO通道
通道是一种专业控制器,具有自己的指令系统(基本上都是IO指令)。通道执行通道程序来实现和管理IO,CPU 基本上不需要管理IO,CPU 的效率得到更大的提高。
通道程序由 OS 根据IO任务的需求自动生成,存放在存储器中,通道程序由 OS 管理,用户程序执行和访问通道程序。
通道分类
选择通道
通道可以连接多台高速设备,但一次只能为其中一台设备服务,与一台设备的成组数据传送结束后,才能选择另一台设备。一旦选择了一个外设,即使该外设没有准备好,也只能等待。
通道数据传输率=一台设备的数据传输率。
字节多路通道
通道连接多台慢速外设,通道可以同时为多台设备服务。不仅允许多个设备同时操作,且允许他们同时进行传输型任务。以字节为单位交叉传送各外设的数据。
通道的数据传输率=各外设的数据传输率之和
数组多路通道
通道可以连接多台高速外设,通道可以同时为多台设备服务;以成组交叉的方式传送数据。允许多个设备同时工作,但只允许一个设备进行传输型操作,其他设备进行控制型操作。
通道数据传输率=各设备数据传输率之和