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

程序運行過程

三、計算機硬件的主要技術指標

衡量一台計算機性能的優劣勢根據多項技術指標綜合確定的。其中,既包括硬件的各種性能指標,又包括軟件的各種功能。這里主要討論硬件的技術指標。

  • 機器字長

機器字長是指CPU 一次能處理數據的位數,與 CPU 中的 寄存器位數有關。常說的32位計算機,64位計算機,指定就是計算機能一次處理32位、63位二進制數。

字長越長,數的表示范圍越大,精度也越高。機器的字長也會影響機器的運算速度。倘若CPU字長較短,又要運算位數較多的數據,那么需要經過兩次或多次的運算才能完成,這樣勢必影響機器的運算速度。
機器字長對硬件的造價也有較大的影響。它將直接影響加法器(或 ALU) ,數據總線以及存儲字長的位數。所以機器字長的確定不能單從精度和數的表示范圍來考慮。

  • 運算速度

計算機的運算速度與許多因素有關,如機器的主頻,執行什么樣的操作、主存本身的速度(主存速度快,取指.取數就快)等都有關。早期用完成一次加法或乘法所需的時間來衡量運算速度,即普通法,顯然是很不合理的。后來采用吉普森(Gibson )法,它綜合考慮每條指令的執行t間]以及它們在全部操作中所占的百分比。

現在機器的運算速度普遍采用單位時間內執行指令的平均條數來衡量,並用MIPS(Million In-struction Per Second,百萬條指令每秒)作為計量單位。例如,某機每秒能執行200萬條指令,則記作2 MIPS。也可以用CPI(Cycle Per Instruction)即執行一條指令所需的時鍾周期(機器主頻的倒數)數,或用FLOPS( Floating Point Operation Per Second , 浮點運算次數每秒)來衡量運算速度。

  • CPU執行時間:表示CPU執行一般程序所占用的CPU時間,可用下式計算:
    CPU執行時間 = CPU時鍾周期數 * CPU時鍾周期

  • CPI:表示每條指令周期數,即執行一條指令所需的平均時鍾周期數。用下式計算:
    CPI = 執行某段程序所需的CPU時鍾周期數 + 程序包含的指令條數

  • MIPS (Million Instructions Per Second)的縮寫,表示平均每秒執行多少百萬條定點指令數,用下式計算:
    MIPS = 指令數 + (程序執行時間 * 10^6)

  • FLOPS (Floating-point Operations Per Second) 的縮寫,表示每秒執行浮點操作的次數,用來衡量機器浮點操作的性能。用下式計算:
    FLOPS = 程序中的浮點操作次數 / 程序執行時間(s)

  • 存儲容量

    存儲器的容量應該包括主存容量和輔存容量。主存容量是指主存中存放二進制代碼的總位數。即
    存儲容量=存儲單元個數×存儲字長

    • 存儲器容量:存儲器中所有存儲單元的總數目, 通常用KB、MB、GB、TB來表示。
    • 存儲器帶寬:單位時間內從存儲器讀出的二進制數信息量,一般用字節數/秒表示。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM