計算機組成原理學習
課程設計報告測試
成員:許愷 2014011329編碼
胡強勇 2014011315spa
時間:2016.12.20設計
一.簡要總結計算機組成原理實驗接口
計算機組成原理實驗總共五個實驗,首先咱們熟悉了教學機的使用方法,後面的實驗咱們分爲運算器、存儲器、控制器,控制器分爲兩次實驗。緊接的第二次實驗咱們就進行了運算器的實驗,對運算器的內部構造極其原理進行了驗證理解,在這裏咱們學習了運算器ALU的8種運算功能,以及其通用寄存器組,以及運算器的編碼指令和每部分的做用。而後,咱們第三次實驗對咱們課上所學的存儲器進行了實驗驗證,按照書上的步驟進行了內存擴展,在此次實驗中咱們瞭解了存儲器的功能、組織以及靜態存儲器芯片的讀寫原理,經過實驗對字擴展和位擴展有了理解和掌握。第四次和第五次實驗都是關於微程序控制器的實驗,這部分咱們先學習了不少圖表,都是和微程序控制相關的,經過這些和實驗,咱們理解了控制器的功能和組成,理解了各種典型指令的執行流程,對指令格式、尋址方式、指令系統、指令分類有了系統的概念,還讓咱們學會了指令的設計以及相關技術。在這一部分,實驗主要以教學機爲基礎來進行,經過讓咱們本身學習研究指令代碼並進行設計來讓咱們對課本進行實踐,讓咱們,看懂、理解、會寫、會設計指令代碼。計算機就是由運算器、存儲器、控制器以及I/O組成的,接口部分有專門的課程,因此咱們的計算機組成原理實驗就從前三方面對咱們的理論知識進行實踐教學,主體重點清楚明瞭,實驗難易結合,有單步驗證也有綜合設計,對咱們的動手和設計能力有極大的提升。內存
二.回答下列問題table
1.微程序中的微指令是順序執行的嗎?下地址是如何產生的?class
1)不是。通常的微指令格式由操做控制和順序控制兩部分構成。操做控制部分用來發出管理和指揮全機工做的控制信號。其順序控制部分用來決定產生下一個微指令的地址。基礎
2)有兩種方式
①計數器的方式:
微程序順序執行時,其後繼微地址就是現行微地址加上一個增量(一般爲1);
當微程序遇到轉移或轉子程序時,由微指令的轉移地址段來造成轉移微地址。
特色:
優勢:簡單、易於掌握,編制微程序容易
缺點:這種方式不能實現兩路以上的並行微程序轉移,於是不利於提升微程序的執行速度。
②多路轉移的方式:
轉移條件:
①操做碼
②狀態條件及測試
③微指令中下地址
2.根據實驗,哪些微指令是全部機器指令都要用到的?爲何要這樣設計?
答:加電啓動(1條):0->PC,DI#=0;
取指(3條):PC->AR,PC+1->PC;
MEM->DR;
DR->IR;
執行完畢(2條):STR->Q、CC#=INT#;
PC->AR、PC+1->PC
由於這些指令都屬於公操做。所謂公操做,就是一條指令執行完畢後,CPU所開始進行的操做,這些操做主要是CPU對外圍設備請求的處理,如中斷處理、通道處理等。因爲全部的指令的取指週期是徹底同樣的,所以,取指令也可認爲是公操做。
3.一條機器指令與一段微指令相對應,完成這條機器指令的微程序的各條微指令存放在控制存儲器中,存放這些微指令的微地址是否連續,爲何?
答:不連續。由於微指令執行的順序控制問題,就是如何肯定下一條微指令的地址問題。一般,產生後繼微地址有兩種方法。分別是計數器方式和多路轉移方式。而這兩種方式產生的下一條微指令的地址都不必定連續。
4.設計!
1)指令設計(題目要求)
指令設計:
指令:SBB
指令格式:16位一個字長
功能:DR-SR-CF->DR
微程序地址映射:指令編碼 00100001->51
選擇寄存器:目的寄存器R0,源寄存器R1
指令存儲格式:2101
微程序與32位微碼:
01:PC->AR,PC+1->PC; 8D05505E
02:MEM->IR; 20800008
03:/MAP; 80800000
51:DR-SR-CF->DR; 30 0011 0000 100 001 011 001 0000 0001 001 010 000 000
30:STR->Q,CC#=INT#; 9C000003
31:PC->AR,PC+1->PC,CC#=0; 8D05505E
指令設計:
指令:STRX DR,OFFSET[SR]
指令格式:16位兩個字長
功能:PC->AR,PC+1->PC,MEM+SR->AR,CC#=0,DR->MEM
微程序地址映射:指令編碼11100110->61
選擇寄存器:不用
指令存儲格式:E601
微程序與32位微碼:
01:PC->AR,PC+1->PC; 8D05505E
02:MEM->IR; 20800008
03;/MAP; 80800000
61:PC->AR,PC+1->PC;00 1110 0000 100 011 010 000 0101 0101 000 001 011 000
62:MEM+SR->AR,CC#=0;00 1110 0000 001 101 011 000 0000 0000 000 000 011 000
63:DR->MEM; 30 0011 0000 000 100 001 000 1000 0000 000 000 000 001
30:STR->Q,CC#=INT#; 9C000003
31:PC->AR,PC+1->PC,CC#=0; 8D05505E
指令設計:
指令:JMPR
指令格式:16位一個字長
功能:JMPR SR
微程序地址映射:指令編碼01100000->5A
選擇寄存器:源寄存器R0
指令存儲格式:6000
微程序與32位微碼:
01:PC->AR,PC+1->PC
02:MEM->IR
03:/MAP
5A: SR->PC,CC#=0 30 0011 0000 100 100 011 000 0101 0000 000 000 000 000
30:STR->Q,CC#=INT#
31:PC->AR,PC+1->PC,CC#=0
指令設計:
指令:CALR
指令格式:16位兩個字長
功能:調用SR指明的子程序
微程序地址映射:指令編碼11100000->64
肯定轉移
指令存儲格式:E000
微程序與32位微碼:
01:PC->AR,PC+1->PC;
02:MEM->IR;
03:/MAP
64:SP-1->SP、AR; 00 1110 0000 100 011 011 001 0100 0000 000 001 011 000
65:PC->MEM; 00 1110 0000 000 100 001 000 0000 0101 000 000 000 001
66:SR->PC、CC#=0; 30 0011 0000 100 100 011 000 0101 1000 000 000 000 000
30:STR->1,CC#=INT#; 9C000003
31:PC->AR,PC+1->PC; 8D05505E
指令設計:
指令:ADC
指令格式:16位一個字長
功能:DR+SR+C->DR
微程序地址映射:指令編碼00100000->50
選擇寄存器:目的寄存器R0,源寄存器R1
指令存儲格式:2001
微程序與32位微碼:
01:PC->AR,PC+1->PC
02:MEM->IR
03:/MAP
50:DR+SR+CF->DR 30 0011 0000 100 001 011 000 0000 0001 001 010 000 000
30:STR->Q,CC#=INT#
31:PC->AR,PC+1->PC,CC#=0
指令設計:
指令:STC
指令格式:16位一個字長
功能:C=1
微程序地址映射:指令編碼01101101->57
指令存儲格式:6D00
微程序與32位微碼:
01:PC->AR,PC+1->PC
02:MEM->IR
03:/MAP
57:STC,CC#=0 30 0011 0000 100 011 001 000 0000 0000 100 000 000 000
30:STR->Q,CC#=INT#
31:PC->AR,PC+1->PC,CC#=0
指令設計(拓展)
指令設計:
指令:RCL DR
指令格式:16位一個字長
功能:DR帶進位C循環左移
微程序地址映射:指令編碼00101010->54
所用寄存器:源寄存器R0
指令存儲格式:2A00
微程序與32位微碼:
01:PC->AR,PC+1->PC;
02:MEM->IR;
03:/MAP;
54:DCL DR; 30 0011 0000 100 011 111 000 0000 0000 110 101 000 000
30:STR->Q,CC#=INT#;
31:PC->AR,PC+1->PC,CC#=0;
指令設計:
指令:IRET
指令格式:16位一個字長
功能:中斷返回
微程序地址映射:指令編碼11101111->67
所用寄存器:無
指令存儲格式:EF00
微程序與32位微碼:
01:PC->AR,PC+1->PC;
02:MEM->IR;
03:/MAP;
67:SP->AR,SP+1->SP; 00 1110 0000 100 011 010 000 0000 0100 000 001 011 000
68:MEM->STR、CC#、INTOLD#; 30 0011 0000 001 111 001 000 0000 0000 000 000 100 000
30:STR->Q,CC#=INT#;
31:PC->AR,PC+1->PC,CC#=0;
指令設計:
指令:NOT
指令格式:16位一個字長
功能:DR<-/DR
微程序地址映射:指令編碼00101101->52
選擇寄存器:目的寄存器R0
指令存儲格式:2D00
微程序與32位微碼:
01:PC->AR,PC+1->PC;
02:MEM->IR;
03:/MAP;
52:/DR->DR; 30 0011 0000 100 011 011 111 0000 0000 001 000 000 000
30:STR->Q,CC#=INT#;
31:PC->AR,PC+1->PC,CC#=0;
指令設計:
指令:STRA [ADR],SR
指令格式:16位兩個字長
功能:[ADR]<-SR
微程序地址映射:指令編碼11100111->5F
選擇寄存器:目的寄存器R0
指令存儲格式:E701
微程序與32位微碼:
01:PC->AR,PC+1->PC;
02:MEM->IR;
03:/MAP;
5F: PC->AR,PC+1->PC; 60 1110 0000 100 011 010 000 0101 0101 000 001 011 000
60:MEM->AR; 30 0011 0000 001 111 001 000 0000 0000 000 000 011 000
30:STR->Q,CC#=INT#;
31:PC->AR,PC+1->PC,CC#=0;
2)錯誤和遇到的問題以及解決
指令設計中出現了不少錯誤和問題,咱們說一下遇到的問題和錯誤以及解決。
解答:SST標誌位問題,對標誌位無影響時使用000;對標誌位產生影響時用001;想 經過標誌位直接輸出0或1時用011或100;RAM0表示將16位最低位放進標誌位;同 理RAM15表示將最高位放到標誌位,在移位時使用;Q0指將Q寄存器的最低位放到標 志位,用法不詳。
解答:沒什麼區別,若是若是須要輸出給運算寄存器,則須要用B;若是須要直接從A輸出,則用A。
解答:Q寄存器是一個乘商寄存器,當運算涉及乘除法時,會使用Q寄存器,其餘狀況爲通用寄存器同AB;D寄存器一般用於有內存讀的時候,表明了內存和內存的一些指令,實驗書上未詳細介紹。
解答:中斷向量的低位指中斷向量16位的低四位,將其送到內部總線判斷指令是否產生中斷。(DC1中的000約等於111,沒什麼做用。)
解答:CC#=0放在非公操做指令的最後一條微指令的末尾,表示指令執行結束,跳轉到30公操做。
解答:應該用的是循環移位。
5.回答問題
1)設計指令系統
2)設計上述6條機器指令對應的微指令
答:此題在上面已經解答,在此不作重複。
3)除公操做外,每一個指令用哪幾條微指令實現指令功能?
答:此題在上面已經解答,在此不作重複。
4)分析說明三條擴展指令的32位微碼的設置原理。
在這裏選擇三條擴展指令進行詳細的32微碼設置的分析:
1.SBB指令分析
SBB DR,SR
DR-SR-CF->DR
MRW |
I2-0 |
I8-6 |
I5-3 |
B口 |
A口 |
SST |
SSH.SCI |
DC2 |
DC1 |
100 |
001 |
011 |
001 |
0000 |
0001 |
001 |
010 |
000 |
000 |
MRW |
由於此指令無內存和I/O讀寫,故選1XX |
I2-0 |
由於涉及DR和SR,因此用A和B兩個鎖存器,故爲001 |
I8-6 |
由於要->DR,因此要輸出到DR上,因此選F->B,Y=F,故爲011 |
I5-3 |
由於是減法運算,因此選R-S,故爲001 |
B口 |
由於B口使用R0,故爲0000 |
A口 |
A口使用R1,故爲0001 |
SST |
因減法運算還有-CF,會有標誌位的運算,因此選擇001 |
SSH,SCI |
由於運算中存在CF故標誌位不定,,因此選010 |
DC2 |
指令並無對AR,IR,INT操做,故不操做,選000 |
DC1 |
由於不須要用到DC1故選000 |
2.JMPR指令分析
JMPR SR
SR->PC,CC#=0
MRW |
I2-0 |
I8-6 |
I5-3 |
B口 |
A口 |
SST |
SSH.SCI |
DC2 |
DC1 |
100 |
100 |
011 |
000 |
0101 |
1000 |
000 |
000 |
000 |
000 |
MRW |
由於此指令無內存和I/O讀寫,故選1XX |
I2-0 |
由於SR直接賦值,因此用A鎖存器,R爲0,故爲100 |
I8-6 |
由於要->SP,因此要輸出到SP上,因此選F->B,Y=F,故爲011 |
I5-3 |
由於是0+SR運算,因此選R+S,故爲000 |
B口 |
由於B口使用SP,R5,故爲0101 |
A口 |
A口使用SR,R8,故爲1000 |
SST |
由於不會存在標誌位的改變,因此選擇000 |
SSH,SCI |
由於不須要用標誌位,因此選000 |
DC2 |
指令並無對AR,IR,INT操做,故不操做,選000 |
DC1 |
由於不須要用到DC1故選000 |
3.STRA指令分析
STRA [ADR],SR
PC->AR,PC+1->PC;
MRW |
I2-0 |
I8-6 |
I5-3 |
B口 |
A口 |
SST |
SSH.SCI |
DC2 |
DC1 |
100 |
011 |
010 |
000 |
0101 |
0101 |
000 |
001 |
011 |
000 |
MRW |
由於此指令無內存I/O讀寫,故選1XX |
I2-0 |
由於PC既要被運算也要被輸出,故選B鎖存器,故爲011 |
I8-6 |
由於要->AR,PC,因此要輸出到PC上,因此選F->B,Y=A,故爲010 |
I5-3 |
由於是加法運算,因此選R+S,故爲000 |
B口 |
由於B口使用PC,R5,故爲0101 |
A口 |
A口使用PC,R5,故爲0101 |
SST |
不會有標誌位的運算,因此選擇000 |
SSH,SCI |
因PC需+1,標誌位須要爲1,因此選001 |
DC2 |
由於須要AR接收,故選011 |
DC1 |
由於不須要用到DC1故選000 |
MEM->AR;
MRW |
I2-0 |
I8-6 |
I5-3 |
B口 |
A口 |
SST |
SSH.SCI |
DC2 |
DC1 |
001 |
111 |
001 |
000 |
0000 |
0000 |
000 |
000 |
011 |
000 |
MRW |
由於此指令須要讀取內存,故選000 |
I2-0 |
由於從內存讀取,因此使用D直接賦值,故爲001 |
I8-6 |
由於直接輸出,不用改變B的值,因此選Y=F,故爲001 |
I5-3 |
由於加0運算,因此選R+S,故爲000 |
B口 |
由於B口沒使用,故爲0000 |
A口 |
A口沒使用,故爲0000 |
SST |
因不會有標誌位的運算,因此選擇000 |
SSH,SCI |
由於沒有標誌位運算,因此選000 |
DC2 |
指令要寫入AR,故選011 |
DC1 |
由於不須要用到DC1故選000 |
6.總結感悟
此次的計算機組成原理課程設計我組成員收穫頗豐,在掌握知識的同時,還加強了克服困難的信心。整體來講,本次的報告難度適中,若是上課認真學習報告是沒有問題的,在報告的寫的過程當中,咱們複習了不少課上還有實驗中的知識,同時也查了一些資料,問了老師一些問題,感受懂得了很多課內外的知識。不只如此,完成報告也給了咱們鼓勵,讓咱們在面對困難的時候可以認真的一步一步去完成,不斷提升本身。在和老師的交流中咱們也發現了實驗的一些小漏洞,好比可能對於學生來講實驗書寫的知識太少了,有的知識點不能理解的很好,我認爲能夠在實驗書上寫更多的擴展知識,讓同窗們更加的理解整個知識體系,也學的更多。謝謝。