详解中断系统 与 中断周期

1.中断系统

1.1 中断系统需要解决的问题

小提示:当我们需要分析某一个系统的结构时?就需要明确该系统应该解决哪些问题?
从每个问题的解决中,逐步剖析系统结构

中断系统需解决的问题

1.1.1 各中断源如何向CPU提出请求

中断源通过一个INTR(Interrupt Request)中断请求标记触发器,向CPU发出中断请求信号即可,CPU中通过一个中断请求标记寄存器将所有的中断源的中断请求INTR集中在一个寄存器中,如下图描述:

中断请求标记

但实际上仅仅通过上图,我们可能还是无法得知INTR是如何发出的,下面我们以IO接口中的程序中断方式为例,给出一个例子INTR分散在各个中断源的接口电路中

INTR分散在各个中断源的接口电路中

  • 在IO接口电路中,当IO接口已经从外设中读取完数据到缓冲区,需要发出中断请求,告知CPU执行某个中断服务程序将IO接口缓冲区中的数据读取到CPU[这里是以读取为例哦]
  • 此刻D完成触发器将标记为1,表示数据准备好可以发出中断请求
  • 后面会提到一个中断屏蔽触发器即MASK,当MASK=1表示屏蔽当前中断源,对应Q非端将输出0,将使得与非门的输出一定是1,那么送入到INTR触发器的D端就一定是0,导致无法发出INTR信号
  • 另一方面,后续会提到一个CPU如何响应中断,其中CPU会在指令周期的执行周期后发出一个中断查询信号,一旦CPU查询到中断信号,指令周期会进入中断周期。从上图中可以知道CPU的中断查询信号作为INTR触发器的使能信号

1.1.2 各中断源同时提出请求怎么办 ?

  • 硬件方式: 分散在接口电路中 - 链式排队器
    硬件排队器 -
    电路简述
    • 利用与非门的特性,输入只要有0,其结果必定为1,然后再经过非门,结果就是0。因此只需要通过一种方式在高优先中断请求有效时,发出一个0到低优先的与非门即可。
    • 特点:排队器中只有一位是1,其余位都是0
  • 硬件方式: 集中在CPU中
    硬件方式 - 集中在CPU中的排队器
    电路简述
    • 将高优先级的INTR的非端作为低优先级与非门的一个输入信号,因此当高优先的INTR有效时即INTR=1,对应的INTR非端就是0,送入到低优先级的与非门后,结果必定为1,再次反转就是0,导致低优先级的INTP都是0
    • 特点:排队器中只有一位是1,其余位都是0
  • 软件方式: 软件查询方式

不做过多描述

1.1.3 如何寻找入口地址

  • 硬件向量法
    硬件向量法
    • 区分:向量地址和入口地址
      • 向量地址是排队器输出信号通过向量地址形成部件输出的
      • 入口地址是中断服务程序的执行入口
    • 优点:硬件设计足够快
  • 软件查询法
    软件查询法
    • 中断识别程序:用来查找中断服务程序的入口地址,重点是以上述为例,立即到SKP DZ #1,JMP 1# SR的含义

1.1.4 如何保护现场

不讲述,见恢复现场

1.1.5 CPU什么条件、什么时间、以什么方式响应中断

条件 时间 方式 中断隐指令

  1. 条件:发出中断查询信号,将EINT设为1,允许发出中断请求
  2. 时间:指令执行周期结束后,原因是:此刻PC存储的就是下一条执行的指令,可以方便存入程序断点
  3. 方式:中断隐指令 = 保存程序断点 + 寻找入口地址 + 硬件关中断;其中理解硬件关中断的电路逻辑图

1.1.6 如何恢复现场,如何返回?

保护和恢复现场

1.1.7 处理中断的过程中又出现新的中断怎么办?

要点:

  1. 多重中断的概念:执行中断服务程序时允许高优先级的中断响应
  2. 多重中断的条件
    • 由于进入中断服务程序前,已经由中断隐指令,完成硬件关中断的操作,要想在中断服务程序中,能够响应其他高优先级的中断,必须提前设置开中断指令
    • 优先级高的中断源有权中断低优先级的中断服务程序
  3. 屏蔽技术和屏蔽字
    • 屏蔽技术就是通过MASK触发器完成对中断源的屏蔽,每一个中断源都配有一个MASK屏蔽器
    • 图中分别是分散在接口电路中的中断源集中在CPU的中断源中,MASK屏蔽器的组合逻辑。
  4. 屏蔽字 + 多重中断 = 改变处理优先级 - 看图可知
  5. 屏蔽字的设置时机
    • 中断隐指令的执行:保存程序断点和现场、形成中断服务程序入口地址(可以认为是送入到PC中)、硬件关中断
    • 设置屏蔽字
    • 开中断
    • 执行中断服务程序
      多重中断

2. 中断周期

指令周期可以划分为:取值周期 + 间址周期 + 执行周期 + 中断周期
在执行周期后,如果指令允许,CPU将发出一条中断查询信号,如果有中断请求INTR,指令将进入中断周期
6. 疑问:为啥需要在指令执行周期之后发出中断查询信号
答案:取值周期已经完成(PC)+1->PC的动作,已经保证PC是当前程序下一条指令的地址,因此可以确保中断隐指令中的保存程序断点是正确的,当然不能插入到间址周期或执行周期中,否则可能会导致当前指令执行的结果错误,因此放入最后。[个人理解]
7. 中断周期:
8. 前四步微操作:保存程序断点
9. 第5步:寻找服务的入口地址
10. 第6步:关中断
中断周期
推荐:

  1. 4.2 IO接口电路中的程序中断方式
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值