linux平台學x86彙編(一):現代電腦結構組成與工作過程

來源:互聯網
上載者:User

標籤:電腦群組成   體繫結構   

【著作權聲明:尊重原創,轉載請保留出處: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加一的操作。第三、四......條指令:以此類推,逐條取指分析執行,直至最後得出結果。



linux平台學x86彙編(一):現代電腦結構組成與工作過程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.