[toc]
綱要:
計算機系統(tǒng)簡介
計算機系統(tǒng)基本組成
計算機硬件主要技術指標
1.1 計算機系統(tǒng)簡介
Q1:現代計算機由哪幾部分組成?(頂層抽象)
A:軟件 + 硬件上荡。本課程主要講硬件的設計邏輯虑啤。
系統(tǒng)復雜性管理方法
1作媚、抽象:隱藏系統(tǒng)中不重要的細節(jié)
2、層次化:劃分為多個模塊庭猩,分別對模塊設計
3窟她、模塊化:有明確定義的功能與接口
4、規(guī)則性(regularity):模塊更容易被重用
從程序員角度來分層:高級語言—>匯編語言—>操作系統(tǒng)—>機器語言—>微指令系統(tǒng)
1.2 計算機的基本組成
一蔼水、馮諾依曼計算機特點
五大部分組成(運算器震糖、控制器、存儲器徙缴、輸入试伙、輸出) (是不是一定需要這五個部件?)
指令和數據以同等地位存于存儲器于样,可按址尋訪
指令和數據都是二進制表示(為什么用二進制疏叨?換成別的進制不可以嗎?)
指令由操作碼與地址碼組成
<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">存儲程序</mark>(核心特征)
以運算器為中心
其結構的問題:<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">以運算器為核心</mark>穿剖,運算器成為性能的瓶頸蚤蔓;不具有層次化特征
二、計算機硬件框圖
改進:
<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">以存儲器為中心</mark>的計算機硬件框圖
- image-20190618141831974.png
層次化劃分:
注:主存+CPU構成主機糊余;輔存和輸入輸出設備構成I/O系統(tǒng)
將圖中每個部分進一步細化秀又,再重新組裝起來就構成了計算機組成系統(tǒng)单寂。(層次化+模塊化)
思考:真正的運算器、控制器吐辙、存儲器結構都是什么樣的宣决?(這正是本課程要學習的)
Q:一個現實中的問題,如何用計算機來解決昏苏?
Q:是不是所有的問題都可以用計算的方法來解決尊沸?(可計算性理論/算法理論)(e.g.圖靈機停機問題)
假設我們面對的是一個可計算問題,如何解決一個問題呢贤惯?
三洼专、計算機工作步驟
我們設定一個可計算的問題,來對計算機組成框圖的各個部件進行細化孵构。
1屁商、上機前的準備
建立數學模型
確定計算方法
-
編制解題程序
程序:運算的全部步驟
指令:每一個步驟
-
編程舉例:
- image-20190619114800662.png
可以看出上面兩種算法,前一種有一些將計算結果保存到存儲器中的步驟颈墅,后者全都在運算器中進行運算蜡镶。
-
把上面的步驟用指令的方式表示:
前8個地址保存的是指令,后5個地址保存的是數據精盅;每一條指令都由操作碼和地址碼組成帽哑;其中注意乘法部分,將乘法的結果存放到ACC中叹俏,可能存在溢出的問題,如何解決呢僻族?
指令和數據保存在存儲器中粘驰,所以存儲器是什么樣的?如何訪問呢述么?每次訪問獲得的數據的位數是多少呢蝌数?我們先從存儲器的結構來看。
2度秘、計算機的解題過程
2.1存儲器的基本組成
類比:
存儲體 — 存儲單元 — 存儲原件(0/1)
大樓 — 房間 — 床位 (有人/沒人)
重要概念:
<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">存儲單元</mark> :存放一串二進制代碼(可能是指令顶伞,也可能是數據)
<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">存儲字</mark> : 存儲單元中二進制代碼的組合
<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">存儲字長</mark>:存儲單元中二進制代碼的位數(32位/64位)
每個存儲單元賦予一個地址號,每個存儲單元中存放一個存儲字剑梳;存儲單元按地址尋訪
<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">MAR</mark>(Memory Address Register)存儲器地址寄存器:存地址的唆貌,反映存儲單元的個數
-
<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">MDR</mark>(Memory Data Regester)存儲器數據寄存器:存數據的,反映存儲字長
設MAR=4位 說明存儲單元個數是2的4次方=16個(反映存儲單元的個數);
MDR=8位垢乙,說明存儲字長8位
解釋:計算機中的主存數據寄存器(MDR)锨咙,與主存地址寄存器(MAR)幫助完成CPU和主存儲器之間的通信:
MAR用來保存數據被傳輸到的位置的地址或者數據來源位置的<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">地址</mark>;
MDR保存要被寫入地址單元或者從地址單元讀出的<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">數據</mark>追逮。
2.2 運算器的基本結構及操作過程
運算器的功能是什么酪刀,如何工作粹舵?
加法運算
乘法運算
或與非
運算器結構:
ALU(Arithmetic Logic Unit):算數邏輯單元,核心運算單元骂倘;通常是個組合電路眼滤,其特點是如果輸入撤銷,那么輸出結果也會撤銷历涝,所以如果要保存結果需要在輸入輸出端加上相應的寄存器(ACC柠偶,X);
ACC(Accumulator):累加器睬关;
X: 數據寄存器诱担;
MQ:乘商寄存器(在乘法過程中,產生的結果是操作數的兩倍)為了把乘法結果都保存下來电爹,需要此寄存乘法增加的部分蔫仙;
ACC | MQ | X | |
---|---|---|---|
加法 | 被加數、和 | 加數 | |
減法 | 被減數丐箩、差 | 減數 | |
乘法 | 乘法結果的高位 | 乘數摇邦、乘法結果的低位 | 被乘數 |
除法 | 被除數、余數 | 商 | 除數 |
乘法:加法+移位操作 (<u style="box-sizing: border-box;">這里有點不太清楚</u>)
除法:減法+移位操作 (<u style="box-sizing: border-box;">這里有點不太清楚</u>)
<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">(回去看看《編碼》屎勘、《CSAPP》第二章理解理解施籍,再回過來看看)</mark>
2.3 控制器的基本結構
運算器中各種操作都是在控制器的控制下執(zhí)行的。那么控制器的功能是什么概漱,進而其結構應該是什么樣的呢丑慎?
功能:
解釋指令
保證指令按順序執(zhí)行
基本結構:
完成一條指令:
取指令(PC)
分析指令(IR)
執(zhí)行指令(CU)
結構:
CU:核心控制單元,執(zhí)行指令
PC:程序計數器瓤摧,用來存放當前要執(zhí)行<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">指令的地址</mark>竿裂,具有計數功能(PC) + 1 —> PC(不同的機型,這里不一定+1照弥,即相鄰兩個指令的物理地址不一定相鄰)
IR:指令寄存器腻异,存放當前欲執(zhí)行的指令
2.4 主機完成一條指令的過程(極其重要!)
這里要好好理解每一個指令步驟这揣,理解了每一個步驟就相當于理解了這一章悔常。
(1)主機完成一條取數指令的步驟
取數指令的功能:把存儲體(主存/內存)中的數存到ACC中
完成一條指令的三個階段:
取指令
分析指令
執(zhí)行指令
(注:指令:操作碼+地址碼)
<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">取數操作步驟分析</mark>(如圖):
要執(zhí)行的指令的地址保存在PC中,指令保存在存儲體中给赞;第一步將PC中要執(zhí)行的指令的地址放入MAR;
MAR將指令地址送給存儲體M机打;
在控制器的控制下,存儲體M將指令地址中的指令送給MDR;
在控制器的控制下塞俱,將MDR中的指令存到IR中姐帚;(到此,取指令的操作完成障涯;PC—>MAR—>M—>MDR—>IR)
分析指令:將IR中指令的操作碼部分給CU罐旗,由CU去分析控制執(zhí)行膳汪;
把IR中指令中待取的數的地址部分送到MAR;
MAR將數的地址送給存儲體M九秀;
在控制器的控制下遗嗽,存儲體M將數的地址中的數送給MDR;
在控制器的控制下,MDR中的數交給ACC保存鼓蜒。
(2)主機完成一條存數操作步驟
存數指令的功能:把存放在ACC中的計算結果存到內存單元M中
<mark style="box-sizing: border-box; background-color: rgb(255, 255, 0); color: rgb(0, 0, 0); background-position: initial initial; background-repeat: initial initial;">存數操作步驟分析</mark>(如圖):
要執(zhí)行的指令的地址保存在PC中痹换,指令保存在存儲體中;第一步將PC中要執(zhí)行的指令的地址放入MAR;
MAR將指令地址送給存儲體M都弹;
在控制器的控制下娇豫,存儲體M將指令地址中的指令送給MDR;
在控制器的控制下,將MDR中的指令存到IR中畅厢;(到此冯痢,取指令的操作完成;PC—>MAR—>M—>MDR—>IR)
分析指令:將IR中指令的操作碼部分給CU框杜,由CU去分析控制執(zhí)行浦楣;
把IR中指令中待存的數的地址送到MAR;(從這一步開始不同)
MAR將數的地址送給存儲體M咪辱,告訴存儲體要存進來一個數振劳,其地址是多少;
在控制器的控制下油狂,將ACC中要存的數交給MDR;
在控制器的控制下历恐,將MDR中的數交給存儲體。
存取數指令已經分析完了选调,那么加法夹供、乘法、停機仁堪、打印等指令在這個模型下怎么執(zhí)行?(自行思考)
2.5 程序在計算機上如何執(zhí)行
一條指令的執(zhí)行步驟我們已經知道了填渠,那么一條程序(多條指令的指令集)的執(zhí)行步驟就是把一條條指令按順序執(zhí)行弦聂;
這里同樣只是分析了取指令的步驟,任何一條指令都可以分為三步執(zhí)行:取指令—>分析指令—>執(zhí)行指令氛什。注意PC執(zhí)行完一條指令之后莺葫,就可以+1了,指向下一條指令的地址枪眉。
1.3 計算機硬件指標
一.機器字長
CPU一次能處理數據的位數(如可以對兩個8位二進制數進行加法捺檬,就是8位),與CPU中的寄存器(ACC,X,MQ)的位數有關贸铜。
一般來說堡纬,機器字長越長性能越好聂受。
二.運算速度
前兩個是硬件指標;后四個是從指令執(zhí)行的角度來衡量的烤镐。
三.存儲容量
存放二進制信息的總位數
1.4 總結
首先蛋济,本課程介紹的是硬件的組成邏輯。介紹了4中復雜系統(tǒng)的管理方法:抽象炮叶、層次化碗旅、模塊化、規(guī)則化等镜悉。
然后祟辟,本章介紹了一條程序的指令(分為操作碼和地址碼)到底是在主機中怎樣執(zhí)行的,我覺得這部分對我來說很重要侣肄,我大概了解了計算機關于程序或指令執(zhí)行的重要結構:運算器旧困、存儲器、控制器茫孔,并且了解他們如何工作的叮喳。
最后,介紹了計算機的硬件指標缰贝,其實也就是分別對應于CPU結構和存儲器結構馍悟,簡單了解一下。