一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

看一下中斷及ARM體系中對(duì)中斷的處理

安芯教育科技 ? 來(lái)源:老秦談芯 ? 2023-02-01 17:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

中斷是指計(jì)算機(jī)運(yùn)行過(guò)程中,出現(xiàn)某些意外情況需主機(jī)干預(yù)時(shí),機(jī)器能自動(dòng)停止正在運(yùn)行的程序并轉(zhuǎn)入處理新情況的程序,處理完畢后又返回原被暫停的程序繼續(xù)運(yùn)行。

中斷的幾個(gè)主要目的。第一,通過(guò)中斷可以提高CPU效率。假設(shè)一種場(chǎng)景,CPU通知其它設(shè)備完成某項(xiàng)工作,當(dāng)設(shè)備完成任務(wù)后,CPU如何知道呢?一種方式是設(shè)備標(biāo)記狀態(tài)寄存器,等待CPU來(lái)查詢,這種做法弊端是程序員在編寫程序時(shí)不能確切知道設(shè)備完成任務(wù)所需的時(shí)間,也就是說(shuō)需要定時(shí)去查詢?cè)O(shè)備的狀態(tài)。

我們知道,現(xiàn)代CPU一般頻率很高,如果去頻繁查詢外部設(shè)備,尤其是低速設(shè)備,必將浪費(fèi)很多的CPU資源;如果查詢的時(shí)間間隔長(zhǎng),那么外設(shè)的利用率就不高。有一種解決辦法,那就是外設(shè)處理完任務(wù),主動(dòng)告訴CPU,從而省去了CPU的查詢開(kāi)銷。

中斷的第二個(gè)用途是,可以維護(hù)系統(tǒng)正常運(yùn)行?,F(xiàn)代的操作系統(tǒng)都是多任務(wù)系統(tǒng),表面看起來(lái)多個(gè)程序在并行,實(shí)際上真正的CPU是分時(shí)復(fù)用的(假設(shè)最簡(jiǎn)單的單核單線程),并不是真的并行。如果這時(shí)有一個(gè)惡意程序,一直霸占CPU資源不釋放,是不是整個(gè)系統(tǒng)就會(huì)掛死呢?答案是并不會(huì),因?yàn)镃PU的分配是由操作系統(tǒng)負(fù)責(zé)完成的,原理就是通過(guò)中斷把控制權(quán)從程序手中交還給操作系統(tǒng)。另外,CPU訪問(wèn)內(nèi)存或其它設(shè)備時(shí),也可能發(fā)生一些錯(cuò)誤。對(duì)于不同錯(cuò)誤有不同的處理方式,也可以通過(guò)中斷來(lái)完成。

對(duì)于一些特定的應(yīng)用場(chǎng)景,設(shè)備系統(tǒng)需要滿足實(shí)時(shí)性。所謂實(shí)時(shí)性,就是要求系統(tǒng)在規(guī)定的或者可預(yù)期的時(shí)間內(nèi)作出反應(yīng)。此類需求也可以通過(guò)中斷來(lái)滿足。

還記得前面講ARM異常時(shí)的概念嗎?中斷算一種異步異常,《ARM系列 -- 異常和特權(quán)》。A系列處理器提供四個(gè)管腳來(lái)實(shí)現(xiàn)中斷,分別是:

nIRQ:物理普通中斷

nFIQ:物理快速中斷

nVIRQ:虛擬普通中斷

nVFIQ:虛擬快速中斷

如下圖所示:

ecfc7bdc-a20e-11ed-bfe3-dac502259ad0.png

其中虛擬中斷是為了實(shí)現(xiàn)虛擬化而準(zhǔn)備的,這部分留待以后講虛擬化時(shí)再說(shuō)。我們只看物理中斷。

在開(kāi)始介紹中斷概念時(shí),我們說(shuō)中斷可能會(huì)有很多種,每個(gè)設(shè)備都可能要發(fā)中斷,而ARM處理器只有兩個(gè)管腳,那怎么辦?這時(shí),就需要有一個(gè)模塊來(lái)收集所有的中斷,然后轉(zhuǎn)發(fā)給處理器。在ARM的體系中,這個(gè)模塊就是通用中斷處理器(generic interrupt controller,以下簡(jiǎn)稱GIC)。

