王道考研专业课-计算机组成原理
王道考研專業(yè)課-計算機組成原理
- 發(fā)展歷程
- 計算機組成
- 早起馮諾依曼機
- 現(xiàn)代計算機結(jié)構(gòu)
- 主存儲器的基本組成
- 運算器的基本組成
- 控制器的組成
- 計算機系統(tǒng)的層次
- 計算機的性能指標(biāo)
- 主存
- CPU性能指標(biāo)
- 系統(tǒng)整體的性能指標(biāo)
- 基準(zhǔn)程序來測試(跑分軟件)
- 進位計數(shù)制
- BCD碼
- 字符和字符串如何在計算機中表示
- ASCII碼
- GB2312
- 字符串
- 數(shù)據(jù)校驗
- 校驗原理介紹
- 奇偶校驗碼
- 計算機中如何實現(xiàn)奇偶校驗
- 海明碼
- 循環(huán)冗余校驗碼(CRC碼)
- 定點數(shù)和浮點數(shù)
- 無符號數(shù)的表示(int, long)
- 有符號數(shù)(定點表示)
- 原碼
- 定點整數(shù)
- 定點小數(shù)
- 反碼
- 補碼
- 移碼
- 補碼取負(fù)操作
- 原反補碼的作用
- 模運算的性質(zhì)
- 補碼的作用
- 移位運算
- 算數(shù)移位
- 反碼的算數(shù)移位
- 補碼的算數(shù)移位
- 邏輯移位
- 循環(huán)移位
- 加減運算
- 原碼的加減運算
- 溢出判斷
- 溢出問題解決
- 符號位擴展
- 原碼的乘法運算
- 補碼的乘法運算
- 定點小數(shù)源碼的除法
發(fā)展歷程
從技術(shù)角度分析,計算機硬件的發(fā)展階段
計算機目前朝著微型多功能和巨型超級計算的方向發(fā)展
計算機組成
早起馮諾依曼機
馮·諾依曼計算機特點:
數(shù)據(jù)的輸入和輸出都需要經(jīng)過運算器,會造成效率的降低
現(xiàn)代計算機結(jié)構(gòu)
| 主機 | cpu(控制器和運算器),主存(內(nèi)存) |
| 存儲 | 主存(內(nèi)存)和輔存(機械硬盤,固態(tài)硬盤) |
| IO設(shè)備 | 包括機械硬盤,固態(tài)硬盤,輸入輸出設(shè)備 |
| 輸入設(shè)備 | 將輸入信息裝換為計算機能識別的形式 |
| 輸出設(shè)備 | 將計算結(jié)果轉(zhuǎn)為人們熟悉的形式 |
| 主存儲器 | 存放數(shù)據(jù)和程序 |
| 運算器 | 算數(shù)運算和邏輯運算 |
| 控制器 | 調(diào)度各部件使程序運行 |
主存儲器的基本組成
包括,地址存儲器(MAR),數(shù)據(jù)寄存器(MDR),存儲體
讀取數(shù)據(jù)過程
將要讀取的數(shù)據(jù)的地址輸入到地址存儲器,主存器根據(jù)地址將數(shù)據(jù)取出后放在數(shù)據(jù)寄存器
寫入數(shù)據(jù)過程
將要輸入到主存的數(shù)據(jù)放在數(shù)據(jù)寄存器,將要存放的位置寫到位置寄存器
存儲體
存儲體中的數(shù)據(jù)是按照地址進行存儲的,每個地址對應(yīng)一個存儲單元,每個存儲單元存放一串二進制代碼,每串二進制代碼代表一個存儲字(word);
每個存儲字所存儲的二進制的長度叫做存儲字長一般都是8bit的整數(shù)倍
每個電子存儲元可以存儲一個bit
易混點
1Byte/B = 8bit/b ,即 1字節(jié) = 8比特
運算器的基本組成
| ACC | 累加器,用于存放操作數(shù)和運算結(jié)果 |
| MQ | 乘商寄存器,在乘除寄存器時用于存放操作數(shù)和運算結(jié)果 |
| X | 通用操作數(shù)寄存器,用于存放操作數(shù) |
| ALU | 算數(shù)邏輯單元,通過內(nèi)部復(fù)雜的電路實現(xiàn),算數(shù)計算和邏輯計算 |
控制器的組成
| CU | 控制單元,分析指令,給出控制信號 |
| IR | 指令寄存器,存放當(dāng)前執(zhí)行的指令 |
| PC | 程序計數(shù)器,存放下一條指令地址,有自動加1的功能 |
完成一條指令的過程,通過PC中存儲的指令地質(zhì)取指令,將指令存放在指令控制器中,CU通過指令控制器來分析指令,進而給出控制信號
在一個運算程序中,運算器、控制器和存儲器是如何協(xié)調(diào)工作的?
取指令
根據(jù)PC存儲地址,取指令,同時PC+1
分析指令
放入IR進行指令分析,拆分指令內(nèi)容中的操作碼和地址碼,
執(zhí)行操作
操作碼給CU進行對應(yīng)操作,地址碼進行對應(yīng)數(shù)據(jù)的獲取并交給CU進行計算
計算機系統(tǒng)的層次
高級語言–>匯編語言–>操作系統(tǒng)–>機器語言–>微指令程序
將操作系統(tǒng)及之上的稱為軟件,之下的稱為硬件;
匯編語言和機器語言是一一對應(yīng)的
計算機的性能指標(biāo)
主存
主存的容量 = MAR * MDR
1K = 210 Bytes 1Byets = 8bits
CPU性能指標(biāo)
CPU主頻,cpu脈沖的指令
cpu的一個震蕩周期被稱為cpu的一個時鐘周期
每條指令最少跨越一個時鐘周期
CPI執(zhí)行一條指令所需要的平均時鐘周期數(shù)
IPS每秒鐘可以執(zhí)行多少條指令,主頻/時鐘周期
flops每秒鐘執(zhí)行多少次浮點運算
在描述計算頻率時,K=103 M=106 G=109 T=1012;每次相差103;
存儲容量,K=210 M=220
系統(tǒng)整體的性能指標(biāo)
數(shù)據(jù)通路帶寬:數(shù)據(jù)總線(cpu和主存之間的通路)一次所能并行傳送信息的位數(shù);
吞吐量:系統(tǒng)在單位時間內(nèi)處理請求的數(shù)量
響應(yīng)時間: 用戶向計算機發(fā)送請求到系統(tǒng)對該指令做出響應(yīng)并獲取結(jié)果的等待時間;
基準(zhǔn)程序有時候會有一定偏見(比如顯卡程序過多等等)
基準(zhǔn)程序來測試(跑分軟件)
tips
衡量計算機性能需要從 主頻,CPI,指令系統(tǒng)來衡量;
進位計數(shù)制
位權(quán)重
不同進制數(shù)據(jù)的轉(zhuǎn)化
二進制轉(zhuǎn)為 8進制、16進制;三位為一組,4位位一組
8進制轉(zhuǎn)為2進制;每一位拆分為3位
16進制轉(zhuǎn)為2進制;沒一位轉(zhuǎn)為4位
書寫方式:1. 數(shù)字角標(biāo)來表示;2. 16進制 h打頭,10進制d打頭;
10進制轉(zhuǎn)其他進制,整數(shù)部分使用除基取余法,先得到小數(shù)部分;小數(shù)部分乘2取整數(shù),最先得到高位;拼湊法;
真值:符合人類習(xí)慣的數(shù)字
機器數(shù):數(shù)字實際存到機器里的形式;正負(fù)號需要被“數(shù)字化”,放在首位
BCD碼
解決十進制數(shù)字如何在計算機中表示
8421碼
4個二進制碼 對應(yīng)一個十進制位
8421碼的運算,如果使用二進制的加法運算之后,結(jié)果落在1010~1111(10-15)之間,就沒有意義,需要對結(jié)果 + 0110(+6),這樣結(jié)果就會往高位進1,得到高位對應(yīng)的10進制的值??荚嚂r候可以通過先轉(zhuǎn)為10進制,運算之后轉(zhuǎn)為2進制的方法;
余3碼:8421碼 + (0011);無權(quán)嗎
2421碼:2421分別對應(yīng)每一位的權(quán)值,和8421碼都是有權(quán)碼;為了規(guī)避一對多的情況,表示0-4時最高位為0,表示5-9時z最高位為1
字符和字符串如何在計算機中表示
ASCII碼
鍵盤上的數(shù)字字母和符號一共128個,所以使用7位二進制編碼就可以表示一個字符或數(shù)字,通常會在高位拼一個0湊夠一個字節(jié);
ASCII碼就是128個字符
其中32-126是可印刷字符,其余用于控制和通信;
48-57用來表示阿拉伯?dāng)?shù)字0-9;即使用0011 0000-0011 1001;其前4位固定為0011,后四位是8421碼;
大寫字母:65(0100 0001)-90(01011010)前3位都是相同的,僅從后面5位看 依次為 1-26
小寫字母:97(0110 0001)-90(01111010)前3位都是相同的,僅從后面5位看 依次為 1-26
GB2312
漢字+符號共7445個
字符串
一個字節(jié)對應(yīng)一個字符串,從左往右一次存儲;很多語言中,通過‘\0’表示字符串的結(jié)束
一個中文字符對應(yīng)兩個字節(jié);這兩個字節(jié)有兩種存儲方式,大端模式(將數(shù)據(jù)的最高有效字節(jié)存放在地地址單元)和小段模式;
數(shù)據(jù)校驗
校驗原理介紹
概念:由若干位代碼組成的一個字叫做碼子
將兩個碼子逐位進行對比,具有不同的位的個數(shù)稱為兩個碼字間的距離
一種編碼方案由若干種合法的碼字組成,各合法碼字間的最小距離稱為碼距,碼距越小越傳輸越不可靠
奇偶校驗碼
奇校驗:整個校驗碼(有效為+校驗位)中 ‘1’的個數(shù)為奇數(shù)個
奇校驗:整個校驗碼(有效為+校驗位)中 ‘1’的個數(shù)為偶數(shù)個
偶數(shù)個數(shù)據(jù)發(fā)生錯誤,奇偶校驗碼會檢測不出來
計算機中如何實現(xiàn)奇偶校驗
使用異或(摸2加)來計算;
獲取位偶校驗位:將所有位進行異或運算之后得到的結(jié)果
校驗偶校驗碼:將所有位(包括校驗位)進行異或運算之后得到的結(jié)果為0;
海明碼
設(shè)計思想:基于奇偶校驗的問題,只能夠校驗出奇數(shù)位出現(xiàn)問題,并且不知道哪一位出現(xiàn)問題;如果一種校驗碼既可以更多的校驗出問題,并且可以校驗出編碼出問題的地方,就更好了;海明碼,采用分而治之的方法,將數(shù)據(jù)分為多組,分別對應(yīng)一個校驗碼。
特點及使用場景:1位糾正2位檢錯,2位錯誤以上的情況沒有考慮,所以它也僅用于通信特性較好的環(huán)境中
校驗位數(shù)量: 理想情況下海明碼想要校驗出任何一個數(shù)據(jù)位是否出錯,所以需要分組的數(shù)量為 信息位數(shù)(n)校驗位數(shù)(k),那么校驗位的所有可能為2k個,那么 2k ≥ K + N + 1;(最后的1表示任何一位都是正確的狀態(tài))
校驗位的分布: 校驗位Pi放在海明位號為2i-1的位置上,信息位按照順序放到其余位置;
信息數(shù)據(jù)如何分組:每個校驗位都會對應(yīng)一個權(quán)值;將數(shù)據(jù)位的位置用二進制的方式表示,數(shù)據(jù)位位置(二進制)對應(yīng)校驗位權(quán)值為1的數(shù)據(jù)分為一組;(同一個數(shù)據(jù)位被同時分到多個組中)
求校驗位的值: 將同一分組的數(shù)據(jù)求異或,得到該分組的校驗位的值
糾錯:
校驗方程:將不同分組的數(shù)據(jù)及校驗碼一次求異或,校驗結(jié)果Sn…,S2,S1都為0,那么數(shù)據(jù)為真;如果其中一個不為零,那么將Sn…,S2,S1組成的二進制結(jié)果的位置就是數(shù)據(jù)出錯的位置
全校驗位:海明碼只能糾正一位錯誤的情況,為了檢查是一位錯誤還是兩位,添加全校驗位(奇偶校驗法);2位以上的錯誤情況很少發(fā)生沒有考慮;
循環(huán)冗余校驗碼(CRC碼)
算法思想:傳輸?shù)臅r候規(guī)定一個除數(shù),數(shù)據(jù)輾轉(zhuǎn)相除得到最后的余數(shù)作為校驗碼傳給接收方,接收方接受到數(shù)據(jù)之后將數(shù)據(jù)+校驗碼進行輾轉(zhuǎn)相除,余數(shù)是否為0,如果不為0說明數(shù)據(jù)有誤,可以重傳或單字節(jié)的糾錯;
通常該校驗碼只用來檢錯,不用來糾錯
校驗碼的確定:一般被除數(shù)是傳輸端和接收端通過協(xié)商來確定的,題目中一般通過一個多項式的權(quán)重來表示,如下
將信息數(shù)據(jù)往左移動多項式的最高次冪個位置,將這個結(jié)果對生成二進制碼進行模2除法,得到的余數(shù)就是校驗碼;
模2除法:和輾轉(zhuǎn)相除法類似,先做除法,這里的除法只需要保證最高位都為1就可以,減法操作和摩爾加法操作一樣,每一位都遵循異或算法。
校驗:對接受到的數(shù)據(jù)進行模2除,得到的結(jié)果為0,表示數(shù)據(jù)正確;
余數(shù)和出錯位置的關(guān)系:余數(shù)為0表示沒有出錯;余數(shù)為1,表示第一位或者第 余數(shù)最大值*n+1位的數(shù)據(jù)出錯(所以該校驗方式被稱為循環(huán)冗余校驗)但是數(shù)據(jù)的位數(shù)沒有超過余數(shù)的可能位數(shù),余數(shù)就對應(yīng)錯誤校驗位的位置。即,若2R ≥ K+R+1,則CRC碼可糾正單比特錯誤
檢錯糾錯能力:
檢測所有奇數(shù)個錯誤
所有雙比特錯誤
檢測所有小于校驗位長度的連續(xù)錯誤
定點數(shù)和浮點數(shù)
定點數(shù):小數(shù)點的位置固定
浮點數(shù):小數(shù)點的位置不固定??茖W(xué)計數(shù)法
無符號數(shù)的表示(int, long)
n位無符號數(shù)表示范圍: 0 ~ 2n - 1
有符號數(shù)(定點表示)
原碼
用尾數(shù)表示真值的絕對值,符號位“0/1”對應(yīng)“正/負(fù)”,一般位于第一位。若機器字長為n+1位,則尾數(shù)占n位。
定點整數(shù)
原碼所能表示的數(shù)的數(shù)量為 2n+1-1個,因為正負(fù)0僅僅對應(yīng)一個真值數(shù) 0;原碼整數(shù)的表示范圍:-(2n-1) ≤ x ≤ 2n-1
定點小數(shù)
若機器字長n+1位,原碼小數(shù)的表示范圍:-(1-2-n)≤ x ≤ 1-2-n;
反碼
若符號位為0,即正數(shù),原碼和反碼一致
若符號位位1,即負(fù)數(shù),反碼是原碼的數(shù)值全部取反
反碼僅僅是原碼轉(zhuǎn)為補碼的一種中間狀態(tài),實際中并沒有用
補碼
正數(shù)的補碼 = 原碼
負(fù)數(shù)的補碼 = 反碼末位 + 1(考慮進位)
補碼中僅有一種狀態(tài)對應(yīng)真值0;
定點整數(shù)補碼[x]補 = 1,0000000表示 -27所以補碼的范圍為 -2n ≤ x ≤ -2n-1;定點小數(shù)補碼同樣存在這個問題,多表示一個-1
補碼轉(zhuǎn)換為原碼,是同樣的操作,補碼取反,之后+1;
負(fù)數(shù)的補碼,從右數(shù)第一個為1的位置及其右邊都和原碼保持一致,左邊都和原碼相反。(小數(shù)和整數(shù)都一樣)
移碼
補碼的基礎(chǔ)上將符號位取反。注意:移碼只能表示整數(shù);
移碼可以方便計算機對比其所代表的真值的大小(遍歷權(quán)值位依次對比直到產(chǎn)生結(jié)果)
補碼取負(fù)操作
將所有位取反,末位 +1
原反補碼的作用
模運算的性質(zhì)
mod(12) 相當(dāng)于把所有的數(shù)據(jù)分為12份(組)
設(shè)x,m∈Z,m > 0,則存在唯一決定的整數(shù)q和r,使得 x = qm + r, 0≤ r <m;m即mod值,r為數(shù)論中余數(shù);如果x1、x2求得的r相同,那么兩者等價;如果二者絕對值之和 = 模,那么二者互為補數(shù)。
那么就可以將減a操作轉(zhuǎn)換為,加上(模-a)得到的結(jié)果再取模是等價的。
補碼的作用
而計算機的mod28;而進行28 - a操作相當(dāng)于對a取補碼
移位運算
算數(shù)移位
右移N位相當(dāng)于 將原值 / 基數(shù)N,低位舍棄,高位補0;如果舍棄位=0,則相當(dāng)于除以2,若舍棄的位≠0,則丟失精度。
左移N位相當(dāng)于 將原值 * 基數(shù)N,低位補0,高位舍棄,如果舍棄位=0,則相當(dāng)于乘基數(shù),若舍棄的位≠0,則嚴(yán)重丟失精度。
反碼的算數(shù)移位
負(fù)數(shù)反碼的補位,補1,而不是補0
補碼的算數(shù)移位
由于補碼計算過程的原因,低位知道第一個1的位置和原碼相同,其余和反碼相同。所以在移位時,低位補0,高位補1。
算數(shù)移位的應(yīng)用:
-20 x 7 等價于 -20 x (2 2 + 21 + 2 0);即相當(dāng)于 -20 左移1位 + (-20 左移2位) + (-20 左移0位)
邏輯移位
邏輯右移:高位補0,低位舍棄
邏輯左移:低位補0,高位舍棄
循環(huán)移位
二進制位循環(huán);
帶進位位的循環(huán)左移,單獨一個位置,存放在進位位
實現(xiàn)大端存儲和小端存儲的轉(zhuǎn)換
加減運算
原碼的加減運算
原碼的加法運算太復(fù)雜,計算機中通常是通過補碼來進行加法運算的;
[A + B]補 = [A]補 + [B]補
[A - B]補 = [A]補 + [-B]補
溢出判斷
設(shè)機器字長為8位(含一個符號位),所以該字長的補碼 能表示 -128到127的數(shù)字;但是如果兩個正數(shù)相加超過127,或者兩個負(fù)數(shù)相減小于-128,那么該運算為溢出運算;
兩個正數(shù)相加得到負(fù)數(shù),
兩個負(fù)數(shù)相加得到正數(shù)
即用符號表示為:
判斷方法1: 加數(shù)的符號位As,被加數(shù)的符號位Bs,運算結(jié)果的符號位Ss
V = AsBs[-Ss] + [-As] [-Bs]Ss
判斷方法2: 符號位的進位s,和最高數(shù)值位的進位i;s和i不同時有溢出;用硬件中的異或來判斷是否溢出;
判斷方法3: 雙符號位來判斷是否溢出,和方法2類似;計算機存儲的還是單符號,只是運算的時候復(fù)制了一份;模4補碼,有兩個符號位的補碼運算
模2補碼:只有一個符號位的補碼
溢出問題解決
符號位擴展
定點整數(shù)的擴展,負(fù)整數(shù),原碼左邊補8個0,反碼左邊補8個1,補碼左邊補8個1
定點小數(shù)的擴展,負(fù)小數(shù):原碼右邊補8個0,反碼右邊補8個1,補碼右邊補8個0(和原碼保持一致)
原碼的乘法運算
原碼的一位乘法: 每次參與運算的只有乘數(shù)的一個位;進行n輪的加法和移位運算
乘法結(jié)果的高位在ACC中,乘法結(jié)果的低位在MQ中
補碼的乘法運算
補碼的乘法運算中,除了進行n輪加法運算之后還會再多來一次加法運算;最終得到包含符號位的結(jié)果的補碼;
定點小數(shù)源碼的除法
只能進行定點小數(shù)的運算,但是如果除數(shù)比被除數(shù)小,那么電路檢測到之后就會直接停止;
余數(shù)恢復(fù)法
加減交替法 / 不恢復(fù)余數(shù)法(是對余數(shù)恢復(fù)的優(yōu)化)
最后一位如果為0,兩個算法都需要進行余數(shù)的恢復(fù)
余數(shù)和商的符號是相同的
總結(jié)
以上是生活随笔為你收集整理的王道考研专业课-计算机组成原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 西门子S7-1200控制四轴伺服程序案例
- 下一篇: 一个与微软大数据产品经理交流的机会 |