本實驗主要由《深入了解計算機系統》第四章課後家庭作業問題組裝起來形成的一個實驗。實驗主要是模拟一下自己設計的處理器如何執行Y86指令。而實驗僅僅是一個模拟過程,實驗前,應該透徹地搞懂真正的原理理論。這樣,才會有事半功倍的效果。
做此實驗首先要有模拟環境。而實驗的模拟器安裝卻是比較複雜的,下面把我成功安裝的工程記錄一下(僅供參考,每個人的機器不一樣,一些設定也會不一樣)
Y86模拟器安裝
無圖形TTY模式運作--------
1,首先下載下傳資源,資源名稱為archlab-handout.Tar(網上搜尋可以搜到)。
2,解壓tar xvf archlab-handout.tar,一般包含以下四個檔案:README, Makefile, sim.tar,archlab.pdf,and simguide.pdf.
3,解壓sim.Tar檔案:tar xvf sim.tar
4,進入sim目錄:cd sim
5, 修改Makefile檔案(sim目錄下):
注釋掉:
#GUIMODE=-DHAS_GUI
#TKLIBS=-L/usr/lib -ltk -ltcl
#TKINC=-isystem /usr/include
6,make clean;
make;
搞定!此時所有的模拟器都會生成可執行檔案包括misc(yas、yis、hcl2c)、pipe(psim)、seq(ssim、ssim+)、y86-code(pptest)等。下面簡單程式測試以下:
../misc/yas asum.ys
../misc/yis asum.yo
../seq/ssim -h
../seq/ssim -t < asum.yo
../pipe/psim -t -g asum.Yo
有圖形GUI模式運作--------
(注:在無圖形TTY模式安裝好的情況下,再繼續有圖形)【可能沒必要,但我第一次是這樣運作成功的】
對Ubuntu而言:
1,由于ubuntu預設沒有lex詞法分析工具,在編譯時需要先安裝flex
sudo apt-get install flex
然後安裝tcl/tk
sudo apt-get install tcl8.5-dev tk8.5-dev tcl8.5 tk8.5
2,進入sim/seq目錄下,修改Makefile
VERSION=full
GUIMODE=-DHAS_GUI
TKLIBS=-L/usr/local/lib -ltk8.5 -ltcl8.5 -lpthread -ldl -lx11
TKINC=-I/usr/local/include -I/usr/include/tcl8.5
可以參考
http://blog.chinaunix.net/u1/42908/showart_1960009.html
http://techblog.iamzellux.com/2008/03/ics-lab4/
3,Makefile修改完成後,make以下
make clean;
make VERSION=full ssim
這裡注意,我們經常會看到象make VERSION=full ssim這樣的語句,其實根本不需要這樣,因為在Makefile檔案裡面已經設定了VERSION(預設情況下為full),而後直接make clean;make即可!當然,make VERSION=full ssim更加的具體化而已。當然,仔細的話可以發現:出現了seq-full.c檔案,而且可執行檔案隻有ssim,沒有了ssim+。為什麼?隻是因為VERSION問題。如果你把VERSION設定為std,make後則會同時出現seq-std.c、seq+.std.c以及兩個可執行檔案ssim、ssim+。你也可以具體化make,比如make VERSION=std ssim、make VERSION=std ssim+。
搞定!檢視seq目錄下是否有ssim可執行檔案,有的話說明安裝成功!測試一下:
./ssim -t asum.yo
./ssim -g asum.yo
此時應該會出現圖形化界面了。
因為此時我們設定的VERSION為full而非std(标準版),是以結果隻會出來ssim,而沒有ssim+。而且此時運作./ssim -g asum.yo後出現的模拟器标題為“Y86 Processor:seq-full.hcl”。
psim的gui安裝同上,首先進入sim/pipe,然後修改Makefile
# Modify this line to indicate the default version to build
VERSION=std #這裡可以修改為full、full-ans、lw、nt、btfnt等等
# Comment this out if you don't have Tcl/Tk on your system
GUIMODE=-DHAS_GUI
# Modify the following line so that gcc can find the libtcl.so and
# libtk.so libraries on your system. You may need to use the -L option
# to tell gcc which directory to look in. Comment this out if you
# don't have Tcl/Tk.
TKLIBS=-L/usr/local/lib -ltk8.5 -ltcl8.5 -lpthread -ldl -lX11
# Modify the following line so that gcc can find the tcl.h and tk.h
# header files on your system. Comment this out if you don't have
# Tcl/Tk.
TKINC=-I/usr/local/include -I/usr/include/tcl8.5
基本操作同ssim。
make clean
make
此時出現psim,運作./psim -g asum.yo将會出現如下效果:
這個是自己實作模拟處理器!
這個是加載的Y86程式。
這是記憶體分布情況。
安裝部分到這裡就結束了,接下來進行具體的實驗部分。
實驗部分本來是準備認真做的,結果發現實驗指導手冊上面的實驗步驟不是很好,我覺得有能力把《深入了解計算機系統》課後的家庭作業做出來的話,能力提升更快,當然這是建立在你把第四章了解地很透徹的基礎上!
最後總結,把書上的原理搞通才是根本所在。。。