第一章 計算機系統概論

1.1 計算機系統簡介

1.1.2 計算機系統層次結構

系統軟件利用硬件提供的接口,實現本身的功能。程序員

應用軟件利用系統軟件提供的接口,調用系統軟件功能,實現本身的功能。編程

對於一個系統,能夠從不一樣的角度來抽象:物理構成和程序員的角度併發


這門課主要研究的是邏輯層微體系結構層,學習計算機中主要部件的邏輯實現,和主要部件間的鏈接性能


最先出現的是機器語言,利用機器提供的指令集,使用0101直接對硬件進行編程學習

爲了簡化程序的編寫,將機器語言符號化,產生了彙編語言。操作系統

然而,實際的機器不能識別彙編語言寫的程序,必須爲這臺機器提供彙編程序,把彙編語言編寫的程序轉化爲機器語言編寫的程序。至關於,在硬件機器的外層罩了一層軟件,這層軟件完成了對彙編語言->機器語言的翻譯。線程

把罩有彙編程序的機器,抽象成一個新的機器M2,對於高級語言來說,M2不能識別高級語言,因此在M2的外層罩了一層軟件,這層軟件完成對高級語言->彙編語言的翻譯。這樣,對於高級語言程序員來說,就抽象成了一個新的機器M3,M3能夠直接識別高級語言。翻譯

一條機器語言的指令,執行也是很複雜的,好比,要把一條機器語言的指令從存儲器中取出來,要先把這條指令的地址傳送給存儲器,要告訴存儲器進行讀,以後。。。這些操做有前後關係,有些能夠同時、有些不能夠,把這些操做指令句句細化,把他們放到微指令中。3d

//彙編語言擺脫不了實際機器的指令系統,不一樣機器都有與其對應的彙編語言
//這要求程序員要掌握不一樣機器的指令系統。
//翻譯程序有兩種,編譯程序和解釋程序
//編譯是一次性所有翻譯成機器語言,之後永遠不用再翻譯了
//解釋是一條一條的翻譯成機器語言,下次執行還翻譯

在機器語言和彙編語言間,還留有一個部分。彙編語言程序員能夠利用操做系統的功能進行編程,操做系統能夠管理軟硬件的資源。操做系統提供了在彙編語言和高級語言的使用和實現過程當中所需的某些基本操做,還起到了控制並管理計算機所有硬件和軟件資源的做用。code

MOV AH, 4H
INT 21H
//上面兩條指令完成了彙編語言應用程序的退出,返回了dos系統
//這是彙編語言調用了dos系統提供的中斷功能,實現了程序的退出

//M1也叫傳統機器(機器語言機器)
//M0叫微程序機器(微指令系統)

軟、硬件分界線不是一成不變的,一部分軟件功能由硬件實現,例如,目前操做系統已經實現了部分固化(把軟件永遠存放在只讀存儲器中),稱爲固件。

本課程主要研究M0和M1


1.1.3 計算機組成和計算機體系結構

計算機體系結構,定義了計算機系統的軟硬件的交界面,定義了哪些功能由軟件,哪些由硬件實現。提供了上層軟件和硬件的接口;

機器語言程序員見到的計算機系統的屬性(指令集、寄存器文件組織、內存編址單位)

概念性的結構與功能特性


計算機組成:實現計算機體系結構所體現的屬性;例如:具體指令的實現,在計算機體系結構中,有乘法指令的規定,那麼在計算機組成中要利用上面的規定,想辦法實現乘法指令,這個實現是指邏輯實現。

兩種機器,是否具備乘法指令,這是結構問題。

實現乘法指令採用什麼方式,這是組成問題。實現乘法指令能夠採用一個專門的乘法電路,也能夠用連續相加的加法電路實現。這兩種區別就是計算機組成的區別。

本課程主要研究計算機組成

1.2 計算機的基本組成

1.2.2 計算機的工做步驟

  1. 數學建模:對於不少科技問題,咱們能夠創建數學模型,例如圓周運動,能夠創建它的運動方程
  2. 肯定計算方法:計算機只能進行四則運算,對於sinX相關的方程組,使用泰勒公式,對於開方,使用迭代公式
  3. 編寫解題程序:程序(運算的所有步驟)| 指令(每個步驟)

