微程序怎麼編譯
① 學計算機多年的困惑......
計算機是分層抽象的,你應該學過編譯原理和匯編語言吧!
最底層的硬體只能識別機器語言,也就是010001010……
人們為了好記,設計一種助記符,如ADD A,B,C代表把A和B相加,結果存到C,機器會把ADD轉換成01101這樣的指令,這就是匯編語言。
再到最後,人們又閑匯編太麻煩,逐漸發展出了高級語言,像C,C++,JAVA等,像C++中的Cout命令,通過C++編譯器轉換成匯編語言,再通過匯編解釋器轉化成機器語言,得到執行。期間,最重要的就是編譯器,相當一個翻譯的工具,把高級語言翻譯成匯編語言。
其實計算機就是這么一層一層抽象的,都是為了更貼近人類的習慣,找本編譯原理看看就明白了。
補充:cout是C++里的,只能編譯成最基本的匯編語言,例如ADD,load,等等匯編指令,這些指令一般又可以分為微指令,像取地址,寫到寄存器等等微指令。這些微指令分別對應不同的機器編碼,例如011011。
微指令的編譯方法是決定微指令格式的主要因素.考慮到速度,成本等原因,在設計計算機時採用不同的編譯法 .因此微指令的格式大體分成兩類:水平型微指令和垂直型微指令 .
1.水平型微指令
一次能定義並執行多個並行操作微命令的微指令,叫做水平型微指令.例如5.4節中所講的微指令即為水平型微指令 .水平型微指令的一般格式如下:
控制欄位 判別測試欄位 下地址欄位
按照控制欄位的編碼方法不同,水平型微指令又分為三種:一種是全水平型(不譯法)微指令,第二種是欄位解碼法水平型微指令,第三種是直接和解碼相混合的水平型微指令 .
2.垂直型微指令
微指令中設置微操作碼欄位,採用微操作碼編譯法,由微操作碼規定微指令的功能,稱為垂直型微指令 .
垂直型微指令的結構類似於機器指令的結構.它有操作碼,在一條微指令中只有l-2個微操作命令,每條微指令的功能簡單,因此,實現一條機器指令的微程序要比水平型微指令編寫的微程序長得多 .它是採用較長的微程序結構去換取較短的微指令結構.
下面舉4條垂直型微指令的微指令格式加以說明.
設微指令字長為16位,做操作碼3位.
(1)寄存器-寄存器傳送型微指令
15 13 12 8 7 3 2 0
0 0 0 源寄存器編址 目標寄存器編址 其他
其功能是把源寄存器數據送目標寄存器 .13—15位為微操作碼(下同),源寄存器和目標寄存器編址各 5位,可指定31個寄存器.
(2)運算控制型微指令
_____________________________________________________________
其功能是選擇ALU的左,右兩輸入源信息,按ALU欄位所指定的運算功能(8種操作)進行處理,並將結果送入暫存器中.左,右輸入源編址可指定31種信息源之一.�
(3)訪問主存微指令�
_____________________________________________________________
其功能是將主存中一個單元的信息送入寄存器或者將寄存器的數據送往主存.存儲器編址是指按規定的定址方式進行編址.第1,2位指定讀操作或寫操作(取其之一).�
(4)條件轉移微指令�
_____________________________________________________________
其功能是根據測試對象的狀態決定是轉移到D所指定的微地址單元,還是順序執行下一條微指令.9位D欄位不足以表示一個完整的微地址,但可以用來替代現行μPC的低位地址. 測試條件欄位有4位,可規定16種測試條件.
3.水平型微指令與垂直型微指令的比較
(l)水平型微指令並行操作能力強.效率高,靈活性強,垂直型微指令則較差.
在一條水平型微指令中,設置有控制信息傳送通路(門)以及進行所有操作的微命令,因此在進行微程序設計時,可以同時定義比較多的並行操作的微命令,來控制盡可能多的並行信息傳送,從而使水平型微指令具有效率高及靈活性強的優點 .
在一條垂直型微指令中,一般只能完成一個操作,控制一兩個信息傳送通路,因此微指令的並行操作能力低,效率低 .
(2)水平型微指令執行一條指令的時間短,垂直型微指令執行時間長.
因為水平型微指令的並行操作能力強,因此與垂直型微指令相比,可以用較少的微指令數來實現一條指令的功能,從而縮短了指令的執行時間 .而且當執行一條微指令時,水平型微指令的微命令一般直接控制對象,而垂直型微指令要經過解碼也會影響速度 .
(3)由水平型微指令解釋指令的微程序,具有微指令字比較長,但微程序短的特點.垂直型微指令則相反,微指令字比較短而微程序長 .
(4)水平型微指令用戶難以掌握,而垂直型微指令與指令比較相似,相對來說.比較容易掌握 .
水平型微指令與機器指令差別很大,一般需要對機器的結構,數據通路,時序系統以及微命令很精通才能設計 .
5.5.4 動態微程序設計
微程序設計技術有靜態微程序設計和動態微程序設計之分.
1.靜態微程序設計
對應於一台計算機的機器指令只有一組微程序,而且這一組微程序設計好之後,一般無須改變而且也不好改變,這種微程序設計技術稱為靜態微程序設計.
2.動態微程序設計
當採用EPROM作為控制存儲器時,還可以通過改變微指令和微程序來改變機器的指令系統,這種微程序設計技術稱為動態微程序設計.採用動態微程序設計時,微指令和微程序可以根據需要加以改變,因而可在一台機器上實現不同類型的指令系統.這種技術又稱為模擬其他機器指令系統,以便擴大機器的功能.
② 微指令的格式主要與哪些因素有關後續地址的選取有什麼限制
垂直型微指令。
微指令格式大體分成兩類:水平型微指令和垂直型微指令。
垂直型微指令微指令中設置微操作碼欄位,採用微操作碼編譯法,由微操作碼規定微指令的功能,稱為垂直型微指令。
微指令是指在微程序控制的計算機中,將由同時發出的控制信號所執行的一組微操作。所以微指令就是把同時發出的控制信號的有關信息匯集起來形成的。將一條指令分成若干條微指令,按次序執行就可以實現指令的功能。若干條微指令可以構回成一個微程序,而一個微程序就對應了一條機器指令。因此,一條機器指令的功能是若干條微指令組成的序列來實現的。簡言之,一條機器指令所完成的操作分成若答干條微指令來完成,由微指令進行解釋和執行。微指令的編譯方法是決定微指令格式的主要因素。
③ 微程序的控制方式有哪些
微程序控制的基本思想,就是仿照通常的解題程序的方法,把操作控制信號編成所謂的「微指令」,存放到一個只讀存儲器里.當機器運行時,一條又一條地讀出這些微指令,從而產生全機所需要的各種操作控制信號,使相應部件執行所規定的操作
.
採用微程序控制方式的控制器稱為微程序控制器。所謂微程序控制方式是指微命令不是由組合邏輯電路產生的,而是由微指令解碼產生。一條機器指令往往分成幾步執行,將每一步操作所需的若干位命令以代碼形式編寫在一條微指令中,若干條微指令組成一段微程序,對應一條機器指令。在設計cpu時,根據指令系統的需要,事先編制好各段微程序
,且將它們存入一個專用存儲器(稱為控制存儲器)中。微程序控制器由指令寄存器ir、程序計數器pc、程序狀態字寄存器psw、時序系統、控制存儲器cm、微指令寄存器以及微地址形成電路、微地址寄存器等部件組成。執行指令時,從控制存儲器中找到相應的微程序段,逐次取出微指令,送入微指令寄存器,解碼後產生所需微命令,控制各步操作完成。
④ 微程序和程序的關系
微程序是由多個機器指令組成的機器指令集,程序則是為了完成某一應用功能所編寫的代碼的集合。簡單一點,微程序是機器指令級別的,程序是高級語言級別的。
一種用於解決實際問題的機器指令的有序集合,包括子程序、分支、循環和其他結構,存儲在主存中,可以更新和修改;
微程序設計是一組有序的微指令。微程序設計是傳統程序設計方法在控制邏輯設計中的應用。因此,微程序也可以有微子程序、分支、循環等結構。
(4)微程序怎麼編譯擴展閱讀:
微程序和程序的區別
1、不同的系統
是用某種編程語言編寫的,運行在某種目標架構上。微程序存儲在控制內存CM中,控制內存CM只能讀取,不能更改。CM中的所有微程序解釋並執行整個指令系統中的所有機器指令。
2、編譯是不同的
通常,程序是用高級語言編寫的,然後在編譯期間由編譯器/解釋器翻譯成機器語言以執行。
在某些情況下,也可以用匯編語言進行編程,匯編語言經過機器語言的修改,用文字代替0和1,如Add用於添加,Mov用於傳遞數據等。
⑤ 微程序和機器指令有什麼關系
微程序和程序是兩個不同的概念。微程序是由微指令組成的,用於描述機器指令,實際上是機器指令的實時解釋器,微程序是由計算機的設計者事先編制好並存放在控制存儲器中的,一般不提供給用戶;程序是由機器指令組成的,由程序員事先編制好並存放在主存放器中。
微指令是控制計算機各部件完成某個基本微操作的命令。微操作是指計算機中最基本的、不可再分解的操作。微指令和微操作是一一對應的,微指令是微操作的控制信號,微操作是微指令的操作過程。微指令是若干個微命令的集合。
微程序是機器指令的實時解釋器,每一條機器指令都對應一個微程序。
(5)微程序怎麼編譯擴展閱讀
微指令和指令(機器指令)的區別:
一、概念不同
1、機器指令:機器指令是CPU能直接識別並執行的指令。
2、微指令:是指在機器的一個CPU周期中,一組實現一定操作功能的微命令的組合,描述微操作的語句。
二、表現格式不同
1、機器指令:表現形式是二進制編碼。
2、微指令:格式分為水平型微指令和垂直型微指令。
三、原理不同
1、機器指令:機器指令通常由操作碼和操作數兩部分組成,操作碼指出該指令所要完成的操作,即指令的功能,操作數指出參與運算的對象,以及運算結果所存放的位置等。
2、微指令:一條機器指令的功能是若干條微指令組成的序列來實現的,即一條機器指令所完成的操作分成若干條微指令來完成,由微指令進行解釋和執行,這個微指令序列通常叫做微程序。微指令的編譯方法是決定微指令格式的主要因素。
⑥ 簡述程序和微程序兩個的概念和區別。
程序是一系列機器指令的有序集合,用於解決實際問題,有子程序、分支、循環等結構,存放在主存中,可以更新修改;
微程序是一系列微指令的有序集合,微程序設計是將傳統的程序設計方法運用到控制邏輯的設計中,因此在微程序中也可以有微子程序、分支、循環等結構。
區別:
1、體系不同
程序它以某些程序設計語言編寫,運行於某種目標結構體繫上。微程序存儲在控制存儲器CM中,只能讀出,不能更改,CM中的所有微程序解釋執行整個指令系統中的所有機器指令。
2、編譯不同
一般的,程序是由高級語言編寫,然後在編譯的過程中,被編譯器/解釋器轉譯為機器語言,從而得以執行。
有時,也可用匯編語言進行編程,匯編語言在機器語言上進行了改進,以單詞代替了0和1,例如以Add代表相加,Mov代表傳遞數據等。
(6)微程序怎麼編譯擴展閱讀:
微程序的設計技術:
微程序設計技術,指的是利用軟體技術來實現硬體設計的一門技術。優點:微程序設計克服了組合邏輯控制單元線路龐雜的缺點,同硬布線比較具有規整性,靈活性,可維護性等一系列優點。缺點:由於增加了到控制存儲器中讀取微指令的時間導致執行速度慢。
程序的運行:
為了使計算機程序得以運行,計算機需要載入代碼,同時也要載入數據。從計算機的底層來說,這是由高級語言(例如Java,C/C++,C#等)代碼轉譯成機器語言而被CPU所理解,進行載入。
⑦ 微指令的格式可分為水平型微指令和什麼
垂直型微指令。
微指令格式大體分成兩類:水平型微指令和垂直型微指令。
垂直型微指令微指令中設置微操作碼欄位,採用微操作碼編譯法,由微操作碼規定微指令的功能,稱為垂直型微指令。
微指令是指在微程序控制的計算機中,將由同時發出的控制信號所執行的一組微操作。所以微指令就是把同時發出的控制信號的有關信息匯集起來形成的。將一條指令分成若干條微指令,按次序執行就可以實現指令的功能。若干條微指令可以構成一個微程序,而一個微程序就對應了一條機器指令。因此,一條機器指令的功能是若干條微指令組成的序列來實現的。簡言之,一條機器指令所完成的操作分成若干條微指令來完成,由微指令進行解釋和執行。微指令的編譯方法是決定微指令格式的主要因素。
⑧ 微程序的控制方式有哪些
1.
組合邏輯控制器有哪些缺點,微程序控制器如何針對這些缺點對其進行了改
進?
(P140)
答:組合邏輯控制器的缺點為:
①設計不規整,設計效率較低;控制器核心結構零亂,不便於檢查和調試。
②不易修改與擴展指令系統功能。
改進:
引入了程序技術,使設計規整;
引入了存儲邏輯,使功能易於擴展。
2.
微程序控制的基本思想是什麼?
答:
①若干微命令編製成一條微指令,控制實現一步操作;
②若干微指令組成一段微程序,解釋執行一條機器指令;
③微程序事先存放在控制存儲器中,執行機器指令時再取出。
3.
簡述控制存儲器存儲的內容,以及與主存的區別。
答:控制存儲器中存放微程序。
與主存的區別:
①控制存儲器在
CPU
中、而主存不是;
②控制存儲器是一個
ROM
,而主存是
ROM
和
RAM
③控制存儲器容量比主存小
④控制存儲器字長比主存長
⑤控制存儲器速度比主存快
4.
微指令可分為哪兩部分?各自作用是什麼?
答:微指令可分為
微命令欄位(或微操作控制欄位
)
和微地址欄位
(
或順序控制欄位
)
微命令欄位:提供一步操作所需的微命令。
微地址欄位:指明後續微地址的形成方式
,
提供微地址的給定部分。
5.
採用分段直接編譯法時,微命令分組的原則是什麼?
答:同類操作中互斥的微命令放同一欄位。
6.
什麼是功能轉移?
答:根據機器指令找到對應微程序入口地址的過程稱為功能轉移。
7.
後續微地址的形成方式有哪些?
答:有增量方式和斷定方式兩種。
⑨ 微程序(指令),機器語言是硬體還是軟體
這部分程序的開發語言一般是C或者其他低級語言。使用編譯工具鏈生成二進制文件固化在晶元內部的ROM中。
晶元上電時,硬體會自動從ROM載入這部分程序運行。
總結,這部分是屬於軟體。
⑩ 微程序設計的基本原理是什麼
在微指令的控制欄位中,每一位代表一個微命令,在設計微指令時,是否發出某個微命令,只要將控制欄位中相應位置成"1"或"0",這樣就可打開或關閉某個控制門,這就是直接控製法.
在6.3節中所講的就是這種方法.但在某些復雜的計算機中,微命令甚至可多達三四百個,這使微指令字長達到難以接受的地步,並要求機器有大容量控制存儲器,為了改進設計出現了以下各種編譯法.
6.4.1 微指令的編譯法(編碼解碼方法)(2)
2.欄位直接編譯法
在計算機中的各個控制門,在任一微周期內,不可能同時被打開,而且大部分是關閉的(相應的控制位為"0").所謂微周期,指的是一條微指令所需的執行時間.如果有若干個(一組)微命令,在每次選擇使用它們的微周期內,只有一個微命令起作用,那麼這若干個微命令是互斥的.
例如,向主存儲器發出的讀命令和寫命令是互斥的;又如在ALU部件中,送往ALU兩個輸入端的數據來源往往不是唯一的,而每個輸入端在任一微周期中只能輸入一個數據,因此控制該輸人門的微命令是互斥的.
選出互斥的微命令,並將這些微命令編成一組,成為微指令字的一個欄位,用二進制編碼來表示, 就是欄位直接編譯法.
6.4.1 微指令的編譯法(編碼解碼方法)(3)
例如,將7個互斥的微命令編成一組,用三位二進制碼分別表示每個微命令,那麼在微指令中,該欄位就從7位減成3位,縮短了微指令長度.而在微指令寄存器的輸出端,為該欄位增加一個解碼器,該解碼器的輸出即為原來的微命令.
6.4.1 微指令的編譯法(編碼解碼方法)(4)
欄位長度與所能表示的微命令數的關系如下:
欄位長度 微命令數
2位 2~3
3位 4~7
4位 8~15
一般每個欄位要留出一個代碼,表示本段不發出任何微命令,因此當欄位長度為3位時,最多隻能表示7個互斥的微命令,通常代碼000表示不發微命令.
6.4.1 微指令的編譯法(編碼解碼方法)(5)
3.欄位間接編譯法
欄位間接編譯法是在欄位直接編譯法的基礎上,進一步縮短微指令字長的一種編譯法.
如果在欄位直接編譯法中,還規定一個欄位的某些微命令,要兼由另一欄位中的某些微命令來解釋,稱為欄位間接編譯法.
本方法進一步減少了指令長度,但很可能會削弱微指令的並行控制能力,因此通常只作為直接編譯法的一種輔助手段.
6.4.1 微指令的編譯法(編碼解碼方法)(6)
欄位A(3位)的微命令還受欄位B控制,當欄位B發出b1微命令時,欄位A發出a1,1,a1,2,…,a1,7中的一個微命令;而當欄位B發出b2微命令時,欄位A發出a2,1,a2,2,…,a2,7中的一個微命令,僅當A為000時例外,此時什麼控制命令都不產生.
6.4.1 微指令的編譯法(編碼解碼方法)(7)
4.常數源欄位E
在微指令中,一般設有一個常數源欄位E就如指令中的直接操作數一樣.E欄位一般僅有幾位,用來給某些部件發送常數,故有時稱為發射欄位.
該常數有時作為操作數送入ALU運算;有時作為計算器初值,用來控制微程序的循環次數等.
6.4.2 微程序流的控制 (1)
當前正在執行的微指令,稱為現行微指令,現行微指令所在的控制存儲器單元的地址稱現行微地址,現行微指令執行完畢後,下一條要執行的微指令稱為後繼微指令,後繼微指令所在的控存單元地址稱為後繼微地址.
所謂微程序流的控制是指當前微指令執行完畢後,怎樣控制產生後繼微指令的微地址.
與程序設計相似,在微程序設計中除了順序執行微程序外還存在轉移功能和微循環程和微子程序等,這將影響下址的形成.
下面介紹幾種常見的產生後繼微指令地址的方法.
6.4.2 微程序流的控制 (2)
(1)以增量方式產生後繼微地址.
在順序執行微指令時,後繼微地址由現行微地址加上一個增量(通常為1)形成的;而在非順序執行時則要產生一個轉移微地址.
機器加電後執行的第一條微指令地址(微程序入口)來自專門的硬體電路,控制實現取令操作,然後由指令操作碼產生後繼微地址.接下去,若順序執行微指令,則將現行微地址主微程序計數器( PC中)+1產生後繼微地址;若遇到轉移類微指令,則由 PC與形成轉移微地址的邏輯電路組合成後繼微地址.
6.4.2 微程序流的控制 (3)
6.4.2 微程序流的控制 (4)
(2)增量與下址欄位結合產生後繼微地址
將微指令的下址欄位分成兩部分:轉移控制欄位BCF和轉移地址欄位BAF,當微程序實現轉移時,將BAF送 PC,否則順序執行下一條微指令( PC+1).
執行微程序條件轉移時,決定轉移與否的硬體條件有好幾種.例如,"運算結果為零","溢出","已完成指定的循環次數"等.
我們假設有八種轉移情況,定義了八個微命令(BCF取3位),在圖中設置計數器CT用來控制循環次數.如在執行乘(或除)法指令時,經常採用循環執行"加,移位"(或減,移位)的方法,指令開始執行時,在CT中置循環次數)每執行一次循環,計數器減1,當計數器為零時結束循環.又考慮到執行微子程序時,要保留返回微地址,因此圖中設置了一個返回寄存器RR.