目录
前言
本文为JMU22级软件计组考前复习而总结归纳,吸收了课本上晦涩且长篇大论的文章,以尽量简洁易懂的语句来对知识点进行归纳。
IO接口编址
统一编址
把IO接口的寄存器和存储器收编,与主存一起编址。比如主存有0-7共8个位置,0-6给内设的存储器,7就给IO接口。
缺点: 占用主存
优点: 使用通用的指令就可以访问IO接口的存储器,操作灵活。
单独编址
给IO接口单独的地址空间。比如主存有0-7共8个位置,IO接口也有它自己单独的0-1个位置。
那问题来了,访问0号地址时,会有2个地址,怎么确定是内部地址还是IO接口的地址?
解决办法就是:为IO接口设立单独的指令。mov ax,[0] 是内存操作,in ax,[0]就是IO接口的操作。
缺点:要用专门的IO指令,寻址方式简单导致编程灵活性稍差。
优点:不占用主存
IO操作的发展
通过普通接口
CPU直接通过IO指令对IO接口进行访问,每一步都表现在程序里。
以立即程序传送方式
当IO接口随时都准备好接收/传入数据,那么CPU就无需查询接口状态,直接利用IO指令访问相应IO端口。
以程序查询方式
很多外设的工作状态难预知,所以CPU需要查询接口状态,直到接口准备好。
以中断方式
程序查询时CPU会执行很多次无效查询,导致CPU利用率不高。所以反过来让别的设备主动通知CPU。
中断向量
即 中断处理程序入口地址。记录CS和IP。
现在常用二/多级向量方式。
中断源向CPU提供中断码,这个码与一个中断向量一一映射。设中断码为n,在32位系统里,入口地址为32位,2字节CS,2字节IP。
那么IP=(4N,4N+1),CS=(4N+2,4N+3)。
中断过程
- 保存现场(记下被中断时的CS和IP,把一些寄存器值入栈)
- 执行中断程序
- 恢复现场(回到原来的CS和IP,把寄存器值出栈)
中断允许位 和 优先级
其中还涉及到判断是否能被打断,以及优先响应问题。
CPU的状态寄存器有一位'IF'中断允许位,用来标记当前能否被中断,避免执行重要操作时被中断。且执行中断程序时不允许再被中断。
面对多个中断请求,CPU会按设定好的优先级进行排队。
通过DMA
中断可以提高CPU利用率,但是一次中断一般只能传递一个字符,还要经过保存现场、处理、恢复现场等阶段,需要执行多条指令才能处理一次中断事件,很难满足高速批量数据传输的需求。所以产生了“直接存储器传送(DMA)方式”。
DMA方式通过硬件实现主存和IO设备的直接数据传送。
预处理
- 主存准备好足够的内存迎接要读取的数据 或者 准备好要传送的数据。
- 把数据首址和长度写入相应位置
- DMA处理完了一般以中断方式提醒CPU,所以还要做一些关于中断处理的预处理操作。
DMA请求
接口准备好接受/发送数据后,向CPU发出DMA请求。
DMA响应
CPU接到请求,放弃对系统总线的使用和控制,发出应答信号,把控制权给DMA。
DMA传送
DMA接到应答信号,向IO接口确认。发出信号驱动总线,把地址送入地址总线,读写操作送入控制总线。每次传送完数据,地址指针变动一次,数据块长计数器-1,可以暂时清除DMA请求信号,等接口准备好时再发送请求。
循环直至完成整个数据块的传送。
结束处理
由计数器归零信号/接口发出中断请求来通知CPU进行后续处理。
通过通道
DMA虽然不需要CPU执行传输操作指令,但是CPU还是需要承担一部分管理控制功能,在IO设备多的情况下,DMA不能很好地满足需求。于是产生了通道。
通道是一种控制器,它有它自己的通道程序,可以完成较复杂的IO管理和预处理。需要IO操作时,cpu只要按格式准备好数据启动通道即可。通道自己去执行相应指令完成所需操作。
中断和通道都是靠程序实现IO管理,但是通道无需CPU执行发出中断的程序。
通过IOP
IOP是通道的进一步发展,它的指令系统更加丰富和通用,功能更强,更接近常规CPU,能更好地胜任复杂的预处理操作。
标签:编址,DMA,计组,中断,输入输出,接口,IO,CPU,复习 From: https://www.cnblogs.com/lmj00/p/17891984.html