類似ARM的處理器,GIC有架構(gòu)和實(shí)現(xiàn)之分。GIC的架構(gòu)經(jīng)歷了GICv1,GICv2,GICv3和GICv4。每個(gè)架構(gòu)下有有對(duì)應(yīng)的設(shè)計(jì)實(shí)現(xiàn),比如GIC-600就是支持GICv3架構(gòu)的最新IP。

在介紹GIC-600之前,有必要先講一下中斷的一些基本概念。首先,中斷是分優(yōu)先級(jí)的。很多個(gè)設(shè)備同時(shí)發(fā)送中斷,處理器必須遵守一定的規(guī)則來(lái)給所有中斷排序,從而決定先響應(yīng)哪個(gè)。這個(gè)規(guī)則就是中斷優(yōu)先級(jí),操作系統(tǒng)需要維護(hù)中斷處理器中的優(yōu)先級(jí)寄存器。

既然有了優(yōu)先級(jí),就有了中斷嵌套。當(dāng)處理器處理某個(gè)低優(yōu)先級(jí)的中斷時(shí),來(lái)了一個(gè)高優(yōu)先級(jí)的中斷,CPU可以保留低優(yōu)先級(jí)的中斷處理現(xiàn)場(chǎng),轉(zhuǎn)而處理高優(yōu)先級(jí)中斷,待高優(yōu)先級(jí)處理完再繼續(xù)處理低優(yōu)先級(jí)中斷。如果CPU在某段時(shí)間內(nèi),選擇不響應(yīng)某設(shè)備,其中斷也可以被屏蔽。

在ARM體系中,對(duì)于每個(gè)中斷,有四個(gè)狀態(tài):

inactive:中斷處于無(wú)效狀態(tài)

pending:中斷處于有效狀態(tài),但是CPU沒(méi)有響應(yīng)該中斷

active:中斷處于有效狀態(tài),CPU在響應(yīng)該中斷

active and pending:CPU在響應(yīng)該中斷,但是該中斷源又發(fā)送中斷過(guò)來(lái)

在ARM體系中,中斷分為以下幾個(gè)類型(不討論虛擬中斷):

PPI:(Private Peripheral Interrupt,私有外設(shè)中斷),該中斷來(lái)源于core,但是該中斷只對(duì)指定的core有效,所謂的私有即指對(duì)core私有;

SPI:(Shared Peripheral Interrupt,共享外設(shè)中斷),該中斷來(lái)源于外部設(shè)備,該中斷可以對(duì)所有的core有效;

SGI:(Software Generated Interrupt,軟件中斷),用于給其它的core發(fā)送中斷信號(hào);

LPI:(Locality-specific Peripheral Interrupt,特定局部外設(shè)中斷),是一種基于消息的邊沿中斷。

ARM又為每種中斷分配了中斷號(hào),用以區(qū)分,其中1020-1023是特殊的中斷號(hào)。

ed1ed92a-a20e-11ed-bfe3-dac502259ad0.png

圖1GICv3中斷號(hào)分配

對(duì)于每個(gè)中斷,從產(chǎn)生到處理再到結(jié)束,是有一個(gè)完整的生命周期的。

ed3af844-a20e-11ed-bfe3-dac502259ad0.png

圖2 物理中斷生命周期

generate:外設(shè)或軟件發(fā)起一個(gè)中斷

distribute:中斷經(jīng)過(guò)分組,優(yōu)先級(jí)仲裁等,發(fā)送給對(duì)應(yīng)的CPU interface

deliver:CPU interface將中斷發(fā)送給core

activate:當(dāng)CPU core開(kāi)始響應(yīng)中斷,GIC將最高激活優(yōu)先級(jí)的中斷設(shè)置為激活

priority drop: core發(fā)信號(hào)給GIC,通知最高優(yōu)先級(jí)中斷,GIC可以重置優(yōu)先級(jí)

deactivation:清除中斷

