您當前的位置:首頁 > 攝影

計算機組成原理(萬字爆肝整理)

作者:由 廢話少講 發表于 攝影時間:2022-10-18

宣告:本篇內容基於王道的教學影片。

第一章 計算機系統概述

“較簡單,不做過多贅述,後面會詳細學到”

第一節 計算機系統層次結構

1。計算機系統的基本組成:硬體+軟體

2。計算機硬體的基本組成:運算器+儲存器+控制器+輸入裝置+輸出裝置

3。系統軟體和應用軟體

系統軟體

作業系統、資料庫管理系統、語言處理程式、分散式軟體系統、網路軟體系統、標準庫語言、服務性程式

應用軟體

科學計算類程式、工程設計類程式、資料統計與處理程式

4。(易考)翻譯程式:

彙編程式(彙編器)

將組合語言程式翻譯成機器語言程式

解釋程式(直譯器)

將源程式翻譯成機器指令並立即執行

編譯程式(編譯器)

將高階語言翻譯城機器語言或組合語言

第二節 計算機效能指標

吞吐量

:表徵一臺計算機在某一時間間隔內能夠處理的資訊量。

響應時間

:表徵從輸入有效到系統產生響應之間的時間度量,用時間單位來度量。

利用率

:在給定的時間間隔系統被實際使用的時間所佔的比率,用百分比表示。

處理機字長

:指處理機運算器中一次能夠完成二進位制數運算的位數,如 32 位、64 位。

匯流排寬度

:一般指 CPU 中運算器與儲存器之間進行互連的內部匯流排二進位制位數。

儲存器容量

:儲存器中所有儲存單元的總數目,通常用 KB、MB、GB、TB 來表示。公式一般是:位數×個數

(MAR×MDR)

儲存器頻寬

:單位時間內從儲存器讀出的二進位制數資訊量,一般用位元組數/秒錶示。

主頻/時鐘週期

:CPU 的工作節拍受主時鐘控制,主時鐘不斷產生固定頻率的時鐘度量單位是 MHz、GHz

主頻的倒數稱為 CPU 時鐘週期(T),T=1/f,度量單位是 μs、ns。

K=

10^3

,M=

10^{6}

,G=

10^9

易錯:時鐘頻率的提高,不能保證CPU執行速度又同倍速的提高,有時候還會減慢。

CPU 執行時間

:表示 CPU 執行一般程式所佔用的 CPU 時間,可用下式計算:

CPU 執行時間 = CPU 時鐘週期數 * CPU 時鐘週期

CPI

:執行一條指令所需的平均時鐘週期數。用下式計算:

CPI = 執行某段程式所需的 CPU 時鐘週期數 / 程式包含的指令條數

MIPS

:(Million Instructions Per Second)的縮寫,表示平均每秒執行多少百萬條定點指令數,用下式計算:

MIPS = 指令數 / (程式執行時間 * 10^6)

FLOPS

:(Floating-point Operations Per Second)的縮寫,表示每秒執行浮點操作的次數,用來衡量機器浮點操作的效能。用下式計算:FLOPS = 程式中的浮點操作次數 / 程式執行時間(s)

題目總結:

①對於

高階

語言程式設計師來說,浮點數格式、乘法指令、資料如何在運算器中運算時透明的。對於

組合語言

程式設計師,指令格式,機器構造,資料格式則不是透明的。

②在CPU中,IR、MAR、MDR對各類程式設計師都是透明的。

③機器字長,指令字長,儲存字長

機器字長也稱字長——是計算機直接處理二進位制資料的位數,機器字長一半等於內部暫存器的大小,它決定了計算機的運算精度。

指令字長——一個指令中包含的二進位制程式碼的位數。

儲存字長——一個儲存單元中二進位制程式碼的長度。

指令字長一般是儲存字長的整數倍,若指令字長等於儲存字長的2倍,則需要2次訪存來取出一條指令,因此取值週期為機器週期的2倍;若指令字長等於儲存字長,則取值週期等於機器週期。

第二章 資料的表示和運算

一、無符號整數的表示和運算

Ⅰ、無符號整數的加法:從最低位開始,按位相加,並往更高位進位。

Ⅱ、”被減數“不變,”減數“

全部按位取反

,末位+1,

減法變加法。

二、帶符號整數的表示和運算

帶符號的整數表示:原碼、補碼、反碼

※帶符號的整數運算可以用原碼嗎?

用原碼的話符號位不能參與運算,需要設計複雜的硬體電路才能處理,貴。

這時候就可以利用補碼來進行帶符號的整數運算。

①涉及原碼和補碼的轉化。

正數:原碼->補碼,不變

負數:原碼->補碼,除符號位外,各位取反,末位+1

Ⅰ、補碼的加法

計算機組成原理(萬字爆肝整理)

從最低位開始,然後按位相加,並往高位進位。算出來的結果,轉回原碼,就可以得到正值。

補充:補碼->原碼:類似,除符號位外,各位取反,末位+1

Ⅱ、補碼的減法

※加法電路造價便宜,減法電路造價昂貴,若將減法變為加法,更加economize。

那我們知道了”減數“的補碼,那如何求得”減數“負值的補碼呢?

補碼

全部位

取反,末位+1(易錯這裡是全部位取反,而帶符號位的負數,是除符號位外,各位取反)

其實啊,這裡的運算的邏輯結構和無符號的減法運算是一樣的,通用一套電路,省錢!

三、原碼、反碼和補碼的特性對比

8bit

合法的表示範圍

最大的數

最小的數

真值0的表示

帶符號原碼

-127~127

127

-127

+0=00000000

-0=10000000

帶符號反碼

-127~127

127

-127

+0=00000000

-0=11111111

帶符號補碼

-128~127

127

-128

-/+0=00000000

只有這一種

無符號整數

0~255

255

0

00000000

帶符號移碼

-128~127

127

-128

0=10000000

只有這一種

原碼和反碼的合法表示範圍完全相同,而且都有兩種表示真值0的方法。

補碼的合法表示範圍多一個負數,原因就是隻有一種0的表示方法,因為-0的補碼就是00000000

計算機組成原理(萬字爆肝整理)

四、移碼,定點小數

移碼:在補碼的基礎上符號位取反。且移碼只能表示整數。表示範圍和補碼相同。

移碼的作用:

移碼的作用就是方便計算機比較兩個數數值的大小。

定點小數的編碼表示:原碼、反碼、補碼。

運算規則和整數的運算規則一模一樣。

五、電路的基本原理和加法器設計

Ⅰ、補碼/無符號整數加減法運算器

計算機組成原理(萬字爆肝整理)

減法運算過程:

①首先Sub訊號置為1;

②多路選擇器的值為1,Y(減數)經過非門,都取反;

③cin來自低位加1;

Ⅱ、標誌位生成

①進位標誌CF (Carry Flag)只對無符號運算有意義

當運算結果的最高有效位有進位(加法)或借位(減法)時,進位標誌置1,

即CF = 1;否則CF= 0。

49H + 6DH=B6H,沒有進位:CF = 0

BBH + 6AH=(1)25H,有進位:CF = 1

②零標誌ZF (Zero Flag)

若運算結果為0,則ZF = 1;否則ZF = 0

49H + 6DH=B6H,結果不是零:ZF = 0

75H + 8BH=(1)00H,結果是零:ZF = 1

③符號標誌SF (Sign Flag)只對有符號運算有意義

運算結果最高位為1,則SF = 1;否則SF = 0

49H + 6DH=B6H=10110110B,SF=1

④溢位標誌OF (Overflow Flag)只對有符號運算有意義

若算術運算的結果有溢位,則OF=1;否則 OF=0

49H + 6DH =B6H,產生溢位:OF = 1

75H + 8BH =(1)26H,沒有溢位:OF = 0

