计算机组成原理18——CPU的结构和功能2(书中重点及习题)

本系列文章是学习了网课《哈尔滨工业大学--计算机组成原理》之后,用以梳理思路而整理的听课笔记及相关思维拓展。本文涉及到的观点均为个人观点,如有不同意见,欢迎在评论区讨论。

目录

中断系统

除了前面讲到的中断方式实现CPU和IO设备交换信息;当计算机发生意外事件时,也会进入中断以进行处理;或者说在机器的运行过程中,需要处理其中的运算结果,也需要中断,等等。

为了处理异常情况、实时控制等等,提出了中断的概念。

一般有哪些类型的中断:

1、人为设置的中断,在程序中人为设置,当出发某个条件之后,停止现行程序而转入中断处理。

2、程序性事故,定点溢出、浮点溢出、操作码不能识别等等,由于程序设置不当而引起的中断。

3、硬件故障,插件接触不良、通风不良、电源掉电等,硬件设备故障。

4、IO设备,IO设备被启动之后,准备就绪,向CPU发出中断请求。

5、外部事件,比如用户通过键盘来中断现行程序属于外部事件。
中断系统需要解决的问题:

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

2、当多个中断源同时提出中断请求时,如何确定响应的顺序

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

4、CPU响应中断后如何保护现场

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

6、中断服务结束之后,CPU如何恢复现场,如何返回到原程序的间断处

7、在中断中又产生中断,该如何处理

中断请求标记和中断判优逻辑

中断请求标记寄存器列出了各种类型的中断,当标记变成1的时候,表明对应的中断源提出了中断请求。

可以看到,中断请求触发器越多,计算机的处理中断的能力越强。

在同一时刻可能接收到多个中断源的请求,但是一个中断系统在任一时刻,只能响应一个中断源的请求。中断系统必须对多个中断源请求进行判断、排序,根据若不响应该中断,将会对计算机造成损坏的严重程度进行排序。有两种排队方式:

1、硬件排队

下图中,按照中断优先级的高低进行排队,优先级高的设备产生中断请求之后,会封住其它低优先级的设备产生的中断请求。

2、软件排队

通过程序编写,从高到低查询。

中断服务程序入口地址的寻找

确定中断的响应优先级之后,也就是确定了响应哪一个中断,之后就需要去寻找中断源对应的中断程序了。有两种方式:

1、硬件查询法,上述的中断判优之后,会产生一个中断向量,这个中断向量相当于确定了中断源之后,产生的一个输出结果。这个中断向量会引导我们找到中断服务程序的入口地址。

向量地址可以放一条无条件转移指令,比如中断之后,将12H送至PC,PC执行会直接跳转到中断服务函数中;

或者12H中放中断程序的地址,将这个地址传入PC,再去执行。

在单片机中经常可以看到这个中断向量表。具体是上面两种方式中的哪一个,我还没研究过。

2、软件查询法

用软件方式一个一个查询,从优先级高的向低的查,当查到某一中断源有请求时,安排一条转移指令,直接指向该中断源的中断服务程序入口地址,机器自动进入中断处理。

中断响应

CPU不是一有中断即可相应的,它是定时查询。

中断系统中有一个允许中断触发器EINT,当EINT为1时,有中断请求,CPU可以响应;当EINT为0时,CPU不响应中断。

一般来说,定时查询在CPU指令执行周期结束之后,指令执行周期接收后,若有中断,CPU则进入中断周期;若无中断,则进入下一条指令的取指周期。

如果说计算机中经常指令周期执行时间很长,CPU会安排查询断点定时发送查询信号。

当CPU响应中断后,进入中断周期,在这个过程中,CPU会自动完成一系列操作,不需要人为控制。

你也控制不了,这一系列操作没有对应的指令,由硬件自动完成,一般称之为中断隐指令。

自动操作,具体如下:

1、保护程序断点,即将当前PC内容保存起来,方式不限,存储器也好,堆栈也好。

2、寻找中断服务程序的入口地址,有两种方式,硬件向量法和软件查询法

3、关中断,为了确保响应了一个中断源之后,后续操作不会被干扰,在中断周期内需要先关中断,防止CPU在中断周期内一直响应中断。

保护现场和恢复现场

中断现场需要:保护程序断点、保护CPU内部各寄存器内容的现场。

程序断点由中断隐指令完成,寄存器的现场可以由用户实现。

恢复现场由中断服务程序完成。

中断屏蔽技术

多重中断