這里要解釋一下CPU interface。前面也提到了,core提供給中斷的物理管腳只有兩個(gè),中斷會(huì)有成百上千個(gè),GIC怎么把這些中斷發(fā)送給core是一個(gè)問(wèn)題。這時(shí)就需要CPU interface了。CPU interface將GIC發(fā)送的中斷信息,通過(guò)IRQ,F(xiàn)IQ管腳,發(fā)送給連接到core。CPU interface提供了以下的功能:

將中斷請(qǐng)求發(fā)送給core

中斷進(jìn)行認(rèn)可

中斷完成識(shí)別

設(shè)置中斷優(yōu)先級(jí)屏蔽

定義中斷搶占策略

決定當(dāng)前處于pending狀態(tài)最高優(yōu)先級(jí)中斷

在GICv3架構(gòu)中,CPU interface被抽離出來(lái),實(shí)現(xiàn)在core內(nèi)部的。也就是說(shuō),在GIC-600中,是不包含CPU interface的。這樣做的好處是,可以減少中斷響應(yīng)的時(shí)間,并且減少系統(tǒng)總線的占用。對(duì)于眾核SoC設(shè)計(jì)來(lái)說(shuō),其物理設(shè)計(jì)非常大,CPU interface實(shí)現(xiàn)在core內(nèi)部,也就意味著某些中斷寄存器可以放在其內(nèi)部,這樣core就可以很快的訪問(wèn)到這些寄存器了。

對(duì)于那些常用的寄存器,core不用跋山涉水的通過(guò)系統(tǒng)總線或片上網(wǎng)絡(luò)去頻繁訪問(wèn)GIC了。CPU interface與GIC之間,是通過(guò)專用的AXI-stream總線來(lái)傳輸信息的。





審核編輯:劉清

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

    關(guān)注

    134

    文章

    9347

    瀏覽量

    377154
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5433

    瀏覽量

    124325
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    905

    瀏覽量

    42750
  • FIQ
    FIQ
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    2411

原文標(biāo)題:技術(shù)分享 | 系列 -- 中斷(一)

