我去裁缝店做一批衣服
1.程序直接控制方式:我每隔一段时间要去裁缝店里看看衣服做好没有
2.中断驱动方式:裁缝做好一件衣服就给我打电话,告诉我可以去拿
3.DMA方式:我请了一个单线秘书,告诉他拿到衣服之后放在哪里,裁缝每次做好一件衣服就交给我的秘书,秘书整理好100件衣服之后交给我
4.通道方式:我在多个裁缝那定了货,秘书自己选择存衣服的位置,自己决定处理了多少件衣服之后交给我,并且要负责和多个裁缝沟通。
目录
扫描二维码关注公众号,回复: 13025958 查看本文章
1.程序直接控制方式
- 特点:轮询等待
- 优点:实现简单,用软件实现就行
- 缺点:cpu和io只能串行工作,cpu利用率非常低
- 数据传送单位:1个字
2.中断驱动方式
- 特点:
-
cpu向io控制器发出读命令之后,去干别的事情
-
io控制器准备好数据放入自己的寄存器中,向cpu发出中断信号
-
cpu干别的事情的时候在每个指令周期末尾检查中断
-
cpu收到中断信号,保存当前的现场,去处理中断
-
io控制器寄存器内的数据放入总线传送给cpu中的寄存器
-
-
优点:cpu和外部设备部分并行工作
-
缺点:
-
在传送大量数据的时候,需要中断很多次,频繁的中断会带来很多开销
-
外设和内存之间的交流还是要经过cpu,还是速度不快
-
-
数据传送单位:一个字
3.DMA方式
- 特点:设备和内存直接交流,不经过cpu,仅在传送一个数据块开始和结束的时候需要CPU干预
-
数据传送单位:一个或连续的多个块(DMA控制器和内存还是一次传一个字,但是传完整个块或多个块才请求cpu,所以对cpu来说,传送单位就是块)
-
优点:进一步降低了cpu的干预
-
缺点:离散的数据块无法一次读写
4.通道
-
特点:
-
通道(硬件)是弱鸡版的cpu,专门负责输入输出的处理机
-
通道识别并执行一系列通道指令
-
通道程序(由一系列通道程序组成)=任务清单
-
一个通道可以控制多个io控制器,一个io控制器可以控制多个设备
-
cpu干预非常低,通过io指令控制通道,在执行完通道程序才发起中断
-
-
优点:cpu与io并行工作,利用率很高
-
缺点:需要专门硬件支持,实现复杂
-
数据传送单位:一组连续或离散的数据块
中断相关知识
- 中断响应时间
- 内中断:一旦内中断出现便立即响应
- 外中断:一条指令执行结束才响应
- 中断判优
由于系统在任意时间内只能响应一个中断源的请求,所以要在中断请求中选择优先最高的那个执行
DMA请求>IO设备传送的中断
DMA控制器中的数据准备好后才发起请求,若长时间得不到满足,数据缓冲器中的数据会丢失
输入设备>输出设备
硬件中断,访管指令 > 软件中断
中断判优的实现方式:硬件排队器和查询程序
cpu响应中断的条件
1.中断源有中断请求
2.cpu允许中断
3.一条指令执行完毕且没有更加紧急的任务
中断向量
中断向量=中断服务程序入口地址
向量地址=中断向量的地址=中断类型号
中断隐指令(硬件实现)
不是一条真正的指令,是不可能被用户使用的特殊指令
它实现的操作:
1.关中断:为了确保保存断点这一步操作不会被打断!
2.保存断点:把当前PC的值保存在内核堆栈栈顶,为了保证中断服务程序执行完毕之后正确返回到原来的程序
3.引出中断服务程序:实质是修改当前PC的值为中断服务程序的入口地址(中断向量)
中断服务程序
就是处理中断请求的那个程序,在中断服务程序中完成一次cpu和外设之间的数据交换
它实现的操作:
1.保护现场:之前执行的程序可能在各种寄存器中都存了数据,现在中断服务程序也要用这些寄存器了,所以第一步要保存通用寄存器,状态寄存器,ACC寄存器等值
2.中断服务:传数据
3.恢复现场:把各种寄存器的值都恢复成和初始一样
4.开中断:取回中断隐指令保存在栈顶的原始程序的PC值
单重中断与多重中断
多重中断的中断服务程序要除了保存现场还要保存屏蔽字
多重中断的中断服务程序允许再次中断
中断屏蔽技术
屏蔽字:屏蔽寄存器中的内容,屏蔽字中1越多,表示当前中断源在使用的时候能屏蔽更多其他中断源,具有更高的优先级
屏蔽字可以改变中断的处理顺序=改变中断执行结束的顺序,但是不能改变中断的响应次序
中断响应次序是由中断判优中排队器(硬件)决定的,所以不能动态改变。中断处理次序可由屏蔽字改变。所有中断都响应了之后,按照中断屏蔽字规定的处理优先级最高的中断执行它的中断服务程序。
DMA方式 VS 中断驱动方式
- 谁控制传送数据?
- 中断驱动方式是cpu在执行中断服务程序时控制
- DMA是DMA控制器控制
- 何时中断CPU?
- 中断驱动方式在每一个字传送结束的时候都需要中断cpu
- DMA当时在传送完一批数据够才需要中断cpu(后处理)
- 优先级
- DMA中断大于普通io中断
- 何时响应中断请求
- 中断驱动方式在每条指令的执行周期结束后响应
- DMA在每个机器周期结束用周期挪用的方式响应中断,周期挪用挪用的是一个存取周期
DMA方式 VS 通道方式
- 数据传送开始时是否需要cpu干预?
DMA方式需要CPU在数据传输开始之前控制传输的数据块大小,内存位置
通道直接由通道控制器处理
控制几个设备?
一个DMA控制器控制一个io设备
通道直接由通道控制器处理
总线结构?
DMA是三总线结构
通道是双总线结构