導(dǎo)致微控制器中斷延遲的原因_第1頁
導(dǎo)致微控制器中斷延遲的原因_第2頁
導(dǎo)致微控制器中斷延遲的原因_第3頁
導(dǎo)致微控制器中斷延遲的原因_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

導(dǎo)致微控制器中斷延遲的原因中斷從高速處理器中占用了很多資源,尤其是流水線密集且每個周期能夠發(fā)出多條指令的處理器。任何時候都可能有8到10條指令在運行,要么必須運行到完成,要么在正常執(zhí)行恢復(fù)后取消并重新啟動。電氣工程師需要檢查中斷對應(yīng)用程序的響應(yīng)速度是否足夠快,并且中斷的開銷不會淹沒主應(yīng)用程序。給定的MCU執(zhí)行中斷的速度有多快?這肯定會受到應(yīng)用程序的影響,但似乎很難找到該項目的編號。當(dāng)中斷發(fā)生時,CPU會保存它的一些寄存器并執(zhí)行中斷服務(wù)程序(ISR),然后在就緒狀態(tài)下返回最高優(yōu)先級的任務(wù)。中斷通常是可屏蔽和可嵌套的。為了清楚起見,延遲通常被指定為中斷請求和中斷服務(wù)程序中第一條指令執(zhí)行之間的時間。然而,“真正的延遲”必須包括一些必須在ISR中完成的內(nèi)務(wù)處理,這可能會導(dǎo)致混亂。電氣工程師通常感興趣的值是最壞情況下的中斷延遲。這是許多不同的較小延遲的總和。中斷請求信號需要與CPU時鐘同步。根據(jù)同步邏輯,在中斷請求到達CPU內(nèi)核之前,通常最多會丟失三個CPU周期。CPU通常會完成當(dāng)前指令。該指令可能需要很多周期,除法、推多或內(nèi)存復(fù)制指令需要最多的時鐘周期花費最多的時間。內(nèi)存訪問通常需要額外的周期。例如,在ARM7系統(tǒng)中,指令STMDBSP!,{R0-R11,LR}(Pushparametersandperm.)Registers通常是最壞情況的指令。它在堆棧上存儲13個32位寄存器,需要15個時鐘周期。存儲系統(tǒng)可能需要額外的等待狀態(tài)周期。在當(dāng)前指令完成后,CPU執(zhí)行模式切換或?qū)⒓拇嫫鳎ㄍǔJ荘C和標(biāo)志寄存器)壓入堆棧。通常,現(xiàn)代CPU(例如ARM)執(zhí)行模式切換,這比節(jié)省寄存器需要更少的CPU周期。如果您的CPU是流水線的,則模式開關(guān)已經(jīng)刷新了流水線,并且需要更多的周期來重新填充它。但我們還沒有完成。在更復(fù)雜的系統(tǒng)中,可能有其他原因?qū)е轮袛嘌舆t。在更復(fù)雜的系統(tǒng)中,可能存在導(dǎo)致中斷延遲的其他原因。緩存行填充導(dǎo)致的延遲:如果內(nèi)存系統(tǒng)有一個或多個緩存,這些緩存可能不包含所需的數(shù)據(jù)。然后,不僅從內(nèi)存中加載所需的數(shù)據(jù),而且在許多情況下需要執(zhí)行完整的行填充,從內(nèi)存中讀取多個字。緩存寫回造成的延遲:緩存未命中可能會導(dǎo)致行被替換。如果此行被標(biāo)記為臟,則需要將其寫回主存,從而導(dǎo)致額外的延遲。由內(nèi)存管理單元(MMU)轉(zhuǎn)換表遍歷引起的延遲:轉(zhuǎn)換表遍歷可能需要相當(dāng)長的時間,尤其是因為它們可能涉及緩慢的主內(nèi)存訪問。在實時中斷處理程序中,由不包含處理程序和/或其訪問的數(shù)據(jù)的轉(zhuǎn)換的轉(zhuǎn)換后備緩沖區(qū)(TLB)引起的轉(zhuǎn)換表遍歷會顯著增加中斷延遲。由應(yīng)用程序引起的延遲:應(yīng)用程序可以通過禁用中斷導(dǎo)致額外的延遲。中斷例程引起的延遲:如果應(yīng)用程序有多個緊急中斷,它們不能被屏蔽,因此可能會請求另一個,從而延長了總時間。RTOS引起的延遲:RTOS還需要暫時禁用可以調(diào)用API函數(shù)的中斷。一些RTOS禁用所有中斷,有效地惡化了所有中斷的中斷延遲,一些(如Segger的embOS)僅禁用低優(yōu)先級中斷。ARM7和ARMCortexARM7和ARMCortex在中斷領(lǐng)域有很大不同。通過在處理器中集成中斷控制器,基于Cortex-M3處理器的微控制器具有一個中斷向量入口和每個中斷源的中斷處理程序。這避免了重入中斷處理程序的需要,這對中斷延遲有負面影響。Cortex-M3還通過邏輯加速中斷處理程序的執(zhí)行,以便在中斷到達時自動將其通用寄存器和狀態(tài)寄存器保存在堆棧中。在某些情況下,通過尾鏈同時到達的中斷使M3更加高效,如圖1所示?;贑ortex-M3處理器的MCU的中斷延遲高達12個周期,并且上下文切換時間《4μs,而ARM7《7μs。圖1:Cortex-M3處理器上的尾鏈加速。MicrochipMicrochip的技術(shù)工程師KeithCurtis表示,8位PIC-16/PIC-18MCU需要12到20個時鐘周期才能到達ISR——這取決于中斷時正在進行的指令類型。然后,在ISR中,編譯器將添加指令以確定中斷的來源并推送一些寄存器。如果您使用的是匯編語言,您將放入自己需要推送的項目,也許沒有。根據(jù)應(yīng)用工程師AdrianAur的說法,Microchip的32位PIC32MCU最多需要11個時鐘周期才能到達ISR,您將在其中至少保存一些寄存器——最壞的情況是,所有32個每個都需要一個時鐘周期。如果您響應(yīng)最高優(yōu)先級(且不可中斷)的INT7,將使用一組影子寄存器,從而使響應(yīng)速度更快。然后,RTOS可能想要進行線程更改,或者在以較低優(yōu)先級運行時啟用嵌套中斷,這會增加一些延遲。除此之外,你應(yīng)該沒問題Atmel2008年,電子產(chǎn)品雜志授予AtmelAVRXMEGA微控制器系列年度產(chǎn)品獎。最大的原因是其創(chuàng)新的八通道事件系統(tǒng),該系統(tǒng)使用與數(shù)據(jù)總線分開的總線,無需CPU或DMA即可實現(xiàn)外設(shè)間通信。這樣做的好處是可預(yù)測、低延遲、外設(shè)間信號通信、減少CPU使用率以及釋放中斷資源。獨立于CPU和DMA,事件系統(tǒng)的響應(yīng)時間永遠不會超過I/O時鐘的兩個時鐘周期(通常為62.5ns)。XMEGA使用哈佛架構(gòu),程序存儲器與數(shù)據(jù)分離。使用單級流水線訪問程序存儲器。在執(zhí)行一條指令時,會預(yù)取下一條指令??焖僭L問RISC寄存器文件(32x8位通用工作寄存器)增強了性能。在一個時鐘周期內(nèi),XMEGA可以將寄存器文件中的兩個任意寄存器饋送到ALU,執(zhí)行請求的操作,并將結(jié)果寫回任意寄存器。所有已啟用中斷的中斷響應(yīng)時間至少為五個CPU時鐘周期。在這五個時鐘周期內(nèi),程序計數(shù)器被壓入堆棧。五個時鐘周期后,執(zhí)行中斷的程序向量。跳轉(zhuǎn)到中斷處理程序需要三個時鐘周期。如果在執(zhí)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論