(一)計算機(jī)系統(tǒng)硬件基本組成
計算機(jī)系統(tǒng)是由硬件和軟件組成的履植,它們協(xié)同工作來運(yùn)行程序。
計算機(jī)的硬件組成:
- 運(yùn)算器
- 控制器
- 存儲器
- 輸入設(shè)備
- 輸出設(shè)備
(二)中央處理單元
中央處理單元(CPU)是計算機(jī)系統(tǒng)的核心部件悄晃,負(fù)責(zé)獲取程序指令玫霎、對指令進(jìn)行譯碼并加以執(zhí)行。
1.CPU的功能
- 程序控制妈橄。cpu通過執(zhí)行指令來控制程序的執(zhí)行順序庶近,是cpu的重要功能。
- 操作控制眷蚓。cpu產(chǎn)生每條指令的操作信號并將操作信號送往對應(yīng)的部件鼻种,控制相應(yīng)的部件按指令的功能要求進(jìn)行操作。
- 時間控制沙热。cpu對指令執(zhí)行過程中操作信號的出現(xiàn)時間叉钥、持續(xù)時間及出現(xiàn)的時間順序都進(jìn)行嚴(yán)格控制。
- 數(shù)據(jù)處理篙贸。cpu對數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算及邏輯運(yùn)算沼侣。
2.CPU的組成
- 運(yùn)算器。是執(zhí)行部件歉秫,執(zhí)行所有的算術(shù)運(yùn)算蛾洛、邏輯運(yùn)算。
- 控制器雁芙≡欤控制整個cpu的工作,它決定了計算機(jī)運(yùn)行過程的自動化兔甘。
- 寄存器組谎碍。分為專用寄存器(運(yùn)算器和控制器中的寄存器)和通用寄存器。
- 內(nèi)部總線洞焙。是計算機(jī)系統(tǒng)中最快的總線蟆淀,用來與高速緩存拯啦、主存和北橋(或MCH)之間傳送信息。
(1)運(yùn)算器
- 運(yùn)算器由算術(shù)邏輯單元(ALU)熔任、累加寄存器褒链、數(shù)據(jù)緩沖寄存器和狀態(tài)條件寄存器等組成,是數(shù)據(jù)加工處理部件疑苔,用于完成計算機(jī)的各種算術(shù)和邏輯運(yùn)算甫匹。
- 運(yùn)算器所進(jìn)行的所有操作都是由控制器發(fā)出的控制信號來指揮的,所以它是執(zhí)行部件惦费。
- 運(yùn)算器主要有兩個主要功能:算術(shù)運(yùn)算兵迅、邏輯運(yùn)算。
(2)控制器
- 用于控制整個cpu的工作薪贫。
- 包括指令寄存器(IR)恍箭、程序計數(shù)器(PC)、地址寄存器(AR)瞧省、指令譯碼器(ID)季惯。
- 指令控制邏輯。要完成取指令臀突、分析指令和執(zhí)行指令的操作勉抓。一般包括指令控制邏輯、時序控制邏輯候学、總線控制邏輯藕筋、中斷控制邏輯等幾個部分
- 時序控制邏輯。要為每條指令按時間順序提供應(yīng)有的控制信號梳码。
- 總線控制邏輯隐圾。為多個功能部件服務(wù)的信息通路的控制電路。
- 中斷控制邏輯掰茶。用于控制各種中斷請求暇藏,并根據(jù)優(yōu)先級的高低對中斷請求進(jìn)行排隊,逐個交給cpu處理濒蒋。
(3)寄存器
- 用來暫存運(yùn)算和控制過程中的中間結(jié)果盐碱、最終結(jié)果以及控制、狀態(tài)信息的沪伙。
- 分為通用寄存器和專用寄存器瓮顽。
3.多核CPU
- 核心又稱為內(nèi)核,是cpu最重要的組成部分围橡。cpu中心那塊突起的芯片就是核心暖混。
- cpu所有的計算、接收/存儲命令翁授、處理數(shù)據(jù)都由核心執(zhí)行拣播。
- cpu核心都有固定的邏輯結(jié)構(gòu)晾咪,包括:一級緩存、二級緩存贮配、執(zhí)行單元谍倦、指令級單元和總線接口等邏輯單元。
- 多核是指在一個單芯片上集成兩個或多個處理器內(nèi)核牧嫉,每個內(nèi)核都有自己的邏輯單元、控制單元减途、中斷處理器酣藻、運(yùn)算單元等。
- 多核在理論上是在任何時間內(nèi)每個核執(zhí)行各自的任務(wù)鳍置,不存在交替問題辽剧;單核是交替地轉(zhuǎn)換執(zhí)行多個任務(wù),只是交替的時間很短税产。
(三)數(shù)據(jù)表示
數(shù)值在計算機(jī)中表示的形式稱為機(jī)器數(shù)怕轿,參用的是二進(jìn)制,用0
和1
表示辟拷。
1.原碼撞羽、反碼、補(bǔ)碼和移碼
(1)原碼
數(shù)值X
的原碼記為[X]原
衫冻,如果機(jī)器字長為n
(n
個二進(jìn)制位表示數(shù)據(jù))诀紊,則原碼的定義如下:
在原碼表示法中,最高位是符號位隅俘,0
表示正號邻奠,1
表示負(fù)號,其余的n-1
位表示數(shù)值的絕對值为居。
數(shù)值0
的原碼表示有兩種形式:[+0]原=0 0000000碌宴,[-0]原=1 0000000
。
(2)反碼
數(shù)值X
的反碼記為[X]反
蒙畴,如果機(jī)器字長為n
贰镣,則反碼的定義如下:
在反碼表示中,最高位是符號位膳凝,0
表示正號八孝,1
表示負(fù)號,正數(shù)的反碼與原碼相同鸠项,負(fù)數(shù)的反碼則是其絕對值按位求反干跛。
數(shù)值0
的反碼表示有兩種形式:[+0]反=0 000000,[-0]反=1 1111111
祟绊。
(3)補(bǔ)碼
數(shù)值X
的補(bǔ)碼記為[X]補(bǔ)
楼入,如果機(jī)器字長為n
哥捕,則補(bǔ)碼的定義如下:
在補(bǔ)碼表示中,最高位為符號位嘉熊,0
表示正號遥赚,1
表示負(fù)號,正數(shù)的補(bǔ)碼與其原碼和反碼相同阐肤,負(fù)數(shù)的補(bǔ)碼則等于其反碼的末位加1
凫佛。
數(shù)值0
的補(bǔ)碼表示只有一種形式:[+0]補(bǔ)=0 0000000,[-0]補(bǔ)=0 0000000
孕惜。
(4)移碼
移碼表示法是在數(shù)X
上增加一個偏移量來定義的愧薛,常用于表示浮點數(shù)中斷階碼。如果機(jī)器字長為n
衫画,規(guī)定偏移量為2^(n-1)
毫炉,則移碼的定義如下:
實際上,在偏移2^(n-1)
的情況下削罩,只要將補(bǔ)碼的符號位取反便可獲得相應(yīng)的移碼表示瞄勾。
2.定點數(shù)和浮點數(shù)
(1)定點數(shù)
定點數(shù)就是小數(shù)點的位置固定不變的數(shù)。分為:定點整數(shù)(純整數(shù)弥激,小數(shù)點在最低有效數(shù)值位之后)进陡、定點小數(shù)(純小數(shù),小數(shù)點在最高有效數(shù)值位之前)微服。
(2)浮點數(shù)
浮點數(shù)是小數(shù)點位置固定不變的數(shù)四濒,它能表示更大范圍的數(shù)。
一個二進(jìn)制數(shù)N
可以表示為更一般的形式N=2^E*F
职辨,其中E
稱為階碼盗蟆,F
稱為尾數(shù)。例如:
1011.10101=2^4*0.101110101
或
1011.10101=2^5*0.0101110101
用階碼和尾數(shù)表示的數(shù)稱為浮點數(shù)舒裤,這種表示數(shù)的方法稱為浮點表示法喳资。在浮點表示法中,階碼為帶符號的純整數(shù)腾供,尾數(shù)為帶符號的純小數(shù)仆邓。
浮點數(shù)的表示格式為:
階符 | 階碼 | 數(shù)符 | 尾數(shù) |
---|
浮點數(shù)的特性:
- 一個數(shù)的浮點表示不是唯一的,當(dāng)小數(shù)點的位置變化時伴鳖,階碼也隨之改變节值;
- 浮點數(shù)所能表示的數(shù)值范圍主要由階碼決定,所表示數(shù)值的精度由尾數(shù)決定榜聂;
- 為了充分利用尾數(shù)來表示更多的有效數(shù)字搞疗,通常采用規(guī)格化浮點數(shù)(規(guī)格化是指將尾數(shù)的絕對值限定在區(qū)間[0.5,1])。
(3)工業(yè)標(biāo)準(zhǔn)IEEE 754
浮點數(shù)的標(biāo)準(zhǔn)是IEEE 754工業(yè)標(biāo)準(zhǔn)须肆,該標(biāo)準(zhǔn)的表示形式為:(-1)^S*2^E*(b0*b1*b2*b3*···bn)
匿乃。其中(-1)^S
為該浮點數(shù)的數(shù)符桩皿,當(dāng)S
為0
時表示正數(shù),為1
時表示負(fù)數(shù)幢炸;E
為階碼泄隔,用移碼表示;(b0*b1*b2*b3*···bn)
為尾數(shù)宛徊,長度是n
位佛嬉,用原碼表示。
根據(jù)IEEE 754工業(yè)標(biāo)準(zhǔn)闸天,被編碼的值分為3種:規(guī)格化的值暖呕、非規(guī)格化的值、特殊值号枕。
- 規(guī)格化的值缰揪。當(dāng)階碼部分的二進(jìn)制不全為
0
也不全為1
時陨享。 - 非規(guī)格化的值葱淳。階碼的二進(jìn)制值全為
0
時。一是用來表示數(shù)值0
抛姑,二是表示非常接近于0
的數(shù)赞厕。 - 特殊值。階碼的二進(jìn)制值全為
1
時定硝。當(dāng)尾數(shù)部分全為0
時皿桑,表示無窮大(當(dāng)符號位為0
時,表示+無窮大
蔬啡;當(dāng)符號位為1
時诲侮,表示-無窮大
);當(dāng)尾數(shù)部分不全為0
時箱蟆,稱為NaN
沟绪,即不是一個數(shù)。
(4)浮點數(shù)的運(yùn)算
浮點數(shù)的加減運(yùn)算步驟:
- 對階空猜。使兩個數(shù)的階碼相同绽慈,令
K=|i-j|
,把階碼小的數(shù)的尾數(shù)右移K
位辈毯,使其階碼加上K
坝疼。 - 求尾數(shù)和(差)。
- 結(jié)果規(guī)格化并判斷溢出谆沃。
- 舍入處理钝凶。在對結(jié)果右規(guī)時,尾數(shù)的最低位將因為移出而丟掉唁影。
- 溢出判別腿椎。
浮點數(shù)相乘桌硫,其積的階碼等于兩乘數(shù)的階碼相加,積的尾數(shù)等于兩乘數(shù) 的尾數(shù)相乘啃炸。
浮點數(shù)相除铆隘,其商的階碼等于被除數(shù)的階碼減去除數(shù)的階碼,商的尾數(shù)等于被除數(shù)的尾數(shù)除以除數(shù)的尾數(shù)南用。
(四)校驗碼
為了保證計算機(jī)系統(tǒng)運(yùn)行時的數(shù)據(jù)傳輸?shù)恼_性膀钠,通常使用校驗碼的方法來檢測傳送的數(shù)據(jù)是否出錯。
數(shù)據(jù)可能出現(xiàn)的編碼分為兩類:合法編碼和錯誤編碼裹虫。合法編碼用于傳送數(shù)據(jù)决摧,錯誤編碼不允許出現(xiàn)在數(shù)據(jù)中。
合理地設(shè)計錯誤編碼及編碼規(guī)則疆液,使得數(shù)據(jù)在傳送中出現(xiàn)某種錯誤時孽水,會變成錯誤編碼,這樣就可以檢測出接收到的數(shù)據(jù)是否有錯匣屡。
碼距封救,是指一個編碼系統(tǒng)中任意兩個合法編碼之間至少有多少個二進(jìn)制位不同。
常見的校驗碼:奇偶校驗碼捣作、海明碼誉结、循環(huán)冗余校驗碼。
1.奇偶校驗碼
奇偶校驗碼通過在編碼中增加一位校驗碼來使編碼中1
的個數(shù)為奇數(shù)(奇校驗)或者為偶數(shù)(偶校驗)券躁,從而使碼距變?yōu)?code>2惩坑。
對于奇校驗來說,它可以檢查代碼中奇數(shù)位出錯的編碼也拜,但不能發(fā)現(xiàn)偶數(shù)位出錯的情況以舒,即當(dāng)合法編碼中的奇數(shù)位發(fā)生了錯誤時,即編碼中的1
變成0
或0
變成1
慢哈,則該編碼中1
的個數(shù)的奇偶性就發(fā)生了變化蔓钟,從而可以發(fā)現(xiàn)錯誤。
常用的奇偶校驗碼有三種:水平奇偶校驗碼岸军、垂直奇偶校驗碼奋刽、水平垂直校驗碼。
2.海明碼
海明碼是在數(shù)據(jù)位之間的特定位置上插入k
個校驗位艰赞,通過擴(kuò)大碼距來實現(xiàn)檢錯和糾錯佣谐。
3.循環(huán)冗余校驗碼
循環(huán)冗余校驗碼由兩部分組成,左邊為信息碼(數(shù)據(jù))方妖,右邊為校驗碼狭魂。利用生成多項式為k
個數(shù)據(jù)位產(chǎn)生r
個校驗位來進(jìn)行編碼,編碼長度位k+r
。