1.1 計算機系統簡介
1.1.1 計算機的軟硬件概念
計算機系統由“硬件”和“軟件”兩大部分組成。
由於“軟件”的發展不僅可以充分發揮極其的“硬件”功能,提高機器的工作效率,而且已經發展到能局部模擬人類的思維活動,因此在整個計算機系統內,“軟件”的地位和作用已經成為評價計算機系統性能好壞的重要標志。
計算機的軟件可以分為兩大類:系統軟件和應用軟件。
系統軟件有成為系統程序,主要用來管理整個計算機系統,監視服務,使系統資源得到合理調度,高效運行。它包括標准程序庫,語言處理程序、操作系統、服務程序等。
1.1.2 計算機系統的層次結構
匯編語言擺脫不了實際機器的指令系統,因此匯編語言沒有通用性。
編譯程序是將用戶編寫的高級語言程序的全部語句一次全部翻譯成機器語言程序,然后在執行機器語言程序。
解釋程序是將原程序的一條語句翻譯成對應於機器語言的一條語句,並且立即執行這條語句,接着翻譯源程序的下一條語句,並執行這條語句,如此反復直至完成源程序的全部翻譯任務。
微程序機器直接將每一條機器指令翻譯成一組微指令,構成一個微程序。
體系結構:
虛擬機器M4(高級語言機器)用編譯程序翻譯成匯編語言程序
虛擬機器M3(匯編語言機器)用匯編程序翻譯成機器語言程序
虛擬機器M2(操作系統機器)用機器語言解釋操作系統
傳統機器M1(機器語言機器)用微程序解釋機器指令
微程序機器M0(微指令系統)由硬件直接執行微指令
1.1.3 計算機組成和計算機體系結構
組成和結構的區別:例如,指令集中有哪些命令是結構問題,至於每個命令是如何實現的則是組成問題。
1.2 計算機的基本組成
1.2.1 馮諾依曼計算機的特點
- 計算機由運算器、存儲器、控制器、輸入設備、輸出設備五大部件構成;
- 指令和數據以同等地位存放在存儲器中,並可按地址訪問;
- 指令和數據均用二進制數表示;
- 指令有操作碼和地址碼組成,操作碼用來表示操作的性質,地址碼用來表示操作數在存儲器中的位置;
- 機器以運算器為中心,輸入輸出設備與存儲器間的數據傳輸通過運算器完成。
1.2.2 計算機的硬件框圖
典型的馮諾依曼計算機是以運算器為中心的,現代的計算機則是以存儲器為中心。


各部件的功能:
- 運算器用來完成算術運算和邏輯運算,並將結果的中間結果暫存在運算器中;
- 存儲器用來存放數據和程序;
- 控制器用來控制、指揮程序和數據的輸入、運行以及處理運算結果;
- 輸入設備用來將人們熟悉的信息形式轉化為機器能識別的信息形式;
- 輸出設備將機器運算結果轉化為人們熟悉的信息形式。
計算機的五大部件(五大子系統)在控制器的統一指揮下,有條不紊地自動工作。
由於運算器和控制器在邏輯關系和電路結構上聯系十分緊密,往往將這兩大部件集成在同一芯片上,通常將他們合起來統稱為中央處理器(Central Processing Unit, CPU),輸入和輸出設備簡稱為I/O設備。於是現代計算機可認為由三大部分組成:CPU、I/O設備及主存儲器。CPU和主存儲器成為主機,I/O設備稱為外部設備。

算術邏輯單元用來完成算術邏輯運算,控制單元用來解釋存儲器中的指令,並發出各種操作命令來執行。
存儲器分為主存儲器和輔存(外存,硬盤?)。其中主存儲器直接與CPU交換信息。

1.2.3 計算機的工作
主存儲器
主存儲器由存儲體、MDR(Memory Data Register,它的位數與存儲字長相等)、MAR(Memory Address Register)以及各種邏輯部件及控制電路等組成,其中MDR存儲的是要操作存儲體中存儲單元的地址,MAR是要寫入或讀出的數據。
一個存儲體由若干個存儲單元構成,每個存儲單元由若干個存儲元件構成,一個存儲元件能存儲一個二進制數字。
一個存儲單元可以存儲一串二進制代碼,稱這串二進制代碼為一個存儲字,這串二進制代碼的位數成為存儲字長。每個存儲單元都會被分配一個編號稱為存儲單元的地址號。
主存的工作方式是按照存儲單元的地址號來實現對存儲字各位的寫、讀,成為按地址存取方式。
運算器
運算器應至少包含三個存儲器:ACC(累加器)、MQ(乘商寄存器)、X(操作數寄存器)以及一個算術邏輯單元。
寄存器\操作數\運算 | 加法 | 減法 | 乘法 | 除法 |
---|---|---|---|---|
ACC | 被加數及和 | 被減數及差 | 乘積高位 | 被除數及余數 |
MQ | 乘數及乘積低位 | 商 | ||
X | 加數 | 減數 | 被乘數 | 除數 |
控制器
控制器由程序計數器(PC)、指令寄存器(IR,Instruction Register)、控制單元(CU)組成。
各部件的作用:
- PC與主存的MAR之間有一條直接通路,且具有自動加一的功能。
- IR用來存放當前的指令,IR的內容來自主存的MDR。
- IR中的操作碼(OP(IR))送至CU,用來分析指令。
- IR中的地址碼作為操作數的地址送至存儲器的MAR。
控制器是計算機的神經中樞,由他指揮各部件自動、協調地工作。
流程:
- 命令存儲器讀出一條指令,稱為取指過程;
- 對這條指令進行分析,指出該指令要完成什么樣的操作,並按尋址特征指明操作數的地址,稱為分析過程;
- 根據操作數所在的地址以及指令的操作碼完成某種操作,稱為執行過程。

1.3 計算機硬件的主要技術指標
機器字長
機器字長是指CPU一次能處理數據的位數,通常與CPU的寄存器位數有關,字長越長數的表示范圍越大,精度也越高。(現在主流語言最高只支持int64是因為這個嗎?)
存儲容量
存儲器的容量包括主存容量和輔存容量。
主存容量為主存中存放二進制代碼的總位數:存儲容量=存儲單元個數*存儲字長。
運算速度
早期用完成一次加法或乘法所需時間衡量機器運算速度。
之后采用吉布森(Gibson)法,綜合考慮每條指令的執行時間(加權):\(T_M = \sum_{i=1}^n f_i t_i\).
其中\(T_m\)為機器運行速度;\(f_i\)為第i種指令占全部操作的百分比數;\(t_i\)為第i種指令的執行時間。
現在普遍采用單位時間內執行指令的平均條數來衡量。用MIPS(Million Instruction Per Second)作為計量單位,例如某個機器每秒能執行200w條指令,則為2MIPS;或用FLOPS(Floating Point Operation Per Second,浮點運算次數每秒)來衡量運算速度。