進位CF和溢位OF位有什麼區別呢?

進位標誌表示無符號數運算結果是否超出範圍,運算結果仍然正確,對有符號位加減法無意義。

溢位標誌表示有符號數運算結果是否超出範圍,運算結果已經不正確,對無符號加減無意義。

溢位的判斷判斷運算結果是否溢位有一個簡單的規則:

只有當兩個相同符號數相加(包括不同符號數相減),而運算結果的符號與原資料符號相反時,產生溢位;因為,此時的運算結果顯然不正確其他情況下,則不會產生溢位

1。當兩個符號相同的數相加,結果的符號與之相反,則OF=1,否則OF=0。

2。當兩個符號不同的數相減,結果的符號與減數相同,則OF=1,否則OF=0。

六、定點數的移位運算

左移1位相當於×2,右移1位相當於÷2

原碼:符號位不參與移位。左移,右移都補0

反碼:符號位不參與移位。

若反碼是負數補1;若反碼是正數補0

補碼:符號位不參與移位。

若補碼是負數左移低位補0,右移高位補1;若補碼是正數,左移右移都補0

七、原碼補碼的乘法除法運算

Ⅰ、原碼的一位乘法

符號位透過異或確定;數值部分透過被乘數和乘數絕對值的n輪加法、移位完成,根據當前乘數中參與運算的位確定(ACC)加什麼。若當運算位=1,則(ACC)+[|x|],若為0,則(ACC)+1。每輪加法完成後,ACC,MQ的內容統一邏輯右移。

計算機組成原理(萬字爆肝整理)

先ACC初始化。x置於通用暫存器中,y置於MQ。

Ⅱ、補碼的一位乘法

原碼一位乘法和補碼一位乘法的不同點

原碼一位乘法

補碼一位乘法

進行n輪的加法、移位

進行n輪加法,移位,最後再多來一次加法

每次加法相加,只有兩種情況+0或加x

每次加法加有三種情況,0或+x或+[-x]

每次移位都是邏輯右移,補1

每次都是補碼的右移,正數右移補0,負數右移補1

符號位不參與運算

符號位參與運算

會新增一位輔助位

輔助位-MQ中“最低位”=1時,(ACC)+[X)]補

輔助位-MQ中“最低位”=0時,(ACC)+0

輔助位-MQ中“最低位”=-1時,(ACC)+[-X]補

計算機組成原理(萬字爆肝整理)

八、C語言型別轉換和資料儲存排列

C語言中定點整數是用”補碼“儲存的。

無符號數轉為有符號數:不改變資料內容,改變解釋方式。

長整數變為短整數:高位截斷,保留低位。

短整數變長整數:若為有符號數,在符號位和數值位添1,若為無符號,直接在高位添0。

大小端模式:大端方式便於人類閱讀;小段方式便於機器處理,因為機器最先讀入的就是最應被處理的資料。

邊界對齊:假設儲存字長為32位,則1個字=32bit,半字=16bit。每次訪存只能讀/寫1個字。若採用邊界對齊的方式,則訪問一個字/半字都需要一次訪存,雖然會造成一點點的空間浪費。採用不對齊的方式,對空間利用率高,但是可能會涉及到兩次訪存時間大大增加。

九、浮點數的表示和運算

Ⅰ、概念:之前我們學習了定點數,其中「定點」指的是約定小數點位置固定不變。那浮點數的「浮點」就是指,其小數點的位置是可以是

漂浮不定

的。

Ⅱ、表示:階符表示的是階碼正負,尾數的數符表示的是尾數正負。

階碼:常用補碼或移碼錶示的定點整數,反映表示範圍。

尾數:常用原碼或補碼錶示的定點小數,反映精度。

計算機組成原理(萬字爆肝整理)

Ⅲ、

規格化:規定尾數的最高位必須是有效位

①”有效位“又分兩種情況。分為尾數是補碼錶示還是原碼錶示

原碼錶示的尾數視格化:

尾數的最高數值位必須是1

補碼錶示的尾數規格化:

尾數最高數值位必須和尾數符號位相反

②左規:當浮點數運算的結果為非規格化時要進行規格化處理,將尾數算數左移一位,階碼減1。

b=

2^2\times(+0.01001)=2^1\times(+0.10010)

#尾數最高位為0,左規

右規:當

浮點數運算的結果尾數出現溢位(雙符號位為01或10)時

,將尾數算數右移一位,階碼加1。

計算機組成原理(萬字爆肝整理)

採用雙符號位,當發生溢位時(雙符號位為01或10),可以採用右規,更高位的符號位是正確的符號位。

③雖然浮點數的範圍和精度也有限,但其範圍和精度都已非常之大,所以在計算機中,對於小數的表示我們通常會使用浮點數來儲存。

計算機組成原理(萬字爆肝整理)

十、IEEE 754

背景:在浮點數提出的早期,各個計算機廠商各自制定自己的浮點數規則,導致不同廠商對於同一個數字的浮點數表示各不相同,在計算時還需要先進行轉換才能進行計算。後來 IEEE 組織提出了浮點數的標準,統一了浮點數的格式,並規定了單精度浮點數 float 和雙精度浮點數 double,從此以後各個計算機廠商統一了浮點數的格式,一直延續至今。

計算機組成原理(萬字爆肝整理)

計算機組成原理(萬字爆肝整理)

計算機組成原理(萬字爆肝整理)

十一、浮點數運算(重點)

現代計算機表示數的方法通常都是浮點數了,所以這節很重要。

①對階:小階向大階靠齊,方便計算機對尾數進行處理。

②尾數加減:尾數常規加減。

③規格化:如果尾數加減出現類似0。0099517×

10^{12}

時,需要“左規”;

如果尾數加減出現類似99。517107×

10^{12}

時,需要“右規”。

④舍入:尾數位數有限,若規定只能保留6位有效尾數,則9。9517107×

10^{12}

→9。95171×

10^{12}

(多餘的直接砍掉)或者,9。9517107×

10^{12}

→9。95172×

10^{12}

(若砍掉分非0,則入1)或者,也可以採用四捨五入的原則,當捨棄位≥5時,高位入1。

⑤判溢位:若規定階碼不能超過兩位,則運算後階碼超出範圍,則溢位。

如:9。85211×

10^{99}

+9。96007×

10^{99}

=19。81218×

10^{99}

規格化並用四捨五入的原則保留6位尾數,得1。98122×

10^{100}

,階碼超過兩位,溢位。

計算機組成原理(萬字爆肝整理)

強制型別轉化:

無損:char->int->long->double

float->double

有損:int->float,可能會損失精度

float->int,可能會溢位,也可能會損失精度

第三章 儲存系統

第一節 儲存器概述

一、儲存器的層次結構

暫存器->Cache->主存->輔存->外存

Cache-主存:解決了主存與CPU速度不匹配的問題。

主存-輔存:實現虛擬儲存系統,解決了主存容量不夠的問題。

※輔存中的資料要調入到主存才能被CPU訪問

二、儲存器的分類

Ⅰ、按照存取方式:分為隨機存取儲存器(RAM),如記憶體;順序存取儲存器(SAM),如磁帶;直接存取儲存器(DAM),如磁碟;相聯儲存器(可按內容訪問的儲存器,CAM),如快表。

Ⅱ、按資訊是否可改:分為讀/寫儲存器和只讀儲存器(ROM)

Ⅲ、斷電後是否消失:分為易失性儲存器,如記憶體、Cache;非易失性儲存器,如磁碟、光碟

三、儲存器的效能指標

1。儲存容量:儲存字數×字長

2。單位成本:每位價格=總成本/總容量

3。儲存速度:資料傳輸率=資料的寬頻/儲存週期

儲存週期=存取時間+恢復時間

第二節 主儲存器

一、SRAM和DRAM

