現代計算機結構組成與工作過程
【版權聲明:尊重原創,轉載請保留出處:blog.csdn.net/shallnet,文章僅供學習交流,請勿用於商業用途】 現代計算機計算過程通常是把用戶書寫並送入計算機內的高級語言程序翻譯成機器能識別的語言程序,再通過機器自動運行該語言程序計算出結果並輸出。 但在早期沒有高級語言的時候,用戶是直接編寫機器語言,直接在機器執行。向編寫這種只由0、1構成的二進制代碼,對程序員的要求非常高,需要熟悉其所使用計算機的硬件機器和指令系統,這樣編寫程序難度很大,並且操作過程複雜易出錯。 到了20世紀50年代出現了符號式的程序語言,也就是彙編語言,彙編語言不再使用繁雜易出錯的二進制0、1來編寫程序,而是而是使用如ADD、SUB、MUL、DIV等分別表示加減乘除的操作,並且指令或儲存地址也使用符號表示。使用匯編語言在機器上運行時還是需要先將其翻譯成機器語言,機器只能識別機器語言,除機器語言以外的語言都不能識別,將彙編語言翻譯成機器語言是由機器系統軟件中的程序來完成。儘管彙編語言使用戶編程變得方便了,但使用匯編語言編程仍然需要程序猿對機器的指令系統是否熟悉,並且每種機器都是一種彙編語言與其對應,不同種類的機器彙編語言不一樣,這樣使得程序員需要掌握不同機器的指令系統,不便於計算機的廣泛應用。 到了60年代以後出現了高級語言,高級語言具有很高的通用性,程序員只需要掌握高級語言的語法就可以編程了,不需要掌握機器的種類類型,組成或指令系統。計算機仍然不能直接識別高級語言,高級語言程序在運行之前需要先轉換成彙編語言,彙編語言再轉化成機器語言,之後機器才能識別並運行程序。
計算機體系結構 一臺計算機有一種體系結構,體系結構確定計算機硬件和軟件的之間的銜接,著重於中央處理器內部的運行動作與存儲器的訪問。以常見的馮·諾伊曼計算機的設計為例,體系結構設計包括了: 指令集架構(Instruction set architecture;簡稱 ISA):被視為一種機器語言,包含了許多相關的指令集(存儲器尋址、處理器控制,暫存器控制等等...)。 微體系結構/微架構(Microarchitecture)或稱計算機組織(Computer organization):是更詳細的敘述系統內部各元素如何進行合作與溝通。 數據表示,即硬件能直接識別和處理的數據類型和數據格式; 尋址方式,包括最小尋址單位和地址運算等; 寄存器定義,包括操作數寄存器、變址寄存器、控制寄存器等的定義、數量和使用方式; 指令系統,包括機器指令的操作類型和格式、指令間的排序和控制機制等; 異常機制,包括中斷、NMI和內部異常等; 機器工作狀態的定義和切換,如管態和目態等; 輸入輸出結構,包括處理機、存儲器與輸入輸出設備之間的連接方式、數據傳送方式、數據流量、以及數據交換過程的控制等; 現代計算機的組成 現代計算機由運算器、存儲器、控制器、I/O設備組成。運算器用來完成算術運算和邏輯運算,並將運算中間結果,暫存在運算器內;存儲器用來存放數據和程序;控制器用來控制、指揮程序和數據的輸入、運行以及處理運算結果;I/O設備分別用來實現程序數據的輸入和計算結果的輸出。 運算器和控制器在邏輯關係和電路結構上聯繫十分緊密,這兩個部件往往集成在同一芯片上,通常將它們合起來統稱為中央處理器,即CPU。所以現代計算機通常有三部分構成:CPU、存儲器、I/O設備。
主存的工作方式是按照存儲單元地址號來對各存儲位進行讀、寫。這種存取方式稱為按地址訪問存儲器。存儲器這種工作性質對計算機組成和操作十分有利,人民只需要事先將編好的程序按順序存入主存各單元,當運行程序時,先給出程序在主存首地址,然後採用程序計數加一的方法,自動形成下一條指令所在存儲單元地址,機器便可自動完成這個程序操作。主存中需要配置兩個寄存器MAR和MDR,MAR用來存放將要訪問存儲單元地址,MDR是存儲器數據寄存器,用來存放從某個存儲器單元中取出的數據和將要寫入某個存儲單元的數據,具體的取出讀寫動作還需要CPU增加控制信號。 運算器至少包括3個寄存器和一個算術邏輯單元(ALU)。ACC為累加寄存器,MQ為乘商寄存器,X為操作數寄存器。 控制器是計算機的神經中樞,由他指揮各個部件自動、協調地工作。控制器由程序計數器(PC)、指令寄存器(IR)以及控制單元組成。PC存放當前欲執行的指令地址,它與主存的MAR之間有一條直接通路,且具有自動加一的功能,即可自動形成下一條指令的地址。IR用來存放當前當前指令,IR內容來自主存MDR。IR中的操作碼送至CU,用來分析指令,其地址碼作為操作數送至存儲器的MAR,控制單元CU用來分析當前指令所需完成的操作,迸發出各種為操作命令序列,用以控制所有被控對象。完成一條指令操作需要三個階段:控制器首先要命令存儲器讀出一條命令,稱為取指階段。然後對這條指令進行分析,指出該命令要完成什麼樣的操作,並按尋址特徵指明操作數的地址,稱為分析階段。最後根據操作數所在地址以及指令的操作碼完成某種操作,稱為執行階段。 I/O子系統包括各種I/O設備及其相應接口,每種IO設備接受CU發出的各種控制命令,被完成相應操作。
下面來理解計算機的工作全過程:
首先通過鍵盤將N條指令數據輸入到主存第0-N號單元中,PC初始值置0(程序首地址)。啟動機器後,計算機自動按存儲器中所放指令順序逐條完成取指、分析指令、執行指令,直到執行最後一條指令為止。
第一條指令執行:啟動機器後,控制器立即將PC的內容送至主存MAR(PC—> MAR),並命令存儲器做讀操作,此刻主存0號單元內容便送入MDR內,然後又MDR送至控制器IR(MDR—>IR),完成了一條指令的取指過程。 經過CU分析(OP(IR)—>CU),得出操作碼,如果為取數指令,於是CU將IR中地址碼送至MAR(Ad(IP)—>MAR),並命令存儲器做讀操作,將該地址單元中的操作數送至MDR中,再由MDR送至運算器的ACC(MDR—>ACC),完成此命令的執行過程,第一條取數命令的全過程。同時PC完成自動加一操作,形成下一條操作指令的地址,即1號地址。 第二條指令:同第一條指令,PC將第二條指令地址送至MAR,命令存儲器做讀操作,將1號單元內容送至MDR,又有MDR送至IR,接著CU分析操作碼,如果為乘法指令,CU向存儲器發讀命令,取出IR中對應地址單元中的操作數,經MDR送至運算器MQ,CU再向運算器發送乘法操作命令,完成乘法運算,並把結果存放在ACC中。同時PC又完成一次PC加一的操作。 第三、四......條指令:以此類推,逐條取指分析執行,直至最後得出結果。