中断响应过程(很详细)

2024-01-10 05:20
文章标签 中断 详细 过程 响应

本文主要是介绍中断响应过程(很详细),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        中断过程主要包括两个阶段:中断响应和中断处理。中断响应阶段由硬件实现,而中断处理阶段则由CPUI执行中断服务程序来完成,所以中断处理是由轶件实现的。

        中断响应是指CPU发现中断请求开始到调出中断服务程序这一过程。在此过程中CPU完成以下3个任务:

(1)保存被中断程序的返回地址和程序状态信息。

        为了保证从中断服务程序返回后被中断程序在断点处能继续正确执行下去,有两类信息不能被中断服务程序破坏。一类是用户可见的通用寄存器的内容,这些寄存器存放着被中断程序执行到断点处的现行值,一般把这类信息称为现场;另一类是断点处的程序计数器(PC)和程序状态字寄存器(PSWR)中的内容,前者是中断返回地址,后者是机器状态信息,一般把这类信息称为断点和状态信息。对于现场信息,因为是用指令可直接访问的,所以通常在中断服务程序中通过指令把它们保存到栈中,即由致件室现保在点而对于断点和状态信息,因为必须将中断服务程序的首地址和初始程序状态字装人PC和PSWR中后,才能转到中断服务程序执行,所以,原来在PC和PSWR中的断点和状态信息应在CPU响应中断过程中先由硬件自动保存到某个特定的地方(栈或专门寄存器)

(2)识别中断源并根据中断响应优先级进行判优。

        中断响应的结果是调出相应的中断服务程序来执行,因此,在中断响应过程中,CPU必须能够识别出哪些中断有请离,并且在有多个中断请求出现的情况下,选择响应优先级最高的中断。

(3)调出中断服务程序。

        CPU通过相应步骤得到所响应的中断源对应的中断服务程序首地址和初始程序状态字,并把它们分别送 PC和 PSWR。这样,在中断响应结束后的下一个时钟周期,CPU就转入相应的中断服务程序执行。

        CPU响应中断的时间越短越好。中断响应时间是中断系统设计时需考虑的一个重要指标,它反映了计算机系统的灵敏度。显然,中断响应时间与断点和状态信息保存时间、中断源识别和判优的速度以及获得中断服务程序首地址和初始状态的时间都有关系。不同的中断响应处理机制,得到的中断响应时间不同。例如,MIPS处理器采用一种简单的响应机制,断点(即当前PC中的内容)直接保存在特殊寄存器EPC中,而不需要访问内存来存取栈,中断源的识别和判优处理也由软件进行,CPU只要把进行中断源识别和判优处理的中断查询程序的首地址送PC即可完成中断响应过程。因此,MIPS处理器的中断响应时间很短。

        很显然,在保护断点、机器状态和现场的过程中,如果又有新的中断被响应,则原被保存的断点、状态和现场等信息就会被破坏,因而,需要有一种机制能保证断点和现场等的保护过程不被新的中断请求打断。通常,用一个“中断允许”位来实现控制。当CPU中的“中断允许”位为1时,CPU 处于“中断允许”状态或“开中断”状态,否则就是“禁止中断”或“关中断”状态。CPU只有在“中断允许”状态时,才有可能响应新的中断请求。

因此,中断响应的条件有以下3个:

(1)CPU处于“开中断”状态。

(2)至少要有一个未被屏蔽的中断请求。

(3)当前指令刚执行完。

当CPU同时满足上述3个条件时,就响应中断,进入中断响应周期。在中断响应周期中,通过执行一条隐指令,完成以下几个操作。

(1)关中断。将中断允许标志置为禁止(“关中断”)状态,这时将屏蔽所有可屏蔽中断的请求。

(2)保护断点和程序状态。将当前 PC和PSWR中的断点和状态信息送入栈中或特殊寄存器保存。

(3)识别中断源并转中断服务程序。通过某种方式获得优先级最高的中断源所对应的中断服务程序的首地址和初始程序状态,并分别送PC和PSWR。

转载自书本:计算机组成与系统结构(第3版)袁春风(主编)

之所以此处没有选择转载的标签是因为转载需要加上地址,但书籍上的哪里来链接啊……

这篇关于中断响应过程(很详细)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Macos创建python虚拟环境的详细步骤教学

《Macos创建python虚拟环境的详细步骤教学》在macOS上创建Python虚拟环境主要通过Python内置的venv模块实现,也可使用第三方工具如virtualenv,下面小编来和大家简单聊聊... 目录一、使用 python 内置 venv 模块(推荐)二、使用 virtualenv(兼容旧版 P

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

Redis指南及6.2.x版本安装过程

《Redis指南及6.2.x版本安装过程》Redis是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSIC语言编写、支持网络、... 目录概述Redis特点Redis应用场景缓存缓存分布式会话分布式锁社交网络最新列表Redis各版本介绍旧

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

Python实现一键PDF转Word(附完整代码及详细步骤)

《Python实现一键PDF转Word(附完整代码及详细步骤)》pdf2docx是一个基于Python的第三方库,专门用于将PDF文件转换为可编辑的Word文档,下面我们就来看看如何通过pdf2doc... 目录引言:为什么需要PDF转Word一、pdf2docx介绍1. pdf2docx 是什么2. by

Jvm sandbox mock机制的实践过程

《Jvmsandboxmock机制的实践过程》:本文主要介绍Jvmsandboxmock机制的实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、背景二、定义一个损坏的钟1、 Springboot工程中创建一个Clock类2、 添加一个Controller

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

Logback在SpringBoot中的详细配置教程

《Logback在SpringBoot中的详细配置教程》SpringBoot默认会加载classpath下的logback-spring.xml(推荐)或logback.xml作为Logback的配置... 目录1. Logback 配置文件2. 基础配置示例3. 关键配置项说明Appender(日志输出器

MybatisPlus3.3.1整合clickhouse的过程

《MybatisPlus3.3.1整合clickhouse的过程》:本文主要介绍MybatisPlus3.3.1整合clickhouse的过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定... 前言ClickHouse是俄罗斯Yandex发布的一款数据分析型数据库支持sql语法,详情可以访问官网,