在做课程设计的时候发现好多人不会,就整理一下先发这一部分的内容吧,其它的放假再补。
在Gem5的编译与测试完成后,需要编译能在Gem5环境下运行的SPEC2006样例。
如果有其它报错欢迎在评论区补充。
一、下载源码并导入
由于SPEC2006是收费软件,在CSDN上就不方便放分享源码。除非能通过其它途径联系到我。网络上有很多资源,但有一些源码是只有Windows的安装脚本而没有Linux的,还是要注意分辨。最好是能够下到iso镜像,或者由iso提取的压缩包也可以。
首先将源码拷贝到gem5目录下并解压


二、安装SPEC2006
通过以下语句执行安装:
sudo sh ./install.sh中途提示判断地址是否正确,可选择yes/no来确认/更改安装的位置。
如果出现错误:
ERROR: Programs in *路径* cannot be executed. Is this volume mounted with the "noexec" flag? Tools installation will not be able to proceed until this is rectified.
说明权限不正确,需要会到上层目录赋予该路径管理员权限
chmod 777 -R Spec-cpu2006-1.2
如果出现类似于图片中的错误:
则需要去源码中找到对应的文件,把"_"改成"-"。或者先在Windows系统上将文件从镜像中提取出来,再复制到系统中。
三、编译样例
1.安装aarch64交叉编译环境
在上篇文章中,已经安装了aarch64的gcc和g++交叉编译器,继续编译样例还需要安装aarch-gfortran编译器。通过:
sudo apt install gfortran-8-aarch64-linux-gnu安装 gfortran-aarch64。
2.加载环境变量
只要需要用到SPEC2006的指令,都需要在打开终端时加入:
source ./shrc来加载SPEC2006的环境变量。在之后不再赘述。
3.交叉编译配置
进入SPEC-cpu2006-1.2/config目录下,复制Example-linux64-amd64-gcc43+的配置文件(这个文件的选择根据Gem5中模拟的核模型来选择),将其重命名为aarch64.cfg(可以任意命名为其它名称)。

打开aarch64.cfg,找到下面两处代码,修改为图片中的形式。
在gem5中运行的样例需要静态编译,故加上-static标签

由于本机指令集是x86,gem5核模型是arm,需要使用aarch交叉编译为arm架构的可执行文件。

保存并退出。
4.编译样例
(1)编译样例
回到SPEC-cpu2006-1.2目录下,在命令行中执行:
runspec --config=<你的配置文件名> --action=build --tune=base <编译的样例名>配置的文件名为上一步设定的。
编译的样例名可以为某个具体的样例名,也可以是all(全部样例),int(全部整型样例),fp(全部浮点型样例)。由于任务要求是测试三个样例,所以可以仅编译某三个样例。


Build完成后会提示哪些样例成功了哪些失败。之后选择成功的样例执行即可。
(2)生成可执行文件
执行
runspec --config=<你的配置文件名> --size=ref --noreportable --tune=base --iterations=1 <样例名称>执行后会出现run文件夹,内含可生成能够在gem5中运行的可执行文件和输入数据。

此处报错无需在意,因为是交叉编译,在x86的电脑上是执行不了arm架构的程序的。只要文件夹生成即达到目的。
