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

2024-01-07 14:04

本文主要是介绍计算机组成原理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、屏蔽技术的应用
中断屏蔽技术可以给程序控制带来灵活性,当出现程序不想要的问题而停机时,可以设置屏蔽字,屏蔽该中断,使得机器继续运行,

这篇关于计算机组成原理18——CPU的结构和功能2(书中重点及习题)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/580145

相关文章

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

Java实现预览与打印功能详解

《Java实现预览与打印功能详解》在Java中,打印功能主要依赖java.awt.print包,该包提供了与打印相关的一些关键类,比如PrinterJob和PageFormat,它们构成... 目录Java 打印系统概述打印预览与设置使用 PageFormat 和 PrinterJob 类设置页面格式与纸张

MySQL 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构