- 嵌入式硬件技術(shù)基礎(chǔ)
- 王曉薇 周傳生 李冶主編
- 2321字
- 2018-12-27 15:20:00
1.4 計算機的基本工作原理
1.4.1 存儲程序工作原理
存儲程序工作原理是馮·諾依曼(von Neumann)在1945年領(lǐng)導(dǎo)設(shè)計EDVAC計算機的過程中提出的。實際上就是計算機執(zhí)行程序的方式,采用這種方式,要事先編制程序,并將程序(包含指令和數(shù)據(jù))存入主存儲器中,計算機在運行程序時,要能自動、連續(xù)地從主存儲器中依次取出指令并執(zhí)行。存儲程序是計算機能高速自動運行的基礎(chǔ)。
存儲程序工作方式,可稱為指令流驅(qū)動方式。即按照指令的執(zhí)行序列,依次讀取指令;根據(jù)指令所含的控制信息,調(diào)用數(shù)據(jù)進行處理。為了控制指令序列的執(zhí)行順序,設(shè)置一個程序計數(shù)器(Program Counter,PC),讓它存放當(dāng)前指令所在的存儲單元的地址。如果程序是順序執(zhí)行的,那么每取出一條指令后,PC內(nèi)容自動增1(在大多數(shù)情況下,程序的執(zhí)行都是順序的,即按照指令的先后順序執(zhí)行),指示下一條指令該從何處取得。如果程序?qū)嵤┺D(zhuǎn)移,則將轉(zhuǎn)移目標(biāo)地址送入PC,以便按新地址讀取后繼指令。PC就像一個指針,一直指示著程序的執(zhí)行進程,也就是指示指令流的形成。
存儲程序工作原理奠定了現(xiàn)代計算機的基本結(jié)構(gòu)思想,到目前為止,絕大多數(shù)計算機仍沿用這一結(jié)構(gòu),稱為馮·諾依曼機結(jié)構(gòu)。
馮·諾依曼機結(jié)構(gòu)從本質(zhì)有什么缺點,如何改進?
馮·諾依曼機結(jié)構(gòu)從本質(zhì)上講是采取串行順序處理的工作機制,即使有關(guān)數(shù)據(jù)已經(jīng)準(zhǔn)備好,也必須逐條執(zhí)行指令序列。提高計算機性能的根本方向之一是并行處理,因此,人們一直在謀求突破馮·諾依曼機結(jié)構(gòu)的束縛,這主要表現(xiàn)在以下兩個方面。
①在馮·諾依曼機結(jié)構(gòu)范疇內(nèi),對傳統(tǒng)馮·諾依曼機進行改造。例如,采用多個處理部件,形成流水處理,依靠時間上的重疊提高處理效率;組成陣列機結(jié)構(gòu),形成單指令流多數(shù)據(jù)流,提高處理速度。這些改造已比較成熟,成為標(biāo)準(zhǔn)的計算機結(jié)構(gòu)。比較活躍的研究是用多個馮·諾依曼機組成多機系統(tǒng),支持并行算法結(jié)構(gòu)。
②從根本上改變馮·諾依曼機的控制流驅(qū)動方式。例如,采用數(shù)據(jù)流驅(qū)動工作方式的數(shù)據(jù)流計算機,只要數(shù)據(jù)已經(jīng)準(zhǔn)備好,有關(guān)指令就可并行執(zhí)行。這是真正非馮·諾依曼的計算機,它為并行處理開辟了新的前景。但由于控制的復(fù)雜性,仍處于實驗探索之中。
1.4.2 計算機的工作過程
計算機的工作過程是執(zhí)行程序的過程。程序是為求解特定問題而設(shè)計的指令序列,所以計算機的工作過程就是按照給定次序執(zhí)行一系列指令的過程。按照存儲程序工作原理,執(zhí)行一條指令可以分為兩個階段進行:取指令和執(zhí)行指令。于是計算機的工作過程也就是反復(fù)取指和執(zhí)指的過程。
例如,求兩個正整數(shù)a,b的較大值,即f=max(a,b),下面以虛擬機M5 層,C語言為例來編寫程序。先看解題步驟如下:
①輸入a和b這兩個數(shù);
②執(zhí)行a賦值給f;
③判斷,如果b>a,則執(zhí)行b賦值給f;
④輸出f;
⑤結(jié)束。
上述步驟用指令表達出來就是程序。在編寫程序時,需要考慮給程序、數(shù)據(jù)分配存儲單元。C語言的處理方式是以函數(shù)名對應(yīng)程序段的首地址(注意馮·諾依曼機的工作特點之一就是程序存儲在存儲器中,而程序是包括指令和數(shù)據(jù)),函數(shù)對應(yīng)的程序段就存放在以該地址開始的連續(xù)區(qū)域中。用C語言編寫的程序如下:
main() {int a,b,f; //此指令的執(zhí)行將在內(nèi)存可用區(qū)域分配存儲單元,用來裝載 //相應(yīng)數(shù)據(jù) scanf(″% d% d″,&a,&b); //CPU執(zhí)行此指令的過程是:從輸入設(shè)備(鍵盤)輸入兩個整數(shù) //通過數(shù)據(jù)總線傳輸給內(nèi)存,按照分配的存儲單元地址存入 f=a; //CPU從內(nèi)存中讀取該指令執(zhí)行,從a所對應(yīng)的存儲單元中讀 //取數(shù)據(jù),再存入f所對應(yīng)的存儲單元中 if(b<a)f=b; printf(″% d″,f); //CPU執(zhí)行此指令的過程是:把f所對應(yīng)存儲單元中的數(shù)據(jù) //輸出到輸出設(shè)備(如顯示器)上 }
可以看出,馮·諾依曼體系的計算機執(zhí)行程序的過程。這一過程結(jié)合匯編語言程序的執(zhí)行就更加清楚了。
數(shù)據(jù)a存放在主存300AH單元,數(shù)據(jù)b存放在主存300BH單元,運算結(jié)果f存放在主存300CH單元。用匯編語言編寫的程序如下(這里沒有考慮輸入/輸出):
單元地址 單元內(nèi)容 2000H MOV Al,[300AH] 2001H MOV BL,[300BH] 2002H MOV [300CH],AL 2003H CMP BL,AL 2004H JG 2005H 2005H HLT 2006H MOV [300CH],BL 2007H HLT 300AH a 300BH b 300CH 存結(jié)果f
上述匯編語言源程序匯編為二進制代碼形式的目標(biāo)程序后,順序存放到主存儲器中。數(shù)據(jù)也以二進制代碼形式存放在主存儲器中。將程序首地址2000H送程序計數(shù)器PC,便啟動了該程序的執(zhí)行。
設(shè)數(shù)據(jù)b<a,程序的執(zhí)行過程如下:
①取指令——PC的內(nèi)容(2000H)送地址總線,主存2000H單元內(nèi)容讀入控制器。PC的內(nèi)容自動增1。
執(zhí)行指令——控制器譯碼所讀取的指令(MOV AL,[300AH]),發(fā)出控制信號,完成取300AH單元中的內(nèi)容a送寄存器AL的操作。
②取指令——PC的內(nèi)容(2001H)送地址總線,主存2001H單元內(nèi)容讀入控制器,PC的內(nèi)容自動增1。
執(zhí)行指令——控制器譯碼所取指令(MOV BL,[300BH]),發(fā)出控制信號,完成取300BH單元中的內(nèi)容b送寄存器BL的操作。
③取指令——PC的內(nèi)容(2002H)送地址總線,主存2002H單元內(nèi)容讀入控制器,PC的內(nèi)容自動增1。
執(zhí)行指令——控制器譯碼所取指令(MOV [300CH],AL),發(fā)出控制信號,完成將寄存器AL的內(nèi)容傳送至300CH單元中的操作。
④取指令——PC的內(nèi)容(2003H)送地址總線,主存2003H單元內(nèi)容讀入控制器,PC的內(nèi)容自動增1。
執(zhí)行指令——控制器譯碼所取指令(CMP BL,AL),發(fā)出控制信號,完成操作:S=0,Z=0(b>a)。
⑤取指令——PC的內(nèi)容(2004H)送地址總線,主存2004H單元內(nèi)容讀入控制器,PC的內(nèi)容自動增1。
執(zhí)行指令——控制器譯碼所取指令(JG 2005H),發(fā)出控制信號,完成操作:S=0,Z=0(b>a),條件滿足,轉(zhuǎn)移,地址2006H送PC。注意,如果條件不滿足,就不會執(zhí)行“轉(zhuǎn)移,地址2006H送PC”的操作了。
⑥取指令——PC的內(nèi)容(2006H)送地址總線,主存2006H單元內(nèi)容讀入控制器,PC的內(nèi)容自動增1。
執(zhí)行指令——控制器譯碼所取指令(MOV [300CH],BL),發(fā)出控制信號,完成將寄存器BL的內(nèi)容傳送至300CH單元中的操作。
⑦取指令——PC的內(nèi)容(2007H)送地址總線,主存2007H單元內(nèi)容讀入控制器,PC的內(nèi)容自動增1。
執(zhí)行指令——控制器譯碼所取指令(HLT),發(fā)出控制信號,停機,程序執(zhí)行結(jié)束。
- Hands-On Internet of Things with MQTT
- Mastercam 2017數(shù)控加工自動編程經(jīng)典實例(第4版)
- Deep Learning Quick Reference
- 3D Printing with RepRap Cookbook
- 條碼技術(shù)及應(yīng)用
- RPA:流程自動化引領(lǐng)數(shù)字勞動力革命
- 大數(shù)據(jù)處理平臺
- 聊天機器人:入門、進階與實戰(zhàn)
- 網(wǎng)中之我:何明升網(wǎng)絡(luò)社會論稿
- Chef:Powerful Infrastructure Automation
- 計算機組網(wǎng)技術(shù)
- 從零開始學(xué)SQL Server
- 手機游戲策劃設(shè)計
- 電腦上網(wǎng)入門
- Creating ELearning Games with Unity