第6章 异常和中断处理及其电路实现
单片机的中断与异常处理方法
单片机的中断与异常处理方法在单片机的工作过程中,中断和异常处理是非常重要的概念和方法。
它们能够有效地提高单片机的响应能力和灵活性,使其能够应对各种不同的工作需求和问题。
本文将介绍单片机中断的概念、中断的种类以及针对不同中断的处理方法,同时也会探讨单片机异常处理的原理和方法。
一、中断的概念和种类中断是指在一个程序执行的过程中,由于某种特殊的事件发生,导致程序的正常执行被打断,转而去执行一个与当前任务无关的子程序,完成该事件的相应处理。
中断可以分为外部中断和内部中断两种。
1. 外部中断外部中断是指当单片机外部引脚的电平或信号发生变化时,引发中断事件,使单片机停止当前任务的执行,去处理由该外部事件引发的中断服务程序(ISR)。
外部中断常用于与外部设备的交互,如按键输入、传感器检测等。
在编程中,我们可以通过设置中断触发条件和编写相应的中断服务程序来实现对外部中断的处理。
2. 内部中断内部中断是指当单片机内部某个特定的事件发生时,由硬件或软件触发中断请求,并且将控制权交给中断服务程序进行相应的处理。
内部中断的发生可以是由于某个特定条件的满足,如定时器溢出中断、串口接收中断等;也可以是由软件的运行结果触发,如除法溢出中断、地址错误中断等。
不同的内部中断需要通过编程实现相应的中断服务程序。
二、中断的处理方法中断处理是指在中断发生时,单片机通过中断向量表找到相应的中断服务程序,并对中断事件进行处理的过程。
下面将介绍两种常用的中断处理方法。
1. 优先级中断处理优先级中断处理是指对多个中断源按照优先级进行划分和处理的方法。
在单片机的中断系统中,每个中断源都被赋予了一个优先级,高优先级的中断可以打断当前正在执行的低优先级中断,从而增加了中断的响应速度和灵活性。
优先级中断处理需要在编程时设置中断的优先级,并根据不同的中断事件编写相应的中断服务程序。
2. 嵌套中断处理嵌套中断处理是指当一个中断正在执行的过程中,又发生了另一个中断时,将当前中断挂起,转而处理新发生的中断,并在处理完毕后返回原中断继续执行的方法。
微机原理精品课件牛勇第六章 中断系统
图 6.3 CPU实现中断的过程示意:
6.1.1
中断控制系统的作用
1、分时处理(按规定的时间处理某个过程)
2、故障处理(对系统运行过程中出现的特殊情 况及时给予处理,例如除数为0时) 3、实时处理(对系统有特殊要求的部分需要在 整个运行过程中实时处理 , 了解系统的运行状 态),此为我们学习的主要内容!!
2)外部硬件中断(续)
(2)可屏蔽中断 出现在INTR线上的中断请求信号。是否响 应INTR的请求,取决于中断允许标志位IF的状 态。只有当中断允许标志位IF为1时,CPU才能 响应INTR的中断请求。 如果IF为0,即使INTR端有中断请求信号CPU 也不会响应。这种情况称为中断屏蔽。
3.中断类型号和中断向量表(重点掌握)
此节内容为要解决的第二个问题:如何处理中断请求 处理一个中断请求的过程,就是如何处理以下一 些基本问题的过程: 1)如何产生中断输入信号(请求中断)。 2)如何识别中断源。 3)如何把控制转给中断服务程序。 4)如何保护和恢复中断的现场。 5)如何识别优先级较高的中断。 6)如何开放和关闭中断。 也就是说如何实现图6-1所示的过程
问题的提出:如何确定中断服务的入口地址?中断号 与中断服务程序对应关系? 8086解决的方法为设置中断类型号与中断向量表: 中断类型号(中断向量):8086对每种中断都指定一 个中断类型号,共256个,从0~255(00H ~ FFH), 每一个中断类型号都与一个中断服务程序相对应(如 果有该类型号的中断)。中断服务程序存放在存储区 内,但该中断服务程序的入口地址存在内存储器的中 断向量表内(固定区域),供中断被响应后能正确的 找到该类型号的中断服务程序的入口。
异常及中断处理讲解
ARM异常中断处理概述1、中断的概念中断是一个过程,是CPU在执行当前程序的过程中因硬件或软件的原因插入了另一段程序运行的过程。
因硬件原因引起的中断过程的出现是不可预测的,即随机的,而软中断是事先安排的。
2、中断源的概念我们把可以引起中断的信号源称之为中断源。
3、中断优先级的概念ARM处理器中有7种类型的异常,按优先级从高到低的排列如下:复位异常(Reset)、数据异常(Data Abort )、快速中断异常(FIQ)、外部中断异常(IRQ)、预取异常(PrefetchAbort )、软件中断(SWI)和未定义指令异常(Undefined instruction )ARM体系异常种类当异常发生时,处理器会把PC设置为一个特定的存储器地址。
这一地址放在被称为向量表(vector table )的特定地址范围内。
向量表的入口是一些跳转指令,跳转到专门处理某个异常或中断的子程序。
当异常产生时,ARM core:拷贝CPSR 至U SPSR_vmode>设置适当的CPSR位:改变处理器状态进入ARM状态改变处理器模式进入相应的异常模式设置中断禁止位禁止相应中断(如果需要)保存返回地址到LR_vmode>设置PC为相应的异常向量返回时,异常处理需要:从SPSR_vmode:恢复CPSR从LR_vmode>恢复PCNote:这些操作只能在ARM态执行.当异常发生时,分组寄存器r14和SPSR用于保存处理器状态,操作伪指令如下。
R14_<excepti on _mode> = retur n linkSPSR_<exception_mode> = CPSRCPSR[4: 0] = exception mode numberCPSR[5] = 0 /* 进入ARM 状态*/If <excepti on _mode> = = reset or FIQ the nCPSR[6] = 1 /*屏蔽快速中断FIQ*/CPSR[7] = 1 /*屏蔽外部中断IRQ*/PC = excepti on vector address异常返回时,SPSF内容恢复到CPSR 连接寄存器r14的内容恢复到程序计数器PCo注:cortex-A8系统中支持通过设置CP15的c12寄存器将异常向量表的首地址设置在任意地址。
重学计算机组成原理(十二)-异常和中断
重学计算机组成原理(十二)-异常和中断1 概览完好的程序都满足以下特征•自动运行我们的程序和指令都是一条条顺序执行,不需要通过键盘或者网络给这个程序任何输入•正常运行没有遇到计算溢出之类的程序错误。
不过,现实的软件世界可没有这么简单•程序不仅是简单的执行指令,更多的还需要和外部的输入输出打交道•程序在执行过程中,还会遇到各种异常情况,比如除以0、溢出,甚至我们自己也可以让程序抛出异常。
遇到这些情况,计算机是怎么运转的呢,也就是说,计算机究竟是如何处理异常的2 异常:硬件、系统和应用的组合拳2.1 软件还是硬件异常?一提到异常(Exception),可能你的第一反应就是Java中的Exception。
不过我们今天讲的,并不是这些软件开发过程中遇到的“软件异常” 而是和硬件、系统相关的“硬件异常”。
当然,“软件异常”和“硬件异常”并不是业界使用的专有名词,只是我为了方便给你说明,和Java中软件抛出的Exception进行的人为区分,你明白这个意思就好。
尽管,这里我把这些硬件和系统相关的异常,叫作“硬件异常”。
但是,实际上,这些异常,既有来自硬件的,也有来自软件层面的。
比如,我们在•硬件层面当加法器进行两个数相加的时候,会遇到算术溢出或者,你在玩游戏的时候,按下键盘发送了一个信号给到CPU,CPU要去执行一个现有流程之外的指令,这也是一个“异常”同样,来自•软件层面比如我们的程序进行系统调用,发起一个读文件的请求。
这样应用程序向系统调用发起请求的情况,一样是通过“异常”来实现的。
2.2 异常的一生异常, 其实是一个硬件和软件组合到一起的处理过程。
•异常的前半生异常的发生和捕捉,在硬件层面完成•异常的后半生异常的处理,其实是由软件来完成的!2.3 异常代码计算机会为每一种可能会发生的异常,分配一个异常代码(Exception Number) 异常代码也叫作中断向量(Interrupt Vector)。
操作系统的中断处理与异常处理机制
操作系统的中断处理与异常处理机制在计算机系统中,操作系统是一个管理和协调系统资源的软件,中断处理和异常处理是操作系统的核心功能之一。
中断处理和异常处理机制使得操作系统能够及时响应硬件设备或软件程序的请求,并采取相应的措施进行处理,保证系统的稳定性和可靠性。
本文将详细介绍操作系统的中断处理与异常处理机制。
一、中断处理机制中断是指在计算机系统运行过程中,某个硬件设备或者软件程序发出的一种请求,通过打断正常的程序执行流程,通知操作系统去处理该请求。
中断可以分为硬件中断和软件中断两类。
1. 硬件中断硬件中断是由硬件设备发生的一种中断事件,比如外设设备的输入输出操作,时钟中断等。
当硬件设备发生中断事件后,会向处理器发送一个中断信号,处理器暂停当前的执行任务,保存当前的上下文信息,并转入中断处理程序来处理中断事件。
中断处理程序会根据中断类型来执行相应的操作,比如读取输入设备的数据,将数据写入输出设备等。
处理完中断事件后,处理器会恢复之前被中断的任务继续执行。
2. 软件中断软件中断是由软件程序主动触发的一种中断事件,也称为系统调用。
软件中断通常由用户态程序调用系统库函数来完成,通过系统调用指令将自己的执行权限转交给操作系统,由操作系统代为执行相应的操作。
常见的软件中断包括文件读写操作、进程创建与销毁等系统调用。
中断处理机制的优点在于能够及时响应外部设备和软件程序的请求,提高了系统的实时性和处理能力。
同时,使用中断处理机制可以实现很多复杂的功能,比如多任务处理、设备驱动程序等。
二、异常处理机制异常是指在程序执行过程中出现的一种非正常情况,例如非法指令、除数为零等。
异常处理机制能够捕捉这些异常事件并进行相应的处理。
异常处理机制主要分为硬件异常和软件异常两类。
1. 硬件异常硬件异常指的是由硬件设备产生的异常事件,如页错误、越界访问等。
当硬件设备检测到异常事件后,会向处理器发送一个异常信号,处理器会中断当前任务的执行,并把当前的上下文信息保存起来,然后转入异常处理程序去处理异常事件。
简述异常与中断处理的一般流程
简述异常与中断处理的一般流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!1. 异常或中断发生:当异常或中断事件发生时,硬件会自动将相关信息保存到特定的寄存器中,例如程序计数器(PC)、栈指针(SP)等。
操作系统中的中断与异常处理机制
操作系统中的中断与异常处理机制在计算机系统中,操作系统起着至关重要的作用,它负责管理和控制计算机的资源,并提供给用户一个友好和高效的界面。
而在操作系统中,中断与异常处理机制是其中的重要组成部分。
一、什么是中断与异常处理机制中断与异常处理机制是操作系统用来响应特定事件或异常情况的方式。
当计算机系统发生某些事件,例如硬件故障、外部设备的请求等,操作系统会立即停止正在执行的任务,转而处理该事件。
在这种情况下,中断与异常处理机制起到了极为重要的作用。
二、中断与异常的区别尽管中断和异常都能够引发操作系统的响应,但两者之间存在一些区别。
1. 中断:中断是由外部设备发起的,例如键盘输入、鼠标点击等。
当外部设备需要与操作系统进行交互时,它会发出中断信号,这时操作系统会中断当前任务的执行,转而响应中断事件。
中断是一种在程序执行时突然发生的外部事件,需要处理器立即中断正在执行的任务并执行相应的中断处理程序。
2. 异常:异常是由程序内部产生的事件,也称为软中断。
当程序运行过程中出现错误、非法操作或者某些特殊事件时,会触发异常。
操作系统会根据异常的类型和优先级来处理该异常,进而采取相应的行动,例如打印错误信息、终止程序执行,或者进行异常处理。
三、中断与异常的处理流程中断与异常处理机制的处理流程如下:1. 中断发生:当外部设备产生中断信号时,处理器会暂停当前任务的执行,并将控制权交给操作系统。
2. 中断处理程序:操作系统会根据中断类型调用对应的中断处理程序。
中断处理程序会执行与中断相关的操作,例如获取键盘输入、响应鼠标事件等。
3. 中断处理完成:中断处理程序执行完毕后,操作系统会将控制权重新交还给之前的任务,使其继续执行。
4. 异常发生:在程序执行过程中,如果出现错误、非法操作或其他特殊事件,会触发异常。
5. 异常处理程序:操作系统会根据异常类型和优先级调用相应的异常处理程序。
异常处理程序会处理异常情况,例如打印错误信息、修复错误、终止程序执行等。
第6章 中断系统
中断系统的功能
CPU响应中断时,会停止当前执行程序,转去执行中断处 理程序,原程序被打断的地方称为“断点”。
断点地址是指中断处理程序结束后,返回原程序恢复执 行的第一条指令的地址,又称“返回地址”。
现场是指进入中断服务程序之前CPU各个寄存器的状态。
正常程序 CS : IP 断点 CS : IP+1 继续执行 中断服务程序
中断系统的功能
2. 链式优先权排队电路(应答方式)
外设1
+5V D7 ~ D0 INTA INTR IOR IOW
外设2
IEI 接口2 IEO
SEL1 SEL2
外设3
IEI 接口3 IEO
SEL3
IEI 接口1 IEO
※ 电路说明
① 每个接口有一个中断允许输入IEI和中断允许输出IEO, 只有IEI为高电平时才允许该接口芯片发中断请求; ② IEO=IEI•INT INT表示该设备有中断请求; ③ 每个接口芯片的中断请求输出为OC门,具有负逻辑的 “线或”关系; ④ 响应中断时由INTA从接口读取中断矢量。 计算机原理讲义
中断 处理
返回断点
3. 中断服务完成时将中断申请信号撤销 4. 中断服务完成后恢复现场和断点,返回原程序 计算机原理讲义
中断系统的功能
(二)对中断进行控制
1. 对中断申请进行控制 例1 一个输入设备的中断接口电路
三 态 缓冲器 D7~D0 INTR IOW A15 ~ A0 IOR INTA 地址 译码 器 三 态 缓冲器 B Q R C D 中断类型 码(0FH) D7~D0
中断系统
第六章 中断系统
计算机原理讲义
中断的作用
第6.1节 计算机中断系统
异常及中断处理
一.ARM异常中断处理概述1、中断的概念中断是一个过程,是CPU在执行当前程序的过程中因硬件或软件的原因插入了另一段程序运行的过程。
因硬件原因引起的中断过程的出现是不可预测的,即随机的,而软中断是事先安排的。
2、中断源的概念我们把可以引起中断的信号源称之为中断源。
3、中断优先级的概念ARM处理器中有7种类型的异常,按优先级从高到低的排列如下:复位异常(Reset)、数据异常(Data Abort)、快速中断异常(FIQ)、外部中断异常(IRQ)、预取异常(Prefetch Abort)、软件中断(SWI)和未定义指令异常(Undefined instruction)二.ARM体系异常种类下面是ARM的7种异常当异常发生时,处理器会把PC设置为一个特定的存储器地址。
这一地址放在被称为向量表(vector table)的特定地址范围内。
向量表的入口是一些跳转指令,跳转到专门处理某个异常或中断的子程序。
当异常产生时, ARM core:拷贝CPSR 到SPSR_<mode>设置适当的CPSR 位:改变处理器状态进入ARM 状态改变处理器模式进入相应的异常模式设置中断禁止位禁止相应中断(如果需要)保存返回地址到LR_<mode>设置PC 为相应的异常向量返回时, 异常处理需要:从SPSR_<mode>恢复CPSR从LR_<mode>恢复PCNote:这些操作只能在ARM 态执行.当异常发生时,分组寄存器r14和SPSR用于保存处理器状态,操作伪指令如下。
R14_<exception_mode> = return linkSPSR_<exception_mode> = CPSRCPSR[4∶0] = exception mode numberCPSR[5] = 0 /*进入ARM状态*/If <exception_mode> = = reset or FIQ thenCPSR[6] = 1 /*屏蔽快速中断FIQ*/CPSR[7] = 1 /*屏蔽外部中断IRQ*/PC = exception vector address异常返回时,SPSR内容恢复到CPSR,连接寄存器r14的内容恢复到程序计数器PC。
中断异常处理流程
计算机体系结构中,异常或者中断是处理系统中突发事件的一种机制,几乎所有的处理器都提供这种机制。
异常主要是从处理器被动接受的角度出发的一种描述,指意外操作引起的异常。
而中断则带有向处理器主动申请的意味。
但这两种情况具有一定的共性,都是请求处理器打断正常的程序执行流程,进入特定程序的一种机制。
若无特别说明,对“异常”和“中断”都不作严格的区分。
本文结合经过实际验证的代码对ARM9中断处理流程进行分析,并设计出基于S3C2410芯片的外部中断处理程序。
1.异常中断响应和返回系统运行时,异常可能会随时发生。
当一个异常出现以后,ARM微处理器会执行以下几步操作:1) 将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。
2) 将CPSR复制到相应的SPSR中。
3) 根据异常类型,强制设置CPSR的运行模式位。
4) 强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。
这些工作是由ARM 内核完成的,不需要用户程序参与。
异常处理完毕之后,ARM 微处理器会执行以下几步操作从异常返回:1) 将连接寄存器LR的值减去相应的偏移量后送到PC中。
2) 将SPSR复制回CPSR中。
3) 若在进入异常处理时设置了中断禁止位,要在此清除。
这些工作必须由用户在中断处理函数中实现。
为保证在ARM处理器发生异常时不至于处于未知状态,在应用程序的设计中,首先要进行异常处理。
采用的方式是在异常向量表中的特定位置放置一条跳转指令,跳转到异常处理程序。
当ARM处理器发生异常时,程序计数器PC会被强制设置为对应的异常向量,从而跳转到异常处理程序。
当异常处理完成以后,返回到主程序继续执行。
可以认为应用程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。
2.异常处理程序设计2.1 异常响应流程由于向量表的限制,只能有一条指令B完成32MBX围内的跳转,并不能保证所有的异常处理函数都位于32MBX围内。
操作系统的中断处理与异常机制
操作系统的中断处理与异常机制在计算机系统中,操作系统起着至关重要的作用,它负责管理和控制计算机硬件资源,提供用户与计算机的交互界面。
而操作系统的中断处理与异常机制是其核心功能之一。
本文将探讨操作系统中断处理与异常机制的原理和作用。
一、中断处理机制中断是操作系统与外部设备进行通信的一种方式,它可以打断正在运行的程序,使操作系统能够及时响应外部设备的请求。
中断的触发通常由硬件设备或软件指令发起。
1. 中断分类中断可以分为硬件中断和软件中断两种。
硬件中断是由外部设备引起的,并且是在计算机系统的内核态中操作。
常见的硬件中断包括时钟中断、键盘中断、磁盘中断等。
时钟中断用于实现操作系统的时间片轮转调度算法,键盘中断用于读取用户的输入,磁盘中断用于处理磁盘读写操作等。
软件中断是由系统调用指令或异常指令发起的,常用于用户程序与操作系统之间的通信。
用户程序可以通过软件中断请求操作系统提供的服务,如文件读写、进程创建等。
2. 中断处理步骤中断处理包括以下步骤:(1)中断请求发生:硬件设备或软件指令触发中断请求。
(2)中断服务例程保存现场:当前正在执行的指令和寄存器状态等被保存起来,以便在中断处理完毕后能够回到原来的执行点。
(3)中断服务例程执行:操作系统根据中断类型执行相应的中断服务例程。
(4)中断处理完毕:中断服务例程执行完毕,操作系统恢复原来的程序继续执行。
二、异常机制异常是计算机程序在执行过程中发生的一些异常情况,例如除零错误、越界访问等。
操作系统通过异常机制来处理这些异常情况,并采取相应的措施,以保证系统的稳定性和安全性。
1. 异常分类异常可以分为故障、陷阱和中断三种类型。
故障是指在程序执行过程中发生的错误,例如除零错误、页错误等。
故障可以由硬件或软件引起,当故障发生时,操作系统会采取一系列的错误处理措施,如终止异常程序的执行或者分配新的资源等。
陷阱是一种有意为之的异常情况,可用于实现系统调用和用户程序与操作系统之间的交互。
中断及异常学习课件
软件中断 用指令 调用中断程序
8.2 中断 按中断源的不同,中断分为内中断和外中断。 1、内中断(软中断) 指CPU执行某些特殊操作或由INT指令引起的中断 ① 被零除操作或OF=1时执行INTO指令引起 ② 使用DEBUG中的单步或断点设置操作引起 ③ 执行INTn 指令引起
8.5 中断及异常的优先级
当有多个中断源同时产生中断申请时, CPU先响应优先权最高的中断源, 再响应优先级较低的中断源。
高 低 内中断 ( 除零,INT 指令,断点,INTO指令 ) 非屏蔽中断 可屏蔽中断 低 内中断( 单步 )
8.6实地址方式下的中断 1.中断矢量表 存放各类中断的中断 服务程序的入口地址 每个入口占用4 Bytes, 低字为段内偏移, 高字为段基址 表的地址位于内存的 00000H~003FFH, 大小为1KB,共256个入口
NMI
INTR
中断逻辑
软件中断指令
溢出中断
除法错
单步中断
非屏蔽中断请求
中断控 制器 8259A PIC
8086/8088CPU内部逻辑
断点中断
可 屏 蔽 中 断 请 求
n
4
3
0
1
2
8086/8088中断源类型:
8.3异常 外部中断或硬件中断通常称为中断,软件中断或异常中断通常称为异常(Exception) 1.异常分类 故障(Fault) 陷阱(Trap) 中止(Abort) 2.异常错误码
指外部芯片通过 CPU的INTR引脚或NMI引脚 发出中断申请引起的中断。 当INTR上有高电平信号 当NMI上有上升沿信号
2、外中断(硬中断)
可屏蔽中断 由INTR引脚引起的中断,称可屏蔽中断。 CPU是否响应INTR引脚上的中断请求取决于IF标志: IF=1,CPU响应INTR引脚上的中断请求 IF=0,CPU不响应INTR引脚上的中断请求 即当IF=0时,将INTR引脚上的中断申请屏蔽。
中断与异常
从而允许CPU通过数据总线读这个向量 c. 把引发信号发送到处理器的INTR引脚,即产
生一个中断 d. 等待,直到CPU应答这个信号;收到应答后,
清INTR引脚
3. 返回到第一步
传统的中断控制器:8259A
每个向量在表中有相应的中断或者异常处理程序 的入口地址。
每个描述符8个字节,共256项,占用空间2KB 内核在允许中断发生前,必须适当的初始化IDT
CPU的idtr寄存器指向IDT表的物理基地址
5.1.4 中断描述符表
• 中断描述符表(IDT):即中断向量表, 每个中断占据一个表项
5.1.4 中断描述符表
中断的基本知识中断描述符表的初始化中断处理中断的下半部处理机制中断的应用时钟中断为什么会有中断内核必须处理其他任务只有当外设真正完成了准备好了时cpu才转过来处理外设ia32linuxcpu内部中断或计算机内部硬件出错引起的异常51551中断信号的作用中断信号提供了一种特殊的方式使得cpu转去运行正常程序之外的代码比如一个外设采集到一些数据发出一个中断信号cpu必须立刻相应这个信号否则数据可能丢失当一个中断信号到达时cpu必须停止它当前正在做的事并且切换到一个新的活动为了做到这这一点在进程的内核态堆栈保存程序计数器的当前值即eip和cs寄存器并把与中断信号相关的一个地址放进程序计数器中断信号的处理原则当内核正在做一些别的事情的时候中断会随时到来
中断掠影
中断控制是计算机发展中一种重要的技术。最初它是为 克服对I/O接口控制采用程序查询所带来的处理器低效率 而产生的。
中断控制的主要优点是只有在I/O需要服务时才能得到处 理器的响应,而不需要处理器不断地进行查询。由此, 最初的中断全部是对外部设备而言的,即称为外部中断 (或硬件中断)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中断向量表也称中断入口地址表,位于0000H~03FFH。 共256组,每组占四个字节 CS:IP。向量地址=中断类型号×4
例1:除法错的中断类型号 为0,故其向量地址 为:0×4=0
例2:NMI的中断类型号为 2,故其向量地址为: 2×4=8
除法错 CS:IP 单步 CS:IP
NMI CS:IP
000~003H 004~007H 008~00BH
故障:执行指令引起的异常事件,如溢出/缺页/堆栈溢出/访问超时等
自陷:预先安排的事件,如单步跟踪、系统调用等(自愿中断)
终止:硬故障事件,机器将“终止”,调出中断服务程序重启操作系统
思考:哪些故障补救后可继续执行,哪些只好终止当前进程?
缺页等:补救后可继续,回到发生故障的指令重新执行
溢出、除数为0、非法操作、内存保护错等:终止当前进程
其中n=3 (INT 3)时为断点设置,该指令执行后自动产生类型3中断 处理器检测异常:CPU执行指令时产生的异常,如:除法错、
无效操作码、缺页、单 步跟踪调试等 除法错:除数为0或商溢出,则产生类型0中断 单步跟踪:当自陷位TF=1且处在开中断状态(即IF=1)时,每条指 令执行完就自动产生类型1中断
• 当收到中断请求后,CPU必须通过相应的软 件或硬件的方法来判断是哪个设备提出中断 请求。
• 在微机中广泛采用这种模式。
INTR
CPU 中断源1
INTA
中断源2
……
中断源n
(2)多线中断
• 在多线中断技术中,各个中断源单独设置中 断请求线,将中断请求直接送往CPU,如下图。
INTR 中断源1
INTR 中断源2
②保护断点和程序状态:将断点和程序状态保存到堆栈或特 殊寄存器中
PC→堆栈 或 EPC(专门存放断点的寄存器) PSWR →堆栈 或 EPSWR (专门保存程序状态的寄存器) PSW—Program Status Word:程序状态字,包括条件码、中断码、状态位等 PSWR(PSW寄存器):用于存放程序状态字寄存器。如,X86的FLAGS
④切换到具体的异常处理程序执行
3.中断处理过程
• 中断过程:中断响应+中断处理
中断响应的结果是调出相应的中断服务程序
• 中断处理
– 是指执行相应中断服务程序的过程 – 不同的中断源其对应的中断服务程序不同 – 典型的中断处理(中断服务程序)分为三个阶段
• 准备阶段 保护现场及旧屏蔽字 查明原因(软件识别中断时) 设置新屏蔽字 开中断
0
16 15
0
IP[7:0]
876
210
0 ExcCode
0
c
MIPS Cause寄存器中ExcCode的定义
ExcCode
0 1 2 3 4 5 6 7 8 9 10
助记符 种类
Int 中断 Mod 异常
TLBL TLBS AdEL AdES
异常 异常 异常 异常
IBE DBE Sys Bp
异常 异常 异常 异常
• 按发生原因分为硬故障中断和程序性中断两类 回到下条指令!
硬故障中断:如电源掉电、硬件线路故障等
程序性中断:执行某条指令时发生的“例外(Exception)”,如溢出/缺页/
越界/越权/非法指令/除数为0/堆栈溢出/断点/单步/系统调用等
• 按处理方式分为故障(fault)、自陷(Trap)和终止(Abort)三类
CS:IP CS:IP 3FC~3FFH
中断向量表(异常表)中每一项是对应中断服务程序的 入口地址。被称为中断向量(Interrupt Vector) 中断向量表的起始地址存放在一个异常表基址寄存器中
处理器中的异常处理机制
检测到异常时,处理器必须进行以下基本处理
① 关中断:使处理器处于“禁止中断”状态,以防止新异常 (或中断)破坏断点和现场 关中断!即:将中断允许标志清0。
– 多重中断的概念 在一个中断处理(即执行中断服务程序)过程中,若又 有新的中断请求发生,而新中断优先级高于正在执行的 中断,则应立即中止正在执行的中断服务程序,转取处 理新的中断。这种情况为多重中断,也称中断嵌套。
– 中断优先级的概念 中断响应优先级——由查询程序或硬联排队线路决定的 优先权,反映多个中断同时请求时选择哪个响应 中断处理优先级——由各自的中断屏蔽字来动态设定, 反映本中断与其它中断之间的关系 中断响应的优先级由硬件排队线路决定, 而中断处理优先级由软件设置屏蔽码决定 SKIP
− CacheErr
−
种类
异常 异常
异常 −
异常 −
异常 异常
−
异常 −
描述
算术操作时结果溢出
保留
保留TLeabharlann B 保留CACHE出错 保留
c
2.向量中断
• 向量中断方式是为每一个中断源设置一个中 断向量。
• 中断向量包括该中断源的中断服务程序首地 址和程序状态字PSW—Program Status Word。
③ 识别中断源 取得中断服务程序首地址和初 始 PSW分别送PC和PSWR
6.1.2 查询中断和向量中断
• 问题:中断检测能否和异常检测一样在指令执行 中进行?
• 中断随机发生,与指令执行不同步,不能在指令执 行中检测,总是每条指令执行结束时检测
• 问题:为什么在指令执行中不能响应中断? • 因无法回到一条指令的中间继续执行
• 在CPU内部设有一个“中断允许”触发器。 功能如下表:
中断允许触发器 CPU是否响应中断 类型 指令
1
响应
允许中断 开中断
0
不响应
禁止中断 关中断
所有中断源的中断屏蔽触发器构成中断屏蔽寄存 器,该寄存器可以由程序来读写。
进入中断处理,系统自动执行“关中断” 。
多重中断的概念
• 多重中断和中断处理优先权的动态分配
外中断:通过中断请求线INTR和NMI来实现
INTR:可屏蔽中断 (外设中断源引起的中断) NMI:不可屏蔽中断 (重要或紧急的硬件故障),属于类型2中断 所有事件都被分配一个“中断类型号” 每个中断都有相应的“中断服务程序” 可根据中断类型号找到中断服务程序的入口地址
8086/8088的中断向量表
中断 响应
中断 处理
• 中断响应
– 中断响应是指主机发现外部中断请求,中止现行程序
的执行,到调出中断服务程序这一过程。
(1)中断响应的条件
① CPU处于开中断状态
② 在一条指令执行完
② 至少要有一个未被屏蔽的中断请求
问题:中断响应的时刻与异常处理的时刻是否相同?为什么?
中断一定是在一条指令执行结束后开始查询有无中断请求,有的话
• 例如把中断响应优先级高的中断请求放在中 断寄存器左边,中断响应优先级较低的中断 请求放在右边。
1.中断请求信号的传送
• 中断请求信号产生后,可以通过中断请 求线传送给CPU。
• 按照中断请求线的数目分为 单线中断 多线中断 多线多级中断
(1)单线中断
• 各中断源的请求信号通过三态门汇集到一根 公共请求线上,如下图。
CPU ……
INTR 中断源n
• 当CPU收到中断请求信号后,就知道了请求 源是谁,这有利于提高中断响应的速度,便 于采用向量中断技术,但其硬件代价较大。
• 缺点:中断源的数目难以扩充。
(3)多线多级中断
• 当中断源的数目大于中断输入线的数目时, 通常是将中断请求线连接成二维结构(多线 多级技术),如下图。
RI 异常
描述 中断(IP[7:0]指出中断源) TLB TLB TLB
执行系统调用指令
c
MIPS Cause寄存器中ExcCode的定义
ExcCode 11 12 13 14 15
16 - 22 23 24
25 - 29 30 31
助记符 CpU Ov Tr − FPE −
WATCH MCheck
• 中断处理阶段 • 恢复阶段
关中断 恢复现场及旧屏蔽字 清“中断请求” 开中断 中断返回
6.1.3 中断屏蔽和中断嵌套
• 程序中断方式(中断驱动方式)
– 中断响应的条件和中断响应过程 – 中断处理过程 – 中断嵌套和中断屏蔽
禁止中断与允许中断
• 中断源提出中断请求后,由于某种条件存 在,CPU不能中止现行程序的执行,称为禁 止中断。
多重中断嵌套
中断优先级的顺序是: 3# > 2# > 1#
Stack是内存中采用 “FIFO”的一块特殊
的存储区
BACK
6.1.4 中断优先级
• 当多个中断源同时提出中断请求时,处理机 如何处理呢?
• 中断响应优先级是指当有多个中断同时发生 时,对中断响应的优先次序。
• 安排原则:把全部中断源按轻重缓急进行排 队并给予优先权。
立即响应,所以一定是在当前指令执行完时响应中断,而“异常”
发生在指令执行过程中,所以不能等到指令执行完才进行异常处理
。
中断响应
(2)中断响应过程
执行一条隐指令,可能需完成 一次总线操作,从总线上取中 断类型号 具体来说,处理器做三件事:
① 关中断 0=>中断允许触发器CIEN
② 保护断点和程序状态 PC=>堆栈(或特殊寄存器EPC) PSW=>堆栈
MIPS中,术语“异常”是指控制流中任何意外的改变, 而无论其产生原因是来自处理器内部还是外部
术语“中断”则只用于由外部引起的事件 本章主要介绍如何在数据通路中增加“异常”和“中断”的 检测和处理逻辑
异常和中断的处理
•
使程序执行被
“中断”
的事件有两类
思考:自陷处理完后回 到哪条指令执行?
– 内部“异常”:CPU内发生的意外事件或特殊事件