Ubuntu20.04搭建gem5并运行helloworld

文章目录

相关资料

  1. gem5官网
  2. 知乎-计算机体系结构-gem5模拟器入门
  3. gem5:Hello World Tutorial

一、安装gem5

1.下载依赖

bash 复制代码
sudo apt install build-essential git m4 scons zlib1g zlib1g-dev \
    libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev \
    python3-dev python-is-python3 libboost-all-dev pkg-config

从github或gitee上拷贝gem5代码

bash 复制代码
git clone https://gitee.com/koverlu/gem5.git

拷贝完成后,会多一个gem5的目录我们进入该目录,在执行对应的构建命令。这里构建的是X86架构,如果要构建ARM或其他架构同理

bash 复制代码
cd gem5
scons build/X86/gem5.opt -j9

构建完成后,如果没有错误,说明构建成功。在gem5目录下会多一个名为build的目录。

二、运行helloworld

在安装完gem5的环境后,我们可以编写对应的helloworld程序进行测试。在根目录下(gem5目录下),新建一个名为hello-world.py的python文件。

python 复制代码
from gem5.isas import ISA
from gem5.components.boards.simple_board import SimpleBoard
from gem5.components.cachehierarchies.classic.no_cache import NoCache
from gem5.components.memory.single_channel import SingleChannelDDR3_1600
from gem5.components.processors.simple_processor import SimpleProcessor
from gem5.components.processors.cpu_types import CPUTypes
from gem5.resources.resource import Resource
from gem5.simulate.simulator import Simulator


# Obtain the components.
cache_hierarchy = NoCache()
memory = SingleChannelDDR3_1600("1GiB")
processor = SimpleProcessor(cpu_type=CPUTypes.ATOMIC, isa=ISA.x86, num_cores=1)

#Add them to the board.
board = SimpleBoard(
    clk_freq="3GHz",
    processor=processor,
    memory=memory,
    cache_hierarchy=cache_hierarchy,
)

# Set the workload.
binary = Resource("x86-hello64-static")
board.set_se_binary_workload(binary)

# Setup the Simulator and run the simulation.
simulator = Simulator(board=board)
simulator.run()

这个例子演示了一个最简单的环境,没有Cache,CPU直连主存。值得一提的是,官方文档上给的helloworld示例有问题,SimpleProcessor函数需要有三个参数,还需要指定ISA,在最上方也需要引入from gem5.isas import ISA。否则执行会报错。

使用如下命令运行该程序,如果输出Hello World!,则说明成功.

bash 复制代码
./build/X86/gem5.opt hello-world.py
相关推荐
2401_8318249617 分钟前
使用Fabric自动化你的部署流程
jvm·数据库·python
源远流长jerry19 分钟前
在 Ubuntu 22.04 上配置 Soft-RoCE 并运行 RDMA 测试程序
linux·服务器·网络·tcp/ip·ubuntu·架构·ip
njidf36 分钟前
Python日志记录(Logging)最佳实践
jvm·数据库·python
@我漫长的孤独流浪36 分钟前
Python编程核心知识点速览
开发语言·数据库·python
宇擎智脑科技38 分钟前
A2A Python SDK 源码架构解读:一个请求是如何被处理的
人工智能·python·架构·a2a
2401_8512729938 分钟前
实战:用Python分析某电商销售数据
jvm·数据库·python
vx_biyesheji000141 分钟前
Python 全国城市租房洞察系统 Django框架 Requests爬虫 可视化 房子 房源 大数据 大模型 计算机毕业设计源码(建议收藏)✅
爬虫·python·机器学习·django·flask·课程设计·旅游
code 小楊1 小时前
yrb 1.5.0 正式发布:Python 极简国内下载加速与全景可视化终端体验!
开发语言·python
2401_857918291 小时前
用Python和Twilio构建短信通知系统
jvm·数据库·python
樹JUMP1 小时前
使用Docker容器化你的Python应用
jvm·数据库·python