電腦組成原理
電腦組成原理學習筆記。閱讀書籍為唐朔飛老師【電腦組成原理】第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器材可稱為外部器材。
現代電腦組成框圖如下圖所示。
1.2.3 電腦的工作步驟
用電腦解決問題包括:上機前的準備和上機執行。下面用一個例子來描述整個過程。
上機前的準備 包括:
【例如】:計算{ax^{2}+bx+c}\ 。
首先,建立數學模型,已建立好了,上述公式就是解決某個問題的。
其次,確定上述公式的計算方法:
直觀的結果可分為如下8步:
若是將上式子覆寫為:(ax+b)x+c\ ,則只需要5步:
為了更快地解決問題,選擇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步:
I/O
I/O包括各種I/O器材及其相應的介面。每種I/O器材都由介面與主機聯系,它接收CU發出的控制命令,並完成相應的操作。
熟悉完上述四部份,下面根據下圖描述一下電腦完成一條取數指令(從儲存體中取某個數到ACC中)的全過程。
上面機器的執行過程就是執行一條指令的過程:從儲存體中取一個數到ACC的過程。執行(ax+b)x+c\ 的機器語言程式,就是機器順序執行一條條指令的過程。
1.3 電腦硬件的主要技術指標
1.3.1 機器字長
機器字長是指CPU一次能處理數據的位數,通常與CPU的寄存器位數有關。
字長越長,數的標識範圍越大,精度越高。
機器字長對硬件的造價也有較大的影響。
1.3.2 儲存容量
儲存容量包括主記憶體容量和輔存容量。
主記憶體容量是指主記憶體中存放二進制碼的總位數:儲存單元的個數乘以儲存字長。MAR的位數可以反應儲存單元的個數,MDR的位數反應儲存字長。
現代電腦以字節數來描述容量的大小。一個字節為8位元。
1.3.3 運算速度
電腦的運算速度與許多因素有關:機器的主頻、操作類別、主記憶體速度等。
評價運算速度的方式: