cpu的fetch/prefetch

一句话总结

  • Fetch = 取当前要执行的指令(必须取,不取就停)
  • Prefetch = 提前取未来可能执行的指令(预取,不影响当前执行,只为提速)

它们都是 ICU(Instruction Cache Unit / Instruction Fetch Unit) 核心工作。


1. Fetch(指令取指)------必须执行的操作

作用

给 CPU 核心拿到当前 PC(程序计数器)指向的指令

完整流程(极简版)

  1. PC 给出当前要执行的指令地址
  2. ICU 去 ICache 查是否命中
    • 命中:直接给指令
    • 不命中:发请求去 L2/L3 / 内存取一整行 cacheline
  3. 取回来的指令送给 Decode(译码) 执行

关键特点

  • 同步、阻塞:Fetch 不完成,后面流水线就停
  • 按 PC 顺序取
  • 和执行强相关

2. Prefetch(指令预取)------优化性能的操作

作用

提前把未来可能执行的指令取到 ICache,等 CPU 真正需要时直接命中,不 stall。

预取什么?

  • 顺序预取:PC 后面连续的指令
  • 分支预取:if/else/loop 可能跳去的目标地址
  • 历史预取:根据过去行为预测

关键特点

  • 异步、不阻塞
  • 不影响当前执行
  • 目标只有一个:减少 ICache Miss
  • 预取回来的行存在 ICache 里,打上 tag + valid

3. 最关键区别(一定要记住)

操作 目的 是否必须 是否阻塞 CPU 触发条件
Fetch 取当前指令 必须 阻塞 PC 当前地址
Prefetch 提前备未来指令 不必须 不阻塞 预测 / 顺序 / 分支

4. 最简单的比喻(秒懂)

  • Fetch = 现在就要吃饭,必须马上端上来
  • Prefetch = 提前把下一碗饭做好放旁边,等你要吃直接拿

Fetch 是 CPU 根据当前 PC 指针,同步获取当前执行指令 的过程,是流水线前端最基础、必须的操作,若 ICache miss 会阻塞流水线。Prefetch 是 ICU 根据顺序执行、分支预测或历史行为,异步预取未来可能执行的指令到 ICache,不阻塞当前执行,目的是降低 ICache miss 率,提升 CPU 吞吐量。

相关推荐
谷公子的藏经阁2 天前
聊点老古董: Arm Cortex-M v6/v7架构及其CPU
arm·cpu·armv7·cortex-m·armv6
’长谷深风‘3 天前
嵌入式 ARM 开发入门解析
汇编·arm开发·cpu·cortex
MaXiaoTiao11055 天前
Triton-CPU 部署实录(Ubuntu + Conda + 自编译 LLVM)
cpu·编译器
程序员一点5 天前
第22章:openEuler 与云计算集成
云计算·cpu
mzhan0176 天前
Linux:intel:Cache Allocation tech
linux·cpu
放逐者-保持本心,方可放逐11 天前
地图 热力图核心封装
javascript·cpu·gpu·热力图·cesium·核心渲染判断·渲染管线优化
HyperAI超神经12 天前
AI驱动量子精修,卡内基梅隆大学等提出AQuaRef,首次用量子力学约束精修蛋白质全原子模型
人工智能·深度学习·机器学习·架构·机器人·cpu·量子计算
HyperAI超神经12 天前
基于2.5万临床数据,斯坦福大学发布首个原生3D腹部CT视觉语言模型,Merlin在752类任务中全面领先
人工智能·深度学习·神经网络·机器学习·3d·语言模型·cpu
HyperAI超神经16 天前
物理信息机器学习新突破!新型GNN架构可对复杂多体动力系统进行准确预测,赋能机器人/航空航天/材料科学
人工智能·深度学习·机器学习·架构·机器人·cpu·物理
认真的柯南17 天前
关于在 Kubernetes 环境中停止使用 CPU 限制的分析与建议
容器·kubernetes·cpu