在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 486|回复: 3

[求助] 关于 page fault 的疑问

[复制链接]
发表于 2023-11-29 18:38:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
没想明白,在指令执行的过程中,如果检测到 page fault,此时可能已经过去很多 cycle 了,应该已经没有对应的 PC 了,产生 exception 后,软件处理时,异常返回地址怎么给?还有,由于存在 store buffer,甚至有些架构里有 load store queue 这种结构,假如 store 的时候产生了 page fault,但是 store buffer 已满,即使产生 exception,异常服务程序里的 store 也会被前面的 store堵住吧?哪位大神给解释一下
发表于 2023-12-1 16:43:28 | 显示全部楼层
1. pc不会丢,会伴随指令的整个生命周期,只是在实现上,当给指令分配了rob entry,pc就以某种形式记录到rob entry中,而流水线上就变成了指令+rob编号。具体到page fault,不管是指令的还是load/store的,发起者的rob编号以某种形式伴随整个翻译过程,当检出page fault,会反查rob,提取所需的pc。
发表于 2023-12-1 17:06:55 | 显示全部楼层
2. page fault与LSU中的queue没有必然的联系。你可能对指令的retire有误解,对于store产生的page fault,要想进入异常服务程序,需要比其老的指令全部retire,换言之,从LSU的角度看,store buffer中的数据一定被deliver到下级类cache结构(比如fill buffer),即store buffer已完成其使命。假设因为某种原因,一些年轻的store指令将store buffer占满,而年老的store后至(不管这条store指令是否会产生page fault),LSU会发起flush操作,即flush掉部分年轻的指令(不管在整个流水线的什么地方,包括各种queue),以给年老的指令腾地方。
 楼主| 发表于 2023-12-4 10:43:42 | 显示全部楼层


ascetic 发表于 2023-12-1 17:06
2. page fault与LSU中的queue没有必然的联系。你可能对指令的retire有误解,对于store产生的page fault,要 ...


我这几天看资料,看多了有点乱了,可能跟非精确异常,快速 retire 啥的弄混了,非常感谢大神多次耐心讲解,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 12:49 , Processed in 0.015469 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表