計算機系統結構實驗實驗三 dlx處理器程式設計
一、實驗目的
學習使用dlx 組合語言程式設計,進一步分析相關現象。
二、實驗裝置環境
dlx組合語言環境
三、實驗內容和要求
自編一段彙編**,完成一維向量加法運算,並輸出結果。觀察程式中出現的資料/控制/結構相關。(注:使用一維陣列表示一維向量。)
四、**清單及注釋
*向量加法設計*
1、源**
.data
vectorlength: .word 16
vector1: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
vector2: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
printf1: .asciiz "vector ="
printf2: .asciiz " %f"
.align 2
printprompt: .word printf1
printpar: .word printf2
result: .space 4
.text
main:
addi r14,r0,printprompt
trap 5
lw r20,vectorlength
addi r2,r0,0
loop:
ld f10,vector1(r2)
ld f12,vector2(r2)
cvti2d f0,f10
cvti2d f2,f12
addd f4,f2,f0
finish:;**** finish,write result into stdout
sd result,f4
addi r14,r0,printpar
trap 5
addi r2,r2,4
subi r20,r20,1
bnez r20,loop
;**** end
trap 0
2、注釋
vectorlength: .word 16
vector1: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 vector2:
.word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 宣告向量長度以及宣告向量1、2
result: .space 4
存放列印資料的空間申請
loop:
ld f10,vector1(r2)
ld f12,vector2(r2)
迴圈體中讀入向量
addd f4,f2,f0
加法運算
trap 5
系統中斷,輸出結果
3、執行結果
五、程式相關性分析結果
1、資料、控制、結構相關
資料相關。所以當對當前指令的運算元暫存器進行操作(ex)的時候,前幾條指令的運算結果還未寫回(wb)結果暫存器,由此產生資料相關。
結構相關。由於程式只簡單的做了一次加法,所以沒有結構相關產生。
控制相關。於系統按照**成功來執行指令,所以執行bnez後馬上將其下一條指令trap 讀進來。
2、浮點運算部件帶來的影響
將浮點加法器有1個增加為2個後,程式執行的效能未得到提公升。由於該程式為產生浮點加法器的結構相關,所以增加浮點加法器的數量對程式執行的效能提公升沒有幫助。
3、forward部件的影響
關閉farward後,執行時間由283增加到381. 所以forward技術為該程式帶來的加速比為:381/282=1.35。
4、轉移成功和不成功
在控制相關中,轉移成功和不成功的差別。由於系統按照**成功來執行指令,所以執行
bnez後馬上將其下一條指令trap讀進來判斷出是轉移不成功時,系統對trap指令進行的操作被全部作廢,轉而去執行跳轉到的指令id。
*雙精度浮點加法求和設計*
1、**及注釋
.data
;初始化兩個用於相加的一維向量(雙精度浮點數),向量長度為20
a: .double 1.9, 2.1, 3.7, 4.6, 5.5, 6.4, 7.3, 8.2, 9.1, 10.1,
11.2,12.3,13.4,14.5,15.6,16.7,17.8,18.9,19.0,20.2
b: .double 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.8, 10.9,
11.8,12.7,13.6,14.5,15.4,16.3,17.2,18.1,19.9,20.8
printfformat: .asciiz "the result is \n\n%f\t%f\t%f\t%f\t%f\t%f\t %f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t\n\n"
.align 2
printfpar: .word printfformat
r: .space 200
;r為儲存相加結果的向量空間
.text
.global main
main:
addi r1,r0,0 ;r1計數相加的次數
addui r4,r0,8 ;r4為常數8
loop: ;迴圈計算向量相加結果
subi r2,r1,20 ;r1=20時,跳轉到finish
beqz r2,finish
multu r3,r1,r4;r3為當前分量相對於向量基址的偏移(每個分量佔8b)
ld f0,a(r3) ;取a中第r1個分量
ld f2,b(r3) ;取b中第r1個分量
addd f4,f0,f2 ;相加結果放在f4中
sd r(r3),f4 ;將相加結果放入結果向量r中
addi r1,r1,1 ;下一分量
j loop
finish: ;輸出向量相加的結果
addi r14,r0,printfpar
trap 5
2、程式中出現的資料/控制/結構相關控制相關:
1) beqz r2,finish ;條件跳轉
2) j loop ;無條件跳轉
3) trap 5 ;呼叫5號中斷結構相關:無
資料相關:均為rw相關
1)addi r1,r0,0
subi r2,r1,20
2)subi r2,r1,20
beqz r2,finish
3)multu r3,r1,r4
ld f0,a(r3)
4)ld f2,b(r3)
addd f4,f0,f2
5)addd f4,f0,f2
sd r(r3),f4
3、增加浮點運算部件對效能的影響。
總結:改變幾次浮點運算部件個數後再執行,發現統計結果均相同,增加浮點運算
部件對該函式沒有任何效能方面的改進,這主要是因為函式中沒有連續的浮點加/乘/除指令。
4、增加forward 部件對效能的影響。
forward部件對具體指令執行的影響:
5、轉移指令在轉移成功和轉移不成功時候的流水線開銷。
1)轉移不成功時:順序預取的下條指令可以直接在流水線中執行,保證流水線不斷
流;2)轉移成功時:順序預取的下條指令作廢,需要轉到轉移位址處重新取指,流水線
發生了斷流現象
3)條件轉移指令beqz r2,finish的taken和not taken的統計結果如下:
可見,該轉移指令not taken的情況佔絕大多數(95.42%),實際上,只有一次是taken 的,所以**順序取對流水線的效能是有利的。
六、實驗心得
通過此次實驗我加深了流水線相關的知識,包括:資料/控制/結構相關,功能部件數對流水線的影響,分支指令**技術,forwarding技術,靜態指令排程等等,收穫匪淺。
向量運算的演算法:按照分量順序進行運算。本程式沒有做輸入模組,而是直接在**中初始化了兩個向量,如果要改源向量的話,直接在**中更改即可。
經過解決程式設計中遇到的問題,我對雙精度浮點數的運算也有了初步的掌握:1)要注意所有涉及到double型資料的運算指令,指令**都要加上d來說明,同樣如果是單精度浮點數,要用f來標明;2)dlx中是通過相鄰兩個浮點暫存器奇偶對fifi+1(i=0,2,4 (30)
來儲存雙精度浮點數的,這種組合而成的64 位雙精度浮點暫存器在dlx 中分別被命名為f0,f2…f28,f30,一定要注意只能使用偶數的浮點暫存器。
對浮點數的操作,之前匯程式設計序比較少涉及到浮點數甚至雙精度浮點數操作,通過此次實驗,我了解了dlx中浮點數的相關設定,包括浮點暫存器和浮點狀態暫存器等。
windlx要載入的.s檔案的路徑盡量為英文,剛開始我在做實驗時就是由於路徑中有中文導致不能匯入載入。
計算機體系結構
平行計算 之我見指導老師 陳麗萍 學院 資訊科學與工程學院 班級 計科0908班 姓名 原海南 學號 0909083125 完成日期 2012年5月21日 目錄1.平行計算簡介 1.1什麼是平行計算 1.2為什麼需要平行計算 1.3平行計算的歷史 1.4平行計算的現狀 2.平行計算與網際網路 2.1...
計算機體系結構複習
模擬試題一 課程名稱計算機系統結構適用班級 考試時間 120 分鐘班級學號姓名 一 單項選擇題 本大題共10小題,每小題2分,共20分。在每小題的四個備選答案中選出乙個符合題意的,並將其前面的序號填在題後的括號內。1.按flynn分類法,處理機illiac iv屬於 sisd simd misd m...
計算機體系結構報告
計算機組織與體系結構 實驗報告 實驗名稱 姓名班級 學號實驗一基本運算器實驗 一 實驗目的 1 了解運算器的組成結構。2 掌握運算器的工作原理。二 實驗裝置 pc 機一台,td cma 實驗系統一套。三 實驗原理 本實驗的原理如圖 1 1 1 所示。運算器內部含有三個獨立運算部件,分別為算術 邏輯和...