1. 程式人生 > >計算機系統概述

計算機系統概述

上層 編譯器 col 界面 長度 com 修改 規約 直接

現代計算機的原型

馮·諾依曼

1946年,普林斯頓高等研究院(the Institute for Advance Study at Princeton,IAS )開始設計“存儲程序”計算機,被稱為IAS計算機.

  • 馮·諾依曼結構最重要的思想是“存儲程序(Stored-program)”
  • 工作方式:
    • 任何要計算機完成的工作都要先被編寫成程序,然後將程序和原始 數據送入主存並啟動執行。一旦程序被啟動,計算機應能在不需操 作人員幹預下,自動完成逐條取出指令和執行指令的任務。
    • 馮·諾依曼結構計算機也稱為馮·諾依曼機器(Von Neumann Machine)。
    • 幾乎現代所有的通用計算機大都采用馮·諾依曼結構,因此,IAS計 算機是現代計算機的原型機。

馮·諾依曼結構是怎樣的?

  • 有主存,用來存 放程序和數據
  • 一個自動逐條取 出指令的部件
  • 具體執行指令 (即運算)的部件
  • 程序由指令構成
  • 指令描述如何對數據進 行處理
  • 將程序和原始數 據輸入計算機的部件
  • 將運算結果輸出 計算機的部件

技術分享圖片

馮·諾依曼結構的主要思想

  • 計算機應由運算器、控制器、存儲器、輸入設備和輸出設備 五個基本部件組成。
  • 各基本部件的功能是:
    • 存儲器不僅能存放數據,而且也能存放指令,形式上兩者 沒有區別,但計算機應能區分數據還是指令;
    • 控制器應能自動取出指令來執行;
    • 運算器應能進行加/減/乘/除四種基本算術運算,並且也 能進行一些邏輯運算和附加運算;
    • 操作人員可以通過輸入設備、輸出設備和主機進行通信。
  • 內部以二進制表示指令和數據。每條指令由操作碼和地址碼 兩部分組成。操作碼指出操作類型,地址碼指出操作數的地 址。由一串指令組成程序。
  • 采用“存儲程序”工作方式。

現代計算機結構模型

CPU:中央處理器;PC:程序計數器;

MAR:存儲器地址寄存器 ALU:算術邏輯部件;

IR:指令寄存器;MDR:存儲器數據寄存器 GPRs:通用寄存器組(由若幹通用寄存器組成,早期就是累加器)

技術分享圖片

計算機的執行過程

程序在執行前

  • 數據和指令事先存放在存儲器中,每條指令和每個數據都有地址, 指令按序存放,指令由OP(操作碼)、ADDR(地址碼)字段組成,程序起始地址置PC

開始執行程序

  • 第一步:根據PC取指令
  • 第二步:指令譯碼
  • 第三步:取操作數
  • 第四步:指令執行
  • 第五步:回寫結果
  • 第六步:修改PC的值
  • 繼續執行下一條指令

簡單的流程圖:

技術分享圖片

指令和數據

程序啟動前,指令和數據都存放在存儲器中,形式上沒有差別,
都是0/1序列
• 采用”存儲程序“工作方式:
  – 程序由指令組成,程序被啟動後,計算機能自動取出一條一條
     指令執行,在執行過程中無需人的幹預。
• 指令執行過程中,指令和數據被從存儲器取到CPU,存放在CPU
內的寄存器中,指令在IR中,數據在GPR中。
指令中需給出的信息:
操作性質(操作碼)
源操作數1 或/和 源操作數2 (立即數、寄存器編號、存儲地址)
目的操作數地址 (寄存器編號、存儲地址)
存儲地址的描述與操作數的數據結構有關!

計算機的基本組成與基本功能

計算機的基本部件及功能:

  • 運算器(數據運算):ALU、GPRs、標誌寄存器等
  • 存儲器(數據存儲):存儲陣列、地址譯碼器、讀寫控制電 路
  • 總線(數據傳送):數據(MDR)、地址(MAR)和控制線
  • 控制器(控制):對指令譯碼生成控制信號

計算機實現的所有任務都是通過執行一條一條指令完成的

程序開發和執行過程

程序開發

機器語言編寫程序

用機器語言編寫程序,並記錄在紙帶或卡片上

技術分享圖片

技術分享圖片

輸入:按鈕、開關;

輸出:指示燈等 所有信息都 是0/1序列!

機器語言編寫程序不僅難讀,難寫而且非常不靈活.

用匯編語言開發程序

若用符號表示跳轉位置和變量位置,是否簡化了問題?
• 於是,匯編語言出現
  – 用助記符表示操作碼
  – 用標號表示位置
  – 用助記符表示寄存器

技術分享圖片

用匯編語言編寫的優點是: 不會因為增減指令而需要修改其他指令 不需記憶指令編碼,編寫方便 可讀性比機器語言強

不過,這帶來新的問題,是什麽呢?

人容易了,可機器不認識這些指令了.

需將匯編語言轉 換為機器語言! 我們用匯編程序作為中介進行轉換

進一步認識機器級語言

匯編語言(源)程序由匯編指令構成
• 用一句話描述什麽是匯編指令
    – 用助記符和標號來表示的指令(與機器指令一一對應)
• 指令又是什麽呢?
    – 包含操作碼和操作數或其地址碼
(機器指令用二進制表示,匯編指令用符號表示)
    – 只能描述:取(或存一個數)
    兩個數加(或減、乘、除、與、或等)
    根據運算結果判斷是否轉移執行
