speculative-execution相关内容

由于 Spectre Mitigation,Hardware Lock Elision 是否已经一去不复返了?

由于 Spectre 缓解而对所有当前 CPU 禁用硬件锁定消除是否正确,并且任何尝试使用 HLE 内在函数/指令进行互斥都会导致通常的互斥? 未来是否有可能不会有类似 HLE 互斥的东西来避免像 Spectre 这样的漏洞? 解决方案 因此,禁用 TSX 可能不是为了缓解 Spectre,而是作为另一个漏洞缓解的一部分,TSX 异步中止 (TAA). 这是英特尔网站上的相关文 ..
发布时间:2022-01-06 13:07:04 其他开发

当 Skylake CPU 错误预测分支时究竟会发生什么?

我试图详细了解当分支预测错误时,skylake CPU 管道各个阶段的指令会发生什么情况,以及来自正确分支目标的指令开始执行的速度. 所以让我们将这里的两个代码路径标记为红色(预测的,但未实际采用的)和绿色(采用的,但未预测的).所以问题是:1. 在红色指令开始被丢弃之前,分支必须通过流水线多远(以及它们在流水线的哪个阶段被丢弃)?2. 绿色指令多久可以开始执行(就分支到达的流水线阶段而言) ..

为什么要刷新由其他逻辑处理器引起的内存顺序违规的管道?

Memory Order Machine Clear 性能事件是vTune 文档描述为: 内存排序 (MO) 机器清除发生在来自另一个处理器的监听请求与管道中数据操作的源匹配时.在这种情况下,管道在进行中的加载和存储退出之前被清除. 但是我不明白为什么会这样.不同逻辑处理器上的加载和存储之间没有同步顺序. 处理器可以假装在所有当前正在进行的数据操作都提交之后发生了窥探. 该问题 ..

ARM 预取解决方法

我遇到的情况是,某些地址空间很敏感,因为您阅读它会崩溃,因为那里没有人响应该地址. pop {r3,pc}比 r00: e8bd8008 pop {r3, pc}4:e12fff10 bx r08: bd08 pop {r3, pc}a: 4700 bx r0 bx 不是由编译器作为指令创建的,而是一个 32 位常量的结果,该常量不适合作为单个指令中的立即数,因此设置了 pc 相对负载.这基本 ..
发布时间:2021-11-17 22:25:46 其他开发

嵌套分支和投机执行会怎样?

