前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CPU面试题Q6:内存数据依赖是什么?

CPU面试题Q6:内存数据依赖是什么?

作者头像
AsicWonder
发布2024-07-12 19:22:18
860
发布2024-07-12 19:22:18
举报
文章被收录于专栏:数字芯片实验室

对于内存访问,数据依赖项包括RAW、WAW和WAR。注意:

1.内存数据依赖性仅存在于对同一内存地址的访问;对于对不同地址的内存访问,可以安全地乱序load和store。

2.在MIPS 5 stage pipeline 中,所有内存访问都在MEM阶段执行,因此这些数据依赖性不会发生在MIPS 5stage pipeline 中。在本次讨论中,我们将重点关注CPU乱序调度中的数据依赖。

RAW数据依赖性

示例如下所示。R1中的值store在某个内存地址中,稍后R2从相同的内存地址load。

Mem[Addr] <- R1(store)

R2 < - Mem[Addr](load)

如果允许store和load乱序执行,则load可能会获得一个旧的值。

WAW数据依赖性

示例如下所示。R1中的值store在某些内存地址中,稍后R2store在同一内存地址中。

Mem[Addr] < - R1(store)

Mem[Addr] <- R2(store)

如果允许两个store都乱序执行,则在两个指令完成后,内存地址可能会存储R1而不是R2的值。

WAR数据依赖性

示例如下所示。R1中的值从某个内存地址load,稍后R2 store到相同的内存地址。

R1 <- Mem[Addr](load)

Mem[Addr] <- R2(store)

如果允许load和store 乱序执行,则load可能会获得更新后的值。

总结

为了确定是否可以执行load,我们应该检查相同内存地址load之前的所有未完成的load和store。

同样,store必须等待,直到没有未完成的相同地址的load或较早的store。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数字芯片实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档