一個靜態RAM,一個動態RAM。動態的用於主存,靜態的用於Cache

SRAM和DRAM的差別

型別特點

SRAM

DRAM

儲存資訊

觸發器

電容

破壞性讀出

讀出後是否需要重寫

不用

需要

執行速度

整合度

發熱量

儲存成本

是否易失

易失

易失

是否需要重新整理

不需要

需要

作用

常用作Cache

常用作主存

二、ROM只讀儲存器

RAM晶片——易失性,斷電後資料消失

ROM晶片——非易失性,斷電後資料不會消失

①MROM——掩模式只讀儲存器:任何人都不可重寫

②PROM——可程式設計只讀儲存器:寫一次後就不可更改

③EPROM——可擦除可程式設計只讀儲存器:可進行多次重寫,寫入時間很長

④Flash Memory——閃速儲存器:可進行多次快速擦除重寫,但寫的速度比讀的速度慢

⑤SSD——固態硬碟:可進行多次快速擦除重寫,目前個人電腦大都市這種。速度快,功耗低,價格高。

第三節 主儲存器與CPU的連線

一、單塊儲存器與CPU連線

Ⅰ、連線原理:主存器透過資料匯流排,地址匯流排和控制匯流排與CPU連線。

地址匯流排的位數決定了可定址的最大記憶體空間。

控制匯流排指出匯流排週期型別和本次輸入輸出操作完成的時刻。

計算機組成原理(萬字爆肝整理)

主儲存器的線路

二、多塊儲存器與CPU連線

Ⅰ、位擴充套件法

原理:CPU的資料線與儲存晶片的資料位數不相等,此時必須使用多個儲存器件對字長進行擴位。每個儲存器的資料線都並行連線在CPU的資料匯流排上,而地址位數是序列相連。那CPU傳一個地址過來,怎麼知道是使用哪個儲存晶片呢,此時就要WE來控制使用哪個儲存晶片。

計算機組成原理(萬字爆肝整理)

Ⅱ、字擴充套件法

原理:當主儲存器位數不足,字數足夠時,我們會透過位擴充套件的方法來擴充套件主儲存器,將多個字數相同的儲存晶片並聯起來,增加位數,並且儲存空間是連續的。裡面還會涉及譯碼器,主要功能就是增加控制儲存器的個數,如有兩位地址線連線了譯碼器,那麼譯碼器可以控制

2^2

個儲存器。

計算機組成原理(萬字爆肝整理)

線選法

譯碼片選法

n條線n個片選訊號

n條線2的n次方個片選訊號

電路簡單

電路複雜

地址不連續(兩位舉例,00和11的地址用不到)

地址連續(00和11的地址也都用到了)

Ⅲ、字位同時擴充套件

原理:而當字數和位數都不足時,我們會透過字位同時擴充套件的方法來擴充套件儲存器,將多個字數和位數都相同的儲存晶片連線起來,同時增加字數和位數。

Ⅳ、三者比較

字擴充套件方法只能增加主儲存器的容量,存取速度沒有提升。而位擴充套件方法不光可以增加主儲存器的容量,同時還可以讓多個儲存晶片同時工作,同時做讀寫操作,增加了存取速度。字位同時擴充套件的方法又可以增加主儲存器的容量,又可以讓多個儲存晶片同時工作,那麼是不是隻用字位同時擴充套件這一種方法就可以了呢?任何事情都是有利弊兩面性的,在能力增強的同時,他的成本,功耗和體積都會增加,所以我們還是要根據實際的系統需求來判斷具體使用的主儲存器擴充套件方法。

Ⅴ、題目總結

【2018統考真題】假定DRAM晶片中儲存陣列的行數為r、列數為c,對於一個2K×1位的DRAM晶片,為保證其地址引腳數最少,並儘量減少重新整理開銷,則r、c的取值分別是()。

解:r是行,c是列,為了保證地址引腳數最少,就要求,行列相差小,並且減少重新整理開銷,則要求行數越小越好。故最終行數位32,列數位64。

三、多模組儲存器

背景:隨著CPU的功能不斷增強,I/O裝置數量不斷增多,這也導致了主存的存取速度已成為計算機系統的發展瓶頸。為了解決此問題,除了尋找更高速的原件和採用儲存器層次結構外,調整主存的結構也可以提高訪存速度,這就涉及到了多模組儲存器。

由於取值週期=存取時間+恢復時間。DRAM晶片恢復時間較短,有可能是存取時間的幾倍。那怎麼半,不能讓裝置停著吧。那太浪費資源了。

Ⅰ、雙埠RAM

顧名思義,就是利用兩個埠實現多核CPU儲存,需要有兩組完全獨立的資料線,地址線,控制線。支援兩個CPU同時訪問。

兩個埠可以同時對不同單元的地址中取資料,也可以對同一地址單元中讀出資料,但是不行同時對同一單元中寫入資料,也不能對同一單元一邊讀一邊寫入資料。

解決辦法:發出”busy“訊號,其中一個CPU的訪問埠暫時關閉。

Ⅱ、單體多字儲存器

原理:原來每行只存放一個儲存字,變為每行存放多個儲存字,這樣原來一次只能讀取一個儲存字,變為一次能讀取多個儲存字,這需要資料匯流排根數變大。

限制:指令和資料在主存必須是連續存放的。

計算機組成原理(萬字爆肝整理)

Ⅲ、多體並行儲存器(重點)

原理:每個模組都有相同的容量和存取速度,各模組都有獨立的讀寫控制電路,地址暫存器,和資料暫存器,既能並行工作,又能交叉工作(一個模組進入恢復時間,另一個模組進行存取)。

計算機組成原理(萬字爆肝整理)

區別:在高位交叉中,由於下一個訪問的地址還是在這個儲存體上,所以必須等到恢復時間結束後才能繼續訪問,故不能並行訪問。效果也僅僅是擴容。而在低位交叉編制中,下一個訪問地址不在同一個儲存體上,所以可以交叉訪問,不僅擴容還加快了訪問速度。當塊數m

\geq

T/r時,能達到最佳儲存效率。T為存取週期,r為存取時間。

計算機組成原理(萬字爆肝整理)

第四節 外部儲存器

一、磁碟儲存器

優點:儲存容量大,價格低,長期儲存而不丟失。

缺點:存取速度慢,機械結構複雜,對環境要求高。

磁碟最小的讀寫單位是一個扇區。

二、固態儲存器SSD(新增考點)

優點:讀寫速度快。若要寫的頁有資料,則不能寫入,需要將塊內其他頁全部複製到一個新的塊中,再寫入新的頁。

缺點:價格高,一個塊被寫入多次可能會壞掉(採用平均磨損,對我們來說仍然很耐用)而磁碟不會。

第五節 高速緩衝儲存器(重點)

一、什麼是Cache,為什麼要引入Cache?

Cache儲存器也被稱為高速緩衝儲存器,位於CPU和主儲存器之間。之所以在CPU和主存之間要加cache是因為現代的CPU頻率大大提高,記憶體的發展已經跟不上CPU訪存的速度。在2001 – 2005年間,處理器時鐘頻率以每年55%的速度增長,而主存的增長速度只是7%。

在現在的系統中,處理器需要上百個時鐘週期才能從主存中取到資料。如果沒有cache,處理器在等待資料的大部分時間內將會停滯不動

二、原理

採用了程式訪問的時間區域性性原理和空間區域性性原理

時間區域性性:

如果一個數據現在被訪問了,那麼以後很有可能也會被訪問

空間區域性性:

如果一個數據現在被訪問了,那麼它周圍的資料在以後可能也會被訪問

三、多級Cache的由來?

