计算机组成原理 第七章(CPU的工作过程) 您所在的位置:网站首页 边沿触发器应具备的条件 计算机组成原理 第七章(CPU的工作过程)

计算机组成原理 第七章(CPU的工作过程)

2024-07-07 15:00| 来源: 网络整理| 查看: 265

 写在前面:

本系列笔记主要以《计算机组成原理(唐朔飞)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。

视频链接:计算机组成原理(哈工大刘宏伟)135讲(全)高清_哔哩哔哩_bilibili

一、概述 1、引起中断的各种因素

(1)人为设置的中断:这种中断一般称为自愿中断,它是在程序中人为设置的,一旦机器执行这种人为中断便会“自愿”停止现行程序而转入中断处理。

(2)程序性事故:如定点溢出、浮点溢出、操作码不能识别、除法中出现“非法”等,这些都属于由程序设计不周而引起的中断。

(3)硬件故障:如插件接触不良、磁表面损坏、电源掉电等,这些都属于硬件故障。

(4)I/O设备:I/O设备被启动以后,一旦准备就绪便向CPU发出中断请求,每个I/O设备都能发中断请求,因此这种中断与计算机所配置的I/O设备多少有关。

(5)外部事件:用户通过键盘来中断现行程序属于外部事件中断。

2、中断的分类

(1)中断源可分两大类:

①一类为不可屏蔽中断,这类中断CPU不能禁止响应,如电源掉电。

②一类为可屏蔽中断,对可屏蔽中断源的请求,CPU可根据该中断源是否被屏蔽来确定是否给予响应,若未屏蔽则CPU能响应,若已被屏蔽则CPU不能响应。

(2)广义的中断分为内中断和外中断:

①内中断也称异常、例外和陷入,其信号来源于CPU内部,与当前执行的指令有关。

②外中断分为自愿中断(指令中断)和强迫中断,其中强迫中断又分为硬件故障和软件中断(程序性事故)。

3、中断系统需要解决的问题

(1)各中断源如何向CPU提出中断请求。

(2)当多个中断源同时提出中断请求时,中断系统如何确定优先响应哪个中断源的请求。

(3)CPU在什么条件、什么时候、以什么方式来响应中断。

(4)CPU响应中断后如何保护现场。

(5)CPU响应中断后,如何停止原程序的执行而转入中断服务程序的入口地址。

(6)中断处理结束后,CPU如何恢复现场,如何返回到原程序的间断处。

(7)在中断处理过程中又出现了新的中断请求,CPU该如何处理。

二、中断请求标记和中断判优逻辑 1、中断请求标记

        为了判断是哪个中断源提出请求,在中断系统中必须设置中断请求标记触发器,简称中断请求触发器,记作INTR,当其状态为“1”时表示中断源有请求。这种触发器可集中设在CPU内,组成一个中断请求标记寄存器,如下图所示,当然也可以分散在各个中断源中。

2、中断判优逻辑

(1)任何一个中断系统,在任一时刻,只能响应一个中断源的请求,但许多中断源提出请求都是随机的,当某一时刻有多个中断源提出中断请求时,中断系统必须按其优先顺序予以响应,这称为中断判优。

(2)硬件排队:

①链式排队器,对应中断请求触发器分散在各个接口电路的情况,如下图所示,每一个接口电路中都设有一个非门和一个与非门,它们犹如链条一样串接起来。

②统一的排队器,设在CPU内,如下图所示,图中假设其优先顺序按1、2、3、4由高向低排列,这样,当最高优先级的中断源有请求时INTR=1,就可封住比它级别低的中断源的请求。

(3)软件排队:

        软件排队是通过编写查询程序实现的,其程序框图如下图所示,程序按中断源的优先等级,从高至低逐级查询各中断源是否有中断请求,这样就可以保证CPU首先响应级别高的中断源的请求。

三、中断服务程序入口地址的寻找 1、硬件向量法

        硬件向量法就是利用硬件产生向量地址,再由向量地址找到中断服务程序的入口地址。向量地址由中断向量地址形成部件产生,这个电路可分散设置在各个接口电路中,也可设置在CPU内。

        由向量地址寻找中断服务程序的入口地址通常采用两种办法。一种在第四章介绍过,在向量地址内存放一条无条件转移指令,CPU响应中断时,只要将向量地址(如12H)送至PC,执行这条指令,便可无条件转向中断服务程序的入口地址200;另一种是设置向量地址表,该表设在存储器内,存储单元的地址为向量地址,存储单元的内容为入口地址。

