計(jì)算機(jī)組成原理復(fù)習(xí)68880_第1頁
計(jì)算機(jī)組成原理復(fù)習(xí)68880_第2頁
計(jì)算機(jī)組成原理復(fù)習(xí)68880_第3頁
計(jì)算機(jī)組成原理復(fù)習(xí)68880_第4頁
計(jì)算機(jī)組成原理復(fù)習(xí)68880_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、計(jì)算機(jī)組成原理【考查目標(biāo)】1. 理解單處理器計(jì)算機(jī)系統(tǒng)中各部件的內(nèi)部工作原理、組成結(jié)構(gòu)以及相互連接方式,具有完整的計(jì)算機(jī)系統(tǒng)的整機(jī)概念。2. 理解計(jì)算機(jī)系統(tǒng)層次化結(jié)構(gòu)概念,熟悉硬件與軟件之間的界面,掌握指令集體系結(jié)構(gòu)的基本知識和基本實(shí)現(xiàn)方法。3. 能夠運(yùn)用計(jì)算機(jī)組成的基本原理和基本方法,對有關(guān)計(jì)算機(jī)硬件系統(tǒng)中的理論和實(shí)際問題進(jìn)行計(jì)算、分析,并能對一些基本部件進(jìn)行簡單設(shè)計(jì)。一、 計(jì)算機(jī)系統(tǒng)概述(一) 計(jì)算機(jī)發(fā)展歷程第一臺電子計(jì)算機(jī)ENIAC(Electronic Numerical Integrator And Computer)誕生于1946年的美國賓夕法尼亞大學(xué)。ENIAC用了18000電子

2、管、1500繼電器、重30噸、占地170m3、耗電140kw、每秒計(jì)算5000次加法。馮諾依曼(VanNeumann)首次提出存儲程序的概念,將數(shù)據(jù)和程序一起放在存儲器中,使得編程更加方便。50多年來,雖然對馮諾依曼機(jī)進(jìn)行了很多改革,但結(jié)構(gòu)變化不大,仍然稱為馮諾依曼機(jī)。一般把計(jì)算機(jī)的發(fā)展分為四個階段:第一代(1946-50s后期):電子管計(jì)算機(jī)時代;第二代(50s中期-60s后期):晶體管計(jì)算機(jī)時代;第三代(60s中期-70s前期):集成電路計(jì)算機(jī)時代;第四代(70s初-):大規(guī)模集成電路計(jì)算機(jī)時代。(二) 計(jì)算機(jī)系統(tǒng)層次結(jié)構(gòu)1. 計(jì)算機(jī)硬件的基本組成計(jì)算機(jī)硬件主要指計(jì)算機(jī)的實(shí)體部分,通常有運(yùn)

3、算器、控制器、存儲器、輸入和輸出五部分。CPU是指將運(yùn)算器和控制器集成到一個電路芯片中。2. 計(jì)算機(jī)軟件的分類計(jì)算機(jī)軟件按照面向?qū)ο蟮牟煌煞謨深悾合到y(tǒng)軟件:用于管理整個計(jì)算機(jī)系統(tǒng),合理分配系統(tǒng)資源,確保計(jì)算機(jī)正常高效地運(yùn)行,這類軟件面向系統(tǒng)。應(yīng)用軟件:是面向用戶根據(jù)用戶的特殊要求編制的應(yīng)用程序,這類軟件通常實(shí)現(xiàn)用戶的某類要求。3. 計(jì)算機(jī)的工作過程(1)計(jì)算機(jī)的工作過程就是執(zhí)行指令的過程 指令由操作碼和操作數(shù)組成:操作碼地址碼 操作碼指明本指令完成的操作 地址碼指明本指令的操作對象(2)指令的存儲 指令按照存儲器的地址順序連續(xù)的存放在存儲器中。(3)指令的讀取 為了紀(jì)錄程序的執(zhí)行過程,需要一

4、個記錄讀取指令地址的寄存器,稱為指令地址寄存器,或者程序計(jì)數(shù)器。指令的讀取就可以根據(jù)程序計(jì)數(shù)器所指出的指令地址來決定讀取的指令,由于指令通常按照地址增加的順序存放,故此,每次讀取一條指令之后,程序計(jì)數(shù)器加一就為讀取下一條指令做好準(zhǔn)備。(4)執(zhí)行指令的過程 在控制器的控制下,完成以下三個階段任務(wù):1)取指令階段 按照程序計(jì)數(shù)器取出指令,程序計(jì)數(shù)器加一2)指令譯碼階段 分析操作碼,決定操作內(nèi)容,并準(zhǔn)備操作數(shù)3)指令執(zhí)行階段 執(zhí)行操作碼所指定內(nèi)容(三) 計(jì)算機(jī)性能指標(biāo)1. 吞吐量、響應(yīng)時間(1) 吞吐量:單位時間內(nèi)的數(shù)據(jù)輸出數(shù)量。(2) 響應(yīng)時間:從事件開始到事件結(jié)束的時間,也稱執(zhí)行時間。2. CP

5、U時鐘周期、主頻、CPI、CPU執(zhí)行時間(1) CPU時鐘周期:機(jī)器主頻的倒數(shù),Tc(2)主頻:CPU工作主時鐘的頻率,機(jī)器主頻Rc(3)CPI:執(zhí)行一條指令所需要的平均時鐘周期(4)CPU執(zhí)行時間:TCPU=In×CPI×TC In執(zhí)行程序中指令的總數(shù) CPI執(zhí)行每條指令所需的平均時鐘周期數(shù) TC時鐘周期時間的長度3. MIPS、MFLOPS(1)MIPS:MIPS(Million Instructions Per Second) MIPS = In/(Te×106) = In/(In×CPI×Tc×106) = Rc/(CPI&#

6、215;106)Te:執(zhí)行該程序的總時間In:執(zhí)行該程序的總指令數(shù)Rc:時鐘周期Tc的到數(shù) MIPS只適合評價標(biāo)量機(jī),不適合評價向量機(jī)。標(biāo)量機(jī)執(zhí)行一條指令,得到一個運(yùn)行結(jié)果。而向量機(jī)執(zhí)行一條指令,可以得到多個運(yùn)算結(jié)果。(2) MFLOPS:MFLOPS(Million Floating Point Operations Per Second) MFLOPS=Ifn/(Te×106)Ifn:程序中浮點(diǎn)數(shù)的運(yùn)算次數(shù) MFLOPS測量單位比較適合于衡量向量機(jī)的性能。一般而言,同一程序運(yùn)行在不同的計(jì)算機(jī)上時往往會執(zhí)行不同數(shù)量的指令數(shù),但所執(zhí)行的浮點(diǎn)數(shù)個數(shù)常常是相同的。二、 數(shù)據(jù)的表示和運(yùn)算(

7、一) 數(shù)制與編碼1. 進(jìn)位計(jì)數(shù)制及其相互轉(zhuǎn)換1)進(jìn)位計(jì)數(shù)制進(jìn)位計(jì)數(shù)制是指按照進(jìn)位制的方法表示數(shù),不同的數(shù)制均涉及兩個基本概念:基數(shù)和權(quán)。 基數(shù):進(jìn)位計(jì)數(shù)制中所擁有數(shù)字的個數(shù)。權(quán):每位數(shù)字的值等于數(shù)字乘以所在位數(shù)的相關(guān)常數(shù),這個常數(shù)就是權(quán)。任意一個R進(jìn)制數(shù)X,設(shè)整數(shù)部分為n位,小數(shù)部分為m位,則X可表示為:Xan-1rn-1 + an-2rn-2 + + a0r0 + a-1r-1 + a-2r-2 + + a-mr-m(X)r = 2)不同數(shù)制間的數(shù)據(jù)轉(zhuǎn)換(1)二、八、十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù) 利用上面講到的公式: (N)2=Di2i 、(N)8=Di8i、 (N)16=Di16i、進(jìn)行計(jì)算。

