原理筆記
第一章 計算機系統(tǒng)概述
1.計算機發(fā)展歷程
1.1 硬件的發(fā)展
1.四代變化:
①第一代計算機:電子管時代。使用機器語言編程,體積大,成本高;
②第二代計算機:晶體管時代。軟件開始使用高級語言,操作系統(tǒng)雛形;
③第三代計算機:中小規(guī)模集成電路時代。高級語言發(fā)展迅速,開始有分時操作系統(tǒng);
④第四代計算機:超大規(guī)模集成電路時代。產(chǎn)生微處理器,并行,高速緩存等新概念;
2.元件的更新?lián)Q代
1.摩爾定律–》2.半導(dǎo)體存儲器–》3.微處理器的發(fā)展。
①微型計算機的發(fā)展以微處理器為標(biāo)志。
②傳統(tǒng)馮諾依曼體系采用 單指令流,單數(shù)據(jù)流方式。
1.2 軟件的發(fā)展
經(jīng)歷了面向機器的機器語言和匯編語言,面向問題的高級語言。
高級語言的發(fā)展又經(jīng)歷了科學(xué)工程計算的FORTRAN -->結(jié)構(gòu)化設(shè)計的PASCAL --> 面向?qū)ο蟮腃++ -->適應(yīng)網(wǎng)絡(luò)的Java。
2.計算機系統(tǒng)結(jié)構(gòu)層次
2.1 計算硬件的基本組成
輸入設(shè)備:將信息轉(zhuǎn)為計算機能識別的形式輸入。
輸出設(shè)備:將計算機處理結(jié)果以人們能認(rèn)識的形式輸出。
存儲器:計算機的存儲部件,用來存放程序和數(shù)據(jù)。
運算器:是計算機的執(zhí)行部件,進行算數(shù)和邏輯運算。
控制器:指揮中心,協(xié)調(diào)各部件工作。
2.2 早期馮諾依曼
提出“存儲程序”概念。存儲程序?qū)⒅噶钜远M制代碼的形式事先輸入計算機的主存儲器,然后按其在存儲器中首地址執(zhí)行程序的第一條指令,以后就按該程序的規(guī)定順序執(zhí)行其他指令,直到程序執(zhí)行結(jié)構(gòu)。
馮諾依曼體系的特點:
1.由五大部件組成。
2.指令和數(shù)據(jù)以同等地位存于存儲器,可按地址尋訪。
3.指令和數(shù)據(jù)用二進制表示。
4.指令由操作碼和地址碼組成。
5.指令在存儲器內(nèi)按順序存放。
6.早期馮諾依曼以運算器為中心?,F(xiàn)代存儲器已經(jīng)以存儲器為中心,使IO盡可能繞過CPU
現(xiàn)代計算機結(jié)構(gòu):
2.3 認(rèn)識各個部件
1.輸入設(shè)備
2.輸出設(shè)備
3.存儲器
①也稱主存儲器,CPU能直接訪問的存儲器是主存儲器,輔助存儲器(外存)用來幫主存儲器記憶更多信息。
②主存儲器由多個存儲單元組成,每個存儲單元包括若干存儲元件。每個存儲單元可存儲一串二進制代碼,稱這串代碼為存儲字。稱這串代碼的位數(shù)為存儲字長。
③工作方式:按存儲單元地址存取,即按地址存取方式。
1.地址寄存器(MAR):存放訪存地址,用于尋址,來找存儲單元。一般和存儲字長相等。
2.數(shù)據(jù)寄存器(MDR):暫存從存儲器讀寫的信息。
3.時序控制邏輯:產(chǎn)生存儲操作的時序信號。
4.存儲體:數(shù)據(jù)在存儲體內(nèi)按地址存取。
基本概念:
1.存儲單元:每個存儲單元存放一串二進制代碼。
2.存儲字:存儲單元中二進制代碼的組合。
3.存儲字長:存儲單元中二進制代碼的位數(shù)。
4.存儲元:存儲二進制的電子元件,每個存儲元可存1bit。
4. 運算器
運算器用于進行算術(shù)運算和邏輯運算。核心是算數(shù)邏輯單元(ALU)。主要包括:
1.ACC:累加器,用于存儲操作數(shù),或運算結(jié)果。
2.MQ:乘商寄存器,在乘、除運算時,用于存儲操作數(shù)或運算結(jié)果。
3.X:通用的操作數(shù)寄存器,用于存放操作數(shù)。
4.ALU:算術(shù)邏輯單元,通過內(nèi)部復(fù)雜的電路實現(xiàn)算數(shù)運算、邏輯運算。
5.PSW:程序狀態(tài)寄存器,存放標(biāo)志信息,如是否溢出,有無進位。
5.控制器
控制器是計算機的控制中心,協(xié)調(diào)計算機的各項工作。主要包括:
1.CU:控制單元,分析指令,給出控制信號。
2.IR:指令寄存器,存儲當(dāng)前執(zhí)行的指令。
3.PC:程序計數(shù)器,存放下一條指令地址,有自動加1功能。
完成一條指令包括取指令(PC和IR),分析指令,執(zhí)行指令(CU)。
1
3.工作過程
三個步驟:
1.程序和數(shù)據(jù)裝入主存。
2.源程序轉(zhuǎn)換為可執(zhí)行文件。
3.可執(zhí)行文件收地址逐條執(zhí)行指令。
1.計算機的多級結(jié)構(gòu):
1.高級語言機器(用編譯程序翻譯為匯編語言)–》2.匯編語言(用匯編程序翻譯成機器語言程序)–》3.操作系統(tǒng)機器(用機器語言解釋操作系統(tǒng))–》4.用機器語言的機器(用微程序解釋機器指令)–》5.微程序指令(由硬件直接執(zhí)行)。
2.翻譯程序
翻譯程序是把高級語言源程序轉(zhuǎn)換為機器語言程序的軟件。
1
翻譯程序有兩種
編譯程序:將高級語言一次全部翻譯為目標(biāo)程序。
解釋程序:翻譯一句執(zhí)行一句。
3.三個級別的語言:
1.機器語言:稱二進制代碼語言,計算機唯一可以識別的語言。
2.匯編語言:面向機器的低級語言,是機器語言的符號表示,與機器語言一一對應(yīng)。
3.高級語言:如JAVA C++,是方便程序設(shè)計人員解決問題的程序。
4.計算機性能指標(biāo)
1.機器字長:計算機一次運算所能處理的二進制數(shù)據(jù)的位數(shù)。
2.數(shù)據(jù)通路帶寬:數(shù)據(jù)總線一次所能并行傳輸信息的位數(shù)。
3.數(shù)據(jù)通路:子系統(tǒng)通過數(shù)據(jù)總線連接形成的數(shù)據(jù)傳輸路徑。
4.數(shù)據(jù)通路寬度:指數(shù)據(jù)總線的寬度。
5.主存容量:主存儲器能存儲信息的最大量,以字節(jié)衡量。如MAR為16位,則有65536個存儲單元(2的16次方,可稱64K),若MDR為32位,則存儲容量為64K x 32位。
6.運算速度:
1.吞吐量:單位時間內(nèi)處理請求的數(shù)量。
2.響應(yīng)時間:發(fā)送請求到作出響應(yīng)并獲得所需結(jié)果所需要的時間。包括CPU時間(運行花費)與等待時間。
3.CPU時鐘周期:主頻的倒數(shù),是CPU中最小的時間單位。
4.主頻:主時鐘的頻率,衡量機器速度,主頻越高,執(zhí)行時間越短。
5.CPI:執(zhí)行一條指令所需的時鐘周期數(shù)。(不同指令和相同指令CPI都有可能不同)。
6.CPU執(zhí)行時間:運行一個程序花費的時間。CPU執(zhí)行時間等于CPU時鐘周期數(shù)/主頻。
綜上CPU性能取決于:①主頻(時鐘頻率)。②每條指令執(zhí)行用的時鐘周期數(shù)。③指令條數(shù)。
7.MIPS:每秒執(zhí)行多少百萬條指令。IPS=主頻/CPI。
第二章 數(shù)據(jù)的表示和運算
1.二進制轉(zhuǎn)八進制/十六進制:整數(shù)部分三個或四個一組,小數(shù)部分三個或四個一組。
2.八進制/十六進制轉(zhuǎn)二進制:將每位改為三位或四位。
3.任意進制轉(zhuǎn)十進制:各位數(shù)碼與它們的權(quán)值相乘,把乘積相加,稱為按權(quán)展開相加法。如11.1=1x2一次方+1x2的0次方+1x2的負(fù)一次方。
4.十進制轉(zhuǎn)任意進制:整數(shù)部分除基取余(先余為低),小數(shù)部分乘基取整(先整為高)。
任意十進制一定可以表示二進制,任意二進制不一定表示十進制。
1
2.1 真值和機器數(shù)
1.真值:實際生活中帶“+”,“-”的數(shù)稱為真值。真值是機器數(shù)所代表的的實際值。
2.機器數(shù):將數(shù)據(jù)的符號數(shù)字化(0表正,1表負(fù)),這種數(shù)為機器數(shù)。
2.2 BCD碼
1. 8421碼
有權(quán)碼。各位的數(shù)值分別為8,4,2,1。如1000=8,0100=4。
①若8421碼轉(zhuǎn)為十進制<=9,則不需要修正,若>9,即>=10,則需要加6進行修正。
②1010到1111這六個為無效碼
2. 余3碼
無權(quán)碼。在8421碼基礎(chǔ)上加上二進制的 0011形成的。如8–》1011。
3.2421碼
有權(quán)碼。權(quán)值從高到低分別為2,4,2,1。特點是>=5的最高位為1而非0.如5=1011,并非0101。
2.2 校驗碼
1.def:是指能夠發(fā)現(xiàn)或能夠自動糾正錯誤的數(shù)據(jù)編碼,也稱檢錯糾錯編碼。
2.原理:增加冗余碼來檢錯。
3.碼距:指任意兩個合法碼字之間不同的位的個數(shù)。碼距越大,檢錯糾錯能力越強。
1
2
3
1.奇偶校驗碼
源碼基礎(chǔ)上加上一位校驗位,碼距為2,只能檢測一位錯誤,不能確定出錯位置或偶數(shù)位錯誤。
1.奇校驗碼:1的個數(shù)為奇數(shù)。
2.偶檢驗碼:1的個數(shù)為偶數(shù)。
2. 海明校驗碼
檢錯能力:2位。糾錯能力:1位。
3.循環(huán)冗余校驗碼(CRC)
基本思想:在K位信息碼后拼接R位的校驗碼,整個編碼長度為N位。
2.基于線性編碼理論。
2.3 定點數(shù)的表示和運算
1.有符號和無符號數(shù)
1.無符號數(shù):整個機器字長全部二進制均為數(shù)值位。
2.有符號數(shù):約定二進制最高位為符號位,組成有符號數(shù)。
2.機器數(shù)的定點表示
定點表示即約定機器數(shù)中小數(shù)點位置固定不變。
1
1.定點小數(shù):是純小數(shù),小數(shù)點在符號位之后,有效數(shù)值部分最高位之前。
2.定點整數(shù):是純整數(shù),小數(shù)點在數(shù)值部分最低位之后。
3.原碼
用機器數(shù)的最高位表示數(shù)的符號,其余表示數(shù)的絕對值。
若機器字長n+1位,原碼整數(shù)的表示范圍:-(2n-1)≤x≤2n-1
真值0有+0和-0兩種形式。【+0】原=*0*0000,【-0】=*1*0000
若機器字長n+1位,原碼小數(shù)的表示范圍:-(1-2-n)≤1-2-n(關(guān)于原點對稱)
4.反碼
真值0的反碼不唯一,負(fù)數(shù)的反碼符號位為“1”,數(shù)值部分取反?!?0】反=0.0000;【-0】反=1.1111。
1
5.補碼
補碼的真值0的表示是唯一的。【+0】補=0.0000,【-0】補=0.0000.
1
6.移碼
移碼的真值0只有一種表示形式。移碼與真值最接近,移碼大真值就大。
1
1.原碼--》反碼:為正:原=反;為負(fù):符號位不變,數(shù)值位取反。
2.原碼--》補碼:為正:原=補;為負(fù):原碼先變反碼,反碼末尾+1。即除了符號位,其余位取反末尾再加1。
3.原碼--》移碼:先變?yōu)檠a碼,符號位取反得移碼。
1.補碼的作用:使用補碼可將減法操作轉(zhuǎn)變?yōu)榈葍r的加法,ALU中無需集成減法器。執(zhí)行加法操作時,符號位一起參與運算。
2.4 定點數(shù)的運算
移位:通過改變各個數(shù)碼位和小數(shù)點的相對位置,從而改變各數(shù)碼位的位權(quán)。可用移位運算實現(xiàn)乘除。
1
1.算術(shù)移位
算數(shù)移位的對象是有符號數(shù),☆移位過程符號位保持不變
1
1.對于正數(shù):原碼,補碼,反碼均添0.
2.對于復(fù)數(shù):①原碼:左右移動都添0。②補碼:左移添0,右移添1。③對于反碼:左右都添1。
3.左移高位舍棄,若舍棄位=0,則相當(dāng)于x2,若舍棄為=1,則會出現(xiàn)誤差。
4.右移低位舍棄,舍棄位=0,相當(dāng)于÷2,若舍棄位=1,丟失精度。
2.邏輯移位
將操作數(shù)視為無符號數(shù),僅對無符號數(shù)操作。
1.邏輯左移:高位丟失,低位補0。
2.邏輯右移:低位丟失,高位補0。
3.循環(huán)移位
分為帶進位標(biāo)志位CF的循環(huán)移位(大循環(huán))和不帶進位標(biāo)志位的循環(huán)移位。
特點:移出的數(shù)位又被移入數(shù)據(jù)中,是否帶進位要看是否將進位標(biāo)志位加入循環(huán)移位。
4.原碼定點數(shù)加減法
1.加法規(guī)則:符號位相同,絕對值相加,符號位不變。符號位不同,做減法,絕對值大的減絕對直小的,結(jié)果符號位與絕對值大的相同。
2.減法規(guī)則:先將減數(shù)符號取反,被減數(shù)與符號取反的減數(shù)按原碼加法運算。溢出位丟掉。
5.補碼定點數(shù)加減法
1.【B】補變?yōu)椤?B】補:所有位取反(包括符號位),末尾+1。
2.【A+B】補=【A】補+【B】補。
3.【A-B】補=【A】補+【-B】補。
6.符號擴展
作用:計算機運算中,有時必須把給定位數(shù)的數(shù)轉(zhuǎn)換為具有不同位數(shù)的形式。如8位機器字變?yōu)?6位。
7.溢出和判斷方法
1.溢出:指運算結(jié)果超出了數(shù)的表示范圍。大于機器所能表示的最大正數(shù)為上溢,小于所能表示的最小負(fù)數(shù)為下溢。同符號數(shù)相加或異符號數(shù)相減才會溢出。
2.補碼定點數(shù)加減法運算三個判斷溢出方法:
采用一位符號位:參加的數(shù)符號相同,結(jié)果符號不同則表示溢出。
采用雙符號位:也稱模4補碼。最高符號位的情況:①00:正數(shù),無溢出。②01:結(jié)果正溢出。③10:結(jié)果負(fù)溢出。④11:結(jié)果為負(fù),無溢出。
采用一位符號位根據(jù)數(shù)據(jù)位進位情況判斷溢出。
2.5 強制類型轉(zhuǎn)換
1.長度相同無符號數(shù)與有符號數(shù):不改變數(shù)據(jù)內(nèi)容,改變解釋方式。
2.長整數(shù)變短整數(shù):高位截斷,保留低位。
3.短整數(shù)變長整數(shù):符號擴展。
2.6 數(shù)據(jù)存儲和排列
1.大端和小端方式
1.大端方式:從低地址開始,最高有效字節(jié)存放在前。便于人閱讀。
2.小段方式:從低地址開始,最低有效字節(jié)存放在前。便于機器處理。
2.按邊界處理
假設(shè)存儲字長32位i,可按字節(jié),半字和字尋址。
邊界對齊訪問一個字一次方寸,不對齊可能兩次。
2.7 浮點數(shù)的表示
r是階碼的底,一般為2。E為階碼,M為尾數(shù)。
1
1.左規(guī):當(dāng)浮點數(shù)運算結(jié)果為非規(guī)格化時要進行規(guī)格化,將尾數(shù)算數(shù)左移一位,階碼減一的方法為左規(guī)。需要時要進行多次。
2.右規(guī):浮點數(shù)運算結(jié)果尾數(shù)溢出(雙符號位01或10)時,將尾數(shù)算術(shù)右移一位,階碼+1的方法為右規(guī)。只進行一次。
規(guī)格化浮點數(shù):為了提高運算的精度,需要充分利用尾數(shù)的有效數(shù)位,進行規(guī)格化處理,即規(guī)定尾數(shù)的最高數(shù)位必須是一個有效值。
1
規(guī)格化操作:就是通過調(diào)整一個非規(guī)格化浮點數(shù)尾數(shù)和階碼大小,使非零浮點數(shù)在尾數(shù)的最高數(shù)位上保證是一個有效值。
3.規(guī)格化浮點數(shù)特點
1.原碼規(guī)格化:基數(shù)為2----原碼規(guī)格化的尾數(shù)最高位一定是1?;鶖?shù)是4----尾數(shù)最高兩位不全為0。
2.補碼規(guī)格化:基數(shù)為2----補碼規(guī)格化符號位與最高數(shù)值位相反。
4.IEEE 754標(biāo)準(zhǔn)
1.階碼全1,全0用作特殊用途。
2.階碼真值= 移碼 - 偏移量
5.定點,浮點數(shù)的區(qū)別
1.若兩者字長相同,則浮點表示法表示的數(shù)值范圍大于定點表示法。
2.精度是指一個數(shù)所含有效數(shù)值位的位數(shù)。字長相同的兩者,浮點數(shù)擴大了數(shù)表示范圍,但精度降低了。
3.浮點數(shù)包括階碼和尾數(shù),運算時要做階碼和尾數(shù)的運算,而且運算結(jié)果要規(guī)格化,所以運算復(fù)雜。
4.定點運算中,結(jié)果超出數(shù)表示范圍會溢出。浮點運算超出數(shù)表示范圍不一定溢出。只有規(guī)格化后解碼超出表示范圍才會溢出。
6.規(guī)格化情況
1.尾數(shù)出現(xiàn)00.0xxx或11.1xxx,需左規(guī),尾數(shù)左移一位,階碼-1;
2.運算和出現(xiàn)溢出,需右規(guī),尾數(shù)右移,階碼+1;
7.浮點數(shù)溢出判斷
浮點數(shù)的溢出由階碼判斷。當(dāng)階碼符號位為10表上溢,01時表下溢。
1
2.8 加法器
1.一位全加器。
2.串行加法器。
3.并行加法器:①串行進位。②并行進位。
第三章 存儲系統(tǒng)
3.1 存儲器概述
3.1.1 存儲器分類
1.按層次分類
1.主存儲器:存放程序和數(shù)據(jù)。
2.輔助存儲器:存放當(dāng)前暫時不用的程序和數(shù)據(jù)以及一些永久性保存的信息。
3.高速緩沖存儲器:Cache,位于主存和CPU之間,存放正在執(zhí)行的程序段和數(shù)據(jù)。
2.按存儲介質(zhì)
1.磁表名存儲器(磁盤)。2.磁心存儲器半導(dǎo)體存儲器。3.光存儲器(光盤)。
3.按存取方式分類
1.隨機存儲器(RAM):隨機存取,用作主存和高速緩存存儲器。如內(nèi)存條。
2.只讀存儲器(ROM):只能隨機讀不能寫入,一旦寫入就不變,斷電信息不會丟失。
3.串行訪問存儲器:讀寫時,要按物理位置先后順序?qū)ぶ贰0樞虼嫒〈鎯ζ鳎ù艓В┖椭苯哟嫒〈鎯ζ鳎ù疟P)。
4.按信息的可保存性分類
1.易失性存儲器:斷電后存儲信息消失。如RAM。
2.非易失性存儲器:斷電后信息不消失。如ROM。
3.破壞性讀出:信息讀出后,原存儲信息被破壞。如DRAM芯片。
4.非破壞性讀出:信息讀出后,被讀取存儲單元信息不被破壞。如SRAM芯片,磁盤。
3.1.2 存儲器性能指標(biāo)
1.存儲容量。2.單位成本。3.存儲速度。
note:存取時間不等于存儲周期,通常存儲周期大于存取時間。存儲周期=存取時間+恢復(fù)時間。
1
3.2 存儲器層次化結(jié)構(gòu)
1.Cache--主存:解決CPU和主存速度不匹配問題。數(shù)據(jù)調(diào)度由硬件自動完成,對所有程序員透明。
2.主存--輔存:解決存儲系統(tǒng)容量問題。數(shù)據(jù)調(diào)度由硬件和操作系統(tǒng)共同完成,對應(yīng)用程序員透明。
3.3 半導(dǎo)體隨機存儲器
3.3.1 DRAM和SRAM工作原理
1.SRAM工作原理
靜態(tài)隨機存儲器(SRAM)存儲元是雙穩(wěn)態(tài)觸發(fā)器來記憶信息,屬于非破壞性讀出。
2.DRAM工作原理
動態(tài)隨機存儲器(DRAM)利用存儲元電路上的柵極電容的電荷存儲信息的。
采用地址復(fù)用技術(shù),地址信號分行列兩次傳送。密度比SRAM高。屬于破壞性讀出。
因為DRAM電荷維持時間段,不斷電信息也會消失,所以必須定時刷新,三種方式:
集中刷新:刷新周期內(nèi)利用固定時間刷新,期間停止讀寫,稱為“死時間”。
分散刷新:刷新分散到各個工作周期,即前半周期 讀寫,后半刷新。
異步刷新:前兩者的結(jié)合,刷新周期除以行數(shù),得到時間間隔t,每隔t刷新一次。把對每行的刷新分散到整個刷新周期。
1.刷新對CPU透明,即不依賴于外部訪問。
2.刷新類似于讀操作,但不同,僅給柵極電容補充電荷,無信息輸出。
3.刷新的單位是行,所以刷新僅需要行地址。
1
2
3
3.DRAM和SRAM對比
1.DRAM容易集成,容量大,密度高。破壞性讀出。
2.SRAM速度快。非破壞性讀出。
3.兩者都是易失性存儲,即斷電后內(nèi)容消失。
NOTE:RAM--內(nèi)存。ROM--輔存。
1
3.3.2 只讀存儲器
1.只讀存儲器ROM特點
1.結(jié)構(gòu)簡單,位密度比可讀寫存儲器高。
2.非易失性,所以可靠性高。
2.ROM的類型
1.掩模式只讀存儲器(MROM):廠商直接寫入,無法改變。
2.一次可編程只讀存儲器(PROM):一次性編程,用戶可用專門設(shè)備寫入,寫入后無法改變。
3.可擦除可編程只讀存儲器(EPROM):可多次讀寫,先擦除后編程。
4.閃存存儲器(FLASH Memory):不加電也可長期保存,又能快速擦除重寫。如(u盤,sd卡)。
5.固態(tài)硬盤(ssd):
3.主存儲器的構(gòu)成
地址線單向。從主存地址送到主存中的地址寄存器。
1
3.4 主存儲器與CPU連接
3.4.1 連接原理
1.主存儲器通過數(shù)據(jù)總線,地址總線,控制總線與CPU連接。
2.地址總線位數(shù)決定了可尋址的最大空間。
3.控制總線支出總線周期類型和本詞輸入/輸出操作完成的時刻。
3.4.2 主存容量的擴展
1.位擴展法CPU的數(shù)據(jù)線數(shù)與存儲芯片的不一致,進行位擴展。
1.連接方式是將多個存儲芯片的地址端,片選端,讀寫控制端并聯(lián),將數(shù)據(jù)端分別引出。8片8K x 1位的存儲芯片 —> 1個8K x 8位的存儲芯片。
2.字?jǐn)U展法
1.增加存儲器數(shù)量,位數(shù)不變。字?jǐn)U展將芯片地址線,數(shù)據(jù)線,讀寫控制線并聯(lián),由片選信號CS區(qū)分芯片地址范圍,片選號譯碼給出。
3.字位同時擴展法
4.字?jǐn)U展法中片選信號的選擇
1.線選法:除了片內(nèi)尋址外的高位地址線,其余分別連接各個存儲芯片的片選端。即n個線對應(yīng)n個地址。優(yōu):線路簡單,不需要譯碼器。缺:不能充分利用系統(tǒng)的存儲空間。
2.譯碼片選法:除了片內(nèi)尋址的高位地址線,通過地址譯碼器產(chǎn)生片選信號來選擇哪個存儲芯片。
3.5 雙端口RAM和多模塊存儲器
3.5.1 雙端口RAM
1.指一個存儲器有左右兩個獨立的端口,有兩組獨立的數(shù)據(jù)線和讀寫控制線,允許兩個獨立的控制器異步訪問存儲單元。
2.兩端口同時存取存儲器的同一單元地址會沖突。有四種情況:①同時同一地址讀。②同時同一地址寫。③不同時同一地址寫。④同時同一地址一個讀一個寫。
3.5.2 多模塊存儲器
`為提高訪存速度`
1
1.單體多字存儲器
存儲器中只有一個存儲體,每個存儲單元存儲m個字,總線寬度也為m個字,一次并行讀出m個字,地址必須順序排列并在同一存儲單元。
2.多體并行存儲器
由多體模塊組成,每個模塊相同容量和存取速度,由獨立的寄存區(qū),讀寫控制電路。他們既能并行又能串行。
1
多體并行存儲器分兩種:
1. 高位交叉編址(順序方式):高位表體號,低位為體內(nèi)地址。訪問連續(xù)主存塊時總數(shù)先在一個模塊內(nèi)訪問,訪問完才到 下一個模塊,不能并行訪問,所以不能提高吞吐量,相當(dāng)于單純的擴容。(低位送高位進行譯碼)(連續(xù)存取n個字耗時nT)
2. 低位交叉編址(交叉方式):①低位地址為體號,高位為體內(nèi)地址。②程序連續(xù)存放在相鄰模塊,所以采用此方式的存儲器稱為交叉存儲器。③訪問時候采用流水線的方式進行存取。④(高位體內(nèi)地址送到低位確定的模塊譯碼)(連續(xù)存取n個字耗時T+(n-1)r)T為存取周期,總線傳送周期(即存取時間)為r。⑤存儲器交叉模塊數(shù)(即存儲體個數(shù))m>=T/r。
3.6 高速緩存存儲器
3.6.1 Cache工作原理
1.位于存儲器層次結(jié)構(gòu)頂層,由SRAM構(gòu)成,(速度快,成本高)。
2.Cache和主存都劃為相等的塊,以塊為單位交換信息,僅保存主存中活躍的副本。若讀命令訪問命中cache,直接對cache讀。若未命中,訪問主存,并從主存將讀的一塊調(diào)入cache。
3.6.2 Cache和主存的映射方式
1.地址映射是把主存地址空間映射到Cache地址空間,即把存放在主存的信息按某規(guī)則裝入Cache。
2.地址變換是CPU訪存時,將主存地址按映射規(guī)則換算稱Cache地址的過程。
地址映射的3種方法:
1. 直接映射:每個主存塊只能放到Cache的一個特定位置。Cache塊號=主存塊號 % Cache總塊數(shù)。
直接映射地址結(jié)構(gòu)為:【標(biāo)記】【Cache行號】【塊內(nèi)地址】。
訪存過程:先根據(jù)中間行號找到Cache行,然后主存高t位于標(biāo)記對比,若相等且有效位為1,則Cache命中。否則不命中,從CPU讀出的塊存入Cache。
優(yōu)缺點:實現(xiàn)簡單,但不靈活,容易沖突,利用率低。
2. 全相聯(lián)映射:主存塊可存放在Cache任意位置。
全相聯(lián)地址結(jié)構(gòu)為:【標(biāo)記】【塊內(nèi)地址】。
訪存過程:每行的標(biāo)記位用來指出取自主存哪一塊,訪存時與標(biāo)記位比較。
優(yōu)缺點:靈活,沖突低,空間利用率高,但標(biāo)記速度慢,成本高(需要相聯(lián)存儲器)。
3. 組相聯(lián)映射:Cache塊分為若干組,每個主存塊可放到特定分組中的任意一個位置。組號=主存塊號 % 分組數(shù)。
主存地址映射結(jié)構(gòu):【標(biāo)記】【Cache組號】【塊內(nèi)地址】。組內(nèi)采用直接映射,組件全相聯(lián)映射。
CPU訪存過程:先找到Cache組號,行標(biāo)記與主存高位標(biāo)記比較,相等且有效位為1則命中。
組內(nèi)塊越多,沖突越少,
三者比較:
1.直接映射命中率最低,全相聯(lián)最高。
2.直接映射判斷開銷小,需時間短。全相聯(lián)判斷開銷最大,時間長。
3.直接映射標(biāo)記占的額外空間開銷最少,全相聯(lián)標(biāo)記占的最多。
1
2
3
4
3.6.3 Cache中主存塊的替換算法
當(dāng)Cache中的行數(shù)被占滿時,又傳送來一個新塊,需要進行替換。
1
1.三種替換算法
1.隨機算法(RAND):隨機確定替換的塊。優(yōu):實現(xiàn)簡單。缺:未依據(jù)局部性原理,命中率低。
2.先進先出算法(FIFO):命中率低。未依據(jù)局部性原理。
3.近期最少使用算法(LRU):依據(jù)程序訪問的局部性原理,選擇近期內(nèi)長久未訪問的Cache行替換。(設(shè)置計數(shù)器記錄使用情況,命中行計數(shù)器清0,其余比他低的+1.未命中且有空閑行,裝入的行計數(shù)器為0,其余+1.未命中且無空閑行,計數(shù)器數(shù)值為3的被淘汰,新裝入行的塊變0,其余+1.)
4.最不經(jīng)常使用算法(LFU):將一段時間內(nèi)訪問次數(shù)最少的存儲行換出。(設(shè)置計數(shù)器,新建的從0開始,被訪問+1,每次替換出計數(shù)器最小的行。)未遵循局部性原理。
3.6.4 Cache寫策略
為了保持Cache與主存數(shù)據(jù)一致性。
1
1.對于Cache寫命中,兩種策略
1.全寫法:當(dāng)CPU對Cache寫命中時,把數(shù)據(jù)同時寫入Cache和主存。一般用寫緩沖(減少直接寫入主存的時間耗費)。優(yōu)缺點:訪存次數(shù)增加,速度變慢,但更能保證數(shù)據(jù)一致性。
2.寫回法:CPU對Cache寫命中時,只修改Cache的內(nèi)容,不立即寫入主存,僅當(dāng)此塊被換出時才寫回主存。優(yōu)缺:減少了訪存,但存在數(shù)據(jù)不一致隱患。此種方法通常每個Cache行必須設(shè)置一個標(biāo)志位(臟位),反映此塊是否被修改過。
2.對于Cache寫不命中,兩種策略
1.寫分配法:CPU對Cache塊寫不命中時,把主存中的塊調(diào)入Cache,在Cache中修改,當(dāng)Cache行被替換時再寫會主存。通常搭配寫回法。
2.非寫分配法:寫不命中時只寫入主存,不調(diào)入Cache(只有讀命令未命中才調(diào)入Cache),當(dāng)再次使用該塊時,調(diào)入Cache。搭配全寫法。
note:1.各級cache間常用“全寫法 + 非寫分配法”。
2.cache與主存之間常用“寫回法 + 寫分配法”。
1
2
3.7 虛擬存儲器
3.7.1 基本概念
1.用戶編程允許涉及的地址稱為虛地址/邏輯地址。
2.虛地址對應(yīng)的存儲空間稱為虛擬空間。
3.實際的主存單元地址稱為實地址/物理地址。
4.實地址空間對應(yīng)的是主存地址空間,也稱實地址空間。
3.7.2 頁式虛擬存儲器
1.拆分成大小相等的頁面。
2.虛擬存儲器:在操作系統(tǒng)的管理下,只把當(dāng)前需要的部分?jǐn)?shù)據(jù)調(diào)入主存,暫不需要的部分留在輔存中。在用戶看來,似乎獲得了一個超大的主存(虛擬性)。
3.有效位:也稱裝入位,來表示對應(yīng)頁面是否在主存。若為1表示虛頁號已從外存調(diào)入內(nèi)存,為0則沒有調(diào)入。
4.臟位:也稱修改位,表示當(dāng)前頁面是否被修改過。
5.引用位:`也稱使用位,來配合替換策略進行設(shè)置。如實現(xiàn)FIFO。統(tǒng)計頁面被訪問多少次。
以頁為單位的虛擬存儲器為頁式虛擬存儲器。
1
優(yōu)缺點:
頁面長度固定,調(diào)入方便。但會存在最后一頁的零頭無法利用,因頁不是邏輯上的實體所以處理,保護和共享不及段式虛擬存儲器方便。
3.7.3 快表(TLB)
經(jīng)常訪問的頁存入快表。
1
3.7.4 段式虛擬存儲器
1.按照功能模塊拆分。如#0段是自己代碼,#1是庫函數(shù)代碼。
2.段表結(jié)構(gòu):【段號】【段首址】【裝入位】【段長】
優(yōu)缺點
把程序按邏輯結(jié)構(gòu)分段,具有邏輯獨立性,使得它易于編譯,管理,修改和保護,也便于多道程序共享。但因段長度可變,分配空間不變,容易留下碎片。
3.7.5 段頁式虛擬存儲器
先分段,再分頁,調(diào)入調(diào)出仍以頁為基本單位。
一個程序一個段表,多個頁表。
優(yōu)缺點:兼具頁式和段式優(yōu)點,但地址變換需查兩次表,開銷大。
3.7.6虛擬存儲器與Cache的比較
1.相同
1.都是為了提高系統(tǒng)性能。
2.都把數(shù)據(jù)劃分為小信息塊。
3.都有地址映射,替換算法,更新策略。
4.依據(jù)局部性原理,將常用的數(shù)據(jù)存放在高速部件中。
2.不同
1.Cache解決系統(tǒng)速度,虛擬存儲器解決主存容量。
2.Cache由硬件實現(xiàn),是硬件存儲器,虛擬存儲器是邏輯上的存儲器。
3.不命中時,因為cache速度快,虛擬存儲系統(tǒng)對系統(tǒng)性能影響大。
4.CPU與Cache和主存都建立了直接訪問的通路,而輔存沒有。
第四章 指令系統(tǒng)
4.1 指令格式
1.指令(又稱機器指令),是指示計算機執(zhí)行某種操作的命令,是計算機運行的最小功能單位。
2.一臺計算機的所有指令的集合構(gòu)成該機的指令系統(tǒng),也稱指令集。
3.指令系統(tǒng)是計算機的主要屬性,位于硬件和軟件的交界面上。
1
2
3
4.1.1 指令的基本格式
一條指令 = 操作碼 + 地址碼。
1.操作碼:指出該指令應(yīng)該執(zhí)行什么性質(zhì)的操作和具有何種功能。如指出是算數(shù)加還是減運算。
2.地址碼:給出被操作信息(指令或數(shù)據(jù))的地址。
3.指令的長度:即一條指令中二進制代碼的位數(shù)。
4.指令字長取決于操作碼,地址碼及地址碼的個數(shù)。
5.單字長指令:指令字長等于機器字長 。
6.定長指令字結(jié)構(gòu):一個指令系統(tǒng)中所有指令的長度相等。
7.變長指令字結(jié)構(gòu):各種指令的字長隨指令功能而異。
根據(jù)指令中操作數(shù)地址碼的數(shù)目不同,指令分為幾種格式:
零地址指令:
只給出操作碼OP。無顯式地址。指令有兩種可能:
①不需要操作數(shù)的指令,空操作,停機指令。
②0地址的運算類僅用在堆棧計算機中。兩個操作數(shù)隱含存放在棧頂。
一地址指令:
地址格式:【OP操作碼】【地址碼A1】
兩種常見形態(tài):
①單操作數(shù)指令,如+1,-1。完成一條指令三次訪存:①取指②讀A1③寫會A1。
②隱含約定目的地址的雙操作數(shù),一個數(shù)在地址A1,一個在寄存區(qū)ACC。完成一條指令兩次訪存:①取指②讀A1。(寫回寄存器不需要訪存)
二地址指令:
地址格式:【OP】【A1】【A2】。
常見形態(tài):
約定兩個數(shù)的運算,分別存在A1,A2。完成一條指令4次訪存:①取指②讀A1③讀A2④寫會A1。
三地址指令:
地址格式:【OP】【A1】【A2】【A3(結(jié)果)】
一條指令四次訪存:①取指②讀A1③讀A2④寫回A3。
四地址指令:
地址格式:【OP】【A1】【A2】【A3(結(jié)果)】【A4(下地址)】
一條指令四次訪存:同三地址指令。執(zhí)行結(jié)束后,PC的值改為A4所指地址。
4.1.2 定長操作碼指令格式
定長操作碼在指令最高位部分分配固定的若干位表操作碼。n位操作碼字段的指令系統(tǒng)最大表示2的n次方條指令。
若指令長度不變,地址碼越多,尋址能力越差。
4.1.3 擴展操作碼指令格式
定義:可變長操作碼:即全部指令的操作碼字段的位數(shù)不固定,且分散的存放在指令的不同位置上。雖然增加了豐富的指令種類但顯然會增加指令譯碼難度。
擴展操作碼:屬于變長操作碼,它使操作碼的長度隨地址碼減少而增加,不同地址數(shù)的指令有不同長度的操作碼,可以在滿足需要前提有效縮短指令字長。
設(shè)計擴展操作碼格式要注意的兩點:
不允許短碼是長碼的前綴,否則會出現(xiàn)歧義。
指令的操作碼不能重復(fù)。會導(dǎo)致無法識別。
通常使用頻率高的分配操作碼短,使用頻率低的分配長。
4.2 指令的尋址方式
1.尋址方式是指尋找指令/操作數(shù)有效地址的方式,即確定本條指令的數(shù)據(jù)地址和下一條待執(zhí)行指令的地址的方法。
2.指令中的地址碼存放的是信息的形式地址,通過尋址方式+形式地址找到有效地址。
3.尋址方式包括:1.指令尋址。2.數(shù)據(jù)尋址
1
2
3
4.2.1 指令尋址和數(shù)據(jù)尋址
1.指令尋址即如何確定下一條指令的地址。兩種方式:
1.順序?qū)ぶ罚和ㄟ^程序計數(shù)器(PC)加1,自動跳轉(zhuǎn)下一條指令地址。
2.跳躍尋址:通過轉(zhuǎn)移指令實現(xiàn)。包括相對尋址和絕對尋址。跳躍后將地址賦給PC,仍訴通過PC給出下一條指令。
2.數(shù)據(jù)尋址指如何在指令中表示操作數(shù)地址,得到操作數(shù)或操作數(shù)的地址。
指令格式:【操作碼】【尋址特征】【形式地址A】
4.2.2 數(shù)據(jù)尋址的常見方式
隱含地址:不明確給出操作數(shù)地址,而在指令中隱含操作數(shù)地址。
立即尋址:形式地址A中存放的就是操作數(shù)本身。只需訪存1次。
直接尋址:指令中的形式地址A是操作數(shù)的真是地址EA。
間接尋址:形式地址A中給出的是操作數(shù)有效地址所在的地址。可以一次也可以多次間接尋址。
寄存器尋址:在指令字中直接給出操作數(shù)所在的寄存器編號。訪存一次:僅取指令。
寄存器間接尋址:指在寄存器R中給出的是操作數(shù)所在主存單元的地址。兩次訪存:①取指②尋址。
相對尋址:指程序計數(shù)器(PC)的內(nèi)容加上指令格式中的形式地址A形成的操作數(shù)有效地址。A是相對于下一條指令(PC先+1)的位移量,可正負(fù),補碼表示。
基址尋址:將CPU中基址寄存器(BR)的內(nèi)容加上指令格式中的形式地址A形成操作數(shù)的有效地址。EA=B
變址尋址:指有效地址A等于指令中形式地址A與變址寄存器IX的內(nèi)容之和。EA=(IX)+A
變址寄存器是面向用戶的:程序執(zhí)行過程用戶可改變寄存器的內(nèi)容。
主要處理循環(huán)問題數(shù)組問題。
偏移尋址包括:1.基址尋址。2.變址尋址。3.相對尋址。
10.堆棧尋址: 操作數(shù)存放在堆棧中,隱含SP棧頂作為操作數(shù)地址。
1.堆棧:是存儲器中一塊特定的,按后進先出管理的存儲區(qū)。包括軟堆棧和硬堆棧。
2.軟堆棧:從主存中劃分一段區(qū)域做堆棧。訪存1次。
3.硬堆棧:又稱寄存器堆棧,成本高,不適合做大容量堆棧。
4.3 CISC 和 RISC 的概念
指令系統(tǒng)朝兩個截然不同方向發(fā)展:
1.增強原有指令功能,設(shè)置更復(fù)雜的新指令實現(xiàn)軟件功能的硬化,這類機器稱為復(fù)雜指令系統(tǒng)計算機(CISC)。X86,主要用于筆記本
2.減少指令種類和簡化指令功能,提高指令的執(zhí)行速度,這類機器稱為精簡指令系統(tǒng)計算機(RISC)。用于手機。
4.3.1 復(fù)雜指令系統(tǒng)計算機(CISC)(Complex Instruction Set Computer)
設(shè)計思路:一條指令完成一個復(fù)雜的基本功能。
4.3.2 復(fù)雜指令系統(tǒng)計算機(RISC)(Reduced Instruction Set Computing )
設(shè)計思路:一條指令完成一個基本“動作”,多條指令組合完成一個復(fù)雜的基本功能。
4.3.3 兩者比較
1.CISC控制器大多采用微程序控制,即采用存儲程序,設(shè)計好的指令提前存儲。RISC控制器采用組合邏輯控制。
2.RISC更能提高運算速度。因為RISC采用流水線技術(shù),指令數(shù)、尋址方式、指令格式種類少,所以運算速度快。
3.RISC便于設(shè)計,可降低成本,提高可靠性。
4.RISC有利于編譯程序代碼優(yōu)化。
第五章 中央處理器
5.1 CPU的功能和基本結(jié)構(gòu)
中央處理器(CPU)由運算器和控制器組成。
1.控制器功能:負(fù)責(zé)協(xié)調(diào)控制計算機各部件執(zhí)行程序的指令序列,取指,分析指,執(zhí)行指令。是整個系統(tǒng)的指揮中心。
2.運算器功能:對數(shù)據(jù)進行邏輯運算,加工。
1
2
3
CPU的具體功能包括:
指令控制:完成取指,分析指,執(zhí)行指令,即程序的順序控制。
操作控制:CPU管理從內(nèi)存取出的指令的操作信號,將信號送到相應(yīng)部件,從而控制部件。
時間控制:對操作加以事件上的控制,為每條指令按時間順序提供控制信號。
數(shù)據(jù)加工:對數(shù)據(jù)進行算術(shù)和邏輯運算。
中斷處理:對運行過程出現(xiàn)的異常和特殊請求進行處理。
1.運算器
運算器基本功能接收控制器發(fā)來的命令并執(zhí)行相應(yīng)動作,對數(shù)據(jù)進行加工處理。
運算器組成:
1.算術(shù)邏輯單元。2.暫存寄存器。3.累加寄存器。4.通用寄存器。5.程序狀態(tài)寄存器。6.移位器。7.計數(shù)器。
————————————————
版權(quán)聲明:本文為CSDN博主「vcoy」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_43917045/article/details/123588032