# 前言

华中科技大学研究生课程计算机系统设计实验,希望能帮到学弟学妹们

# 安装 Docker

实验文档建议使用 Docker,我之前没有安装过 Docker,因此安装一下。
启用 Hyper-V 和 linux 子系统,应该是可选的只用打开 Linux 子系统。
{C8E5C13E-A12C-42DC-9AA8-5EA339E22A4E}.png
{0FC546B8-5F99-4F7A-BA71-AE9952AE268D}.png
Windows | Docker Docs 下载 Docker Desktop for Windows 默认安装即可
启动 ubuntu
{425982C9-77CD-4EB2-BD65-1AC6EA0B576E}.png
安装成功
{D99DDA51-E678-42CE-B3D1-7A110E10CA5C}.png

# 测试 GEM5 SE 和 FS 模式,成功运行 PARSEC 2.1 负载

# 测试 SE 模式

启动容器,测试 Gem5 SE 模式

h
./build/ARM/gem5.opt ./configs/example/se.py -c ./tests/test-progs/hello/bin/arm/linux/hello

{8F065D63-EBE1-488D-833D-11D9082DFBC9}.png

# 测试 FS 模式

{EF408D75-12D3-41CF-8DFB-FCA043578B3B}.png
可以发现在 /usr/local/src/full_system_images 目录下已有磁盘镜像,且 SysPaths.py 已配置 disk image 完整路径, Benchmarks.py 已修改 image 文件名
{B444407A-6EE7-4E07-9EAD-3A05FDCDA94C}.png
运行,输入如下命令:

h
./build/X86/gem5.opt ./configs/example/fs.py

此时再开一个终端进入同一个容器,使用 telnet 连接系统

l
telnet 127.0.0.1 3456

{6F1A23D1-A4EC-4666-A9E8-9CF7DB46037E}.png

# 运行 PARSEC 2.1 负载

l
M5_PATH=/usr/local/src/full_system_images ./build/X86/gem5.opt ./configs/example/fs.py -n 2 --script=../benchmark/TR-09-32-parsec-2.1-alpha-files/blackscholes_4c_test.rcS --disk-image x86root-parsec.img --kernel x86_64-vmlinux-2.6.22.9.smp

再打开另一个终端进入同一容器,使用 telnet 连接系统
{EC999C19-D743-4020-B7B6-75EEDF6E1F1C}.png

# 使用 GEM5+NVMain 模拟器构建并模拟一个真实计算机系统并对主存模块仿真

# 混合编译

l
scons EXTRAS=nvmain ./build/X86/gem5.opt

{0AD54A3C-48F6-49F8-A5DF-256C745901BB}.png

# SE 模式非易失性内存仿真

l
M5_PATH=/usr/local/src/full_system_images ./build/X86/gem5.opt configs/example/se.py -c tests/test-progs/hello/bin/x86/linux/hello --caches --l2cache --mem-type=NVMainMemory --nvmain-config=../nvmain/Config/PCM_ISSCC_2012_4GB.config

{BA4CCD05-4DFF-4DCE-A48A-94073B1DD3E6}.png
{66828BB9-9C11-4141-B1E2-8A5818BF4050}.png
结果正确输出了,但是中间有许多 warning 不知道怎么解决

# 在 NVMain 中实现 FPC 压缩方案

# 编译

l
scons --build-type=fast

{4D22E2FB-C238-4229-B5E0-619FBF041CCB}.png
在单独使用 nvmain 的过程中,出现了 gem5_scons 的相关错误,将 nvmain/SConscript 中的第 36 行注释,也就是 from gem5_scons import Transform # 这行注释即可
{7A45ECA2-6379-4EE5-8B53-D9D490000509}.png
{D076EE54-F225-4EB8-9790-D0412CA93A0C}.png

# 参考

Configure and Run PARSEC-2.1 Benchmark in Gem5 (pfzuo.github.io)
Install and Run GEM5 in Unbuntu 14.04 (pfzuo.github.io)
NVMain 和 Gem5 环境搭建 - 简书 (jianshu.com)
计算机系统设计实验 | 想学打球的菜鸡 (yux20000304.github.io)