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