8、(2)十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)通常要對一個數(shù)的整數(shù)部分和小數(shù)部分分別進(jìn)行處理,各自得出結(jié)果后再合并。u 對整數(shù)部分,一般采用除2取余數(shù)法,其規(guī)則如下:將十進(jìn)制數(shù)除以2,所得余數(shù)(0或1)即為對應(yīng)二進(jìn)制數(shù)最低位的值。然后對上次所得商除以2,所得余數(shù)即為二進(jìn)制數(shù)次低位的值,如此進(jìn)行下去,直到商等于0為止,最后得的余數(shù)是所求二進(jìn)制數(shù)最高位的值。u 對小數(shù)部分,一般用乘2取整數(shù)法,其規(guī)則如下:將十進(jìn)制數(shù)乘以2,所得乘積的整數(shù)部分即為對應(yīng)二進(jìn)制小數(shù)最高位的值,然后對所余數(shù)的小數(shù)部分部分乘以2,所得乘積的整數(shù)部分為次高位的值,如此進(jìn)行下去,直到乘積的小數(shù)部分為0,或結(jié)果已滿足所需精度要求為止。(3)二進(jìn)制數(shù)

9、、八進(jìn)制數(shù)和十六進(jìn)制數(shù)之間的轉(zhuǎn)換八進(jìn)制數(shù)和十六進(jìn)制數(shù)是從二進(jìn)制數(shù)演變而來的:由3位二進(jìn)制數(shù)組成1位八進(jìn)制數(shù);由4位二進(jìn)制數(shù)組成1位十六進(jìn)制數(shù)。對于一個兼有整數(shù)和小數(shù)部分的數(shù)以小數(shù)點(diǎn)為界,小數(shù)點(diǎn)前后的數(shù)分別分組進(jìn)行處理,不足的位數(shù)用0補(bǔ)足。對整數(shù)部分將0補(bǔ)在數(shù)的左側(cè),對小數(shù)部分將0補(bǔ)在數(shù)的右側(cè)。這樣數(shù)值不會發(fā)生差錯。2. 真值和機(jī)器數(shù)真值:數(shù)據(jù)的數(shù)值通常以正(+)負(fù)(-)號后跟絕對值來表示,稱之為“真值”。 機(jī)器數(shù):在計(jì)算機(jī)中正負(fù)號也需要數(shù)字化,一般用0表示正號,1表示負(fù)號。把符號數(shù)字化的數(shù)成為機(jī)器數(shù)。3. BCD碼在計(jì)算機(jī)中采用4位二進(jìn)制碼對每個十進(jìn)制數(shù)位進(jìn)行編碼。4位二進(jìn)制碼有16種不同的組

10、合,從中選出10種來表示十進(jìn)制數(shù)位的09,用0000,0001,1001分別表示0,1,9,每個數(shù)位內(nèi)部滿足二進(jìn)制規(guī)則,而數(shù)位之間滿足十進(jìn)制規(guī)則,故稱這種編碼為“以二進(jìn)制編碼的十進(jìn)制(binary coded decima1,簡稱BCD)碼”。在計(jì)算機(jī)內(nèi)部實(shí)現(xiàn)BCD碼算術(shù)運(yùn)算,要對運(yùn)算結(jié)果進(jìn)行修正,對加法運(yùn)算的修正規(guī)則是:如果兩個一位BCD碼相加之和小于或等于(1001)2,即(9)10,不需要修正; 如相加之和大于或等于(1010)2,或者產(chǎn)生進(jìn)位,要進(jìn)行加6修正,如果有進(jìn)位,要向高位進(jìn)位。4. 字符與字符串在計(jì)算機(jī)中要對字符進(jìn)行識別和處理,必須通過編碼的方法,按照一定的規(guī)則將字符用一組二進(jìn)

11、制數(shù)編碼表示。字符的編碼方式有多種,常見的編碼有ASCII碼、EBCDIC碼等。1)ASCII碼ASCII碼用7位二進(jìn)制表示一個字符,總共128個字符元素,包括10個十進(jìn)制數(shù)字(0-9)、52個英文字母(A-Z和a-z)、34專用符號和32控制符號。2)EBCDIC碼為Extended Binary Coded Decimal Interchange Code的簡稱,它采用8位來表示一個字符。3)字符串的存放向量存儲法:字符串存儲時,字符串中的所有元素在物理上是鄰接的。串表存儲法:字符串的每個字符代碼后面設(shè)置一個鏈接字,用于指出下一個字符的存儲單元的地址。5. 校驗(yàn)碼數(shù)據(jù)校驗(yàn)碼是一種常用的帶有

12、發(fā)現(xiàn)某些錯誤或自動改錯能力的數(shù)據(jù)編碼方法。其實(shí)現(xiàn)原理,是加進(jìn)一些冗余碼,使合法數(shù)據(jù)編碼出現(xiàn)某些錯誤時,就成為非法編碼。這樣,可以通過檢測編碼的合法性來達(dá)到發(fā)現(xiàn)錯誤的目的。合理地安排非法編碼數(shù)量和編碼規(guī)則,可以提高發(fā)現(xiàn)錯誤的能力,或達(dá)到自動改正錯誤的目的。碼距: 碼距根據(jù)任意兩個合法碼之間至少有幾個二進(jìn)制位不相同而確定的,僅有一位不同,稱其碼距為1。1)奇偶校驗(yàn)碼它的實(shí)現(xiàn)原理,是使碼距由1增加到2。若編碼中有1位二進(jìn)制數(shù)出錯了,即由1變成0,或者由0變成1。這樣出錯的編碼就成為非法編碼,就可以知道出現(xiàn)了錯誤。在原有的編碼之上再增加一位校驗(yàn)位,原編碼n位,形成新的編碼為n+1 位。增加的方法有2種

13、:奇校驗(yàn):增加位的0或1要保證整個編碼中1的個數(shù)為奇數(shù)個。偶校驗(yàn):增加位的0或1要保證整個編碼中1的個數(shù)為偶數(shù)個。2)海明校驗(yàn)碼它的實(shí)現(xiàn)原理,是在數(shù)據(jù)中加入幾個校驗(yàn)位,并把數(shù)據(jù)的每一個二進(jìn)制位分配在幾個奇偶校驗(yàn)組中。當(dāng)某一位出錯就會引起有關(guān)的幾個校驗(yàn)組的值發(fā)生變化,這不但可以發(fā)現(xiàn)出錯,還能指出是哪一位出錯,為自動糾錯提供了依據(jù)。假設(shè)校驗(yàn)位的個數(shù)為r,則它能表示2r個信息,用其中的一個信息指出“沒有錯誤”,其余2r-1個信息指出錯誤發(fā)生在哪一位。然而錯誤也可能發(fā)生在校驗(yàn)位,因此只有k=2r-1-r個信息能用于糾正被傳送數(shù)據(jù)的位數(shù),也就是說要滿足關(guān)系:2r>=k+r+1 3)CRC校驗(yàn)碼CR

