gpt4 book ai didi

assembly - 什么是分行摊位?

转载 作者:行者123 更新时间:2023-12-05 03:14:41 25 4
gpt4 key购买 nike

我正在使用 Winmips64 分析一个简单的汇编程序,一会儿该程序有一个分支被停顿,但我不知道为什么以及它是什么类型的停顿。我一直在网上搜索,我发现了一些与“预测摊位”相关的东西,但我没看懂。

在图片中你可以看到一个分支被占用的摊位产生的时刻之一。

提前致谢:)

enter image description here

最佳答案

A branch taken stall 是一个分支被占用时的一个 stall :-)

Instruction prefetch的核心原因,其中并行处理流中的多条指令。另见 pipeline picture

在最简单的形式中,当流中的指令 n 正在执行时,下一条 (n+1) 已经在解码。因此,机器平均每个时钟执行一条指令,但实际上一条指令需要两个时钟(一个时钟解码,一个时钟执行)。这个原则可以分成更多的阶段。 (例如效果地址计算,以及与寄存器重命名相关的阶段)Netburst 架构(Pentium 4/D)因拥有非常深的管道而臭名昭著。 (如果预测错误,就会受到可怕的惩罚)

在简单的两阶段情况下,如果您分支(转到与下一条不同的指令),则目标地址上的指令尚未解码。因此必须先解码,因此这条指令的执行需要两个时钟。这个额外的时钟就是分支停顿惩罚。

更多现代 CPU 试图通过 guestimating possible branch targets 将这些惩罚最小化尽早并且已经推测性地预取了他们的指令。为了最大限度地提高分支被正确预取的机会,他们还 calculate the chance that a branch is taken

关于assembly - 什么是分行摊位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23714603/

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