Gem5是研究体系结构的硬件仿真工具,官方也提供了较详细的入门文档gem5 documentation。

在研究超标量乱序CPU时,Gem5也提供了可视化样例gem5: Visualization

./build/RISCV/gem5.opt --debug-flags=O3PipeView --debug-start=78000 --debug-file=trace.out configs/example/se.py --cpu-type=O3CPU --caches --cmd=tests/tests-progs/hello/bin/riscv/linux/hello -m 230000

这个脚本会产生trace.out文件,记录tick(ps) 78000到230000时段的流水线信息。再通过python脚本生成pipeline.out文件,就可以通过less查看了

./util/o3-pipeview.py -c 500 -o pipeview.out --color m5out/trace.out
less -r pipeview.out

但这个方式存在两个问题:第一是可视化界面实在不友好,第二是很难找到main函数的核心代码。

Konata

Konata是开源的Gem5 O3 pipeline可视化工具,只需要获得trace.out文件,再将其导入软件,就可以看大美观的流水线。

但要找到main里的核心代码也不容易,main之前需要很多的铺垫:
_start函数运行很久才能到主函数

当然可以通过设置记录的起始时间解决,但还是不太方便。

编译链接

无意中刷到JYY老师的操作系统:系统调用可以通过ld -e 指定编译器从哪个函数开始执行。

比如一段简单的代码:

// hello.c
int main(){int sum = 0;for(int i = 0;i<5;i++){sum+= i*i;}while(1);//return 0;
}

编译时可以先生成可重定向文件,在ld -e指定从main函数开始执行。

# 生成可重定向文件
riscv64-linux-gnu-gcc -c hello.c
# 指定从main函数开始执行
riscv64-linux-gnu-ld -e main hello.o -o hello.elf
# 生成可读的汇编文件
riscv64-linux-gnu-objdum -S -D hello.elf > hello.dump

查看汇编代码,可以看到只有短短的几行,没有_start函数。

再运行gem5获得trace.out文件,可以看到确实从第一条指令addi sp,sp,-32开始执行,并呈现完整的5个循环。

最后需要注意的是,这里没有return 0,目的是为了运行gem5不产生错误信息。如果将while(1)替换为return 0,那么运行会报错Segemtion fault (core dumped),因为return前没有初始化堆栈,造成错误的地址访问。

测试时可以先加return 0,确定退出的仿真时间,再换成while(1), 根据仿真时间来结束仿真。

原文链接

Gem5 O3 可视化相关推荐

  1. IoT Studio可视化搭建平台编辑历史功能的思考与探索

    简介: 在前端可视化搭建领域中"重做"和"撤销"这两个功能已经是标配中的标配,毕竟只要有用户行为的地方就可能会有出错,这两个功能无疑就是为用户提供了" ...

  2. python科学计算与可视化教程

    目录 ├─[第〇周]三维可视化之前奏.mp48 l/ E6 ]) {, q: W ├─[第一周]三维可视之基础运用-第一周课程导学.mp4 ├─第一单元TVTK入门-1.mp4 ├─第一单元TVTK入 ...

  3. 基于 Python 的全国空气质量监测与可视化分析平台

    温馨提示:文末有 CSDN 平台官方提供的学长 Wechat / QQ 名片 :) 1. 项目背景 空气质量优劣程度与一个城市的综合竞争力密切相关,它直接影响到投资环境和居民健康,因此越来越受到政府和 ...

  4. 详解Gem5模拟器的4种CPU模型

    背景知识 一.处理器的流水线 流水线技术(pipeline)是一种将每条指令分解为多步,并让各步操作重叠,从而实现几条指令并行处理的技术.程序中的指令仍是一条条顺序执行,但可以预先取若干条指令,并在当 ...

  5. GEM5 模拟器简介

    GEM5是一款模块化的离散事件驱动全系统模拟器,它结合了M5和GEMS中最优秀的部分,是一款高度可配置.集成多种ISA和多种CPU模型的体系结构模拟器.M5是由Michigan大学开发的一款开源的多处 ...

  6. [学习SLAM] 3D可视化 只viz模块和pangolin

    viz模块主要用于3D可视化显示 与pangolin相比:缺点,不容易添加控件(按钮,滑动条等) ;优点,简单调试方便. 创建一个窗口并显示坐标系 首先看个简单示例程序,创建一个窗口并显示坐标系: / ...

  7. 抓取空气质量指数AQI_PM2.5历史数据,可视化展示

    抓取空气质量指数AQI_PM2.5历史数据,可视化展示: url='http://www.tianqihoubao.com/aqi/hangzhou-201810.html'杭州的空气质量数据,可以在 ...

  8. gem5运行SPECCPU2017benchmark

    title: gem5运行SPECCPU2017benchmark date: 2020-10-11 15:39:06 description: '如何在GEM5中运行SPECCPU 2017benc ...

  9. python空气质量指数计算_空气质量指数数据分析可视化

    目录 1 数据描述 2 数据预处理 应用日期计算函数 应用匹配查找函数 逻辑判断函数 Python缺失值处理 3 数据分析及可视化 3.1描述统计 3.2 热力图 一.待分析的大数据描述 本例选取的数 ...

  10. opengl 贴图教程_如何使用叶贴图可视化空气污染-深入教程

    opengl 贴图教程 In my previous story on forecasting air pollution, I looked into using recurrent neural ...

最新文章

  1. 虚幻引擎C++编程游戏开发基础
  2. HDU4658 Integer Partition(整数拆分+判断相同数)
  3. KEIL编译stdarg处理机制遇到incorrect use之类的问题
  4. Python的几种主动结束程序方式
  5. 进制问题:m进制转n进制,m进制转十进制,十进制转n进制
  6. Django(part33)--数据库的迁移
  7. webbrowser实现input tab事件_如何合理构造一个Uploader工具类(设计到实现)
  8. 【数学基础】最小二乘法
  9. 考研总分多少能去辽师_辽宁师范大学在职研究生统考分数到达到多少呢统考通过就会被录取吗...
  10. 统一沟通-技巧-9-Lync 2010-Outlook 2010-自动配置-1-IT人员
  11. 井下各种压力概念及相互关系
  12. mount挂载不上,不提示任何信息
  13. 使用 BulkLoad 向 HBase 中批量导入数据
  14. ps使图片边缘模糊且融入背景色
  15. 女生学软件测试难不难 培训出来能找到工作吗?
  16. UEFI-win10-EDK2搭建
  17. 蓝牙如何进行广播和扫描
  18. 大数据训练营课程大纲项目简介
  19. 二、详解 DVWA_Reflected反射型XSS
  20. 感谢路遥 感谢平凡的世界

热门文章

  1. 弗兰克赫兹大物实验数据处理
  2. 获取list中出现频数最多的元素
  3. stm32f103c8t6视频教程
  4. [论文笔记]Rob-GAN: Generator, Discriminator, and Adversarial Attacker
  5. ASCII码表字母大小写相差32的原因分析
  6. 项目系统设计和数据库设计(追光的人)
  7. python中del什么意思_python中del是什么意思?
  8. bitmap 设置图片尺寸,避免 内存溢出 OutOfMemoryError的优化方法
  9. 怎样看股市K线图指标之市场盈亏指标CYS
  10. Glide4 设置默认图片和错误图片,即设置占位图