Board logo

标题: 嵌入式linux中断现场保护的优化策略 02 [打印本页]

作者: samwalton    时间: 2013-10-11 19:26     标题: 嵌入式linux中断现场保护的优化策略 02

三、中断现场保护的改进
  3.1 传统中断现场保护方法
  对于现在大多数嵌入式操作系统,在进入中断时首先做的第一件事就是保护中断发生前的现场,即保存返回地址、程序状态字、堆栈指针以及所有通用寄存器到中断堆栈,以防止用户中断服务子程序对中断返回后现场的破坏。以μC/OS-II微内核为例,在arm和X86两种体系结构微处理器上进入中断后保存现场的过程如图2所示。从代码中可见,两种不同的体系结构中,为保护现场,都需要执行三条访存指令,其中一条为批量访存指令(STMFD SP!,{R0-R12}和PUSHA)用以保护通用寄存器R0-R12和AX,CX,DX,BX,SP,BP,SI,DI。


图2. arm、X86上μC/OS-II中断现场保护


  根据量化公式:
  
  公式中以CPU时间来衡量微处理器体系结构的性能。其中前半部分是指令的执行时间,包括取指、分析、执行等,而后半部分表明如果指令是访存指令则在cache不命中时CPU时间还应该加上访存的时间。由于访存速度远远大于CPU的执行速度,尤其是批量访存指令,一旦遇到存储器分体冲突,将等待更长的时间。而在ARM7TDMI、arm9TDMI这些没有cache的微处理器内核中,批量访存指令的CPU时间公式就完全变成如下形式:
  
  因此,在这些处理器内核中在处理诸如任务切换和进入中断的现场保护的批量访存指令时,系统将等待,从而影




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0