第七章输入输出系统
7.1IO系统基本概念
7.1.1-7.1.2输入输出系统和IO控制方式
为了解决频繁的执行中断服务,于是采用DMA控制方式
DMA接口也是IO接口
DMA在往主存读写东西的时候,cpu就不能对主存读写东西,所以占一个存取周期。
7.1.3外部设备 (重点是显存计算VRAM,其他随便看看)
7.2IO接口
cpu主存-I/O总线-I/O接口-通信总线(电缆)-外设例如数据端口、控制端口、状态端口
命令字=控制字
中断类型号:工作完成和发生故障有区别。
地址线可以传输设备编号和寄存器编号分开传输。用于区分选择不同的设备。方法二就是一人一个寄存器。传送操作:读写操作 X86 只有ins outs in out 四个指令读写
IO指令的格式和通用指令的格式不同,是为了反映与I/O设备交互的特点
I/O指令实现的数据传送通常发生在通用寄存器和I/O端口
7.3IO方式
程序查询方式
IO端口是I/O电路中可被cpu直接访问的寄存器
cpu的轮询是通过IN来一直读取状态寄存器的值来实现的,要注意IN是从IO接口读数据到寄存器。
对于慢速IO设备是绰绰有余的,但如果是快速IO设备那就不够了上面的图是独占查询 。定时与独占
中断作用与原理
执行指令末尾会进行中断判定
中断隐指令实际上是修改PC的值到中断服务 关中断用于执行原子操作
外中断 取址 间址 执行 中断
相当于只有高优先级的信号为0的时候后面才有机会生效。电路一般不考
进入中断响应周期条件:中断请求发生、开中断、没进入屏蔽
软件中断:发动系统调用的时候
输入设备:例如键盘,不及时处理缓冲区可能会被覆盖。
DMA请求处理的是高速设备
保存断点:PC的值放入内核堆栈
这里中断向量和向量地址之所以要跳转两次是为了防止中断服务入口地址变化。
向量地址(中断类型号)是指针的指针,中断向量是指针。
中断向量地址是存放中断向量的地址,中断向量是入口地址
左边这中断向量形成部件是用于识别哪个中断源发过来的中断,并且把这个转化成对应的向量地址。
中断服务程序是cpu执行的 ,中断结束信号也是cpu发出的
程序断点就是之前执行到的PC值。关于保护断点和关中断,由于是硬件执行,可以看成是一起完成。
多重中断(套娃)
开中断放在保护现场的后面是为了防止打断保护过程,恢复现场同理,此外要在前面加上关中断。
中断也是有优先级的。
和中断判优很像
中断的分类可以参考操作系统
后面可直接跳过到下一节
程序中断方式
cpi是一条指令执行需要4个时钟周期
工作的那段就是0.5ms,中断响应是请求到响应这段,中断服务的20条指令执行到15条指的是响应-返回上面启动那个点
CPI 平均每条指令需要多少时钟周期
最后传送一个字符那个5条指令时间可算可不算
在请求到响应这里执行了中断隐指令
DMA方式
通常是控制块设备,磁盘就是经典的块设备
磁盘一个字一个字传到DMA控制器,所以要数据缓冲寄存器,但不用全传过来在送到主存
DMA控制器是硬件,也称DMA接口
传送后用中断报告结束
当数据输入到数据缓冲寄存器中时,DMA请求触发器会受到信号,并且发送到状态逻辑,之后就可以将数据送到主存。
控制逻辑连了一根线到AR和WC,每次执行完会自动加一
这个溢出信号好像就是传输完成了
DMA传送前由设备驱动程序设置传送参数。
DMA请求是由外部设备发出
主存和DMA谁访问主存有下面的控制方式
2)对CPU可能不太好 ,因为CPU会频繁访问,但DMA仍然在等待,导致浪费。
图中是三总线。
每次传送数据后会有中断请求,每次后处理会有中断请求。
而对于dma控制方式来说。每一个机器周期结束,或者说每一次存储周期结束,都可以响应一次dma请求,也就是可以完成一个字的传送,只要总线是空闲,主存是空闲的就可以了
总线周期(访存时间)通常是最长的所以 总线周期、存取周期、机器周期、流水段长度一般认为是一样的。