0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于CPU中斷技術(shù)的理論剖析

Dbwd_Imgtec ? 來(lái)源:未知 ? 作者:胡薇 ? 2018-04-14 10:31 ? 次閱讀

一、什么是CPU中斷?

使用計(jì)算機(jī)的過程中,經(jīng)常會(huì)遇到這么一種情景:

1. 你正在看電影

2. 你的朋友發(fā)來(lái)一條QQ信息3. 你一邊回復(fù)朋友的信息,一邊繼續(xù)看電影

這個(gè)過程中,一切是那么的順其自然。但理論上來(lái)說,播放電影的時(shí)候,CPU正在一絲不茍的執(zhí)行著一條又一條的指令,它是如何在維持電影播放的情況下,及時(shí)接收并響應(yīng)你的鍵盤輸入信息呢?

這就是CPU中斷技術(shù)在起作用。

CPU中斷技術(shù)的定義如下:

計(jì)算機(jī)處于執(zhí)行期間

系統(tǒng)內(nèi)發(fā)生了非尋?;蚍穷A(yù)期的急需處理事件

CPU暫時(shí)中斷當(dāng)前正在執(zhí)行的程序而轉(zhuǎn)去執(zhí)行相應(yīng)的事件處理程序

處理完畢后返回原來(lái)被中斷處繼續(xù)執(zhí)行

在這里,“非尋?;蚍穷A(yù)期的事件”指的就是你回復(fù)朋友的QQ時(shí),用鍵盤鍵入信息。為了及時(shí)響應(yīng)你鍵入的信息,CPU將正在執(zhí)行的任務(wù)“播放電影”暫時(shí)中斷,處理完你鍵入的信息后,繼續(xù)執(zhí)行“播放電影”的任務(wù)。由于這個(gè)“中斷當(dāng)前任務(wù)->響應(yīng)鍵盤輸入->繼續(xù)當(dāng)前任務(wù)”的執(zhí)行周期非常短(一般都是微秒級(jí)),所以一般人感覺不出來(lái)。

舉個(gè)現(xiàn)實(shí)中的例子:

你正在看書,突然你的朋友打來(lái)電話,于是你放下書本去接電話,電話打完接著看書。

電話響- > 放下書本- > 接電話- > 繼續(xù)看書這一個(gè)過程,就類似于CPU中斷的處理過程。

二、CPU中斷的作用

早期的CPU處理外設(shè)的事件(比如接收鍵盤輸入),往往采用“輪詢”的方式。即CPU像個(gè)查崗的一樣輪番對(duì)外設(shè)順序訪問,比如它先看看鍵盤有沒被按下,有的話就處理,沒的話繼續(xù)往下看鼠標(biāo)有沒有移動(dòng),再看看打印機(jī)……這種方式使CPU的執(zhí)行效率很低,且CPU與外設(shè)不能同時(shí)工作(因?yàn)橐却鼵PU來(lái)“巡查”)。

中斷模式時(shí)就是說CPU不主動(dòng)訪問這些設(shè)備,只管處理自己的任務(wù)。如果有設(shè)備要與CPU聯(lián)系,或要CPU處理一些事情,它會(huì)給CPU發(fā)一個(gè)中斷請(qǐng)求信號(hào)。這時(shí)CPU就會(huì)放下正在進(jìn)行的工作而去處理這個(gè)外設(shè)的請(qǐng)求。處理完中斷后,CPU返回去繼續(xù)執(zhí)行中斷以前的工作。

中斷模式的作用和優(yōu)點(diǎn)在于:

可以使CPU和外設(shè)同時(shí)工作,使系統(tǒng)可以及時(shí)地響應(yīng)外部事件。

可允許多個(gè)外設(shè)同時(shí)工作,大大提高了CPU的利用率,也提高了數(shù)據(jù)輸入、輸出的速度。

可以使CPU及時(shí)處理各種軟硬件故障(比如計(jì)算機(jī)在運(yùn)行過程中,出現(xiàn)了難以預(yù)料的情況或一些故障,如電源掉電、存儲(chǔ)出錯(cuò)、運(yùn)算溢出等等。計(jì)算機(jī)可以利用中斷系統(tǒng)自行處理,而不必停機(jī)或報(bào)告工作人員。)

三、CPU中斷的類型

在計(jì)算機(jī)系統(tǒng)中,根據(jù)中斷源的不同,通常將中斷分為兩大類:

