0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于CPU中断技术的理论剖析

Dbwd_Imgtec 来源:未知 作者:胡薇 2018-04-14 10:31 次阅读

一、什么是CPU中断?

使用计算机的过程中,经常会遇到这么一种情景:

1. 你正在看电影

2. 你的朋友发来一条QQ信息3. 你一边回复朋友的信息,一边继续看电影

这个过程中,一切是那么的顺其自然。但理论上来说,播放电影的时候,CPU正在一丝不苟的执行着一条又一条的指令,它是如何在维持电影播放的情况下,及时接收并响应你的键盘输入信息呢?

这就是CPU中断技术在起作用。

CPU中断技术的定义如下:

计算机处于执行期间

系统内发生了非寻常或非预期的急需处理事件

CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序

处理完毕后返回原来被中断处继续执行

在这里,“非寻常或非预期的事件”指的就是你回复朋友的QQ时,用键盘键入信息。为了及时响应你键入的信息,CPU将正在执行的任务“播放电影”暂时中断,处理完你键入的信息后,继续执行“播放电影”的任务。由于这个“中断当前任务->响应键盘输入->继续当前任务”的执行周期非常短(一般都是微秒级),所以一般人感觉不出来。

举个现实中的例子:

你正在看书,突然你的朋友打来电话,于是你放下书本去接电话,电话打完接着看书。

电话响- > 放下书本- > 接电话- > 继续看书这一个过程,就类似于CPU中断的处理过程。

二、CPU中断的作用

早期的CPU处理外设的事件(比如接收键盘输入),往往采用“轮询”的方式。即CPU像个查岗的一样轮番对外设顺序访问,比如它先看看键盘有没被按下,有的话就处理,没的话继续往下看鼠标有没有移动,再看看打印机……这种方式使CPU的执行效率很低,且CPU与外设不能同时工作(因为要等待CPU来“巡查”)。

中断模式时就是说CPU不主动访问这些设备,只管处理自己的任务。如果有设备要与CPU联系,或要CPU处理一些事情,它会给CPU发一个中断请求信号。这时CPU就会放下正在进行的工作而去处理这个外设的请求。处理完中断后,CPU返回去继续执行中断以前的工作。

中断模式的作用和优点在于:

可以使CPU和外设同时工作,使系统可以及时地响应外部事件。

可允许多个外设同时工作,大大提高了CPU的利用率,也提高了数据输入、输出的速度。

可以使CPU及时处理各种软硬件故障(比如计算机在运行过程中,出现了难以预料的情况或一些故障,如电源掉电、存储出错、运算溢出等等。计算机可以利用中断系统自行处理,而不必停机或报告工作人员。)

三、CPU中断的类型

在计算机系统中,根据中断源的不同,通常将中断分为两大类:

硬件中断

软件中断

硬件中断

硬件中断又称外部中断,主要分为两种:可屏蔽中断、非屏蔽中断。

○ 可屏蔽中断:

1. 常由计算机的外设或一些接口功能产生,如键盘、打印机、串行口等

2. 这种类型的中断可以在CPU要处理其它紧急操作时,被软件屏蔽或忽略

○ 非屏蔽中断:

1. 由意外事件导致,如电源断电、内存校验错误等

2. 对于这种类型的中断事件,无法通过软件进行屏蔽,CPU必须无条件响应

典型事例:

典型的可屏蔽中断的例子是打印机中断,CPU对打印机中断请求的响应可以快一些,也可以慢一些,因为让打印机稍等待一会也是完全合理的。

典型的非屏蔽中断的例子是电源断电,一旦出现此中断请求,必须立即无条件地响应,否则进行其他任何工作都是没有意义的。

软件中断

软件中断又称内部中断,是指在程序中调用INTR中断指令引起的中断。比如winAPI中,keybd_event和mouse_event两个函数,就是用来模拟键盘和鼠标的输入(这个仅为笔者本人的猜测)。

四、CPU中断的过程

中断请求

中断请求是由中断源向CPU发出中断请求信号。外部设备发出中断请求信号要具备以下两个条件:

外部设备的工作已经告一段落。例如输入设备只有在启动后,将要输入的数据送到接口电路的数据寄存器(即准备好要输入的数据)之后,才可以向CPU发出中断请求。

系统允许该外设发出中断请求。如果系统不允许该外设发出中断请求,可以将这个外设的请求屏蔽。当这个外设中断请求被屏蔽,虽然这个外设准备工作已经完成,也不能发出中断请求。

中断响应、处理和返回

当满足了中断的条件后,CPU就会响应中断,转入中断程序处理。具体的工作过程如下:

关闭中断信号接收器

保存现场(context)

给出中断入口,转入相应的中断服务程序

处理完成,返回并恢复现场(context)

开启中断信号接收器

中断排队和中断判优

中断申请是随机的,有时会出现多个中断源同时提出中断申请。

CPU每次只能响应一个中断源的请求。

CPU不可能对所有中断请求一视同仁,它会根据各中断源工作性质的轻重缓急,预先安排一个优先级顺序。当多个中断源同时申请中断时,即按此优先级顺序进行排队,等候CPU处理。

了解了CPU中断处理的过程,就不难理解下面一种常见的情景:

正在拷贝文件时,往某个文本框输入信息,这个文本框会出现短暂的假死,键盘输入的数据不能及时显示在文本框中,需要等一会儿才能逐渐显示出来。

这是因为该中断操作(往文本框输入信息)在中断队列的优先级比较低,或者CPU认为正在处理的操作(拷贝文件)进行挂起的代价太大,所以只有等到CPU到了一个挂起代价较低的点,才会挂起当前操作,处理本次中断信息。

五、多核CPU对中断的处理