cache分為L1,L2,L3甚至L4等多級。為什麼不能把L1的容量做大,不要其它的cache了?原因在於效能/功耗/面積(PPA)權衡考慮。L1 cache一般工作在CPU的時鐘頻率,要求的就是夠快,可以在2-4時鐘週期內取到資料。L2 cache相對來說是為提供更大的容量而最佳化的。雖然L1和L2往往都是SRAM,但構成儲存單元的電晶體並不一樣。L1是為了更快的速度訪問而最佳化過的,它用了更多/更復雜/更大的電晶體,從而更加昂貴和更加耗電;L2相對來說是為提供更大的容量最佳化的,用了更少/更簡單的電晶體,從而相對便宜和省電。在有一些CPU設計中,會用DRAM實現大容量的L3 cache。

四、如何區分Cache和主存的資料塊對應關係?

每次被訪問的主存塊,一定會被立即調入Cache,而且是以塊為單位進行調入。

計算機組成原理(萬字爆肝整理)

那是採用什麼方式將主存塊號調入到Cache呢?有三種方式

①全相聯對映——主存塊可以放在Cache的任意位置。

那它是如何來訪問主存的呢?

計算機組成原理(萬字爆肝整理)

對以上圖只要能看懂,對於全相聯對映就沒什麼問題了。做幾點說明,CPU在訪問主存時,會先對比Cache所有塊中的標記Tag,Tag就是在主存中的主存塊號,佔22位。

②直接對映——每個主存塊只能放在一個特定的位置。Cache塊號=主存塊號%Cache塊總數

計算機組成原理(萬字爆肝整理)

做以下幾點說明

相對於全相聯對映,直接對映對

Tag進行了最佳化

,因為主存塊號最後三位地址就是Cache中的位置,所以將主存塊號其餘位作為標記即可。

若Cache總塊數=

2^n

,則主存塊號末尾n位直接反映它在Cache的位置,所以將主存塊號其餘位作為標誌位即可。

③組相聯對映——Cache塊分為若干組,每個主存塊可以放到特定分組中的任意一個位置。組號=主存塊號%分組數

計算機組成原理(萬字爆肝整理)

做以下幾點說明

相對於全相聯對映,直接對映對

Tag進行了最佳化

,因為主存塊號最後兩位地址就是Cache中的位置,所以將主存塊號其餘位作為標記即可。

一個組內有幾個Cache塊就成為幾路相聯對映

④三種對映方法對比總結

全相聯

直接

組相聯

特點

任意位置

特定位置

分組中的任意位置

主存地址結構

標記+塊內地址

標記+行號+塊內地址

標記+組號+塊內地址

優點

Cache儲存空間利用充分

對任意地址,執行對比一個Tag,速度快

折中辦法

缺點

可以會對比所有行的標記,速度慢

Cache空間利用不充分

/

五、Cache很小,而主存很大,如果Cache滿了,是利用了什麼替換演算法?

替換條件:對於全相聯對映,需要在全域性中選擇替換哪一塊,對於直接對映,若非空,則直接替換,對於組相聯,組內滿了,則在組內選擇替換哪一塊。

Ⅰ、隨機演算法(RAND)

隨機,隨便,隨意,換哪一個都行。實現簡單,但完全沒有考慮區域性性原理,命中率低,實際效果很不穩定。

可能會導致,換出的塊,下一次又需要訪問。就會多次訪問記憶體塊。導致抖動現象。

Ⅱ、先進先出演算法(FIFO)

替換最先進入的塊。同樣實現簡單,但仍然沒有考慮到區域性性原理,最先被調入Cache塊可能是被訪問最頻繁的。

Ⅲ、近期最少使用(LRU)

為每個Cache塊設定一個”計數器“,用於記錄每個Cache塊多久沒有被訪問了。然後替換”計數器“值最大的。

計數器的位數=Cache塊的總數=

2^n

,只需要n位,且Cache裝滿後所有計數器的值一定不重複。

基於區域性性原理,近期被訪問的主存塊,未來可能仍會被使用,LRU演算法實際執行效果優秀。

若頻繁訪問的主存塊數量>Cache行的數量,則有可能發生”抖動“

Ⅳ、最近不經常使用(LFU)

為每個Cache設定一個”計數器“,用於記錄Cache被訪問過幾次,然後替換”計數器“值最小的(訪問次數最少的)

曾經被經常訪問的主存塊不一定在未來會被用到。並沒有很好的遵循區域性性原理,因此實際執行效果不如LRU。

六、Cache寫策略——CPU修改了Cache中的資料副本,如何確保主存中資料母本一致性?

Ⅰ、寫命中——寫入的時候,在Cache中

①回寫法:當CPU對Cache寫命中時,只修改Cache的內容,而不立即寫入主存,只有當次塊被換出時才寫回主存。減少了訪存次數,但存在資料不一致的隱患。

被換出時,看”髒位“是否知道是否被修改。

②全寫法:當CPU對Cache寫命中時,必須把資料同時寫入Cache和主存,一般使用寫緩衝。訪存次數增加,速度變慢,但是能保證資料的一致性。無髒位。

Ⅱ、寫不命中——寫入的時候,不在Cache中

①寫分配法——當CPU對Cache不命中時,把主存中的塊調入Cache,在Cache中修改。通常搭配

回寫法

使用,改完後要被換出,才在主存中修改。

②非寫分配法——當CPU對Cache寫不命中時,只寫入主存,不調入Cache,搭配全寫法使用。

第六節 虛擬儲存器

虛擬儲存器:在作業系統的管理下,只把當前需要的部分資料調入主存,暫不需要的部分留在輔存中。在使用者看來,似乎獲得了一個超大的主存。(虛擬性)

一、頁式虛擬儲存器

背景:CPU執行的機器指令中,使用的是”邏輯地址“,因此需要透過”頁表“將邏輯地址轉為物理地址。

一個程式在邏輯上被分為若干個大小相等的”頁面“,”頁面“大小與”塊“的大小相同。每個頁面可以離散的存放在不同主存塊中。

頁表的作用:記錄了每個邏輯頁面存放在哪個主存塊中。

無快表:

計算機組成原理(萬字爆肝整理)

邏輯地址=邏輯頁號+頁內地址

物理地址=主存塊號+頁內地址

增加快表(存放在Cache中,先訪問快表,若未命中,則去訪問主存中的慢表)

計算機組成原理(萬字爆肝整理)

快表查詢速度很快,若快表中無,則會去慢表中查詢,會把相應的內容存入快表中

清楚整個查詢流程

計算機組成原理(萬字爆肝整理)

二、段式虛擬儲存(按功能拆分成大小不同的模組)

按照功能模組拆分不同的模組大小。

虛擬地址:段號+段內地址

優點:段的分界與程式的自然分界相對應,因而具有邏輯獨立性,使得它易於編譯、管理、修改和保護。

缺點:段的長度可變,分配空間不便,容易留下碎片,不好利用,造成浪費。

三、段頁式虛擬儲存

把程式按邏輯結構分段,每段在分固定大小的頁,主存空間也劃分為大小相等的頁,每個程式對應一個段表,每段對應一個頁表。

虛擬地址:段號+段內地址+頁內地址

優點是兼具段式和頁式的優點缺點是需要查兩次表,系統開銷較大。

四、虛擬儲存器與Cache的比較

Cache

虛擬儲存器

解決CPU與主存速度不匹配的問題

解決主存容量的問題

全由硬體組成,對所有程式設計師透明

由OS和硬體組成,邏輯上儲存器對系統程式設計師不透明

不命中影響小

不命中影響大

不命中時,主存直接與CPU通訊

不命中時,不能直接和CPU通訊,要先硬碟調入主存

題目總結:

【2015統考真題】假定主存地址為32位,按位元組編址,主存和Cache之間採用直接對映方式,主存塊大小為4個字,每字32位,採用回寫方式,則能存放4K字資料的Cache的總容量的位數至少是()

Cache的容量分為兩個部分一個是資料儲存容量+標記陣列容量

