Arm架构中LSU、DMA与指令/数据预取职责的技术疑问
Arm架构中预取与DMA的职责区分
先明确几个关键单元的核心分工:
- Load/Store单元(LSU):处理程序中显式的加载/存储指令,也就是CPU主动发起的内存访问请求。
- DMA单元:属于CPU核心外部的独立外设(比如你提到的Cortex-M85示例设计里的外部DMA),负责在不占用CPU核心的前提下,完成外设与内存、内存间的批量数据传输,和核心内部的性能优化操作完全无关。
针对你的核心疑问,直接给出结论:分支预测器、指令/数据缓存的预取工作,全部由CPU核心内部的专用单元负责,和DMA没有任何关系:
- 指令预取:由核心内的指令预取单元负责,它会结合分支预测器的结果,提前抓取后续大概率会执行的指令,送入流水线的译码阶段,避免流水线停顿。
- 数据预取:一般由LSU内置的数据预取逻辑或者独立的数据预取单元完成,它会分析程序的内存访问规律(比如连续地址的顺序访问),提前把即将用到的数据加载到L1数据缓存中,减少CPU等待内存读取的时间。
- 分支预测器:本身就是CPU核心内的独立模块,专门预测分支指令的跳转方向,为指令预取单元提供决策依据。
简单来说,预取是CPU核心为了提升流水线效率做的内部自动优化操作,属于核心流水线的一部分;而DMA是外部的“数据搬运工”,只负责核心之外的批量数据传输,两者的职责边界非常清晰。
内容的提问来源于stack exchange,提问作者ALPEREN K
相关产品推荐
相关产品推荐

