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

相关推荐
女神下凡14 分钟前
芯参谋(95):嵌入式文件系统_开发指南
linux·服务器·arm开发·驱动开发·设计规范
且从容.4 小时前
Ubuntu安装flume
linux·ubuntu·flume
承渊政道4 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
且从容.7 小时前
ubuntu安装flink
linux·ubuntu·flink
爱和冰阔落9 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
程序员沉梦听雨9 小时前
WSL2的安装与使用
linux·wsl
微小的鱼9 小时前
Linux的渲染与显示系统链路
android·java·linux
lisanmengmeng9 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮10 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
Linux-lucky1 天前
45-Linux学习之旅之防火墙与WEB加固
linux·前端·网络·学习·ubuntu