14、C校驗(yàn)碼一般是指k位信息之后拼接r位校驗(yàn)碼。關(guān)鍵問題是如何從k位信息方便地得到r位校驗(yàn)碼,以如何從位k+r信息碼判斷是否出錯。 將帶編碼的k位有效信息位組表達(dá)為多項(xiàng)式: M(x)=Ck-1xk-1+ Ck-2xk-2 + + Cixi + C1x + C0式Ci中為0或1.若將信息位左移r位,則可表示為多項(xiàng)式M(x).xr。這樣就可以空出r位,以便拼接r位校驗(yàn)位。 CRC碼是用多項(xiàng)式M(x).xr除以生成多項(xiàng)式G(x)所得的余數(shù)作為校驗(yàn)碼的。為了得到r位余數(shù),G(x)必須是r+1位。設(shè)所得的余數(shù)表達(dá)式為R(x),商為Q(x)。將余數(shù)拼接在信息位組左移r位空出的r位上,就構(gòu)成了CRC碼,這個碼的

15、可用多項(xiàng)式表達(dá)為:M(x)·xr+R(x)=Q(x)·G(x)+R(x)+R(x) =Q(x)·G(x)+R(x)+R(x) =Q(x)·G(x)因此,所得CRC碼可被G(x)表示的數(shù)碼除盡。將收到的CRC碼用約定的生成多項(xiàng)式G(x)去除,如果無錯,余數(shù)應(yīng)為0,有某一位出錯,余數(shù)不為0. (二) 定點(diǎn)數(shù)的表示和運(yùn)算1. 定點(diǎn)數(shù)的表示1)無符號數(shù)的表示無符號數(shù)就是指正整數(shù),機(jī)器字長的全部位數(shù)均用來表示數(shù)值的大小,相當(dāng)于數(shù)的絕對值。對于字長為n+1位的無符號數(shù)的表示范圍為: 0-2n+1-12)帶符號數(shù)的表示帶符號數(shù)是指在計(jì)算機(jī)中將數(shù)的符號數(shù)碼化。在計(jì)算機(jī)中

16、,一般規(guī)定二進(jìn)制的最高位為符號位,最高位為“”表示該數(shù)為正,為“”表示該數(shù)為負(fù)。這種在機(jī)器中使用符號位也被數(shù)碼化的數(shù)稱為機(jī)器數(shù)。根據(jù)符號位和數(shù)值位的編碼方法不同,機(jī)器數(shù)分為原碼、補(bǔ)碼和反碼。(1)原碼表示法機(jī)器數(shù)的最高位為符號位,0表示正數(shù),1表示負(fù)數(shù),數(shù)值跟隨其后,并以絕對值形式給出。這是與真值最接近的一種表示形式。 原碼的定義:(2)補(bǔ)碼表示法機(jī)器數(shù)的最高位為符號位,0表示正數(shù),1表示負(fù)數(shù),其定義如下:(3)反碼表示法機(jī)器數(shù)的最高位為符號,0表示正數(shù),1表示負(fù)數(shù)。反碼的定義:2. 定點(diǎn)數(shù)的運(yùn)算1)定點(diǎn)數(shù)的位移運(yùn)算左移,絕對值擴(kuò)大;右移,絕對值縮小。算術(shù)移位規(guī)則符號位不變碼制添補(bǔ)代碼正數(shù)0負(fù)

17、數(shù)原0補(bǔ)右移添0左移添1反1算術(shù)移位和邏輯移位的區(qū)別:算術(shù)移位:帶符號數(shù)移位;邏輯移位:無符號數(shù)移位;2)原碼定點(diǎn)數(shù)的加/減運(yùn)算;對原碼表示的兩個操作數(shù)進(jìn)行加減運(yùn)算時,計(jì)算機(jī)的實(shí)際操作是加還是減,不僅取決指令中的操作碼,還取決于兩個操作數(shù)的符號。而且運(yùn)算結(jié)果的符號判斷也較復(fù)雜。例如,加法指令指示做(A)(B)由于一操作數(shù)為負(fù),實(shí)際操作是做減法(A)-(+B),結(jié)果符號與絕對值大的符號相同。同理,在減法指令中指示做(A)(B)實(shí)際操作做加法(A)(B),結(jié)果與被減數(shù)符號相同。由于原碼加減法比較繁瑣,相應(yīng)地需要由復(fù)雜的硬件邏輯才能實(shí)現(xiàn),因此在計(jì)算機(jī)中很少被采用。3)補(bǔ)碼定點(diǎn)數(shù)的加/減運(yùn)算;(1)

18、加法整數(shù) A補(bǔ) + B補(bǔ)= A+B補(bǔ)(mod 2n+1)小數(shù) A補(bǔ) + B補(bǔ)= A+B補(bǔ)(mod 2)(2) 減法整數(shù) A補(bǔ)- B補(bǔ)= A+(-B)補(bǔ)=A補(bǔ)+ -B補(bǔ)(mod 2n+1)小數(shù) A補(bǔ)- B補(bǔ)= A+(-B)補(bǔ)=A補(bǔ)+ -B補(bǔ)(mod 2)無需符號判定,連同符號位一起相加,符號位產(chǎn)生的進(jìn)位自然丟掉4)定點(diǎn)數(shù)的乘/除運(yùn)算(1)一位乘法<1>原碼定點(diǎn)一位乘法 兩個原碼數(shù)相乘,其乘積的符號為相乘兩數(shù)的異或值,數(shù)值兩數(shù)絕對值之積。設(shè) X原=X0 X1 X2 Xn Y原=Y0 Y1 Y2 YnX·Y原=X原·Y原 = (X0Y0)(X1 X2 Xn)·

19、;(Y1 Y2 Yn)符號表示把符號位和數(shù)值鄰接起來。 <2>定點(diǎn)補(bǔ)碼一位乘法有的機(jī)器為方便加減法運(yùn)算,數(shù)據(jù)以補(bǔ)碼形式存放。乘法直接用補(bǔ)碼進(jìn)行,以減少轉(zhuǎn)換次數(shù)。具體規(guī)則如下: X·Y補(bǔ)=X補(bǔ)(Y0 + 0. Y1 Y2 Yn )<3>布斯法“布斯公式”:在乘數(shù)Yn后添加Yn+1=0。按照Yn+1 ,Yn相鄰兩位的三種情況,其運(yùn)算規(guī)則如下:(1) Yn+1 ,Yn =0( Yn+1 Yn =00或11),部分積加0,右移1位;(2) Yn+1 ,Yn =1( Yn+1 Yn =10),部分積加X補(bǔ),右移1位;(3) Yn+1 ,Yn =-1( Yn+1 Yn =

20、01),部分積加X補(bǔ),右移1位最后一步不移位。(2)兩位乘法<1>原碼兩位乘法,因此實(shí)際操作用Yi-1、Yi、C三位來控制,運(yùn)算規(guī)則如下Yi-1 Yi C操作 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 +0,右移2位 0C +X,右移2位 0C +X,右移2位 0C +2X,右移2位 0C +2X,右移2位 0C -X,右移2位 1C -X,右移2位 1C +0,右移2位 1C <2>補(bǔ)碼兩位乘法根據(jù)前述的布斯算法,將兩步合并成一步,即可推導(dǎo)出補(bǔ)碼兩位乘的公式。Yn-i-1 Yn-i Yn-i+1Pi+2補(bǔ) 0 0

