gem5跑linux或安卓bench

2021-08-11 00:04:13 字數 3855 閱讀 7835

1搭建gem5環境

1.1 安裝

安裝所需工具

sudo apt-get install git scons g++ python-dev swig m4 protobuf

note:我安裝的是gem5-stable版,據說此版可以檢視cache層次結構的pdf

1.3編譯

解壓gem5,進入gem5資料夾:

scons build/arm/gem5.opt

(note:第一次較慢(大概20分鐘),如果以前跑過gem5可以備份一下build資料夾之後再編譯)

2 跑linuxbench

2.1 啟動linux映象前的準備

————映象,bench的放置和建立**輸出目錄

2 將linux映象放入正確目錄

將aarch-system-2014-10.tar.xz解壓到my-gem5資料夾下的img資料夾中(如果沒有則自己建立)

目錄結構如下:

gem5/

|----img/

|----|----binaries/*

|----|----disks/*

note:最終檢視disks下存放著要跑的linux映象linux-aarch32-ael.img

進入到gem5/img/disks目錄下,上傳mediabench  mibench,並解壓。

向映象新增檔案指令,將linux映象掛載到mnt,把benchmark放到檔案系統映象

sudo mount -o loop,offset=32256 img/disks/linux-aarch32-ael.img /mnt

cp -a mibench /mnt

cp -a mediabench /mnt

cd /mnt

chmod +x -r /mediabench/*

chmod +x -r /mibench/*

umount /mnt

4 構建**輸出目錄

將gem5/build/arm/gem5.opt和gem5/configs/鏈結到任一資料夾下(這裡採用gem5/parsec-1/),開始**,注意為不同的benchmark建立不同的目錄:

進入parsec-1目錄

ln -s ../build/arm/gem5.opt ./

ln -s ../configs

目錄結構如下:

parsec-1/

|----boot_for_both.sh

|----gem5.opt

|----configs

2.2 啟動linux系統(gem5目錄下)

**的過程首先啟動系統,然後在系統中跑bench,為節省時間可以分兩步:

1 用atomic******cpu模式啟動linux,設定乙個觀察點:

進入parsec-1,修改boot_for_both:

1.首先將m5_path修改為你自己的img路徑

2.可能需要根據不同的模式進行相應的修改,且注意每種模式後面引數檔案是否存在

1)執行./boot_for_both.sh,啟動結果如下圖,主要看三個地方:

1 command line: 輸出內容與啟動指令碼boot_for_both.sh內容一致,如果是安卓,則必須指定kernel,  disk-image ,os-type.不指定這者則預設是linux系統

2 port 3458,埠號是3458.這個資訊用於m5term連線到監聽埠.

3 @*** 設定的斷點,虛擬機器下次不再從@0處啟動(時間長,會輸出非常多啟動資訊)

2)編譯m5term,連線到上面的監聽埠:

開啟另乙個終端,編譯m5term,連線到上面的監聽埠m5term的原始碼在gem5源**的util/term目錄下,進入該目錄,輸入熟悉命令進行編譯:(用lnet連線也可以不過據說連線效果不如下面這個好)

% cd m5/util/term

% make

sudo gcc -o m5term term.c

% make install

sudo install -o root -m 555 m5term /usr/local/bin

然後開啟新控制台使用如下命令連線虛擬機器:(注意一定要在util/term下執行,此命令才會有效,因為沒有加入系統環境變數)

./m5term 127.0.0.1 3456 (note:此次可直接寫m5term 3456)

./util/term/m5term 127.0.0.1 3456就可以看到所跑linux系統的命令列#,即已經進入m5終端

(note:root是我們輸入的)

出現#號時,說明linux系統已經啟動好

設定斷點,儲存此刻虛擬機器狀態

此時之前執行./boot_for_both.sh,啟動結果圖出現對應的變化,@***為斷點

此時parserc-1/m5out/資料夾裡會生成cpt.***xx資料夾,即為checkpoint,這個資料夾可以重複使用,跑另乙個bench的時候複製其鏈結到m5out資料夾中

注意:不同的boot_for_both.sh後加入-r 1代表從觀察點啟動,沒有則表示直接啟動,可以設定觀察點,可以新增進入,以後再次執行即從斷點處進入m5終端。

2 用arm_detailed模式從設定的觀察點繼續執行

下次執行./util/term/m5term 127.0.0.1 3456就可以看到所跑linux系統的命令列#,即已經進入m5終端

3 跑安卓bench

基本一樣,不同點是:

1 android映象和bench在同乙個檔案:可以直接放入img/disks,不用掛載mount到 /mnt。

2 啟動指令碼有不同。

3 m5終端略不同,如下。

4 總結

1 gem5 編譯

2 建立img,disks下放linux或者andriod的.img。如果是linux系統先掛載,bench再掛載到系統。

3 建立輸出檔案,存放不同bench的結果。

目錄結構如下:

parsec-1/

|----boot_for_both.sh

|----gem5.opt

|----configs

4 修改boot_for_both.sh

5./boot_for_both.sh

6 m5term 編譯並連線埠號。

7 進入虛擬的m5終端,設定斷點m5  checkpoint  

退出虛擬機器 m5 exit.

參考

gem5 一)配置Gem5執行環境

系統環境 ubuntu 18.04 1.安裝相關的依賴庫 通過命令sudo apt install 安裝下列的依賴庫 git,build essential,scons,python dev,swig,libprotobuf dev,python protobuf,protobuf compiler...

如何除錯gem5

printf 是很好的工具,同時gem5在自己 裡面就有很多已經做好的輸出資訊,可以通過flag制定來選擇。輸出flags fetch,decode,ethernet,exec,tlb,dma,bus,cache,loader,o3cpuall,要想知道所有的flags,執行的時候加上 debug ...

小白的Gem5安裝

查閱了很多部落格教程,我的安裝過程主要分為三步 安裝依賴軟體 編譯執行 為簡化,直接可以參考我瀏覽的部落格 傳送門 需要安裝g python scons 用於編譯 swig,zlib m4 protobuf 等依賴軟體。在安裝時出現了部分包無法識別的問題,我更新了中科大源並且 第二天 重新嘗試,沒有...