IO控制方式
低速IO设备
数据流:键盘→IO接口的数据寄存器→数据总线→CPU某寄存器→主存(指定变量位置)
高速IO设备
DMA控制方式:
主存和高速IO设备之间有一条直接数据通路,CPU向DMA接口发出读写命令,指明主存地址、磁盘地址、读写数据量等,DMA控制器自动控制磁盘和主存的数据读写,每完成一整块数据读写,才向CPU发出一次中断请求
通道控制方式:
通道是一种特殊功能的处理器,可以对IO设备统一管理,它可以识别并执行一系列通道指令
IO系统基本组成
由IO硬件和软件两部分组成
IO硬件
包括外部设备,IO接口和IO总线等
IO软件
包括驱动程序、用户程序、管理程序、升级补丁等
通常采用IO指令和通道指令实现主机和IO设备的信息交换
IO指令:CPU指令的一部分
操作码指明CPU对IO接口做什么,命令码指明IO接口对设备做什么
通道指令:提前编好放在主存中
在含有通道的计算机中,CPU执行IO指令对通道发出命令,由通道执行通道指令,代替CPU管理IO设备
IO接口
包括输入设备,输出设备和外存设备
作用
- 数据缓冲:通过数据缓冲寄存器DBR打到工作和外设工作速度的匹配
- 错误或状态检测:通过状态寄存器反馈设备的各种错误、状态信息,供CPU查用
- 控制和定时:接受从控制总线发来的控制信号、时钟信号
- 数据格式转换:串-并、并-串等格式转换
- 与主机和设备通信:实现主机-IO接口-IO设备之间的通信
工作原理

编址
统一编址
把IO端口当作存储器的单元进行地址分配,可以靠不同地址码区分内存和IO设备,统一的访存类的指令都可以访问IO端口,又称存储器映射方式
常用于RISC
优点:
不需要专门的输入输出指令,所有访存指令都可以直接访问端口,设计灵活性高
端口有较大编址空间
读写控制逻辑电路简单
缺点:
占用主存地址空间
外设寻址时间长,位数多,译码速度慢
独立编址
IO端口地址和存储器地址无关,独立编址,靠不同指令区分内存和IO设备,只能用专门的IO指令访问IO端口,又称IO映射方式
优点:
使用专用IO指令,程序编制清晰
IO端口地址位数少,译码速度快
IO端口地址不占用主存地址空间
缺点:
指令类型少,设计灵活性差
需要CPU提供存储器读写,IO设备读写两组控制信号,增加电路复杂性
类型
IO方式
程序查询方式
例:x86中的IO指令
IN Rd, Rs:把IO端口Rs的数据输入到CPU寄存器Rd
OUT Rd, Rs:把CPU寄存器Rs的数据输出到IO端口Rd
例:打印几个字符
- 首先将要打印的字符放入寄存器R0,将OUT的命令字放入寄存器R1
- 把R1的命令字输出到Rn+1的控制寄存器
- CPU通过地址线指明输出地址为n+1, 控制线传输写操作
- IO控制逻辑根据CPU送来的命令字,向对应外设发出对应控制信号
- 打印机启动并给IO接口返回状态,IO控制逻辑将打印机当前状态存入状态寄存器
- CPU轮询使用IN指令获取状态寄存器中的状态,判断是否为就绪状态
- 若某次轮询是就绪状态,CPU可以给打印机输出第一个字符,首先通过地址线指明输出地址为Rn,控制线传输写操作,通过数据线把第一个字符写入数据缓冲寄存器Rn
- IO控制逻辑把Rn内的当前字符信息通过线输出给打印机,打印时返回忙碌状态,完成后通过状态接口返回,同样通过IO控制逻辑处理
- CPU轮询到就绪状态后继续重复上述操作,传入第二个字符
- 所有字符输出后,打印机最后给IO控制逻辑返回完成状态,当CPU判断所有数据输出完成,CPU给Rn+1控制寄存器发出一个停机命令,通过IO控制逻辑传给打印机,打印机停止
程序中断方式
概念
执行某些程序的过程中,出现某些急需处理的情况或请求,CPU暂时中止现行操作,对这些异常情况进行处理,处理完后又自动回到先行程序的断点处,继续执行原程序
工作流程
- 中断源向CPU发送中断请求信号
- 若处于关中断状态,则不响应中断信号
- 否则响应中断条件,若多个中断源同时提出请求,中断判优逻辑选择响应一个中断源
- 中断处理:通过中断隐指令改变PC的指向,执行中断服务程序
关中断
作用:实现原子操作
当CPU的PSW寄存器中IF位为1时,表示开中断,否则为关中断
有一种非屏蔽中断在关中断时也会被响应(如掉电)
中断请求标记
终端系统对每个中断源设置中断请求标记触发器INTR,状态为1时,表示中断原有请求,这些触发器组成中断请求标记寄存器
对于外中断,CPU在统一时刻即每条指令执行阶段结束前向接口发出中断查询信号,来获取IO中断请求,即响应中断的时间是指令执行阶段的结束时刻
响应中断满足条件:
- 中断源有中断请求
- CPU处于开中断
- 一条指令执行完毕,且没有更紧迫的任务
中断判优
- 硬件实现:硬件排队器
- 软件实现:查询程序
优先级设置:
中断处理过程
中断隐指令
主要任务:
- 关中断:为了保存中断现场期间不被新的中断打断
- 保存断点:保证中断服务程序执行完毕后能正确回到原来程序,把原来程序的断点(PC的内容)保存起来,可以存入堆栈或指定单元
- 引出中断服务程序: 取出中断服务程序入口地址并传给PC
- 软件查询法
- 硬件向量法
中断服务程序
- 保护现场:保护通用寄存器和状态寄存器的内容,以便返回原程序后可以恢复CPU环境,可以使用堆栈或特定存储单元
- 中断服务:主体部分,如键盘输入,打印机输出
- 恢复现场:通过出栈或取数指令把之前保存的信息送回寄存器中
- 中断返回:开中断,通过中断返回指令回到原程序断电处
多重中断
执行中断服务程序时可能响应新的中断请求
中断屏蔽技术
用于多重中断,CPU要具备多重中断的功能,要满足下列条件:
- 中断服务程序中提前设置开中断指令
- 优先级高的中断源有权中断优先级低的中断源
每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示可以正常申请,所有屏蔽触发器组合在一起构成一个屏蔽字寄存器,内容称为屏蔽字
- 一般用1表示屏蔽,0表示正常申请
- 每个中断源对应一个屏蔽字,在处理该中断源的中断服务程序时,屏蔽寄存器中的内容为该中断源对应的屏蔽字
- 屏蔽字中1越多,优先级越高,每个屏蔽字中至少有一个1,能屏蔽自己的信号
DMA方式
步骤
结构
特点
同时使用主存
当CPU和IO设备同时访问主存时,可能发生冲突,DMA和CPU通常有以下三种方式使用主存: