计算机系统结构结构相关实验报告,计算机系统结构实验报告(中南民族大学).doc...
計算機系統(tǒng)結(jié)構(gòu)實驗報告(中南民族大學).doc
院 系 專 業(yè) 年 級 課程名稱 計算機系統(tǒng)結(jié)構(gòu) 學 號 姓 名 指導(dǎo)教師 年 月 日年級班級學號專業(yè)計算機科學與技術(shù)姓名題目名稱矩陣相乘題目內(nèi)容1. 掌握DLX的流水線運行分析,包括流水線單步執(zhí)行、每個流水段功能、理解流水線停頓、流水線建立和排空、定向技術(shù)。掌握調(diào)整DLX參數(shù),如內(nèi)存大小、功能單元個數(shù)、延遲,分析對程序運行的影響。2. 編寫計算矩陣相乘的程序,掌握調(diào)試方法。實驗結(jié)果與分析圖一.運行結(jié)果使用4d來控制輸出的齊實驗結(jié)果與分析圖二.寄存器圖三.流水線實驗結(jié)果與分析圖四.內(nèi)存代碼圖五.內(nèi)存查看實驗結(jié)果與分析圖六.內(nèi)存查看結(jié)果圖七.內(nèi)存修改實驗結(jié)果與分析圖八.內(nèi)存修改結(jié)果圖九.向量使用結(jié)果圖十.未使用向量的結(jié)果實驗結(jié)果與分析圖十一.程序流程實驗結(jié)果與分析圖十二.算法設(shè)計圖實驗結(jié)果與分析實驗結(jié)果分析 本次實驗中,學會使用DLX軟件,對于其匯編代碼有一個整體上的認識。具體有如下幾個小點(1)熟悉DLX的仿真硬件系統(tǒng)結(jié)構(gòu),包括寄存器、計算功能單元、指令系統(tǒng)、流水線。(2)熟悉DLX仿真軟件的功能,包括主要的功能界面。(3)掌握DLX應(yīng)用程序的編程和調(diào)試技術(shù)。(4)掌握DLX的流水線運行分析,包括流水線單步執(zhí)行、每個流水段功能、理解流水線停頓、流水線建立和排空、定向技術(shù)。(5)掌握調(diào)整DLX參數(shù),如內(nèi)存大小、功能單元個數(shù)、延遲,分析對程序運行的影響 通過編寫矩陣相乘來檢驗掌握的程度,對與在其中出現(xiàn)的問題進行分析,和解決。能通過單步執(zhí)行來調(diào)試程序,找出出錯點和邏輯錯誤點,并加以改正。 在實驗中,幾個重點難點。首先是從主程序中跳Unsigned函數(shù)中,對于參數(shù)的傳遞要有一個清楚的認識。其次是,對于系統(tǒng)自陷trap要有一個認識,如trap 0是結(jié)束、trap 3是輸入和trap 5是輸出,當然也有傳遞的參數(shù)也是重點分別是r1和r14。 對于向量的使用也有一個初步的認識,當使用向量時,程序的流水線明顯比不適用向量快的多,結(jié)果的截圖也很清楚的說明了這個問題。程序代碼.data ;* Prompts for ;輸入提示部分A .space 64B .space 64C .space 64Prompt1 .asciiz 輸入A矩陣的行Prompt2 .asciiz 輸入A矩陣的列和B矩陣的列 Prompt3 .asciiz 輸入B矩陣的列Prompt4 .asciiz 輸入A矩陣元素rPrompt5 .asciiz 輸入A矩陣元素 ;* Data for printf-Trap ;輸出數(shù)據(jù)設(shè)置部分Printfat.asciiz d .align2PrintfPar.wordPrintfatPrintfValue .space4Printfat1.asciiz n .align2PrintfPar1.wordPrintfat1Printfat_1.asciiz n .align2PrintfPar_1.wordPrintfat_1PrintfValue1.space4Printfat2.asciiz 輸出A矩陣n .align2PrintfPar2.wordPrintfat2PrintfValue2.space4Printfat3.asciiz 輸出B矩陣n .align 2PrintfPar3.wordPrintfat3PrintfValue3.space4Printfat4.asciiz 輸出C矩陣n .align2PrintfPar4.wordPrintfat4PrintfValue4.space4.text.globalmain程序代碼main addi r1,r0,Prompt1 jal Unsigned movi2fp f1,r1 ;矩陣A的行數(shù) addi r1,r0,Prompt2 jalUnsigned movi2fp f2,r1 ;矩陣A的列數(shù),矩陣B的行數(shù) addi r1,r0,Prompt3 jal Unsigned movi2fp f3,r1 ;矩陣B的列數(shù) movfp2i r8,f1 movfp2i r6,f2 multu r4,r6,r8 ;總的矩陣A的元素個數(shù)r4 addi r2,r10,A ;指向A的首地址 loop1 add r1,r0,Prompt4 ;分別讀入矩陣A的元素值 jal Unsigned sb 0r2,r1 ;儲存字節(jié),讀入元素 addi r2,r2,1 ;元素個數(shù)加一 sub r4,r4,1 ;總的矩陣元素個數(shù)r4減一 bnez r4,loop1 ;r4不為0時跳轉(zhuǎn)重復(fù)輸入 addi r10,r0,0 ;分別讀出矩陣A的元素值 addi r2,r10,A ;指向A的首地址 sw PrintfValue2,r1 addir14,r0,PrintfPar2 trap 5 loopA lbu r1,0r2 sw PrintfValue,r1 addi r14,r0,PrintfPar ;換行 trap 5 addi r2,r2,1 ;元素個數(shù)加一 sub r6,r6,1 ;矩陣A的列數(shù)r6減一 beqz r6,outputA ;矩陣A的列數(shù)r6等于0時跳到outputA j loopA ;否則繼續(xù)loopA outputA swPrintfValue1,r1 addir14,r0,PrintfPar1 trap 5 sub r8,r8,1 ;矩陣A的行數(shù)r8減一 beqz r8,countiuB ;矩陣A的行數(shù)r8等于0時跳到countiuB movfp2i r6,f2程序代碼j loopA ;否則繼續(xù)loopA countiuB addir14,r0,PrintfPar_1 trap 5 movfp2i r6,f2 movfp2i r12,f3 addi r10,r0,0 multu r4,r6,r12 ;總的矩陣B的元素個數(shù)r4 addi r2,r10,B ;指向B的首地址 loop2 addi r1,r0,Prompt5 ;分別讀入矩陣B的元素值 jal Unsigned sb 0r2,r1 ;儲存字節(jié),讀入元素 addi r2,r2,1 ;元素個數(shù)加一 sub r4,r4,1 ;總的矩陣元素個數(shù)r4減一 bnez r4,loop2 ;r4不為0時跳轉(zhuǎn)重復(fù)輸入 addi r10,r0,0 ;分別讀出矩陣B的元素值 addi r2,r10,B ;指向B的首地址 swPrintfValue3,r1 addir14,r0,PrintfPar3 trap 5 loopB lbu r1,0r2 swPrintfValue,r1 addi r14,r0,PrintfPar ;換行 trap 5 addi r2,r2,1 ;元素個數(shù)加一 sub r12,r12,1 ;矩陣B的列數(shù)r12減一 beqz r12,outputB ;矩陣B的列數(shù)r12等于0時跳到outputB j loopB ;否則繼續(xù)loopB outputB sw PrintfValue1,r1 addi r14,r0,PrintfPar1 trap 5 sub r6,r6,1 ;矩陣B的行數(shù)r6減一 beqz r6,countiue ;矩陣B的行數(shù)r6等于0時跳到countiu movfp2i r12,f3 j loopB ;否則繼續(xù)loopB程序代碼countiue addi r11,r0,0 ;temp,表示矩陣C的一個元素的累加器 addi r4,r0,0 ;r 初始化矩陣C的偏移量 addi r5,r0,0 ;矩陣A當前被掃描的行號 line movi2fp f4,r5 ;判斷是否掃描完 ltf f4,f1 ;f4f1跳轉(zhuǎn)(矩陣A的行是否掃描完) bfpf finish ;是,則跳轉(zhuǎn)結(jié)束程序 addi r6,r0,0 ;col,r6表示當前B矩陣的列號 column movi2fp f4,r6 ltf f4,f3 ;col(f3)f4,矩陣B的列是否掃描完 bfpf leveladd ;是,則跳到矩陣A的下一行 movfp2i r1,f2 multu r10,r5,r1 ;i-l*n,r10表示矩陣A當前行的第一個元素的索引 addi r7,r6,0 ;mov col to j(矩陣B某一列的某個元素的索引) addi r11,r0,0 ;temp0,矩陣C當前的元素值的初始化 addi r9,r5,1 ;r9-l1,r9代表矩陣A當前數(shù)組中的實際行號(r5的初值為0) movfp2i r1,f2 ;f2是矩陣A的列數(shù) multu r9,r1,r9 ;p-n*l1,r9代表矩陣A當前行中最后一個元素在數(shù)組中的索引 calculate movi2fp f4,r10 movi2fp f9,r9 ltf f4,f9 ;compare i to pz(判斷是否計算到當前行的最后一個元素) bfpf asign ;當前行列相乘完畢,得出結(jié)果矩陣C的一個元素(跳轉(zhuǎn)賦值) addi r1,r10,A ;取矩陣A當前元素在內(nèi)存區(qū)域中的地址 lbu r2,0r1 ;從r1所指向的內(nèi)存單元中取出矩陣A當前的元素暫存在r2 addi r1,r7,B ;取矩陣B當前元素在內(nèi)存區(qū)域中的地址 lbu r3,0r1 ;從r1所指向的內(nèi)存單元中取出矩陣B當前的元素暫存在r3 multu r1,r2,r3 ;temp1-AiBj add r11,r11,r1 ;temp-temptemp1,累加到累加器 addi r10,r10,1 ;i,計算矩陣A當前行的下個元素的索引 movfp2i r1,f3 add r7,r7,r1 ;j-jk,計算矩陣B的當前列的下個元素的索引 j calculate 程序代碼asign addi r1,r4,C ;r1表示矩陣C當前的地址 sb 0r1,r11 ;store C,把新計算出來的元素放入當前內(nèi)存單元 addi r4,r4,1 ;賦值完一個元素,偏移量自增1 addi r6,r6,1 ;矩陣B的當前列數(shù)自增1 j column ;矩陣B新的一列開始 leveladd addi r5,r5,1 ;矩陣A當前行自增1 j line ;矩陣A新的一行開始 finish addi r10,r0,0 ;分別讀出矩陣C的元素值 movfp2i r8,f1 movfp2i r12,f3 addi r2,r10,C sw PrintfValue4,r1 addir14,r0,PrintfPar_1 trap 5 addi r14,r0,PrintfPar4 trap 5 loop3 lbu r1,0r2 sw PrintfValue,r1 addi r14,r0,PrintfPar trap 5 addi r2,r2,1 sub r12,r12,1 beqz r12,outputC j loop3 outputC sw PrintfValue1,r1 addi r14,r0,PrintfPar1 trap 5 sub r8,r8,1 beqz r8,end movfp2i r12,f3 j loop3 ;* end end trap 0心得體會成績評定教師簽名 年 月 日
總結(jié)
以上是生活随笔為你收集整理的计算机系统结构结构相关实验报告,计算机系统结构实验报告(中南民族大学).doc...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机二级报名学校白名单,干货丨2021
- 下一篇: 部署虚拟服务器,把网站部署到虚拟服务器