首页 理论教育 计算机组成原理:中断的处理过程及功能

计算机组成原理:中断的处理过程及功能

时间:2023-10-31 理论教育 版权反馈
【摘要】:中断的处理过程一般包括:I/O设备提出中断请求和CPU响应中断两大步骤。中断的处理过程实质上是执行一段与中断源相应的中断服务程序,对不同的中断源,应有不同的中断服务程序。因此中断系统的主要功能是在中断事件发生时,将程序转向相应的中断服务程序。②高级别中断可以使低级别中断过程再中断,称为中断嵌套。③同级中断源同时申请中断时,按事先约定的次序处理。

计算机组成原理:中断的处理过程及功能

中断的处理过程一般包括:I/O设备提出中断请求和CPU响应中断两大步骤。下面分别叙述。

1.I/O设备提出中断请求

(1)中断源

中断由中断源发出,引起中断的事件称为中断源。中断的复杂性主要表现在中断源的多样性上。常见的中断源引起的中断包括以下几个方面。

①I/O设备中断。如I/O设备准备好后向CPU发出的中断请求。

②故障中断。如掉电等要求CPU进行紧急处理的中断请求等。

软件中断。如程序在运行过程中发生溢出等错误引起中断。

④实时时钟中断。当外部时钟电路需要定时时,可由CPU发出命令,时钟电路开始工作,规定的时间到后,时钟电路发出中断请求,由CPU加以处理。

⑤为了调试程序而设置的中断。例如,DEBUG的某些调试命令可以设置断点进行调试。

通常,把由处理机外部引起的中断称为外中断(也称为硬中断,如I/O设备中断),由CPU内部引起的中断称为内中断(也称为软中断,如软件中断)。下面主要讨论I/O设备中断。

中断的处理过程实质上是执行一段与中断源相应的中断服务程序,对不同的中断源,应有不同的中断服务程序。计算机为了处理多种中断,要事先把处理这些中断的服务程序分别放在内存的不同存储区域。因此中断系统的主要功能是在中断事件发生时,将程序转向相应的中断服务程序。

(2)中断请求的提出

中断过程是从中断源发出中断请求开始的。为了让每个中断源都能发出中断请求信号,要为每一个中断源设一个中断请求触发器INTR,通过将中断请求触发器置1向CPU发出中断请求信号INTR,并一直保留到CPU响应了这个中断,才可以将这个中断请求信号清除。

如图7-6所示,中断源向CPU提出中断请求的方法有两种:一种是每一个中断请求触发器发出的中断请求信号连接到CPU中断寄存器INT中的一位,形成多线中断;另一种是所有中断请求信号逻辑连成一个中断请求信号,送入CPU中的一位中断寄存器INT,形成单线中断,CPU再按一定的顺序查询(如图中用INTA信号查询)是哪一个中断源发出了申请。

图7-6 中断请求

(3)中断排队

由于中断请求的随机性,有可能出现多个中断源同时(一个指令周期内)发出中断请求的情况。那么在这种情况下,CPU究竟应该响应哪一个中断源的请求呢?这就需要根据中断源的重要性、紧迫性把中断源分成若干等级,以便排出一个处理顺序,让最重要、最紧迫的中断优先处理,这就是中断排队或称为中断判优。CPU处理中断排队的原则如下所述。

①不同级别的中断发生时,按级别高低依次处理。

②高级别中断可以使低级别中断过程再中断,称为中断嵌套。但较低级中断不能使较高级中断过程再中断;同级中断过程也不能被同级中断再中断。

③同级中断源同时申请中断时,按事先约定的次序处理。

这些原则可以用电路实现(称为硬件判优),如图7-7所示。图7-7为图7-6对应的两种中断排队线路,实际上是图7-6两种线路的完善。中断判优线路的基本特点是优先级较高的设备提出中断请求后,就自动封锁优先级别较低的中断请求。

(4)中断屏蔽

简单地说,中断屏蔽就是I/O设备发出中断请求,但CPU不理睬它,当作没看见。中断屏蔽的具体方法如图7-8所示,即在I/O设备的各中断线路中设一个屏蔽触发器IM,可以将它置0或置1。置1时屏蔽,即将该I/O设备的中断请求触发器的INTR信号和0(置1时)逻辑与。

应该指出,并不是所有的中断都是可屏蔽的中断,有的中断是不能被屏蔽的,如软中断是不能被屏蔽的,称为非屏蔽中断。I/O设备中断是可以被屏蔽的,称为可屏蔽中断。

(5)中断的禁止和开放

简单地说,禁止中断就是CPU拒绝任何中断。拒绝的原因可能是CPU刚响应了一个中断或刚处理完一个中断过程,寄存器的内容还没有来得及保存或恢复。此时,如果立即响应新的中断,就会造成混乱。为了控制是否响应中断,CPU设置了一个中断允许触发器IFF:IFF-1称为中断开放,即CPU允许中断(或称开中断);IFF-0称为中断屏蔽,即CPU禁止中断(或称关中断)。

图7-7 中断排队线路

图7-8 中断屏蔽

开中断和关中断常用两条指令EI(开中断指令)和DI(关中断指令)来完成。

2.CPU响应中断(www.xing528.com)

CPU响应中断的条件为,①有中断请求信号;②CPU开中断,中断允许触发器为IFF-1中断开放;③当前一条指令执行完毕。

