uiCA模拟器和bHive benchmark的使用

概念

uiCA 基本块吞吐量预测器

github地址:GitHub - andreas-abel/uiCA: uops.info Code Analyzer

uiCA是一个模拟器,可以预测基本块在最新的英特尔微体系结构上的吞吐量。除此之外,它还提供了代码执行的洞察。

uiCA基于来自uops.info的数据,结合了详细的流水线模型。与相关工具类似,它假设所有内存访问都会导致缓存命中。

关于uiCA的流水线模型的详细信息,以及与类似工具的比较,可以在论文《uiCA: Accurate Throughput Prediction of Basic Blocks on Recent Intel Microarchitectures》中找到。

bHive benchmark

github 地址:GitHub - ithemal/bhive

BHive Benchmark 是一个基准测试套件和测量框架,旨在验证 x86-64 平台上的基本块性能模型。该基准测试套件通过执行一系列基本块级别的测试来评估处理器的性能和行为。这些基本块通常是指程序中相对较小且不包含分支跳转的代码块,对于评估处理器的基本执行能力非常有用。

BHive Benchmark 旨在提供一个统一的平台,使得研究人员和开发人员可以使用相同的测试套件来评估不同处理器的性能,并验证基本块性能模型的准确性。通过使用 BHive Benchmark,用户可以更好地了解处理器在执行基本块时的行为,从而更好地优化和评估代码的性能。

如何使用uiCA模拟器运行bHive benchmark

部署

uiCA按照 readme部署就行,bHive同样

这里仅仅展示一个例子

bHive拿到一个basic block的数据

bhive_path/benchmark/disasm 工具用法:

bash 复制代码
./bhive_path/benchmark/disasm  <basic block十六进制编码> 

就会输出basic block十六进制编码 ,对应的汇编代码

比如:

bash 复制代码
./disasm 488b442450488d78e8

同时,该 十六进制编码对应的吞吐量数据可以在这个目录下找到:

bhive_path/benchmark/throughput

三个文件分别对应haswell架构、ivy bridge、 skylake架构对应的数据。

打开skylake架构的数据(截的windows系统的图) 可以查到该basic block对应的吞吐数据,为0.74秒

通过这样,我们就知道了,特定basic block的信息:

汇编代码为

.text

movq 80(%rsp), %rax

leaq -24(%rax), %rdi

十六进制编码为

488b442450488d78e8

吞吐量为

0.74秒

uiCA预测该basic block的数据

bash 复制代码
先进入uiCA根目录
bash 复制代码
vim tests.asm
bash 复制代码
将得到的汇编代码粘贴进去
bash 复制代码
        .text
        movq    80(%rsp), %rax
        leaq    -24(%rax), %rdi
bash 复制代码
vim 保存退出
bash 复制代码
as test2.asm -o test2.o
bash 复制代码
 ./uiCA.py test2.o

uica给的预测结果是0.56s,

然后同时,bHive给的数值是0.74s

有点差异也正常,同时我上述操作也有一些细节没有指定好

这样,就完成了一次uiCA模拟和bHive benchmark的数值对比。批量化的话,那就是写点脚本就好了。

相关推荐
野犬寒鸦10 分钟前
Linux常用命令详解(下):打包压缩、文本编辑与查找命令
linux·运维·服务器·数据库·后端·github
进取星辰1 小时前
24、TypeScript:预言家之书——React 19 类型系统
linux·运维·ubuntu
月上柳青1 小时前
linux-驱动开发之设备树详解(RK平台为例)
linux·驱动开发·dsp开发
阳区欠2 小时前
【Linux】线程的同步与互斥
linux·服务器·c++·线程同步·线程互斥·生产者/消费者模型
WG_172 小时前
Linux:43线程封装与互斥lesson31
linux·运维·服务器
showmethetime2 小时前
centos 中查看 内存及磁盘使用率
linux·运维·centos
Eloudy2 小时前
MacOS 上构建 gem5
linux·运维·macos
suger-J2 小时前
01-centos离线升级至almalinux
linux·centos
小武~2 小时前
ARMV8 RK3399 u-boot TPL启动流程分析 --crt0.S
linux·u-boot·rockchip·arm-v8·tpl
慢一点会很快2 小时前
【Tools】VScode远程调试linux服务器(打断点可视化界面方式)
linux·服务器·vscode