原帖 | Jack | 2026-04-11 16:45 | 👍0 | 阅读约1
ISB/DSB这些指令是干什么的,异常都是同步的吗?
DSB(Data Synchronization Barrier)
你可以先理解成:前面的内存访问,先给我真的做完,再往后走。
比如你刚写了某个外设寄存器、NVIC、SCB 这种关键寄存器,这时候如果马上接别的动作,有些场景下你会希望这个写操作已经“落地”了,那就会用 DSB。
ISB(Instruction Synchronization Barrier)
这个更多是:前面如果改了会影响后续取指/执行环境的东西,那后面的指令流要重新按新的状态来。
说白一点,就是把流水线里旧的理解清掉,后面按新配置执行。
比如改了中断使能、特权级、向量表、MPU 之类,后面常常会接一个 ISB。
相关笔记