• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > Cortex-M3的異常處理機制研究

    Cortex-M3的異常處理機制研究

    作者: 時間:2016-12-02 來源:網絡 收藏




    2.2 異常的返回

    Cortex- M3異常返回的操作如圖3所示。當從異常中返回時,處理器可能會處于以下情況之一:

    ◆尾鏈到一個已掛起的異常,該異常比棧中所有異常的優先級都高;
    ◆如果沒有掛起的異常,或是棧中最高優先級的異常比掛起的最高優先級異常具有更高的優先級,則返回到最近一個已壓棧的ISR;
    ◆如果沒有異常已經掛起或位于棧中,則返回到Tread模式。



    為了應對異常返回階段可能遇到的新的更高優先級異常,Cortex—M3支持完全基于硬件的尾鏈機制,簡化了激活的和未決的異常之問的移動,能夠在兩個異常之間沒有多余的狀態保存和恢復指令的情況下實現back—to—back處理。尾鏈發生的2個條件:異常返回時產生了新的異常;掛起的異常的優先級比所有被壓棧的異常的優先級都高。

    尾鏈發生后,Cortex—M3處理過程如圖3中尾鏈分支所示。這時,Cortex—M3處理器終止正在進行的出棧操作并跳過新異常進入時的壓棧操作,同時通過Ibus立即取出掛起異常的向量。在退出前一個ISR返回操作6個周期后,開始執行尾鏈的ISR。

    3 Cortex—M3和ARM7中斷控制器比較

    在過去的十年中,基于ARMv4的ARM7系列微控制器廣泛應用在各個領域。在ARM7系列中,并沒有對中斷進行獨立的服務,而是通過犧牲處理器一定的性能來換取有效的中斷響應和中斷處理機制。Cortex—M3高度耦合的NVIC可以實現硬件中斷處理,同時支持遲到和尾鏈機制,加快了異常響應的速度,充分發揮了處理器的性能。圖4為Corex—M3和ARM7在中斷控制器結構方面的差異。



    比較可知,NVIC是直接作為Cortex—M3處理器的一部分,集成在處理器核內部;而VIC只是游離在ARM7內核的外圍,這樣就必然占用內核資源,影響了處理速度。Cortex—M3和ARM7中斷控制器在功能和實現方式上的差異如表2所列。

    3.1 處理器響應單個異常

    Cortex一M3和ARM7異常處理過程如圖5所示。



    ARM7處理器的異常開銷:



    其中,TARM7為ARM7處理異常的時間開銷;TARM2_PUSH和TARM7_POP為ARM7進行壓棧和出棧的操作時間;TCoretx-M3為 Cortex一M3處理異常的時間開銷;TM3_PUSH和TM3_POP為Cortex—M3進行壓棧和出棧的操作時間。

    可見,由于采用處理器狀態硬件保存,Cortex—M3處理器少用了18周期,節省了42.8%的異常開銷。


    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 邵阳县| 富宁县| 垣曲县| 兴仁县| 历史| 石城县| 新平| 襄樊市| 益阳市| 古交市| 抚远县| 安化县| 濮阳县| 如东县| 临潭县| 改则县| 海盐县| 西林县| 怀柔区| 大同县| 南阳市| 惠来县| 东城区| 德令哈市| 五华县| 河池市| 苍溪县| 莱州市| 丰县| 南城县| 新和县| 罗平县| 定陶县| 木兰县| 裕民县| 嘉定区| 浏阳市| 巴楚县| 额济纳旗| 塔城市| 灵石县|