gpt4 book ai didi

linux-kernel - 处理器流水线状态保存

转载 作者:行者123 更新时间:2023-12-02 00:57:43 25 4
gpt4 key购买 nike

在线程休眠/上下文切换/中断等期间恢复后,是否存在处理器流水线状态(已解码或预取指令)被保存并随后重新加载的情况? (可能作为优化)。

最佳答案

这对于我所知道的任何 CPU 来说都是不可能的。没有执行此操作的接口(interface),也没有 CPU 自行执行此操作的条件。将大量内部 CPU 状态转储到 RAM 将花费比节省更多的周期。让操作系统跟踪为此所需的可变大小的 RAM block 只会使开销变得更糟。

顺便说一句,如果有什么值得保存的,那就是已经执行但还不能退出的指令的结果,因为缓存中没有加载。 (主流 ISA 的所有常见乱序执行设计都使用有序退役来支持精确的异常。已经提出了带有检查点/异常和​​错误预测回滚的乱序退役。搜索千指令处理器,IIRC。 )


(有缺陷的想法):积极的无序设计可以通过在外部中断到达时延迟写入中断返回地址来避免在上下文切换上浪费太多工作。也就是说,他们可以通过允许管道中已有的一些指令继续执行来假装中断进来的时间晚于实际发生的时间。如果在中断处理程序返回之前不需要用户空间指令指针,则 CPU 可以清除管道。

Hrm,这有一个主要的困难,即在进入中断处理程序时注册值也取决于架构状态,所以这可能行不通。

这个定义。不能用于用户空间生成的中断,因为它修复了返回地址。

对于在使用 monitor/mwait 或其他东西等待自旋锁时让自己进入休眠状态的线程来说,这不是问题。 mwait 大概要等到retire 才会生效,而且要等到之前的所有工作都做完才会retire。我认为,这会破坏 CPU 积极主动地推测性地执行过去的 mwait 的预期目的。或者 mwait 甚至不刷新管道,只是节省电量。

关于linux-kernel - 处理器流水线状态保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32525847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com