21、0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 +0,右移2位 +X補(bǔ),右移2位 +X補(bǔ),右移2位 +2X補(bǔ),右移2位 -2X補(bǔ),右移2位 -X補(bǔ),右移2位 -X補(bǔ),右移2位 +0,右移2位求部分積的次數(shù)和右移操作的控制問題。當(dāng)乘數(shù)由1位符號位和以n(奇數(shù))位數(shù)據(jù)位組成時,求部分積的次數(shù)為(1n)2,而且最后一次的右移操作只右移一位。若數(shù)值位本身為偶數(shù)n,可采用下述兩種方法之一:可在乘數(shù)的最后一位補(bǔ)一個0,乘數(shù)的數(shù)據(jù)位就成為奇數(shù),而且其值不變,求部分積的次數(shù)為1+(n+l)/2,即n/21,最后一次右移操作也只右移一位。乘數(shù)增加一位符號位,使總位數(shù)仍為偶

22、數(shù),此時求部分積的次數(shù)為n/2+1,而且最后一次不再執(zhí)行右移操作。(3)補(bǔ)碼除法<1>定點(diǎn)原碼一位除法1>恢復(fù)余數(shù)法被除數(shù)(余數(shù))減去除數(shù),如果為0或者為正值時,上商為1,不恢復(fù)余數(shù);如果結(jié)果為負(fù),上商為0,再將除數(shù)加到余數(shù)中,恢復(fù)余數(shù)。余數(shù)左移1位。2>加減交替法當(dāng)余數(shù)為正時,商上1,求下一位商的辦法,余數(shù)左移一位,再減去除數(shù);當(dāng)余數(shù)為負(fù)時,商上0,求下一位商的辦法,余數(shù)左移一位,再加上除數(shù)。<2>定點(diǎn)補(bǔ)碼一位除法(加減交替法)1如果被除數(shù)與除數(shù)同號,用被除數(shù)減去除數(shù);若兩數(shù)異號,被除數(shù)加上除數(shù)。如果所得余數(shù)與除數(shù)同號商上1,否則,商上0,該商為結(jié)果的符號

23、位。2求商的數(shù)值部分。如果上次商上1,將除數(shù)左移一位后減去除數(shù);如果上次商上0,將余數(shù)左移一位后加除數(shù)。然后判斷本次操作后的余數(shù),如果余數(shù)與除數(shù)同號商上1,如果余數(shù)與除數(shù)異號商上0。如此重復(fù)執(zhí)行n-1次(設(shè)數(shù)值部分n位)。3商的最后一位一般采用恒置1的辦法,并省略了最低+1的操作。此時最大的誤差為2-n。5)溢出概念和判別方法當(dāng)運(yùn)算結(jié)果超出機(jī)器數(shù)所能表示的范圍時,稱為溢出。顯然,兩個異號數(shù)相加或兩個同號數(shù)相減,其結(jié)果是不會溢出的。僅當(dāng)兩個同號數(shù)相加或者兩個異號數(shù)相減時,才有可能發(fā)溢出的情況,一旦溢出,運(yùn)算結(jié)果就不正確了,因此必須將溢出的情況檢查出來。判別方法有三種:1當(dāng)符號相同的兩數(shù)相加時,如

24、果結(jié)果的符號與加數(shù)(或被加數(shù))不相同,則為溢出。2當(dāng)任意符號兩數(shù)相加時,如果C=Cf,運(yùn)算結(jié)果正確,其中C為數(shù)值最高位的進(jìn)位,Cf為符號位的進(jìn)位。如果CCf ,則為溢出,所以溢出條件=CCf 。3采用雙符號fs2fs1。正數(shù)的雙符號位為00,負(fù)數(shù)的雙符號位為11。符號位參與運(yùn)算,當(dāng)結(jié)果的兩個符號位甲和乙不相同時,為溢出。所以溢出條件= fs2fs1 ,或者溢出條件= fs2fs1 + fs2fs1(三) 浮點(diǎn)數(shù)的表示和運(yùn)算1. 浮點(diǎn)數(shù)的表示1)浮點(diǎn)數(shù)的表示范圍;浮點(diǎn)數(shù)是指小數(shù)點(diǎn)位置可浮動的數(shù)據(jù),通常以下式表示: N=M·RE其中,N為浮點(diǎn)數(shù),M為尾數(shù),E為階碼,R稱為“階的基數(shù)(底)

25、”,而且R為一常數(shù),一般為2、8或16。在一臺計(jì)算機(jī)中,所有數(shù)據(jù)的R都是相同的,于是不需要在每個數(shù)據(jù)中表示出來。因此,浮點(diǎn)數(shù)的機(jī)內(nèi)表示一般采用以下形式:浮點(diǎn)數(shù)的機(jī)內(nèi)表示一般采用以下形式:MsEM 1位 n+1位 m位Ms是尾數(shù)的符號位,設(shè)置在最高位上。E為階碼,有n+1位,一般為整數(shù),其中有一位符號位,設(shè)置在E的最高位上,用來表正階或負(fù)階。M為尾數(shù),有m位,由Ms和M組成一個定點(diǎn)小數(shù)。Ms=0,表示正號,Ms=1,表示負(fù)。為了保證數(shù)據(jù)精度屬數(shù)通常用規(guī)格化形式表示:當(dāng)R2,且尾數(shù)值不為0時,其絕對值大于或等于(0.5)10。對非規(guī)格化浮點(diǎn)數(shù),通過將尾數(shù)左移或右移,并修改階碼值使之滿足規(guī)格化要求。

