精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

看一下中斷及ARM體系中對中斷的處理

安芯教育科技 ? 來源:老秦談芯 ? 2023-02-01 17:04 ? 次閱讀

中斷是指計算機運行過程中,出現某些意外情況需主機干預時,機器能自動停止正在運行的程序并轉入處理新情況的程序,處理完畢后又返回原被暫停的程序繼續運行。

中斷的幾個主要目的。第一,通過中斷可以提高CPU效率。假設一種場景,CPU通知其它設備完成某項工作,當設備完成任務后,CPU如何知道呢?一種方式是設備標記狀態寄存器,等待CPU來查詢,這種做法弊端是程序員在編寫程序時不能確切知道設備完成任務所需的時間,也就是說需要定時去查詢設備的狀態。

我們知道,現代CPU一般頻率很高,如果去頻繁查詢外部設備,尤其是低速設備,必將浪費很多的CPU資源;如果查詢的時間間隔長,那么外設的利用率就不高。有一種解決辦法,那就是外設處理完任務,主動告訴CPU,從而省去了CPU的查詢開銷。

中斷的第二個用途是,可以維護系統正常運行。現代的操作系統都是多任務系統,表面看起來多個程序在并行,實際上真正的CPU是分時復用的(假設最簡單的單核單線程),并不是真的并行。如果這時有一個惡意程序,一直霸占CPU資源不釋放,是不是整個系統就會掛死呢?答案是并不會,因為CPU的分配是由操作系統負責完成的,原理就是通過中斷把控制權從程序手中交還給操作系統。另外,CPU訪問內存或其它設備時,也可能發生一些錯誤。對于不同錯誤有不同的處理方式,也可以通過中斷來完成。

對于一些特定的應用場景,設備系統需要滿足實時性。所謂實時性,就是要求系統在規定的或者可預期的時間內作出反應。此類需求也可以通過中斷來滿足。

還記得前面講ARM異常時的概念嗎?中斷算一種異步異常,《ARM系列 -- 異常和特權》。A系列處理器提供四個管腳來實現中斷,分別是:

nIRQ:物理普通中斷

nFIQ:物理快速中斷

nVIRQ:虛擬普通中斷

nVFIQ:虛擬快速中斷

如下圖所示:

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

其中虛擬中斷是為了實現虛擬化而準備的,這部分留待以后講虛擬化時再說。我們只看物理中斷。

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

類似ARM的處理器,GIC有架構和實現之分。GIC的架構經歷了GICv1,GICv2,GICv3和GICv4。每個架構下有有對應的設計實現,比如GIC-600就是支持GICv3架構的最新IP。

在介紹GIC-600之前,有必要先講一下中斷的一些基本概念。首先,中斷是分優先級的。很多個設備同時發送中斷,處理器必須遵守一定的規則來給所有中斷排序,從而決定先響應哪個。這個規則就是中斷優先級,操作系統需要維護中斷處理器中的優先級寄存器。

既然有了優先級,就有了中斷嵌套。當處理器處理某個低優先級的中斷時,來了一個高優先級的中斷,CPU可以保留低優先級的中斷處理現場,轉而處理高優先級中斷,待高優先級處理完再繼續處理低優先級中斷。如果CPU在某段時間內,選擇不響應某設備,其中斷也可以被屏蔽。

在ARM體系中,對于每個中斷,有四個狀態:

inactive:中斷處于無效狀態

pending:中斷處于有效狀態,但是CPU沒有響應該中斷

active:中斷處于有效狀態,CPU在響應該中斷

active and pending:CPU在響應該中斷,但是該中斷源又發送中斷過來

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

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

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

SGI:(Software Generated Interrupt,軟件中斷),用于給其它的core發送中斷信號

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

ARM又為每種中斷分配了中斷號,用以區分,其中1020-1023是特殊的中斷號。

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

圖1GICv3中斷號分配

對于每個中斷,從產生到處理再到結束,是有一個完整的生命周期的。

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

圖2 物理中斷生命周期

generate:外設或軟件發起一個中斷

distribute:中斷經過分組,優先級仲裁等,發送給對應的CPU interface

deliver:CPU interface將中斷發送給core

activate:當CPU core開始響應中斷,GIC將最高激活優先級的中斷設置為激活

priority drop: core發信號給GIC,通知最高優先級中斷,GIC可以重置優先級

deactivation:清除中斷

這里要解釋一下CPU interface。前面也提到了,core提供給中斷的物理管腳只有兩個,中斷會有成百上千個,GIC怎么把這些中斷發送給core是一個問題。這時就需要CPU interface了。CPU interface將GIC發送的中斷信息,通過IRQ,FIQ管腳,發送給連接到core。CPU interface提供了以下的功能:

