当前实施的高速缓存模拟器模块可以支持任意的高速缓存/内存配置。
同时,它还可计算:
- 高速缓存各方向的流量(读/写操作);
- 高速缓存行的命中/未命中;
- 有关分离或不一致操作的信息。
为了维护多处理器设备的复杂高速缓存系统,我们引入了总线对象来模拟:
- 高速缓存间的链接;
- 多核架构中内核间的链接;
- 一枚处理器中不同单元间的链接;
- 总线对象的各方向流量。
高速缓存模拟器模块是线程安全的,在模拟多核架构时可保持高速缓存一致性。
图 3 中显示了高速缓存系统的一个举例。
如欲了解编程举例,请参见
代码样本。
分支预测模块能够模拟不同的分支预测模式和算法。
迄今为止实施了两种算法:
- 静态 BTFNT ― 后向分支,被预测为 Taken;前向分支,被预测为 Not Taken;
- 动态 SPD ― 简单模式检测。
以前的算法广泛应用于现代处理器中,以减少误预测分支的数量。静态预测算法多数情况下较为准确,下文将会详细介绍。
以后的方法涉及到记录 taken 和 not taken 分支的历史信息,并用于预测下一个分支。
分支预测模块为调用程序提供了以下信息:
- 预测和误预测分支的数量;
- 条件和无条件分支的数量;
- 前向和后向分支的数量;
- 对各模块和函数的详细分支预测统计数据。
请参见
代码样本了解有关如何使用的详细信息。
我们在此列出了架构模拟器和推荐的初步模拟技术的优势,以便于读者选择各自所需。
架构模拟器带来的优势:
缺点:
- 往往需要将目标应用移植到新架构。
- 有时模拟器会对应用施加限制,如限制可用内存容量、I/O 操作等。
- 开发一套完整的实用程序和模拟器(至少一个编译器和一个模拟器)通常要花费大量时间和资源。
代码处理器技术优势:
- 使用现有的编译器或汇编程序用于当前架构。
- 快速模拟程序。
- 以应用为导向。
- 所分析的应用没有额外的限制(如 I/O、内存等)。
- 可扩展设计 ― 新指令或指令集、新寄存器和寄存器类似模拟模块可以单独添加,还可以添加用于模拟功耗、总线利用率、或任何其它系统特征的模块。