26、2)IEEE754標(biāo)準(zhǔn)根據(jù)IEEE 754國際標(biāo)準(zhǔn),常用的浮點(diǎn)數(shù)有兩種格式:(1)單精度浮點(diǎn)數(shù)(32位),階碼8位,尾數(shù)24位(內(nèi)含:位符號位)。(2)雙精度浮點(diǎn)數(shù)(64位),階碼11位,尾數(shù)53位(內(nèi)含:位符號位)。單精度格式32位,階碼為8位,尾數(shù)為23位。另有一位符號位S,處在最高位。由于IEEE754標(biāo)準(zhǔn)約定在小數(shù)點(diǎn)左部有一位隱含位,從而實(shí)際有效位數(shù)為24位。這樣使得尾數(shù)的有效值變?yōu)?.M 。例如,最小為x1.00,,最大為x1.11。規(guī)格化表示。故小數(shù)點(diǎn)左邊的位橫為1,可省去。 階碼部分采用移碼表示,移碼值127,1到254經(jīng)移碼為-126到+127。S(1位) E(8位) M(23

27、位) N(共32位) 符號位0 0 0 符號位0 不等于0 (-1)S·2-126·(0.M) 為非規(guī)格化數(shù)符號位1到254之間- (-1)S·2E-127·(1.M) 為規(guī)格化數(shù)符號位255不等于0 NaN(非數(shù)值) 符號位2550 無窮大0 有了精確的表示,無窮大也明確表示。對于絕對值較小的數(shù),可以采用非規(guī)格化數(shù)表示,減少下溢精度損失。非規(guī)格化數(shù)的隱含位是0,不是1。2. 浮點(diǎn)數(shù)的加/減運(yùn)算加減法執(zhí)行下述五步完成運(yùn)算:1)“對階”操作比較兩浮點(diǎn)數(shù)階碼的大小,求出其差E,保留其大值E,E=max(Ex, Ey)。當(dāng)E0時,將階碼小的尾數(shù)右移E位,并將其

28、階碼加上E,使兩數(shù)的階碼值相等。2)尾數(shù)加減運(yùn)算 執(zhí)行對階之后,兩尾數(shù)進(jìn)行加減操作。3)規(guī)格化操作規(guī)格化的目的是使得尾數(shù)部分的絕對值盡可能以最大值的形式出現(xiàn)。4)舍入在執(zhí)行右規(guī)或者對階時,尾數(shù)的低位會被移掉,使數(shù)值的精度受到影響,常用“0”舍“1”入法。當(dāng)移掉的部分最高位為1時,在尾數(shù)的末尾加1,如果加1后又使得尾數(shù)溢出,則要再進(jìn)行一次右規(guī)。5)檢查階碼是否溢出階碼溢出表示浮點(diǎn)數(shù)溢出。在規(guī)格化和舍入時都可能發(fā)生溢出,若階碼正常,加/減運(yùn)算正常結(jié)束。若階碼下溢,則設(shè)置機(jī)器運(yùn)算結(jié)果為機(jī)器零,若上溢,則設(shè)置溢出標(biāo)志。(四) 算術(shù)邏輯單元ALU1. 串行加法器和并行加法器1)串行進(jìn)位加法器并行加法器可

29、以同時對數(shù)據(jù)的各位進(jìn)行相加,一般用n個全加器來實(shí)現(xiàn)2個操作數(shù)的各位同時向加。其操作數(shù)的各位是同時提供的,由于進(jìn)位是逐位形成,低位運(yùn)算所產(chǎn)生的進(jìn)位會影響高位的運(yùn)算結(jié)果。串行進(jìn)位(也稱波形進(jìn)位)加法器,邏輯電路比較簡單,但是最高位的加法運(yùn)算,一定要等到所有低位的加法完成之后才能進(jìn)行,低位的進(jìn)位要逐步的傳遞到高位,逐級產(chǎn)生進(jìn)位,因此運(yùn)算速度比較慢。串行進(jìn)位加法器2)并行進(jìn)位加法器為了提高運(yùn)算速度,減少延遲時間,可以采用并行進(jìn)位法,也叫提前進(jìn)位或先行進(jìn)位。全加器中,輸入Ai、Bi、Ci-1,輸出:Si = AiBiCi-1+AiBiCi-1+AiBiCi-1+AiBiCi-1Ci = Ai Bi Ci

30、-1+Ai Bi Ci-1+Ai Bi Ci-1+Ai Bi Ci-1 = Ai Bi + (Ai+Bi)Ci-1進(jìn)位產(chǎn)生函數(shù):Gi = Ai Bi進(jìn)位傳遞函數(shù):Pi = Ai+BiCi = Gi + Pi Ci-1C4 = G4 + P4G3 + P4P3G2 + P4P3P2G1 + P4P3P2P1C0并行進(jìn)位加法器的運(yùn)算速度很快,形成最高進(jìn)位輸出的延遲時間很短,但是以增加硬件邏輯線路為代價。對于長字長的加法器,往往將加法器分成若干組,在組內(nèi)采用并行進(jìn)位,組間則采用串行進(jìn)位或并行進(jìn)位,由此形成多種進(jìn)位結(jié)構(gòu)。(1)單級先行進(jìn)位單級先行進(jìn)位方式將n位字長分為若干組,每組內(nèi)采用并行進(jìn)位方式,組

31、與組之間冊采用串行進(jìn)位方式。(2)多級先行進(jìn)位多級先行進(jìn)位在組內(nèi)和組間都采用先行進(jìn)位方式。16位單級先行進(jìn)位加法器2. 算術(shù)邏輯單元ALU的功能和機(jī)構(gòu)ALU部件是運(yùn)算器中的主要組成部分,又稱為多功能函數(shù)發(fā)生器,主要用于完成各種算術(shù)運(yùn)算和邏輯運(yùn)算。ALU的算術(shù)運(yùn)算部件包含加法器、減法器、乘法器、除法器、增量器(+1)、減量器(-1)、BCD碼運(yùn)算器等組件。ALU的主要工作是根據(jù)CPU的指令要求執(zhí)行各種指定的運(yùn)算,如加法、減法、乘法、除法、比較、邏輯移位等操作。通用寄存器組是一組存取速度最快的存儲器,用于保存參加運(yùn)算的操作數(shù)和中間結(jié)果。訪問寄存器無需高速緩存,也不需要運(yùn)行總線周期,因此指令的執(zhí)行速

32、度很快。幾乎所有的指令都要將寄存器指定為一個操作數(shù),有些指令還要求將操作數(shù)存放在專用的寄存器中。專用寄存器通常用于表示CPU所處于某種系統(tǒng)狀態(tài),ALU中有兩個重要的狀態(tài)寄存器:指令指針寄存器IP(即程序計(jì)數(shù)器PC)和標(biāo)志寄存器FLAGS。三、 存儲器層次機(jī)構(gòu)(一) 存儲器的分類1. 按存儲介質(zhì)分類 1)半導(dǎo)體存儲器 2)磁表面存儲器 3)磁芯存儲器 4)光盤存儲器2. 按存取方式分類 1)隨機(jī)存儲器 2)只讀存儲器 3)串行訪問存儲器3. 按在計(jì)算機(jī)中的作用分類存儲器主存閃速存儲器(Flash Memory)輔存緩存(Cache)只讀存儲器(ROM)靜態(tài)RAM動態(tài)RAM隨機(jī)存儲器(RAM)MR

33、OMPROMEPROMEEPROM磁盤磁帶光盤(二) 存儲器的層次化結(jié)構(gòu)寄存器緩存主存磁盤磁帶存儲器有3個重要的指標(biāo):速度、容量和每位價格,一般來說,速度越快,位價越高;容量越大,位價越低,容量大,速度就越低。上述三者的關(guān)系用下圖表示:存儲系統(tǒng)層次結(jié)構(gòu)主要體現(xiàn)在緩存-主存-輔存這兩個存儲層次上,如下圖所示:CPU 緩存主存輔存(三) 半導(dǎo)體隨機(jī)存取存儲器1. SRAM存儲器的工作原理1)靜態(tài)存儲單元SRAM靜態(tài)存儲單元的每個存儲位需要四到六個晶體管組成。比較典型的是六管存儲單元,即一個存儲單元存儲一位信息“0”或“1”。靜態(tài)存儲單元保存的信息比較穩(wěn)定,信息為非破壞性讀出,故不需要重寫或者刷新操

34、作;另一方面,其結(jié)構(gòu)簡單、可靠性高、速度較快,但其占用元件較多,占硅片面積大,且功耗大,所以集成度不高。靜態(tài)隨機(jī)存儲單元2. DRAM存儲器的工作原理1)動態(tài)存儲單元常見的動態(tài)RAM存儲單元有三管式和單管式兩種,它們的共特點(diǎn)是靠電容存儲電荷的原理來寄存信息。若電容上存有足夠的電荷表示“”,電容上無電荷表示“0”。電容上的電荷一般只能維持1-2ms,因此即使電源不掉電,電容上的電荷會自動消失。因此,為保證信息的不丟失,必須在2ms之內(nèi)就要對存儲單元進(jìn)行一次恢復(fù)操作,這個過程稱為再生或者刷新。與靜態(tài)RAM相比,動態(tài)RAM具有集成度更高、功耗更低等特點(diǎn),目前被各類計(jì)算機(jī)廣泛使用。三管動態(tài)RAM基本單

35、元單管動態(tài)RAM基本單元(四) 只讀存儲器前面介紹的DRAM和SRAM均為可任意讀寫的隨機(jī)存儲器,當(dāng)?shù)綦姇r,所存儲的內(nèi)容消失,所以是易失性存儲器。只讀存儲器,即使停電,所存儲的內(nèi)容也不丟失。根據(jù)半導(dǎo)體制造工藝的不同,可分為ROM,PROM,EPROM,E2ROM和Flash Memory1. 只讀存儲器(ROM)掩模式ROM由芯片制造商在制造時寫入內(nèi)容,以后只能讀而不能再寫入。其基本存儲原理是以元件的“有無”來表示該存儲單元的信息(“1”或“0”),可以用二極管或晶體管作為元件,顯而易見,其存儲內(nèi)容是不會改變的。2. 可編程序的只讀存儲器(PROM)PROM可由用戶根據(jù)自己的需要來確定ROM中

36、的內(nèi)容,常見的熔絲式PROM是以熔絲的通和斷開來表示所存的信息為“1”或“0”。剛出廠的產(chǎn)品,其熔絲是全部接通的。根據(jù)需要斷開某些單元的熔絲(寫入)。顯而易見,斷開后的熔絲是不能再接通了,因而一次性寫入的存儲器。掉電后不會影響其所存儲的內(nèi)容。3. 可擦可編程序的只讀存儲器(EPROM)為了能修改ROM中的內(nèi)容,出現(xiàn)了EPROM。利用浮動?xùn)臡OS電路保存信息,信息的改寫用紫外線照射即可擦除。4. 可電擦可編程序只讀存儲器(E2PROM)E2PROM的編程序原理與EPROM相同,但擦除原理完全不同,重復(fù)改寫的次數(shù)有限制(因氧化層被磨損),一般為10萬次。其讀寫操作可按每個位或每個字節(jié)進(jìn)行,類似SR

37、AM,但每字節(jié)的寫入周期要幾毫秒,比SRAM長得多。E2PROM每個存儲單元采則2個晶體管。其柵極氧化層比EPROM薄,因此具有電擦除功能。5. 快除讀寫存儲器(Flash Memory)F1ash Memory是在EPROM與E2PROM基礎(chǔ)上發(fā)展起來的,其讀寫過程和E2PROM不同,F(xiàn)1ash Memory的讀寫操作一般是以塊為單位。(五) 主存儲器與CPU的連接1個存儲器的芯片的容量是有限的,它在字?jǐn)?shù)或字長方面與實(shí)際存儲器的要求都有很大差距,所以需要在字向和位向進(jìn)行擴(kuò)充才能滿足需要。根據(jù)存儲器所需的存儲容量和所提供的芯片的實(shí)際容量,可以計(jì)算出總的芯片數(shù)。一個存儲器的容量為M×N

38、位,若使用L×K位存儲器芯片,那么,這個存儲器共需要M/L×N/K存儲器芯片。1位擴(kuò)展位擴(kuò)展指的是用多個存儲器器件對字長進(jìn)行擴(kuò)充。位擴(kuò)展的連接方式是將多片存儲器的地址、片選己、讀寫控制端R/W可相應(yīng)并聯(lián),數(shù)據(jù)端分別引出。2)字?jǐn)U展字?jǐn)U展指的是增加存儲器中字的數(shù)量。靜態(tài)存儲器進(jìn)行字?jǐn)U展時,將各芯片的地址線、數(shù)據(jù)線、讀寫控制線相應(yīng)并聯(lián),而由片選信號來區(qū)分各芯片的地址范圍。3)字位擴(kuò)展實(shí)際存儲器往往需要字向和位向同時擴(kuò)充。(六) 雙口RAM和多模塊存儲器1.雙端口存儲器雙端口存儲器是一種具有兩個單獨(dú)的讀/寫端口及控制電路的存儲器,通過增加一個讀/寫端口,雙端口存儲器擴(kuò)展了存儲器的

39、的信息交換能力。2.多模塊存儲器為了解決CPU與主存儲器之間的速度匹配問題,在高速存儲器中,普遍采用并行主存系統(tǒng)。即利用類似存儲器擴(kuò)展(位擴(kuò)展、字?jǐn)U展、字位擴(kuò)展)的方法,將n個字長為W位的存儲器并行連接,構(gòu)建一個更大的存儲器。并行主存有單體多字方式、多體并行方式和多體交叉方式。(七) 高速緩沖存儲器(Cache)1. 程序訪問的局部性從大量的統(tǒng)計(jì)中得到的一個規(guī)律是,程序中對于存儲空間90%的訪問局限于存儲空間的10%的區(qū)域中,而另外10%的訪問則分布在存儲空間的其余90%的區(qū)域中。這就是通常說的局部性原理。訪存的局部性規(guī)律包括兩個方面:時間局部性:如果一個存儲項(xiàng)被訪問,則可能該項(xiàng)會很快被再次訪

40、問。 空間局部性:如果一個存儲項(xiàng)被訪問,則該項(xiàng)及其鄰近的項(xiàng)也可能很快被訪問。2. Cache的基本工作原理Cache通常由兩部分組成,塊表和快速存儲器。其工作原理是:處理機(jī)按主存地址訪問存儲器,存儲器地址的高段通過主存-Cache地址映象機(jī)構(gòu)借助查表判定該地址的存儲單元是否在Cache中,如果在,則Cache命中,按Cache地址訪問Cache。否則,Cache不命中,則需要訪問主存,并從主存中調(diào)入相應(yīng)數(shù)據(jù)塊到Cache中,若Cache中已寫滿,則要按某種算法將Cache中的某一塊替換出去,并修改有關(guān)的地址映象關(guān)系。從這個工作原理我們可以看出,它已經(jīng)涉及到了兩個問題。首先是定位、然后是替換的問