当CPU在执行某个中断服务程序时,又有另外一个中断源提出了新的中断请求;但是这个CPU又响应了这个中断请求,暂停了目前的中断服务程序,转而去执行新的中断服务程序,称之为多重中断。

若CPU执行一个中断时,对其它的中断不做响应,称之为单重中断。

实现多重中断的条件

1、提前开中断

上面讲到中断周期,硬件自动操作中断隐指令的时候,会关中断,此时不允许CPU响应新的中断请求;所以要想实现多重中断,需要在中断周期之后,中断程序保护完现场之后,开启中断,这样在执行中断服务程序的时候,才可以响应新的中断。

2、优先级别高的中断源可以中断其它中断优先级别低的中断源

优先级别:A > B > C > D

先出现的是,B和C,先响应B,再去执行C

B执行完之后,接着去执行C,这是产生了D,但是级别比C低,不响应,C执行完之后 ,再去执行D

此时又出现了A,A级别高于D,响应A,执行完成A之后,再接着执行D

屏蔽技术

1、屏蔽触发器和屏蔽字

排队器中,每个中断源加入屏蔽触发器MASK,当MASK = 1时,该中断源无法产生中断请求(INTP = 0);当MASK = 0时,该中断源才可以产生中断请求。

下面的屏蔽字对应于MASK。

比如说1级中断源被响应了,那我就设置一个1级屏蔽字,会屏蔽所有的中断源。

比如我4级中断源被响应了,那我设置一个4级屏蔽字,1-3位是0,没有被屏蔽,表明依然可以被1-3优先级的中断源打断,但是比4低的中断源全部被屏蔽了,无法被低优先级的中断源打断。

2、屏蔽技术改变优先等级

优先级包含响应优先级和处理优先级。

响应优先级是CPU响应各中断源请求的优先次序,这种次序是硬件线路决定的,不便于改动。

处理优先级是CPU实际对中断源请求的处理次序,可以采用屏蔽技术改变,如果不采用屏蔽技术,处理的次序就是响应的次序。

下面是一个采用屏蔽技术的例子:

原屏蔽字:处理顺序(屏蔽字的级别)为A> B > C > D,现改为A> D > C > B

响应优先级为A> B > C > D

现在ABCD同时提出中断请求

先按照中断级别的高低,去处理A,A的屏蔽字是1111,屏蔽所有中断源,所以A响应之后,并执行完成回到主程序

B的响应优先级高于C、D,所以B被响应,但是B的屏蔽字为0100,可以被A、C、D打断,这时又C和D两个中断请求,但是C的响应优先级高于D,所以C被响应

C被响应之后,其屏蔽字为0110,可以被A和D打断,这时A执行完,D还在发中断请求,所以C又被D打断,D被响应

D被响应之后,设置屏蔽字0111,可以被A打断,但是A执行完成了,所以D可以安安心心的执行,直到执行完成D,返回到C

C执行完成之后,返回到B,最终B执行完成,返回到主程序。

3、屏蔽技术的应用

中断屏蔽技术可以给程序控制带来灵活性,当出现程序不想要的问题而停机时,可以设置屏蔽字,屏蔽该中断,使得机器继续运行,

相关推荐
blessing。。3 分钟前
I2C学习
linux·单片机·嵌入式硬件·嵌入式
嵌新程1 小时前
day03(单片机高级)RTOS
stm32·单片机·嵌入式硬件·freertos·rtos·u575
Lin2012301 小时前
STM32 Keil5 attribute 关键字的用法
stm32·单片机·嵌入式硬件
电工小王(全国可飞)2 小时前
STM32 RAM在Memory Map中被分为3个区域
stm32·单片机·嵌入式硬件
maxiumII2 小时前
Diving into the STM32 HAL-----DAC笔记
笔记·stm32·嵌入式硬件
美式小田5 小时前
单片机学习笔记 9. 8×8LED点阵屏
笔记·单片机·嵌入式硬件·学习
兰_博5 小时前
51单片机-独立按键与数码管联动
单片机·嵌入式硬件·51单片机
嵌入式大圣7 小时前
单片机结合OpenCV
单片机·嵌入式硬件·opencv
日晨难再9 小时前
嵌入式:STM32的启动(Startup)文件解析
stm32·单片机·嵌入式硬件
yufengxinpian9 小时前
集成了高性能ARM Cortex-M0+处理器的一款SimpleLink 2.4 GHz无线模块-RF-BM-2340B1
单片机·嵌入式硬件·音视频·智能硬件