一旦CPU响应中断的条件得到满足,就开始响应中断,转入响应中断周期。中断响应实际上在计算机中是执行一条隐指令,在该隐指令中CPU完成两个功能:一是保存原程序的断点和现场;二是转向中断服务程序。

(1)断点和现场的保存和恢复

CPU响应中断前,将要执行的下一条指令的地址(由于中断,该条指令不能继续执行了)保存起来,以便返回时,能知道这个地址,继续执行原来的程序,这个地址称为断点。

另一方面,CPU响应中断后,它的一些寄存器(包括累加器通用寄存器、状态寄存器等)就要在中断服务程序中使用。为此在中断服务程序处理之前,必须把这些寄存器的内容(称为中断前的现场)保存起来,以便中断服务程序处理结束后要返回到原来的主程序时,能把保存的现场恢复出来。

断点和现场一般用堆栈进行保存,保存时进行入栈操作,恢复时进行出栈操作,实现简单,特别适用于多级中断的情况。

(2)转中断服务程序的入口地址

每一个中断源,都有一个中断服务程序。这些中断服务程序分别放在内存的某些固定区域中,因此中断处理的关键是找出这些服务程序的首地址(也称入口地址)。

寻找中断服务程序入口地址的方法很多,下面介绍微机中常用的向量法。把所有中断服务程序的入口地址组织成为一个中断向量表,存放在内存中的一片连续的地址空间,如图7-9所示,它是8086微机的中断向量表,即在内存单元0~1023中存有256个中断服务程序的入口地址(一个中断服务程序的入口地址占四个单元),对应有256个中断源,编号从0~255。中断向量即中断服务程序的人口地址的地址,0号中断源的中断向量是0,1号中断源的中断向量是4,…,255号中断源的中断向量是1020。若0号中断源的中断服务程序的人口地址为4100,那么存在内存单元0~3中的一定是4100;若1号中断源的中断服务程序的人口地址为2000,那么存在内存单元4~7中的一定是2000……由此,即可方便地根据中断源的中断号查得相应的中断服务程序的入口地址。这个过程一般在中断响应时由硬件(中断逻辑)自动地完成,这种中断称为向量中断。

图7-9 8086微机的中断向量表

(3)关中断

CPU响应中断后,首先应该关中断,不响应其他的I/O设备的中断。直到本次中断处理完毕,要返回主程序前,再开中断,允许响应其他I/O设备的中断。这是单级中断的情况。多级中断的处理办法下面介绍。

(4)一般的中断流程图

不同计算机对中断的处理各具特色,一般而言,中断处理流程如图7-10所示。当CPU执行完一条现行指令时,如果有I/O设备向CPU发出中断请求,那么CPU在满足响应中断的条件下,发出中断响应信号,进入中断周期,即处理三件事:①关中断,表示CPU不再受理其他I/O设备的中断;②保存断点和现场;③转移到处理该中断源的中断服务程序。CPU处理完中断服务程序后,恢复断点和现场,开中断,返回到原来被中断的主程序的下一条指令继续执行下去。这就是中断的处理过程。

重要概念:中断处理过程中的一些要点。

①尽管外界的中断请求是随机的,但CPU只有在当前一条指令执行完毕后,才受理设备的中断请求。

②中断服务程序执行完毕以后,CPU要返回到主程序继续执行。执行中断服务程序前必须把断点和现场(一些寄存器的内容)都保存到堆栈中去,返回到主程序时要恢复断点和现场。

③当CPU响应中断后,正要去执行中断服务程序时,可能有另一个新的中断源向它发出中断请求,为了不致造成混乱,CPU要关中断。CPU执行完中断服务程序,开中断,并返回主程序。

④中断处理过程由硬件和软件结合来完成。如中断周期由硬件实现,而中断服务程序由机器指令序列实现。

图7-10 中断处理流程图(单级中断)

3.多级中断

中断处理可分为单级中断和多级中断。单级中断是指在执行中断服务程序的过程中,只能为本次中断服务,不允许打断该服务程序,只有在服务程序完成后,才能响应新的中断请求,这种情况称单级中断。上述介绍的就是单级中断情况。多级中断是指在CPU执行中断服务程序过程中,若优先级高的中断源有中断请求,那么级别低的中断服务程序被中断,转去响应优先级更高的中断服务程序,如图7-11所示。

图7-11 多级中断系统示意图

多级中断的特点:①有相当数量中断源;②每个中断被分配一个优先级;③优先级高的可以打断优先级低的中断服务程序。

对多级中断,我们着重说明如下几点。

①一个系统若有n级中断,在CPU中就有n个中断屏蔽触发器,总称为中断屏蔽寄存器。与单级中断不同,在多级中断中,中断屏蔽寄存器的内容是一个很重要的现场,因此在响应中断时,需要把中断屏蔽寄存器作为CPU的现场保存起来,并设置新的中断屏蔽寄存器。一般在某一级中断被响应后,要屏蔽本级和低于本级的中断屏蔽触发器,允许更高级的中断屏蔽触发器,以此来实现正常的中断嵌套。

②多级中断中的每一级可以只有一个中断源,也可以有多个中断源。在多级中断之间可实现中断嵌套,但是同一级内有不同中断源是不能嵌套的,必须处理完一个中断后再响应和处理同一级其他中断源。

③设置多级中断的系统一般都希望有较快的中断响应时间,因此首先响应哪一级中断和哪一个中断源,都是由硬件逻辑实现,而不是用程序实现。

④和单级中断情况相同,在多级中断中也使用堆栈来保存现场和断点。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