了解分支预测

2023-12-10

有一些关于分支预测的疑问我无法自信地弄清楚。假设我必须使用静态分支预测器。

  1. 分支预测应该发生在管道的哪个阶段?
  2. 如何知道预测出错了?数据路径如何知道发生了错误预测?
  3. 如果它知道发生了错误预测,它如何发送信号以占用未占用的分支?
  4. 出了问题后,我必须占用之前未占用的地址。与此同时,如果发生了一些内存写入或寄存器写入怎么办?如何预防它的发生?

即使建议了一些带有数据路径的正确参考,这也会非常有帮助。提前致谢。


我猜想可能有许多不同的机制,但有一些快速的答案:

  1. 在指令解码之前,在取指阶段,分支预测肯定需要发生。否则,您将解码不正确的指令。
  2. 您通常会通过预测的分支指令提供额外的信息,例如预测的目标。该分支将被执行,如果真实目标与预测目标不匹配,则需要刷新管道。
  3. 这实际上取决于实施。如果分支被执行,您可以使用真实的目标,就像未预测的分支一样。
  4. 你当然需要一种机制来恢复,或者等待分支被解析,直到你写入结果。这会损失一些时间,但不会像未预测到的分支那样多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解分支预测 的相关文章

  • 在嵌入式设备上使用new或malloc引起的段错误[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • 以数据为中心的应用程序模型和面向对象的应用程序模型有什么区别?

    什么是以数据为中心的应用程序 与面向对象的应用程序模型有什么区别 这两个概念有些正交 以数据为中心的应用程序 http en wikipedia org wiki Database centric architecture数据库起着关键作用
  • 源和目标具有不同的 EABI 版本

    我正在尝试使用 ARM 工具链编译 so 文件 但是我不断收到这个错误 错误 源对象的 EABI 版本为 0 但目标对象的 EABI 版本为 5 我无法更改工具链中的任何内容 因为我必须使用给定的工具链 我以前从未见过这个错误 我使用了这个
  • 用于云服务“沙盒”的 SecurityManager

    All 我正在设计一个基于云的服务 该服务将提供执行客户提交的一些 插件 代码的选项 为了使这项工作正常进行 插件不能威胁系统完整性或有能力访问其他客户端的数据 这一点至关重要 理想情况下 我希望客户端能够提交一个简单的 jar 文件 包含
  • 托管扩展性框架 (MEF) 与复合 UI 应用程序块 (CAB)

    我们目前正在考虑在下一个应用程序中使用 CAB 或 MEF 我没有在 Codeplex 上看到任何有关如何处理同级控制通信的事件代理的示例 也许我错过了 MEF 中的控制间通信如何工作 此外 我们计划使用 Infragistics 它为 C
  • 呈现模型与被动视图

    我想知道上述两种模式之间的区别 当您考虑到您需要在表示模型模式中同步代码并且该代码位于表示模型本身中时 那么我认为这些模式非常相似 两者都将事件委托给演示模型 演示者 演示模型和演示者命令域模型 并且也观察域模型 当发生更改时 它们都与视图
  • 使用 i386 arch 而不是 x86_64 在 OSX 上构建 libFLAC

    我正在尝试构建 libFLAC 以在我的项目中使用 但是当涉及到链接时 GCC 会忽略该库 因为它说它不是为当前体系结构 i386 构建的 当我以 64 位编译程序时 它正确链接了库 这意味着该库是针对 x86 64 架构编译的 不幸的是
  • 有没有办法在 Xcode 4 中为 ARM 而不是 Thumb 进行编译?

    如果有很多浮点运算正在进行 Apple 建议针对 ARM 进行编译 而不是针对拇指进行编译 我的整个应用程序几乎是一个大型浮点运算 iOS 应用程序开发工作流程指南中是这样说的 iOS 设备支持两种指令集 ARM 和 Thumb Xcode
  • 您会在新的商业项目中使用 S#arp 架构吗?

    The S arp 架构 http code google com p sharp architecture 看起来真的很酷 但是您是否认为它仍然太新而无法在重要的新项目中做出承诺 我们假设该项目乍一看很适合它 It all seems非常
  • 了解 ctags 文件格式

    我使用 Exhuberant ctags 来索引我的 c 项目中的所有标签 c project 是 Cortex M7 微控制器的嵌入式软件 结果是一个标签文件 我正在尝试阅读该文件并理解所写的内容 根据我找到的 ctags 和 Exhub
  • 为什么当大小大于 50 时,该程序花费的时间会呈指数级增长?

    所以我正在为类编写一个 ARM 汇编快速排序方法 我对大部分内容都有了解 除了复杂性没有意义 我们将其与我们制作的另一种冒泡排序方法进行比较 它对于具有 1 个参数和 10 个参数的示例表现更好 然而 我什至无法比较 100 个参数测试 因
  • DS-5:什么是 FVP、RTSM、基础模型、AEM 模型、快速模型、CADI?

    DS 5 模拟器使用了很多术语 如 FVP RTSM 快速模型 基础模型 AEM 模型 CADI Arm的文档中提供的解释不是很清楚 这些术语的含义是什么 作为 DS 5 的最终用户我应该关心哪些术语 Model 软件模拟的行业术语 就 A
  • saber sd 如何在没有 SPL 的情况下直接从 uboot 启动

    sabre sd 基于 imx 6 最大内部 RAM 约为 150Kb 然而 uboot 足够大 可以容纳在这个空间中 在这个场景中事情是如何进行的 https community freescale com docs DOC 95015
  • 为什么 GCC 交叉编译不构建“crti.o”?

    在尝试为arm构建gcc 4 x x交叉编译器时 我陷入了缺失的困境crti o文件在 BUILD DIR gcc子目录 An strace在顶层Makefile表明编译后的xgcc正在调用交联器ld with crti o 作为一个论点
  • 直接在 ARM 目标上调试单声道应用程序

    我最近在 BeagleBone 嵌入式 ARM 设备上安装了 Mono 希望通过 USB 连接 Kinnect 传感器并使用 C Mono 控制它 我想知道 Mono 我正在使用 MonoDevelop 但我想这个问题也适用于 VS 是否允
  • 如何模拟ARM处理器运行环境并加载Linux内核模块?

    我尝试加载我的vmlinux into gdb并使用 ARM 内核模拟器 但我不明白为什么我会得到Undefined target command sim 这是外壳输出 arm eabi gdb vmlinux GNU gdb GDB 7
  • 如何获取结构体中任意成员的位位置

    如何获取结构体中任意成员的位位置 在示例中 gt typedef struct BitExamStruct unsigned int v1 3 unsigned int v2 4 unsigned int v3 5 unsigned int
  • 交叉编译armv5,但它创建v7二进制文件

    我设法为arm926ej s创建了一个目标文件我在 qemu 上使用 Debian Arm arm linux gnueabi gcc 4 4 static O c mcpu arm926ej s hello c o hello root
  • 从架构上来说,我应该如何用更易于管理的内容替换非常大的 switch 语句?

    EDIT 1 忘记添加嵌套属性曲线球 UPDATE 我选择了 mtazva 的答案 因为这是我的具体案例的首选解决方案 回想起来 我用一个非常具体的例子提出了一个一般性问题 我相信这最终让每个人 或者也许只是我 对问题到底是什么感到困惑 我
  • ARM NEON 矢量化失败

    我想在 ARM cortex a9 上启用 NEON 矢量化 但在编译时得到以下输出 未矢量化 不支持相关 stmt D 14140 82 D 14143 77 D 14141 81 这是我的循环 void my mul float32 t

随机推荐

  • 为什么 typeof NaN 返回“数字”?

    只是出于好奇 这似乎不太符合逻辑typeof NaN是数字 就像NaN NaN or NaN NaN顺便说一句 返回 false 这是 JavaScript 的特性之一吗 或者有什么原因吗 编辑 感谢您的回答 然而 要让人们头脑清醒并不是一
  • 将 mvc 4 降级/转换为 mvc 3

    我知道这是一个相当奇怪的问题 请不要攻击我 我具体需要将当前的 Asp Net Mvc 4 net Framework 4 5 应用程序 降级 到 Asp Net Mvc 3 net Framework 4 0 因为我们的共享托管提供商不支
  • 将通过URL获取的数据转换为post变量

    我需要读取使用 POST 操作类型提交的表单的结果 那么 我是否可以将通过 GET 变量获得的变量转换为 POST 然后我可以使用 file get contents 简单地读取内容 请帮助我使用此方法或通过某种替代方法 如果可能 获取数据
  • 我应该为 jar commons-lang.jar 使用哪个 pom 依赖项

    如果 jar 名称中没有版本 我如何知道应该使用哪个版本的 pom 依赖项 例如 jar commons lang jar 我应该使用什么版本的 pom 依赖项 以下是其在 Maven 中央存储库上的搜索结果 http search mav
  • 查找字符串中出现频率最高的单词并检查字符串是否仅包含 [a-z][A-Z] 个字符

    我用 Python 创建了一些代码来查找字符串中出现频率最高的单词 我对 Python 还很陌生 请求你的帮助 看看我是否可以更好 更有效地编写这个代码 代码返回字符串中出现频率最高的单词的一个整数 另外我想确保该字符串仅包含 a z A
  • 使用 celery 运行“独特”任务

    我使用 celery 来更新我的新闻聚合网站中的 RSS 提要 我为每个提要使用一个 task 并且一切似乎运行良好 有一个细节我不确定处理得很好 所有提要都使用 periodic task 每分钟更新一次 但是如果在启动新任务时提要仍在从
  • 溢出:隐藏在 div 标签上会影响背景颜色

    的定义overflow hidden指出 the overflowing content is completely hidden not accessible to the user from http quirksmode org cs
  • 使用 import java.* 来使用“java”包下的所有子包怎么样?

    import java 为什么我不能进行此导入 我没有导入 java 包的特定子包中的所有类 而是尝试导入 java 包下的所有子包 如何导入所有内置类 java中没有子包这种东西 java util stream不是 的子包java ut
  • STRCHR 与 STRRCHR 有何区别? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我想知道这两种不同用途之间
  • 通过RemoteView设置GradientDrawable

    这就是我想要做的 我有一个小部件 我想根据用户选择的颜色设置其背景 它必须是一个渐变 背景是通过设置 LinearLayout 的背景来设置的 为了进行测试 我对虚拟背景进行了如下操作 remoteViews setInt R id lay
  • WPF DataBound ListBox 添加动画但不滚动

    我有一个绑定到 ObservableCollection 的 WPF ListBox 当我向其中添加项目时 我想要一些动画来 吸引 新来者 的注意力 有许多使用 DataTemplate 触发器和 FrameworkElment Loade
  • 如何为 Telerik RadGrid 中的列标题指定颜色

    我在 asp net 中创建了一个 telerik RadGrid 我的要求是为列标题提供我自己的颜色 我们怎样才能实现这一点 下面是我正在使用的代码结构
  • Seahorse::Client::NetworkingError 使用 Rails 上传 Amazon S3 文件

    在我的 Rails 4 应用程序中 我尝试使用 aws sdk 下载常规 png 文件 然后将其上传到我的 s3 存储桶 使用gem aws sdk gt 2 在开发环境中 代码运行完全正常 但如果我尝试rails s e producti
  • IBM MQ 客户端在 10 分钟后断开连接:IBM.XMS.IllegalStateException

    我正在使用 IBM 的这个示例 我刚刚复制并粘贴了代码 https github com ibm messaging mq dev patterns blob master dotnet dotNetGet cs 我正在连接到 MQ 服务器
  • 如何初始化参数化构造函数的对象数组

    我需要初始化参数化构造函数的对象数组 我怎样才能以最好的方式做到这一点 include
  • 当您使用 Seq(1,2,3) 创建 Seq 对象时会发生什么?

    当您评估表达式时到底会发生什么 Seq 1 2 3 我是 Scala 新手 现在对各种集合类型有点困惑 Seq是一种特质 对吗 所以当你这样称呼它时 Seq 1 2 3 它一定是某种伴生对象吗 或不 它是某种扩展的类吗Seq 最重要的是 返
  • 在 Xamarin 应用程序中使用 Identity Server

    我正在尝试让 Xamarin 应用程序与身份服务器一起使用 我已按照以下步骤操作 1 下载这个 https github com IdentityModel IdentityModel OidcClient Samples tree mas
  • 为什么这段显示图像的代码在构建到 jar 中时会出现“错误”?

    我想通过在 JLabel 上绘制 BufferedImage 来显示图像 x y Offset是在JLabel的中间绘制一个较小的图像 如果我在 IDE 中运行代码 它会正常工作并在我的 JFrame 上显示图像 如果我现在将类构建到 ja
  • 使用 Unicode emoji 动态创建 NSString

    我有字符串 Hi there U0001F603 它正确显示了表情符号 例如Hi there 如果我把它放在UILabel 但我想像这样动态创建它 NSString stringWithFormat Hi there U0001F60 ld
  • 了解分支预测

    有一些关于分支预测的疑问我无法自信地弄清楚 假设我必须使用静态分支预测器 分支预测应该发生在管道的哪个阶段 如何知道预测出错了 数据路径如何知道发生了错误预测 如果它知道发生了错误预测 它如何发送信号以占用未占用的分支 出了问题后 我必须占