文章出處:【微信號(hào):Ithingedu,微信公眾號(hào):安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ARM體系架構(gòu)處理器的中斷程序分析

    基礎(chǔ)知識(shí) ARM體系架構(gòu)的處理通常將低地址32字節(jié)作為中斷向量表,當(dāng)中斷產(chǎn)生時(shí)會(huì)執(zhí)行以下操作
    的頭像 發(fā)表于 11-21 11:10 ?2872次閱讀
    <b class='flag-5'>ARM</b><b class='flag-5'>體系</b>架構(gòu)<b class='flag-5'>處理</b>器的<b class='flag-5'>中斷</b>程序分析

    ARM中斷體系和ZYNQ中斷體系詳解

    01、ARM中斷體系ARM體系,在存儲(chǔ)地址的低位,固化了
    的頭像 發(fā)表于 11-27 11:01 ?6963次閱讀
    <b class='flag-5'>ARM</b><b class='flag-5'>中斷</b><b class='flag-5'>體系</b>和ZYNQ<b class='flag-5'>中斷</b><b class='flag-5'>體系</b>詳解

    什么是ARM中斷事件?ARM中斷異常處理具體過(guò)程

    ARM處理器是種流行的處理器架構(gòu),用于許多現(xiàn)代移動(dòng)設(shè)備和嵌入式系統(tǒng)。中斷和異常是
    發(fā)表于 09-05 15:45 ?2485次閱讀
    什么是<b class='flag-5'>ARM</b><b class='flag-5'>中斷</b>事件?<b class='flag-5'>ARM</b><b class='flag-5'>中斷</b>異常<b class='flag-5'>處理</b>具體過(guò)程

    ARM體系對(duì)中斷處理資料分享

    1、通用中斷處理器的介紹今天來(lái)看一下中斷ARM體系
    發(fā)表于 04-13 18:09

    ARM向量中斷機(jī)制在uClinux的設(shè)計(jì)

    ARM體系結(jié)構(gòu),硬件產(chǎn)生的外部中斷( IRQ) 具有單的程序入口。為了識(shí)別籽源,進(jìn)而運(yùn)行
    發(fā)表于 06-27 15:45 ?64次下載
    <b class='flag-5'>ARM</b>向量<b class='flag-5'>中斷</b>機(jī)制在uClinux<b class='flag-5'>下</b>的設(shè)計(jì)

    ARM中斷處理的研究

    對(duì)ARM處理器的普通中斷處理、任務(wù)切換中斷處理、可重人中斷
    發(fā)表于 07-06 12:08 ?4390次閱讀
    <b class='flag-5'>ARM</b><b class='flag-5'>中斷</b><b class='flag-5'>處理</b>的研究

    ARM9的中斷處理技術(shù)及其在Windows CE實(shí)現(xiàn)的研究

    文中介紹ARM9系列嵌入式微處理器的中斷體系結(jié)構(gòu) ,論述 Windows CE.net 的中斷處理
    發(fā)表于 03-14 16:11 ?0次下載

    ARM體系的異常中斷及其應(yīng)用

    ARM體系的異常中斷及其應(yīng)用
    發(fā)表于 09-22 16:51 ?4次下載
    <b class='flag-5'>ARM</b><b class='flag-5'>體系</b><b class='flag-5'>中</b>的異常<b class='flag-5'>中斷</b>及其應(yīng)用

    ARM異常中斷的原因及處理措施

    當(dāng)ARM異常中斷發(fā)生時(shí),系統(tǒng)執(zhí)行完當(dāng)前指令后,將跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序處執(zhí)行。當(dāng)異常中斷處理
    的頭像 發(fā)表于 06-17 10:05 ?8665次閱讀

    riscv的plic中斷處理與eclic詳解

    淺析riscv的plic與eclic 1.PLIC中斷處理 2.sifive中斷的編程模型 3.關(guān)于eclic 4.關(guān)于jalmnxti 1.PLIC
    的頭像 發(fā)表于 04-15 13:50 ?1.4w次閱讀
    riscv<b class='flag-5'>中</b>的plic<b class='flag-5'>中斷</b><b class='flag-5'>處理</b>與eclic詳解

    arm中斷是怎么實(shí)現(xiàn)的

    的機(jī)制,能夠提高系統(tǒng)的實(shí)時(shí)性和可靠性。在ARM處理,中斷的實(shí)現(xiàn)主要涉及到下面的幾點(diǎn)。 、中斷
    的頭像 發(fā)表于 09-05 16:22 ?1426次閱讀

    arm處理器有哪些中斷源?arm處理器對(duì)異常中斷的響應(yīng)過(guò)程

    arm處理器有哪些中斷源?arm處理器對(duì)異常中斷的響應(yīng)過(guò)程?
    的頭像 發(fā)表于 10-19 16:35 ?1952次閱讀

    ARM的異常中斷是如何實(shí)現(xiàn)進(jìn)入中斷程序的?如何進(jìn)入呢?

    ARM的異常中斷是如何實(shí)現(xiàn)進(jìn)入中斷程序的?如何進(jìn)入呢? 在計(jì)算機(jī)系統(tǒng),異常和中斷是兩個(gè)常見(jiàn)的
    的頭像 發(fā)表于 10-19 16:36 ?1423次閱讀

    中斷ARM體系對(duì)中斷處理

    今天來(lái)看一下中斷ARM體系對(duì)中斷處理,直接進(jìn)入
    的頭像 發(fā)表于 11-07 17:11 ?1063次閱讀
    <b class='flag-5'>中斷</b>及<b class='flag-5'>ARM</b><b class='flag-5'>體系</b><b class='flag-5'>中</b>對(duì)<b class='flag-5'>中斷</b>的<b class='flag-5'>處理</b>

    arm中斷是怎么實(shí)現(xiàn)的

    ARM中斷的實(shí)現(xiàn)是通過(guò)中斷控制器和異常模式實(shí)現(xiàn)的。ARM處理器通過(guò)中斷控制器來(lái)接收和
    的頭像 發(fā)表于 01-05 15:18 ?1379次閱讀