1理解thumb-2
首先,让我们从一个看起来并不明显的起点开始讨论节能技术—指令集。所有cortex-m cpu都使用thumb-2指令集,它融合了32位arm指令集和16位thumb指令集,并且为原始性能和整体代码大小提供了灵活的解决方案。在cortex-m内核上一个典型的thumb-2应用程序与完全采用arm指令完成的相同功能应用程序相比,代码大小减小到25%之内,而执行效率达到90%(当针对运行时间进行优化后)。
thumb-2中包含了许多功能强大的指令,能够有效减少基础运算所需的时钟周期数。减少时钟周期数意味着现在你能够以更少的cpu功耗完成手头的工作。例如,假设要完成一个16位乘法运算(如图1所示)。在一个8位8051内核的mcu上执行这个运算将需要48个时钟周期,并占用48字节的flash存储空间。使用一个16位内核的mcu(例如c166)执行相同的运算需要8个时钟周期,并占用8字节的flash存储空间。相比之下,在使用thumb-2指令集的cortex-m3内核中完成相同运算仅仅需要1个时钟周期,并占用2字节的flash存储空间。cortex-m3内核能够通过使用更少时钟周期完成相同任务,节省了能耗;同时也能够通过占用极少的flash存储空间,减少flash存储器访问次数,实现最终能耗节省的目标(除此之外,更小的应用代码也使得系统可以选择更小的flash存储器,进一步降低整体系统功耗)。
图1 时钟周期数对比
图2 arm7和cortex-m3的中断响应
2中断控制器节能技术
cortex-m架构中的中断控制器(nested vectored interrupt controller or nvic)在降低cpu功耗方面也起着关键作用。以前的arm7-tdmi需要“多达”42个时钟周期,cortex-m3 nvic从中断请求发生到执行中断处理代码仅需要12个时钟周期的转换时间,这显然提高了cpu执行效率,降低了cpu时间浪费。除了更快进入中断处理程序之外,nvic也使得中断之间切换更加高效。
在arm7-tdmi内核实现中,需要先花费数个时钟周期从中断处理程序返回主程序,然后再进入到下一个中断处理程序中,中断服务程序之间的“入栈和出栈(push-and-pop)”操作就要消耗多达42个时钟周期。而cortex-m nvic采用更有效的方法实现相同任务,被称为“末尾连锁(tail-chaining)”。这种方法使用仅需6个时钟周期处理就能得到允许,进入下一个中断服务程序的所需信息。采用末尾连锁,不需要进行完整的入栈和出栈循环,这使得管理中断过程所需的时钟周期数减少65%(如图2所示)。
3存储器节能注意事项
存储器接口和存储器加速器能够明显影响cpu功耗。代码中的分支和跳转可能会对为cpu提供指令的流水线产生刷新影响,在这种情况下cpu需要延迟几个时钟周期以等待流水线重新完成填充。在cortex-m3或cortex-m4内核中,cpu配备了一条3级流水线。刷新整条流水线将导致cpu延迟3个时钟周期,如果有flash存储器等待状态发生,时间会更长,以便完成重新填充过程。这些延迟完全浪费功耗,没有任何功用。为了帮助减少延迟,cortex-m3和m4内核包括一个被称为推测取指(speculative fetch)的功能,即它在流水线中对分支进行取指的同时也取指可能的分支目标。如果可能的分支目标命中,那么推测取指能够把延迟降低到1个时钟周期。虽然这个特性是有用的,但显然不够,许多cortex-m产品供应商都增加了自己的ip以增强这个能力。
OLED蒸镀机有多难造,如今我国已经成功实现量产
智慧工厂自动化智能制造对5G物联网技术应用的功能与优势
新能源 | 新威如何打赢化成分容“江湖混战”?
ESD的保护机理和主要测试模式有哪些?
150度电,1044公里,李斌实测蔚来电池!
详解CPU功耗的方法与技巧
双向触发三极管,双向触发三极管是什么意思
AI+AR湘湖七彩绿道互动新体验
小米8 DC调光开发版计划下周、最早这周推送
新品发布 | 瑞萨电子推出超35款全新MCU产品,拓展电机控制嵌入式处理产品阵容
T3S系列mesh自组网电台在无人机的应用
在合适的硬件平台上建立测量系统
高清播放处理器i.MX535
芯灵思SinlinxA33开发板安卓开发-java语言基础(一)
基于TOPSwitch的反激变流器反馈电路的优化设计
夏普断供三星LCD面板的内幕是什么?
北航大学生研发“红海行动”式无人机,搭载了高清晰度的双摄像头和画面无线传输设备
精密加工数控机床如何实现远程监控和远程上下载程序
亲兄弟还明算账? OPPO和vivo的家族史
相位噪声到抖动的转换(下)