硬件中斷

軟件中斷

硬件中斷

硬件中斷又稱外部中斷,主要分為兩種:可屏蔽中斷、非屏蔽中斷。

○ 可屏蔽中斷:

1. 常由計(jì)算機(jī)的外設(shè)或一些接口功能產(chǎn)生,如鍵盤、打印機(jī)、串行口等

2. 這種類型的中斷可以在CPU要處理其它緊急操作時(shí),被軟件屏蔽或忽略

○ 非屏蔽中斷:

1. 由意外事件導(dǎo)致,如電源斷電、內(nèi)存校驗(yàn)錯(cuò)誤等

2. 對(duì)于這種類型的中斷事件,無(wú)法通過軟件進(jìn)行屏蔽,CPU必須無(wú)條件響應(yīng)

典型事例:

典型的可屏蔽中斷的例子是打印機(jī)中斷,CPU對(duì)打印機(jī)中斷請(qǐng)求的響應(yīng)可以快一些,也可以慢一些,因?yàn)樽尨蛴C(jī)稍等待一會(huì)也是完全合理的。

典型的非屏蔽中斷的例子是電源斷電,一旦出現(xiàn)此中斷請(qǐng)求,必須立即無(wú)條件地響應(yīng),否則進(jìn)行其他任何工作都是沒有意義的。

軟件中斷

軟件中斷又稱內(nèi)部中斷,是指在程序中調(diào)用INTR中斷指令引起的中斷。比如winAPI中,keybd_event和mouse_event兩個(gè)函數(shù),就是用來(lái)模擬鍵盤和鼠標(biāo)的輸入(這個(gè)僅為筆者本人的猜測(cè))。

四、CPU中斷的過程

中斷請(qǐng)求

中斷請(qǐng)求是由中斷源向CPU發(fā)出中斷請(qǐng)求信號(hào)。外部設(shè)備發(fā)出中斷請(qǐng)求信號(hào)要具備以下兩個(gè)條件:

外部設(shè)備的工作已經(jīng)告一段落。例如輸入設(shè)備只有在啟動(dòng)后,將要輸入的數(shù)據(jù)送到接口電路的數(shù)據(jù)寄存器(即準(zhǔn)備好要輸入的數(shù)據(jù))之后,才可以向CPU發(fā)出中斷請(qǐng)求。

系統(tǒng)允許該外設(shè)發(fā)出中斷請(qǐng)求。如果系統(tǒng)不允許該外設(shè)發(fā)出中斷請(qǐng)求,可以將這個(gè)外設(shè)的請(qǐng)求屏蔽。當(dāng)這個(gè)外設(shè)中斷請(qǐng)求被屏蔽,雖然這個(gè)外設(shè)準(zhǔn)備工作已經(jīng)完成,也不能發(fā)出中斷請(qǐng)求。

中斷響應(yīng)、處理和返回

當(dāng)滿足了中斷的條件后,CPU就會(huì)響應(yīng)中斷,轉(zhuǎn)入中斷程序處理。具體的工作過程如下:

關(guān)閉中斷信號(hào)接收器

保存現(xiàn)場(chǎng)(context)

給出中斷入口,轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序

處理完成,返回并恢復(fù)現(xiàn)場(chǎng)(context)

開啟中斷信號(hào)接收器

中斷排隊(duì)和中斷判優(yōu)

中斷申請(qǐng)是隨機(jī)的,有時(shí)會(huì)出現(xiàn)多個(gè)中斷源同時(shí)提出中斷申請(qǐng)。

CPU每次只能響應(yīng)一個(gè)中斷源的請(qǐng)求。

CPU不可能對(duì)所有中斷請(qǐng)求一視同仁,它會(huì)根據(jù)各中斷源工作性質(zhì)的輕重緩急,預(yù)先安排一個(gè)優(yōu)先級(jí)順序。當(dāng)多個(gè)中斷源同時(shí)申請(qǐng)中斷時(shí),即按此優(yōu)先級(jí)順序進(jìn)行排隊(duì),等候CPU處理。

了解了CPU中斷處理的過程,就不難理解下面一種常見的情景:

正在拷貝文件時(shí),往某個(gè)文本框輸入信息,這個(gè)文本框會(huì)出現(xiàn)短暫的假死,鍵盤輸入的數(shù)據(jù)不能及時(shí)顯示在文本框中,需要等一會(huì)兒才能逐漸顯示出來(lái)。

