2、計算機的基本組成
一、馮諾依曼計算機的特點
說到計算機的發展,就不能不提到匈牙利科學家馮諾依曼(曾在德國柏林大學任教)。從20世紀初,物理學和電子學科學家們就在爭論製造可以進行數值計算的機器應該採用什麼樣的結構。人們被十進位制這個人類習慣的計數方法所困擾。所以,那時以研製模擬計算機的呼聲更為響亮和有力。20世紀30年代中期,匈牙利科學家馮諾依曼大膽地提出,拋棄十進位制,採用二進位制作為數字計算機的數制基礎。同時,他還說預先編制計算程式,然後由計算機來按照人們事前制定的計算順序來執行數值計算工作。
- 計算機由五大部件組成
- 儲存器:存放資料和程式。 - 運算器:算術運算、邏輯運算。 - 控制器:指揮程式執行。 - 輸入裝置:將資訊轉換成機器能識別的形式。 - 輸出裝置:將結果轉換成人們熟悉的形式。
-
指令和資料以同等地位存於儲存器,可按地址尋訪
-
指令和資料用二進位制表示
-
指令由操作碼和地址碼組成
-
儲存程式
-
以運算器為中心
現代計算機硬體框圖
二、計算機的工作步驟
用計算機解決一個實際問題通常包含兩大步驟。一個是上機前的各種準備,另一個是上機執行程式。
1、上機前的準備
-
建立數學模型
根據任務的要求,來建立數學模型。
-
確定計算方法
-
編制解題程式
這些動作,最後會在計算機中變成按照指令的方式進行工作。在指令中,分為兩部分,操作碼和地址碼。
操作碼指明要進行什麼操作,地址碼錶示要操作的資料在什麼地方。
2、計算機的解題過程
解題過程也就是計算機程式是怎麼樣執行的過程,執行的過程涉及到計算機的控制器,儲存器、運算器等。下面先逐個介紹各個器件。
2.1 儲存器
儲存器的主要功能就是儲存資料,儲存器由儲存體、MAR(儲存器地址暫存器)、MDR(儲存器資料暫存器)組成
-
儲存體:我們的資料就儲存在儲存體中,儲存體由若干個儲存單元組成。
-
儲存單元:又稱為:暫存器。每個儲存單元中儲存了一串01二進位制程式碼,儲存單元又是由若干個儲存元件組成。
一串01組成的二進位制程式碼稱為:儲存字,程式碼有多長則稱為儲存字長。
每一個儲存單元都會分配有一個儲存地址。將來在找某個資料的時候是按地址查詢(按地址尋訪)。
-
儲存元件:每一個儲存元件裡面都儲存了0或者1。
-
-
MAR(儲存器地址暫存器):用來儲存儲存器的地址和每一個儲存單元的地址,它的長度決定了儲存單元的個數。
例如:MAR = 4 位,即從0000到1111就有16種組合,儲存單元的個數就有16個。
-
MDR(儲存器資料暫存器):MDR儲存要被寫入地址單元或者從地址單元讀出的資料,它的長度決定了儲存單元的儲存字長。
MDR = 8 位,儲存字長也是8位
MAR和MDR組合起來看:MAR = 4 位與MDR = 8 位,就是說儲存體裡面有16個儲存單元,每個儲存單元是8位的儲存字長。
2.2 運算器
運算器的主要功能是進行加減乘除等算術運算,還可以進行邏輯運算,又稱為ALU(算術邏輯運算部件),計算機中通常採用二進位制數,運算器長度一般是8、16、32、64位。
運算器由算術邏輯單元(ALU)、累加器(ACC,主要存放被加數、和、被減數、差、乘積高位、被除數、餘數)、MQ(乘商暫存器,主要存放乘數、乘積低位和商)、狀態暫存器、通用暫存器組(x)等組成,每個運算器中的器件也是不一樣的。
運算器是資料加工處理部件,其中,算術邏輯運算單元(ALU)的基本功能為加、減、乘、除四則運算,與、或、非、異或等邏輯操作,以及移位、求補等操作。
計算機執行時,運算器的操作和操作種類由控制器決定。運算器處理的資料來自儲存器;處理後的結果資料通常送回儲存器,或暫時寄存在運算器中。
2.3 控制器
控制器是計算機的神經中樞,指揮全機中各個部件自動協調工作。在控制器的控制下,計算機能夠自動按照程式設定的步驟進行一系列操作,以完成特定任務。
-
控制器內部的主要部件如下:
①指令暫存器(IR):存放由儲存器取得的指令。
②譯碼器:將指令中的操作碼翻譯成控制訊號。
③時序節拍發生器:產生時序脈衝節拍訊號,使計算機有節奏、有次序地工作。
④操作控制部件:將控制訊號組合起來,控制各個部件完成相應的操作。
⑤指令計數器(PC):計算並指出下一條指令的地址。
-
控制器工作流程
(1)取指令。控制器的指令計數器(Program Counter,PC)中存放當前指令的地址。執行一條指令的第一步就是把該地址送到儲存器的地址驅動器,按地址取出指令,送到指令暫存器(Instruction Register,IR)中。同時,PC也擁有計數功能,能自動加一個的指令長度,準備取下一條指令。
(2)分析指令(IR)。一條指令由兩部分組成:一部分稱為操作碼(Operation code,OP)。指出該指令要進行什麼操作;另一部分稱為資料地址碼,用於指出要對存放在哪個地址中的資料進行操作。
在分析指令階段,要將資料地址碼送到儲存器中取出需要的運算元到運算器。同時把OP送到指令譯碼部件(指令暫存器),翻譯成要對哪些部件進行哪些操作的訊號,再通過操作控制邏輯,將指定的訊號(和時序訊號)送到指定的部件。
(3)傳送操作控制訊號(執行指令 CU)。將有關操作控制訊號,按照時序安排傳送到相關部件,使有關部件在規定的節拍中完成規定的操作。
2.4 計算機完成一條指令的過程
1、機器啟動後,PC(指令計數器,用來存放當前欲執行指令的地址,位於控制器中)是一開始存放指令的部件,
PC要將指令的地址送到MAR(儲存器地址暫存器,用來存放儲存單元的地址)PC----->MAR,pc也要加1。
2、再由MAR送給儲存體,在控制器的控制下,儲存體把指定儲存單元中儲存的指令取出來,暫存在MDR中(儲存器地址暫存器,用來存放從儲存體中某單元中取出的程式碼)。
3、這時指令已經存放到MDR中,取出的指令要送入IR(指令暫存器,用來存放當前要處理的指令,位於控制器中)MDR---->IR,此時完成取指過程。
4、分析指令進行存數:把IR中儲存的指令的操作碼部分送到CU(控制單元)中,OP(IR)---->CU,CU分析指令,發出訊號來完成指令所需操作,因為本指令是存數指令,所以要將ACC中的資料放到儲存體指定的單元中,在控制器的控制下,將IR中的地址碼送到MAR,Ad(IR)---->MAR,然後由MAR送到儲存體,告訴儲存體要存入資料的地址是多少,然後把ACC中的資料存入到MDR,ACC—>MDR,因為儲存體中輸入和輸出的資料都需要經過MDR,在控制器的控制之下,將MDR中的資料存放到儲存體中。完成執行存數指令。