把上述運算步驟寫成某計算機一 一對應的機器指令,就完成了運算程序的編寫。


設某機器的指令字長爲16位,其中操做碼佔6位,地址碼10位。

操做碼:表示機器所執行的各類操做,如取數,存數,加減乘除,停機,打印等。

地址碼:參加運算的數在存儲器內的位置。

機器指令的操做碼和地址碼都用0、1代碼組合來表示。

上圖,取數a,默認把數取出放入到ACC當中。000001表示取操做,0000001000表示數a的地址。


運算器

運算器最少包括3個寄存器(現代計算機內部每每有通用寄存器組),還有一個算數邏輯單元(ALU)

核心是ALU,ALU一般是一個組合電路,他的特色是若是輸入撤銷,那麼輸出結果也會撤銷。爲了完成功能,能對結果進行保存,必須在ALU輸入端加入寄存器,寄存器保存參與計算的數據,就須要兩個寄存器做爲輸入數據的保存設備。一個是ACC,還有一個是X;覺得乘法會讓數據的長度翻倍,因此要額外添加一個寄存器MQ;

ACC(Accumulate)爲累加器,MQ爲乘商寄存器,X爲操做數寄存器。

ACC和X做爲運算的輸入,ACC也用於保存運算結果。對於乘法,因爲結果長度要增長一倍,那麼把多出來的部分放在MQ;

不一樣的機器的運算結構是不一樣的,圖1.11,也就是上圖中的運算器,能夠把運算結果從ACC送至存儲器中的MDR,而存儲器的操做數也能夠從MDR送至運算器中的ACC、MQ或X。有的機器用MDR取代X寄存器。對於不一樣的機器,會有不一樣數量的寄存器,實際的狀況也會不一樣。

下面簡要分析一下上圖這種機器的運算器四則運算的操做過程。

M表明存儲器的任一地址號,[M]表明對應M地址號單元中的內容;X表示X寄存器,[X]表示寄存器中的內容;

假設ACC中已經有前一時刻的運算結果,而且做爲下述運算中的一個操做數,則

  • 加法操做過程:
[M] -> X 
[ACC] + [X] -> ACC 
//即把[ACC]看作被加數,先從主存中取[M],送到X中
//而後把被加數[ACC]和加數[X]相加,結果(和)保留在ACC中
  • 減法操做
[M] -> X
[ACC] - [X] -> ACC
//把[ACC]看作被減數,把[M]放入X
//把結果(差)保留在ACC中
  • 乘法操做
//乘法在計算機中能夠用加法和移位的方式來進行計算
//咱們在紙上計算乘法,是幾行數字錯位相加,在計算機中相似
//進行相加的時候,須要一個累加器,不能像紙上那樣一次性全加在一塊兒
//累加器選擇ACC,被乘數在X,乘數在MQ
[M] -> MQ 
[ACC] -> X
0 -> ACC	//ACC清0
[X] * [MQ] -> ACC | MQ  //高位放在ACC,低位放在MQ
//把[ACC]看作被乘數
  • 除法操做
[M] -> X
[ACC] ÷ [X] -> MQ //商暫留在MQ
餘數R在ACC中
//[ACC]看作被除數
//若要把商保存在ACC中,只要[MQ] -> [ACC]

控制器

控制器是計算機的神經中樞,他指揮各部件自動、協調工做。具體而言,他首先命令存儲器讀出一條指令,稱爲取指過程(取指階段);接着,對此指令分析,指出該指令要完成什麼操做,並按尋址特徵指明操做數的地址,稱爲分析過程(分析階段);最後根據操做數所在地址和指令的操做碼完成某種操做,稱爲執行過程(執行階段);這就是完成一條指令的三個階段。

控制器由程序計數器(program counter,PC)、指令寄存器(Instruction register,IR)、控制單元(CU)組成。

