输入输出系统(IO)方式

程序查询方式

在这里插入图片描述
采用程序查询方式,CPU必须循环等待检查要传送的数据,直到完成后才传送。细分如下图
在这里插入图片描述
在这里插入图片描述
x86中的IO指令实例
IN Rd,Rs:把IO端口Rs的数据输入到CPU寄存器Rd
OUT Rd, Rs:把CPU寄存器Rs的数据输出到IO端口Rd
这里来模拟3个字符的打印。
①通过OUT将通用寄存器的控制数据发送给控制寄存器,然后通过IO控制逻辑发送给打印机,打印机将状态返回给状态控制器,比如READY。
②这里可以通过IN R 0 , R n + 1 R_0,R_{n+1} R0,Rn+1,将状态寄存器拿到 R 0 R_0 R0判断是否可以发送。
③如果的READY,那么将要打印的字符通过OUT发送给数据缓冲寄存器,再发送给打印机,这时候状态寄存器应该是的状态,等到打印机完成后,再返回READY状态给状态寄存器。得到READY后CPU又可以发送打印的字符数据。
④循环上面操作,在CPU中设置一个变量比如 i = 3 i=3 i=3,每次发送一个字符 i i i就减1,那么当 i = 0 i=0 i=0时候说明字符已经发送完成,最后通过 O U T OUT OUT发送停机命令给控制寄存器,控制寄存器的再发给打印机停机。

程序查询方式流程图

在这里插入图片描述①预置传送参数:比如说上面的打印机,要发送字符 a,b,c,还有一个变量i用来记录发送几个字符
②启动外设:比如发送命令启动打印机
③不断检查外设状态是否就绪,如果就绪就可以传送数据。如果外设是没有就绪状态,CPU就会卡在取外设状态和外设准备就绪状态的框中。
例题:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查询有定时查询独占查询,独占查询就是CPU花100%的时候去循环等待,定时查询就是这次查询没结果就可以先去做其他事,然后过段时间再回来查询。一开始给出的图就是独占查询
定时查询要在保证数据不丢失的情况下进行。

程序中断方式

在这里插入图片描述

中断的基本概念

程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。
在这里插入图片描述
工作流程:
1.中断请求
中断源向CPU发送中断请求信号。
2.中断响应
响应中断的条件。(要看有没有关中断)
中断判优:多个中断源同时提出请求时通过中断判优逻辑响应一个中断源。
3.中断处理
中断隐指令。(修改PC值)
中断服务程序。
在这里插入图片描述在这里插入图片描述
有些中断在关中断时候也会被响应,称为非屏蔽中断(比如关机)。

中断请求标记

如何来判断是哪个设备发来的中断信号,引入了中断请求标记寄存器。
每个中断源向CPU发出中断请求的时间是随机的。
为了记录中断事件并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器INTR.当其状态为“1”时,表示中断源有请求。
这些触发器可组成中断请求标记寄存器,该寄存器可集中在CPU中,也可分散在各个中断源中。
在这里插入图片描述
对于外中断,CPU是在统一的时刻即每条指令执行阶段结束前向接口发出中断查询信号,以获取IO的中断请求,也就是说,CPU响应中断的时间是在每条指令执行阶段的结束时刻。CPU响应中断必须满足以下3个条件:
①中断源有中断请求。
②CPU允许中断即开中断。
③一条指令执行完毕,且没有更紧迫的任务。

中断判优

如上,CPU可能得到来自键盘和打印机的中断,那么就会引出哪个中断先执行的问题。
中断判优既可以用硬件实现,也可用软件实现:
硬件实现是通过硬件排队器实现的,它既可以设置在CPU中,也可以分散在各个中断源中;软件实现是通过查询程序实现的。
在这里插入图片描述
在这里插入图片描述
硬件排队器:从左到右,优先级从高到低

中断判优 优先级设置