41、題。Cache的存在對程序員是透明的。其地址變換和數(shù)據(jù)塊的替換算法均由硬件實(shí)現(xiàn)。通常Cache被集成到CPU內(nèi)以提高訪問速度。3. Cache和主存之間的映射方式因?yàn)樘幚頇C(jī)訪問都是按主存地址訪問的,而Cache的空間遠(yuǎn)小于主存,如何知道這一次的訪問內(nèi)容是不是在Cache中,在Cache中的哪一個位置呢? 這就需要地址映象,即把主存中的地址映射成Cache中的地址。讓Cache中一個存儲塊(空間)與主存中若干塊相對應(yīng),如此,訪問一個主存地址時,就可以對應(yīng)地知道在cache中哪一個地址了。地址映象的方法有三種:直接映象、全相聯(lián)映象和組相聯(lián)映象。直接映象就是將主存地址映象到Cache中的一個指定地址

42、。任何時候,主存中存儲單元的數(shù)據(jù)只能調(diào)入到Cache中的一個位置,這是固定的,若這個位置已有數(shù)據(jù),則產(chǎn)生沖突,原來的塊將無條件地被替換出去。直接映射全相聯(lián)映象就是任何主存地址可映象到任何Cache地址的方式。在這種方式下,主存中存儲單元的數(shù)據(jù)可調(diào)入到Cache中的任意位置。只有在Cache中的塊全部裝滿后才會出現(xiàn)塊沖突。全相連映射組相聯(lián)映象指的是將存儲空間的頁面分成若干組,各組之間的直接映象,而組內(nèi)各塊之間則是全相聯(lián)映象。組相聯(lián)映射4. Cache中主存塊的替換算法在直接映象方式下,不存在塊替換的算法,因?yàn)槊恳粔K的位置映象是固定的,需要哪一塊數(shù)據(jù)就可直接確定地將該塊數(shù)據(jù)調(diào)入上層確定位置。而其他

43、兩種映象就存在替換策略的問題,就是要選擇替換到哪一個Cache塊。即替換算法。 思想優(yōu)點(diǎn)缺點(diǎn)隨機(jī)算法RAND 用軟的或硬的隨機(jī)數(shù)產(chǎn)生器產(chǎn)生上層中要被替換的頁號簡單、易于實(shí)現(xiàn)沒有利用上層存儲器使用的"歷史信息",沒有反映等程序局部性,命中率低。先進(jìn)先出FIFO 選擇最早裝入上層的頁作為被替換的頁實(shí)現(xiàn)方便,利用了主存歷史的信息不能正確反映程序局部性原理,命中率不高,可能出現(xiàn)一種異?,F(xiàn)象。近期最少使用法LRU 選擇近期最少訪問的頁作為被替換的頁比較正確反映程序局部性,利用訪存的歷史信息,命中率較高實(shí)現(xiàn)較復(fù)雜優(yōu)化替換算法OPT 將未來近期不用的頁換出去命中率最高,可作為衡

44、量其他替換算法的標(biāo)準(zhǔn)不現(xiàn)實(shí),只是一種理想算法5. Cache寫策略對Cache的寫操作,情況比讀操作要復(fù)雜一些。由于寫入Cache時,并沒有寫入主存,因此就出現(xiàn)Cache和主存數(shù)據(jù)不一致的情況。 如何處理Cache和主存不一致的方法就稱為更新策略。更新策略思想優(yōu)點(diǎn)缺點(diǎn)寫回法是指在CPU執(zhí)行寫操作時,信息只寫入Cache中,僅當(dāng)需要替換時,才將改寫過的Cache塊先送回主存(寫回),然后再調(diào)塊(設(shè)置dirty位)有利于省去許多將中間結(jié)果寫入主存的無謂開銷。需設(shè)修改位增加Cache的復(fù)雜性全寫法(寫直達(dá)法) 在寫操作時,將數(shù)據(jù)同時寫入Cache和主存實(shí)現(xiàn)開銷小、簡單為了寫中間結(jié)果浪費(fèi)了不少時間另外

45、,當(dāng)寫不命中時(也就是寫Cache塊時,這塊早被人替換出去而在Cache中找不到時)是不是要把這塊再取回Cache中,有兩個解決方法:u 不按寫分配法,就是直接寫到主存里,不再把該地址對應(yīng)的塊調(diào)回Cache中。u 按寫分配法,就是寫到主存,而且把這一塊從主存中調(diào)入到Cache。一般寫回法用按寫分配法,全寫法則采用不按寫分配。(八) 虛擬存儲器1. 虛擬存儲器的基本概念虛擬存儲器是主存的擴(kuò)展,虛擬存儲器的空間大小取決于計(jì)算機(jī)的訪存能力而不是實(shí)際外存的大小,實(shí)際存儲空間可以小于虛擬地址空間。從程序員的角度看,外存被看作邏輯存儲空間,訪問的地址是一個邏輯地址(虛地址),虛擬存儲器使存儲系統(tǒng)既具有相當(dāng)

46、于外存的容量又有接近于主存的訪問速度。虛擬存儲器的訪問也涉及到虛地址與實(shí)地址的映象、替換算法等,這與Cache中的類似,前面我們講的地址映象以塊為單位,而在虛擬存儲器中,地址映象以頁為單位。設(shè)計(jì)虛擬存儲系統(tǒng)需考慮的指標(biāo)是主存空間利用率和主存的命中率。虛擬存儲器與Cache存儲器的管理方法有許多相同之處,它們都需要地址映象表和地址變換機(jī)構(gòu)。但是二者也是不同的。虛擬存儲器的三種不同管理方式:按存儲映象算法,分為段式、頁式和段頁式等,這些管理方式的基本原理是類似的。2. 頁式虛擬存儲器頁式管理:是把虛擬存儲空間和實(shí)際空間等分成固定大小的頁,各虛擬頁可裝入主存中的不同實(shí)際頁面位置。頁式存儲中,處理機(jī)邏

47、輯地址由虛頁號和頁內(nèi)地址兩部分組成,實(shí)際地址也分為頁號和頁內(nèi)地址兩部分,由地址映象機(jī)構(gòu)將虛頁號轉(zhuǎn)換成主存的實(shí)際頁號。頁式管理用一個頁表,包括頁號、每頁在主存中起始位置、裝入位等。頁表是虛擬頁號與物理頁號的映射表。頁式管理由操作系統(tǒng)進(jìn)行,對應(yīng)用程序員的透明的。3. 段式虛擬存儲器段式管理: 把主存按段分配的存儲管理方式。它是一種模塊化的存儲管理方式,每個用戶程序模塊可分到一個段,該程序模塊只能訪問分配給該模塊的段所對應(yīng)的主存空間。段長可以任意設(shè)定,并可放大和縮小。系統(tǒng)中通過一個段表指明各段在主存中的位置。段表中包括段名(段號)、段起點(diǎn)、裝入位和段長等。段表本身也是一個段。段一般是按程序模塊分的。

