找回密码
 立即注册
搜索
热搜: 活动 通知
查看: 579|回复: 5

033.x86-tso的访存次序(二)课后练习

[复制链接]

4

主题

8

回帖

118

积分

至尊会员

积分
118

至尊会员

发表于 2024-5-20 22:20:58 | 显示全部楼层 |阅读模式

第一题答案中有这么一句话:读操作一般是直接从缓存或者系统内存中读,除非存写缓冲器里有这个数据。
那么如果存写缓冲器里有这条数据,读操作一定会从存写缓冲器里读吗?
如果读操作和它前面的写操作发生了重排,是否意味着读操作是从缓存或者系统内存里读的,此时写操作还没有刷新到缓存或系统内存?

403

主题

307

回帖

3173

积分

管理员

积分
3173
发表于 2024-5-20 22:58:20 | 显示全部楼层
读是不具有破坏性的,因此,读是从哪里读无所谓。可能是从缓存,也可以是从系统内存。

因此,如果读操作和它前面的写操作发生了重排,读从哪里读无所谓,但写一定是只写入了存写缓冲器。写不会是写入缓存,写入缓存和写入系统内存没有本质区别,都会迟早被其它处理器看到并迟早会刷新到系统内存。

4

主题

8

回帖

118

积分

至尊会员

积分
118

至尊会员

 楼主| 发表于 2024-5-21 06:53:44 | 显示全部楼层
站长 发表于 2024-5-20 22:58
读是不具有破坏性的,因此,读是从哪里读无所谓。可能是从缓存,也可以是从系统内存。

因此,如果读操作和 ...

假如读操作也是从存写缓冲器里读的,就不会和它前面的写操作发生重排吧?

403

主题

307

回帖

3173

积分

管理员

积分
3173
发表于 2024-5-21 08:38:03 | 显示全部楼层
米龙·0xFFFE 发表于 2024-5-21 06:53
假如读操作也是从存写缓冲器里读的,就不会和它前面的写操作发生重排吧? ...

从存写缓冲器里读只有一种可能,以前写过同一个内存位置而且它在存写缓冲器里。只能说明是针对同一个内存位置的读写,这种是不允许重排的。

4

主题

8

回帖

118

积分

至尊会员

积分
118

至尊会员

 楼主| 发表于 2024-5-22 06:56:48 | 显示全部楼层
本帖最后由 米龙·0xFFFE 于 2024-5-22 07:32 编辑
站长 发表于 2024-5-21 08:38
从存写缓冲器里读只有一种可能,以前写过同一个内存位置而且它在存写缓冲器里。只就说明是针对同一个内存 ...

029.x86处理器的指令重排 这一节中,指令发生重排是指:处理器0的读y操作重排到写x之前,或者处理器1的读x重排到写y之前吧?



也就是说,重排是针对同一个处理器内说的?同一个处理器内,针对同一内存位置的读写操作不能重排?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

403

主题

307

回帖

3173

积分

管理员

积分
3173
发表于 2024-5-22 11:32:24 | 显示全部楼层
我说的是,如果前面的写和后面的读是针对同一个内存位置,则这两条指令不能重排。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|鼠侠网 ( 吉ICP备19001332号 )

GMT+8, 2024-11-21 21:19 , Processed in 0.241188 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表