2、软件查询法

        用软件寻找中断服务程序入口地址的方法称为软件查询法,其程序框图同上。

        当查到某一中断源有中断请求时,接着安排一条转移指令,直接指向此中断源的中断服务程序入口地址,机器便能自动进入中断处理。至于各中断源对应的入口地址,则由程序员(或系统)事先确定。

        这种方法不涉及硬件设备,但查询时间较长。

四、中断响应 1、响应中断的条件

        在中断系统中有一个允许中断触发器EINT,它可被开中断指令置“1”,也可被关中断指令置“0”。当允许中断触发器为“1”时,意味着CPU允许响应中断源的请求;当其为“0”时,意味着CPU禁止响应中断。故当EINT=1,且有中断请求(即中断请求标记触发器INTR=1)时,CPU可以响应中断。

2、响应中断的时间

        与响应I/O中断一样,CPU总是在指令执行周期结束后,响应任何中断源的请求。在指令执行周期结束后,若有中断,CPU则进入中断周期;若无中断,CPU则进入下一条指令的取指周期。

3、中断隐指令

(1)所谓中断隐指令,即在机器指令系统中没有的指令,它是CPU在中断周期内由硬件自动完成的一条指令,其任务有关中断、保护断点和寻找中断服务程序的入口地址。

(2)保护程序断点:保护程序断点就是要将当前程序计数器PC的内容(程序断点)保存到存储器中,它可以存在存储器的特定单元(如0号地址)内,也可以存入堆栈。

(3)寻找中断服务程序的入口地址:在中断周期内有两种方法寻找入口地址。

①在中断周期内,将向量地址送至PC(对应硬件向量法),使CPU执行下一条无条件转移指令,转至中断服务程序的入口地址。

②在中断周期内,将软件查询入口地址的程序(又称中断识别程序)首地址送至PC,使CPU执行中断识别程序,找到入口地址(对应软件查询法)。

(4)关中断:CPU进入中断周期,意味着CPU响应了某个中断源的请求,为了确保CPU响应后所需做的一系列操作不至于又受到新的中断请求的干扰,在中断周期内必须自动关中断,以禁止CPU再次响应新的中断请求。

        上图是CPU自动关中断的示意图,图中允许中断触发器EINT和中断标记触发器INT可选用标准的R-S触发器。当进入中断周期时,INT为“1”状态,触发器原端输出有一个正跳变经反相后产生一个负跳变,使ENT置“0”,即关中断。

五、保护现场和恢复现场

        保护现场应该包括保护程序断点和保护CPU内部各存器内容的现场两个方面。

        程序断点的现场由中断隐指令完成,各寄存器内的现场可在中断服务程序中由用户(或系统)用机器指令编程实现。

        恢复现场是指在中断返回前,必须将寄存器的内容恢复到中断处理前的状态,这部分工作也由中断服务程序完成。

六、中断屏蔽技术 1、多重中断的概念

        当CPU正在执行某个中断服务程序时,另一个中断源又提出了新的中断请求,而CPU又响应了这个新的请求,暂时停止正在运行的服务程序,转去执行新的中断服务程序,这称为多重中断,又称中断嵌套,如下图所示。如果CPU对新的请求不予响应,待执行完当前的服务程序后再响应,即为单重中断。

2、实现多重中断的条件

(1)提前设置“开中断”指令。

        CPU进入中断周期后,由中断隐指令自动将EINT置“0”,即关中断,这就意味着CPU在执行中断服务程序中禁止响应新的中断请求。CPU若想再次响应中断请求,必须开中断,这一任务通常由中断服务程序中的开中断指令实现。开中断指令设置的位置不同,决定了 CPU能否实现多重中断。

(2)优先级别高的中断源有权中断优先级别低的中断源。

        例如,有 A、B、C、D 4个中断源,其优先级按A→B→C→D由高向低次序排列。

        ①在CPU执行主程序期间,同时出现了B和C的中断请求,由于B级别高于C,故首先执行B的服务程序。

        ②当B级中断服务程序执行完返回主程序后,由于C请求未撤销,故CPU又再去执行C级的中断服务程序。若此时又出现了D请求,因为D级别低于C,故CPU不响应,当C级中断服务程序执行完返回主程序后再去执行D级的服务程序。若此时又出现了A请求,因A级别高于D,故CPU暂停对D级中断服务程序的执行,转去执行A级中断服务程序,等A级中断服务程序执行完后,再去执行D级中断服务程序。

3、屏蔽技术

(1)为了保证级别低的中断源不干扰比其级别高的中断源的中断处理过程,保可采用屏蔽技术。

