中文字幕第二一区_久久久久在线视频_精品国产自在现线看久久_亚洲精品一区二区三区电影网

產品分類

當前位置: 首頁 > 工業電子產品 > 其他電子產品 > SoM

類型分類:
科普知識
數據分類:
SoM

Real Time: Some Notes on Microcontroller Interrupt Latency

發布日期:2022-10-09 點擊率:226

       
Interrupts take a lot out of a high-speed processor, especially one that is heavily pipelined and, capable of issuing more than one instruction per cycle. There could be eight to ten instructions in flight at any one time that either have to be run to completion, or annulled and restarted once normal execution resumes.

The electrical engineer needs to check that the interrupt responds fast enough for the application and, that the overhead of the interrupt does not swamp the main application.

Just how fast can a given MCU perform an interrupt? That is certainly affected by the application, but it seems unreasonably hard to find a number for this item.

When an interrupt occurs, the CPU saves some of its registers and executes the interrupt service routine (ISR), and then returns to the highest-priority task in the ready state. Interrupts are usually maskable and nestable.

Just to be clear, latency is usually specified as the time between the interrupt request and execution of the first instruction in the interrupt service routine. However the "real latency" must include some housekeeping that must be done in the ISR, which can cause confusion.

The value in which an electrical engineer is usually interested is the worst -case interrupt latency. This is a sum of many different smaller delays.

  1. The interrupt request signal needs to be synchronized to the CPU clock. Depending on the synchronization logic, typically up to three CPU cycles can be lost before the interrupt request has reached the CPU core.

  2. The CPU will typically complete the current instruction. This instruction can take a lot of cycles, with divide, push-multiple, or memory-copy instructions requiring most clock cycles taking the most time. There are often additional cycles required for memory access. In an ARM7 system, for example, the instruction STMDB SP!,{R0-R11,LR} (Push parameters and perm.) Registers is typically the worst case instruction. It stores 13 32-bit registers on the stack and requires 15 clock cycles.

  3. The memory system may require additional cycles for wait states.

  4. After completion of the current instruction, the CPU performs a mode switch or pushes registers (typically PC and flag registers) on the stack. In general, modern CPUs (such as ARM) perform a mode switch, which requires less CPU cycles than saving registers.

  5. If your CPU is pipelined, the mode switch has flushed the pipeline and a few more cycles are required to refill it. But we are not done yet. In more complex systems, there can be additional causes for interrupt latencies.


In more complex systems, there can be additional cause for interrupt latencies.

  1. Latencies cause by cache line fill:
    If the memory system has one or multiple caches, these may not contain the required data. Then, not only the required data is loaded from memory, but in many cases a complete line fill needs to be performed, reading multiple words from memory.

  2. Latencies caused by cache write back:
    A cache miss may cause a line to replaced. If this line is marked as dirty, it needs to be written back to main memory, causing an additional delay.

  3. Latencies caused by Memory Management Units (MMU) translation table walks:
    Translation table walks can take a considerable amount of time, especially as they involve potentially slow main memory accesses. In real-time interrupt handlers, translation table walks caused by the Translation Lookaside Buffer (TLB) not containing translations for the handler and/or the data it accesses can increase interrupt latency significantly.

  4. Latencies caused by the application program:
    The application program can cause additional latencies by disabling interrupts.

  5. Latencies caused by interrupt routines:
    If the application has more than one urgent interrupt, they cannot be masked off so another may be requested, lengthening the total time.

  6. Latencies caused by the RTOS:
    A RTOS also needs to temporarily disable the interrupts which can call API-functions. Some RTOSs disable all interrupts, effectively worsening interrupt latencies for all interrupts, some (like embOS from Segger) disable only low-priority interrupts.


ARM7 and ARM Cortex

The ARM7 and ARM Cortex are very different in the interrupt area. By integrating the interrupt controller in the processor, Cortex-M3 processor-based microcontrollers have one interrupt vector entry and interrupt handler per interrupt source. This avoids the need for re-entrant interrupt handlers, which have a negative effect on interrupt latency.

 ARM7TDMICortex-M3
Interrupt controllerExternal to processorIntegrated nested vectored interrupt controller
Interrupt handlersOne fast (nFIQ) and one slow (nIRQ)One handler per interrupt source
RTOS system timerUses one timer of the microcontrollerUses integrated "SysTick" timer on the processor
System callsSWI instruction (interrupts disabled)SVC instruction (interrupts enabled)
Memory interfaceSingle interface, data read/write takes 3 cyclesSeparate instruction and data bus interfaces, single cycle data read/write
PipelineThree-stageThree-stage with branch speculation
Bit manipulationRead, modify, writeSingle instruction

The Cortex-M3 also accelerates the execution of interrupt handlers with logic to automatically save its general purpose and status registers in the stack when an interrupt arrives. The M3 is made even more efficient, in certain circumstances, by tail-chaining interrupts that arrive at the same time, as shown in Figure 1.

