💡 原文中文,约15800字,阅读约需38分钟。
📝

内容提要

本文以Apple M1 Firestorm为例,详细探讨了条件分支预测器的逆向工程方法,包括分支历史记录和TAGE算法的实现。研究发现,M1最多可记录100条分支历史,揭示了分支地址和目的地址对预测的影响,并成功逆向多个处理器的分支预测器。

🎯

关键要点

  • 本文以Apple M1 Firestorm为例,探讨条件分支预测器的逆向工程方法。
  • 条件分支预测器的基本原理是预测跳转行为,输入包括分支地址和历史记录。
  • 主流处理器采用TAGE预测器,设计多个预测表以满足不同分支对历史长度的需求。
  • 逆向工程需要确定分支历史的记录方式和TAGE算法的具体实现。
  • 现代处理器普遍采用Path History Register方法记录分支历史。
  • Apple M1 Firestorm最多可记录100条分支历史信息。
  • 分支预测错误率通过性能计数器测量,支持跨平台读取。
  • 分支地址和目的地址对PHR的更新过程有重要影响。
  • 通过实验推测分支地址和目的地址如何参与PHR的计算。
  • 逆向工程TAGE表的结构和参数,包括容量、索引和标签计算。
  • 逆向工程PC输入和相连度,确保预测器能够正确区分分支。
  • 通过注入随机数测试异或关系,逆向出标签函数和索引函数。
  • 成功逆向Apple M1 Firestorm的条件分支预测器,并应用于Qualcomm Oryon处理器。
➡️

继续阅读