計(jì)算機(jī)組成原理(第2版)課后習(xí)題解答 譚志虎_第1頁
計(jì)算機(jī)組成原理(第2版)課后習(xí)題解答 譚志虎_第2頁
計(jì)算機(jī)組成原理(第2版)課后習(xí)題解答 譚志虎_第3頁
計(jì)算機(jī)組成原理(第2版)課后習(xí)題解答 譚志虎_第4頁
計(jì)算機(jī)組成原理(第2版)課后習(xí)題解答 譚志虎_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

PAGE195PAGE196第章《計(jì)算機(jī)組成原理(微課版)》

部分習(xí)題解析10.1第1章習(xí)題解析1.2選擇題。(1)D解析:I.二進(jìn)制只有0和1兩種狀態(tài),算術(shù)邏輯運(yùn)算規(guī)則都簡單。II.兩種狀態(tài)正好可用高、低電平表示,物理器件很容易制造。二進(jìn)制與邏輯量相吻合。III.利用邏輯門電路很容易實(shí)現(xiàn)算術(shù)運(yùn)算電路。(2)C解析:馮·諾依曼結(jié)構(gòu)計(jì)算機(jī)中程序的功能都通過CPU執(zhí)行指令完成,選項(xiàng)A正確。指令和數(shù)據(jù)形式上無差別,數(shù)據(jù)可以看成指令,指令也可以看成數(shù)據(jù),取指令階段訪存取出的是指令,執(zhí)行階段訪存取出的是數(shù)據(jù),選項(xiàng)B正確。指令按地址訪問,數(shù)據(jù)由指令的地址碼給出,并且除立即數(shù)尋址外,指令都無法直接給出數(shù)據(jù),選項(xiàng)C錯(cuò)誤。馮·諾依曼結(jié)構(gòu)計(jì)算機(jī)的主要工作原理是存儲程序和程序控制,在程序執(zhí)行前,指令和數(shù)據(jù)需預(yù)先存放在存儲器中,選項(xiàng)D正確。(3)C解析:匯編程序負(fù)責(zé)將匯編代碼轉(zhuǎn)換為目標(biāo)代碼;鏈接程序負(fù)責(zé)將多個(gè)目標(biāo)代碼以及庫函數(shù)鏈接為一個(gè)可執(zhí)行目標(biāo)代碼文件;編譯程序負(fù)責(zé)將高級語言源程序翻譯成目標(biāo)代碼文件;解釋程序負(fù)責(zé)將源程序逐條翻譯成對應(yīng)的機(jī)器目標(biāo)代碼,并立即執(zhí)行,翻譯一句執(zhí)行一句,并且不會生成目標(biāo)程序。(4)A解析:將源程序轉(zhuǎn)換為可執(zhí)行目標(biāo)文件的過程分為預(yù)處理、編譯、匯編、鏈接四個(gè)階段。(4)A解析:硬件能直接執(zhí)行的只能是機(jī)器語言程序(二進(jìn)制編碼);匯編語言是機(jī)器語言程序的助記符表示,經(jīng)過匯編后才能被執(zhí)行;硬件描述語言程序是用于描述硬件電路的代碼,不是可運(yùn)行的程序。(X)B解析:機(jī)器字長通常與CPU的寄存器位數(shù)、加法器有關(guān)。故選B。(5)D解析:MIPS(即每秒百萬條指令)是整型指令性能指標(biāo),CPI是指執(zhí)行每條指令所需要的平均時(shí)鐘周期數(shù),IPC是CPI的倒數(shù),只有MFLOPS是描述浮點(diǎn)操作速度的指標(biāo)。(X)D解析:PFLOPS=每秒一千萬億(1015)次浮點(diǎn)運(yùn)算。故93.0146PFLOPS≈每秒9.3×106次浮點(diǎn)運(yùn)算,即每秒9.3億億次浮點(diǎn)運(yùn)算,故選D。(6)D解析:CPU時(shí)鐘頻率越高,完成指令的一個(gè)執(zhí)行步驟的時(shí)間就越短,執(zhí)行指令的速度就越快,正確。優(yōu)化數(shù)據(jù)通路結(jié)構(gòu)可以有效提高計(jì)算機(jī)系統(tǒng)的吞吐量,從而加快程序的執(zhí)行,II正確。對程序進(jìn)行編譯優(yōu)化可以得到更優(yōu)的指令序列,從而縮短程序的執(zhí)行時(shí)間,III正確。(7)C解析:基準(zhǔn)程序CPI=2×0.5+3×0.2+4×0.1+5×0.2=3,主頻為1.2GHz,即1200MHz,該機(jī)器的MIPS=1200/3=400。(8)D解析:程序A的運(yùn)行時(shí)間為100s,減去CPU時(shí)間90s,剩余10s為I/O時(shí)間。CPU提速后運(yùn)行基準(zhǔn)程序A所耗費(fèi)的時(shí)間是T=90/1.5+10=70s。(9)D解析:Tcpu=CPI×IC×T,程序執(zhí)行時(shí)間與CPI和指令條數(shù)IC是線性關(guān)系,所以新的執(zhí)行時(shí)間是0.7×1.2×20=16.8s。(10)C解析:由Tcpu=CPI×IC×T=CPI×IC×(1/f),可知M1的時(shí)間=2×IC/1.5,M2的時(shí)間=1×IC/1.2,IC為指令條數(shù),兩者比值為(2×IC/1.5)/(1×IC/1.2)=1.6,因此選C。(X)A解析:CPI指平均每條指令的執(zhí)行需要多少個(gè)時(shí)鐘周期。由于80%的指令執(zhí)行平均需要1個(gè)時(shí)鐘周期,20%的指令執(zhí)行平均需1個(gè)時(shí)鐘周期,因此CPI=80%×1+20%×10=2.8。計(jì)算機(jī)主頻為1GHz,程序P共執(zhí)10000條指令,平均每條指令需要2.8個(gè)時(shí)鐘周期,因此,CPU執(zhí)行時(shí)間=(10000×2.8)/109=2.8×10-5s=28μs。(X)C解析:P每條指令平均需要1.2個(gè)時(shí)鐘周期,機(jī)器M的主頻為1.5GHZ代表每秒共有1.5G個(gè)時(shí)鐘周期,則每秒能執(zhí)行1.5G/1.2=1.25G條指令。執(zhí)行P程序共需要51051.2=6105個(gè)時(shí)鐘周期,每秒有1.5G個(gè)時(shí)鐘周期,則610?個(gè)時(shí)鐘周期共需要6105/1.5G103=0.4ms。所以答案為C。1.3馮·諾依曼結(jié)構(gòu)計(jì)算機(jī)的基本思想是什么?按此思想設(shè)計(jì)的計(jì)算機(jī)硬件系統(tǒng)應(yīng)由哪些部件組成?它們各有何作用?答:存儲程序和程序控制是馮·諾依曼結(jié)構(gòu)計(jì)算機(jī)的主要設(shè)計(jì)思想?!按鎯Τ绦颉笔侵笇⒔忸}的步驟編寫成程序,然后將程序和運(yùn)行程序所需要的數(shù)據(jù)以二進(jìn)制的形式存放到存儲器中,方便執(zhí)行。而“程序控制”則是指計(jì)算機(jī)中的控制器逐條取出存儲器中的指令并按順序執(zhí)行,控制各功能部件進(jìn)行相應(yīng)的操作,完成數(shù)據(jù)的加工處理。馮·諾依曼結(jié)構(gòu)計(jì)算機(jī)由運(yùn)算器、控制器、存儲器、輸入/輸出設(shè)備和總線組成,各組成部分的作用如下。運(yùn)算器:對數(shù)據(jù)進(jìn)行加工處理。控制器:根據(jù)指令功能產(chǎn)生各功能部件的控制信號序列,完成指令的功能。存儲器:存放程序和數(shù)據(jù)。輸入設(shè)備:將信息輸入計(jì)算機(jī)內(nèi)部的外部設(shè)備。輸出設(shè)備:備??偩€:連接兩個(gè)或多個(gè)設(shè)備(部件)的公共信息通路。1.4計(jì)算機(jī)系統(tǒng)從功能上可劃分為哪些層次?各層次在計(jì)算機(jī)系統(tǒng)中起什么作用?答:計(jì)算機(jī)系統(tǒng)分成6級層次結(jié)構(gòu),自下向上分別是邏輯門層、微代碼層、指令集架構(gòu)層、操作系統(tǒng)層、匯編語言層、高級語言層。邏輯門層是計(jì)算機(jī)系統(tǒng)底層的硬件系統(tǒng);微代碼層為指令集架構(gòu)層提供機(jī)器指令的解釋執(zhí)行功能;指令集架構(gòu)層是軟硬件系統(tǒng)的界面,可通過機(jī)器語言編寫程序?qū)崿F(xiàn)對計(jì)算機(jī)硬件的控制;操作系統(tǒng)層負(fù)責(zé)調(diào)度計(jì)算機(jī)中的軟件和硬件資源,方便用戶使用計(jì)算機(jī);匯編語言層使用與機(jī)器直接相關(guān)的匯編語言編寫程序,匯編成目標(biāo)代碼可直接在機(jī)器上運(yùn)行;高級語言層是面向用戶的抽象層,使用與機(jī)器無關(guān)的高級語言編程,代碼在編譯器的作用下生成匯編代碼。1.5解:CPI1=20.4+30.2+40.15+50.25=3.25MIPS1=f

/(CPI1106)=600106/(3.25106)≈185CPI2=20.4+20.2+30.15+40.25=2.65MIPS2=f

/(CPI2106)=800106/(2.65106)≈3021.6解:(1)優(yōu)化前:CPI==10.4+20.2+20.15+20.25=1.6。優(yōu)化后:A、B、C、D這4類指令在程序中所占比例分別為1/4、1/4、3/16、5/16,CPI==11/4+21/4+23/16+25/16=1.75。(2)優(yōu)化前:MIPS=f

/(CPI106)=(500106)/(1.6106)=312.5。優(yōu)化后:MIPS=f

/(CPI106)=(500106)/(1.75106)≈285.7。(3)優(yōu)化后,程序中A類指令條數(shù)減少,其他指令不變,各指令CPI不變,所以程序執(zhí)行時(shí)間變短,但程序的CPI卻變大,MIPS變小,所以不能簡單地通過這此指標(biāo)來評斷計(jì)算機(jī)性能。10.2第2章習(xí)題解析2.2選擇題。(1)B解析:可以用掃描法求解負(fù)數(shù)補(bǔ)碼,此時(shí)符號位為1,真值數(shù)據(jù)位從右到左順序掃描,右起第一個(gè)1及其右邊的0保持不變,其余各位求反,因此剩下的兩個(gè)“1”在最低位時(shí),表示最小整數(shù),為10000011,轉(zhuǎn)換成真值為-125。(X)B解析:n位補(bǔ)碼整數(shù)的最小值是1,00…0(即-2n-1);最大值是0,11…1(即2n-l-1)。n位補(bǔ)碼整數(shù)所能表示的范圍是-2n-1~2n-1-1,32位補(bǔ)碼整數(shù)所能表示的范圍是-231~231-1。(X)D解析:若x,y和z均為無符號整數(shù),則x>y>z,A和B錯(cuò)誤。若x,y和z均為帶符號整數(shù),補(bǔ)碼的最高位是符號位,0表示正數(shù),1表示負(fù)數(shù),因此z為正數(shù),而x和y為負(fù)數(shù)。對于x和y的比較,數(shù)值位取反加1,可知x=-3H,y=-21H,故x>y。D選項(xiàng)正確。(X)A解析:有符號short型變量通常采用16位補(bǔ)碼表示。這里首先將數(shù)值8190轉(zhuǎn)換為二進(jìn)制形式:8190=0001111111111110B,然后取其二進(jìn)制補(bǔ)碼(逐位取反后加1),補(bǔ)碼為1110000000000010B,轉(zhuǎn)化為16進(jìn)制為E002H。因此答案為A。(2)A解析:兩種數(shù)據(jù)類型長度都是16位,進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換時(shí),機(jī)器碼保持不變,unsignedshortusi=65535=(1111111111111111)2,有符號短整型si采用補(bǔ)碼表示,其真值是-1,所以選A。(3)B解析:將一個(gè)16位unsignedshort轉(zhuǎn)換成32位unsignedint,小字長轉(zhuǎn)大字長,需要根據(jù)原數(shù)據(jù)是否是有符號數(shù)進(jìn)行不同的位擴(kuò)展。如果原數(shù)據(jù)是無符號類型,則進(jìn)行零擴(kuò)展,否則進(jìn)行符號擴(kuò)展;擴(kuò)展數(shù)據(jù)的高位部分利用原數(shù)據(jù)符號位填充。這里都是無符號數(shù),采-5=FFFAH,采用零擴(kuò)展,所以y的機(jī)器數(shù)為0000FFFA。(4)D解析:相同字長整型數(shù)據(jù)類型轉(zhuǎn)換,機(jī)器碼不變,s采1位補(bǔ)碼表示,-32767=-32768+1,所以其機(jī)器碼=(1000000000000001)2=8001H,該機(jī)器碼轉(zhuǎn)換成無符號數(shù)值為32769。(X)B解析:整形i的機(jī)器碼為0x00008009,轉(zhuǎn)換成short型直接截去高16位,si的機(jī)器碼為8009,繼續(xù)轉(zhuǎn)換為32位會采用符號擴(kuò)展方式,所以j的機(jī)器碼為FFFF8009,轉(zhuǎn)換成真值為-32759。(X)A解析:選項(xiàng)A的十進(jìn)制小數(shù)1.2轉(zhuǎn)換成二進(jìn)制的結(jié)果是無限循環(huán)小數(shù)1.001100110011…,無法用精度有限的IEEE754格式精確表示。(5)A解析:本題主要考查IEEE754單精度浮點(diǎn)數(shù)的表示,需要將真值轉(zhuǎn)換為單精度浮點(diǎn)編碼,先將x轉(zhuǎn)換成二進(jìn)制為-1000.01=-1.00001×23,根據(jù)IEEE754單精度浮點(diǎn)數(shù)格式,E=127+3=130=(10000010)2,去掉隱藏位,尾碼為(00001000000000000000000)2。IEEE754單精度浮點(diǎn)數(shù)格式為數(shù)符(1位)+階碼(8位)+尾數(shù)(23位),因此FRl內(nèi)容如下:(11000001000001000000000000000000)2=C1040000H(6)A解析:該數(shù)采用IEEE754單精度浮點(diǎn)數(shù)格式表示為C6400000H,采用二進(jìn)制格式表示為(11000110010000000000000000000000)2。階碼值=(10001100)2-127=(1101)2=13,恢復(fù)隱藏位則尾數(shù)=(1.1)2=1.5,符號位為1表示負(fù)數(shù),因此浮點(diǎn)數(shù)的值為-1.5×213。(7)D解析:單精度規(guī)格化浮點(diǎn)數(shù)真值公式為(-1)S×1.m×2E-127,其中S為符號位,階碼E的取值為1~254,尾數(shù)m共23位。表示最大正整數(shù)時(shí),符號位S為0,階碼E為254,m為23位全1,則最大整數(shù)真值為1.111…l×2254-127=2127×(2-2-23)=2128-2104,因此選D。(8)A解析:單精度規(guī)格化浮點(diǎn)數(shù)真值公式為(-1)S×1.m×2E-127,其中S為符號位,階碼E的取值為1~254,尾數(shù)m共23位。表示最小規(guī)格化正數(shù)時(shí),符號位S為0,階碼E為1,m為23位全0,則最小規(guī)格化正數(shù)真值為1.000…0×21-127=1×2-126,因此選A。(9)A解析:(fl)和(f2)對應(yīng)的二進(jìn)制分別是(110011001001…)2和(101100001100…)2,根據(jù)IEEE754浮點(diǎn)數(shù)標(biāo)準(zhǔn),兩數(shù)都是負(fù)數(shù),選項(xiàng)B、D排除。(fl)的階碼為(10011001)2,尾數(shù)為1.001;(f2)的階碼為(01100001)2,尾數(shù)為1.1;(fl)的絕對值為1.001×226,(f2)的絕對值1.1×2-30,(fl)的絕對值比(f2)的絕對值大,負(fù)數(shù)真值大小相反,即(fl)的真值比(f2)的真值小,x<y,選A。(10)B解析:I式不恒成立,大的整數(shù)轉(zhuǎn)換成float可能會損失精度,題中i=785,值較小,表達(dá)式為真;II式也不恒成立,小數(shù)轉(zhuǎn)換成整數(shù)將損失精度,題中f為小數(shù),所以表達(dá)式不為真;II式恒成立;I式不恒成立,浮點(diǎn)數(shù)加法可能不滿足結(jié)合律,尤其是過大和過小的數(shù)相加會出現(xiàn)這種情況,題中給出的數(shù)對階后f的尾數(shù)有效位被舍去而變?yōu)?,因此d+f仍然為d,再減去d后結(jié)果為0,故IV結(jié)果不為真。(X)A解析:展開11001000000000000000000000000000H,將其轉(zhuǎn)換為對應(yīng)的float或int。如果是float,尾數(shù)是隱藏了的最高位1,數(shù)符為1表示負(fù)數(shù),階碼10010000=27+24=128+16,減去偏置值127后等于17,為-217;如果是int,帶符號補(bǔ)碼,為負(fù)數(shù),數(shù)值部分取反末位加1,值為0111000000000000000000000000000H,算出值為-7×227。答案為A。(X)A解析:-0.4375=-1.75×22,根據(jù)單精度浮點(diǎn)數(shù)格式,數(shù)符為1;階碼=-2+127=125,寫成8位二進(jìn)制數(shù)為01111101;尾數(shù)隱藏小數(shù)點(diǎn)前的1,剩下的0.75寫成二進(jìn)制數(shù)為0.11,所以尾數(shù)部分是1100.…0。該浮點(diǎn)數(shù)為1011111011100000000000000000000,對應(yīng)的十六進(jìn)制格式為BEE00000H。(X)A解析:80200000H=10000000001000000000000000000000B。根據(jù)IEEE754單精度浮點(diǎn)數(shù)格式,符號位=1,階碼為0,23位尾數(shù)為01000000000000000000000B。因?yàn)殡A碼為0,尾數(shù)部分不為0,所以為非規(guī)格化表示,所以尾數(shù)部分的形式為0.M不是1.M,同時(shí)指數(shù)部分是-126,而不是-127,則真值為-0.01×2-126=-2-128,正確答案為A選項(xiàng)。(X)C解析:32位整數(shù)表示范圍為