The interrupt latency is up to 12 cycles for the Cortex-M3 processor-based MCU, and the context switch time is<4 μs, while the ARM7 is <7 μs.

Tail-chaining

Figure 1: Tail-chaining on Cortex-M3 processor speeds up things.


Microchip

According to Keith Curtis, technical staff engineer at Microchip, the 8-bit PIC-16/PIC-18 MCUs take 12 to 20 clock cycles to get to the ISR — depending on the type of instruction that was in progress at interrupt time. Then, in the ISR, the compiler will add instructions to determine where the interrupt originated and to push some registers. If you are using assembly language, you would put in your own items that need pushing, perhaps none.

Microchip's 32-bit PIC32 MCUs, according to Adrian Aur, applications engineer, will take a maximum of 11 clock cycles to get to the ISR where you will save at least some registers — worst case, all 32 of them need one clock cycle each. If you are responding to INT7, the highest priority (and not interruptible), a set of shadow registers will be used, making response much faster. Then, the RTOS may want to make a thread change, or enable nested interrupts when running at lower priority levels, which will add some latency. Other than that, you should be fine

Atmel

In 2008, Electronic Products Magazine gave Atmel a Product of the Year Award for the AVR XMEGA microcontroller family. The biggest reason for that was its innovative eight-channel event system which enables inter-peripheral communication without CPU or DMA usage using a bus separate from the data bus. The benefit of this is predictable, low-latency, inter-peripheral signal communication, reduced CPU usage, and the freeing of interrupt resources.

Independent of the CPU and DMA, the response time for the event system will never be more than two clock cycles of the I/O clock (usually 62.5 ns).

The XMEGA uses a Harvard architecture with the program memory separate from data. Program memory is accessed with single level pipelining. While one instruction is being executed, the next is prefetched. Performance is enhanced with the fast-access RISC register file — 32 x 8-bit general-purpose working registers. Within one single clock cycle, XMEGA can feed two arbitrary registers from the register file to the ALU, do a requested operation, and write back the result to an arbitrary register.

The interrupt response time for all the enabled interrupts is a minimum of five CPU clock cycles. During these five clock cycles, the program counter is pushed on the stack. After five clock cycles, the program vector for the interrupt is executed. The jump to the interrupt handler takes three clock cycles.

If an interrupt occurs during execution of a multicycle instruction, this instruction is completed before the interrupt is served. If an interrupt occurs when the device is in sleep mode, the interrupt execution response time is increased by five clock cycles. In addition, the response time is increased by the start-up time from the selected sleep mode.

A return from an interrupt-handling routine takes five clock cycles. During these five clock cycles, the program counter is popped from the stack and the stack pointer is incremented.

下一篇: PLC、DCS、FCS三大控

上一篇: Low-Power, Long Rang

推薦產品