好的,所以我知道,如果特定条件分支的条件需要花费时间来计算(例如,内存访问),则CPU会假定条件结果,并沿该路径推测执行.但是,如果沿着该路径弹出另一个慢速的条件分支会发生什么(当然,假设第一个条件尚未解决,并且CPU无法仅仅提交更改)?CPU只是在推测内进行推测吗?如果最后一个条件的预测有误,但第一个条件不是预测的,会发生什么?会一直回滚吗? 我说的是这样的东西: if(value_i ..

ARM预取解决方法

我遇到的情况是某些地址空间很敏感,因为没有人响应该地址,因此您将其读取会崩溃. pop {r3,pc}bx r00:e8bd8008 pop {r3,pc}4:e12fff10 bx r08:bd08 pop {r3,pc}一个:4700 bx r0 bx不是由编译器作为指令创建的,而是32位常数的结果,该常数不适合作为单个指令的立即数,因此可以设置pc的相对负载.这基本上是文字池.而且碰 ..
发布时间:2021-04-09 19:26:21 其他开发

投机与预测之间的差异

在计算机体系结构中, (分支)预测和推测之间有什么区别? 这些看起来很相似,但是我认为它们之间有微妙的区别. 解决方案 处理器执行分支预测,以尝试确定在有条件跳转之后执行将在哪里继续,以便它可以从中读取下一条指令.记忆. 推测性执行又前进了一步,并确定了执行下一条指令的结果.如果分支预测正确,则使用结果,否则将其丢弃. 请注意,即使代码中没有实际的条件分支,也可以应 ..
发布时间:2020-07-31 06:09:57 其他开发

为什么要刷新其他逻辑处理器引起的内存顺序违规的管道?

内存订单计算机清除性能事件为vTune文档将其描述为: 当来自另一个处理器的侦听请求与管道中的数据操作源相匹配时,将发生内存排序(MO)机器清除.在这种情况下,在撤消正在进行的装载和存储之前,应清理管道. 但是我不明白为什么会这样.在不同逻辑处理器上的加载和存储之间没有同步顺序. 处理器可以在所有当前运行中的数据操作被提交之后,假装监听发生. 此处 每当CPU内核检测到“ ..

硬件锁消除技术是否已因幽灵缓解而一去不复返了?

由于减轻了Spectre的影响,当前所有的CPU都禁用了“硬件锁定清除"功能,并且使用HLE内部函数/指令进行互斥的任何尝试都会导致通常的互斥吗? 将来是否有可能没有像HLE互斥那样的东西来避免像Spectre这样的漏洞? 解决方案 因此,可能禁用TSX并不是为了减轻Spectre,而是作为另一种缓解漏洞的一部分,即TSX异步中止(TAA). 这是英特尔网站上的相关文章: ..
发布时间:2020-07-31 06:09:50 其他开发

乱序执行与推测性执行

我已经阅读了有关乱序执行的维基百科页面,并且投机执行. 尽管有相同点和不同点,但我没弄清楚.在我看来,推测性执行在未确定条件值​​的情况下会使用乱序执行. 当我阅读Meltdown和Spectre的论文并进行其他研究时,感到困惑. Meltdown文件中指出,Meltdown基于无序执行,而其他一些资源包括有关专门执行的Wiki页面,其中指出Meltdown基于推测执行. 我想对 ..
发布时间:2020-07-31 06:09:46 其他开发

为什么不仅仅预测两个分支?

CPU使用分支预测来加快代码的速度,但前提是实际使用了第一个分支。 为什么不简单地同时使用两个分支?就是说,假设两个分支都将被命中,缓存双方,并在必要时采用适当的分支。缓存不需要无效。虽然这要求编译器在动手之前加载两个分支(更多的内存,适当的布局等),但我认为适当的优化可以简化这两个分支,以便可以从单个预测变量获得接近最佳的结果。也就是说,一个人需要更多的内存来加载两个分支(这对N个分支而言 ..

当Skylake CPU错误预测分支时会发生什么?

我试图详细了解当分支预测错误时在Skylake CPU管道的各个阶段中的指令会发生什么,以及从正确的分支目标开始执行指令的速度如何。 因此,我们在这里将两个代码路径分别标记为红色(预测但未实际采用)和绿色(预测但未实际采用)。这样的问题是: 1.在红色指令开始被丢弃之前,分支必须经过管道多远(以及在管道的哪个阶段被丢弃)? 2.绿色指令可以在多长时间内开始执行(根据分支所达到的流水线阶段 ..

为什么我们在Haskell中需要'seq'或'pseq'和'par'?

a`par` b`我想知道为什么我们需要标准示例代码的所有部分: pseq` a + b 为什么以下内容不够用? a`par` b`par` a + b 上面的表达式看起来很具描述性:试着同时评估 a 和 b 并返回结果 a + b 。仅仅是效率的原因:第二个版本会两次而不是一次? 下面更简洁的版本如何? a`par` a + b ..
发布时间:2018-06-04 15:54:15 其他开发

Hadoop Reducer:我如何使用推测性执行输出到多个目录?

我有一个reducer需要将结果输出到不同的目录,以便我们稍后可以将输出用作Hive的输入作为分区表。 (Hive根据文件夹名称创建分区)。为了写出这些位置,我们目前不使用任何Hadoop框架来实现这一点,我们只是写出来分离“Hadoop的背后”的位置,可以这么说。换句话说,我们没有使用hadoop的API来输出这些文件。 我们遇到了 mapred.reduce.tasks.speculat ..
发布时间:2018-05-31 18:59:40 分布式计算/Hadoop

Haskell推测并行执行

我正在考虑对于我想解决的一个问题利用并行性。问题大致如下:给定输入(点序列)找到最佳输出(由这些点组成的最大三角形,最长线等)。在点序列中存在3种不同的“形状”,但是我只对具有“最好分数”(通常是某种形式的“长度”乘积系数)的形状感兴趣。让我们调用形状S1,S2,S3。 我有两个不同的算法用于求解S1 - 'S1a'在O(n )。 第一个问题:是否有一些简单的方法可以并行运行S1a和S ..