-231~231?1,單精度浮點(diǎn)數(shù)可以表示的連續(xù)整數(shù)區(qū)間為-224~224,雙精度浮點(diǎn)數(shù)可以表示的連續(xù)整數(shù)區(qū)間為-253~253,α最適合使用32位整數(shù)表示,不會發(fā)生溢出或者精度損失,而且整數(shù)運(yùn)算比浮點(diǎn)數(shù)運(yùn)算更快,更省空間,所以優(yōu)先使用32位整數(shù)而不是單精度浮點(diǎn)數(shù)。根據(jù)β的取值范圍,可以使用雙精度浮點(diǎn)數(shù)存儲。(11)C解析:設(shè)數(shù)據(jù)位為k,校驗(yàn)位的位數(shù)為r,校驗(yàn)碼長度為nk=8,r=44位。2.3回答下列問題。(1)為什么計(jì)算機(jī)中采用二進(jìn)制進(jìn)行數(shù)據(jù)表示和運(yùn)算?答:采用二進(jìn)制可以表示任何數(shù)據(jù)信息,而且二進(jìn)制數(shù)碼最少、容易與簡單的物理狀態(tài)對應(yīng)、運(yùn)算規(guī)則簡單,對算術(shù)邏輯運(yùn)算電路更容易實(shí)現(xiàn)。(2)價(jià)?答:需要增加奇偶校驗(yàn)組,也就是需要增加更多的冗余校驗(yàn)位,這樣會導(dǎo)致編碼效率降低;另外編解碼電路需要更多的異或門開銷。(3)為什么計(jì)算機(jī)中采用補(bǔ)碼表示帶符號的整數(shù)?答:計(jì)算機(jī)中的二進(jìn)制數(shù)據(jù)都有字長的限制,最高位進(jìn)位的位權(quán)值就是模數(shù),運(yùn)算結(jié)果超過模數(shù)的部分都會被自動(dòng)舍棄,屬于典型的有模運(yùn)算,非常適合采用補(bǔ)碼進(jìn)行表示和運(yùn)算。另外,補(bǔ)碼只有唯一的機(jī)器零,符號位可以直接參與運(yùn)算,運(yùn)算規(guī)則簡單;補(bǔ)碼減法可以利用加法實(shí)現(xiàn),這樣可簡化運(yùn)算器的設(shè)計(jì),所以計(jì)算機(jī)中普遍采用補(bǔ)碼表示有符號整數(shù)。(4)浮點(diǎn)數(shù)的表示范圍和精度分別由什么決定?答:浮點(diǎn)數(shù)的表示范圍由階碼的位數(shù)決定,精度由尾數(shù)的位數(shù)決定。尾數(shù)位數(shù)相同時(shí),階碼的位數(shù)越多,則數(shù)的表示范圍越大;階碼位數(shù)相同時(shí),尾碼位數(shù)越多,浮點(diǎn)數(shù)精度越高。(5)漢字輸入碼、機(jī)內(nèi)碼和字形碼在漢字處理過程中各有何作用?答:漢字輸入碼、機(jī)內(nèi)碼和字形碼分別用于漢字的輸入、漢字在計(jì)算機(jī)內(nèi)的處理以及漢字的顯示和輸出。具體來說,計(jì)算機(jī)要對漢字信息進(jìn)行處理,首先要將漢字轉(zhuǎn)換成計(jì)算機(jī)可以識別的二進(jìn)制形式并輸入計(jì)算機(jī),這是由漢字輸入碼完成的;漢字輸入計(jì)算機(jī)后,還需要轉(zhuǎn)換成內(nèi)碼才能被計(jì)算機(jī)處理,顯然,漢字內(nèi)碼也應(yīng)該是二進(jìn)制形式。如果需要顯示和輸出漢字,還要將漢字的內(nèi)碼轉(zhuǎn)換成字形碼。(6)在機(jī)內(nèi)碼中如何區(qū)分ASCII字符和漢字字符?答:GB2312中漢字兩個(gè)字節(jié)的最高位都為1,而每個(gè)ASCII字符中每個(gè)字節(jié)的最高位為0,這樣就能區(qū)別一個(gè)機(jī)內(nèi)碼到底對應(yīng)一個(gè)漢字還是兩個(gè)ASCII字符。(7)為什么現(xiàn)代處理器中又開始支持十進(jìn)制浮點(diǎn)數(shù)運(yùn)算?答:大多數(shù)十進(jìn)制浮點(diǎn)數(shù)轉(zhuǎn)換成二進(jìn)制時(shí)無法精確表示,會給運(yùn)算帶來誤差問題,傳統(tǒng)方法多采用十進(jìn)制運(yùn)算庫的軟件方式解決該問題,而在CPU中支持十進(jìn)制浮點(diǎn)數(shù)可提升十進(jìn)制浮點(diǎn)運(yùn)算速度,從根本上解決誤差問題。(8)如何識別浮點(diǎn)數(shù)的正負(fù)?浮點(diǎn)數(shù)能表示的數(shù)值范圍和數(shù)值的精度取決于什么?答:數(shù)。(9)浮點(diǎn)數(shù)有兩個(gè)0會帶來什么問題?答:一方面會帶來運(yùn)算規(guī)則的不統(tǒng)一;另一方面會給硬件設(shè)計(jì)增加復(fù)雜性。比如,在進(jìn)行相等比較的時(shí)候不能通過直接比較機(jī)器碼相等來進(jìn)行判斷。(10)簡述CRC校驗(yàn)碼的檢錯(cuò)原理,CRC能糾錯(cuò)嗎?答:發(fā)送部件將某信息的CRC碼傳送至接收部件,接收部件收到CRC碼后,仍用約定的生成多項(xiàng)式G(x)去除,若余數(shù)為0,表示數(shù)據(jù)高概率正確;若余數(shù)不為0,表示出錯(cuò),再由余數(shù)的值來確定哪一位出錯(cuò),從而加以糾正。由于CRC碼不同位出錯(cuò)的余數(shù)均不相同,因此用戶可以根據(jù)余數(shù)的值直接確定出錯(cuò)位,但由于CRC編碼檢錯(cuò)能力優(yōu)異,因此它主要用于檢錯(cuò)。2.4解:序號真值原碼反碼補(bǔ)碼100.00…00.00…00.00…0201.00…01.11…l0.00…030.101010.101010.101010.1010140.101011.101011.010101.0101150.111110.111110.111110.1111160.111111.111111.000001.0000170.100001.100001.011111.1000080.100000.100000.100000.100002.5解:補(bǔ)碼真值補(bǔ)碼真值[x]補(bǔ)=0.10010x=0.10010[x]補(bǔ)=1.10010x=0.01110[x]補(bǔ)=1.11111x=0.00001[x]補(bǔ)=1.00000x=1.00000[x]補(bǔ)=0.10001x=0.10001[x]補(bǔ)=1.00001x=0.111112.6解:輸出結(jié)果如下。x=4294967295=-1u=2147483648=-2147483648(1)%u表示以無符號形式輸出,%d表示輸出真值。(2)在計(jì)算機(jī)中整數(shù)以補(bǔ)碼形式表示和存儲。(3)x=-1,先求-的32位補(bǔ)碼,機(jī)器碼是232-1=4294967295,所以第一行輸出分別是機(jī)器碼和真值。(4)u=231是一個(gè)無符號數(shù),無溢出,由于首位為1,%u輸出機(jī)器碼就是2147483648;%d輸出是真值,將該機(jī)器碼按補(bǔ)碼轉(zhuǎn)換成真值,所以是-2147483648。2.7解:(1)16位無符號數(shù)為0~1111111111111111,即0~216-1=65535。(2)16位原碼定點(diǎn)小數(shù)為1.111111111111111~0.111111111111111,即-(1-2-15)~1-2-15。(3)16位補(bǔ)碼定點(diǎn)小數(shù)為1.000000000000000~0.111111111111111,即-1~1-2-15。(4)16位補(bǔ)碼定點(diǎn)整數(shù)為1000000000000000~0111111111111111,即-215~215-1。2.8解:8位補(bǔ)碼的表示范圍為128~+127,模為最高位x0進(jìn)位位的權(quán)值,所以模為256。2.9解:(1)首先分別將整數(shù)和分?jǐn)?shù)部分轉(zhuǎn)換成二進(jìn)制數(shù)如下。=(-110.101)2移動(dòng)小數(shù)點(diǎn),使其變成1.M的形式:-110.101=-1.10101×22。于是得到:S=1,e=2,E=2+127=10000001,M=10101000000000000000000最后得到32位浮點(diǎn)數(shù)的二進(jìn)制存儲格式為:11000000110101000000000000000000=(C0D40000)16(2)首先分別將整數(shù)和分?jǐn)?shù)部分轉(zhuǎn)換成二進(jìn)制數(shù)如下。3.1415927=11.00100100001111110110110移動(dòng)小數(shù)點(diǎn),使其變成1.M的形式:11.00100100001111110110110=1.10010010000111111011011×2。于是得到:S=0,e=1,E=1+127=10000000,M=10010010000111111011011最后得到32位浮點(diǎn)數(shù)的二進(jìn)制存儲格式為:01000000010010010000111111011011=(40490FDB)16(3)首先將64000轉(zhuǎn)換成二進(jìn)制數(shù)如下。64000=(1111101000000000)2移動(dòng)小數(shù)點(diǎn),使其變成1.M的形式:1111101000000000=1.111101000000000×215。于是得到:S=0,e=15,E=15+127=10001110,M=11110100000000000000000最后得到32位浮點(diǎn)數(shù)的二進(jìn)制存儲格式為:01000111011110100000000000000000=(477A0000)162.10解:43940000H=(01000011100101000000000000000000)2S=0,E=(10000111)2-127=8,M=1.00101所以表示數(shù)為1.00101×28,對應(yīng)的十進(jìn)制數(shù)為296。2.11解:最大數(shù)和最小數(shù)分別位于數(shù)軸兩端,為規(guī)格化數(shù)。f=(-1)s×2E-127×1.M,fmax=2127×(2-2-23),fmin=-2127×(2-2-23)2.12解:(1)有可能。例如N1=23×0.1,N2=24×0.001,此時(shí)m<n,卻有N1>N2。(2)不可能。因?yàn)橐?guī)格化浮點(diǎn)數(shù)要求尾數(shù)的最高位為非0數(shù)碼,即當(dāng)尾數(shù)的值不為0時(shí),其絕對值應(yīng)大于或等于(1/2)10,那么M1和M2都必須是0.1××…×的形式。這時(shí),若m<n,則一定有N1<N2。2.13解: 類型階碼尾碼真值最大正數(shù)0110.11111123×(12-6)最小正數(shù)1000.0000012-4×2-6最大負(fù)數(shù)1001.111111-2-4×2-6最小負(fù)數(shù)0111.000000-232.14解:(1)57/128=(0.0111001)2,記x=0.0111001,則[x]補(bǔ)=0.0111001,規(guī)格化:[x]補(bǔ)=0.111001×2-1階碼補(bǔ)碼為1111,尾數(shù)補(bǔ)碼為0111001000表示成浮點(diǎn)規(guī)格化數(shù):1111,0111001000(2)-69/128=(-0.1000101)2,記x=-0.1000101,則[x]補(bǔ)=1.0111011,無須規(guī)格化,階碼為0000,尾數(shù)為1011101100表示成浮點(diǎn)規(guī)格化數(shù):0000,10111011002.15解:奇校驗(yàn)碼為010110110;偶校驗(yàn)碼為010110111。如果接收方收到的檢驗(yàn)碼為010110100(只有1位出錯(cuò),最后一個(gè)0是校驗(yàn)位),采用奇校驗(yàn),接收方計(jì)算檢錯(cuò)位G=1,表明數(shù)據(jù)一定發(fā)生了錯(cuò)誤;采用偶校驗(yàn),接收方計(jì)算檢錯(cuò)位G=0,表明數(shù)據(jù)高概率正確。這里實(shí)際發(fā)生了雙位錯(cuò),是誤判。2.16解:X1、X2、X3、X4處的比特分別為1、1、1、0;X5、X6、X7、X8處的比特分別為1、0、0、0;X9、X10、X11、X12處的比特分別為1、0、1、1;Y1和Y2處的字符分別為I和7。具體解答思路是查詢ASCII碼表,并利用交叉奇/偶校驗(yàn)原理來確定各個(gè)X值,再查詢ASCII碼表獲知Y1和Y2是什么字符。2.17解:被校驗(yàn)位有8位,設(shè)校驗(yàn)位有r位,因?yàn)?+r≤2r-1,所以r=4。具體分組關(guān)系如下表。海明碼H12H11H10H9H8H7H6H5H4H3H2H1檢錯(cuò)碼/位置110010111010100110000111011001010100001100100001映射關(guān)系0/D81/D71/D60/D5P41/D41/D31/D2P30/D1P2P1G1校驗(yàn)組√√√√√√G2校驗(yàn)組√√√√√√G3校驗(yàn)組√√√√√G4校驗(yàn)組√√√√√海明碼為D8D7D6D5P4D4D3D2P3D1P2P1=011001111001=0x679。接收方接收到的有效位只有D1位出錯(cuò),則接收到的海明編碼為011001111101。檢錯(cuò)碼,如果假設(shè)只有1位錯(cuò),則是海明碼H3出錯(cuò),也就是D1出錯(cuò),將對應(yīng)位取反即可。2.18解:做模2除法,所以循環(huán)碼為1001011。若接收到的數(shù)據(jù)信息x'=1101,,將余數(shù)011繼續(xù)補(bǔ)0做除法,經(jīng)過兩次運(yùn)算后余數(shù)為001,所以是第2位出錯(cuò),將左側(cè)起第2位的取反即可。此外,也可以通過查表法快速定位出錯(cuò)位置。10.3第3章習(xí)題解析3.2選擇題。(1)D解析:采用排除法,y真值為-9,采用16位補(bǔ)碼存儲,所以機(jī)器碼=216-9=FFF7H,x+y的值顯然是正數(shù),所以選D。(2)B解析:本題重點(diǎn)考查補(bǔ)碼的表示范圍,而不是補(bǔ)碼乘法運(yùn)算,并不需要全部計(jì)算。8位補(bǔ)碼范圍為-128~+127。將4個(gè)數(shù)全部轉(zhuǎn)換為真值:r1=-2,r2=-14,r3=-112,r4=-8,得r2×r3=1568,遠(yuǎn)超出了表示范圍,發(fā)生溢出,所以選B。(3)A解析:將x左移一位,y右移一位,兩個(gè)數(shù)的補(bǔ)碼相加,求得機(jī)器數(shù)為11000000,答案選擇A。(4)C解析:x=FFFFFFDFH,補(bǔ)碼符號位為1,可以用掃描法或逐位取反并末位加1的方式求真值,求得x=-33;y=00000041H,符號位為0,真值等于機(jī)器碼,因此y=65。x-y直接利用補(bǔ)碼減法準(zhǔn)則[x]補(bǔ)-[y]補(bǔ)=[x]補(bǔ)+[-y]補(bǔ),[-y]補(bǔ)可將y連同符號位逐位取反并末位加1,計(jì)算結(jié)果為FFFFFF9EH。(X)B解析:int類型在計(jì)算機(jī)中以補(bǔ)碼形式表示,因此,x(10)的二進(jìn)制表示為00000000000000000000000000001010B,y(-20)的二進(jìn)制表示為11111111111111111111111111101100。CF表示無符號整數(shù)運(yùn)算時(shí)的進(jìn)位/借位,因此計(jì)算CF的時(shí)候,需要把和x和y當(dāng)成無符號數(shù)進(jìn)行計(jì)算,因?yàn)閤不夠減y,所以CF=1。計(jì)算OF的時(shí)候,需要把和x和y當(dāng)成有符號數(shù)進(jìn)行計(jì)算,x-y=30,不超過int的最大值,不會產(chǎn)生溢出,所以O(shè)F=0。所以答案為B。(5)B解析:邏輯左移和右移空位都0,且所有數(shù)字參與移動(dòng);算術(shù)移位符號位不變,右移空位補(bǔ)符號位,根據(jù)該規(guī)則應(yīng)選B。(X)D解析:兩個(gè)變量的乘法可以通過編譯為移位及加法等指令的循環(huán)實(shí)現(xiàn)。(6)D解析:X的浮點(diǎn)數(shù)格式為00111,0011101,Y的浮點(diǎn)數(shù)格式為00101,0010100。根據(jù)浮點(diǎn)數(shù)的加法步驟進(jìn)行運(yùn)算。①對階。X、Y階碼相減,即00111-00101=00111+11011=00010,可知X的階碼比Y的階碼大2。小階向大階看齊,將Y的階碼加2,尾數(shù)右移2位,將Y變?yōu)?0111,0000101。②尾數(shù)相加。尾數(shù)相加,即0011101+0000101=0100010。③規(guī)01。④判斷溢出。階碼符號位為01,運(yùn)算發(fā)生溢出。選D。(7)D解析:對階是小階向大階看齊,不會引起階碼溢出,I正確;右規(guī)和尾數(shù)舍入過程,階碼加1可能上溢,II正確;左規(guī)階碼做減法,可能引起階碼下溢,III正確;尾數(shù)溢出可以進(jìn)行規(guī)格化處理,結(jié)果不一定溢出,IV正確。3.3回答下列問題。(1)為什么采用并行進(jìn)位能提高加法器的運(yùn)算速度?答:由于并行進(jìn)位電路提前產(chǎn)生了各位運(yùn)算所需的進(jìn)位信號,各位求和運(yùn)算不再依賴于低位運(yùn)算結(jié)果,求和運(yùn)算可以并行運(yùn)算,從而提升運(yùn)算速度。(2)如何判斷浮點(diǎn)數(shù)運(yùn)算結(jié)果是否發(fā)生溢出?答:階碼是否溢出為浮點(diǎn)溢出判斷標(biāo)志。對于采用雙符號位的階碼而言,當(dāng)雙符號位不同時(shí)表示浮點(diǎn)數(shù)發(fā)生溢出,否則表示未發(fā)生溢出。(3)如化?答:假×的形式時(shí),結(jié)果就不是規(guī)格化數(shù),應(yīng)進(jìn)行規(guī)格化處理。當(dāng)尾數(shù)的符號位為01或10時(shí),運(yùn)算結(jié)果上溢,需要向右規(guī)格化,且只需將尾數(shù)右移一位,同時(shí)將結(jié)果的階碼值加1。當(dāng)尾數(shù)運(yùn)算結(jié)果為11.1×××或00.0×××?xí)r,需要左移規(guī)格化,而且左移次數(shù)不固定與運(yùn)算結(jié)果的形式有關(guān)。左規(guī)時(shí)尾數(shù)連同符號位一起左移,直到尾數(shù)部分出現(xiàn)11.0或00.1的形式為止;左規(guī)時(shí)階碼做減法,左移多少位減多少。(4)為什么陣列除法器中能用CAS的進(jìn)位/借位控制端作為上商的控制信號?答:陣列除法器利用不恢復(fù)余數(shù)的除法,當(dāng)商上1的時(shí)候,會產(chǎn)生進(jìn)位;當(dāng)商上0時(shí),不產(chǎn)生進(jìn)位。進(jìn)位信號與上商信號正好相同,所以可以用CAS的進(jìn)位/借位控制作為上商的控制信號。(5)移位運(yùn)算和乘法及除法運(yùn)算有何關(guān)系?答:移位運(yùn)算是乘除法運(yùn)算中的基本運(yùn)算。3.4已知x和y,用變形補(bǔ)碼計(jì)算x+y,并判斷結(jié)果是否溢出。(1)x=0.11010,y=0.101110。(2)x=0.11101,y=-0.10100。(3)x=-0.10111,y=-0.11000。

