一種多核模擬器,全稱superEscalar Simulator,能夠類比目前大多數的處理器結構,包括單核亂序處理器結構、多執行緒器結構、CMP、PIM以及線程級猜測(thread level speculation,簡稱TLS)等多種體繫結構,而且能夠有效地類比多線程並行的結構和線程級猜測的結構。
目前我進行中異構CMP調度演算法的研究,希望認識同樣有使用該模擬器進行實驗工作的,有些問題需要請教。我也將隨著學習,階段性地貼出我的文件。
一 安裝環境
系統版本ubuntu-10.10 (建議不要用10.10以上的版本,我用12.10出現了大量的問題)
安裝鏡像是 ubuntu-10.10-beta-desktop-i386.iso
硬體 HP-Z800 以及VM虛擬機器環境都測試成功
需要連網環境以及軟體源。(湖南大學校園網銳捷登陸方法見附錄A)
ubuntu-10.10 軟體源的設定:
http://blog.csdn.net/a8887396/article/details/8753535
二 gcc安裝
由於sesc當初是使用gcc3.4.x編譯,所以使用相同的編譯器不容易出問題。
安裝檔案見gcc3.4.6目錄
cpp-3.4_3.4.6-6ubuntu5_i386.deb gcc-3.4-base_3.4.6-6ubuntu5_i386.deb
gcc-3.4_3.4.6-6ubuntu5_i386.deb
cd gcc3.4.6
sudo chmod 777 *
sudo dpkg -i *
sudo ln -sf /usr/bin/gcc-3.4 /usr/bin/gcc
gcc -v 顯示版本 gcc version 3.4.6 (Ubuntu 3.4.6-6ubuntu5)
三 安裝sescutils
sescutils 是編譯sesc能啟動並執行程式的編譯器。
1 修改sh軟連結為bash
sudo ln -sf /bin/bash /bin/sh
ls -l /bin/sh 顯示 /bin/sh -> /bin/bash 表示修改成功
2 安裝前置軟體(若你是和我一樣是在新的系統中安裝,這些你可能都要安裝)
bison2.0和 flex (新版本的bison不行,若已有,刪除,安裝bison2.0)
bison的前置軟體需要m4
sudo apt-get install m4
bison2.0的 http://ftp.gnu.org/gnu/bison/ 也可以用我下載好的
安裝bison2.0
sudo tar zxvf bison-2.0.tar.gz
cd bison-2.0
sudo ./configure
sudo make
sudo make install
sudo apt-get install flex
安裝 libncurses5-dev
若不安裝,編譯build-5-gdb時會提示 configure: error: no termcap library found
sudo apt-get install libncurses5-dev
3 要修改的地方
將 sescutils.tar.bz2 拷貝到$HOME目錄下 (也就是 cd ~ 進入的目錄)
tar -jxvf sescutils.tar.bz2
cd sescutils
cd build-mipseb-linux/
vim build-common
修改build-common中的三個參數為
GNUSRC=$HOME/sescutils/src
PREFIX=$HOME/sescutils/install
BUILD="i686-pc-linux-gnu"
4 編譯步驟
sudo ./build-1-binutils
sudo ./build-2-gcc-core
sudo ./build-3-glibc
sudo ./build-4-gcc
sudo ./build-5-gdb
5 安裝完成
四 安裝SESC
1 下載方式
使用我修改過的包也可以,反正sesc已經從09年開始就沒更新過了。
下面是線上下載的方法
安裝 CVS
sudo apt-get install cvs
下載CVS
$cvs -d:pserver:anonymous@sesc.cvs.sourceforge.net:/cvsroot/sesc login
Note:需要輸入密碼 直接按斷行符號
$cvs -z3 -d:pserver:anonymous@sesc.cvs.sourceforge.net:/cvsroot/sesc co -P sesc
2 安裝需要的相關程式
sudo apt-get install binutils
sudo apt-get install zlib1g-dev
sudo apt-get install g++
這裡我自動安裝的是g++-4.3版本的 不知為何我找不到下面兩個安裝檔案了
g++-3.4_3.4.6-1ubuntu2_i386
libstdc++6-dev_3.4.6-1ubuntu2_i386
據說是在 http://archive.ubuntu.com/ubuntu/pool/main/g/gcc-3.4/ 下載的
但是我用g++-4.3來編譯sesc 沒有報奇怪的問題 發現問題再換吧。
3 解壓sesc
在home目錄下解壓sesc.tar.gz
sudo tar zxvf sesc.tar.gz
產生一個sesc檔案夾 其源碼需要做些修改 如下: (我給的檔案已經該過裡)
sesc/src/libcore/FetchEngine.cpp 中 加上 #include <limits.h>
sesc/src/libmint/subst.cpp 中 include <linux/dirent.h>, 改為include<dirent.h>
在home下建立一個空檔案夾 sesc-build 用來存放編譯結果。
sudo mkdir sesc-build
cd sesc-build
../sesc/configure
sudo make
在報如下類似錯誤的檔案中加上 #include <stdint.h>
ERROR‘uint32_t’ was not declared in this scope
在報如下類似錯誤的檔案中加上 #include <limits.h>
ERROR: USHRT_CHAR undefined
測試是否安裝成功
make testsim
五 第一個程式
1 修改路徑參數
建立檔案
vim setupsesc
寫入如下內容
set +h
export PATH=$HOME/sescutils/install/bin:$HOME/sesc-build:$PATH
echo "setup finished"
注意PATH,如果你完全按照我的來,那可以照樣寫,若你把sescutils和sesc-build放在了別的目錄,那仿照這個來
儲存退出 再 source setupsesc
成功的標誌是你可以在shell 中使用 mipseb-linux-gcc
2 第一個sesc程式
vim hellosesc.c
#include <stdio.h>
int main()
{
printf("hello world\n");
}
編譯方法 如果不加這些選項 會報錯
mipseb-linux-gcc -mips2 -mabi=32 -static -Wa,-non_shared -mno-abicalls -Wl,--script=$HOME/sescutils/src/mint.x,-static hellosec.c -o hello
如能編譯 則編譯成功
這是我從make testsim從看過來的命令 你可以把sesc/confs中你要用到的conf檔案 拷貝到當前檔案夾中以便使用
這個xx.conf是根據你的sesc模擬器編譯時間選項的不同 不同的 shared.conf也是一定需要的固定檔案
cp /home/hnu/sesc-build/../sesc/confs/mem.conf sesc.conf
cp /home/hnu/sesc-build/../sesc/confs/shared.conf .
運行程式
./sesc.mem -h0x800000 -csesc.conf hello
static[0x45bc90-0x10000c8c] heap[0x10002000-0x10802000] stack[0x10802000-0x10ffa000] -> [0xa6000000-0xb6b9e370]
hello world
sesc.conf 是運行時的配置 和前面的-c中間沒有空格 若沒有指定 則指定當前檔案夾下的sesc.conf
若兩者都沒有 則運行錯誤
hello是之前編譯的可執行檔
若有輸入資料 寫在檔案中tt.in
./sesc.mem -h0x800000 -csesc.conf hello << tt.in
3獲得可視化報告
../sesc/scripts/report.pl sesc_hello.cRj18s
附錄A 湖南大學銳捷登陸方法:
cd myxrgsu
將lib中的檔案拷貝到 /usr/lib中:
cd lib
sudo cp * /usr/lib
將myxrgsu拷貝到/usr/bin中
cp myxrgsu /usr/bin
將IP設定為同一網段IP,網段IP參考同一區域網路內其他人的IP
sudo ipconfig eth0 xxx.xxx.xxx.xxx up
設定網關 網關也看同一內網的人的網關
設定網關 sudo route add default gw xxx.xxx.xxx.xxx
運行程式
sudo myxrgsu
前兩個是輸入登陸銳捷的使用者名稱和密碼
DHCP 選擇 1 使用DHCP
其他都預設0