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
相关推荐
明月与玄武30 分钟前
Python编程的真谛:超越语法,理解编程本质
python·编程语言
CodeCraft Studio32 分钟前
Excel处理控件Aspose.Cells教程:使用 Python 在 Excel 中进行数据验
开发语言·python·excel
拾忆-eleven1 小时前
C语言实战:用Pygame打造高难度水果消消乐游戏
c语言·python·pygame
旦莫1 小时前
Python 教程:我们可以给 Python 文件起中文名吗?
开发语言·python
FREEDOM_X2 小时前
ubuntu20.04 远程桌面Xrdp方式
ubuntu·vmware
豌豆花下猫2 小时前
Python 潮流周刊#99:如何在生产环境中运行 Python?(摘要)
后端·python·ai
小杨4042 小时前
python入门系列二十(peewee)
人工智能·python·pycharm
弧襪2 小时前
FlaskRestfulAPI接口的初步认识
python·flaskrestfulapi
船长@Quant2 小时前
文档构建:Sphinx全面使用指南 — 进阶篇
python·markdown·sphinx·文档构建
cloudy4912 小时前
强化学习:历史基金净产值,学习最大化长期收益
python·强化学习