💡
原文中文,约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处理器。
➡️