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的数值对比。批量化的话,那就是写点脚本就好了。

相关推荐
watermelonoops30 分钟前
Deepin和Windows传文件(Xftp,WinSCP)
linux·ssh·deepin·winscp·xftp
疯狂飙车的蜗牛2 小时前
从零玩转CanMV-K230(4)-小核Linux驱动开发参考
linux·运维·驱动开发
远游客07134 小时前
centos stream 8下载安装遇到的坑
linux·服务器·centos
马甲是掉不了一点的<.<4 小时前
本地电脑使用命令行上传文件至远程服务器
linux·scp·cmd·远程文件上传
jingyu飞鸟4 小时前
centos-stream9系统安装docker
linux·docker·centos
超爱吃士力架4 小时前
邀请逻辑
java·linux·后端
cominglately7 小时前
centos单机部署seata
linux·运维·centos
魏 无羡7 小时前
linux CentOS系统上卸载docker
linux·kubernetes·centos
CircleMouse7 小时前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos
木子Linux8 小时前
【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
linux·运维·服务器·centos·云计算