第一篇:實驗3 指令調度和延遲分支
實驗3 指令調度和延遲分支
3.1 實驗目的
(1)加深對指令調度技術的理解。(2)加深對延遲分支技術的理解。
(3)熟練掌握用指令調度技術解決指令流水線中的數據沖突的方法。(4)進一步理解指令調度技術對CPU性能的改進。(5)進一步理解延遲分支技術對CPU性能的改進。
3.2 實驗平臺
指令級和流水線操作級模擬器MIPSsim。
3.3 實驗內容和步驟(1)啟動MIPSsim。
(2)進一步理解流水段的構成和各個流水寄存器的功能。(3)選擇“配置”下的“流水方式”,讓模擬器工作于流水方式下。(4)采用指令調度技術解決流水線中的數據沖突。步驟如下:
1)載入程序schedule.s。2)關閉定向功能。
3)執行載入的程序。觀察時鐘周期圖,找出程序執行中各種沖突發生的次數,發生沖突的指令組合以及程序執行的總時鐘周期數。時鐘周期圖如下:
由以上知:RAW數據沖突發生了16次,其中load停頓6次,自陷停頓1次。發生沖突的指令組合: ADDIU $r1,$r0,A LW $r2,0($r1)與上條寫后讀沖突; ADD $r4,$r0,$r2 SW $r4,0($r1)與上條指令寫后讀沖突; LW $r6,4($r1)ADD $r8,$r6,$r1與上條指令寫后讀沖突; MUL $r12,$r10,$r1 ADD $r16,$r12,$r1與上條指令寫后讀沖突; ADD $r18,$r16,$r1 與上條指令組件沖突 SW $r18,16($r1)與上條指令寫后讀沖突;; LW $r20,8($r1)MUL $r22,$r20,$r14與上條指令寫后讀沖突; 程序執行的總時鐘周期數為33。
4)采用指令調度技術對程序進行指令調度,消除沖突。將調度后的指令存到after-schedule.s中。
答:after-schedule.s指令代碼如下:
.text main: ADDIU $r1,$r0,A MUL
$r22,$r20,$r14 LW
$r2,0($r1)MUL
$r24,$r26,$r14 ADD
$r4,$r0,$r2 LW
$r6,4($r1)SW
$r4,0($r1)ADD
$r8,$r6,$r1 MUL
$r12,$r10,$r1 ADD
$r18,$r16,$r1 ADD
$r16,$r12,$r1 SW
$r18,16($r1)LW
$r20,8($r1)TEQ
$r0,$r0.data A:.word 4,6,8 5)載入after-schedule.s。
6)執行程序,觀察程序在流水線中的執行情況,記錄程序執行的總時鐘周期數。
則程序執行的總時鐘周期數為21。
7)根據記錄結果,比較調度前和調度后的性能。論述指令調度對提高CPU性能的作用。
時鐘周期圖:
調度前的執行周期為33,調度后的執行周期數為21。指令調度讓指令順序重新組織順序可以消除部分的數據沖突,指令調度影響CPU性能,通過使用指令調度提高了CPU的使用率,大大減少了指令沖突的次數,提高了CPU性能。(5)采用延遲分支減少分支指令對性能的影響。步驟如下:
1)啟動MIPSsim。2)載入branch.s。
3)關閉延遲分支功能。通過“配置”下取消“延遲槽”選項。4)執行該程序,觀察并記錄發生分支延遲的時刻。
答:分支延遲的時刻為第13個周期。5)記錄該程序執行的總時鐘周期數。
6)
7)8)9)
程序執行的總時鐘周期數為38。
假設延遲槽為一個,對程序進行指令調度,然后保存到delay-branch.s中。delay-branch.s的指令代碼:.text main: ADDI $r2,$r0,1024 ADD
$r3,$r0,$r0 ADDI $r4,$r0,8 loop:
LW
$r1,0($r2)ADDI $r1,$r1,1 ADDI $r3,$r3,4 SUB
$r5,$r4,$r3 SW
$r1,0($r2)BGTZ $r5,loop ADD
$r7,$r0,$r6 TEQ
$r0,$r0 載入delay-branch.s。打開延遲分支功能。
執行該程序,觀察時鐘周期圖。時鐘周期圖:
10)記錄執行該程序的總的時鐘周期數。
程序的總的時鐘周期數為31。
11)對比上述兩種情況下的時鐘周期圖。12)根據記錄,比較沒有采用延遲分支和采用了延遲分支的性能之間的不同。論述延遲分支對CPU性能的作用。
答:比較兩種情況的時鐘周期總數,可知:在使用延遲槽后,指令在運行到跳轉指令時,不會出現延遲等待,則能夠提高CPU的性能。3.4 實驗結論和實驗心得
實驗結論:
從前調度,在任何情況下,被調度的指令必須與分支無關。從目標處調度,當分支成功時,必須保證在分支失敗時執行被調度的指令不會導致錯誤,有可能需要復制指令。延遲可以提高CPU的性能。實驗心得體會:
通過本次實驗,我對指令調度和延遲分支有了進一步的了解和掌握,并掌握了用指令調度技術解決指令流水線中的數據沖突問題的方法。理解了指令調度技術和延遲分支技術對CPU性能的改進。這對我以后的計算機系統結構的學習打下了堅實的基礎,讓我不斷提高,增長了我的知識。
第二篇:電網調度術語和操作指令
電網調度術語和操作指令匯編 調度管理
1.1調度管理范圍
電網設備運行和操作指揮權限的范圍 1.2調度指令
電網調度機構值班調度員(以下簡稱值班調度員)對其下級調度機構值班人員或調度管轄廠、站值班人員(以下簡稱運行值班員)發布有關運行和操作的指令 1.2.1口頭令
由值班調度員口頭下達(無須填寫操作票)的調度指令 1.2.2操作令
值班調度員對所管轄設備進行操作,給下級調度機構或調度管轄廠、站運行值班員發布的有關操作的指令 1.2.2.1單項操作令
值班調度員向運行值班員發布的單一一項操作的指令 1.2.2.2逐項操作令
值班調度員向運行值班員發布的操作指令是具體的逐項操作步驟和內容,要求運行值班員按照指令的操作步驟和內容逐項進行操作。1.2.2.3綜合操作令
值班調度員給運行值班員發布的不涉及其他廠站配合的綜合操作任務的調度指令。其具體的逐項操作步驟和內容,以及安全措施,均由運行值班員自行按規程擬訂。1.3調度同意。
值班調度員對運行值班員提出的工作申請及要求等予以同意。1.4調度許可
設備由下級調度機構管轄,但在進行該設備有關操作前該級值班調度員必須報告上級值班調度員,征得同意。1.5許可操作
在改變電器設備的狀態和方式前,根據有關規定,由有關人員提出操作項目,值班調度員同意其操作。
1.6配合操作申請
需要上級調度機構的值班調度員進行配合操作時,下級調度機構的值班調度員根據電網運行需要提出配合操作申請 1.7配合操作回復
上級調度機構的值班調度員同意下級調度機構的值班調度員提出的配合操作申請,操作完畢后,通知提出申請的值班調度員配合操作完成情況 1.8直接調度
值班調度員直接向運行值班員發布調度指令的調度方式(值班調度員向將要具體執行調度指令的運行值班員發布調度指令的調度方式)1.9調度
1.9.1發布指令
值班調度員正式向調度所屬各運行值班員發布的調度指令 1.9.2接受指令
運行值班員正式接受值班調度員所發布的調度指令 1.9.3復誦指令 運行值班員發布指令或接受匯報時,受話方重復通話內容以確認的過程。1.9.4回復指令
運行值班員在執行完值班調度員發布給他的調度指令后,向值班調度員報告已經執行完調度指令的步驟、內容和時間等 2 調度術語釋疑 2.1開關和刀閘 2.1.1合上開關
使開關由分閘位置轉為合閘位置 2.1.2拉開開關
使開關由合閘位置轉為分閘位置 2.1.3合上刀閘
使刀閘由斷開位置轉為接通位置 2.1.4拉開刀閘
使刀閘由接通位置轉為斷開位置 2.2開關跳閘
未經操作的開關三相同時由合閘轉為分閘位置 2.2.1開關X相跳閘
未經操作的開關X相由合閘轉為分閘位置 2.2.2開關非全相合閘
開關進行合閘操作時只合上一相或兩相 2.2.3開關非全相跳閘
未經操作的開關一相或兩相跳閘 2.2.4開關非全相運行
開關跳閘或合閘等致使開關一相或兩相合閘運行 2.2.5開關X相跳閘重合成功
開關X相跳閘后,又自動合上X相,未再跳閘 2.2.6開關跳閘,三相重合成功
開關跳閘后,又自動合上三相,未再跳閘 2.2.7開關X相跳閘,重合不成功
開關X相跳閘后,又自動合上X相,開關再自動跳開三相 2.2.8開關跳閘,三相重合不成功
開關跳閘后,又自動合上三相,開關再自動跳開
2.2.9開關(X相)跳閘,重合閘未動跳開三相(或非全相運行)開關(X相)跳閘后,重合閘裝置雖已投入,但未動作,XX保護動作跳開三相(或非全相運行)2.3繼電保護裝置 2.3.1將保護改投跳閘
將保護由停用或信號位置改為跳閘位置 2.3.2將保護改投信號
將保護由停用或跳閘位置改為信號位置 2.3.3將保護停用
將保護由跳閘或信號位置改為停用位置 2.3.4保護改跳
由于方式的需要,將設備的保護改為不跳本設備開關而跳其它開關 跳,某開關跳閘時,同時連鎖跳其它開關 2.3.5投入X設備X保護(X段)X設備X保護(X段)投入運行 2.3.6退出X設備X保護(X段)X設備X保護(X段)退出運行 2.3.7X設備X保護(X段)改定值
X設備X保護(X段)整定值(阻抗、電壓、電流、時間等)從某一定值改為另一定值 2.3.8高頻保護測試通道
高頻保護按規定進行通道對試 2.4合環、解環 2.4.1合環
合上網絡內某開關(或刀閘)將網絡改為環路運行 2.4.2同期合環 檢測同期后合環
2.4.3解除同期閉鎖合環 不經同期閉鎖直接合環 2.4.4差30度合環
網絡經結線相位角度差30度的變壓器組合環 2.4.5解環
將環狀運行的電網,解為非環狀運行 2.5并列、解列 2.5.1核相
用儀表或其它手段對兩電源或環路相位檢測是否相同 2.5.2核對相序
用儀表或其它手段,核對兩電源的相序是否相同 2.5.3相位正確
開關兩側A、B、C三相相位均對應相同 2.5.4并 列
兩個單獨電網使其并為一個電網運行 2.5.5解 列
將一個電網分成兩個電氣相互獨立的部分運行 2.6線 路
2.6.1線路強送電
線路開關跳閘后未經處理即行送電 2.6.2線路強送成功
線路開關跳閘后未經處理即行送電,開關未再跳閘 2.6.3線路強送不成功
線路開關事故跳閘后未經處理即行送電,開關再跳閘 2.6.4線路試送電
線路事故跳閘經處理后的首次送電 2.6.5線路試送成功
線路事故跳閘經處理后首次送電正常 2.6.6線路試送不成功
線路事故跳閘處理后首次送電,開關再跳閘 2.6.7按單電源負荷線路處理 原為雙電源或環路,另一電源解列或環路開環后變成單電源負荷線路,線路故障開關跳閘后的處理,按調度規程中有關負荷線路故障,開關跳閘的處理規定進行處理
第三篇:實驗二分支程序 豆丁
微機《實驗》報告
實驗名稱 分支程序設計實驗
指導教師 曹 丹 華
專業班級 光電1007班 姓名 余 冬 學號 U201013524 序號 16 聯系方式 ***
一、任務要求
1.設有8bits符號數X存于外部RAM單元,按以下方式計算后的結果Y也存于外部RAM單元,請按要求編寫程序。
?X2當X?40?Y??X/2當20?X?40
?當X?20?X2.利用51系列單片機設計一個24小時制電子時鐘,電子時鐘的時、分、秒數值分別通過P0、P1、P2端口輸出(以壓縮BCD碼的形式)。P3.0為低電平時開始計時,為高電平時停止計時。提高部分(選做):
a.實現4位十進制加、減1計數,千位、百位由P1口輸出;十位、個位由P2口輸出。利用P3.7狀態選擇加、減計數方式。
b.利用P3口低四位狀態控制開始和停止計數,控制方式自定。
二、設計思路
任務1:將位于2000H中的X取出,判斷是否為負數,若為負數,則對X按位取反,結果送入3000H單元。若為正數,則將X的值與40比較,若大于等于40,則將X平方后的結果送入3000H低字節和高字節單元中。若X小于40,則將X的值與20比較,若X>20,則將除以2后存入3000H單元。否則對X按位取反,結果送入3000H單元。
其中,按位取反使用CPL指令實現:除以2運算使用2進制位帶左移實現:平方運算使用MUL指令實現。并且平方運算后的結果用2個存儲單元保存。任務2:
先將P2、P1和P0端口置0,注意P0沒有鎖存功能,用R5存儲P0的內容,并將R5也置0.然后根據P3.0的值來判斷是否開始計時,計時開始后等待一秒,而后P2加1,判斷P2與60的大小,若P2小于60,則重新判斷P3.0的值來決定是否開始計時。若P2等于60,則將P2置0,同時P1加1.再判斷P1與60的大小,若小于60,則重新看P3.0的值是否開始計時。若P1等于60,則將P1置0,同時R5加1后將其值賦給P0。再判斷R5與24的大小,若R5小于24,則重新判斷P3.0的值來看是否開始計時。若R5等于24,則將置1后將其值賦給P0。等待一秒后又再次判斷P3.0的值,目的是保證當改變P3.0后程序能立即做出反應。
三、資源分配
1.2000H:存入8bits符號數X 3000H、3001H:保存計算后的結果 DPTR:對片外RAM進行讀寫操作 R1:減法運算時保存A的值 2.R5:暫時存儲P0端口的值
R0、R1、R2、R3、R4:為實現延時一秒而指定操作的周期數 P0、P1、P2:分別輸出時、分、秒數值 P3:起計時控制作用
四、流程圖1、2.五、源代碼(含文件頭說明、資源使用說明、語句行注釋)1.M EQU 10H ORG 0000H LJMP MAIN ORG 0100H MAIN:MOV DPTR,#2000H MOV A,#10H
MOVX @DPTR,A;MOVX A,@DPTR
JB ACC.7,LOOP2 MOV R1,A
CLR C
SUBB A,#40H
MOV A,R1
JC LOOP1
MOV B,A MUL AB
MOV DPTR,#3000H MOVX @DPTR,A
MOV A,B INC DPTR MOVX @DPTR,A
DONE:SJMP DONE LOOP1:MOV R1,A
CLR C SUBB A,#20H
MOV A,R1
JC LOOP2
JZ LOOP2
CLR C
RRC A
將初始值存入2000H單元
;從2000H單元讀出M的值
;判斷M是否為負,若為負,跳轉LOOP2;暫時保存A的值
;將M的值與40進行比較;將減法運算之前的值再賦給A;若M的值小于40,跳轉LOOP1
;進行M的平方運算
;低位存入3000H單元
;高位存入3001H單元;暫時保存A的值
;將M的值與20進行比較;將減法運算之前的值再賦給A;若M小于20,跳轉LOOP2;若M等于20,跳轉LOOP2;進行除了操作 OVER:MOV DPTR,#3000H MOVX @DPTR,A SJMP DONE
;字節取反
;將結果存于3000H單元
LOOP2:CPL A
SJMP OVER END
2、ORG 0000H LJMP MAIN ORG 0300H MAIN:MOV P2,#00H;將P2端口置0 MOV P1,#00H MOV P0,#00H MOV R5,#00H
;將P1端口置0;將P0端口置0
;將P0端口的暫時存儲器置0 START:JB P3.0,START;判斷P3.0是否為0,若為0,則向下執行 LCALL DELAY;調用延時子程序 HERE: JB P3.0,HERE MOV A,P2
ADD A,#01H DA A MOV P2,A MOV A,P1 ADD A,#01H DA A MOV P1,A CLR C SUBB A,#60H JC LOOP2 MOV P1,#00H MOV A,R5 ADD A,#01H
;將秒鐘值加強,并作十進制修正
DA A MOV R5,A MOV P0,R5 CLR C SUBB A,#24H
JC LOOP3 MOV R5,#00H MOV P0,R5 MOV R0,#13 DELAY9:NOP NOP DJNZ R0,DELAY9 AJMP START LOOP3:MOV R0,#13 DELAY8:NOP NOP
DJNZ R0,DELAY8 NOP NOP NOP LJMP START LOOP2:MOV R0,#16 DELAY7:NOP
NOP DJNZ R0,DELAY7 NOP NOP NOP AJMP START LOOP1:MOV R0,#19H DELAY6:NOP NOP
DJNZ R0,DELAY6 NOP AJMP START DELAY:MOV R2,#6H DELAY3:MOV R1,#255 DELAY2:MOV R0,#255 DELAY1:NOP
NOP NOP DJNZ R0,DELAY1 DJNZ R1,DELAY2 DJNZ R2,DELAY3 MOV R4,#58 DELAY5:MOV R3,#255 DELAY4:NOP DJNZ R3,DELAY4
DJNZ R4,DELAY5 RET END
六、程序測試方法與結果、軟件性能分析 1.a.賦值X為-2,截圖如下 :
B.賦值X為16,截圖如下:
C.賦值X為22,截圖如下:
D.賦值X為42,截圖如下:
2.第一步,當程序剛開始運行的時候,時分秒全部清零,如下圖:
第二步,當秒向分進位時,前后對比如下:
運行前
運行后 由上可以看出前后剛好延時一秒。
第三步,當分向時進位時,前后對比如下:
運行前
運行后
由上可以看出分向時進位時,前后延時一秒。第四步,到23:59:59時,運行前后如下:
運行前
運行后
由上也可以看出,分向時進位也延時一秒。綜上,軟件性能良好。
七、思考題
1.實現多分支結構程序的主要方法有哪些?舉例說明、答:若分支比較少,則通常用條件轉移指令來實現。
例如,判斷兩個單字節無符號數的大小,分別存于片內RAM的40H和41HUJ單元)并把人數存入單元。可以用判斷CY的轉移指令來實現,程序如下: JUDGE: MOM A,40H CLR C SUBB A,41H JNC LP MOV 42H,41H RET LP:MOV 42H RET 若分支比較多,則可采用的有三種形式:分支地址表、轉移指令表、地址偏移量表。具體例子不詳述。
2.在編程上,十進制加1計數器與十六進制加1計數器的區別是什么?怎樣用十進制加法指令實現減1計數?
答:十進制加法1計數器進行加1操作時,每加一次1,就得將每一字節進行十進制修正;而十六進制加法是相當于單字節或多字節的加法運算,其中被加數是計數器的當前值,加數始終是1.十進制加法進行減1計數時,應該將計數器的當前值與-1的補碼FFH相加,然后將每一字節進行修正,從而實現十進制減1計數。
八、心得
本次實驗遇到的問題包括時鐘的程序設計和流程圖的繪制。看出來,單片機的基礎知識還沒掌握好,應復習相應的課件,補充缺陷的地方。下次實驗再繼續努力。說明:
標題:黑體,小四號
正文:宋體,五號,1.5倍行距
流程圖使用 SmartDraw7
或Visio軟件繪制
第四篇:單片機實驗9 多分支程序設計
實驗9 多分支程序設計
1、實驗內容
用P1.0、P1.1控制流水燈的變化
P1.0、P1.1=00燈全滅
P1.0、P1.1=01單燈亮左循環
P1.0、P1.1=10單燈亮右循環
P1.0、P1.1=11雙燈亮左循環
燈亮的時時為1秒。用軟件延時實現。*用T0定時選作。
2、實驗步驟
1)打開PV32編程序。匯編正確進入調試界面。否則修改程序重新匯編直到通過。
2)打開P0、P1窗口給
3)調試燈全滅、單燈亮左循環、單燈亮右循環、雙燈亮左循環程序觀察并記祿寄存器、內存的變化。判斷程序是否正確。若發現問題重返編輯界面,修改、存盤、匯編。返回調試界面調試通過。
4)設斷點調試主程序觀察并記祿寄存器、內存的變化。判斷程序是否正確。若發現問題重返編輯界面,修改、存盤、匯編。返回調試界面調試通過。
首先將P1.0、P1.1置00觀察P2窗口燈是否全滅,然后改變P1.0、1.1的設置觀察流水燈運行是否正確。
5)流水燈運行中改變P1.0、1.1看流燈能否隨之變化。若執行正確程序通過。否則在每個流水子程序中加入讀P1口散轉子程序。
3.實驗報告
1.寫出主程序流程圖、子程序流程圖、程序清單
2.根據記淥數據給程序加注解
3.調試心得
第五篇:基本邏輯指令綜合設計實驗
實驗六 基本邏輯指令綜合設計實驗
一、實驗目的:
1.在掌握邏輯指令的基本應用基礎上,通過綜合設計實驗的訓練,達到提高綜合分析問題、解決問題能力的目的。
2.通過程序的調試,進一步掌握PLC的編程技巧和編程調試方法。
3.以工程應用為出發點,強化學生的工程意識。
二、實驗設備:
PLC實驗臺:主機掛件(西門子S7-300 PLC)、基本邏輯指令實驗掛件、繼電器掛件、直線運動模塊、PC機、連接導線
三、預習內容:
1.熟悉西門子STEP 7編程軟件的使用方法。
2.熟悉西門子S7-300 PLC的基本位設備:I、Q、M、T、C。3.熟悉基本邏輯指令的編程方法。4.熟悉典型繼電器控制電路。
5.了解PLC設計控制系統的基本方法和步驟。
6.本次實驗為一般設計類實驗,要求學生在實驗前根據具體內容完成以下任務:(1)確定輸入/輸出信號
(2)分析控制要求,簡單畫出PLC電氣原理圖(按實驗內容要求)(3)編寫PLC(梯形圖)程序
(4)寫出程序調試步驟(5)寫出程序運行結果
四、實驗步驟:
1.電路連接好后經指導教師檢查無誤,并將RUN/STOP開關置于STOP后,接入220V交流電源.2.在PC機啟動西門子STEP 7編程軟件,新建工程,進入編程環境。
3.根據實驗內容,在STEP 7編程環境下輸入梯形圖程序,轉換后,下載到PLC中。4.程序運行調試并修改。5.寫實驗報告。
五、實驗內容:
1.小車往復運動控制程序
本程序是以檢測為原則,實現PLC順控 系統設計。
(1)控制要求:
小車在初始狀態時停在中間,限位開關 I0.0=ON;按下啟動按鈕I0.3,小車按圖4.1所示
圖4.1 小車往復運動示意圖
順序往復運動,按下停止按鈕I0.4,小車停在初始位置(中間)(2).設計指導:
① 該程序為電動機正、反轉控制的具體工程應用。② 該程序的關鍵問題:按下停止按鈕時,小車并不是立即停止,而是要回到原位(中間位置)才停,所以要對停止信號加自鎖保持,小車回到原位后再清除停止信號。2.電動機Y-△降壓啟動控制程序
本程序是用PLC改造典型繼電器電路的應用(1)控制要求:
圖4.2所示為籠型異步電動機Y-Δ降壓起動繼電接觸器控制系統圖,寫出系統工作流程,設計用PLC改造后的電氣原理圖和控制程序。
(2)設計指導:
圖4.2 電動機Y-△降壓啟動電路
① 該程序為電動機降壓啟動控制的具體工程應用,學生先分析圖4.2后,確定輸入/輸出信號,畫PLC電氣原理圖。
② 該程序的關鍵問題:程序中要考慮PLC的工作方式與繼電器控制系統不同,PLC沒有先斷后合的概念,所以在實際工程應中,PLC編程時要人為加入切換延時,即電動機Y形接法運行一段時間后,切除Y形接法的接觸器線圈后延時一點時間(2秒)后,再接通電動機△形接法的接觸器線圈,使電動機全壓運行。定時器的編程學生可參考本書實驗二中的相關內容進行設計
六、實驗報告
本次實驗為綜合設計型實驗,要求學生在實驗前加強預習,實驗過程中重點是運行、調試及修改自己設計的程序。本次實驗報告的內容主要是:
1.實驗目的:本次實驗主要達到的要求及目的。
2.實驗設備:本次實驗的主要設備。
3.預習內容:預習本次實驗內容后,按實驗內容畫出PLC電氣原理圖、PLC梯形圖程序以及程序調試步驟。
4.實驗具體步驟:重點寫程序的運行、調試、修改的過程。
5.實驗程序上機驗證:寫出運行后得到的結果,并分析與預習中的結果是否相同 6.心得體會:本次實驗中遇到的問題、解決方法及收獲。
注:本次實驗為綜合設計型實驗,要求學生的實驗報告中必須畫出PLC電氣原理圖、以及寫出最終的梯形圖程序。