解:(1)[x]補(bǔ)=00.11010,[y]補(bǔ)=00.101110,[x+y]補(bǔ)=01.10001,正溢出。(2)[x]補(bǔ)=00.11101,[y]補(bǔ)=11.01100,[x+y]補(bǔ)=00.01001,未溢出。(3)[x]補(bǔ)=11.01001,[y]補(bǔ)=11.01000,[x+y]補(bǔ)=10.10001,負(fù)溢出。3.5已知x和y,用變形補(bǔ)碼計(jì)算x-y,并判斷結(jié)果是否溢出。(1)x=0.11011,y=0.11101。(2)x=0.10111,y=0.11110。(3)x=-0.11111,y=-0.11001。解:(1)[x]補(bǔ)=00.11011,[-y]補(bǔ)=11.00011,[x-y]補(bǔ)=11.11110,未溢出。(2)[x]補(bǔ)=00.10111,[-y]補(bǔ)=11.00010,[x-y]補(bǔ)=11.11001,未溢出。(3)[x]補(bǔ)=11.00001,[-y]補(bǔ)=00.11001,[x-y]補(bǔ)=11.11010,未溢出。3.6解:(1)x×y=-0.1110000011(2)x×y=0.0100011110建議符號位采用雙符號,右移規(guī)則為邏輯右移。中間運(yùn)算可能產(chǎn)生溢出,邏輯右移后可確保結(jié)果正常。3.7解:(1)[x×y]補(bǔ)=1.1110111110(2)[x×y]補(bǔ)=0.001011110010建議符號位采用雙符號,右移規(guī)則為算術(shù)右移。3.8解:(1)x÷y=0.11000,余數(shù)r=0.11×2-5。注意左移運(yùn)算可能產(chǎn)生溢出,最后一步余數(shù)為負(fù)數(shù),仍然需要恢復(fù)余數(shù)。(2)x=0.10101,y=0.11000[y]補(bǔ)=00.11000,[y]補(bǔ)=11.01000被除數(shù)/余數(shù)上商位說明00.10101+[y]補(bǔ)11.01000(xy)比較=11.111010r0<0,商上0←11.11010左移一位+[y]補(bǔ)00.11000余數(shù)為負(fù),加y比較=00.100100.1r1>0,商上1←01.00100左移一位+[y]補(bǔ)11.01000余數(shù)為正,減y比較=00.011000.11r2>0,商上1←00.11000左移一位+[y]補(bǔ)11.01000余數(shù)為正,減y比較=00.000000.111r3=0,商上1,運(yùn)算結(jié)束x÷y=0.111,余數(shù)r=0(注意余數(shù)為0時(shí),表示整除應(yīng)停止運(yùn)算)。3.9解:(1)[x]補(bǔ)=00011,00100100,[y]補(bǔ)=00010,11100110(a)對階。階差[E]補(bǔ)=[Ex]補(bǔ)+Ey]補(bǔ)=00001,階差為1。將[y]補(bǔ)尾數(shù)右移一位,同時(shí)階碼加1,則[y]補(bǔ)=00011,11110011(b)尾數(shù)相加[x]補(bǔ)+[y]補(bǔ)=00011,00010111,尾數(shù)為00010111。(c)尾數(shù)規(guī)格化。由于尾數(shù)符號位跟最高有效位相同,需要左規(guī)一位,階碼減1,因此[x]補(bǔ)+[y]補(bǔ)=00010,00101110。(d)無須舍入,階碼正常,浮點(diǎn)運(yùn)算無溢出。[x]補(bǔ)+[y]補(bǔ)=00010,00101110(2)[x]補(bǔ)=11011,11011110,[y]補(bǔ)=11100,11101010(a)對階。階差[E]補(bǔ)=[Ex]補(bǔ)+[-Ey]補(bǔ)=1101111100=11011+00100=11111,階差為1。將[x]補(bǔ)尾數(shù)右移一位,同時(shí)階碼加1,則[x]補(bǔ)=11100,11101111(b)尾數(shù)相加[x]補(bǔ)+[y]補(bǔ)=11100,11011001。(c)尾數(shù)規(guī)格化。由于尾數(shù)符號位跟最高有效位不同,符號位正常,因此無須規(guī)格化。(d)無須舍入,無溢出。[x]補(bǔ)+[y]補(bǔ)=11100,110110013.10解:(1)0.625=(0.101)2=(00111111001000000000000000000000)212.25=(1100.01)2=(11000001010001000000000000000000)2(a)對階。階差[E]補(bǔ)=[Ex]補(bǔ)+[Ey]補(bǔ)=0111111010000010=00000100=4。將0.625的尾數(shù)右移4位,考慮隱藏位則尾數(shù)為0.000101。(b)尾數(shù)計(jì)算0.000101+(1.100010)=1.011101。(c)結(jié)果規(guī)格化。尾數(shù)符合1.X的形式,無須規(guī)格化。(d)舍入處理、溢出判斷。尾數(shù)無須舍入,階碼正常,無溢出,則0.625+(12.25)=(11000001001110100000000000000000)2=(C13A0000)16(2)0.625=(0.101)2=(00111111001000000000000000000000)212.25=(1100.01)2=(11000001010001000000000000000000)2

