`
wangyanlong0107
  • 浏览: 499590 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

【转】浅析CPU中断技术

    博客分类:
  • os
 
阅读更多

前一阵子忽然蛋疼菊紧,对计算机硬件的工作原理产生了些许兴趣。故查阅了一些资料,加上本人的总结和理解(以及猜测),为园友先奉上一文如下。

附:本文仅对CPU中断技术进行理论上的剖析,而没有针对中断技术的实现进行分析。

 

Ready Go

 

目录

一、什么是CPU中断?

二、CPU中断的作用

三、CPU中断的类型

四、CPU中断的过程

五、多核CPU对中断的处理

 

一、什么是CPU中断?

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

  1. 你正在看电影

  2. 你的朋友发来一条QQ信息

  3. 你一边回复朋友的信息,一边继续看电影

        

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

 

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

      

       CPU中断技术的定义如下:

  1. 计算机处于执行期间
  2. 系统内发生了非寻常或非预期的急需处理事件
  3. CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序
  4. 处理完毕后返回原来被中断处继续执行

 

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

        

  举个现实中的例子:

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

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

 

二、CPU中断的作用

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

 

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

 

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

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

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

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

 

三、CPU中断的类型

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

  1. 硬件中断

  2. 软件中断

        

  硬件中断

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

        

  可屏蔽中断:

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

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

 

  非屏蔽中断:

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

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

 

  在x86架构的处理器中,CPU的中断控制器由两根引脚(INTRNMI)接收外部中断请求信号。其中:

  1. INTR接收可屏蔽中断请求

  2. NMI接收非屏蔽中断请求

 

  典型事例:

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

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

 

  软件中断

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

 

四、CPU中断的过程

  中断请求

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

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

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

        

  中断响应、处理和返回

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

  1. 关闭中断信号接收器

  2. 保存现场(context)

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

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

  5. 开启中断信号接收器

 

  中断排队和中断判优

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

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

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

 

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

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

 

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

 

五、多核CPU对中断的处理

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

 

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

 

  APIC的功能有:

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

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

 

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

 

The End

分享到:
评论

相关推荐

    浅析arm的异常、中断和arm工作模式的联系

    异常在ARM架构中是指CPU在执行程序过程中遇到的任何一种不正常事件,它们迫使处理器暂时中止当前程序的执行,转而处理更为紧急的任务。异常分为几种类型,包括中断、异常终止、预取终止、数据终止和软件中断等。异常...

    浅析数字电子技术和单片机的应用与发展.pdf

    单片机技术,又称为微控制器(MCU),是集成有CPU、RAM、ROM、I/O接口和中断系统等部件的单芯片微型计算机。单片机的出现是电子工程领域的一次重大革命,它具有体积小、成本低、便于集成和扩展的特点。单片机技术的...

    应用笔记LAT1363+浅析单次事件进入两次中断问题

    ### 应用笔记LAT1363+浅析单次事件进入两次中断问题 #### 一、问题背景与概述 在使用基于ARM Cortex-M3、M4或M7系列的STM32芯片进行产品开发的过程中,开发人员可能会遇到一种较为特殊且困扰的问题:即某个单次...

    Bootloader技术内幕浅析

    ### Bootloader技术内幕浅析 #### 1. 引言 在嵌入式系统的开发过程中,Bootloader扮演着至关重要的角色。它不仅是系统加电后运行的第一段代码,更是搭建起硬件与操作系统之间的桥梁。Bootloader的主要职责在于初始...

    浅析TOE技术及其应用

    TCP卸载引擎(TCP Offload Engine,简称TOE)是一种技术,旨在通过在网卡上集成专门的处理器来处理TCP数据包,减轻主CPU的负担,以提高服务器性能和网络响应速度。TOE技术的核心是使用TOE芯片的专用网卡,通过这种...

    浅析基于C语言的单片机技术.pdf

    它将CPU、内存(RAM)、只读存储器(ROM)、输入/输出接口(I/O接口)、中断系统、定时器等多个电子元件集成到一个半导体芯片上。单片机因其体积小、成本低、控制能力强等特点,在家用电器、汽车电子、工业控制、...

    浅析Linux内核中的Bottom Half机制_linux内核_

    当发生中断时,CPU会暂停当前正在执行的任务,保存上下文信息,然后转而去执行相应的中断处理程序,这个过程就是中断服务。中断服务分为两个阶段:Top Half和Bottom Half。 Top Half,也称为中断处理程序的高优先级...

    基于云计算机的虚拟化技术浅析.pdf

    3. 客户端的虚拟化:主要通过软件技术集中管理和调节计算机的硬件资源,如内存、CPU、网络、存储和总线等,从而提高资源利用率和灵活性。客户端虚拟化支持对客户端进行集中管理和映像部署,提高客户端安全性和降低...

    windows驱动pcie浅析.pptx

    "Windows驱动PCIE浅析"的主题主要关注的是如何在Windows环境中理解和开发PCI Express(简称PCIe)设备的驱动程序。PCIe是一种高速接口标准,广泛应用于各种计算机硬件,如显卡、网卡、硬盘接口等,提供了高带宽的...

    基于ARM平台和NAND flash启动技术的u-boot移植过程浅析.pdf

    【基于ARM平台和NAND flash启动技术的u-boot移植过程浅析】 在嵌入式系统开发中,BootLoader的移植是至关重要的一步,因为它负责初始化硬件环境,为操作系统内核的加载做好准备。本文主要讨论的是针对ARM处理器的u-...

    浅析基于STC12C5A60S2 单片机的电量监测技术研究.docx

    4. 数据处理模块:单片机通过内部的CPU对采集到的数据进行计算,如功率因数、有功功率、无功功率等。 5. 显示模块:通常采用液晶显示屏或者LED数码管显示电量信息,以便用户直观了解用电状态。 6. 通信模块:通过...

    嵌入式操作系统浅析.docx

    μC/OS-II 因为是可抢占的实时内核,所以 μC/OS-II 与商业嵌入式实时内核在性能上没有什么差异,μC/OS-II 没有用户态和内核态,任务(线程)或中断和任务切换的响应可以很快,主要是和 ARMCPU 相关的。最新的 2.7x...

    浅析分布式铁路信号发码器.pdf

    CPU对输入的控制是通过中断处理程序来实现的,它处理输入信息并得到系统所需输入信息。CPU对DDS的控制涉及计算频率控制字并发送给DDS产生相应信号。CPU对输出的控制则包括控制输出显示用户需求信息的LED、控制液晶...

    linux网络报文接收发送浅析分享.pdf

    "Linux 网络报文接收发送浅析分享" 本文档主要介绍了 Linux 内核中网络报文的接收和发送机制。网络报文的接收是通过网络设备驱动程序从网络设备中读取报文,然后通过内核提供的网络接口函数将报文传递到内核中的...

    浅析Linux内核中的Bottom Half机制.pdf

    Linux内核中的Bottom Half机制是处理中断服务程序的一种方法,主要解决了中断服务过程中避免嵌套和提高CPU响应性的问题。本文详细介绍了Bottom Half机制的概念、发展以及不同版本Linux内核中实现的不同方式。 中断...

    51单片机C语言实例浅析》

    《51单片机C语言实例浅析》是一本针对51系列单片机编程的实践指导书籍,主要使用C语言进行讲解。51单片机是微控制器领域中的经典型号,广泛应用于各种嵌入式系统,从简单的家电控制到复杂的工业自动化设备,都有其...

    浅析windows进程调度

    【浅析Windows进程调度】 Windows操作系统中的进程调度是系统管理多任务并发执行的关键机制。本文主要探讨了进程调度的基本概念、进程的运行状态以及几种常见的调度算法。 首先,进程是操作系统中的基本执行单元,...

    浅析对单片机之间的串口数据通信的研究.pdf

    中断方式是指在串口的特定操作完成后,产生中断信号,CPU响应中断,执行中断服务程序来处理数据传输。这种方式可以减少CPU的负担,提高数据处理的效率,但需要编写相应的中断服务程序。 在标签中提到的“硬件开发”...

Global site tag (gtag.js) - Google Analytics