计算机组成与体系结构——计算机系统概述、数据表示方法
28號考計算機(jī)組成課,第一二章mooc學(xué)習(xí)筆記。
計算機(jī)系統(tǒng)概述
計算機(jī)組成課程介紹
核心專業(yè)基礎(chǔ)課課,在課程體系中起著承上啟下的作用。課程需要匯編語言、數(shù)字邏輯相關(guān)知識。
需要我們構(gòu)造觀+系統(tǒng)觀+工程關(guān)的而學(xué)習(xí)視角和學(xué)習(xí)方法 。
馮諾依曼結(jié)構(gòu)原理與結(jié)構(gòu)分析
概述
①解決問題的程序輸入(如C語言 編譯成匯編語言,指令的機(jī)器碼會存在指令存儲器里)計算機(jī)的主存后才能讓CPU訪問
②按照指令地址訪問存儲器并取出指令,指令機(jī)器碼經(jīng)過CPU解析,生成控制信號等
馮諾依曼計算機(jī)組成
運算器
控制器
存儲器
輸入輸出設(shè)備
鼠標(biāo)鍵盤、網(wǎng)卡、掃描儀等
顯示器、聲卡、網(wǎng)卡、打印機(jī)等
軟件系統(tǒng)
軟件:可運行的思想和內(nèi)容的數(shù)字化
思想:算法、規(guī)律、方法-----程序表達(dá)
內(nèi)容:圖像、圖形、數(shù)據(jù)、聲音、文字等被處理的對象
軟件的表現(xiàn)形式:程序和數(shù)據(jù)
數(shù)據(jù):以二進(jìn)制表示的信息
軟件的核心:算法
軟件的分類:系統(tǒng)軟件+支持軟件+應(yīng)用軟件
硬件與軟件系統(tǒng)之間的相互關(guān)系:
相互依存:硬件是軟件運行的基礎(chǔ),軟件的正常運行是硬件發(fā)揮作用的重要途徑。計算機(jī)系統(tǒng)必須配備完善的軟件系統(tǒng)才能正常運行,且應(yīng)充分發(fā)揮其硬件的功能
邏輯等效性:某些功能可以由硬件實現(xiàn),可由軟件實現(xiàn)
協(xié)同發(fā)展:軟件隨硬件技術(shù)的迅速發(fā)展而發(fā)展,軟件的不斷發(fā)展又促進(jìn)硬件的更新
計算機(jī)的層次結(jié)構(gòu):由上至下依次為應(yīng)用程序,高級語言,匯編語言,操作系統(tǒng),指令集架構(gòu)層,偽代碼層(MIPS中的RWrite=1,Branch=0…),硬件邏輯層
透明性概念:本來存在的事物或?qū)傩?#xff0c;從某個角度去看,卻好像不存在。如硬件的的特性對C語言程序設(shè)計者而言就具有透明性。
系統(tǒng)觀概念:當(dāng)硬件結(jié)構(gòu)發(fā)生變化時要想到可能對軟件產(chǎn)生的影響;不同類型的軟件對硬件有不同的要求
(并且編程是和CPU相關(guān)的,每當(dāng)有新的CPU出來的時候,開發(fā)者可以去查詢,充分發(fā)揮CPU功能)
軟硬件的分界線:即軟硬件的接口,是指令操作硬件的接口,因此指令格式以及指令的設(shè)計與硬件關(guān)聯(lián)!
計算機(jī)性能評價
本節(jié)需要學(xué)習(xí)幾個指標(biāo)與公式
非時間指標(biāo)
1)機(jī)器字長:
機(jī)器一次能處理的二進(jìn)制位數(shù)。由加法器、寄存器位數(shù)決定,一般與內(nèi)部寄存器的位數(shù)相等(字長),字長越長,表示數(shù)據(jù)的范圍就越大了
2)CPU和主存之間的總線寬度:
數(shù)據(jù)總線一次能并行傳送的最大信息位數(shù)。一般指的是運算器與存儲器之間的數(shù)據(jù)總線位數(shù)
3)主存容量與存儲帶寬:
主存容量:是指一臺計算機(jī)所包含的存儲單元總數(shù)
存儲帶寬:單位時間內(nèi)與主存
交換的二進(jìn)制信息量。常用單位為B/s(Bps 字節(jié)每秒)
KB/s(KBps 1024字節(jié)每秒) MB/s(MBps 1024×1024字節(jié)每秒)
[數(shù)據(jù)位寬和數(shù)據(jù)傳輸速率影響它]
時間指標(biāo)
1)主頻的倒數(shù)=時鐘周期
Hz:若干周期每秒,評價CPU性能
1GHz=1000MHz
1MHz=1000KHz
1KHz=1000Hz
外頻:CPU與主板之間同步的時鐘頻率
倍頻:CPU主頻與外頻之間的倍數(shù)
2)CPI:
執(zhí)行一條指令平均需要的時鐘周期數(shù)(即T周期的個數(shù))
[指令CPI分為單條指令CPI、一段程序中所有指令的CPI、指令系統(tǒng)CPI等]
CPI=程序中所有指令的時鐘周期數(shù)之和/程序中指令總數(shù)=Σ(程序中各類指令的CPI×程序中該類指令的比例)
例子:
3)IPC: 看上面圖的下面部分,IPC是每個時鐘周期要執(zhí)行多少條指令
4)MIPS:
每秒鐘CPU能執(zhí)行的指令總條數(shù)(單位:百萬條/秒)
MIPS=指令條數(shù)/(執(zhí)行時間×106)
=指令條數(shù)/(所有指令CPU時鐘周期數(shù)之和/f)×106
=f/(CPI×106)
例子:
5)CPU時間: 執(zhí)行一段程序所需要的時間:(CPU時間+I/O時間+存儲訪問時間+各類排隊時延等)
CPU時間 = 程序中所有指令的時鐘周期數(shù)之和×T
= 程序中所有指令的時鐘周期數(shù)之和/f
使用CPI [想下CPI的定義] 計算CPU時間:
CPU時間 = 總指令數(shù)×CPI×T
使用MIPS [想下MIPS的定義 ]計算CPU時間:CPU時間 = 指令條數(shù)/(MIPS×106)
例子:
思考:計算機(jī)性能指標(biāo)是確定的嘛?算法、編程語言
編譯程序、指令集體系結(jié)構(gòu)都會影響CPI MIPS CPU時間
比如算法會影響程序數(shù)量和指令類型
計算機(jī)系統(tǒng)概述習(xí)題
理解一下基準(zhǔn)測試程序
(1) 對于P1:M2機(jī)器速度快,因為時間短,比M1快一倍
對于P2:M1機(jī)器速度快,比M2快一倍
(2)在M1上執(zhí)行P1的速度:用MIPS標(biāo)準(zhǔn)來算就是200M/(10s×106)=20MIPS
執(zhí)行P2的速度:300K/(0.003s×106)=100MIPS
在M2上執(zhí)行P1的速度:…
在M2上執(zhí)行P2的速度:…
進(jìn)而可以比較執(zhí)行速度。
(3)假設(shè)M1和M2的時鐘頻率為800MHz和1.2GHz.
在M1上執(zhí)行P1的平均時鐘周期CPI為:
10×800M/(200×106)
在M2上執(zhí)行P2的平均時鐘周期CPI為:…
(4)用戶大量使用程序P1,并且只關(guān)心系統(tǒng)的響應(yīng)時間而不是吞吐率,根據(jù)性價比,選擇M1還是M2?
考慮執(zhí)行時間:性價比=1/(執(zhí)行時間×價格)
R越大性價比越高。
因此在大量使用P1程序時,M2性價比更高!
(5)如果另一個用戶也需要進(jìn)行選擇,用戶使使用程序P1和P2一樣多,主要關(guān)心的也是系統(tǒng)的響應(yīng)時間,也根據(jù)性價比,選擇M1還是M2?
P1和P2同等考慮,答案給出兩種計算方式:
①使用算術(shù)平均公式:(10+0.003)/2 × 5000 > (5+0.006)/2 × 8000
所以選擇M2
②使用幾何平均公式:sqrt(10×0.003) × 5000<sqrt(5×0.006) ×8000
所以選擇M1
S1和S2各有多少條指令:
S1有10條指令 S2有8條指令
CPI:
S1的CPI=(1×5+2×2+3×2+4×1)/10 = 1.9
S2的CPI=…
所含時鐘周期數(shù)、時間:
S1所含時鐘周期數(shù)=10×1.9
S1執(zhí)行時間=10×1.9/500MHz
S2所含周期數(shù)=…
S2執(zhí)行時間=…
——————————————————————
數(shù)據(jù)表示方法
摘要:計算機(jī)內(nèi)部流動的信息可分兩大類:
①數(shù)據(jù)信息是計算機(jī)加工處理的對象
②控制信息控制數(shù)據(jù)信息加工處理的過程。
本章討論數(shù)據(jù)信息的表示方法、運算方法及實現(xiàn)方法。
數(shù)據(jù)信息的表示方法
為什么研究機(jī)器內(nèi)的數(shù)據(jù)表示?
方便計算機(jī)硬件直接使用.包括支持的數(shù)據(jù)類型;表示的數(shù)據(jù)范圍,精度;是否利于軟件移植
1)真值:符號用+ -表示的數(shù)據(jù)方法
2)機(jī)器碼:數(shù)據(jù)符號化表示數(shù)據(jù),用0 1表示符號
3)
三種常見的機(jī)器碼:
NO.1 首先介紹定點數(shù):小數(shù)點位置固定的數(shù)據(jù)。
定點整數(shù):小數(shù)點在最低位數(shù)的后面
N=DnDn-1…D1D0.
定點小數(shù):小數(shù)點在最高位(為0)的后面,即為純小數(shù)
N=D0.D-1D-2…D-n
①原碼表示法:
X原 = X if(0≤X<2n)
= 2n-X if(-2n<X≤0)
原碼的特點:表示簡單,運算復(fù)雜,符號位不參加運算,因此我們還要設(shè)置加法器減法器。
0表示不唯一,有兩個編碼分別為00…0和10…0
n位的表示范圍:-2n-1+1~2n-1-1
②反碼表示法:
X反 = X if(0≤X<2n)
=2n+1+X-1 if(-2n<X≤0)
反碼的特點:表示相對原碼復(fù)雜,運算相對簡單
符號為參加運算,但符號位的進(jìn)位應(yīng)加到最低位想一想為什么呢??
0表示不唯一,有兩個編碼分別為00…0和11…1
n位表示范圍:-2n-1+1~2n-1-1
③補(bǔ)碼表示法
X補(bǔ) = X if(0≤X<2n)
=2n+1+X if(-2n<X≤0)[mod 2n+1]
補(bǔ)碼的特點:表示相對原碼復(fù)雜,運算簡單
只需要設(shè)置加法器
0的表示唯一,為00…0
補(bǔ)碼n位表示范圍:-2n-1~2n-1-1
實際應(yīng)用中使用雙,符號位補(bǔ)碼,使用00表示正數(shù)的符號,11表示負(fù)數(shù)的符號,為什么這么表示呢?在運算和溢出判斷中方便
理解:補(bǔ)碼中模的概念是符號進(jìn)位所在位的權(quán)值
例如我們說8是-4對模12的補(bǔ)碼<=>-4的模12的補(bǔ)碼等于8
<1>一個負(fù)數(shù)的補(bǔ)碼等于模減去該負(fù)數(shù)的絕對值
<2>對于某一個確定的模,某數(shù)減去小于模的某數(shù)X,總可以用該數(shù)加上某數(shù)X的補(bǔ)碼來代替
(統(tǒng)一了減法和加法)
例如10-4 = 10+(12-4)=10+8 = 6(mod 12)
例如9828-1928=9828+(104-1928)=17900=7900(mod 104)
而在計算機(jī)中,就是使用了這種思想。
④移碼表示法:
浮點數(shù)的階碼,IEEE754中解碼用移碼表示
X移 =2n +X -2n<X ≤2n
X是真值,2n理解為是一個固定的偏移值。
例如,X=+10101時:X移=[010101]移=25+X=100000+010101=110101
可以看出,移碼中符號位表示的規(guī)律與原碼
反碼、補(bǔ)碼相反。
實際上:一個數(shù)的移碼數(shù)值位與補(bǔ)碼相同,符號位與補(bǔ)碼相反。
NO.2 介紹浮點數(shù),先說定點數(shù)可以認(rèn)為不用表示點了,充分利用字長表示更多的有效位。定點數(shù)的數(shù)據(jù)范圍受字長的限制。
浮點數(shù):把數(shù)據(jù)的范圍和精度分別表示的一種數(shù)據(jù)表示方法,可以表示一些超大的數(shù)或者超小的數(shù)
①一般格式:EsE1E2…EmMsM1M2…Mk
Es位階碼位數(shù),數(shù)據(jù)的范圍,小數(shù)點在數(shù)據(jù)中的位置
Ms為尾數(shù)的位數(shù),決定數(shù)的精度
表示:X = 2e×m
看例子:
將X=2-01×(-0.1110)表示成機(jī)器碼的形式
8位表示,階碼占3位,位數(shù)占5位
假設(shè)階碼和位數(shù)均采用補(bǔ)碼
那么在機(jī)器中表示就是111 10010
但是!這樣子表示是有不足的,默認(rèn)前面三位表示階碼,后面五位表示位數(shù),但是其他系統(tǒng)是不一定這樣的 想想也是,這樣子肯定是有不足的
①因此我們使用統(tǒng)一格式:IEEE 754格式
單精度:1位符號位s 8位偏移指數(shù)(階碼)e 23位有效尾數(shù)m
雙精度:1位符號位 11位偏移指數(shù)(階碼)s 52位有效位數(shù)m
說明:
<1>此時可以將浮點數(shù)的階碼值變成非負(fù)整數(shù),便于浮點數(shù)的比較和排序,因為移碼是真值的一種去符號化的表示,階碼之所以用移碼是因為移碼值大的指數(shù)就大,通俗點說就是把負(fù)數(shù)范圍的數(shù)表示為正數(shù),方便比較。
<2>在IEE754中,其尾數(shù)形式默認(rèn)是1.×××××,其中部分保存的是×××××(1被隱藏了),保留了更多的有效位。
<3>拿單精度為例,8位偏移指數(shù)(階碼)其實就是移碼-1,(移碼是數(shù)值位與補(bǔ)碼相同,符號位與補(bǔ)碼相反)。雙精度也一樣
為什么階碼用移碼來表示呢?我覺得是為了表達(dá)更大的數(shù)
表示:
單精度:X = (-1)s×2e-127×1.m
雙精度:X = (-1)s×2e-1023×1.m
<4>全0階碼即e=0,m非0即m≠0,表示非規(guī)格化浮點數(shù)
(對應(yīng)下面表中的第二行)
看例子:
數(shù)符(1位)階碼5位(1位階符)尾數(shù)10位(1位階符)
其中,階碼5位(1位階符),采用移碼;尾數(shù)11位(1位數(shù)符),采用補(bǔ)碼
(這種題要審題 他不是使用IEE754進(jìn)行規(guī)格化的 按題目的要求進(jìn)行規(guī)格化)
(1) +10101.011B = 0.10101 011 00 × 2101
階碼:5移碼=0101移碼=10101
尾數(shù):0.1010101100補(bǔ)碼=0.1010101100
因此二進(jìn)制代碼形式:0 10101 1010101100
(2)-0.125D=-0.001B=-1×2-3
階碼:-3移碼=-0011移碼=01101
尾數(shù):0.1補(bǔ)碼=0.1000000000
二進(jìn)制代碼形式:1 01101 1000000000
為什么是1000000000
(1)
+10101.011B=1.0101011 × 2100
=(-1)0×1.0101011×24+01111111
=0 10000011 01010110000000000000000
=41AB0000H
(2)
-0.125D=-0.001B=-1.000000×2-010
=(-1)1×1.00000×2-3+01111111
=(-1)1×1.00000×201111101
=1 01111101 00000000000000000000000
=BE800000H
記住:進(jìn)行轉(zhuǎn)換的時候是進(jìn)行二進(jìn)制編碼的
NO.3 介紹西文字符的編碼,中文編碼,由于不考,就不看了。
NO.4 十進(jìn)制數(shù)的編碼
其實BCD碼是用四位二進(jìn)制數(shù)來表示一位十進(jìn)制數(shù)的方法!
數(shù)據(jù)信息的表示方法習(xí)題
答:題目說這兩個數(shù)都是用IEE754格式進(jìn)行表示的
首先R1=0000 0000 0000 0000 0001 0000 1000 1011B
R2=1000 0000 1000 0000 0001 0000 1000 1011B
(1)在無符號加法指令中:
R1 R2對于該指令都是無符號表示的,所以其真值都是看他本身,直接R1+R2=80802116H就可以了
(2)在帶符號整數(shù)乘法指令中:
題目中給了帶符號整數(shù)的是用補(bǔ)碼表示,R1 R2都是整數(shù)的補(bǔ)碼,所以看二進(jìn)制表示形式,R1是正數(shù),R2是負(fù)數(shù)。
所以說R1真值是他本身=0000108BH,R2的真值是=-7F7FEF75H(是通過補(bǔ)碼轉(zhuǎn)原碼得到的!)
R1×R2=對應(yīng)真值相乘
(3)在單精度浮點數(shù)減法指令中:那么R1 R2就是操作數(shù)得IEE754形式表示,也就是找到它們各自的符號位,階碼位,尾數(shù)位,然后再進(jìn)行減法
首先化簡R1:
符號位為 0,階碼為00000000,尾數(shù)部分為000000000010000100011B,因此它是非規(guī)格化浮點數(shù)(階碼全0,非0尾數(shù),指數(shù)為-126,尾數(shù)沒有隱藏的1)。所以我們用16進(jìn)制(當(dāng)然按理來說得用23位二進(jìn)制數(shù)表示)表示尾數(shù)為:+0.002116H
R1的真值為(-1)0×0.002116H×2-126
化簡R2:
符號位為1,階碼為00000001,尾數(shù)部分為00000000001000010001011,因此它是規(guī)格化浮點數(shù)(指數(shù)為1-127=-126,尾數(shù)有隱藏的1),R2的真值為(-1)1×-1002116H×2-126
第一問和上面有一道題差不多,要時刻記得我們是使用題目要求的二進(jìn)制表示形式來表示一個十進(jìn)制數(shù),所以說對于十進(jìn)制數(shù)一定要先化成二進(jìn)制數(shù)!
(1) +1.75D=1.11B=0.011100×22=(-1)0×0.011100×41
=(-1)0×0.011100×41+32=(-1)0×0.011100×410001
+19D=10011B=…和上面化簡思路差不多
-1/8=-0.001=- 0.1×4-1=…和上面化簡思路差不多
(2)
① 規(guī)格化浮點數(shù)的表示范圍:
最大正數(shù)
+0.111111B×411111=(0.333)4×415
最小正數(shù):
+0.01000B×400000=(0.100)4×4-16
最大負(fù)數(shù):
-0.010000B×400000=(-0.100)4×4-16
最小負(fù)數(shù):
-1000000B×411111=(-1.000000)×415
① 12位定點補(bǔ)碼整數(shù)表示范圍:
最大正數(shù):+011111111111=011111111111=2047
最小正數(shù):+000000000001=000000000001= + 1
最大負(fù)數(shù):-000000000001補(bǔ)=111111111111=-1
最小負(fù)數(shù):=-10000000000補(bǔ)=1000000000000=-2048
① 12位定點補(bǔ)碼小數(shù)表示范圍:
最大正數(shù):+0.11111111111=0.11111111111=2047/2048
最小正數(shù):+0.00000000001=000000000001= 1/2048
最大負(fù)數(shù):-0.00000000000補(bǔ)=1.11111111111
最小負(fù)數(shù):-1.00000000000補(bǔ)=1.00000000000
浮點數(shù)表示范圍大,精度低;好定點數(shù)范圍小,精度
(1)+1.75=1.11B=1.11B×20
階碼為:0+127=01111111B
數(shù)符為:0
尾數(shù)為:1.11000000000000000000000
(2)+258=10000010B=1.0000001B×2sup>8
階碼為:8+127=135
數(shù)符為:0
尾數(shù)為:00000010000000000000000
數(shù)據(jù)校驗碼
為了防止出錯,要提高計算機(jī)硬件本身的可靠性,減少傳送中各環(huán)節(jié)的差錯外。可以使數(shù)據(jù)經(jīng)過某種形式的編碼后,具有發(fā)現(xiàn)自身錯誤的特征,甚至給出錯誤所在的準(zhǔn)確位置。具有發(fā)現(xiàn)錯誤,或者同時指出錯誤所在位置特征的數(shù)據(jù)編碼稱為數(shù)據(jù)校驗碼。
碼距與檢錯或糾錯能力的關(guān)系
碼距:在信息編碼中,兩個合法代碼對應(yīng)位上編碼不同的位數(shù)稱為碼距,又稱海明距離。舉例如下:10101和00110從第一位開始依次有第一位、第四、第五位不同,則海明距離為3。
簡單奇偶校驗
思想:
奇偶校驗碼是一種結(jié)構(gòu)最簡單的線性分組碼,在被傳送的n位信息上, 加上一個二進(jìn)制位作為校驗位,使配置后的n+1位二進(jìn)制代碼中1的個數(shù)為奇數(shù)或偶數(shù)。也比如奇數(shù)校驗,就是說在傳送的位數(shù)中,少一個1或多一個1成了偶數(shù)個1,那么奇校驗電路發(fā)生差錯。但是只能檢測出一位出錯,并且沒法判斷出錯的位置
根據(jù)公式:
碼距=2
實現(xiàn)方式:
有效信息k位+一個校驗位(加上一個校驗位使得整個編碼1的個數(shù)為奇數(shù)或偶數(shù))
校驗檢測:
讀出編碼送入校驗電路,看讀出的代碼是否有錯,如果有錯,則"奇校驗出錯"=0,否則,“奇校驗出錯”=1
交叉奇偶校驗
思想:
計算機(jī)在進(jìn)行大量字節(jié)(數(shù)據(jù)塊)傳送時,不僅每一個字節(jié)有一個奇偶校驗位做橫向校驗,而且全部字節(jié)的同一位也設(shè)置一個奇偶校驗位做縱向校驗,這種橫向、縱向同時校驗的方法稱為交叉校驗。
就是這樣子:
交叉校驗可以發(fā)現(xiàn)兩位同時出錯的情況,假設(shè)第2字節(jié)的A6、A4(藍(lán)色字體的)兩位均出錯,橫向校驗位無法檢出錯誤,但第A6、A4位所在列的縱向校驗位會顯示出錯,這與前述的簡單奇偶校驗相比要保險多了。
(通過理解,這種方法可以糾正一位錯誤 出錯不同行不同列兩位錯誤 一行兩位 但是四個頂點同時出錯沒辦法檢測——這個需要你畫圖,自己理解一下)
海明校驗碼
思想:
海明碼實際上是一種多重奇偶校驗,、在有效信息位中加入幾個校驗位形成海明碼,使碼距比較均勻地拉大,并把海明碼的每一個二進(jìn)制位分配到幾個奇偶校驗組中。當(dāng)某一位出錯后,就會引起有關(guān)的幾個校驗位的值發(fā)生變化,這不但可以發(fā)現(xiàn)錯誤,還能指出錯誤的位置,為自動糾錯提供了依據(jù)。
實現(xiàn)方式:
有效信息k位+r個校驗位 N=k+r≤2r-1
設(shè)k+r位海明碼從左到右依次為1,2,3…k+r位,r位校驗碼即為Pi(i=1,2,3…,r),分別微語k+r位海明編碼的第2i-1(i=1,2,3,…,r)其余依次放置被校驗的數(shù)據(jù)位。
校驗檢測步驟:
①根據(jù)給出的規(guī)則,b1數(shù)據(jù)位被P1 P2校驗;b2數(shù)據(jù)位被P1 P3校驗;b3數(shù)據(jù)位被P2 P3校驗;b4數(shù)據(jù)位被P1 P2 P3校驗;b5數(shù)據(jù)位被P1 P4校驗;b6…;b7…
②按照偶校驗計算出P1~P4四個校驗位的值
③設(shè)置4個指錯字,指錯字怎么來的呢?例如:G4=P4異或所校驗的分組
(思考一下正是多重奇偶校驗)
一個完整的校驗過程:
不難發(fā)現(xiàn),海明編碼一個位發(fā)生變化會引起至少兩個校驗位發(fā)生變化
思想:
指錯字為0,不一定沒錯。這么想,比如上面的P1 b1 P2都出錯了,他對應(yīng)G1 G2公式的偶特性并沒有發(fā)生變化,因此校驗不出來。
一位錯和兩位錯不能由指錯字區(qū)別。這么想,如果b1,b2同時出錯和僅b3同時出錯時指錯字相同
循環(huán)冗余校驗碼
思想:
基于模2運算建立編碼規(guī)律的校驗碼,可以通過模2運算來建立有效信息位和校驗位之間的約定關(guān)系。這種約定關(guān)系為:假設(shè)n是有效數(shù)據(jù)信息位位數(shù),r是校驗位位數(shù)。則n位有效信息位與r位校驗位所拼接的數(shù)(k=n+r位長),能被一約定的數(shù)除盡。
介紹模2除運算:
要懂得模2除的基本方法
實現(xiàn)以及檢錯方式:
有效信息k位+r個校驗位 N=k+r≤2r-1
直接上例題吧:
①將有效信息位1100表示為多項式:
M(x)=X3+X2=1100
②R(x) = M(x)×X3 模二除 G(x)
③M(x)左移r=3位,得M(x)×X3
M(x)×X3=X6+X5=1100000
④M(x)×X3與r位余數(shù)R(x) 作“模2加”,即可求得它的CRC編碼
M(x)×X3+R(x)=1100000+010=1100010
k=4 r=3
⑤出錯校驗:
說明:海明校驗對于生成多項式的要求很高,任何一位出錯,應(yīng)使余數(shù)不為零;不同位發(fā)生錯誤,都應(yīng)使余數(shù)不同;用余數(shù)補(bǔ)零作“模2除”,應(yīng)使余數(shù)循環(huán)。最高位和最低為必須為1…所以生成多項式不容易求,思考生成多項式到底是怎么求的呢??
數(shù)據(jù)校驗碼習(xí)題
傳輸信息展開為二進(jìn)制形式為:
1000 1111 0011 1100 1010 1011 1001 0110
根據(jù)奇校驗公式各個校驗位為:
0 1 0 1
接收到的信息
1000 0111 0011 1100 1010 1011 1001 0110
校驗位為:
0 1 0 1
根據(jù)接收到的信息數(shù)據(jù)計算出4位奇校驗位為
1 1 0 1
將計算出的4位校驗位和接收到的4位校驗位異或
得到1、0、0、0,說明數(shù)據(jù)信息的第一個字節(jié)發(fā)生了變化,出現(xiàn)錯誤
①
②根據(jù)公式可以計算出各個校驗位:
③計算出故障字
3.
解答:根據(jù)上面交叉冗余校驗的步驟進(jìn)行校驗即可
End:
1. 自己總結(jié)的大部分都是來自華中科技大學(xué)mooc
2. 總結(jié)內(nèi)容出現(xiàn)錯誤在所難免,寫了大概9個多小時!
3. 學(xué)校的計組老師反正是什么都沒有教會我,教學(xué)水平與態(tài)度不敢恭維。
總結(jié)
以上是生活随笔為你收集整理的计算机组成与体系结构——计算机系统概述、数据表示方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (连载)Android 8.0 : 系统
- 下一篇: JAVA点餐系统计算机毕业设计Mybat