新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Cortex-M3內(nèi)核的異常處理機(jī)制及其新技術(shù)研究

Cortex-M3內(nèi)核的異常處理機(jī)制及其新技術(shù)研究

作者: 時(shí)間:2013-05-09 來源:網(wǎng)絡(luò) 收藏

2.2 的返回

CortexM3返回的操作[2]如圖3所示。當(dāng)從中返回時(shí),器可能會處于以下情況之一[4]:

◆ 尾鏈到一個(gè)已掛起的異常,該異常比棧中所有異常的優(yōu)先級都高;

◆ 如果沒有掛起的異常,或是棧中最高優(yōu)先級的異常比掛起的最高優(yōu)先級異常具有更高的優(yōu)先級,則返回到最近一個(gè)已壓棧的ISR;

◆ 如果沒有異常已經(jīng)掛起或位于棧中,則返回到Tread模式。

為了應(yīng)對異常返回階段可能遇到的新的更高優(yōu)先級異常,CortexM3支持完全基于硬件的尾鏈,簡化了激活的和未決的異常之間的移動,能夠在兩個(gè)異常之間沒有多余的狀態(tài)保存和恢復(fù)指令的情況下實(shí)現(xiàn)backMtoMback。尾鏈發(fā)生的2個(gè)條件[2]:異常返回時(shí)產(chǎn)生了新的異常;掛起的異常的優(yōu)先級比所有被壓棧的異常的優(yōu)先級都高。

尾鏈發(fā)生后,CortexM3過程如圖3中尾鏈分支所示。這時(shí),CortexM3處理器終止正在進(jìn)行的出棧操作并跳過新異常進(jìn)入時(shí)的壓棧操作,同時(shí)通過Ibus立即取出掛起異常的向量。在退出前一個(gè)ISR返回操作6個(gè)周期后,開始執(zhí)行尾鏈的ISR.

圖3 異常的返回

3 CortexM3和ARM7中斷控制器比較

在過去的十年中,基于ARMv4的ARM7系列微控制器廣泛應(yīng)用在各個(gè)領(lǐng)域。在ARM7系列中,并沒有對中斷進(jìn)行獨(dú)立的服務(wù),而是通過犧牲處理器一定的性能來換取有效的中斷響應(yīng)和中斷處理。CortexM3高度耦合的NVIC可以實(shí)現(xiàn)硬件中斷處理,同時(shí)支持遲到和尾鏈,加快了異常響應(yīng)的速度,充分發(fā)揮了處理器的性能。

圖4 為CorexM3和ARM7在中斷控制器結(jié)構(gòu)方面的差異。

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

圖4 CortexM3和ARM7中斷控制器結(jié)構(gòu)的差異

表2 CortexM3和ARM7中斷控制器功能和實(shí)現(xiàn)方式的差異

3.1 處理器響應(yīng)單個(gè)異常

CortexM3和ARM7異常處理過程如圖5所示。

圖5 CortexM3和ARM7異常處理過程

ARM7處理器的異常開銷:

CortexM3處理器的異常開銷:

其中,TARM7為ARM7處理異常的時(shí)間開銷;TARM7_PUSH和TARM7_POP為ARM7進(jìn)行壓棧和出棧的操作時(shí)間;TCoretxM3為CortexM3處理異常的時(shí)間開銷;TM3_PUSH和TM3_POP為CortexM3進(jìn)行壓棧和出棧的操作時(shí)間。

可見,由于采用處理器狀態(tài)硬件保存,CortexM3處理器少用了18周期,節(jié)省了42.8%的異常開銷。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