標記陣列中一定包含有效位和標記位,若為回寫法,則還存在一位的”髒位“,若為LRU、LFU替換演算法,則還存在替換演算法位(計數器)位數為

log_2^n

,n為Cache的個數。

本題按照位元組編址,則塊內地址佔4位,採用直接對映方法中的標誌位為32-4-10=18,Tag=18。

採用回寫法,有一位髒位,故最終標記項有18+1+1=20

標記陣列容量為

2^{10}

×20=20K,資料儲存容量為4K×32=128K,故總的為148K。

第四章 指令系統

第一節 指令格式

指令概念:又稱機器指令,是指示計算機執行某種操作的命令,是計算機執行的最小功能單位。

一條指令就是機器語言的一個語句,一條指令通常要包括操作碼和地址碼兩部分:操作碼主要指明使用者幹什麼,地址碼主要指明對誰操作。

一、指令分類

按運算元個數分:

Ⅰ、零地址指令:不需要運算元,如空操作、停機、關中斷等指令

Ⅱ、一地址指令:只需要單個運算元,如自增,自減,取反,求補,需要兩個運算元,但其中一個隱含在某個暫存器中

Ⅲ、二地址指令:常用於兩個運算元的算術運算、邏輯運算相關指令。

完成一條指令需要訪存四次,分別為取值,讀第一個運算元,讀第二個運算元,寫回第一個運算元。

Ⅳ、三地址指令:常用於兩個運算元的計算,結果放在第三個地址中。

完成一條指令需要訪存四次,分別為取值,讀讀一個運算元,讀第二個運算元,寫到第三個運算元。

※若指令長度不變,地址碼數量越多,定址能力就越差

按指令長度是機器指令的多少倍分:

Ⅰ、半長指令:是機器指令長度一半

Ⅱ、單字長指令:與機器指令長度一樣

Ⅲ、雙字長指令:是機器指令長度兩倍

二、擴充套件操作碼指令格式(考點:會設計指令系統)

概念:指令是定長的,但是操作碼的長度可變。

通常情況下,使用頻率高的指令使用短的操作碼,減少指令譯碼和分析的時間。而使用頻率低的指令使用長的操作碼

計算機組成原理(萬字爆肝整理)

定長指令和擴充套件操作碼的比較

定長操作碼

擴充套件操作碼

優點

硬體設計簡單,識別速度快

在指令長度限制下仍有豐富指令

缺點

指令難以增加,不靈活

增加指令譯碼和分析難度,速度慢

【2017統考真題】某計算機按位元組編址,指令字長固定且只有兩種指令格式,其中三地址指令29條、二地址指令107條,每個地址欄位為6位,則指令字長至少應該是()。

解答:三地址29條需要的位數是5位,多出3位,而107條需要6位。故總共5+6+12=23,因為按照位元組編址,所以最少需要24位。

第二節 定址方式(重點)

一、指令定址(由PC指出)

Ⅰ、順序定址

PC+”1“,這裡的1指指令字長,每次取值結束後PC會+1

Ⅱ、跳躍定址

執行轉移類指令導致的PC值改變

二、資料定址(由本條指令的地址碼指明真實地址)

非偏移指令

定址方式

有效地址

優點

缺點

訪存次數(指令執行期間)

直接定址

運算元的真實地址

簡單

限制定址範圍

1

間接定址

運算元地址的地址

可擴大定址範圍

指令在執行階段要多次訪存

最少2次

暫存器定址

暫存器的地址

不訪問主存,速度快

暫存器昂貴

0

暫存器間接定址

暫存器地址,內部是運算元主存地址

與一般的間址快

但執行仍然會訪存

1

隱含定址

指令中隱含運算元地址

有利於縮短指令字長

需要增加儲存運算元的硬體

0

立即定址

就是運算元本身

最快

限制運算元範圍

0

偏移定址(重中之重)

指令執行過程中,都會在將運算結果放入主存中,涉及一次訪存。

Ⅰ、基址定址

將CPU中基址暫存器(BR)/通用暫存器的內容加上指令格式中的形式地址A,而形成運算元的有效地址,即EA=(BR)+A

計算機組成原理(萬字爆肝整理)

※採用通用暫存器作為基址暫存器

R_0

的位數,根據通用暫存器的總數判斷,程式執行前,CPU將BR的值修改為該程式的起始地址。

基址暫存器是面向作業系統的,其內容由

作業系統或管理程式

確定。使用者無法修改,在程式執行過程中,基址暫存器的內容不變(作為基地址),形式地址可變(作為偏移量)。

當採用通用暫存器作為基址暫存器時,可由使用者決定哪個暫存器作為基址暫存器,但其內容仍由

作業系統

確定。

優點:可擴大定址範圍(基址暫存器的位數大於形式地址A的位數)

Ⅱ、變址定址

有效地址EA等於指令字中的形式地址A與變址暫存器IX的內容相加之和,即EA= (IX)+A,其中IX可為變址暫存器(專用),也可用通用暫存器作為變址暫存器 。

計算機組成原理(萬字爆肝整理)

變址暫存器是面向使用者的,在執行過程中,變址暫存器的內容可由使用者改變(IX作為偏移量),形式地址A不變(作為基地址)。剛好與基址定址相反。

在針對

陣列處理

過程中,不斷改變IX的值,便很容易形成陣列中任一資料的地址,特別適合

編制迴圈程式

基址變址複合執行。EA=(IX)+(BR)+A。

Ⅲ、相對定址

相對定址:把程式計數器PC的內容加上指令格式中的形式地址A而形成運算元的有效地址,即EA=(PC)+A,其中A是相對於PC所指地址的位移量,可正可負,補碼錶示 。

計算機組成原理(萬字爆肝整理)

優點:這段程式碼在程式內浮動時不用更改跳轉指令的地址碼

相對定址廣泛應用於轉移指令

注意:對於JMP A轉移指令,當從CPU中取出一位元組時,會自動執行PC+1。若指令的地址為X,且佔2B,在取出該指令後,會自定跳轉到X+2+A。

堆疊定址

運算元存放在堆疊中,隱含使用堆疊指標作為運算元地址。

硬堆疊是將暫存器作為棧,成本很高;軟堆疊是將主存作為棧,成本低。

硬堆疊不訪存,軟堆疊訪存一次

第三節 高階語言程式與機器級程式碼之間的對應

一、基本概念

對運算元的操作地址只涉及三種:暫存器到暫存器,主存到暫存器,立即數到暫存器。

dword 32bit ;word 16bit ;byte 8bit

通用暫存器 eax ebx ecx edx 變址暫存器 esi edi 堆疊暫存器 ebp esp。

二、選擇結構語句的機器級表示

je

jump when equal,

jne

jump when not equal,

jg

jump when greater,

jge

jump when greater or equal

jl

jump when less

jle

jump when less or equal

計算機組成原理(萬字爆肝整理)

例如

cmp eax ,ebx #比較暫存器eax和ebx裡的值

jg NEXT #若eax>ebx,則跳轉到NEXT

三、迴圈結構語句的機器級表示

用條件指令實現迴圈

計算機組成原理(萬字爆肝整理)

用loop指令實現迴圈

計算機組成原理(萬字爆肝整理)

就是將”某些處理“封裝到了Looptop內,使得程式碼更加簡潔。

四、CISC和RISC

對比專案

CISC

RISC

指令系統

複雜,龐大

簡單,精簡

指令數目

一般大於200條

一般小於100條

指令字長

不固定

定長

可訪存指令

沒有限制

只有Load/Store指令

各種指令執行時間

相差較大

絕大多數在一個週期內完成

各指令使用頻率

有的常用,有點不常用

一般都常用

通用暫存器的數量

較少

控制方式

絕大多數為微程式控制

絕大多數為組合邏輯控制

指令流水線

