文章目录
相关资料
一、安装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