當前位置: 華文問答 > 數位

【電腦組成原理】閱讀筆記一

2022-09-18數位

電腦組成原理

電腦組成原理學習筆記。閱讀書籍為唐朔飛老師【電腦組成原理】第3版(筆記中的截圖均來自第2版pdf)

概論

概論主要介紹電腦系統的基本組成、套用與發展,對整體內容進行結構性介紹。

1. 電腦系統概論

1.1 電腦系統簡介

1.1.1 電腦的軟硬體概念

電腦系統包括硬體和軟體。

  • 硬體指電腦的實體部份,即看得見摸得著的部份。
  • 軟體指摸不著的內部程式,包括系統軟體和套用軟體。
  • 系統軟體:用來管理電腦系統。例如:標準程式庫、語言處理常式(轉譯高級語言程式的編譯程式等)、作業系統、服務程式、資料庫管理系統、網路軟體等。
  • 套用軟體:使用者根據任務需要編制的各種程式。
  • 1.1.2 電腦系統的階層

    高級程式語言,經過編譯系統後,轉譯得到組合語言程式;

    組合語言程式,經過組譯系統後,得到機器語言程式;

    機器語言程式會被解釋為機器指令;

    硬體執行機器指令。

    1.1.3 電腦組成和電腦體系結構

    電腦體系結構是指哪些能夠被程式設計師所見到的電腦系統的內容,即概念性的結構與功能特性。

    電腦組成是指如何實作電腦體系結構所體現的內容,包含了許多對程式設計師而言是透明的硬體細節。

    指令系統體現了電腦的內容,這是電腦體系結構的問題,但是指令的實作(如何取指令、分析指令、取運算元、運算、送結果等)這是屬於電腦組成問題。

    因此,兩台機器指令系統相同時,認為它們具有相同的結構,但是這兩台機器是如何實作的這個指令系統,則可以完全不同。

    1.2 電腦的基本組成

    1.2.1 馮諾依曼電腦的特點

  • 電腦由 運算器、記憶體、控制器、輸入裝置和輸出裝置 五大部份組成。
  • 指令 數據 以同等地位存放於記憶體內,並可按地址尋訪。
  • 指令和數據均用 二進制 數表示。
  • 指令由 操作碼 地址碼 組成,操作碼用來表示操作的性質,地址碼用來表示運算元載記憶體中的位置。
  • 程式存放在記憶體 中,這是核心特點。
  • 機器以 運算器 為中心:輸入輸出裝置與記憶體間的數據傳送透過運算器完成。
  • 1.2.2 電腦的硬體框圖

    典型的馮諾依曼電腦是以運算器為中心的,但是現代電腦已轉化為以記憶體為中心了,如下圖所示。以運算器為中心,會導致運算器成為電腦系統的瓶頸。

  • 運算器完成算術運算和邏輯運算,將運算中間結果保存在運算器內。
  • 記憶體用來存放數據和程式。
  • 控制器用來控制、指揮程式和數據的輸入、執行以及處理運算結果。
  • 輸入裝置將人們熟悉的資訊形式轉換為機器能辨識的資訊形式。如鍵盤滑鼠。
  • 輸出裝置將機器運算結果轉換為人們熟悉的資訊形式。如印表機、顯視器。
  • 由於運算器和控制器在邏輯關系和電路結構上聯系十分緊密,大規模積體電路制作工藝的出現,將運算器和控制器整合在同一個芯片上,即中央處理器CPU,輸入與輸出裝置簡稱為I/O裝置。

    因此現代電腦可認為包括三部份:CPU、I/O裝置與主記憶體(Main Memory)。CPU與主記憶體合起來又可稱為主機,I/O裝置可稱為外部裝置。

    現代電腦組成框圖如下圖所示。

  • 主記憶體:記憶體中的一類,用來存放程式和數據,可直接與CPU交換資訊。記憶體除了主記憶體外,還包括輔助記憶體,也稱外存。
  • 算數邏輯單元(ALU):簡稱算邏部件,用來完成算術邏輯運算。
  • 控制單元(CU):用來解釋記憶體中的指令,發出各種操作命令來執行指令。
  • ALU和CU是CPU的核心部件。
  • 1.2.3 電腦的工作步驟

    用電腦解決問題包括:上機前的準備和上機執行。下面用一個例子來描述整個過程。

    上機前的準備 包括:

  • 建立問題的數學模型;
  • 確定問題的計算方法;
  • 編制解決問題的程式。
  • 【例如】:計算{ax^{2}+bx+c}\ 。

    首先,建立數學模型,已建立好了,上述公式就是解決某個問題的。

    其次,確定上述公式的計算方法:

    直觀的結果可分為如下8步:

  • 將x\ 取至運算器中;
  • 乘以x\ ,得到x^{2}\ ,存在運算器中;
  • 乘以a\ ,得到ax^{2}\ ,存在運算器中;
  • 將ax^{2}\ 送至記憶體中;
  • 取b\ 至運算器中;
  • 乘以x\ ,得到bx\ ,存在運算器中;
  • 將ax^{2}\ 從記憶體中取出與bx\ 相加,得ax^{2}+bx\ ,存在運算器中;
  • 取c\ 與ax^{2}+bx\ 相加,得結果。
  • 若是將上式子覆寫為:(ax+b)x+c\ ,則只需要5步:

  • 將x取至運算器中;
  • 乘以a\ ,得ax\ ,存在運算器中;
  • 加b\ ,得ax+b\ ,存在運算器中;
  • 乘以x\ ,得(ax+b)x\ ,存在運算器中;
  • 加c\ ,得(ax+b)x+c\ ,存在運算器中。
  • 為了更快地解決問題,選擇5步的計算方法,至此計算方法確定了。

    最後,編制程式。此處的程式指機器語言程式(高級語言程式最終都會被轉譯為機器語言的)。我們要在某機器上執行(ax+b)x+c\ 的運算程式,需要知道該機器的相關資訊。假設該機器的指令字長為16位元,其中操作碼占6位,地址碼占10位。機器指令格式如下圖:

    其中,操作碼表示機器所執行的各種操作,如取數、存數、加減乘除、停機、打印等。地址碼表示參加運算的數位在記憶體內的位置。下圖表示了操作碼與具體操作的對應表。

    在編寫上述程式之前,需要先將a、b、c、x \ 存到記憶體的相應單元內。

    現在可以編寫程式了。

    至此,面向某機器的機器語言程式就編寫完成了,可以進行下一步的上機執行了。

    上機執行

    為了更清楚地描述電腦內部的執行過程,我們需要了解一個更細化的電腦組成框圖。

    在介紹程式執行過程之前,得先熟悉一下主記憶體、運算器、控制器、I/O四部份。

    主記憶體

    主記憶體包括記憶體M、各種邏輯部件及控制電路等。

    儲存體M由許多儲存單元組成,每個儲存單元又包含若幹個儲存元件,每個儲存元件能儲存一個二進制碼0/1。儲存字就是一個儲存單元記憶體儲的這串二進制碼,二進制碼的長度就是就是儲存字長。儲存字長可以是8位元、16位元、32位元(8的倍數)。每個儲存單元都有一個唯一的地址號,不會與其余儲存單元沖突。

    主記憶體的工作就是按儲存單元的地址號來對儲存單元進行讀寫。這種方式就是按地址存取。為了實作按地址存取的方式,主記憶體中配置了兩個寄存器MAR和MDR。

    MAR(Memory Address Register)是記憶體地址寄存器,用來存放欲存取的儲存單元的地址。MAR的位數與儲存單元的個數是相關的,如MAR有10位,那麽儲存單元就有2^{10}\ 個儲存單元。

    MDR(Memory Data Register)是記憶體數據寄存器,用來存放從儲存單元中取出/寫入的數據。MDR的位數與儲存單元的位數,即儲存字長是相等的。

    隨著硬體技術地發展,主記憶體都制成大規模積體電路的芯片,MAR與MDR也都整合在了CPU芯片中。

    運算器

    運算器最少包括3個寄存器:ACC、MQ、X。當然現代電腦內部往往設有通用寄存器組。ACC是累加寄存器,MQ是乘商寄存器,X為運算元寄存器。

    下面是個寄存器所存放的各類運算元。

    控制器

    控制器是電腦的神經中樞,由它指揮各部件自動、協調地工作。控制器中包括PC、IR、CU。控制器完成一條指令,具體包括3步:

  • 取指:從PC寄存器中取出指令的地址,去相應的地方得到相應的指令放到IR寄存器中。其中,PC寄存器存放待執行指令的地址。IR寄存器存放待執行指令。
  • 分析:從IR寄存器中取出待執行的指令,分析操作碼和地址碼。OP(IR)代表操作碼,Ad(IR)代表地址碼
  • 執行:分析當前指令所需完成的操作,並行出各種微操作命令序列。
  • I/O

    I/O包括各種I/O裝置及其相應的介面。每種I/O裝置都由介面與主機聯系,它接收CU發出的控制命令,並完成相應的操作。

    熟悉完上述四部份,下面根據下圖描述一下電腦完成一條取數指令(從儲存體中取某個數到ACC中)的全過程。

  • PC中存放著指令的地址,將其送到MAR;
  • 根據MAR中的地址,去儲存體中獲得具體的指令,並放到MDR中;
  • MDR中的指令送入IR中;
  • OP(IR)即IR存放的指令中的操作碼部份送入CU,CU進行分析,分析後得知這是取數指令;
  • Ad(IR)送給MAR;
  • 根據MAR中的地址,去儲存體獲得具體的數據,並放到MDR中;
  • 將MDR中的數據送入ACC寄存器。
  • 上面機器的執行過程就是執行一條指令的過程:從儲存體中取一個數到ACC的過程。執行(ax+b)x+c\ 的機器語言程式,就是機器順序執行一條條指令的過程。

  • 將程式透過輸入裝置送至電腦;
  • 程式首地址 ----> PC;
  • 啟動程式執行;
  • 取指令:PC -> MAR -> M -> MDR -> IR, (PC) + 1 -> PC;
  • 分析指令:OP(IR) -> CU; 分析出這是一條取數指令。
  • 執行指令:Ad(IR) -> MAR -> M -> MDR -> ACC; 執行取數指令。
  • ...
  • 一條條指令順序執行下去
  • 1.3 電腦硬體的主要技術指標

    1.3.1 機器字長

    機器字長是指CPU一次能處理數據的位數,通常與CPU的寄存器位數有關。

    字長越長,數的標識範圍越大,精度越高。

    機器字長對硬體的造價也有較大的影響。

    1.3.2 儲存容量

    儲存容量包括主記憶體容量和輔存容量。

    主記憶體容量是指主記憶體中存放二進制碼的總位數:儲存單元的個數乘以儲存字長。MAR的位數可以反應儲存單元的個數,MDR的位數反應儲存字長。

    現代電腦以字節數來描述容量的大小。一個字節為8位元。

    1.3.3 運算速度

    電腦的運算速度與許多因素有關:機器的主頻、操作型別、主記憶體速度等。

    評價運算速度的方式:

  • 吉普森法:考慮每條指令的執行時間以及它們在全部操作中所占的百分比。
  • MIPS:1秒鐘能執行幾百萬條指令。
  • CPI:執行一條指令所需的時鐘周期。
  • FLOPS:每秒鐘的浮點運算次數。