计算机组成原理(谭志虎)第7章课后题部分答案及解析+第7到9章重要知识点解析
一、第七章課后題答案:
?
?
二、第七到九章重要知識點解析:
1、1GHz相當(dāng)于10億個時鐘周期,1億是10^8,所以1GHz=10^9個時鐘周期。1MHz是10^6個時鐘周期。
2、1ms毫秒=10^-3s秒。1us微秒=10^-6s秒,1ns納秒=10^-9s秒,1ps皮秒=10^-12s秒。
3、4級流水線相當(dāng)于4個功能段:取指、譯碼、執(zhí)行、寫回。課本上MIPS32是5級流水線,包括:取指、譯碼、執(zhí)行、訪存、寫回。
7.2(1)(2013)某 CPU 主頻為 1.03 GHz,采用 4 級指令流水線,每個流水段的執(zhí)行需要 1 個時鐘周期。假定 CPU 執(zhí)行了 100 條指令,在其執(zhí)行過程中,沒有發(fā)生任何流水線阻塞,此時流水線的吞吐率為(C)
A. 0.25×109條指令/秒 B. 0.97×109條指令/秒
C. 1.0×109條指令/秒 D. 1.03 ×109條指令/秒
解析:采用 4 級流水執(zhí)行 100 條指令,在執(zhí)行過程中共用 (4-1)?+100?=103 個時鐘周期((k-1)+n),為什么k-1呢?想象第100條指令進入第1階段,此時是第100個周期;第101周期,第100條指令進入第2階段;第102周期,進入第3階段;103階段進入第4階段。4級指令4個階段,所以程序此時才走完所以階段。CPU 主頻是1.03 GHz,即每秒1.03x10^9個時鐘周期,那么流水時間為103/1.03x10^-9=10^-7秒,流水線吞吐率=指令數(shù)/流水時間=100/10^-7=1.0x10^9條指令/秒。
4、先寫后讀沖突RAW:一個指令在讀取某個寄存器或內(nèi)存位置的值之前,該位置的值被另一個指令更新了,從而導(dǎo)致前面指令讀取的數(shù)據(jù)不是最新的數(shù)據(jù)。特征:指令I(lǐng)2的源操作數(shù)是指令I(lǐng)1的目的操作數(shù)。
7.2(4)(2016)已知無轉(zhuǎn)發(fā)機制的五段基本流水線(取指、譯碼/讀寄存器、運算、訪存、寫回寄存器)中,下列指令序列存在數(shù)據(jù)冒險的指令對是(B)
I1: add R1,R2,R3; (R2)+(R3)->R1
I2: add R5,R2,R4; (R2)+(R4)->R5
I3: add R4,R5,R3; (R3)+(R5)->R4
I4: add R5,R2,R6; (R2)+(R6)->R5
A、I1和I2 B、I2和I3 C、I2和I4 D、I3和I4
解析:因為R5是指令I(lǐng)2的目的操作數(shù),R5又是指令I(lǐng)3的源操作數(shù),讀取的R5是修改后的值,會導(dǎo)致先寫后讀RAW錯誤,發(fā)生沖突。
5、數(shù)據(jù)旁路(轉(zhuǎn)發(fā)):不等待指令寫回,直接將前面指令的執(zhí)行結(jié)果轉(zhuǎn)發(fā)給需要使用它的指令的讀取端口,避免沖突的發(fā)生,不會引起指令流水線阻塞。
數(shù)據(jù)相關(guān):當(dāng)前指令需要使用前面指令的執(zhí)行結(jié)果,但前面指令的執(zhí)行結(jié)果還沒有被寫回到寄存器中,需要等待前面指令執(zhí)行完成,流水線會阻塞。
條件轉(zhuǎn)移:需要等待跳轉(zhuǎn)目標(biāo)地址確定后才能繼續(xù)執(zhí)行下一條指令,要等待當(dāng)前指令的計算結(jié)果完成,可能會導(dǎo)致流水線的阻塞。
資源沖突:個指令需要訪問同一資源,從而需要等待資源訪問完成,造成流水線阻塞。
7.2(6).下列不會引起指令流水阻塞的是(A)
A.數(shù)據(jù)旁路
B.數(shù)據(jù)相關(guān)
C.條件轉(zhuǎn)移
D.資源沖突
6、指令格式規(guī)整且長度一致:有利于節(jié)省指令的執(zhí)行時間(因為如果長度不一致,會導(dǎo)致某些指令過長,延長流水線的時鐘周期,影響效率)
指令和數(shù)據(jù)按邊界對齊存放:可以提高指令的訪問效率,保證相鄰的指令或數(shù)據(jù)被存儲在同一個緩存塊中(因為現(xiàn)代計算機的存儲器管理單元通常會將存儲器地址按照一定的規(guī)則進行劃分,每個劃分稱為一個頁面(Page),頁面的大小通常為2的冪次方(例如,4KB、8KB、16KB等)。當(dāng)指令或數(shù)據(jù)被加載到處理器的緩存中時,通常會加載整個頁面,而不是單獨的一個指令或數(shù)據(jù)。如果相鄰的指令或數(shù)據(jù)存儲在同一個頁面中,它們就會被同時加載到緩存中)從而提高了緩存的命中率。
7、指令流水線數(shù)據(jù)通路不包含生成控制信號的控制部件:指令流水線系統(tǒng)中,每個階段的執(zhí)行需要依賴于一些控制信號。生成控制信號的控制部件需要在不同的階段生成不同的控制信號。為了實現(xiàn)這個目標(biāo),指令流水線系統(tǒng)中的控制器通常被集成到每個階段的功能部件中,由這些功能部件自行生成相應(yīng)的控制信號。因此,指令流水線系統(tǒng)不需要像單周期處理器那樣單獨包含生成控制信號的控制部件。
——————————————以下是第8章————————————————————
1、在系統(tǒng)總線的數(shù)據(jù)線上,不可能傳輸?shù)氖?#xff1a;C
A、指令? B、操作數(shù)? C、握手(應(yīng)答)信號? D、中斷類型號
解析:總線包括片內(nèi)總線、系統(tǒng)總線、通信總線。系統(tǒng)總線的“數(shù)據(jù)線”包括數(shù)據(jù)總線(選項B)、地址總線、控制總線(選項AD)。應(yīng)答信號在通信總線傳輸。
2、采用異步通信方式傳送ASCII時,若數(shù)據(jù)位為8位,校驗位為1位,停止位為1位,當(dāng)波特率為4800bit/s時,字符傳送的速率是多少?每個數(shù)據(jù)位的時間長度是多少?數(shù)據(jù)位的傳送速率是多少?
解析:字符傳送速率:4800/10=480字符/s。每個數(shù)據(jù)位的時間長度:注意到當(dāng)位數(shù)為10位時,每秒相當(dāng)于傳送4800個字符,現(xiàn)在分析的是數(shù)據(jù)位(8個),因此是4800 x 8/10 = 3840字符/s,所以用1s/3840就是每個數(shù)據(jù)位的時間長度,為0.26ms(毫秒)。數(shù)據(jù)位傳送速率:480 x 8? =3840bit/s。?
1、數(shù)據(jù)傳輸速率 = 數(shù)據(jù)位寬 / 時間
3、某64位同步總線支持突發(fā)傳輸模式,每個時鐘周期可以傳送一個地址或數(shù)據(jù),總線周期周期由1個時鐘周期的地址階段、若干個數(shù)據(jù)階段組成。若存儲器每存取一個數(shù)據(jù)需要兩個時鐘周期,突發(fā)長度小于等于4。請計算在下列兩種情況下,總線和存儲器能提供的數(shù)據(jù)傳輸速率各是多少。
(1)每個總線事務(wù)傳輸32位數(shù)據(jù)? (2)每個總線事務(wù)包含4個是數(shù)據(jù)期
解析:假設(shè)1個時鐘周期用1T表示,時鐘頻率用f表示:(1)因為是突發(fā)傳輸模式,所以總線傳輸32位數(shù)據(jù)需要2個時鐘周期(1個地址1個數(shù)據(jù)),32bit/2T=16f bit/s。存儲器需要3個時鐘周期(1個地址2個數(shù)據(jù)),32bit/3T=10.67f bit/s。
(2)包含4個數(shù)據(jù)期,意思就是在突發(fā)傳輸模式下,傳輸了4組數(shù)據(jù),每組是64位的,總線傳輸是5個時鐘周期(1個地址4個數(shù)據(jù)),所以是64 x 4 /5T = 51.2f bit/s (這里之所以要乘4是因為傳輸了4組數(shù)據(jù))。存儲器需要9個時鐘周期(1個地址8個數(shù)據(jù)) 64 x 4 / 9T = 28.4bit / s。
——————————————以下是第9章————————————————————
假設(shè)例9.1的計算機系統(tǒng)采用中斷驅(qū)動方式進行輸入輸出,CPU的時鐘頻率為200MHz,硬盤以512字節(jié)大小的扇區(qū)為單位傳輸數(shù)據(jù),啟動階段發(fā)送命令和參數(shù)需要90個時鐘周期,每次中斷服務(wù)的開銷為400個時鐘周期(包括中斷響應(yīng)、中斷處理,不包括數(shù)據(jù)傳輸),實際傳輸階段需要1555個時鐘周期,CPU訪問磁盤的速率為20MB/s。
(1)求中斷驅(qū)動I/0方式中CPU的占用率
(2)如果硬盤速率提高到60MB/s,會發(fā)生什么情況?
解析:(1)CPU訪問磁盤的速率(20MB/s)除以磁盤的扇區(qū)大小(512B),可以獲得CPU每秒訪問磁盤的次數(shù),相當(dāng)于39062.5次。而每一次訪問,都需要啟動開銷,中斷服務(wù)開銷,傳輸數(shù)據(jù)開銷,三個開銷加起來(90+400+1555)為2045個時鐘周期(T)。2045T x 39062.5就是磁盤I/O中斷的開銷。因為CPU的時鐘頻率為200MHz,所以倒數(shù)就是CPU一秒的時鐘周期數(shù)。占用率為2045T x 39062.5 / 200 x 10^6=0.3994約等于39.94%
(2)如果硬盤速率提高到60MB/s,訪問次數(shù):60x10^6/512=117187.5次,117187.5 x 2045T /200 x 10^6 = 1.1982相當(dāng)于119.82%,CPU占用率超過100%,會產(chǎn)生數(shù)據(jù)丟失。
1、接口命令寄存器:用于向接口設(shè)備發(fā)送指令,控制數(shù)據(jù)的傳輸和處理。在接口芯片中實現(xiàn)。
2、串行工作:是指數(shù)據(jù)傳輸過程中,數(shù)據(jù)位按照順序一個一個地傳輸,而不是一次性傳輸所有的數(shù)據(jù)位。
3、接口狀態(tài)寄存器:通常是在接口芯片中。
4、數(shù)據(jù)線傳送的內(nèi)容:數(shù)據(jù)緩存寄存器和命令/狀態(tài)寄存器(包括:中斷請求、錯誤碼、控制位、狀態(tài)、命令)。
5、地址線傳輸?shù)膬?nèi)容:與CPU交換數(shù)據(jù)的端口地址。
6、狀態(tài)端口:用于傳輸外設(shè)的狀態(tài)信息(忙碌,錯誤,準(zhǔn)備就緒)。
7、控制端口:可控制外設(shè)的行為(啟動、停止、重置)。
8、I/O端口:用于實現(xiàn)CPU與外設(shè)間的數(shù)據(jù)交換和通信,是I/O接口中CPU可訪問的寄存器,是I/O接口中用于緩沖信息的寄存器。首先要明確I/O端口是一種特殊的寄存器,用于存儲外設(shè)的狀態(tài)信息、控制信息、數(shù)據(jù)等。注意I/O端口可以存儲數(shù)據(jù),I/O指令實現(xiàn)的數(shù)據(jù)傳輸發(fā)生在通用寄存器和I/O端口之間。
9、中斷響應(yīng)階段:關(guān)中斷,保存斷點(中斷的點),中斷識別(修改PC轉(zhuǎn)到中斷服務(wù)程序)。
10、中斷服務(wù)程序:保護現(xiàn)場,中斷服務(wù),恢復(fù)現(xiàn)場,開中斷,中斷返回(修改PC)。先保護現(xiàn)場,然后中斷事件處理,然后恢復(fù)現(xiàn)場,然后開中斷,然后中斷返回。
11、嵌套中斷優(yōu)先級順序的題目,有一個技巧是:把前面已經(jīng)中斷過的屏蔽字置0。我的理解是:既然前面已經(jīng)執(zhí)行過了,后面就不會再繼續(xù)中斷執(zhí)行了,所以索性設(shè)置為0(允許中斷),也不會有影響。
解釋一下圖為什么這么畫,因為優(yōu)先級L0最高,所以會先進入L0執(zhí)行。此時L1和L3都是允許中斷,L1比L3優(yōu)先級高,所以進入L1執(zhí)行。因為L1為全1,所以L1執(zhí)行完。此刻跳轉(zhuǎn)回L0執(zhí)行,L3允許中斷,進入L3執(zhí)行,因為L1已執(zhí)行過,所以置0也無大礙,其它都是1,所以L3執(zhí)行完。返回L0執(zhí)行完。最后進入還未執(zhí)行的L2,因為L0,L1,L3均已執(zhí)行完,所以全置0,L2執(zhí)行完后程序結(jié)束。
12、某計算機的CPU主頻為500MHz,與之連接的外部設(shè)備的最大數(shù)據(jù)傳輸速率為20KB/s,外部設(shè)備接口中有一個16位的數(shù)據(jù)緩沖器,響應(yīng)的中斷服務(wù)程序的執(zhí)行時間為500個時鐘周期,通過分析該設(shè)備是否可采用中斷I/O方式。若該設(shè)備的最大數(shù)據(jù)傳輸速率為2MB/s,則該設(shè)備是否可采用中斷I/O方式?
解析:因為采用的是中斷服務(wù)程序,搜易當(dāng)外部設(shè)備向CPU傳輸數(shù)據(jù)時會臨時中斷CPU,所以這道題主要考慮的是數(shù)據(jù)傳輸對CPU中斷的影響,如果占CPU時間過長,則不能采用中斷I/O的方式。
解題:16位是2B,20KB/s / 2B 相當(dāng)于一秒要傳輸10000次數(shù)據(jù),每次中斷時間500個時鐘周期,所以是5 x 10^6,又因為CPU主頻是500MHz,相當(dāng)于是5 x 10^8個時鐘周期,二者相除相當(dāng)于1/100,所以傳輸速度為2KB/s所導(dǎo)致的中斷占CPU時間的1%,所以是可以采用中斷I/O方式的。而當(dāng)傳輸速度為2MB/s時一秒要傳輸1M次,相當(dāng)于10^6 x 500 = 5 x 10^8個時鐘周期,CPU的時間全部被占滿,因此不可以采用中斷I/O的方式。
13、CPI是指執(zhí)行每條指令所需要的平均時鐘周期數(shù)
p371頁 9.8? ?假定計算機主頻為500MHz,CPI為4,現(xiàn)有設(shè)備A和B,它們的傳輸速率分別為2MB/s和40MB/s,對應(yīng)I/O接口中各有一個32位數(shù)據(jù)緩存寄存器。
(1)若設(shè)備A采用定時查詢I/O方式,每次輸入輸出都至少執(zhí)行10條指令。設(shè)備A最多間隔多重時間查詢一次才能不丟失數(shù)據(jù)?CPU用于設(shè)備A輸入輸出的時間占CPU總時間的百分比至少是多少?
解析:32位是4B,CPI為4又每次輸入輸出執(zhí)行10條指令,所以需要40個時鐘周期,用2MB/4B=500000次,1/0.5x10^6 = 2us(1秒除50萬次,得到1次多長時間),所以2us要請求一次,用5x10^5x4x10=2x10^7(請求的次數(shù)乘每次花費的時鐘周期得到時鐘周期數(shù)),再用2x10^7/5x10^8=4%(除以主頻表示的每秒CPU的時鐘周期數(shù)得到占比)。
(2)在中斷I/O方式下,若每次中斷響應(yīng)和中斷處理的總時鐘周期數(shù)至少為400,則設(shè)備B能否采用中斷I/O方式?為什么
解析:40MB/s / 4B=10^7次查詢,每次查詢時鐘周期數(shù)4x10^2,查詢數(shù)x每次查詢時鐘周期數(shù)=4x10^9遠(yuǎn)遠(yuǎn)大于CPU每秒的時鐘周期數(shù)5x10^8所以不能采用中斷I/O方式。
(3)若設(shè)備采用DMA方式每次DMA傳送的數(shù)據(jù)庫大小為1000B,CPU用于DMA預(yù)處理和后處理的總時鐘周期數(shù)為500,則CPU用于設(shè)備B輸入輸出的時間占CPU總時間的百分比最多是多少?
解析:采用DMA傳輸,需要傳輸40MB/1000B= 4x10^4次,每次時鐘周期500,4x10^4x5x10^2=2x10^7,用2x10^7除CPU一秒內(nèi)的時鐘周期數(shù)5x10^8=4%。
——————————————以下是第1章————————————————————
CPI是指執(zhí)行每條指令所需要的平均時鐘周期數(shù)
——————————————以下是第6章————————————————————
?第六章課后題的第21題:
我的理解就是,編碼表示法中的互斥組,每類微指令的控制信號,只能從每個互斥組中取出一個控制信號。而從直接表示法中的控制信號中可以取不止一個控制信號。
比如:讓a直接表示。看微指令ul3和ul4,先讓db為一組,ei為一組。帶入ul1檢驗,將c納入db組,互斥組為bcd,將多出的g直接表示。帶入ul5檢驗,將f納入ei組,成為互斥組efi。帶入ul2檢驗,a直接表示,d為bcd互斥組成員,f為efi互斥組成員,剩下h和j用直接法表示。
得到互斥組bcd和互斥組efi和直接表示的四元素aghj。
因為每個譯碼器的輸出狀態(tài)中需要預(yù)留一個狀態(tài),所以2位的譯碼器只能表示3個操作控制信號。
此時操作控制字段的長度是8位。
總結(jié)
以上是生活随笔為你收集整理的计算机组成原理(谭志虎)第7章课后题部分答案及解析+第7到9章重要知识点解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。