多核CPU的中断处理和单核有很大不同。多核的各处理器核心之间需要通过中断方式进行通信,所以CPU芯片内部既有各处理器核心的本地中断控制器,又有负责仲裁各核之间中断分配的全局中断控制器。

现今的多核处理器在中断处理和中断控制方面主要使用的是APIC(Advanced Programmable Interrupt Controllers),即高级编程中断控制器。它是基于中断控制器两个基础功能单元——本地单元以及I/O单元的分布式体系结构。在多核系统中,多个本地和I/O APIC单元能够作为一个整体通过APIC总线互相操作。

APIC的功能有:

接受来自处理器中断引脚的内部或外部I/O APIC的中断,然后将这些中断发送给处理器核心进行处理

在多核处理器系统中,接收和发送核内中断消息

对于外部设备发出的中断请求,由全局中断控制器接收请求并决定交给CPU的哪一个核心处理。也可针对APIC编程,让所有的中断都被一个固定的CPU处理。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10824

    浏览量

    211098
  • 硬件中断
    +关注

    关注

    0

    文章

    11

    浏览量

    6833

原文标题:浅析CPU中断技术

文章出处:【微信号:Imgtec,微信公众号:Imagination Tech】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    CPU中断相关知识科普

          中断是硬件和软件驱动事件,它使得CPU暂停当前的主程序,转而去执行一个中断服务子程序。X281x的中断系统从上至下分成了三级,即CPU
    发表于 08-02 17:49 9441次阅读
    <b class='flag-5'>CPU</b><b class='flag-5'>中断</b>相关知识科普

    以x86 CPU架构理解Linux中断机制

    中断机制:CPU在执行指令时,收到某个中断信号转而去执行预先设定好的代码,然后再返回到原指令流中继续执行,这就是中断机制。
    的头像 发表于 08-06 16:19 5560次阅读

    世界OLED技术产品最新发展深入剖析

    本文核心提示 :本文是关于OLED最新发展的深入剖析。主要阐述OLED技术的现状、OLED技术的优势、OLED技术的发展趋势、各厂商OLED
    发表于 08-30 09:41 4178次阅读

    DSP28035有关于中断的程序

    DSPF28035有关于中断的程序,实现基本的功能
    发表于 04-27 16:24 16次下载

    关于现代通信的理论和实践

    关于现代通信的理论和实践
    发表于 09-04 15:30 12次下载
    <b class='flag-5'>关于</b>现代通信的<b class='flag-5'>理论</b>和实践

    CPU中断与轮询方式有什么区别

    程序中断通常简称中断,是指CPU在正常运行程序的过程中,由于预选安排或发生了各种随机的内部或外部事件,使CPU中断正在运行的程序,而转到为相
    的头像 发表于 10-03 14:18 6830次阅读
    <b class='flag-5'>CPU</b>的<b class='flag-5'>中断</b>与轮询方式有什么区别

    关于如何判断CPU是否正在执行中断函数?

    如何判断CPU是否正在执行中断函数?
    的头像 发表于 03-12 11:25 2568次阅读

    单片机中断CPU的轮询有什么区别

    在单片机编程过程中,经常会使用到中断。那么,什么是单片机中断,它与CPU的轮询有什么区别?在本文中,单片机开发工程师将对单片机中断CPU
    发表于 06-29 11:30 3592次阅读

    单片机学习笔记——中断原理及应用

    单片机中断原理(外部中断中断概念:中断发生:CPU在处理某一事件A时,发生了另一事件B请求CPU
    发表于 11-11 11:06 46次下载
    单片机学习笔记——<b class='flag-5'>中断</b>原理及应用

    单片机_中断理解

    单片机_中断的理解理论篇引入—什么是中断?通俗的说:比如我正在写博客,老板突然给我发一个任务,我暂停的写博客,转而把老板布置的任务完成之后,再继续写博客,这个过程就可以理解成中断。引用
    发表于 11-18 10:51 45次下载
    单片机_<b class='flag-5'>中断</b>理解

    关于单片机的中断的若干问题

    中断技术概述中断系统作用:实时测控,单片机能及时地响应和处理单片机外部事件或内部事件所提出的中断请求。中断的概念:
    发表于 11-19 10:36 12次下载
    <b class='flag-5'>关于</b>单片机的<b class='flag-5'>中断</b>的若干问题

    基于STM32的中断及DMA通信

    中断模式编程,当开关接高电平时,LED亮灯;接低电平时,LED灭灯。采用串口中断方式完成串口通信一. 关于中断的介绍中断是当
    发表于 11-26 12:36 0次下载
    基于STM32的<b class='flag-5'>中断</b>及DMA通信

    深度剖析GPIO中断

    本文介绍 GPIO 中断,包括中断示例及其各种功能。这是上一篇文章的延续,该文章解释了微控制器的并发和中断的概念。
    的头像 发表于 04-27 16:11 9283次阅读
    深度<b class='flag-5'>剖析</b>GPIO<b class='flag-5'>中断</b>

    中断屏蔽技术主要用于什么

    中断屏蔽技术:主要用于多重中断 多重中断:(中断嵌套)当CPU正在执行某个
    的头像 发表于 10-30 16:54 1346次阅读
    <b class='flag-5'>中断</b>屏蔽<b class='flag-5'>技术</b>主要用于什么

    CPU中断程序:从硬件看什么是中断

    CPU响应中断转去执行中断服务程序前,需要把被中断程序的现场信息保存起来,以便执行完中断服务程序后,接着从被
    发表于 03-26 11:36 3072次阅读
    <b class='flag-5'>CPU</b><b class='flag-5'>中断</b>程序:从硬件看什么是<b class='flag-5'>中断</b>?