更多
中文字幕第二一区_久久久久在线视频_精品国产自在现线看久久_亚洲精品一区二区三区电影网

      9000px;">

          91在线porny国产在线看| 色女孩综合影院| 亚洲一区在线观看免费| 中文在线一区二区| 日韩欧美国产三级电影视频| 欧美日韩中字一区| 色视频成人在线观看免| 国产传媒久久文化传媒| 国内精品在线播放| 蜜桃精品视频在线| 九色porny丨国产精品| 日本91福利区| 精品一区二区日韩| 精品亚洲成a人在线观看| 三级一区在线视频先锋| 五月综合激情婷婷六月色窝| 日本亚洲电影天堂| 久久99国产精品免费| 国产一区二区三区在线看麻豆| 婷婷久久综合九色综合绿巨人| 亚洲成人av中文| 麻豆国产一区二区| 国产成人午夜视频| voyeur盗摄精品| 欧美日韩精品一区二区三区| 欧美性大战久久久久久久| 国产精品欧美一级免费| 国产毛片精品视频| 久久先锋影音av鲁色资源网| 麻豆国产精品官网| 国产三级欧美三级日产三级99| 国产成人欧美日韩在线电影| 国产精品毛片无遮挡高清| 94-欧美-setu| 午夜视频在线观看一区二区三区 | 日韩不卡在线观看日韩不卡视频| 欧美影视一区二区三区| 国产丝袜美腿一区二区三区| 亚洲一区二区欧美| 国产69精品久久99不卡| 欧美α欧美αv大片| 日韩制服丝袜av| 欧美影院一区二区| 国产精品久久夜| 成人免费福利片| 中文字幕国产一区| 精品一区二区三区在线播放视频| 97精品视频在线观看自产线路二| 精品久久久久99| 日本成人中文字幕在线视频 | 精品1区2区在线观看| 亚洲一区二区三区四区不卡| 成人丝袜视频网| 奇米色一区二区| 欧美α欧美αv大片| 日韩av电影免费观看高清完整版| aaa国产一区| 国产盗摄女厕一区二区三区 | 日本欧美大码aⅴ在线播放| 国产精品不卡一区二区三区| 精品捆绑美女sm三区| 6080国产精品一区二区| 日本高清免费不卡视频| 国产精品美日韩| 91亚洲国产成人精品一区二三 | 九九**精品视频免费播放| 欧美日本一区二区三区| 五月天一区二区三区| 日韩视频在线观看一区二区| 国模娜娜一区二区三区| 国产精品久久久久精k8| 色噜噜偷拍精品综合在线| 亚洲黄色免费电影| 91精品婷婷国产综合久久性色| 蜜臀av一区二区| 中文天堂在线一区| 色狠狠桃花综合| 精品一区二区国语对白| 中文字幕亚洲综合久久菠萝蜜| 欧美日韩国产中文| 国产一区二区三区黄视频 | 国产精品灌醉下药二区| 亚洲国产另类av| 亚洲电影视频在线| 天天色综合成人网| 国产激情视频一区二区三区欧美 | 国产美女精品人人做人人爽| 丁香亚洲综合激情啪啪综合| 成人激情午夜影院| 高清不卡一区二区在线| 蜜桃精品视频在线| 亚洲午夜免费电影| 日韩理论在线观看| 中文字幕av不卡| 久久精品一区四区| 久久综合五月天婷婷伊人| 欧美一级二级三级乱码| 欧美日韩精品一区二区三区四区| 色综合天天狠狠| 91美女蜜桃在线| 日本高清不卡一区| 色综合激情五月| 91亚洲精品久久久蜜桃| 不卡高清视频专区| 国产福利精品导航| 成人黄色在线网站| 99在线热播精品免费| 色婷婷精品久久二区二区蜜臀av | www.激情成人| 欧美日韩在线一区二区| 7799精品视频| 国产欧美一区视频| 国产精品国产三级国产普通话99 | 一区二区三区在线观看视频| 韩国一区二区视频| 日韩一区二区电影网| 亚洲午夜激情网站| 91久久人澡人人添人人爽欧美| 综合网在线视频| 成人国产视频在线观看| 久久精品欧美一区二区三区麻豆 | 亚洲成av人片在线| 免费人成黄页网站在线一区二区| 国产一区二区在线观看视频| 91网站最新地址| 精品国产乱码久久久久久1区2区| 国产精品私房写真福利视频| 亚洲一区在线观看免费观看电影高清| 久草热8精品视频在线观看| 91色视频在线| 久久精品欧美一区二区三区不卡| 亚洲一区二区av电影| 成人免费视频视频在线观看免费| 在线视频一区二区三| 国产日本一区二区| 国产一区中文字幕| 欧美一区二区三区四区高清| 亚洲视频免费在线| 成人免费毛片app| 精品国产免费视频| 蜜桃91丨九色丨蝌蚪91桃色| 欧美亚洲国产怡红院影院| 国产精品免费视频一区| 国产成人av资源| 中文字幕精品一区二区精品绿巨人 | 欧美精品一区二区在线播放| 视频一区二区欧美| 91精品久久久久久久99蜜桃| 国产一区二区精品久久91| 一区二区三区在线播放| 欧美精品一区二区三区蜜桃| 欧美在线视频全部完| 国产白丝精品91爽爽久久| 日韩在线一区二区| 亚洲精品免费电影| 国产精品欧美一区二区三区| 精品捆绑美女sm三区| 成人avav在线| 亚洲国产一区二区三区| 欧美美女黄视频| 国产在线看一区| 国产精品激情偷乱一区二区∴| 色欧美片视频在线观看在线视频| 一区二区三区四区在线免费观看| 在线视频你懂得一区二区三区| 亚洲图片有声小说| 日韩欧美电影在线| 国产一区二区视频在线| 亚洲精品乱码久久久久久| 欧美精品乱码久久久久久| 国产精品中文字幕日韩精品 | 色94色欧美sute亚洲线路一ni| 亚洲制服丝袜av| 久久久99久久精品欧美| 日本道在线观看一区二区| 日本不卡的三区四区五区| 国产精品久久久久婷婷| 91.成人天堂一区| av高清久久久| 韩国av一区二区| 亚洲国产美国国产综合一区二区| 日韩免费视频线观看| 91成人看片片| av一二三不卡影片| 日本sm残虐另类| 亚洲一区免费在线观看| 中文字幕在线观看不卡| 久久久精品黄色| 香港成人在线视频| 精品日产卡一卡二卡麻豆| 免费观看久久久4p| 夜夜精品浪潮av一区二区三区 | 全国精品久久少妇| 狠狠色丁香久久婷婷综| 不卡一区二区三区四区| 欧美综合色免费| 久久精品综合网| 偷拍一区二区三区| 成人午夜在线视频| 欧美另类z0zxhd电影|