(a)對階。階差[E]補(bǔ)=[Ex]補(bǔ)+[Ey]補(bǔ)=0111111010000010=00000100=4。將0.625的尾數(shù)右移4位,考慮隱藏位則尾數(shù)為0.000101。(b)尾數(shù)計(jì)算0.000101(1.100010)=1.100111。(c)結(jié)果規(guī)格化。尾數(shù)符合1.X的形式,無須規(guī)格化。(d)舍入處理、溢出判斷。尾數(shù)無須舍入,階碼正常,無溢出,則0.625(12.25)=(01000001010011100000000000000000)2=(414E0000)163.11解:(1)已知分配的都是8位寄存器,x和y初始定義為無符號整數(shù)。x=134=128+6=(10000110)2,因此R1中的內(nèi)容為x的機(jī)器碼=86H。y=246=2559=(11110110)2,所以y的機(jī)器數(shù)為(11110110)2。z1=xy=1000011011110110=10000110+00001010=10010000=90H,因此R5中的內(nèi)容為90H。z2=x+y=10000110+11110110=(1)01111100=7CH(括號中為加法器的進(jìn)位),所以R6中的內(nèi)容為7CH。(2)m的機(jī)器數(shù)與x的機(jī)器數(shù)相同,皆為86H=(1000

0110)2,但解釋為有符號整數(shù)m(用補(bǔ)碼表示)時(shí),其值為(1111010)2=122。mn的機(jī)器數(shù)與xy的機(jī)器數(shù)相同,皆為90H=(1001

0000)2,但解釋為有符號整數(shù)k1(用補(bǔ)碼表示)時(shí),其值為(1110000)2=112。(3)能。n位加法器實(shí)現(xiàn)的是模2n無符號整數(shù)加法運(yùn)算。對于無符號整數(shù)a和b,a+b可以直接用加法器實(shí)現(xiàn),而ab可用a+b的補(bǔ)數(shù)實(shí)現(xiàn),ab=a+[b]補(bǔ)(mod2n),所以n位無符號整數(shù)加減運(yùn)算都可在n位加法器中實(shí)現(xiàn)。有符號補(bǔ)碼加減法運(yùn)算中符號位直接參與運(yùn)算,可直接復(fù)用無符號加減法電路。(4)在計(jì)算機(jī)中,如果符號位進(jìn)位Cf和最高數(shù)據(jù)位進(jìn)位Cd不同,則結(jié)果溢出。最后一條語句執(zhí)行時(shí)會發(fā)生溢出。因?yàn)?0000110+11110110=(1)01111100,括號中為符號位進(jìn)位Cf=1,最高數(shù)據(jù)位進(jìn)位Cd=0,根據(jù)上述溢出判斷規(guī)則可知結(jié)果溢出。3.12答:3.12答:《計(jì)算機(jī)組成原理(微課版)》圖3.2的(b)方案中一個(gè)全加器會增加一個(gè)邏輯或門的硬件成本。串行加法器如采用(b)方案后延遲如下圖所示,關(guān)鍵延遲相比《計(jì)算機(jī)組成原理(微課版)》圖3.2的(a)方案少3T,硬件成本增加n個(gè)邏輯或門。串行可控加減法電路如果采用(b)方案,則時(shí)間延遲如下圖所示,相比原方案少3T,同樣硬件成本增加n個(gè)邏輯或門。4位先行進(jìn)位電路無任何變化,4位快速加法器中與門、異或門電路需要增加n個(gè)或門用于計(jì)算新的P,生成P、G信號只需要1級門電路延遲,異或門陣列仍然保留用于求和運(yùn)算,快速加法器時(shí)間延遲為6T、進(jìn)位信號延遲為3T,相對原電路少2T。1位組內(nèi)并行、組間串行加法器的時(shí)間延遲分析如下圖所示,關(guān)鍵延遲相比(a)方案少2T,硬件成本增加16個(gè)邏輯或門。1位組內(nèi)并行、組間并行加法器的時(shí)間延遲分析如下圖所示,關(guān)鍵延遲相比(a)方案少2T,硬件成本增加16個(gè)邏輯或門。綜上所述,相比(a)方案,(b)方案在增加n個(gè)邏輯門的基礎(chǔ)上,可提升性能。用戶可根據(jù)需要選擇不同的方案。10.4第4章習(xí)題解析4.2選擇題。(1)A解析:ROM為只讀存儲器,不能用作cache,因此III錯(cuò)誤。DRAM需要刷新,而ROM不需要刷新,因此IV錯(cuò)誤。(X)D解析:根據(jù)按邊界對齊和小端方式的定義,給出變量a的存放方式如下:...FE00...FE01...FE02...FE03...FE04...FE05...FE06...FE07x1(LSB)x1(MSB)00003412(2)A解析:4MB×8位=222×8,需要22根地址線,而DRAM采用地址復(fù)用技術(shù),行、列地址分開傳送,地址線數(shù)為22/2=11根,所以該DRAM芯片的地址引腳和數(shù)據(jù)引腳總數(shù)為11+8=19根,選A。(3)D解析:ROM芯片數(shù)=(4KB×8)/(2KB×8)=2片,RAM區(qū)域大小為644=60KB,RAM芯片數(shù)=(60KB×8)/(4KB×4)=30片。(4)D解析:用2KB×4位的芯片組成一個(gè)8KB×8位存儲器,需要地址線13根,采用字位擴(kuò)展方式,對高2位地址譯碼進(jìn)行片選。0B1FH=(0

1011

0001

1111)2,這個(gè)地址所在芯片的高2位應(yīng)該是01不變,最小地址是后續(xù)11位全零,所以最小地址是(0

1000

00000000)2=0800H。(X)C解析:(X)C解析:(X)C解析:內(nèi)存條的容量=8×8192×8192×8bit=512MB,A正確。存儲器總線寬度64=8×8bit,而每個(gè)芯片一次只能傳輸8bit,需要8體多模塊交叉編址才能實(shí)現(xiàn),B正確。512MB=219B,按字節(jié)編址,需要19根地址線,考慮行列地址復(fù)用技術(shù),地址引腳10位即可,C錯(cuò)誤。芯片內(nèi)行數(shù)是8192,一行的大小是8192×8bit,行緩沖長度就是一行的大小,D正確。(5)C解析:DRAM采用是行列地址線復(fù)用技術(shù),行列數(shù)差值不要太大,這樣可以減少引腳開銷;另外,為了減小刷新開銷,應(yīng)選擇行數(shù)較少的。答案為C。(6)B解析:由題目知,計(jì)算機(jī)采用3通道存儲器總線,存儲器總線的工作頻率為1333MHz、總線寬度為64位,存儲器總線的總帶寬為3×8×1333MB/s,約為32GB/s,所以選B。(7)D解析:4體交叉編址存儲器包括4個(gè)存儲器模塊,用低2位地址進(jìn)行片選,模塊序號=訪存地址%存儲器交叉模塊數(shù),這里每個(gè)訪存地址對應(yīng)的存儲模塊序號如下表所示。訪存地址800580068007800880018002800380048000模塊序號123012300當(dāng)相鄰的4次訪問中出現(xiàn)相同存儲模塊時(shí)會發(fā)生沖突。從上表可知8004和8000對應(yīng)的模塊號都0,這兩次的訪問出現(xiàn)在同一模塊內(nèi)且在相鄰的訪問請求中,滿足發(fā)生沖突的條件。(8)B解析:DRAM使用電容存儲,必須隔一段時(shí)間刷新一次補(bǔ)充電荷,否則存儲的信息就會丟失。SDRAM表示同步動(dòng)態(tài)隨機(jī)存儲器,是DRAM的一種,所以選B。(9)B解析:EPROM、DRAM、SRAM都屬于半導(dǎo)體存儲器,采用隨機(jī)存取方式存取,也就是存取時(shí)間與存儲單元的物理位置無關(guān)。而CDROM即光盤,采用順序存取方式。(10)A解析:閃存寫入時(shí)必須先擦除原有數(shù)據(jù),因此寫速度比讀速度要慢。(11)A某C語言程序段如下:for(i=0;i<=9;i++){temp=1;for(j=0;j<=i;j++)temp*=a[j];sum+=temp;}解析:時(shí)間局部性是指剛剛訪問的數(shù)據(jù)可能在不久的將來再被訪問??臻g局部性是指一個(gè)存儲單元被訪問,它附近的存儲單元也很快被訪問。程序中對循環(huán)指令的訪問具有時(shí)間局部性,對數(shù)組a的訪問具有空間局部性,選A。(12)C解析:cache共有16塊,采用2路組相聯(lián),因此共分為8組,組索引字段應(yīng)該為3位。每個(gè)主存塊大小為32B,因此塊內(nèi)偏移地址為5位,129號單元對應(yīng)主存地址如下圖所示,組索引字段為100,應(yīng)該映射到第4組的任意字塊中。(注意,其他教材上還有另外一種組相聯(lián)映射方案,此題可能還有其他答案)(13)A/C解析:此題比較特殊,主存地址按字編址,cach塊大小就是1個(gè)字,主存地址中沒有塊內(nèi)偏移字段,cache分為2組,每組2行,主存地址最低位為cache組索引,具體訪問序列如下表所示。訪問序列0482068648第0組塊00088008844塊14422666*68第1組塊2塊3訪問情況載入載入替換替換替換替換替換命中替換替換注:還有一種組相聯(lián)映射方式本教材未講,該方式對應(yīng)答案為C。(14)C解析:直接映射的主存地址結(jié)構(gòu)如下。按字節(jié)編址,塊大小為4×32位=16B=24B,塊內(nèi)偏移地址為4位。cache的存儲容量為4字,則cache共有4KB×4B/16B=1K=210行,cache行索引字段占10位;標(biāo)記字段占32104=18位。cache的總?cè)萘?cache行大小×行數(shù),一個(gè)cache行包括數(shù)據(jù)塊副本、有效位、標(biāo)記位、dirt位(寫回標(biāo)志)和替換算法控制位(題目未強(qiáng)調(diào),可以忽略)。因此,cach總?cè)萘?(16×8+1+18+1)×1K=148K位。(X)A解析:275位。(X)A解析:(15)D解析:把指令cache與數(shù)據(jù)cache分離后,可以充分利用指令和數(shù)據(jù)不同的程序局部性,提升命中率,但主要目的是避免指令流水線中取指令和取數(shù)的資源沖突,即減少了指令流水線的沖突。(X)B解析:MMU負(fù)責(zé)將虛擬地址轉(zhuǎn)化為物理地址,所以會檢測訪問越權(quán)、頁面缺失、TLB缺失等事件。Cache缺失是在CPU訪問主存數(shù)據(jù)檢測的,訪問主存的前提是有物理地址,所以該過程是在MMU完成地址轉(zhuǎn)換之后。(X)D解析:主存-外存層次以頁為基本單位的進(jìn)行數(shù)據(jù)交換。由于外存訪問速度較慢(通常在毫秒量級),若采用直接映射方式,即使主存尚未滿載,多個(gè)虛擬頁仍可能被映射至同一物理頁框,從而導(dǎo)致頻繁的頁面交換操作,嚴(yán)重影響系統(tǒng)性能。為此,主存-外存層次普遍采用全相聯(lián)映射策略,該方案具有較高命中率,主存滿載之前可避免不必要的頁面交換,從而顯著提升存儲系統(tǒng)整體性能。(X)C解析:頁大小為4KB=212B,按字節(jié)編址,故頁內(nèi)地址為12位。虛擬地址空間大小為4GB=232B,故虛擬地址共32位,其中低12位為頁內(nèi)偏移地址VPO,高20位為虛頁號VPN。虛擬地址00082840H,虛頁號為高20位即00082H(頁內(nèi)偏移地址為低12位即840H),82H對應(yīng)的十進(jìn)制數(shù)為130,查頁表命中,且存在位為1,對應(yīng)頁框號為018H。將查找到的頁框號018H和頁內(nèi)偏移地址840H拼接,得到主存地址為018840H。(16)B解析:上述指令的執(zhí)行過程可劃分為取數(shù)、運(yùn)算和寫回過程,取數(shù)時(shí)讀取xaddr可能由于TLB命中、cache命中不需要訪問主存,而寫直通方式需要把數(shù)據(jù)同時(shí)寫入cache和主存,因此至少訪問l次。(17)D解析:參考《計(jì)算機(jī)組成原理(微課版)》第14638頁。(18)A解析:按字節(jié)編址,頁面大小為4KB,頁內(nèi)地址共12位。地址空間大小為4GB,虛擬地址共32位,前20位為頁號。03FFF180H03FFFH180H,根據(jù)題目中給出03FFFH0153H0153180H。(X)C解析:虛擬地址為32位,主存地址為30位,頁大小為1KB,頁內(nèi)偏移地址10位,因此虛擬頁號為32-10=22位,物理頁號為30-10=20位。TLB共有32個(gè)表項(xiàng),采用4路組相聯(lián)映射方式。因此,TLB共有32/4=8組,每組有4路,組索引字段為log28=3位。標(biāo)記字段位數(shù)=虛擬頁號位數(shù)-索引字段位數(shù)=22-3=19位。。(19)D解析:當(dāng)CPU要訪問的頁面不在內(nèi)存中時(shí),CPU檢測到異常便會產(chǎn)生缺頁異常,請求操作系統(tǒng)將所缺的頁調(diào)入內(nèi)存。缺頁處理由缺頁中斷處理程序完成,根據(jù)發(fā)生缺頁故障的地址從外存讀入所缺失的頁,缺頁處理完成后回到發(fā)生缺頁的指令繼續(xù)執(zhí)行,因此D選項(xiàng)描述不正確。(X)D解析:CPU內(nèi)部Cache和TLB均由SRAM組成,DRAM需要不斷刷新,性能偏低,不適合構(gòu)成Cache和TLB。4.3簡答題。(1)計(jì)算機(jī)系統(tǒng)中采用層次化存儲體系結(jié)構(gòu)的目的是什么?答:速度快、容量大、成本低的理想存儲器還不存在,但層次化存儲體系結(jié)構(gòu)可以利用程序局部性的原理,從系統(tǒng)級角度將速度、容量、成本各異的存儲器有機(jī)組合在一起,全方位優(yōu)化存儲系統(tǒng)各項(xiàng)性能指標(biāo)。(2)為什么在存儲器芯片中設(shè)置片選輸入端?答:存儲擴(kuò)展時(shí)需要使用多個(gè)存儲芯片,設(shè)置片選輸入端方便選擇正確的存儲芯片來進(jìn)行數(shù)據(jù)訪問操作。(3)動(dòng)態(tài)MOS存儲器為什么要刷新?如何刷新?答:。(4)試述多體交叉存儲器的設(shè)計(jì)思想和實(shí)現(xiàn)方法。答:多體交叉存儲器由多個(gè)存儲模塊構(gòu)成,這些模塊的容量和存取速度相同。根據(jù)對多個(gè)模塊編址方式的不同,可分為高位多體交叉和低位多體交叉兩種。高位多體交叉主要用于存儲容量擴(kuò)展,存儲地址高位譯碼片選存儲模塊,同一存儲體內(nèi)的地址是連續(xù)的;低位多體交叉則采用低位地址譯碼片選模塊,同一存儲體內(nèi)的地址不相鄰,相鄰地址處在不同存儲體中,CPU可同時(shí)啟動(dòng)多個(gè)存儲體并實(shí)現(xiàn)并行訪問。(5)為什么說cache對程序員是透明的?答:因?yàn)樵诔绦騿T看來數(shù)據(jù)是在寄存器、內(nèi)存、輔存之間進(jìn)行交換的,程序員感覺不到cache的存在,也無法操控cache。(6)直接相聯(lián)映射方式下為什么不需要使用替換算法?答:。(7)為什么要考慮cache的一致性?答:正常情況下,cach中的數(shù)據(jù)是主存數(shù)據(jù)的副本,如果采用寫回策略,可能造成cache中的數(shù)據(jù)副本與主存中數(shù)據(jù)不一致;另外,多核處理器中不同的CPU核使用不同的cache也會帶來不一致的問題。數(shù)據(jù)不一致性可能導(dǎo)致程序結(jié)果不正確,甚至數(shù)據(jù)丟失,因此必須考慮并設(shè)法保證cache的一致性。(8)替換算法有哪幾種?它們各有何優(yōu)缺點(diǎn)?答:先進(jìn)先出(FIFO)算法替換最先被載入cache行,其算法系統(tǒng)開銷較小,但無法利用程序局部性,cache命中率不高。最不經(jīng)常使用(LFU)算法替換歷史訪問次數(shù)最少的cache行,每個(gè)cache行需要設(shè)置一個(gè)計(jì)數(shù)器記錄訪問次數(shù)。相FIFO算法,其命中率較高,但過去訪問頻繁的冷數(shù)據(jù)有可能因?yàn)闅v史訪問次數(shù)高無法被替換,導(dǎo)致cache命中率下降。近期最少使用(LRU)算法替換近期最久未訪問cache行,每行設(shè)置一個(gè)計(jì)數(shù)器,cache每命中一次,命中行計(jì)數(shù)器清零,其他各行計(jì)數(shù)器1。當(dāng)需要替換時(shí),選擇計(jì)數(shù)值最大的行換出。相比LFU,其性能更優(yōu)。隨機(jī)替換算法隨機(jī)替換cache行,無法利用程序局部性,命中率一般,但其硬件成本最低。4.4解:該存儲器的尋址空間為32K×8位/16位=16KB=214B,因此地址寄存器的位數(shù)為14位,數(shù)據(jù)寄存器的位數(shù)和字長相等為16位。4.5解:可分別設(shè)計(jì)128K×8位、64K×16位、32K×32位的存儲器,圖略。4.6解:256KB=218B,30000H~3FFFFH容量為64KB的高地址區(qū)間,其需要64KB×4位ROM芯片2片進(jìn)行位擴(kuò)展。存儲器00000H~2FFFFH存儲空間為RAM區(qū)間,容量為256KB-64KB=192KB,其需要32K×8位RAM芯片192KB/32KB=6片進(jìn)行字?jǐn)U展。4.7解:4.8(此處兩題調(diào)整了順序)答:該芯片有1位數(shù)據(jù)線,行選通RAS和列選通CAS各1位,WE讀寫控制信號1位,64KB的存儲器對應(yīng)16根地址線,由于DRAM中行列地址復(fù)用,所以實(shí)際地址線為8根,故在不考慮電源線的情況下,該DRAM芯片的最小引腳數(shù)為1+1+1+1+8=12個(gè)。4.9解:64K×1位的DRAM芯片的排列方式為256行×256列,已知每行刷新間隔不超過2ms,可知最大刷新周期為2ms,如采用異步刷新,需要將2ms分成256個(gè)時(shí)間段,2ms/256=7.8125s,每個(gè)時(shí)間段最后0.5s用于刷新DRAM的一行,因此產(chǎn)生刷新信號的時(shí)間間隔為7.8125s。若采用集中刷新,存儲器刷新一遍至少需要256個(gè)讀寫周期,CPU的“死”時(shí)間是2560.5s=128s。4.10答:CP在1s內(nèi)至少訪問存儲器一次,而存儲器的讀寫周期為0.5s,故不可采用集中式刷新方式。因?yàn)槠洹八馈睍r(shí)間會超過1s,無法滿足CPU在1s內(nèi)至少訪問存儲器一次,故采用異步刷新方式或分散刷新方式比較合適。設(shè)16KB1位的DRAM芯片采用128128的排列方式,如采用異步刷新,則需將2ms分成128個(gè)時(shí)間段,每段的時(shí)間為2ms/128=15.625s,即刷新信號的產(chǎn)生周期為15.625s。4.11解:不同映射方式下主存地址劃分如下圖,這里s=22,w=2,r=14,d=12。(1)全相聯(lián)映射主存數(shù)據(jù)塊可映射到cache的任意行。下表中共有5個(gè)地址,數(shù)據(jù)從主存映射到cache后占用5行,假設(shè)就是cache的前5行,則對應(yīng)標(biāo)志位就是主存塊地址字段,將主存地址邏輯右移兩位就是標(biāo)記字段,具體分布如下表。cache行標(biāo)志數(shù)據(jù)00000008756853610000028779230120040019ABEFCD03007FFF4FFFFC6843FFFFE01BF2460(2)直接相聯(lián)映射主存數(shù)據(jù)塊只能映射到cache的特定行,對應(yīng)行地址為index字段的值,index字段長度為sr=2214=8位,也就是主存地址高8位,具體分布如下表所示。cache行標(biāo)志數(shù)據(jù)00000087568536000200877923010001019ABEFCD03FFF014FFFFC683FFEFF01BF2460(3)組相聯(lián)映射該方式下,主存的一個(gè)數(shù)據(jù)塊只能映射到cache特定組中的任意行,cache共分為212組,組索引字段為12位,標(biāo)志字段為高10位,具體分布如下表。cache組標(biāo)志數(shù)據(jù)00000087568536002000877923010010049ABEFCD00FFF0074FFFFC680FFE3FF01BF24604.12解:(1)主存容量為4096×128=219字,故主存地址位數(shù)為19位。cache容量為64×128=213字,故cache地址位數(shù)為13位。(2)每個(gè)組中包含4個(gè)存儲塊,共包含64/4=16=24組,故組索引字段index位數(shù)為4位。由于每塊由128個(gè)字組成,訪問地址為字地址,故塊內(nèi)偏移地址位數(shù)為7位。標(biāo)記部分(tag)的位數(shù)為1947=8位,則主存地址劃分情況如下圖所示。4.13解:(1)0,1,2,…,99號單元共100個(gè)字,每塊8個(gè)字,故100個(gè)字被分配在13塊內(nèi)。cache中能存放的主存塊數(shù)為16KB/(8×4B)=512塊,因?yàn)槭?路組相聯(lián),故cache包含組塊數(shù)512/4=128組,組索引字段長度為7位。=98.7%。(2)設(shè)訪問cache一個(gè)數(shù)據(jù)單元的時(shí)間為T,則訪問主存的訪問時(shí)間為10T,故有:使用cache后訪存所用時(shí)間為T2=13×10T+(100013)×T=1117T;不使用cache訪問耗時(shí)為T1=1000×10T=10000T;故使用cache后速度提高了10000T/1117T=8.95倍。4.14解:(1)數(shù)組在內(nèi)存中按照行優(yōu)先順序存放,而數(shù)據(jù)按塊從主存映射到cache中。程序A中對數(shù)組訪問是按行優(yōu)先方式順序進(jìn)行的,故具有很好的空間局部性,但由于每個(gè)數(shù)組元素只使用一次,故不存在時(shí)間局部性;而程序B中對數(shù)組訪問是按列優(yōu)先方式進(jìn)行的,數(shù)據(jù)訪問不是順序進(jìn)行,故空間局部性不佳,同樣也不存在時(shí)間局部性。(2)變量sum是單個(gè)變量,因此兩段程序均不存在空間局部性,但由于該變量在循環(huán)中被多次使用,故具有良好的時(shí)間局部性。(3)for循環(huán)中的指令會被反復(fù)循環(huán)執(zhí)行,因此其具有較好的時(shí)間局部性;另外,循環(huán)體中的機(jī)器指令序列通常會順序執(zhí)行,因此其也具有一定的空間局部性。4.15解:4.16解:4.15解:虛存所包含的頁面數(shù)為2GB/4KB=219頁,故VPN的位數(shù)為19位。由于頁面的大小為4KB=212B,故VPO和PPO的位數(shù)均為12位。主存所包含的頁面數(shù)為8MB/4KB=211頁,故PPN的位數(shù)為11位。4.16解:(1)裝入位為0的虛頁為失效頁,分別是2、3、5、7。(2)虛存空間大小為8×1KB=8KB,故虛地址為13位,其中虛頁號為3位,主存容量為4KB,則物理頁號為2位(見下表)。主存地址10主存地址2VPNPPN實(shí)存地址2實(shí)存地址1000000000000000031100000000003072302801011110101002缺頁——10230001111111111031111111111114095204801000000000002缺頁——40961000000000000431100000000003072800011111010000007缺頁——4.17解:(1)虛擬存儲的頁面數(shù)為2GB/128KB=214,故虛頁號的位數(shù)為14位。由于頁大小為128KB=217B,故頁內(nèi)偏移地址的位數(shù)為17位。所以虛擬地址的14位表示的是虛頁號,低17位表示的是頁內(nèi)偏移地址。TLB采用4路組相聯(lián)方式,16個(gè)頁表項(xiàng),每組4路,共4組,所以組索引字段為兩位,故虛頁號的高12位為TLB標(biāo)記,低2位為TLB組索引,如下圖所示。(2)物理內(nèi)存4MB=222B,地址線22根,頁內(nèi)偏移地址位數(shù)為17位,高5位為物理頁號,低17位表示頁內(nèi)偏移地址。(3)cache塊大小為32B,故塊內(nèi)字節(jié)偏移地址為5位;采用4路組相聯(lián),cache共分成16KB/(8×4×4B)=128=27組,故組索引字段需要7位;剩下的2257=10位為標(biāo)記,則主存地址劃分如下圖所示。4.16解:4.18解:(1)頁大小為8KB=213B,則頁內(nèi)偏移地址13位,D=13;A字段為VPN,會作為TLB標(biāo)記存放在B中,A=B=32D=32-13=19,C=24-D=24-13=11。主存塊大小為64B=26B,故G=6。cache采用2路組相聯(lián),每組容量為64B×2=128B,共有64KB/128B=512=29組,故組索引字段為F=9,E=24-9-6=9。因此A~G的位數(shù)分別為19、19、11、13、9、9、6。TLB中標(biāo)記字段B的內(nèi)容是虛頁號,表示該TLB項(xiàng)對應(yīng)哪個(gè)虛頁的頁表項(xiàng)。(2)對應(yīng)的H字段內(nèi)容為000001000B。(3)因?yàn)槿表撎幚硇枰L問磁盤,而cache缺失只要訪問主存;cache缺失帶來的開銷小,而處理缺頁的開銷大。(4)因?yàn)椴捎脤懘┎呗詴r(shí)需要同時(shí)寫快速存儲器和慢速存儲器,而寫磁盤比寫主存慢得多,所以cache可以采用寫穿策略,而虛存則應(yīng)采用寫回策略。4.19解:(1)物理地址由實(shí)頁號和頁內(nèi)地址拼接,因此其位數(shù)為16+12=28;或從cache機(jī)制直接得20+3+5=28。(2)TLB表標(biāo)記字段tag為20位,對應(yīng)VPN字段為20位,所以采用全相聯(lián)映射。TLB應(yīng)采用SRAM,讀寫速度快,但成本高,所以TLB多用于容量較小的高速緩沖存儲器。(3)cache中每組2行,共兩個(gè)比較器,故采用2路組相聯(lián)映射。2路組相聯(lián)采用LRU替換算法,實(shí)現(xiàn)時(shí)只需要在cache行中增加1位LRU位用于替換計(jì)數(shù);采用回寫策略,所以每行還需要增加1位臟位,如果臟位為1則需要寫回內(nèi)存。28位物理地址中tag字段、組索引字段、塊內(nèi)偏移地址分別是20、3、5位,故cache共有23=8組,每組2行,每行25B=32B;故cache總?cè)萘繛?×2×(20+1+1+1+32×8)=4464位=558字節(jié)。cache中有效位用來指出所在cache行中的信息是否有效。(4)虛擬地址分為兩個(gè)部分:虛頁號、頁內(nèi)地址;物理地址分為兩個(gè)部分:實(shí)頁號、頁內(nèi)地址。利用虛擬地址的虛頁號部分去查找TLB表(缺失時(shí)從頁表調(diào)入),將實(shí)頁號取出后與虛擬地址的頁內(nèi)地址拼接,就形成了物理地址。虛擬地址0008C040H的VPO=040H,虛頁號VPN=008CH,與TLB表中第一行相符,對應(yīng)實(shí)頁號PPN=0040H且有效位為1;將PPN與VPO組合,得到物理地址是0040040H。物理地址0040040H分解成標(biāo)記、組索引、塊內(nèi)偏移形式為(00400H,2,0),因此將00400H與cache中第2組兩行中的標(biāo)記字段并發(fā)比較,雖然有一個(gè)cache行中的標(biāo)記字段相符,但有效位為0,而另一cache行的標(biāo)記字段與00400H不相等,故cache不命中。虛擬地址為0007C260H的低12位為頁偏移字段,與物理地址相同,具體為(001001100000)2。根據(jù)物理地址的結(jié)構(gòu),011是組號,因此該地址應(yīng)該映射到cache第3組。10.5第5章習(xí)題解析5.2選擇題。(X)B解析:指令字和指令格式、通用寄存器個(gè)數(shù)和位數(shù)都與機(jī)器指令有關(guān),由指令體系結(jié)構(gòu)規(guī)定。CPU的時(shí)鐘周期不由ISA規(guī)定,指令集相同的CPU可以有不同的時(shí)鐘周期。加法器的進(jìn)位方式涉及電路設(shè)計(jì),也不由指令集規(guī)定。(X)A解析:在指令中,操作數(shù)的尋址方式指示使用寄存器中的內(nèi)容作為操作數(shù)或操作數(shù)地址。CPU執(zhí)行指令時(shí)會根據(jù)指令字中的尋址方式字段(也可能隱藏在操作碼中)來解析寄存器中的內(nèi)容,并根據(jù)需要進(jìn)行相應(yīng)的操作。(1)A解析:三地址指令有29條,其操作碼至少為5位。以5位進(jìn)行計(jì)算,它剩余3229=3種操作碼給二地址。二地址增加了6位用于操作碼,其數(shù)量最大達(dá)3×26=192,滿足題目要求,所以指令字長最少為5+6×3=23位。又由于計(jì)算機(jī)按字節(jié)編址,指令字長應(yīng)該是8的倍數(shù),因此指令字長至少應(yīng)該是24位,選A。(X)D解析:零地址指令條數(shù)=((24-12)×26-254)×26=128(2)A解析:采用32位定長指令字,其中操作碼為8位,兩個(gè)地址碼共占用328=24位,而Store指令的源操作數(shù)和目的操作數(shù)分別采用寄存器直接尋址和基址尋址,機(jī)器中共有16個(gè)通用寄存器,因此尋址一個(gè)寄存器需要log216=4位。源操作數(shù)中的寄存器直接尋址需4位;目的操作數(shù)采用基址尋址也要指定一個(gè)寄存器,同樣需要4位表示寄存器編號;留給偏移址的位數(shù)為2444=16位,而16位偏移址用補(bǔ)碼表示范圍為32768~+32767。(X)A解析:參考指令格式,48條指令需要6位操作碼字段(25<48<26),4種尋址方式需要2位尋址特征位,還剩16-6-2=8位作為地址碼,故直接尋址范圍為0~255。注意主存地址不能為負(fù)數(shù)。(3)A解析:采用16位定長指令字格式,有48條指令,操作碼字段長度=log248=6位,支持直接、間接、立即、相對4種尋址方式,尋址方式字段需要log24=2位,單地址指令直接尋址方式中形式地址字段為1662=8位,能表示的無符號整數(shù)范圍為0~255,選A。(4)C解析:變址尋址中,有效地址EA=(I)+D,這里先變址再間接尋址,所以EA=((I)+D)。(5)C解析:相對尋址EA=(PC)+指令字節(jié)長度+偏移量,這里轉(zhuǎn)移指令字長為2字節(jié),偏移量字段為6,EA=(PC)+2+6=2000H+2+6=2008H。(6)A解析:基址尋址、變址尋址EA=(R)+D,相對尋址EA=(PC)+D,它們都是將寄存器內(nèi)容與形式地址相加生成有效地址,而間接尋址EA=(D),所以選A。(7)D解析:根據(jù)變址尋址的方法,EA=(R)+D=1000H+2000H=3000H,操作S=(EA)=(3000H)=4000H。(8)D解析:變址尋址EA=(R)+D,指令中形式地址D可提供數(shù)組首地址,由變址寄存器來定位數(shù)組中的各元素,這種尋址方式最適合按下標(biāo)順序訪問一維數(shù)組元素,所以選D。(9)D解析:采用基址尋址方式,EA=(R)+D,寄存器為32位,形式地址采用16位補(bǔ)碼表示,這里D=FF12,為負(fù)數(shù),當(dāng)將其與32位寄存器值相加時(shí)要進(jìn)行符號擴(kuò)展,所以EA=(R)+D=F0000000+FFFFFF12H=EFFFFF12H。計(jì)算機(jī)采用大端方式編址,所以低位字節(jié)存放在字的高地址處;機(jī)器數(shù)一共占4字節(jié),該操作數(shù)的LSB所在的地址是EFFFFF12H+3=EFFFFF15H,所以選D。(10)B解析:(雙精度浮點(diǎn)數(shù)長度為8字節(jié)),因此數(shù)組的下標(biāo)為256/8=32,答案選B。(11)C解析:bgt指令會將A和B進(jìn)行比較,也就是將A和B相減。若A>B,則AB肯定無進(jìn)位/借位,結(jié)果也不為0,因此CF和ZF均為0,選C。(12)A解析。(13)A解析:RI/存數(shù)指令訪問存儲器,其余指令的操作均在寄存器之間進(jìn)行;CPU中通用寄存器多;大部分指令在一個(gè)或小于一個(gè)機(jī)器周期內(nèi)完成;普遍是采用硬布線控制器而不是采用微程序控制器。選項(xiàng)B、C、D都是RISC的特點(diǎn),選項(xiàng)A是錯(cuò)誤的。5.3簡答題。(1)什么叫指令?什么叫指令系統(tǒng)?答:指令是指控制計(jì)算機(jī)執(zhí)行某種操作(如加、減、傳送、轉(zhuǎn)移等操作)的命令,它是CPU能直接識別并執(zhí)行的基本功能單位。一臺計(jì)算機(jī)中所有指令的集合稱為該計(jì)算機(jī)的指令系統(tǒng)。(2)計(jì)算機(jī)中為什么要設(shè)置多種操作數(shù)尋址方式?答:能給用戶提供更豐富的程序設(shè)計(jì)手段,有利于編譯器實(shí)現(xiàn)高級語言向匯編語言的轉(zhuǎn)換,方便在效率和方便性以及尋址空間大小方面進(jìn)行折中平衡。立即數(shù)尋址和寄存器尋址速度最快,但寄存器有限,立即數(shù)范圍也非常有限;間接尋址、寄存器間接尋址、基址尋址可以擴(kuò)大尋址范圍,變址尋址、相對尋址、直接尋址可以提升程序設(shè)計(jì)靈活性。(3)操作數(shù)尋址方式在指令中如何表示?答:有的尋址方式在指令字中用明確的字段表示操作碼的尋址方式,如PDP-11、x86指令,也有的尋址方式暗含在操作碼中,如MIPS、RISC-V指令集。(4)基址尋址和變址尋址的作用是什么?分析它們的異同點(diǎn)。答:基址尋址面向系統(tǒng),用于程序的重定位和擴(kuò)展尋址空間,解決程序邏輯空間與存儲器物理空間的無關(guān)性。變址尋址是面向用戶的,主要解決程序循環(huán)問題,方便編寫出高效訪問存儲空間的程序。二者在形式上及計(jì)算操作數(shù)有效地址的方法上相似,都是將寄存器的值加上形式地址形成操作數(shù)有效地址。但基址寄存器的值通常是不變的,程序中的所有地址都是相對于基址來變化的,形式地址表示的偏移量位數(shù)較短,偏移范圍較小。而變址尋址則相反,指令中形式地址給出的是一個(gè)存儲器地址基準(zhǔn),變址寄存器中存放的是偏移量,不同的變址寄存器給出不同的單元,偏移量位數(shù)足以表示整個(gè)存儲空間。(5)RISC處理器有何特點(diǎn)?答:。(6)比較定長指令與變長指令的優(yōu)缺點(diǎn)。答:定長指令結(jié)構(gòu)規(guī)整,有利于簡化硬件,尤其是指令譯碼部件的設(shè)計(jì),但指令字長平均長度長,指令不易擴(kuò)展。變長指令結(jié)構(gòu)靈活,能充分利用指令中的每一位,所以指令碼點(diǎn)冗余少,指令字長平均長度短,指令易于擴(kuò)展,但變長指令的格式不規(guī)整,不同指令取指時(shí)間可能不同,控制復(fù)雜。(7)指令的地址碼與指令中的操作碼含義有何不同?答:指令的地址碼通常指定操作數(shù)的地址,地址碼字段的作用隨指令類型和尋址方式的不同而不同,它可能作為一個(gè)操作數(shù)、操作數(shù)的地址(包括操作數(shù)所在的主存地址、寄存器編號或外部設(shè)備端口地址),也可能是一個(gè)用于計(jì)算地址的偏移量。指令中的操作碼則表示指令的功能。5.4答:(1)立即數(shù);(2)直接;(3)寄存器;(4)寄存器間接。5.5解:16個(gè)通用寄存器需要4位表示;8種尋址方式需要3位表示。(1)單操作數(shù)指令的操作碼位數(shù)為16-4-3=9位,因此最多有29=512條指令。(2)雙操作數(shù)指令的操作碼位數(shù)為16-2×(4+3)=2位,因此最多有22=4條指令。(3)直接尋址,4位表示的地址范圍為0~15。(4)變址尋址,因?yàn)榧拇嫫鳛?6位,所以尋址范圍為216=64KB。5.6解:(1)采用擴(kuò)展操作碼方式,雙操作數(shù)指令的操作碼字段16-2×6=4位,則計(jì)算機(jī)最多有24=16條雙操作數(shù)指令,實(shí)際雙操作數(shù)指令為m條,因此還有(16-m)種狀態(tài)用于擴(kuò)展單操作數(shù)指令和無操作數(shù)指令,最多表示(16-m)×26條單操作數(shù)指令。假設(shè)單操作數(shù)指令條數(shù)為y,則((16-m)×26-y)×26=n,因此單操作數(shù)指令條數(shù)y=(16-m)×64-n/64條。(2)雙操作數(shù)指令取最大數(shù):24-1=15條(只預(yù)留一個(gè)狀態(tài)進(jìn)行擴(kuò)展);單操作數(shù)指令取最大數(shù):26-1=63條(只預(yù)留一個(gè)狀態(tài)進(jìn)行擴(kuò)展);無操作數(shù)指令取最大數(shù):26=64條。5.7解:根據(jù)相對尋址有效地址的計(jì)算公式EA=(PC)+D,可知D=EA-(PC)。對于相對尋址而言,關(guān)鍵是求出計(jì)

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論