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