計算機體系結構DLX處理器程式設計實驗報告

2021-03-04 04:00:57 字數 4373 閱讀 3108

計算機系統結構實驗實驗三 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 所示。運算器內部含有三個獨立運算部件,分別為算術 邏輯和...