Flash"零等待"(Zero-Wait, ZW)指MCU内核以零等待周期从Flash存储器直接取指令的运行模式14。与之相对的是"非零等待"(Non-Zero-Wait, NZW)模式,此时取指需插入等待周期。
二、技术原理速度匹配问题
Flash存储器的读取速度通常低于CPU运行频率,导致时钟不同步。零等待通过硬件优化(如ART加速器)消除速度差异,使CPU无需插入等待周期即可连续取指。区域划分特性
ZW区位于Flash前部(如AT32F403AVGT7的0x0800 0000-0x0803 FFFF,256KB)
NZW区位于Flash后部,访问需插入1-2个等待周期
硬件加速技术
如STM32的ART加速器通过预取指令缓存实现零等待,GD32则通过gFlash专利技术优化访问时序。功耗管理机制
Flash可通过寄存器配置切换功耗模式,高功耗模式支持零等待,低功耗模式需等待稳定时间。
取指延迟 | 0周期 | 1-2周期 |
执行效率 | 100% CPU利用率 | 降低约30% |
典型应用 | 实时性要求高的代码 | 非关键代码/数据存储 |
代码布局优化
将时间敏感代码(如中断处理、DSP算法)编译到ZW区,普通功能代码可放置于NZW区。型号差异
不同MCU的ZW区大小不同(如STM32F410全Flash支持零等待,而AT32仅前256KB支持)。功耗权衡
零等待通常需要更高功耗,低功耗场景需合理分配代码区域。