PC存放當前欲執行指令的地址,它與主存的MAR間有一條直接通路,且有自動加1的功能,便可以自動造成下一條指令的地址。IR用來存放當前指令,IR的內容來自主存MDR。IR中的操做碼(OP(IR))送到CU,記作OP(IR) -> CU,用來分析指令;其地址碼(AD(IR))做爲操做數的地址送至存儲器的MAR,記作AD(IR) -> MAR。CU用來分析當前指令所需完成的操做,併發出各類微操做命令序列,用以控制全部被控制對象。

控制器的功能:解釋指令(執行指令是運算器) + 保證指令的按序執行


接下來分析:

  • 一條指令在主機上的完成過程
  • 程序在主機上是如何執行的

完成一條指令有3個階段:

  1. 取指令
  2. 分析指令
  3. 執行指令
要完成取數指令
取指令(要知道指令的地址在哪)
欲執行指令地址保存在PC中
指令保存在存儲體中
	1. PC把指令地址送給MAR
	2. MAR送給存儲體
	3. 在控制器(CU)的控制下,存儲體把指定存儲單元中保存的那條<取數指令>取出送入MDR
	4. MDR把保存的指令送入IR
	//------完成取指工做,下一步,分析指令--------
	
	5. IR中保存的操做碼部分送入CU  
	//<取數指令>是把[M] -> ACC,爲了完成這個操做,在控制器的控制下
	//把指令中的地址部分送給存儲器,以便把數據從存儲體中取出
	//IR保存了當前的指令,還有當前指令操做數的地址
	6. 從IR的地址碼部分取出地址,送入MAR
	7. MAR把地址送給存儲體
	8. 在控制器的控制下,從存儲體中把取數指令要取的數取出,存入MDR
	9. 把MDR中的數送入ACC
	//完成取數操做

//對於存數指令,第一步仍是取指令
	1. PC把指令地址送給MAR
	2. MAR送給存儲體
	3. 在控制器(CU)的控制下,存儲體把指定存儲單元中保存的那條<取數指令>取出送入MDR
	4. MDR把保存的指令送入IR
	//------完成取指工做,下一步,分析指令--------
	5. IR中保存的操做碼部分送入CU,由CU對指令進行分析,分析這條指令要作什麼操做
	6. 從IR的地址碼部分取出地址,送入MAR
	7. MAR把地址送給存儲體,告訴存儲體有數據要存進來,地址是多少
	8. 在控制器的控制下,把ACC中的數據存入MDR
	9. 在控制器的控制下,把MDR中的數據保存在存儲體中

程序由一條條指令構成,執行程序就是執行一條條指令

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

  1. 機器字長:CPU一次能處理數據的位數,與CPU中寄存器的位數有關
/**個人CPU能夠對兩個8位二進制數作加法,結果仍是一個8位的二進制數。那麼在
這種狀況下,CPU一次能處理的數據位數是8位,不是24位。咱們上面討論的機器
字長,和ACC、X、MQ的字長相同。爲了簡化問題,咱們存儲單元的長度,也就是存儲
字長,和寄存器的長度也都是相同的。這只是模型機裏的假設,並非全部計算機
都這樣。

機器字長越長,機器性能越好。例如咱們把兩個64位的數相加,把他們的和保存在
64位寄存器中。若是機器字長是8位,寄存器也是8位,那麼要完成這64位的加法,
咱們就要作8次加法運算(相對應的8位進行相加)。若是機器字長就是64,寄存器
也是64,那麼就是一次計算。
*/
  1. 運算速度
/**
主頻:頻率越高,速度越快
核數:每一個核支持的線程數
主存:主存速度快,取指、取數速度快
吉普森法:曾經用過
現代指標:單位時間內執行指令的平均條數來衡量,用MIPS(百萬條指令每秒)作
計量單位。例如,某機每秒執行200萬條指令,記作2MIPS。

也能夠用CPI,也就是執行一條指令所需的時鐘週期(機器主屏的倒數)數,CPI越小越好

或者用FLOPS(浮點運算次數每秒)來衡量計算速度

*/

  1. 存儲容量

相關文章
相關標籤/搜索