(2)屏蔽触发器与屏蔽字:

        下图示出了程序中断接口电路中完成触发器D、中断请求触发器INTR和屏蔽触发器MASK三者之间的关系。

        ①当该中断源被屏蔽时(MASK=1),此时即使D=1,中断查询信号到来时刻只能将INTR置“0”,CPU接收不到该中断源的中断请求,即它被屏蔽。

        ②若该中断源未被屏蔽(MASK=0),当设备工作已完成时(D=1),中断查询信号则将INTR置“1”,表示该中断源向CPU发出中断请求,该信号送至排队器进行优先级判断。

        对应每个中断请求触发器就有一个屏蔽触发器,将所有屏蔽触发器组合在一起,便构成一个屏蔽寄存器,屏蔽寄存器的内容称为屏蔽字。屏蔽字与中断源的优先级别是一一对应的,屏蔽字中“1”越多,优先级就越高。另外,每个屏蔽字中至少有1个“1”,也就是至少能屏蔽自身的中断。

(3)屏蔽技术可改变优先等级:

①严格地说,优先级包含响应优先级和处理优先级。响应优先级是指CPU响应各中断源请求的优先次序,这种次序往往是硬件线路已设置好的,不便于改动;处理优先级是指CPU实际对各中断源请求的处理优先次序。如果不采用屏蔽技术,响应的优先次序就是处理的优先次序。

②采用了屏蔽技术后,可以改变CPU处理各中断源的优先等级,从而改变CPU执行程序的轨迹。

③举例:

[1]A、B、C、D这4个中断源的优先级别按A→B→C→D降序排列,根据这一次序CPU执行程序的轨迹如下图所示。当4个中断源同时提出请求时,处理次序与响应次序一致。

[2]在不改变CPU响应中断的次序下,通过改变屏蔽字可以改变CPU处理中断的次序。例如,将上述4个中断源的处理次序改为A→D→C→B,则每个中断源所对应的屏蔽字发生了变化。

[3]在同样中断请求的情况下,CPU执行程序的轨迹发生了变化,如下图所示。

#1 CPU在运行程序的过程中,若A、B、C、D 4个中断源同时提出请求,按照中断级别的高低,CPU首先响应并处理A中断源的请求,由于A的屏蔽字是1111,屏蔽了所有的中断源,故A程序可以全部执行完然后回到主程序。

#2 由于B、C、D的中断请求还未响应,而B的响应优先级高于其它,所以CPU响应B的请求,进入B的中断服务程序。

#3 在B的服务程序中,由于设置了新的屏蔽字0100,即A、C、D可打断B,而A程序已执行完,C的响应优先级又高于D,于是CPU响应C,进人C的服务程序。

#4 在C的服务程序中,由于设置了新的屏蔽字0110,即A、D可打断C,由于A程序已执行完,于是CPU响应D,执行D的服务程序。

#5 在D的服务程序中,屏蔽字变成0111,即只有A可打断D,但A已处理结束,所以D可以一直执行完,然后回到C程序。

#6 C程序执行完后,回到B程序。B程序执行完后,回到主程序。至此,A、B、C、D均处理完毕。

④采用了屏蔽技术后,在中断服务程序中需设置新的屏蔽字,流程如下图所示。

(4)屏蔽技术的其它作用:

        屏蔽技术还能给程序控制带来更大的灵活性。例如,在浮点运算中,当程序员估计到执行某段程序时可能出现“阶上溢”,但又不希望因“阶上溢”而使机器停机,为此可设一屏蔽字,使对应阶上溢”的屏蔽位为“1”,这样,即使出现“阶上溢”,机器也不停机。

4、多重中断的断点保护

        多重中断时,每次中断出现的断点都必须保存起来,如下图中共出现了3次中断,有3个断点t+1、l+1、m+1需保存。中断系统对断点的保存都是在中断周期内由中断隐指令实现的,对用户是透明的。

        断点可以保存在堆栈中,由于堆栈先进后出的特点,因此k+1先进栈,接着是l+1进栈,最后是m+1进栈。出栈时,按相反顺序便可准确返回到程序间断处。

        断点也可保存在特定的存储单元内,例如约定一律将程序断点存至主存的0号地址单元内,由于保存断点是由中断隐指令自动完成的,因此3次中断的断点都将存入0地址单元,这势必造成前两次存入的断点k+1和l+1被冲掉。为此,在中断服务程序中的开中断指令之前,必须先将0地址单元的内容转存至其它地址单元中,才能真正保存每一个断点。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有