這是因?yàn)樵撝袛嗖僮?往文本框輸入信息)在中斷隊(duì)列的優(yōu)先級(jí)比較低,或者CPU認(rèn)為正在處理的操作(拷貝文件)進(jìn)行掛起的代價(jià)太大,所以只有等到CPU到了一個(gè)掛起代價(jià)較低的點(diǎn),才會(huì)掛起當(dāng)前操作,處理本次中斷信息。

五、多核CPU對(duì)中斷的處理

多核CPU的中斷處理和單核有很大不同。多核的各處理器核心之間需要通過中斷方式進(jìn)行通信,所以CPU芯片內(nèi)部既有各處理器核心的本地中斷控制器,又有負(fù)責(zé)仲裁各核之間中斷分配的全局中斷控制器。

現(xiàn)今的多核處理器在中斷處理和中斷控制方面主要使用的是APIC(Advanced Programmable Interrupt Controllers),即高級(jí)編程中斷控制器。它是基于中斷控制器兩個(gè)基礎(chǔ)功能單元——本地單元以及I/O單元的分布式體系結(jié)構(gòu)。在多核系統(tǒng)中,多個(gè)本地和I/O APIC單元能夠作為一個(gè)整體通過APIC總線互相操作。

APIC的功能有:

接受來(lái)自處理器中斷引腳的內(nèi)部或外部I/O APIC的中斷,然后將這些中斷發(fā)送給處理器核心進(jìn)行處理

在多核處理器系統(tǒng)中,接收和發(fā)送核內(nèi)中斷消息

對(duì)于外部設(shè)備發(fā)出的中斷請(qǐng)求,由全局中斷控制器接收請(qǐng)求并決定交給CPU的哪一個(gè)核心處理。也可針對(duì)APIC編程,讓所有的中斷都被一個(gè)固定的CPU處理。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10781

    瀏覽量

    210533
  • 硬件中斷
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    6827

原文標(biāo)題:淺析CPU中斷技術(shù)