可以透過一定方式實現

必須實現

第五章 中央處理器

第一節 CPU

一、CPU的結構

CPU由運算器和控制器組成。

計算機組成原理(萬字爆肝整理)

二、CPU的功能

指令控制、操作控制、時間控制、資料加工、中斷處理。

運算器的功能:對資料加工

控制器的功能:取指令、分析指令、執行指令

第二節 指令執行過程

在指令週期中,包含了:取指週期,在取指週期後需要判斷是否有間址週期,如果沒有就進入到執行週期,在執行週期後又需要判斷是否有中斷程式,如果有就響應中斷並儲存斷點生成中斷服務程式入口;如果沒有就進入下一個取指週期。

計算機組成原理(萬字爆肝整理)

四個週期都有CPU訪存操作,只是訪存目的不同。取值週期是取指令;間址週期是取有效地址;執行週期是為了取運算元;中斷週期是為了儲存程式斷點。

指令週期常常有若干個機器週期,機器週期裡面又包含若干個時鐘週期。每個指令週期內的機器週期可以不同,機器週期內的時鐘週期也可以不同。時鐘週期是CPU操作的最基本單位。

計算機組成原理(萬字爆肝整理)

一、取值週期

取指週期:取指週期的任務是根據PC中的內容從主存中取出指令程式碼並存放在IR中。而PC中存放的是指令的地址,根據這個地址從記憶體單元取出的是指令,並放在指令暫存器IR中,取指令的同時,PC加1。

計算機組成原理(萬字爆肝整理)

二、間址週期

間址週期:間址週期的任務是取運算元有效地址,以一次間址為例,將指令中的地址碼送到MAR並送至地址匯流排,此後CU向儲存器發讀命令,以獲取有效地址並存至MDR。

計算機組成原理(萬字爆肝整理)

三、執行週期

執行週期:執行週期的任務是根據IR中的指令字的操作碼和運算元透過ALU操作產生執行結果。不同指令的執行週期操作不同,因此沒有統一的資料流向。

指令執行方案:

單指令週期

所有指令選用相同的執行時間(取決於最長指令執行時間),指令間序列,但原本只需要很短時間完成指令也分配了很長時間,降低整個系統執行速度

多指令週期

對不同指令選用不同的執行時間,需要更復雜的硬體設計,指令間是序列

流水線

在每個時鐘週期讓多個指令同時執行,指令間是並行

四、中斷週期

中斷週期:中斷週期的任務是處理中斷請求。假設程式斷點存入堆疊中,並用SP指示棧頂地址,而且進棧操作是先修改棧頂指標,後存入資料。

計算機組成原理(萬字爆肝整理)

第三節 資料通路的功能和基本結構

一、資料通路的基本結構

Ⅰ:CPU內部單匯流排方式。將所有暫存器的輸入端和輸出端都連線在一條公共通路上。易發生衝突。

Ⅱ:雙匯流排/多匯流排方式。多個總線上傳不同的資料,提高效率。

Ⅲ:專用資料通路方式。專門給某些部件設計通路。效能很高但是硬體量大。

說明:

①對於單匯流排的連線方式來說,ALU只能有一端與匯流排相連,因為兩端相連就必會發生衝突。所以另一段要設計一個暫存器,先把資料放入暫存器,暫存器再與匯流排相連。

②單週期就是指令在一個週期內完成,這是需要與多匯流排結構配合。才能使各個部件的資料傳遞。因為單匯流排一個週期內只能傳遞一個數據,所以指令不可能在一個週期內完成。

內部匯流排

是指同一部件,如CPU內部連線各個暫存器及運算部件之間的匯流排

系統匯流排

指同一臺計算機的各部件,如CPU,主存,I/O之間連線的匯流排

第四節 控制器的功能和工作原理

一、硬佈線控制器

多提一嘴,一定要看看王道影片是如何設計出組合邏輯圖的,我保證看完一定會有顛覆性的收穫。

根據指令操作碼、目前的機器週期、節拍訊號、機器狀態條件,即可確定現在這個節拍應該發出哪些”微命令“

計算機組成原理(萬字爆肝整理)

硬佈線控制器的特點:

指令越多,設計和實現就越複雜(邏輯圖很複雜),因此一般使用RISC。

如果擴充一條新的指令,則控制器的設計就需要大改,因此擴充指令較為困難。

由於使用存純硬體實現控制,因此執行速度很快。

二、微程式控制器(重難點)

要求:會基本概念微命令與微操作,微指令與微週期,主儲存器與控制儲存器,程式與微程式,MAR與CMAR,IR與CMDR。還會一些基本結構,比如為地址形成部件,微地址暫存器CMAR,微指令暫存器CMDR,控制儲存器CM。

微命令

:控制器部件向執行部件發出的控制命令,是構成控制序列的最小單位,例如開啟或者關閉控制門的電位訊號。是各部件完成某個基本微操作的命令

微操作

:執行部件接受微命令後所進行的操作,和微操作是一一對應的。 (實際上,微命令是微操作的控制訊號,微操作是微命令的執行過程,微操作是執行部件中最基本的操作)

微指令

:若干微命令的集合,存放在一個控制儲存器中,而

存放微指令的控制儲存器的單元成為微地址

。在同一CPU週期內,

並行執行的一組微命令,儲存在控制儲存器上面,稱為一條微指令

微週期

:從讀取一條微指令,到執行執行完畢所需要的時間稱為微週期。

控制儲存器

主儲存器

,主要用來存放程式和資料,位於CPU的外部,使用的是RAM。而

控制儲存器,則主要用於儲存微程式,位於CPU內部,採用的是ROM

微程式

:實現一條機器指令功能的微指令序列。

程式與微程式

:程式由機器指令構成,編寫好以後放到主存中執行,可以改寫。而微程式由微指令構成,事先編寫好在CM(控制儲存器)中,一般是不可改寫的。微程式的作用就是實現一條對應的機器指令。

微程式>微指令>微命令=微操作是微命令的執行過程。

計算機組成原理(萬字爆肝整理)

秒懂哦

一臺計算機可以分為控制部件和執行部件。其中控制部件有指令暫存器,程式計數器,操作控制器,執行部件有運算器,儲存器,外圍裝置,狀態條件暫存器。

彙編程式設計師可見的暫存器有基址暫存器和狀態/標誌暫存器,程式計數器PC及通用暫存器。而MAR,MDR,IR,是CPU內部暫存器,彙編程式設計師不可見,微指令相關的彙編程式設計師也不可見。

水平型微指令的編碼方式(重點會考)

①欄位直接編碼

對於直接編碼的方式最大的好處就是能夠並行微操作,縮短了微命令的欄位長度。有個題能很好的解釋這其中的原因。某計算機的控制器採用微程式控制方式,微指令中的操作控制欄位採用欄位直接編碼方式,共有33歌微命令,構成5個互斥類,分別包含7,3,12,5和6個微命令,則操作控制欄位至少有幾位?

每個互斥類要留1個狀態位不操作

,故為8,4,13,6,7個微命令。則需要3,2,4,3,3位共15位控制欄位,而直接控制法要33位。很明顯的縮減操作欄位位數。

優點明顯,缺點也明顯啊。增加了譯碼,執行時間會增長,而卻增大成本。

直接編碼

就是每個控制欄位位,就代表一個微命令,優點就是快,電力嘎嘎簡單。但是若微命令要是多達幾百條。那不是要幾百位了。因此指令位數太長。

③某帶有中斷的指令系統有101中操作,採用微程式控制方式,儲存器中相應最少有103個微程式。

要加上取值操作和終端操作,

若有n條操作,則有

n+2個微程式

④下一條微指令的形成方法常考的:

斷定法(根據當前執行的微指令尋找到下一條微指令)和計數器法(類似PC)

第五節 異常和中斷機制

