2、電腦的基本組成

一、馮諾依曼電腦的特點

說到電腦的發展,就不能不提到匈牙利科學家馮諾依曼(曾在德國柏林大學任教)。從20世紀初,物理學和電子學科學家們就在爭論製造可以進行數值計算的機器應該採用什麼樣的結構。人們被十進位這個人類習慣的計數方法所困擾。所以,那時以研製模擬電腦的呼聲更為響亮和有力。20世紀30年代中期,匈牙利科學家馮諾依曼大膽地提出,拋棄十進位,採用二進位作為數字電腦的數制基礎。同時,他還說預先編製計算程式,然後由電腦來按照人們事前制定的計算順序來執行數值計算工作。

  1. 電腦由五大部件組成
- 存儲器:存放數據和程式。
- 運算器:算術運算、邏輯運算。
- 控制器:指揮程式運行。
- 輸入設備:將資訊轉換成機器能識別的形式。
- 輸出設備:將結果轉換成人們熟悉的形式。
  1. 指令和數據以同等地位存於存儲器,可按地址尋訪

  2. 指令和數據用二進位表示

  3. 指令由操作碼和地址碼組成

  4. 存儲程式

  5. 以運算器為中心

馮.諾依曼電腦硬體

現代電腦硬體框圖

現代電腦硬體框圖

二、電腦的工作步驟

用電腦解決一個實際問題通常包含兩大步驟。一個是上機前的各種準備,另一個是上機運行程式。

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中的數據存放到存儲體中。完成執行存數指令。

程式運行過程