文章出處:【微信號(hào):Imgtec,微信公眾號(hào):Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CPU中斷相關(guān)知識(shí)科普

      ????中斷是硬件和軟件驅(qū)動(dòng)事件,它使得CPU暫停當(dāng)前的主程序,轉(zhuǎn)而去執(zhí)行一個(gè)中斷服務(wù)子程序。X281x的中斷系統(tǒng)從上至下分成了三級(jí),即CPU
    發(fā)表于 08-02 17:49 ?9295次閱讀
    <b class='flag-5'>CPU</b><b class='flag-5'>中斷</b>相關(guān)知識(shí)科普

    以x86 CPU架構(gòu)理解Linux中斷機(jī)制

    中斷機(jī)制:CPU在執(zhí)行指令時(shí),收到某個(gè)中斷信號(hào)轉(zhuǎn)而去執(zhí)行預(yù)先設(shè)定好的代碼,然后再返回到原指令流中繼續(xù)執(zhí)行,這就是中斷機(jī)制。
    的頭像 發(fā)表于 08-06 16:19 ?5421次閱讀

    世界OLED技術(shù)產(chǎn)品最新發(fā)展深入剖析

    本文核心提示 :本文是關(guān)于OLED最新發(fā)展的深入剖析。主要闡述OLED技術(shù)的現(xiàn)狀、OLED技術(shù)的優(yōu)勢(shì)、OLED技術(shù)的發(fā)展趨勢(shì)、各廠商OLED
    發(fā)表于 08-30 09:41 ?4156次閱讀

    DSP28035有關(guān)于中斷的程序

    DSPF28035有關(guān)于中斷的程序,實(shí)現(xiàn)基本的功能
    發(fā)表于 04-27 16:24 ?16次下載

    關(guān)于現(xiàn)代通信的理論和實(shí)踐

    關(guān)于現(xiàn)代通信的理論和實(shí)踐
    發(fā)表于 09-04 15:30 ?12次下載
    <b class='flag-5'>關(guān)于</b>現(xiàn)代通信的<b class='flag-5'>理論</b>和實(shí)踐

    CPU中斷與輪詢方式有什么區(qū)別

    程序中斷通常簡(jiǎn)稱中斷,是指CPU在正常運(yùn)行程序的過程中,由于預(yù)選安排或發(fā)生了各種隨機(jī)的內(nèi)部或外部事件,使CPU中斷正在運(yùn)行的程序,而轉(zhuǎn)到為相
    的頭像 發(fā)表于 10-03 14:18 ?6782次閱讀
    <b class='flag-5'>CPU</b>的<b class='flag-5'>中斷</b>與輪詢方式有什么區(qū)別

    關(guān)于如何判斷CPU是否正在執(zhí)行中斷函數(shù)?

    如何判斷CPU是否正在執(zhí)行中斷函數(shù)?
    的頭像 發(fā)表于 03-12 11:25 ?2532次閱讀

    單片機(jī)中斷CPU的輪詢有什么區(qū)別

    在單片機(jī)編程過程中,經(jīng)常會(huì)使用到中斷。那么,什么是單片機(jī)中斷,它與CPU的輪詢有什么區(qū)別?在本文中,單片機(jī)開發(fā)工程師將對(duì)單片機(jī)中斷CPU
    發(fā)表于 06-29 11:30 ?3571次閱讀

    單片機(jī)學(xué)習(xí)筆記——中斷原理及應(yīng)用

    單片機(jī)中斷原理(外部中斷中斷概念:中斷發(fā)生:CPU在處理某一事件A時(shí),發(fā)生了另一事件B請(qǐng)求CPU
    發(fā)表于 11-11 11:06 ?46次下載
    單片機(jī)學(xué)習(xí)筆記——<b class='flag-5'>中斷</b>原理及應(yīng)用

    單片機(jī)_中斷理解

    單片機(jī)_中斷的理解理論篇引入—什么是中斷?通俗的說:比如我正在寫博客,老板突然給我發(fā)一個(gè)任務(wù),我暫停的寫博客,轉(zhuǎn)而把老板布置的任務(wù)完成之后,再繼續(xù)寫博客,這個(gè)過程就可以理解成中斷。引用
    發(fā)表于 11-18 10:51 ?45次下載
    單片機(jī)_<b class='flag-5'>中斷</b>理解

    關(guān)于單片機(jī)的中斷的若干問題

    中斷技術(shù)概述中斷系統(tǒng)作用:實(shí)時(shí)測(cè)控,單片機(jī)能及時(shí)地響應(yīng)和處理單片機(jī)外部事件或內(nèi)部事件所提出的中斷請(qǐng)求。中斷的概念:
    發(fā)表于 11-19 10:36 ?12次下載
    <b class='flag-5'>關(guān)于</b>單片機(jī)的<b class='flag-5'>中斷</b>的若干問題

    基于STM32的中斷及DMA通信

    中斷模式編程,當(dāng)開關(guān)接高電平時(shí),LED亮燈;接低電平時(shí),LED滅燈。采用串口中斷方式完成串口通信一. 關(guān)于中斷的介紹中斷是當(dāng)
    發(fā)表于 11-26 12:36 ?0次下載
    基于STM32的<b class='flag-5'>中斷</b>及DMA通信

    深度剖析GPIO中斷

    本文介紹 GPIO 中斷,包括中斷示例及其各種功能。這是上一篇文章的延續(xù),該文章解釋了微控制器的并發(fā)和中斷的概念。
    的頭像 發(fā)表于 04-27 16:11 ?9172次閱讀
    深度<b class='flag-5'>剖析</b>GPIO<b class='flag-5'>中斷</b>

    中斷屏蔽技術(shù)主要用于什么

    中斷屏蔽技術(shù):主要用于多重中斷 多重中斷:(中斷嵌套)當(dāng)CPU正在執(zhí)行某個(gè)
    的頭像 發(fā)表于 10-30 16:54 ?1301次閱讀
    <b class='flag-5'>中斷</b>屏蔽<b class='flag-5'>技術(shù)</b>主要用于什么

    CPU中斷程序:從硬件看什么是中斷?

    CPU響應(yīng)中斷轉(zhuǎn)去執(zhí)行中斷服務(wù)程序前,需要把被中斷程序的現(xiàn)場(chǎng)信息保存起來(lái),以便執(zhí)行完中斷服務(wù)程序后,接著從被
    發(fā)表于 03-26 11:36 ?2493次閱讀
    <b class='flag-5'>CPU</b><b class='flag-5'>中斷</b>程序:從硬件看什么是<b class='flag-5'>中斷</b>?