開始入門gem5
這個實驗的具體內容就是gem5輸出矩陣乘的訪存trace,然後做個cache模擬器分析,我主要是入門一下gem5.我的系統是ubuntu16.04,主要流程如下
-
從github下載源碼
git clone https://github.com/gem5/gem5.git
解壓之後在解壓目錄執行chmod -R 777 .
(這算是一個坑) -
安裝一堆需要的軟件
sudo apt-get install mercurial scons swig gcc m4 python python-dev libgoogle-perftools-dev g++ libprotobuf-dev sudo apt-get install build-essential sudo apt-get install libboost-dev # 安裝2.6.1版本的protoc用於輸出trace sudo apt-get install protoc
-
編譯gem5,這裏需要按照指定的架構來編譯,我們編譯的是ARM架構的,也可以編譯X86架構的
scons build/ARM/gem5.opt -j8
-
然後想要在gem5上執行arm程序,需要在x86架構上安裝交叉編譯工具
sudo apt-get install gcc-arm-linux-gnueabi
-
執行編譯,注意要靜態編譯(第二個坑)
arm-linux-gnueabi-gcc -static xxx.c -o a.out
-
執行程序
build/ARM/gem5.opt --outdir=memaccess --debug-flag=DRAM --debug-file=dram.out configs/example/se.py –c a.out
這裏我遇到一個問題,就是提示沒有參數,我就打開了se.py文件看了一下它的代碼,發現在解析參數的地方有點問題,我也不清楚是因爲python的原因還是啥原因,我就把se.py文件裏解析參數的地方直接
options.cmd="./a.out"
,這樣暫時就能用了(第三個坑) -
最後就能夠在對應的文件夾底下找到想要的訪存trace啦~