22得票3回答
投机与预测的区别

在计算机体系结构中,分支预测和乱序执行有何区别? 这两个概念看起来非常相似,但它们之间存在微妙的区别。分支预测是一种技术,用于在程序执行过程中猜测下一个指令是否需要进行跳转操作,从而提高指令执行效率。而乱序执行是通过对指令进行重排列,以最大化指令级并行度,从而实现更高的性能。 请注意保留原...

32得票3回答
为什么在Haskell中与'par'一起需要使用'seq'或'pseq'?

我试图理解为什么我们需要标准示例代码中的所有部分:a `par` b `pseq` a+b 以下为什么不足以满足要求?a `par` b `par` a+b 上述表达似乎非常描述性:尝试并行评估a和b,并返回结果a+b。这样做的原因仅仅是为了效率吗:因为第二个版本会触发两次而不是一次? 以下...

12得票1回答
当Skylake CPU(处理器)预测错误分支时会发生什么?

我正在努力详细了解Skylake CPU管道各个阶段中指令在分支预测错误时发生的情况,以及正确分支目标的指令可以多快开始执行。因此,我们将这里的两个代码路径标记为红色(被预测但实际并未采取)和绿色(被采取但未被预测)。所以问题是: 1. 分支在管道中需要走多远,红色指令才开始被丢弃(它们被丢弃...

9得票1回答
为什么不直接预测两个分支?

CPU使用分支预测来加快代码运行速度,但只有在第一个分支被执行的情况下才会使用。为什么不同时执行两个分支呢?也就是说,假设两个分支都会被执行,缓存两边,然后在必要时选择正确的分支。缓存不需要失效。虽然这需要编译器提前加载两个分支(更多内存,合适的布局等),但我想合适的优化可以使两者都流线型,从...

15得票1回答
为什么在其他逻辑处理器引起内存顺序违规时需要清空流水线?

Memory Order Machine Clear性能事件在vTune文档中描述为: 当来自另一个处理器的嗅探请求与流水线中数据操作的源匹配时,发生内存排序(MO)机器清除。在这种情况下,在进行中的加载和存储被退役之前,流水线被清除。 然而,我不明白为什么会这样。在不同逻辑处理器上...

7得票1回答
MSBDS(Fallout)背后的微架构细节是什么?

CVE-2018-12126已被分配给MSBDS(微架构存储缓冲区数据抽样),这是英特尔处理器中属于新创建的MDS(微架构数据抽样)类别的漏洞。 我正在尝试了解这些漏洞背后的微架构细节。我从MSBDS开始,也称为Fallout(参见Meltdown),它允许攻击者泄露存储缓冲区的内容。 由...

16得票2回答
乱序执行vs.预测执行

我已经阅读了维基百科关于乱序执行和预测执行的页面。 然而,我不太理解它们之间的相似性和差异。对我来说,当它没有确定条件的值时,预测执行使用乱序执行。 混淆出现在我阅读Meltdown和Spectre的论文以及做进一步研究时。在Meltdown论文中指出Meltdown是基于乱序执行的,而一...

8得票1回答
一个具有执行推测的CPU分支是否可能包含访问RAM的操作码?

据我所知,当CPU在执行某个代码片段之前进行预测时,它会“备份”寄存器状态,以便如果预测结果错误(使分支无用)--寄存器状态将被安全地恢复,而不会破坏“状态”。 那么,我的问题是:一个具有推测性的CPU分支能否包含访问RAM的操作码? 我的意思是,访问RAM不是一个“原子”操作 - 一个简...

10得票1回答
ARM预取绕过解决方案

我有一个情况,其中一些地址空间非常敏感,如果你读取它,你会崩溃,因为那里没有人来响应那个地址。pop {r3,pc} bx r0 0: e8bd8008 pop {r3, pc} 4: e12fff10 bx r0 8: bd08 ...

7得票1回答
硬件锁定省略(Hardware Lock Elision)因Spectre缓解措施而永远消失了吗?

由于Spectre漏洞的缓解措施,当前所有的CPU都已禁用硬件锁消除(Hardware Lock Elision),因此使用HLE内嵌函数/指令来创建互斥锁将导致使用常规的互斥锁。 未来是否会出现类似HLE互斥锁以避免像Spectre这样的漏洞尚不确定。