48、4. 段頁式虛擬存儲器段頁式管理:是上述兩種方法的結(jié)合,它將存儲空間按邏輯模塊分成段,每段又分成若干個頁,訪存通過一個段表和若干個頁表進(jìn)行。段的長度必須是頁長的整數(shù)倍,段的起點(diǎn)必須是某一頁的起點(diǎn)。5. TLB(快表)在虛擬存儲器中進(jìn)行地址變換時,需要虛頁號變換成主存中實(shí)頁號的內(nèi)部地址變換,這一般通過查內(nèi)頁表實(shí)現(xiàn)。當(dāng)表中該頁對應(yīng)的裝入位為真時,表示該頁在主存中,可按主存地址問主存;如果裝入位為假時,表示該頁不在存儲器中,就產(chǎn)生頁失效中斷,需從外存調(diào)入頁。中斷處理時先通過外部地址變換,一般通過查外頁表,將虛地址變換為外存中的實(shí)際地址,到外存中去選頁,然后通過I/0通道調(diào)入內(nèi)存。當(dāng)外存頁面調(diào)入主存中

49、時還存在一個頁面替換略的問題。提高頁表的訪問速度是提高地址變換速度的關(guān)鍵。因?yàn)?,每次訪存都要讀頁表,如果頁存放在主存中,就意味著訪存時間至少是兩次訪問主存的時間,這樣查表的代價大大。只有內(nèi)部地址變換速度提高到使訪問主存的速度接近于不采用虛擬存儲器時的訪主存速度時,虛擬存儲器才能實(shí)用。根據(jù)訪存的局部性,表內(nèi)各項(xiàng)的使用的概率不是均勻分布的。在一段時間內(nèi),可能只用表中的很少幾項(xiàng),因此應(yīng)重點(diǎn)提高使用概率高的這部分頁表的訪問速度,可用快速硬件構(gòu)成全表小得多的部分表格,而將整個表格放在主存中,這就引出了快表和慢表的概念和技術(shù)。這樣,虛地址到實(shí)地址的變換方法如后圖所示。查表時,根據(jù)虛頁表同時查找快表和慢表,

50、當(dāng)在快表中查到該虛頁號時,就能很快找到對應(yīng)的實(shí)頁號,將其送入主存實(shí)地址寄存器,同時使慢表的查找作廢,這時主存的訪問速度沒降低多少。如果在快表中查不到,則經(jīng)過一個訪主存的時間延遲后,將從慢表中查到的實(shí)頁送入實(shí)地址寄存器,同時將此虛頁號和對應(yīng)的實(shí)頁號送入快表,這里也涉及到用一個替換算法從快表中替換出一行??毂淼拇嬖趯λ械某绦騿T都是透明的。四、 指令系統(tǒng)(一) 指令格式1. 指令的基本格式計(jì)算機(jī)是通過執(zhí)行指令來處理各種數(shù)據(jù)的。為了指出數(shù)據(jù)的來源、操作結(jié)果的去向及所執(zhí)行的操作,一條指令必須包含下列信息:(1)操作碼,具體說明了操作的性質(zhì)及功能。(2)操作數(shù)的地址。(3)操作結(jié)果的存儲地址。(4)下一

51、條指令的地址。從上述分析可知,一條指令實(shí)際上包括兩種信息即操作碼和地址碼。操作碼(operation code)用來表示該指令所要完成的操作(如加、減、乘、除、數(shù)據(jù)傳送等),其長度取決于指令系統(tǒng)中的指令條數(shù)。地址碼用來描述該指令的操作對象,或者直接給出操作數(shù)或者指出操作數(shù)的存儲器地址或寄存器地址(即寄存器名)。2. 定長操作碼指令格式1)零地址指令OPCODE格式:OPCODE操作碼指令中只有操作碼,而沒有操作數(shù)或沒有操作數(shù)地址。這種指令有兩種可能:(1)無需任何操作數(shù),如空操作指令,停機(jī)指令等。(2)所需的操作數(shù)是默認(rèn)的。如堆棧結(jié)構(gòu)計(jì)算機(jī)的運(yùn)算指令,所需的操作數(shù)默認(rèn)在堆棧中,由堆棧指針SP隱

52、含指出,操作結(jié)果仍然放回堆棧中。又如Intel 8086的字符串處理指令,源、目的操作數(shù)分別默認(rèn)在源變址寄存器SI和目的變址寄存器DI所指定的存儲器單元中。2)一地址指令OPCODEA格式:OPCODE操作碼A操作數(shù)的存儲器地址或寄存器名指令中只給出一個地址,該地址既是操作數(shù)的地址,又是操作結(jié)果的存儲地址。如加1,減1和移位等單操作數(shù)指令均采用這種格式,對這一地址所指定的操作數(shù)執(zhí)行相應(yīng)的操作后,產(chǎn)生的結(jié)果又存回該地址中。在某些字長較短的微型機(jī)中(如早期的Z80,Intel8080,MC6800等),大多數(shù)算術(shù)邏輯指令也采用這種格式,第一個源操作數(shù)由地址碼A給出,第二個源操作數(shù)在一個默認(rèn)的寄存器

53、中,運(yùn)算結(jié)果仍送回到這個寄存器中,替換了原寄存器內(nèi)容,通常把這個寄存器稱累加器。3)二地址指令OPCODEA1A2格式:OPCODE操作碼 A1第一個源操作數(shù)的存儲器地址或寄存器地址。 A2第二個源操作數(shù)和存放操作結(jié)果的存儲器地址或寄存器地址。這是最常見的指令格式,兩個地址指出兩個源操作數(shù)地址,其中一個還是存放結(jié)果的目的地址。對兩個源操作數(shù)進(jìn)行操作碼所規(guī)定的操作后,將結(jié)果存入目的地址,在本例中即為A2指定的地址4)三地址指令OPCODEA1A2A3格式:OPCODE操作碼 A1第一個源操作數(shù)的存儲器地址或寄存器地址 A2第二個源操作數(shù)的存儲器地址或寄存器地址 A3操作結(jié)果的存儲器地址或寄存器地

54、址其操作是對A1,A2指出的兩個源操作數(shù)進(jìn)行操作碼(OPCODE)所指定的操作,結(jié)果存入A3中。5)多地址指令在某些性能較好的大、中型機(jī)甚至高檔小型機(jī)中,往往設(shè)置一些功能很強(qiáng)的,用于處理成批數(shù)據(jù)的指令,如字符串處理指令,向量、矩陣運(yùn)算指令等。為了描述一批數(shù)據(jù),指令中需要多個地址來指出數(shù)據(jù)存放的首地址、長度和下標(biāo)等信息3. 擴(kuò)展操作碼指令格式設(shè)某機(jī)器的指令長度為16位,包括4位基本操作碼字段和三個4位地址字段,其格式下:OPCODE(4)A1(4)A2(4)A3(4)4位基本操作碼有16個碼點(diǎn)(即有16種組合),若全部用于表示三地址指令,則只有16條。但是,若三地址指令僅需15條,兩地址指令需15條,一地址指令需15條,零地址指令需16條,共61條指令,應(yīng)如何安排操作碼?顯然,只有4位基本操作碼是不夠的,必須將操作碼的長度向地址碼字段擴(kuò)展才行。一種可供擴(kuò)展的方法和步驟如下:(1)15條三地址指令的操作碼由4位基本操作碼從00001110給出,剩下一個碼點(diǎn)1111用于把操作碼擴(kuò)展到A1,即4位擴(kuò)展到8位;(2)15條二地

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論