gpt4 book ai didi

intel - 复杂代码和分支预测器

转载 作者:行者123 更新时间:2023-12-04 23:50:17 27 4
gpt4 key购买 nike

分支预测器逻辑有多“粘”?如果代码正在从指令缓存中删除,统计数据会保留吗?

换句话说,如果代码很复杂或者没有批量处理,分支预测是否仍然有用?

让我们假设比 2011 年更新的商用英特尔服务器硬件。

最佳答案

分支预测器的确切工作方式因处理器而异。但是几乎所有非平凡的分支预测器都需要程序中分支的历史才能起作用。

这段历史记录在分支历史缓冲区 .

这些有多种口味。最常研究的两个是:

  • 本地历史 - 跟踪每个分支的历史。
  • 全局历史 - 跟踪所有分支的合并历史。

  • 现代处理器将具有用于不同目的的多个缓冲区。在所有情况下,缓冲区的大小都是有限的。因此,当他们用完房间时,需要驱逐某些东西。

    Intel 和 AMD 都没有提供有关其分支预测器的详细信息。但据信,两家公司当前的处理器都可以跟踪数千个分支及其历史记录。

    回到正题,分支预测器使用的数据只要保留在历史缓冲区中就会“粘住”。因此,如果代码很小且行为良好,不会溢出缓冲区,则预测器的性能是最好的。
  • 如果大部分计算花费在少量代码上,本地历史缓冲区将能够跟踪所有经常被命中的分支。
  • 如果计算到处都是,分支预测器可能需要跟踪的分支太多,因此其性能会下降。

  • 请注意,指令和 uop 缓存虽然独立于分支预测器,但将表现出相同的效果。因此,在尝试构建测试用例和基准以研究其行为时,可能很难挑出分支预测器。

    因此,这是性能方面的另一种情况,其中具有局部性具有优势。

    关于intel - 复杂代码和分支预测器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24151338/

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