計算機的工作過程是将現實世界中的各種信息轉換成計算機能夠理解的二進制代碼(信息編碼),然後保存在計算機的存儲器(數據存儲)中,再由運算器對數據進行處理(數據計算)。在數據存儲和計算過程中,需要通過線路将數據從一個部件傳輸到另外一個部件(數據傳輸)。數據處理完成後,再将數據轉換成人類能夠理解的信息形式(數據解碼)。在以上工作過程中,信息如何編碼和解碼,數據存儲在什麼位置,數據如何進行計算等,都由計算機能夠識别的機器指令(指令系統)控制和管理。
2 計算機指令系統各計算機公司設計生産的計算機芯片,其指令的數量與功能、指令格式、尋址方式、數據格式都有差别,即使是一些常用的基本指令,如算術邏輯運算指令、轉移指令等也是各不相同的。
為了緩解新機器的推出與原有應用程序的繼續使用之間的矛盾,1964年在設計IBM360計算機時所采用的系列機思想較好地解決了這一問題。從此以後,各個計算機公司生産的同一系列的計算機盡管其硬件實現方法可以不同,但指令系統、數據格式、I/O系統等保持相同,因而軟件完全兼容(在此基礎上,産生了兼容機)。當研制該系列計算機的新型号或高檔産品時,盡管指令系統可以有較大的擴充,但仍保留了原來的全部指令,保持軟件向上兼容的特點,即低檔機或舊機型上的軟件不加修改即可在比它高檔的新機器上運行,以保護用戶在軟件上的投資。
常見指令按功能可劃分為:
①數據處理指令:包括算術運算指令、邏輯運算指令、移位指令、比較指令等。
②數據傳送指令:包括寄存器之間、寄存器與主存儲器之間的傳送指令等。
③程序控制指令:包括條件轉移指令、無條件轉移指令、轉子程序指令等。
④輸入-輸出指令:包括各種外圍設備的讀、寫指令等。有的計算機将輸入-輸出指令包含在數據傳送指令類中。
⑤狀态管理指令:包括諸如實現置存儲保護、中斷處理等功能的管理指令。
計算機是通過執行指令來處理各種數據的。為了指出數據的來源、操作結果的去向及所執行的操作,一條指令必須包含下列信息:
(1)操作碼。它具體說明了操作的性質及功能。一台計算機可能有幾十條至幾百條指令,每一條指令都有一個相應的操作碼,計算機通過識别該操作碼來完成不同的操作。
(2)操作數的地址。CPU通過該地址就可以取得所需的操作數。
(3)操作結果的存儲地址。把對操作數的處理所産生的結果保存在該地址中,以便再次使用。
(4)下條指令的地址。執行程序時,大多數指令按順序依次從主存中取出執行,隻有在遇到轉移指令時,程序的執行順序才會改變。為了壓縮指令的長度,可以用一個程序計數器(ProgramCounter,PC)存放指令地址。每執行一條指令,PC的指令地址就自動 1(設該指令隻占一個主存單元),指出将要執行的下一條指令的地址。當遇到執行轉移指令時,則用轉移地址修改PC的内容。由于使用了PC,指令中就不必明顯地給出下一條将要執行指令的地址。
一條指令實際上包括兩種信息即操作碼和地址碼。操作碼(OperationCode,OP)用來表示該指令所要完成的操作(如加、減、乘、除、數據傳送等),其長度取決于指令系統中的指令條數。地址碼用來描述該指令的操作對象,它或者直接給出操作數,或者指出操作數的存儲器地址或寄存器地址(即寄存器名)。
指令包括操作碼域和地址域兩部分。根據地址域所涉及的地址數量,常見的指令格式有以下幾種。
3 程序運行時的内存原理①三地址指令:一般地址域中A1、A2分别确定第一、第二操作數地址,A3确定結果地址。下一條指令的地址通常由程序計數器按順序給出。
②二地址指令:地址域中A1确定第一操作數地址,A2同時确定第二操作數地址和結果地址。
③單地址指令:地址域中A 确定第一操作數地址。固定使用某個寄存器存放第二操作數和操作結果。因而在指令中隐含了它們的地址。
④零地址指令:在堆棧型計算機中,操作數一般存放在下推堆棧頂的兩個單元中,結果又放入棧頂,地址均被隐含,因而大多數指令隻有操作碼而沒有地址域。
⑤可變地址數指令:地址域所涉及的地址的數量随操作定義而改變。如有的計算機的指令中的地址數可少至 0個,多至6個。
程序運行時,用于執行程序的内存區域大緻可分為以下部分。
4 指令執行過程
整體的過程如下所述:
PC——Program Counter,程序計數器,存放當前欲執行指令的地址,并可自動計數形成下一條指令地址的計數器;
MAR——Memory Address Register,存儲器地址寄存器,内存中用來存放欲訪問存儲單元地址的寄存器;
MDR——Memory Data Register,存儲器數據緩沖寄存器,主存中用來存放從某單元讀出、或寫入某存儲單元數據的寄存器;
IR——Instruction Register,指令寄存器,存放當前正在執行的指令的寄存器;
CU——Control Unit,控制單元(部件),控制器中産生微操作命令序列的部件,為控制器的核心部件;
ACC——Accumulator,累加器,運算器中運算前存放操作數、運算後存放運算結果的寄存器;
ALU——Arithmetic Logic Unit,算術邏輯運算單元,運算器中完成算術邏輯運算的邏輯部件;
MQ——Multiplier-Quotient Register,乘商寄存器,乘法運算時存放乘數、除法時存放商的寄存器。
X——此字母沒有專指的縮寫含義,可以用作任一部件名,在此表示操作數寄存器,即運算器中工作寄存器之一,用來存放操作數;
I/O——Input/Output equipment,輸入/輸出設備,為輸入設備和輸出設備的總稱,用于計算機内部和外界信息的轉換與傳送;
也可以分為四個步驟去理解
I 取指令
CPU内部的指令寄存器IP保存着當前所處理指令的内存單元地址,通過地址總線,可以查找到指令在内存單元的位置,然後利用數據總線将内存單元的指令保存到高速緩存。
II 指令譯碼
譯碼單元解釋指令的類型與内容,并且判定這條指令的作用對象(操作數),将操作數從内存單元讀入高速緩存中。譯碼實際上就是将二進制指令翻譯成特定的CPU電路微操作,然後由控制器傳送給算術邏輯單元。
III 指令執行
控制器根據不同的操作對象,将指令送入不同的處理單元。如果是整數運算、邏輯運算、内存單元存取等一般控制指令,則送入ALU處理。如果操作對象是浮點數據(如三角函數運算),則送入浮點處理單元(FPU)進行處理。如果在運算過程中需要相應的用戶數據,則CPU首先從數據高速緩存中讀取相應的數據。如果高速緩存中沒有用戶需要的數據,則CPU通過數據通道,從内存中獲取必要的數據,運算完成後輸出運算結果。
VI 結果寫回
将執行單元(ALU或EPU)的處理結果寫回高速緩存或内存單元中。
解釋和執行指令後,控制單元告訴指令寄存器從内存單元中讀取下一條指令,循環上面的過程。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!