這節會在後面第七章一起講

第六節 指令流水線

講在前面,為什麼要引入指令流水線。相信都聽說過華強北的流水線運作方式吧。最明顯的優點就是相較於順序執行的吞吐量更大(單位時間內)執行相同數量的指令也更快。效率也更高。

這裡就可以知道指令流水線的概念:

把指令執行過程劃分為不同的階段,佔用不同的資源,就能使多條指令同時執行

①在流水執行的過程中,會經常遇到衝突,包括結構衝突,

資料衝突

,控制衝突。

結構相關/衝突/冒險

資料相關/衝突/冒險

控制相關/衝突/冒險

概念

多條指令在同一時刻爭用同一資源

下一條指令會用到當前指令計算的結果

遇到執行轉移、呼叫、返回導致PC中斷

處理辦法

1。單獨設定資料儲存器和指令儲存器,使取數和取值操作在不同的儲存器中進行

2。暫停時鐘週期

1。暫停時鐘週期

2。資料旁路技術

3。編譯最佳化

1。早判斷,早生成

2。預取轉移成功和不成功兩個控制流方向的目標指令

3。加快和提前形成條件碼

4。提高轉移方向的猜準率

五段式指令流水線(超重要)

計算機組成原理(萬字爆肝整理)

顧名思義,五段分為IF(取值),ID(譯碼&取數),EX(執行),M(訪存),WB(寫回暫存器)

只有上一條指令進入ID段後,下一條指令才能開始IF段,否則會覆蓋IF段鎖存器的內容

考試中常見的五類指令:

Ⅰ、運算類指令的執行過程

IF:根據PC從指令Cache取指令至IF段的鎖存器

ID:取出運算元至ID段的鎖存器

EX:運算,將結果存入EX段鎖存器

M:空段

WB:將運算結果寫回指定的暫存器

Ⅱ、LOAD指令執行過程

作用

:load指令可以完成將資料從儲存器中複製到目的暫存器中,會訪存

IF:根據PC從指令Cache取指令至IF段的鎖存器

ID:將基址暫存器的值放到鎖存器A,將偏移量的值放到lmm

EX:運算,得到有效地址

M:從資料Cache中取數並放入鎖存器

WB:將運算結果寫回指定的暫存器

Ⅲ、STORE指令執行過程

作用:

將資料從暫存器中,複製到儲存器中,會訪存

IF:根據PC從指令Cache取指令至IF段的鎖存器

ID:將基址暫存器的值放到鎖存器A,將偏移量的值放到lmm。將要存的數放到B

EX:運算,得到有效地址。並將鎖存器B的內容放到鎖存器Store

M:寫入資料Cache

WB:空段

Ⅳ、條件轉移指令執行過程

IF:根據PC從指令Cache取指令至IF段的鎖存器

ID:進行比較的兩個數放入鎖存器A,B;偏移量放入lmm

EX:運算,比較兩個數

M:將目標PC值寫回PC

WB:空段

Ⅴ、無條件轉移指令的執行過程

IF:根據PC從指令Cache取指令至IF段的鎖存器

ID:偏移量放入lmm

EX:將目標PC值寫回PC

M:空段

WB:空段

針對條件轉移指令和無條件轉移指令做以下說明:寫入PC的好事比EX更短,可以安排在EX段時間內完成。越

早完成就越能避免控制衝突

。當然也有在WB段修改PC值的

題目總結:

①流水CPU是由一系列叫做“段”的處理線路組成的。一個m段流水線穩定時的CPU的吞吐能力,與m個並行部件的CPU的吞吐能力相比

具有相同的吞吐能力

原因是當流水線穩定後,說明已經進行了一條指令,往後每多一個時鐘週期就多一條指令執行成功。

m個並行平均下來也是一個時針週期就多條指令

故具有相同的吞吐能力,但是流水線的方式,結構實現較為簡單。

第七節 多處理器的基本概念(選擇題)

這節的要求就是明白基本概念

①SISD(單指令流單資料流)

特點:只能併發,不能並行,每條指令處理一個指令

不是資料級並行技術

SISD(單指令流單資料流)

SIMD(單指令多資料流)

MIMD(多指令多資料流)

多處理器系統

多計算機系統

特點

不是資料級並行技術

是一種資料級並行技術

是一種執行緒級並行技術

多個處理器共享單一物理地址空間

每臺計算機擁有私有儲存器,相互獨立

特徵

一條指令處理一個數據

一條指令處理多個數據

多條指令處理多個數據

多個處理器+一個主儲存器

多個處理器+多個主儲存器

併發(concurrency):把任務在不同的時間點交給處理器進行處理。在同一時間點,任務並不會同時執行。

並行(parallelism):把每一個任務分配給每一個處理器獨立完成。在同一時間點,任務一定是同時執行。

併發不是並行。並行是讓不同的程式碼片段同時在不同的物理處理器上執行。並行的關鍵是同時做很多事情,而併發是指同時管理很多事情,這些事情可能只做了一半就被暫停去做別的事情了。(你學廢了嗎?)

第六章 匯流排

第一節 匯流排的概述

計算機組成原理(萬字爆肝整理)

片內匯流排:晶片內部的匯流排,是CPU晶片內部暫存器與暫存器之間,暫存器與ALU之間的公共連線線

系統匯流排:計算機系統內部功能部件(CPU、主存、I/O介面)之間相互連線的匯流排,可分為三類,資料匯流排,地址匯流排,控制匯流排

通訊匯流排:計算機系統之間或計算機系統與其它系統之間的資訊傳送的匯流排

資料匯流排

地址匯流排

控制匯流排

功能

傳輸資料資訊

傳輸地址資訊

傳輸控制資訊

大小與什麼有關

機器字長、儲存字長

主存地址空間大小

傳輸一個訊號

方向

雙向

單向

既有雙向也有單向

匯流排結構

單匯流排(常用)

雙匯流排

三匯流排

內容

系統匯流排

主存匯流排、I/O匯流排

主存匯流排、I/O匯流排、DMA匯流排

結構

CPU、主存、I/O裝置都連線在一組總線上

主存匯流排用於CPU,主存之間的傳送;I/O匯流排用於多個外部裝置與通道之間進行傳送

多加的一條DMA匯流排是用於主存訪問高速外設

優點

結構簡單,成本低,易於接入新的裝置

將較低速的I/O裝置從單匯流排分離出來,實現儲存器匯流排和I/O匯流排分離

更加提高了I/O裝置的效能,更快響應命令,提高系統吞吐量

缺點

頻寬低,負載重,不支援併發傳送操作

需要增加硬體裝置

系統工作效率低,同一時刻只能一個匯流排工作

第二節 效能指標

寫一些會考的效能指標,配合相應的題

第三節 匯流排定時方式

同步通訊

非同步通訊

半同步通訊

分離式通訊

特點

由統一時鐘控制資料傳送

採用應答方式,沒有公共時鐘的標準

同步、非同步結合

充分挖掘系統匯流排每瞬間的潛力

優點

傳送速度快

保證兩個工作速度相差很大的部件之間進行傳輸

缺點

強制性同步

複雜,慢

補充:關於非同步通訊還分為三類:不互鎖,速度最快,可靠性最差;半互鎖;全互鎖。速度最慢,可靠性最好。

第七章 I/O系統

第一節 I/O介面

簡單來說,

I/O介面就是負責協調主機與外部裝置之間的資料傳輸

可以這樣理解就是你的電腦,怎麼控制你的隨身碟上,做一些讀寫操作。隨身碟不是“親兒子”啊,所以要單獨給它設定介面來控制它。

CPU那如何確定要操作的是主存還是外部裝置呢。這就引出了編制方式——統一編制和獨立編址

統一編制

獨立編制

內容

把外部裝置的儲存當成記憶體進行分配,有統一的地區分配,靠不同的地址區別記憶體和外部裝置