• 想象用匯編語言編寫復雜程序是怎樣的情形?
(例如,用匯編語言實現排序(sort)、矩陣相乘)
    – 需要描述的細節太多了!程序會很長很長!而且在不同
結構的機器上就不能運行!

機器語言和匯編 語言都是面向機 器結構的語言, 故它們統稱為機 器級語言

結論:用匯編語言比機器語言好,但是,還是很麻煩!

用高級語言開發程序

高級編程語言

  • 它們與具體機器結構無關
  • 面向算法描述,比機器級語言描述能力強得多
  • 高級語言中一條語句對應幾條、幾十條甚至幾百條指令
  • 有“面向過程”和“面向對象”的語言之分
  • 處理邏輯分為三種結構 • 順序結構、選擇結構、循環結構
  • 有兩種轉換方式:“編譯”和“解釋”
    •   編譯程序(Complier):將高級語言源程序轉換為機器級目 標程序,執行時只要啟動目標程序即可
    •   解釋程序(Interpreter ):將高級語言語句逐條翻譯成機器 指令並立即執行,不生成目標文件

程序執行

一個典型程序的轉換處理過程

經典的“ hello.c ”C-源程序

#include <stdio.h>
int main()
{
printf("hello, world\n");
}

技術分享圖片

技術分享圖片

Hello程序的數據流動過程

技術分享圖片

數據經常在各存儲部件間傳送。故現代計算機大多采用“緩存”技術

所有過程都是在CPU執行指令所產生的控制信號的作用下進行的

不同層次語言之間的等價轉換

技術分享圖片

開發和運行程序需什麽支撐?

用高級語言開發程序需要復雜的支撐環境(怎樣的環境?)

  • 需要編輯器編寫源程序
  • 需要一套翻譯轉換軟件處理各類源程序
    • 編譯方式:預處理程序、編譯器、匯編器、鏈接器
    • 解釋方式:解釋程序
      • 以上稱為語言處理程序
  • 需要一個可以執行程序的界面(環境)
    • GUI方式:圖形用戶界面
    • CUI方式:命令行用戶界面

語言處理程序+人機接口+操作系統+操作系統內核+語言的運行時系統+指令集體系結構+計算機硬件

支撐程序開發和運行的環境由系統軟件提供

最重要的系統軟件是操作系統和語言處理系統

語言處理系統運行在操作系統之上,操作系統利用指令管理硬件

計算機系統層次結構

早期計算機系統的層次

最早的計算機用機器語言編程

機器語言稱為第一代程序設計語言

技術分享圖片

匯編語言編程

匯編語言編程

技術分享圖片

現代(傳統)計算機系統的層次

現代計算機用高級語言編程

  • 第三代程序設計語言(3GL)為過程式 語言,編碼時需要描述實現過程,即“ 如何做”。
  • 第四代程序設計語言(4GL) 為非過程 化語言,編碼時只需說明“做什麽”, 不需要描述具體的算法實現細節。

技術分享圖片

語言處理系統包括:各種語 言處理程序(如編譯、匯編、 鏈接)、運行時系統(如庫 函數,調試、優化等功能)

操作系統包括人機交互界面、 提供服務功能的內核例程

可以看出:語言的發展是一 個不斷“抽象”的過程,因 而,相應的計算機系統也不 斷有新的層次出現

計算機系統抽象層的轉換

技術分享圖片

功能轉換:上層是下層的抽象,下層是上層的實現 底層為上層提供支撐環境!

計算機系統的不同用戶

最終用戶工作在由應用程序提供的最上面的抽象層
系統管理員工作在由操作系統提供的抽象層
應用程序員工作在由語言處理系統(主要有編譯器和匯編器)的抽象層
語言處理系統建立在操作系統之上
系統程序員(實現系統軟件)工作在ISA層次,必須對ISA非常了解
編譯器和匯編器的目標程序由機器級代碼組成
操作系統通過指令直接對硬件進行編程控制ISA處於軟件和硬件的交界面(接口)

技術分享圖片

ISA是對硬件的抽象所有軟件功能都建立在ISA之上

指令集體系結構(ISA)

SA指Instruction Set Architecture,即指令集體系結構,有時 簡稱為指令系統

  • •ISA是一種規約(Specification),它規定了如何使用硬件
    •   –可執行的指令的集合,包括指令格式、操作種類以及每種操作對應的 操作數的相應規定;
    •   – 指令可以接受的操作數的類型
    •   – 操作數所能存放的寄存器組的結構,包括每個寄存器的名稱、編號、 長度和用途
    •   – 操作數所能存放的存儲空間的大小和編址方式;
    •   – 操作數在存儲空間存放時按照大端還是小端方式存放;
    •   – 指令獲取操作數的方式,即尋址方式
    •   – 指令執行過程的控制方式,包括程序計數器(PC)、條件碼定義等。
  • ISA在通用計算機系統中是必不可少的一個抽象層,
    •   – 沒有它,軟件無法使用計算機硬件!
    •   – 沒有它,一臺計算機不能稱為“通用計算機”

ISA和計算機組成(微結構)之間的關系

ISA是計算機 組成的抽象

不同ISA規定的指令集不同,

如,IA-32、MIPS、ARM等 計算機組成必須能夠實現ISA規定的功能,如提供GPR、標誌、運算電路等 同一種ISA可以有不同的計算機組成,

如乘法指令可用ALU或乘法器實現

計算機系統概述