1.硬件故障中断属于最高级,其次是软件中断;
2.非屏蔽中断优于可屏蔽中断;
3.DMA请求优于IO设备传送的中断请求
4.高速设备优于低速设备;
5.输入设备优于输出设备;
6.实时设备优于普通设备。

中断处理过程

在这里插入图片描述
当K指令快结束的时候,CPU发现中断请求信号,将PC的值指向中断服务程序1的第一条指令(原来指向的是K+1指令)。中断服务程序1结束后将K+1放入PC。
中断隐指令是CPU检测到中断信号后自动执行的一个动作,用来保存原程序的PC值,并让PC指向中断服务程序的第一条指令。

中断隐指令

中断隐指令的主要任务:
关中断。在中断服务程序中,为了保护中断现场(即CPU主要寄存器中的内容)期间不被新的中断所打断,必须关中断,从而保证被中断的程序在中断服务程序执行完毕之后能接着正确地执行下去。
保存断点。为了保证在中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来程序的断点(即程序计数器(PC)的内容)保存起来。可以存入堆栈,也可以存入指定单元。
引出中断服务程序。引出中断服务程序的实质就是取出中断服务程序的入口地址并传送给程序计数器(PC) 。

硬件向量法

在这里插入图片描述
这里由硬件,产生向量地址,然后通过向量地址找到程序入口地址,如果产生的向量地址是 00010011,那么就是13H,中断入口地址就是300。
总结:
硬件产生向量地址
再由向量地址找到入口地址
这里可以也可以让向量地址直接指向例如300的入口地址,但是如果主存中的地址发生变动,例如显示器服务程序从400开始了,那么需要修改硬件电路才能完成指向,而只修改向量地址里的中断向量是修改软件部分就很方便了,所以不能让向量地址直接指向入口地址。

中断服务程序

中断服务程序的主要任务:
保护现场
保存通用寄存器和状态寄存器的内容(eg:保存ACC寄存器的值),以便返回原程序后可以恢复CPU环境。可使用堆栈,也可以使用特定存储单元。
中断服务(设备服务)
主体部分,如通过程序控制需打印的字符代码送入打印机的缓冲存储器中( eg:中断服务的过程中有可能修改AcC寄存器的值)
恢复现场
通过出栈指令或取数指令把之前保存的信息送回寄存器中(eg:把原程序算到一般的ACC值恢复原样)
中断返回
通过中断返回指令回到原程序断点处。

在这里插入图片描述
在中断隐指令用了关中断,在中断服务程序最后用了开中断,保证了中断服务程序的原子性。把这种称为单重中断(执行中断服务程序时不响应新的中断请求)。有些时候单重中断没有办法满足需求,所以就需要用到多重中断。

多重中断

多重中断就是,当我们在执行某一个中断服务程序的时候,中断服务程序里面还有中断。
在这里插入图片描述

单重中断与多重中断

在这里插入图片描述
在这里插入图片描述
开中断要加在保存现场的后面,因为可能考虑到保存现在没有完成的时候可能就收到了中断请求,后面恢复现场前面的关中断同理。
屏蔽字的全称 中断屏蔽器。当CPU在处理某一个中断信号的时候,应该忽视哪些中断请求,因为要考虑到中断有先后,所以要响应优先级高的。

中断屏蔽技术

中断屏蔽技术主要用于多重中断,CPU要具备多重中断的功能,须满足下列条件。
①在中断服务程序中提前设置开中断指令。
②优先级别高的中断源有权中断优先级别低的中断源。
每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示可以正常申请,所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字。
在这里插入图片描述
调整多重中断的优先级。
这里假设有一个键盘中断服务程序,然后他的屏蔽字是1 1 1 1。那么表示键盘不可以被其他中断了。

屏蔽字设置的规律:
1.一般用’1’表示屏蔽,‘0’表示正常申请。
2.每个中断源对应一个屏蔽字(在处理该中断源的中断服务程序时,屏蔽寄存器中的内容为该中断源对应的屏蔽字)。
3.屏蔽字中1’越多,优先级越高。每个屏蔽字中至少有一个’1’(至少要能屏蔽自身的中断)。

例:
在这里插入图片描述
在这里插入图片描述
因为D>A>C>B,所以当A执行的时候,只有D才能申请,那么D的中断屏蔽就是0,A自己也要设置为1。其余同理。
在这里插入图片描述

这里就看中断服务程序的优先级了。

中断系统小结

在这里插入图片描述

程序中断方式

在这里插入图片描述
例:
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
这里加5也可以不加也可以,因为可以理解为15条指令后就完成了字符传送,也可以理解为20条指令才完成传送。

DMA方式

在这里插入图片描述
DMA控制器也是一种IO接口。

DMA控制器

在这里插入图片描述
这里数据缓冲器是用来存放磁盘给DMA控制器的数据。
要传的几个字,比如说要传5个,那么DMA传给主存后,5就会减1。读写完后 主存和外设的地址都需要进行变化,比如往后+1。
外设读写地址是磁盘上的地址。
主存读写地址是DMA要写入主存的位置。
CPU向DMA控制器指明要输入还是输出;要传送多少个数据;数据在主存、外设中的地址。

传送前
1)接受外设发出的DMA请求(外设传送一个字的请求),并向CPU发出总线请求。
2)CPU响应此总线请求,发出总线响应信号,接管总线控制权,进入DMA操作周期。
传送时
3)确定传送数据的主存单元地址及长度,并能自动修改主存地址计数和传送长度计数。
4)规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作。
传送后
5)向CPU报告DMA操作的结束。
在这里插入图片描述

DMA传送过程

在这里插入图片描述
这里主存起始地址 → \to AR,AR就是主存地址计数器
传送长度计数器缩写WC。
数据如果要传送,按照图中绿色部分开始:
1.设备将数据写入数据缓冲寄存器
2.向DMA触发器发出高电平信号
3.当控制逻辑检测到DMA请求,会向CPU申请总线控制权(HRQ)
4.如果CPU可以让DMA用总线的话,那么CPU会返回一个HLDA。
5.获得总线控制权后,可以通过数据线、地址线、控制线给主存发出读或者写的命令。这里是数据输入,所以是写命令。
6.把数据缓冲寄存器的内容打到数据线上,把主存的地址信息打到地址线上。这样就完成了一个字的数据传输。
7.最后就是修改参数,让地址后移动,修改地址计数器和长度计数器。
8.传送完多个字后,长度计数器会发出溢出,给中断机构。
9.中断机构检测到信号后,发出中断请求,CPU处理中断(运行中断服务程序)。
这里DMA请求DMA中断请求是不一样的,前者是传送一个字,后者是一整块的数据已经完成了。
在这里插入图片描述
由于DMA需要总线,而CPU又管理着总线,这里提出一种新的连接方式如下图:
在这里插入图片描述
这里主存和DMA用DMA总线进行交互,这里DMA想要访问主存就不需要CPU给他总线的权力了。

DMA传送方式(只有在三总线的情况下才会存在)

主存和DMA控制器之间有一条数据通路,因此主存和/O设备之间交换信息时,不通过CPU。但当/O设备和CPU同时访问主存时,可能发生冲突,为了有效地使用主存,DMA控制器与CPU通常采用以下3种方法使用主存。
在这里插入图片描述
主存和DMA接口之间有一条直接数据通路。
由于DMA方式传送数据不需要经过CPU,因此不必中断现行程序,I/O与主机并行工作,程序和传送并行工作
DMA方式具有下列特点:
①它使主存与CPU的固定联系脱钩,主存既可被CPU访问,又可被外设访问。
②在数据块传送时,主存地址的确定、传送数据的计数等都由硬件电路直接实现。
③主存中要开辟专用缓冲区,及时供给和接收外设的数据。
④DMA传送速度快,CPU和外设并行工作,提高了系统效率。
⑤DMA在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理。

DMA方式与中断方式

在这里插入图片描述
DMA经常用于块设备,比如磁盘设备。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值