输入输出
外围设备:简称为外设,提供了在外部环境和计算机系统之间的数据交换
- 人可读设备:显示器、打印机
- 机器可读设备:磁盘、磁带
- 通信设备
外设不可以直接连接到总线上:种类繁多、数据传送慢、数据格式和字长度不同
I/O模块
- 通过系统总线或中央交换器和存储器连接
- 通过专用数据线与一个或多个外设连接
I/O模块是计算机内部系统和外设之间的桥梁
外围设备的接口
输入/输出模块的接口以控制、状态和数据信号的形式出现
缓冲器用于缓存输入/输出模块和外设之间传送的数据
I/O模块的功能
1、处理器通信(与位于内部的组件通信)
- 命令译码:输入/输出模块从控制总线接收来自处理器的命令
- 状态报告:以知道输入/输出模块的状态
- 数据:在处理器和输入/输出模块之间经由数据总线来交换
- 地址识别:识别它所控制的每个外设的唯一地址
2、设备通信(与位于外部的设备通信)
- 通信内容包含命令、状态信息和数据
3、数据缓冲
- 外设的数据传输速度比一般存储器慢得多(有些快得多)
4、控制和定时
需要控制定时的原因:
- 处理器会非预期的与外设进行通信
- 一些内部资源,如主存和系统总线,是被共享的
控制从外设到处理器的数据传送的步骤:
- 处理器查询输入/输出模块以检验所连接设备的状态
- 输入输出模块返回设备状态
- 设备准备就绪时,处理器向输入输出模块发出一条命令请求数据传送
- 数据经输入/输出模块传送数据到处理器
5、检错
- 检错并把差错信息报告给处理器(包括机械电路故障、数据位变化等)
I/O模块的结构
外部接口
- 并行接口:多根线连接输入/输出模块和外设,同时传送多位数据
- 串行接口:只有一根线用于传输数据,每次只传输一位数据
并行接口下,传输速度和总线长度增加时,总线的时钟频率会受到限制(需要每次都同时传送)
FireWire:IEEE标准1394串行总线
USB:通用串行总线
I/O操作技术
- 编程式I/O:处理器发送命令到I/O模块时,它必须等待直到I/O操作完成
- 中断驱动式I/O:处理器发送命令后继续执行其他指令,当I/O模块完成工作后才去中断处理器工作
- 直接存储器读取:I/O模块不需要处理器的干涉,与主存直接交换数据
编程式I/O
处理器发送指令到适当的I/O模块,处理器周期性检查I/O状态寄存器中的状态,直到发现该操作完成
CPU全程100%投入
I/O命令
- 控制命令:激活外设并告诉它要做什么
- 测试命令:测试I/O模块及其外设相关的各种状态条件
- 读命令:使I/O模块从外设获得一个数据,把它存入内部缓冲区
- 写命令:使I/O模块从数据总线获得一个数据,把它传入外设
I/O指令的形式取决于外设寻址的方式。
编址方式:
- 存储器映射式I/O:存储单元和I/O设备有统一的地址空间(存储单元地址的一部分被映射到I/O设备,读写时可以直接使用对内存的读写指令实现)
- 分离式I/O:总线同时有额外的输出输出命令线(I/O有额外的地址空间,需要额外使用一种指令实现读写)
中断驱动式I/O
处理器发送一个I/O命令到模块,然后去处理其他工作,当I/O模块准备和处理交换数据时,它中断处理器以请求服务
I/O模块:
- 接收来自处理器的读命令,从外设读入数据
- 读完后,块通过控制总线给处理器发送中断信号,然后等待直到处理器请求该数据为止
- 等待完后I/O把数据传送到数据总线上
处理器:
- 处理器发送一个命令,然后离开去做其他的事情,并在每个指令周期结束时检查中断
- 出现中断时,处理器保存当前程序的现场,并从I/O模块读取数据字并保存到主存中
- 然后处理器恢复刚刚程序正在运行的现场,继续原来的程序
中断禁止和中断允许
在处理器保存状态时,处于中断禁止状态;保存完状态开始处理中断后,就中断允许了。处理完中断恢复状态时也是中断禁止。
响应优先级和处理优先级:
开始第一次处理或结束一个中断处理并开始第二个中断处理时,看的是响应优先级。当在中断过程中发生新的中断时,看的是当前存在的未被处理的所有中断的处理优先级(也许发生新的中断的和实际改变而前去处理的中断不是同一个中断)
例子:假设中断系统中有4个中断源,其响应优先级为L1>L2>L3>L4,处理优先级为L1>L4>L3>L2。如果在主程序执行时同时发生L1、L3和L4中断,并且在处理L3中断的过程中发生L2中断,写出掩码字和所有中断服务程序的过程。
设备识别
- 多条中断线:处理器仅仅挑选具有最高优先级的中断线
- 软件轮询:模块的轮询次序就决定了模块的优先级
- 菊花链:链接模块次序就决定了模块的优先级
- 独立请求:中断控制器决定
直接存储器存取(DMA)
前两种技术的不足
- I/O传送速度受处理器测试和服务设备速度的限制
- 每一次I/O传送,处理器必须执行很多指令
直接存储器存取:无需经过处理器即可直接访问内存的模块
- 处理器向DMA发出命令后继续进行其他工作
- DMA将全部数据块直接传输到存储器或从存储器读出,每次一个字,无需经过处理器
- 传输完成时,DMA模块向处理器发出一个中断信号
DMA内存访问
CPU停止法
DMA需要数据传输时,暂停CPU的数据传输,其中DMA的数据传送连续不间断
- 优点:控制简单
- 缺点:影响CPU,没有充分利用内存
- 适用:高速I/O设备的块传输
周期窃取
DMA需要传输数据时,每隔几个存储周期就暂停CPU的传输并自己传输一个周期
- 优点:充分利用CPU和内存,及时响应I/O请求
- 缺点:DMA每次都请求总线
- 适用:I/O周期大于存储周期
交替分时访问
每个时钟周期的后半部分分给DMA进行传输
- 优点:CPU未停止或等待,DMA不请求总线
- 缺点:CPU周期大于存储周期
DMA配置机制
单总线分离DMA
所有模块共享相同的系统总线,DMA模块使用编程式I/O,
单总线集合的DMA-I/O
DMA逻辑可能是I/O模块的一部分,也可能是控制一个或多个I/O模
块的单独模块
I/O总线
使用I/O总线将I/O模块连接到DMA模块
I/O模块的演变
CPU直接控制外设->增加控制器或I/O模块,CPU使用编程式I/O->采用中断->I/O模块可通过DMA直接存取存储器->I/O通道(I/O channel):I/O模块有自己的处理器,带有专门为I/O操作定制的指令集->I/O处理器(I/O processor):I/O模块有一个局部存储器,I/O模块成为一个自治的计算机,常用于与交互式终端进行通信