將中斷請求發送給core

中斷進行認可

中斷完成識別

設置中斷優先級屏蔽

定義中斷搶占策略

決定當前處于pending狀態最高優先級中斷

在GICv3架構中,CPU interface被抽離出來,實現在core內部的。也就是說,在GIC-600中,是不包含CPU interface的。這樣做的好處是,可以減少中斷響應的時間,并且減少系統總線的占用。對于眾核SoC設計來說,其物理設計非常大,CPU interface實現在core內部,也就意味著某些中斷寄存器可以放在其內部,這樣core就可以很快的訪問到這些寄存器了。

對于那些常用的寄存器,core不用跋山涉水的通過系統總線或片上網絡去頻繁訪問GIC了。CPU interface與GIC之間,是通過專用的AXI-stream總線來傳輸信息的。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9057

    瀏覽量

    366881
  • 寄存器
    +關注

    關注

    31

    文章

    5325

    瀏覽量

    120052
  • 中斷
    +關注

    關注

    5

    文章

    895

    瀏覽量

    41401
  • FIQ
    FIQ
    +關注

    關注

    0

    文章

    9

    瀏覽量

    2301

原文標題:技術分享 | 系列 -- 中斷(一)

文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    ARM體系架構處理器的中斷程序分析

    基礎知識 ARM體系架構的處理通常將低地址32字節作為中斷向量表,當中斷產生時會執行以下操作
    的頭像 發表于 11-21 11:10 ?2518次閱讀
    <b class='flag-5'>ARM</b><b class='flag-5'>體系</b>架構<b class='flag-5'>處理</b>器的<b class='flag-5'>中斷</b>程序分析

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

    01、ARM中斷體系ARM體系,在存儲地址的低位,固化了
    的頭像 發表于 11-27 11:01 ?6272次閱讀
    <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中斷異常處理具體過程

    ARM處理器是種流行的處理器架構,用于許多現代移動設備和嵌入式系統中斷和異常是
    發表于 09-05 15:45 ?1816次閱讀
    什么是<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>具體過程

    ARM體系中斷處理資料分享

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

    ARM向量中斷機制在uClinux的設計

    ARM體系結構,硬件產生的外部中斷( IRQ) 具有單的程序入口。為了識別籽源,進而運行
    發表于 06-27 15:45 ?64次下載
    <b class='flag-5'>ARM</b>向量<b class='flag-5'>中斷</b>機制在uClinux<b class='flag-5'>下</b>的設計

    ARM中斷處理的研究

    ARM處理器的普通中斷處理、任務切換中斷處理、可重人中斷
    發表于 07-06 12:08 ?4255次閱讀
    <b class='flag-5'>ARM</b><b class='flag-5'>中斷</b><b class='flag-5'>處理</b>的研究

    ARM9的中斷處理技術及其在Windows CE實現的研究

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

    ARM體系的異常中斷及其應用

    ARM體系的異常中斷及其應用
    發表于 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>及其應用

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

    ARM異常中斷發生時,系統執行完當前指令后,將跳轉到相應的異常中斷處理程序處執行。當異常中斷處理
    的頭像 發表于 06-17 10:05 ?8028次閱讀

    riscv的plic中斷處理與eclic詳解

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

    arm中斷是怎么實現的

    的機制,能夠提高系統的實時性和可靠性。在ARM處理中斷的實現主要涉及到下面的幾點。 中斷
    的頭像 發表于 09-05 16:22 ?1049次閱讀

    arm處理器有哪些中斷源?arm處理器對異常中斷的響應過程

    arm處理器有哪些中斷源?arm處理器對異常中斷的響應過程?
    的頭像 發表于 10-19 16:35 ?1401次閱讀

    ARM的異常中斷是如何實現進入中斷程序的?如何進入呢?

    ARM的異常中斷是如何實現進入中斷程序的?如何進入呢? 在計算機系統,異常和中斷是兩個常見的
    的頭像 發表于 10-19 16:36 ?978次閱讀

    中斷ARM體系中斷處理

    今天來看一下中斷ARM體系中斷處理,直接進入
    的頭像 發表于 11-07 17:11 ?685次閱讀
    <b class='flag-5'>中斷</b>及<b class='flag-5'>ARM</b><b class='flag-5'>體系</b><b class='flag-5'>中</b>對<b class='flag-5'>中斷</b>的<b class='flag-5'>處理</b>

    arm中斷是怎么實現的

    ARM中斷的實現是通過中斷控制器和異常模式實現的。ARM處理器通過中斷控制器來接收和
    的頭像 發表于 01-05 15:18 ?846次閱讀