獨立編制,專門為輸入/輸出指令設定訪問埠,靠不同指令區別記憶體和外部裝置

優點

1。不需要專門的指令表示訪問外存

2。讀寫控制電路簡單

3,程式設計靈活性高

1。地址譯碼快

2。不佔用主存地址空間

缺點

1。端口占用了主存地址空間,使主存地址空間變小

2。定址時間長(外部裝置)

1。程式設計靈活差

2。指令增加,控制電路複雜

補充個會考的內容,關於視訊記憶體VRAM(就是顯示儲存器)

視訊記憶體是為了提高重新整理影象的訊號,會提前把需要顯示的資料放入視訊記憶體中。如今的計算機很多都有獨立視訊記憶體,就這可以避免,視訊記憶體佔用主存的空間。

視訊記憶體會考的計算:

容量=解析度×灰度級位數

頻寬=解析度×灰度級位數×幀數

第二節 主機訪問I/O裝置的控制方式

一、程式查詢方式

特點:CPU與I/O序列工作,CPU不斷查詢I/O裝置狀態,直到外設準備就緒。

優點:介面設計簡單,裝置量少。

缺點:CPU資訊傳送過程中要花費很多時間用於查詢和等待,而且在一段時間內只能和一臺外設交換資訊,效率低。

獨佔查詢:CPU100%的時間都在查詢I/O狀態,完全序列。

定時查詢:每隔一段時間CPU就查詢I/O狀態,查詢的間隔內CPU可以執行其他程式。

二、中斷方式

Ⅰ、程式中斷是指在計算機執行現行程式的過程中,出現某些急需處理的異常情況或特殊請求,CPU暫時中斷現行程式,而轉去執行這些異常情況或特殊請求進行處理。處理完畢後又自動返回到現行程式的斷點處,繼續執行原程式。

引出幾個問題:

問題一:接收到中斷訊號後是怎麼轉到執行中斷程式的?

問題二:中斷程式執行完後是怎麼回來執行原先程式的?

問題三:假如有多個程式斷源同時申請,怎麼專門安排優先順序?

問題四、如何判斷是哪個裝置發來的中斷訊號?

Ⅱ、

整個中斷方式的流程(重點)

1。中斷請求

“先說明開中斷和關中斷的作用,關中斷保證原子操作,不會被打斷,標誌位IF=1為開中斷(允許中斷)”

CPU在統一時刻每條指令執行階段結束前向介面發出中斷查詢訊號,獲取I/O的中斷請求,也就是說,CPU響應中斷的時間是在每條指令執行階段的結束時刻。

如何判斷是哪個裝置發來的中斷訊號?

會存在一箇中斷請求標記暫存器,裡面不同位代表不同的裝置中斷。狀態位為1的話,代表處理中斷申請。

CPU響應中斷必須滿足以下3個條件:

①中斷源有中斷請求。

②CPU允許中斷即斷開中斷。

③一條指令執行完畢,且沒有更緊迫的任務。

2。中斷響應

假如有多個程式斷源同時申請,怎麼專門安排優先順序?

有兩種處理辦法:

①硬體實現硬體排隊器

②軟體實現查詢程式

中斷的優先順序:

硬體故障中斷>軟體中斷

非遮蔽中斷>可遮蔽中斷

DMA請求>I/O裝置傳送的中斷請求

有再補充

3。中斷處理

接收到中斷訊號後是怎麼轉到執行中斷程式的?

這時候就需要中斷隱指令:儲存原程式的PC值,並讓PC指向中斷程式的第一條。

中斷隱指令的任務:

①關中斷。在中斷服務程式中,為保護中斷現場不會再被新的中斷打斷,就必須關中斷

②儲存斷點。保證“回得來”

③引出中斷服務。將中斷服務程式入口地址傳送給程式計數器

引出中斷服務,如何將中斷傳給PC?

透過硬體向量法,將硬體(中斷向量地址形成部件)產生向量地址,再由向量地址找到入口地址。

中斷處理過程—硬體向量法。為什麼要用向量地址去尋找中斷的入口,而不是直接去尋找中斷入口?

1。若是透過中斷向量地址形成部件直接去入口地址的話,會造成中斷程式有時候長短不一,就要頻繁修改中斷向量地址形成部件。

2。若是先透過向量地址,在記憶體中找到中斷地址的話,只需修改記憶體的地址就可以。

計算機組成原理(萬字爆肝整理)

中斷服務程式的任務

①保護現場。儲存通用暫存器和狀態暫存器的內容。

②中斷服務。主體部分。例如將需要列印的字元傳送到印表機的緩衝儲存器中。

③恢復現場。通過出棧或取值把之前儲存的資訊傳送回暫存器中。

④中斷返回。透過中斷返回指令回到原程式斷點處。

總結:中斷處理過程=中斷隱指令+中斷服務程式

計算機組成原理(萬字爆肝整理)

中斷流程

Ⅲ、單重中斷和多重中斷

單重中斷:執行中斷服務程式時不響應新的中斷請求。

多重中斷:又稱中斷巢狀,執行中斷服務程式時可響應新的中斷請求。

對於多重中斷有中斷遮蔽技術,在中斷服務開啟前開啟中斷指令。優先級別高的中斷源有權中斷優先級別低的中斷源。

這時候就要設定一個遮蔽觸發器,1表示遮蔽該中斷請求,0表示正常申請,所有遮蔽觸發器構成一個遮蔽暫存器,遮蔽暫存器裡面內容就是遮蔽字。

有以下幾個說明

①每個中斷源至少有一個1(對自身中斷源)

②1越多,優先順序越高

計算機組成原理(萬字爆肝整理)

看懂這個例題就夠了

三、DMA方式

DMA的特點:

1、記憶體既可以被CPU訪問也可以被DMA控制器訪問,CPU和DMA控制器會競爭匯流排的使用權,因而需要仲裁機制。

2、外部裝置與記憶體之間的整個資料交換過程全部在DMA控制器的控制下完成,CPU能夠與外部裝置並行工作,大大提高了效率。

3、在DMA方式開始之前CPU要對DMA控制器進行初始化,在DMA方式結束之後,CPU要申請中斷,對記憶體緩衝區進行後處理。

DMA的處理方式:

1。預處理:CPU完成暫存器初值設定等準備工作。

2。資料傳輸:CPU繼續執行主程式,DMA控制器完成資料傳送

3。後處理:CPU執行中斷服務程式做DMA結束處理

DMA的傳送方式:

1。停止CPU訪存:需要傳送資料時,停止CPU訪存,匯流排控制器交給DMA控制器。

2。週期挪用方式:當I/O介面沒有DMA請求時,CPU按程式要求訪問記憶體;一旦I/P介面有DMA請求,則I/O介面挪用一個或幾個週期。缺點是:資料輸入或輸出過程中實際佔用了CPU時間。

3。交替訪存方式:CPU與DMA控制器交替訪問記憶體。不需要匯流排使用權的申請、建立和歸還過程。

效率高,但實現起來有困難,基本上不被使用。

DMA與中斷方式的差別

中斷

DMA

資料傳送

程式控制

硬體控制—DMA控制器。CPU只需進行預處理和後處理

中斷請求

傳送資料

向CPU報告傳輸結束

響應

指令執行週期結束後響應中斷

每個機器週期結束都可,即匯流排空閒即可

適用場景

CPU控制,低速裝置

DMA控制器控制,高速裝置

優先順序

低於DMA

高於中斷

工作方式

CPU與外設並行,傳送與主程式序列

CPU與外設並行,傳送與主程式並行

請求內容

請求的是CPU處理時間

請求的是匯流排使用權

中斷的分類:

計算機組成原理(萬字爆肝整理)

中斷分類

標簽: 指令  CPU  主存  地址  cache