第一章 計算機系統概論
1 . 什麼是計算機系統、計算機硬件和計算機軟件?硬件和軟件哪個更重要?
解: P3
計算機系統:由計算機硬件系統和軟件系統組成的綜合體。
計算機硬件:指計算機中的電子線路和物理裝置。
計算機軟件:計算機運行所需的程序及相關資料。
硬件和軟件在計算機系統中相互依存,缺一不可,因此同樣重要。
5. 馮 • 諾依曼計算機的特點是什麼?
解:馮 • 諾依曼計算機的特點是: P8
● 計算機由運算器、控制器、存儲器、輸入設備、輸出設備五大部件組成;
● 指令和數據以同同等地位存放於存儲器內,並可以按地址訪問;
● 指令和數據均用二進制表示;
● 指令由操作碼、地址碼兩大部分組成,操作碼用來表示操作的性質,地址碼用來表示操作數在存儲器中的位置;
● 指令在存儲器中順序存放,通常自動順序取出執行;
● 機器以運算器爲中心(原始馮 • 諾依曼機)。
7. 解釋下列概念:
主機、 CPU 、主存、存儲單元、存儲元件、存儲基元、存儲元、存儲字、存儲字長、存儲容量、機器字長、指令字長。
解: P9-10
主機:是計算機硬件的主體部分,由 CPU 和主存儲器 MM 合成爲主機。
CPU :中央處理器,是計算機硬件的核心部件,由運算器和控制器組成;(早期的運算器和控制器不在同一芯片上,現在的 CPU 內除含有運算器和控制器外還集成了 CACHE )。
主存:計算機中存放正在運行的程序和數據的存儲器,爲計算機的主要工作存儲器,可隨機存取;由存儲體、各種邏輯部件及控制電路組成。
存儲單元:可存放一個機器字並具有特定存儲地址的存儲單位。
存儲元件:存儲一位二進制信息的物理元件,是存儲器中最小的存儲單位,又叫存儲基元或存儲元,不能單獨存取。
存儲字:一個存儲單元所存二進制代碼的邏輯單位。
存儲字長:一個存儲單元所存二進制代碼的位數。
存儲容量:存儲器中可存二進制代碼的總量;(通常主、輔存容量分開描述)。
機器字長:指 CPU 一次能處理的二進制數據的位數,通常與 CPU 的寄存器位數有關。
指令字長 : 一條指令的二進制代碼位數。
8. 解釋下列英文縮寫的中文含義:
CPU 、 PC 、 IR 、 CU 、 ALU 、 ACC 、 MQ 、 X 、 MAR 、 MDR 、 I/O 、 MIPS 、 CPI 、 FLOPS
解:全面的回答應分英文全稱、中文名、功能三部分。
CPU : Central Processing Unit ,中央處理機(器),是計算機硬件的核心部件,主要由運算器和控制器組成。
PC : Program Counter ,程序計數器,其功能是存放當前欲執行指令的地址,並可自動計數 形成下一條指令地址。
IR : Instruction Register ,指令寄存器,其功能是存放當前正在執行的指令。
CU : Control Unit ,控制單元(部件),爲控制器的核心部件,其功能是產生微操作命令序列。
ALU : Arithmetic Logic Unit ,算術邏輯運算單元,爲運算器的核心部件,其功能是進行算術、邏輯運算。
ACC : Accumulator ,累加器,是運算器中既能存放運算前的操作數,又能存放運算結果的寄存器。
MQ : Multiplier-Quotient Register ,乘商寄存器,乘法運算時存放乘數、除法時存放商的寄存器。
X :此字母沒有專指的縮寫含義,可以用作任一部件名,在此表示操作數寄存器,即運算器中工作寄存器之一,用來存放操作數;
MAR : Memory Address Register ,存儲器地址寄存器,在主存中用來存放欲訪問的存儲單元的地址。
MDR : Memory Data Register ,存儲器數據緩衝寄存器,在主存中用來存放從某單元讀出、或要寫入某存儲單元的數據。
I/O : Input/Output equipment ,輸入 / 輸出設備,爲輸入設備和輸出設備的總稱,用於計算機內部和外界信息的轉換與傳送。
MIPS : Million Instruction Per Second ,每秒執行百萬條指令數,爲計算機運算速度指標的一種計量單位。
9. 畫出主機框圖,分別以存數指令“ STA M ”和加法指令“ ADD M ”( M 均爲主存地址)爲例,在圖中按序標出完成該指令(包括取指令階段)的信息流程(如→①)。假設主存容量爲 256M *32 位,在指令字長、存儲字長、機器字長相等的條件下,指出圖中各寄存器的位數。
解:主機框圖如 P13 圖 1.11 所示。
( 1 ) STA M 指令: PC → MAR , MAR → MM , MM → MDR , MDR → IR ,
OP(IR) → CU , Ad(IR) → MAR , ACC → MDR , MAR → MM , WR
( 2 ) ADD M 指令: PC → MAR , MAR → MM , MM → MDR , MDR → IR ,
OP(IR) → CU , Ad(IR) → MAR , RD , MM → MDR , MDR → X , ADD , ALU → ACC , ACC → MDR , WR
假設主存容量 256M *32 位,在指令字長、存儲字長、機器字長相等的條件下, ACC 、 X 、 IR 、 MDR 寄存器均爲 32 位, PC 和 MAR 寄存器均爲 28 位。
10. 指令和數據都存於存儲器中,計算機如何區分它們?
解:計算機區分指令和數據有以下 2 種方法:
● 通過不同的時間段來區分指令和數據,即在取指令階段(或取指微程序)取出的爲指令,在執行指令階段(或相應微程序)取出的即爲數據。
● 通過地址來源區分,由 PC 提供存儲單元地址的取出的是指令,由指令地址碼部分提供存儲單元地址的取出的是操作數。
第 2 章 計算機的發展及應用
1. 通常計算機的更新換代以什麼爲依據?
答: P22
主要以組成計算機基本電路的元器件爲依據,如電子管、晶體管、集成電路等。
2. 舉例說明專用計算機和通用計算機的區別。
答:按照計算機的效率、速度、價格和運行的經濟性和實用性可以將計算機劃分爲通用計算機和專用計算機。通用計算機適應性強,但犧牲了效率、速度和經濟性,而專用計算機是最有效、最經濟和最快的計算機,但適應性很差。例如個人電腦和計算器。
3. 什麼是摩爾定律?該定律是否永遠生效?爲什麼?
答: P23 ,否, P36
第 3 章 系統總線
1. 什麼是總線?總線傳輸有何特點?爲了減輕總線負載,總線上的部件應具備什麼特點?
答: P41. 總線是多個部件共享的傳輸部件。
總線傳輸的特點是:某一時刻只能有一路信息在總線上傳輸,即分時使用。
爲了減輕總線負載,總線上的部件應通過三態驅動緩衝電路與總線連通。
4. 爲什麼要設置總線判優控制?常見的集中式總線控制有幾種?各有何特點?哪種方式響應時間最快?哪種方式對電路故障最敏感?
答:總線判優控制解決多個部件同時申請總線時的使用權分配問題;
常見的集中式總線控制有三種:鏈式查詢、計數器定時查詢、獨立請求;
特點:鏈式查詢方式連線簡單,易於擴充,對電路故障最敏感;計數器定時查詢方式優先級設置較靈活,對故障不敏感,連線及控制過程較複雜;獨立請求方式速度最快,但硬件器件用量大,連線多,成本較高。
5. 解釋下列概念:總線寬度、總線帶寬、總線複用、總線的主設備(或主模塊)、總線的從設備(或從模塊)、總線的傳輸週期和總線的通信控制。
答: P46 。
總線寬度 : 通常指數據總線的根數;
總線帶寬 : 總線的數據傳輸率,指單位時間內總線上傳輸數據的位數;
總線複用 : 指同一條信號線可以分時傳輸不同的信號。
總線的主設備(主模塊) : 指一次總線傳輸期間,擁有總線控制權的設備(模塊);
總線的從設備(從模塊) : 指一次總線傳輸期間,配合主設備完成數據傳輸的設備(模塊),它只能被動接受主設備發來的命令;
總線的傳輸週期 : 指總線完成一次完整而可靠的傳輸所需時間;
總線的通信控制 : 指總線傳送過程中雙方的時間配合方式。
6. 試比較同步通信和異步通信。
答:同步通信 : 指由統一時鐘控制的通信,控制方式簡單,靈活性差,當系統中各部件工作速度差異較大時,總線工作效率明顯下降。適合於速度差別不大的場合。
異步通信 : 指沒有統一時鐘控制的通信,部件間採用應答方式進行聯繫,控制方式較同步複雜,靈活性高,當系統中各部件工作速度差異較大時,有利於提高總線工作效率。
8. 爲什麼說半同步通信同時保留了同步通信和異步通信的特點?
答:半同步通信既能像同步通信那樣由統一時鐘控制,又能像異步通信那樣允許傳輸時間不一致,因此工作效率介於兩者之間。
10. 爲什麼要設置總線標準?你知道目前流行的總線標準有哪些?什麼叫 plug and play ?哪些總線有這一特點?
答:總線標準的設置主要解決不同廠家各類模塊化產品的兼容問題;
目前流行的總線標準有: ISA 、 EISA 、 PCI 等;
plug and play :即插即用, EISA 、 PCI 等具有此功能。
11. 畫一個具有雙向傳輸功能的總線邏輯圖。
答: 在總線的兩端分別配置三態門,就可以使總線具有雙向傳輸功能。
12. 設數據總線上接有 A 、 B 、 C 、 D 四個寄存器,要求選用合適的 74 系列芯片,完成下列邏輯設計:
( 1 ) 設計一個電路,在同一時間實現 D → A 、 D → B 和 D → C 寄存器間的傳送;
( 2 ) 設計一個電路,實現下列操作:
T0 時刻完成 D → 總線;
T1 時刻完成總線 → A ;
T2 時刻完成 A → 總線;
T3 時刻完成總線 → B 。
解:( 1 )由 T 打開三態門 將 D 寄存器中的內容送至總線 bus , 由 cp 脈衝同時 將總線上的數據 打入到 A 、 B 、 C 寄存器中。 T 和 cp 的時間關係如圖 ( 1 ) 所示。
圖( 1 )
( 2 )三態門 1 受 T0 + T1 控制,以確保 T0 時刻 D →總線,以及 T1 時刻總線→接收門 1 → A 。三態門 2 受 T2 + T3 控制,以確保 T2 時刻 A →總線,以及 T3 時刻總線→接收門 2 → B 。 T0 、 T1 、 T2 、 T3 波形圖 如 圖 ( 2 )所示 。
圖 (2)
第 四 章
3. 存儲器的層次結構主要體現在什麼地方?爲什麼要分這些層次?計算機如何管理這些層次?
答:存儲器的層次結構主要體現在 Cache - 主存和主存 - 輔存這兩個存儲層次上。
Cache - 主存層次在存儲系統中主要對 CPU 訪存起加速作用,即從整體運行的效果分析, CPU 訪存速度加快,接近於 Cache 的速度,而尋址空間和位價卻接近於主存。
主存 - 輔存層次在存儲系統中主要起擴容作用,即從程序員的角度看,他所使用的存儲器其容量和位價接近於輔存,而速度接近於主存。
綜合上述兩個存儲層次的作用,從整個存儲系統來看,就達到了速度快、容量大、位價低的優化效果。
主存與 CACHE 之間的信息調度功能全部由硬件自動完成。而主存 與 輔 存層次的調度目前廣泛採用虛擬存儲技術實現,即將主存與輔存的一部分 通過軟硬結合的技術組成虛擬存儲器,程序員可使用這個比主存實際空間(物理地址空間)大得多的虛擬地址空間(邏輯地址空間)編程,當程序運行時,再由軟、硬件自動配合完成虛擬地址空間與主存實際物理空間的轉換。因此,這兩個層次上的調度或轉換操作對於程序員來說都是透明的。
4. 說明存取週期和存取時間的區別。
解:存取週期和存取時間的主要區別是:存取時間僅爲完成一次操作的時間,而存取週期不僅包含操作時間,還包含操作後線路的恢復時間。即:
存取週期 = 存取時間 + 恢復時間
5. 什麼是存儲器的帶寬?若存儲器的數據總線寬度爲 32 位,存取週期爲 200ns ,則存儲器的帶寬是多少?
解:存儲器的帶寬指單位時間內從存儲器進出信息的最大數量。
存儲器帶寬 = 1/200ns × 32 位 = 160M 位 / 秒 = 20MB/ 秒 = 5M 字 / 秒
注意 : 字長 32 位 , 不是 16 位。(注: 1ns=10 -9 s )
6. 某機字長爲 32 位,其存儲容量是 64KB ,按字編址它的尋址範圍是多少?若主存以字節編址,試畫出主存字地址和字節地址的分配情況。
解:存儲容量是 64KB 時,按字節編址的尋址範圍就是 64K , 如按字編址,其尋址範圍爲:
64K / ( 32 /8 ) = 16K
主存字地址和字節地址的分配情況 :(略) 。
7. 一個容量爲 16K × 32 位的存儲器,其地址線和數據線的總和是多少?當選用下列不同規格的存儲芯片時,各需要多少片?
1K × 4 位, 2K × 8 位, 4K × 4 位, 16K × 1 位, 4K × 8 位, 8K × 8 位
解:地址線和數據線的總和 = 14 + 32 = 46 根;
選擇不同的芯片時, 各需要的片數爲:
1K × 4 : ( 16K × 32 ) / ( 1K × 4 ) = 16 × 8 = 128 片
2K × 8 : ( 16K × 32 ) / ( 2K × 8 ) = 8 × 4 = 32 片
4K × 4 : ( 16K × 32 ) / ( 4K × 4 ) = 4 × 8 = 32 片
16K × 1 : ( 16K × 32 ) / ( 16K × 1 ) = 1 × 32 = 32 片
4K × 8 : ( 16K × 32 ) / ( 4K × 8 ) = 4 × 4 = 16 片
8K × 8 : ( 16K × 32 ) / ( 8K × 8 ) = 2 × 4 = 8 片
8. 試比較靜態 RAM 和動態 RAM 。
答:略。(參看課件)
9. 什麼叫刷新?爲什麼要刷新?說明刷新有幾種方法。
解:刷新 : 對 DRAM 定期進行的全部重寫過程;
刷新原因 : 因電容泄漏而引起的 DRAM 所存信息的衰減需要及時補充,因此安排了定期刷新操作;
常用的刷新方法有三種 : 集中式、分散式、異步式。
集中式:在最大刷新間隔時間內,集中安排一段時間進行刷新 ,存在 CPU 訪存死時間。
分散式:在每個讀 / 寫週期之後插入一個刷新週期,無 CPU 訪存死時間。
異步式:是集中式和分散式的折衷。
10. 半導體存儲器芯片的譯碼驅動方式有幾種?
解:半導體存儲器芯片的譯碼驅動方式有兩種:線選法和重合法。
線選法:地址譯碼信號只選中同一個字的所有位,結構簡單,費器材;
重合法:地址分行、列兩部分譯碼,行、列譯碼線的交叉點即爲所選單元。這種方法通過行、列譯碼信號的重合來選址,也稱矩陣譯碼。可大大節省器材用量,是最常用的譯碼驅動方式。
11. 一個 8K × 8 位的動態 RAM 芯片,其內部結構排列成 256 × 256 形式,存取週期爲 0.1 μ s 。試問採用集中刷新、分散刷新和異步刷新三種方式的刷新間隔各爲多少?
解:採用分散刷新方式刷新間隔爲 :2ms ,其中刷新死時間爲: 256 × 0.1 μ s=25.6 μ s
採用分散刷新方式刷新間隔爲: 256 × ( 0.1 μ s+ × 0.1 μ s ) =51.2 μ s
採用異步刷新方式刷新間隔爲 :2ms
1 2 . 畫出用 1024 × 4 位的存儲芯片組成一個容量爲 64K × 8 位的存儲器邏輯框圖。要求將 64K 分成 4 個頁面,每個頁面分 16 組,指出共需多少片存儲芯片。
解:設採用 SRAM 芯片, 則:
總片數 = ( 64K × 8 位 ) / ( 1024 × 4 位 ) = 64 × 2 = 128 片
題意分析:本題設計的存儲器結構上分爲總體、頁面、組三級,因此畫圖時也應分三級畫。首先應確定各級的容量:
頁面容量 = 總容量 / 頁面數 = 64K × 8 / 4 = 16K × 8 位, 4 片 16K × 8 字串聯成 64K × 8 位
組容量 = 頁面容量 / 組數 = 16K × 8 位 / 16 = 1K × 8 位, 16 片 1K × 8 位字串聯成 16K × 8 位
組內片數 = 組容量 / 片容量 = 1K × 8 位 / 1K × 4 位 = 2 片,兩片 1K × 4 位芯片位並聯成 1K × 8 位
存儲器邏輯框圖:( 略 ) 。
13 . 設有一個 64K × 8 位的 RAM 芯片,試問該芯片共有多少個基本單元電路(簡稱存儲基元)?欲設計一種具有上述同樣多存儲基元的芯片,要求對芯片字長的選擇應滿足地址線和數據線的總和爲最小,試確定這種芯片的地址線和數據線,並說明有幾種解答。
解:存儲基元總數 = 64K × 8 位 = 512K 位 = 2 19 位;
思路: 如要滿足地址線和數據線總和最小,應儘量把存儲元安排在字向,因爲地址位數和字數成 2 的冪的關係,可較好地壓縮線數。
解: 設地址線根數爲 a ,數據線根數爲 b ,則片容量爲: 2 a × b = 2 19 ; b = 2 19-a ;
若 a = 19 , b = 1 ,總和 = 19+1 = 20 ;
a = 18 , b = 2 ,總和 = 18+2 = 20 ;
a = 17 , b = 4 ,總和 = 17+4 = 21 ;
a = 16 , b = 8 ,總和 = 16+8 = 24 ;
…… ……
由上可看出:片字數越少,片字長越長,引腳數越多。片字數 減 1 、片位數均按 2 的冪變化。
結論:如果滿足地址線和數據線的總和爲最小,這種芯片的引腳分配方案有兩種:地址線 = 19 根,數據線 = 1 根;或地址線 = 18 根,數據線 = 2 根。
1 4 . 某 8 位微型機地址碼爲 18 位,若使用 4K × 4 位的 RAM 芯片組成模塊板結構的存儲器,試問:
( 1 )該機所允許的最大主存空間是多少?
( 2 )若每個模塊板爲 32K × 8 位,共需幾個模塊板?
( 3 )每個模塊板內共有幾片 RAM 芯片?
( 4 )共有多少片 RAM ?
( 5 ) CPU 如何選擇各模塊板?
解:( 1 )該機所允許的最大主存空間是 : 2 18 × 8 位 = 256K × 8 位 = 256KB
( 2 )模塊板總數 = 256K × 8 / 32K × 8 = 8 塊
( 3 )板內片數 = 32K × 8 位 / 4K × 4 位 = 8 × 2 = 16 片
( 4 )總片數 = 16 片 × 8 = 128 片
( 5 ) CPU 通過最高 3 位地址譯碼 輸出 選 擇模板 ,次高 3 位地址譯碼 輸出選擇芯片 。地址格式分配如下:
1 5 . 設 CPU 共有 16 根地址線, 8 根數據線,並用 (低電平有效)作訪存控制信號, 作讀寫命令信號(高電平爲讀,低電平爲寫)。現有下列存儲芯片: ROM ( 2K × 8 位, 4K × 4 位, 8K × 8 位), RAM ( 1K × 4 位, 2K × 8 位, 4K × 8 位),及 74138 譯碼器和其他門電路(門電路自定)。試從上述規格中選用合適芯片,畫出 CPU 和存儲芯片的連接圖。要求:
( 1 )最小 4K 地址爲系統程序區, 4096~16383 地址範圍爲用戶程序區;
( 2 )指出選用的存儲芯片類型及數量;
( 3 )詳細畫出片選邏輯。
解:( 1 )地址空間分配圖:
系統程序區( ROM 共 4KB ): 0000H-0FFFH
用戶程序區( RAM 共 12KB ): 1000H-FFFFH
( 2 )選片: ROM : 選擇 4K × 4 位 芯片 2 片 ,位並聯
RAM : 選擇 4K × 8 位 芯片 3 片 ,字串聯 (RAM1 地址範圍爲 :1000H-1FFFH,RAM2 地址範圍爲 2000H-2FFFH, RAM3 地址範圍爲 :3000H-3FFFH)
( 3 ) 各芯片二進制地址分配如下:
|
A15 |
A14 |
A13 |
A12 |
A11 |
A10 |
A9 |
A8 |
A7 |
A6 |
A5 |
A4 |
A3 |
A2 |
A1 |
A 0 |
ROM1,2 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
RAM1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
RAM2 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
RAM3 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CPU 和存儲器連接邏輯圖及片選邏輯 如下圖 (3) 所示 :
圖( 3 )
1 6 . CPU 假設同上題,現有 8 片 8K × 8 位的 RAM 芯片與 CPU 相連,試回答:
( 1 )用 74138 譯碼器畫出 CPU 與存儲芯片的連接圖;
( 2 )寫出每片 RAM 的地址範圍;
( 3 )如果運行時發現不論往哪片 RAM 寫入數據後,以 A000H 爲起始地址的存儲芯片都有與其相同的數據,分析故障原因。
( 4 )根據( 1 )的連接圖,若出現地址線 A13 與 CPU 斷線,並搭接到高電平上,將出現什麼後果?
解:( 1 ) CPU 與存儲器芯片連接邏輯圖:
( 2 )地址空間分配圖:
RAM0:0000H-1FFFH
RAM1:2000H-3FFFH
RAM2:4000H-5FFFH
RAM3:6000H-7FFFH
RAM4:8000H-9FFFH
RAM 5 : A 000H- B FFFH
RAM 6 : C 000H- D FFFH
RAM7:E000H-FFFFH
( 3 )如果運行時發現不論往哪片 RAM 寫入數據後,以 A000H 爲起始地址的存儲芯片 ( RAM5 ) 都有與其相同的數據,則根本的故障原因爲:該存儲芯片的片選輸入端很可能總是處於低電平。假設芯片與譯碼器本身都是好的 , 可能的情況有:
1 )該片的 -CS 端與 -WE 端錯連或短路;
2 )該片的 -CS 端與 CPU 的 -MREQ 端錯連或短路;
3 )該片的 -CS 端與地線錯連或短路 。
( 4 )如果地址線 A13 與 CPU 斷線,並搭接到高電平上,將會出現 A13 恆爲 “ 1 ” 的情況。此時存儲器只能尋址 A13=1 的地址空間 ( 奇數片 ) , A13=0 的另一半地址空間(偶數片)將永遠訪問不到。若對 A13=0 的地址空間(偶數片)進行訪問,只能錯誤地訪問到 A13=1 的對應空間 ( 奇數片 ) 中去。
17. 寫出 1100 、 1101 、 1110 、 1111 對應的漢明碼。
解:有效信息均爲 n=4 位,假設有效信息用 b4b3b2b1 表示
校驗位位數 k=3 位,( 2 k >=n+k+1 )
設校驗位分別爲 c1 、 c2 、 c3 ,則漢明碼共 4+3=7 位,即: c 1c 2b 4c 3b3b2b1
校驗位在漢明碼中分別處於第 1 、 2 、 4 位
c1=b4 ⊕ b3 ⊕ b1
c2=b4 ⊕ b2 ⊕ b1
c3=b3 ⊕ b2 ⊕ b1
當有效信息爲 1100 時, c 3c 2c 1=011, 漢明碼爲 1110100 。
當有效信息爲 1101 時, c 3c 2c 1=100, 漢明碼爲 0011101 。
當有效信息爲 1110 時, c 3c 2c 1=101, 漢明碼爲 1011110 。
當有效信息爲 1111 時, c 3c 2c 1=010, 漢明碼爲 0110111 。
18. 已知收到的漢明碼(按配偶原則配置)爲 1100100 、 1100111 、 1100000 、 1100001 ,檢查上述代碼是否出錯?第幾位出錯?
解:假設接收到的漢明碼爲: c 1’ c 2’ b 4’ c 3’ b 3’ b 2’ b 1’
糾錯過程如下:
P1=c 1’ ⊕ b 4’ ⊕ b 3’ ⊕ b 1’
P2=c 2’ ⊕ b 4’ ⊕ b 2’ ⊕ b 1’
P3=c 3’ ⊕ b 3’ ⊕ b 2’ ⊕ b 1’
如果收到的漢明碼爲 1100100 ,則 p3p2p1=011 ,說明代碼有錯,第 3 位( b 4’ )出錯,有效信息爲: 1100
如果收到的漢明碼爲 1100111 ,則 p3p2p1=111 ,說明代碼有錯,第 7 位( b 1’ )出錯,有效信息爲: 0110
如果收到的漢明碼爲 1100000 ,則 p3p2p1=110 ,說明代碼有錯,第 6 位( b 2’ )出錯,有效信息爲: 0010
如果收到的漢明碼爲 1100001 ,則 p3p2p1=001 ,說明代碼有錯,第 1 位( c 1’ )出錯,有效信息爲: 0001
22 . 某機字長 16 位,常規的存儲空間爲 64K 字,若想不改用其他高速的存儲芯片,而使訪存速度提高到 8 倍,可採取什麼措施?畫圖說明。
解:若想不改用高速存儲芯片,而使訪存速度提高到 8 倍,可採取 八 體交叉存取技術, 8 體交叉訪問時序 如下圖 :
18. 什麼是 “ 程序訪問的局部性 ” ?存儲系統中哪一級採用了程序訪問的局部性原理?
解:程序運行的局部性原理指:在一小段時間內,最近被訪問過的程序和數據很可能再次被訪問;在空間上,這些被訪問的程序和數據往往集中在一小片存儲區;在訪問順序上,指令順序執行比轉移執行的可能性大 ( 大約 5:1 ) 。存儲系統中 Cache— 主存層次採用了程序訪問的局部性原理。
2 5 . Cache 做在 CPU 芯片內有什麼好處?將指令 Cache 和數據 Cache 分開又有什麼好處?
答: Cache 做在 CPU 芯片內主要有下面幾個好處:
1 )可提高外部總線的利用率。因爲 Cache 在 CPU 芯片內, CPU 訪問 Cache 時不必佔用外部總線 。
2 ) Cache 不佔用外部總線就意味着外部總線可更多地支持 I/O 設備與主存的信息傳輸,增強了系統的整體效率 。
3 )可提高存取速度。因爲 Cache 與 CPU 之間的數據通路大大縮短 , 故存取速度得以提高 。
將指令 Cache 和數據 Cache 分開有如下好處:
1 )可支持超前控制和流水線控制,有利於這類控制方式下指令預取操作的完成 。
2 )指令 Cache 可用 ROM 實現,以提高指令存取的可靠性 。
3 )數據 Cache 對不同數據類型的支持更爲靈活,既可支持整數(例 32 位),也可支持浮點數據(如 64 位)。
補充 :
Cache 結構改進的第三個措施是分級實現,如二級緩存結構,即在片內 Cache ( L1 )和主存之間再設一個片外 Cache ( L2 ),片外緩存既可以彌補片內緩存容量不夠大的缺點,又可在主存與片內緩存間起到平滑速度差的作用,加速片內緩存的調入調出速度。
30 . 一個組相連映射的 CACHE 由 64 塊組成,每組內包含 4 塊。主存包含 4096 塊,每塊由 128 字組成,訪存地址爲字地址。試問主存和高速存儲器的地址各爲幾位?畫出主存地址格式。
解: cache 組數: 64/4=16 , Cache 容量爲: 64*128=2 13 字, cache 地址 13 位
主存共分 4096/16=256 區,每區 16 塊
主存容量爲: 4096*128=2 19 字,主存地址 19 位,地址格式如下:
主存字塊標記( 8 位) |
組地址( 4 位) |
字塊內地址( 7 位) |
|
|
|
第 六 章
12. 設浮點數格式爲:階碼 5 位 (含 1 位階符 ), 尾數 1 1 位 (含 1 位數符 ) 。寫出 51/128 、 -27/1024 所對應的機器數。要求 如下:
( 1 )階碼和尾數均爲原碼 。
( 2 )階碼和尾數均爲補碼 。
( 3 )階碼爲移碼,尾數爲補碼。
解:據題意畫出該浮點數的格式:
階符 1 位 |
階碼 4 位 |
數符 1 位 |
尾數 10 位 |
|
|
|
|
將十進制數轉換爲二進制: x1= 51/128= 0.011 001 1B = 2 -1 * 0.11 0 011 B
x2= -27/1024= -0.0000011011 B = 2 -5 *( -0.11011 B )
則以上各數的浮點規格化數爲:
( 1 ) [x1] 浮 =1 , 0001 ; 0.110 011 000 0
[x2] 浮 =1 , 0101 ; 1.110 110 000 0
( 2 ) [x1] 浮 =1 , 1111 ; 0.110 011 000 0
[x2] 浮 =1 , 1011 ; 1.001 010 000 0
( 3 ) [x1] 浮 =0 , 1111 ; 0.110 011 000 0
[x2] 浮 =0 , 1011 ; 1.001 010 000 0
16 . 設機器數字長爲 16 位,寫出下列各種情況下它能表示的數的範圍。設機器數採用一位符號位,答案均用十進制表示。
( 1 )無符號數;
( 2 )原碼錶示的定點小數 。
( 3 )補碼錶示的定點小數 。
( 4 )補碼錶示的定點整數 。
( 5 )原碼錶示的定點整數 。
( 6 )浮點數的格式爲:階碼 6 位 (含 1 位 階符 ), 尾數 10 位( 含 1 位 數符)。分別寫出其正數和負數的表示範圍 。
( 7 )浮點數格式同( 6 ),機器數採用補碼規格化形式,分別寫出其對應的正數和負數的真值範圍。
解:( 1 ) 無符號整數: 0 —— 2 16 - 1 ,即: 0 —— 65535 ;
無符號小數: 0 —— 1 - 2 -16 ,即: 0 —— 0.99998 ;
( 2 )原碼定點小數: -1 + 2 -15 —— 1 - 2 -15 ,即: -0.99997 —— 0.99997
( 3 )補碼定點小數: - 1 —— 1 - 2 -15 ,即: -1 —— 0.99997
( 4 )補碼定點整數: -2 15 —— 2 15 - 1 ,即: -32768 —— 32767
( 5 )原碼定點整數: -2 15 + 1 —— 2 15 - 1 ,即: -32767 —— 32767
( 6 )據題意畫出該浮點數格式 , 當階 碼和 尾 數均 採用原 碼, 非規格化數 表示時:
最大負數 = 1 , 11 111 ; 1.000 000 001 ,即 -2 -9 2 -31
最小負數 = 0 , 11 111 ; 1.111 111 111 ,即 - ( 1-2 -9 ) 2 31
則負數表示範圍爲: - ( 1-2 -9 ) 2 31 —— -2 -9 2 -31
最大正數 = 0 , 11 111 ; 0.111 111 111 ,即 ( 1-2 -9 ) 2 31
最小正數 = 1 , 11 111 ; 0.000 000 001 ,即 2 -9 2 -31
則 正數表示範圍爲: 2 -9 2 -31 —— ( 1-2 -9 ) 2 31
( 7 )當機器數採用補碼規格化形式時,若不考慮隱藏位,則
最大負數 =1 , 00 000 ; 1.011 111 111 ,即 -2 -1 2 -32
最小負數 =0 , 11 111 ; 1.000 000 000 ,即 -1 2 3 1
則負數表示範圍爲: -1 2 3 1 —— -2 -1 2 -32
最大正數 =0 , 11 111 ; 0.111 111 111 ,即 ( 1-2 -9 ) 2 31
最小正數 =1 , 00 000 ; 0.100 000 000 ,即 2 -1 2 - 3 2
則 正數表示範圍爲: 2 -1 2 - 3 2 —— ( 1-2 -9 ) 2 31
17. 設機器數字長爲 8 位(包括一位符號位),對下列各機器數進行算術左移一位、兩位,算術右移一位、兩位,討論結果是否正確。
[x1] 原 =0.001 1010 ; [y1] 補 =0.101 0100 ; [z1] 反 =1.010 1111 ;
[x2] 原 =1.110 10 0 0 ; [y2] 補 =1.110 1000 ; [z2] 反 =1.110 1000 ;
[x3] 原 =1.001 1001 ; [y3] 補 =1.001 1001 ; [z3] 反 =1.001 1001 。
解: 算術左移一位:
[x1] 原 =0.011 0100 ;正確
[x2] 原 =1.101 0000 ;溢出(丟 1 )出錯
[x3] 原 =1.011 0010 ;正確
[y1] 補 =0.010 1000 ;溢出(丟 1 )出錯
[y2] 補 =1.101 0000 ;正確
[y3] 補 =1.011 0010 ;溢出(丟 0 )出錯
[z1] 反 =1.101 1111 ;溢出(丟 0 )出錯
[z2] 反 =1.101 0001 ;正確
[z3] 反 =1.011 0011 ;溢出(丟 0 )出錯
算術左移兩位:
[x1] 原 =0.110 1000 ;正確
[x2] 原 =1.010 0000 ;溢出(丟 11 )出錯
[x3] 原 =1.110 0100 ;正確
[y1] 補 =0.101 0000 ;溢出(丟 10 )出錯
[y2] 補 =1.010 0000 ;正確
[y3] 補 =1.110 0100 ;溢出(丟 00 )出錯
[z1] 反 =1.011 1111 ;溢出(丟 01 )出錯
[z2] 反 =1.010 0011 ;正確
[z3] 反 =1.110 0111 ;溢出(丟 00 )出錯
算術右移一位:
[x1] 原 =0.000 1101 ;正確
[x2] 原 =1.011 0100 ;正確
[x3] 原 =1.000 1100(1) ;丟 1 ,產生誤差
[y1] 補 =0.010 1010 ;正確
[y2] 補 =1.111 0100 ;正確
[y3] 補 =1.100 1100(1) ;丟 1 ,產生誤差
[z1] 反 =1.101 0111 ;正確
[z2] 反 =1.111 0100(0) ;丟 0 ,產生誤差
[z3] 反 =1.100 1100 ;正確
算術右移兩位:
[x1] 原 =0.000 0110 ( 10 );產生誤差
[x2] 原 =1.001 1010 ;正確
[x3] 原 =1.000 0110 ( 01 );產生誤差
[y1] 補 =0.001 0101 ;正確
[y2] 補 =1.111 1010 ;正確
[y3] 補 =1.110 0110 ( 01 );產生誤差
[z1] 反 =1.110 1011 ;正確
[z2] 反 =1.111 1010 ( 00 );產生誤差
[z3] 反 =1.110 0110 ( 01 );產生誤差
19. 設機器數字長爲 8 位(含 1 位符號位),用補碼運算規則計算下列各題。
( 1 ) A=9/64 , B=-13/32 ,求 A+B 。
( 2 ) A=19/32 , B=-17/128 ,求 A-B 。
( 3 ) A=-3/16 , B=9/32 ,求 A+B 。
( 4 ) A=-87 , B=53 ,求 A-B 。
( 5 ) A=115 , B=-24 ,求 A+B 。
解:( 1 ) A=9/64= 0.001 0010 B, B= -13/32= -0.011 0100 B
[A] 補 =0.001 0010 , [B] 補 =1.100 1100
[A+B] 補 = 0.0010010 + 1.1001100 = 1.1011110 —— 無溢出
A+B= -0.010 0010 B = -17/64
( 2 ) A=19/32= 0.100 1100 B, B= -17/128= -0.001 0001 B
[A] 補 =0.100 1100 , [B] 補 =1.110 1111 , [-B] 補 =0.001 0001
[A-B] 補 = 0.1001100 + 0.0010001 = 0.1011101 —— 無溢出
A-B= 0.101 1101 B = 93/128 B
( 3 ) A= -3/16= -0.001 1000 B, B=9/32= 0.010 0100 B
[A] 補 =1.110 1000 , [B] 補 = 0.010 0100
[A+B] 補 = 1.1101000 + 0.0100100 = 0.0001100 —— 無溢出
A+B= 0.000 1100 B = 3/32
( 4 ) A= -87= -101 0111 B, B=53=110 101 B
[A] 補 =1 010 1001 , [B] 補 =0 011 0101 , [-B] 補 =1 100 1011
[A-B] 補 = 1 0101001 + 1 1001011 = 0 1110100 —— 溢出
( 5 ) A=115= 111 0011 B, B= -24= -11 000 B
[A] 補 =0 1110011 , [B] 補 =1 , 110 1000
[A+B] 補 = 0 1110011 + 1 1101000 = 0 1011011—— 無溢出
A+B= 101 1011 B = 91
2 6 . 按機器補碼浮點運算步驟,計算 [x ± y] 補 .
( 1 ) x=2 -011 × 0.101 100 , y=2 -010 × ( -0.011 100 );
( 2 ) x=2 -011 × ( -0.100 010 ), y=2 -010 × ( -0.011 111 );
( 3 ) x=2 101 × ( -0.100 101 ), y=2 100 × ( -0.001 111) 。
解:先將 x 、 y 轉換成機器數形式:
( 1 ) x=2 -011 × 0.101 100 , y=2 -010 × ( -0.011 100 )
[x] 補 =1 , 101 ; 0.101 100 , [y] 補 =1 , 110 ; 1.100 100
[Ex] 補 =1,101, [y] 補 =1 , 110 , [Mx] 補 = 0.101 100 , [My] 補 = 1.100 100
1 )對階:
[ E] 補 =[Ex] 補 +[-Ey] 補 = 11 , 101+ 00 , 010=11 , 111 < 0 ,
應 Ex 向 Ey 對齊,則: [Ex] 補 +1=11 , 101+00 , 001=11 , 110 = [ Ey] 補
[x] 補 =1 , 110 ; 0.010 110
2 )尾數運算:
[Mx] 補 +[My] 補 = 0.010 110 + 1 1 .100 100 = 11.111010
[Mx] 補 +[-My] 補 =0.010 110 + 00.011100 = 00.110 0 10
3 )結果規格化:
[x+y] 補 =11 , 110 ; 11.111 010 = 11 , 011 ; 11.010 000 (尾數左規 3 次,階碼減 3 )
[x-y] 補 =11 , 110 ; 00.110 010 , 已是規格化數。
4 )舍入:無
5 )溢出:無
則: x+y=2 -101 × ( -0.110 000 )
x-y =2 -010 × 0.110 010
( 2 ) x=2 -011 × ( -0.100010 ) , y=2- 010 × ( -0.011111 )
[x] 補 =1 , 101 ; 1.011 110 , [y] 補 =1 , 110 ; 1.100 001
1) 對階:過程同 (1) 的 1 ),則
[ x] 補 =1 , 110 ; 1.101 111
2 )尾數運算:
[Mx] 補 +[My] 補 = 11.101111 + 11. 100001 = 11.010000
[Mx] 補 +[-My] 補 = 11.101111 + 00.011111 = 00.001110
3 )結果規格化:
[x+y] 補 =11 , 110 ; 11.010 000 , 已是規格化數
[x-y] 補 =11 , 110 ; 00.001 110 =11 , 100 ; 00.111000 (尾數左規 2 次,階碼減 2 )
4 )舍入:無
5 )溢出:無
則: x+y=2 -010 × ( -0.110 000 )
x-y =2 -100 × 0.111 000
( 3 ) x=2 101 × ( -0.100 101 ) , y=2 100 × ( -0.001 111 )
[x] 補 =0 , 101 ; 1.011 011 , [y] 補 =0 , 100 ; 1.110 001
1 ) 對階:
[ E] 補 =00 , 101+11 , 100=00 , 001 >0 ,應 Ey 向 Ex 對齊,則:
[Ey] 補 +1=00 , 100+00 , 001=00 , 101 =[ E x ] 補
[y] 補 =0 , 101 ; 1.111 000 ( 1 )
2 )尾數運算:
[Mx] 補 +[My] 補 = 11.011011+ 11.111000 ( 1 ) = 11.010011 ( 1 )
[Mx] 補 +[-My] 補 = 11.011011+ 00.000111 ( 1 ) = 11.100010 ( 1 )
2) 結果規格化:
[x+y] 補 =00 , 101 ; 11.010 011 ( 1 ) , 已是規格化數
[x-y] 補 =00 , 101 ; 11.100 010 ( 1 ) =00 , 100 ; 11.000 101 (尾數左規 1 次,階碼減 1 )
4 ) 舍入:
[x+y] 補 =00 , 101 ; 11.010 011 (舍)
[x-y] 補 不變
5 )溢出:無
則: x+y=2 101 × ( -0.101 101 )
x-y =2 100 × ( -0 .111 011 )
3 2 . 設機器字長爲 16 位,分別按 4 、 4 、 4 、 4 和 5 、 5 、 3 、 3 分組 後 ,
( 1 )畫出按兩種分組方案的單重分組並行進位鏈框圖,並比較哪種方案運算速度快。
( 2 )畫出按兩種分組方案的雙重分組並行進位鏈框圖,並對這兩種方案進行比較。
( 3 )用 74181 和 74182 畫出單重和雙重分組的並行進位鏈框圖。
解:( 1 ) 4—4—4—4 分組的 16 位單重分組並行進位鏈框圖見教材 286 頁圖 6.22 。
5—5—3—3 分組的 16 位單重分組並行進位鏈框圖如下:
( 2 ) 4—4—4—4 分組的 16 位雙重分組並行進位鏈框圖見教材 289 頁圖 6.26 。
5—5—3—3 分組的 16 位雙重分組並行進位鏈框圖如下:
5—5—3—3 分組的進位時間 =2.5ty 3=7.5ty ;
4—4—4—4 分組的進位時間 =2.5ty 3=7.5ty ;
可見, 兩種分組方案最長加法時間相同。
結論:雙重分組並行進位的最長進位時間只與組數和級數有關,與組內位數無關。
( 3 )單重分組 16 位並行加法器邏輯圖如下(正邏輯):
注意: 1 ) 74 181 芯片正、負邏輯的引腳表示方法;
2 )爲強調可比性, 5-5-3 -3 分組時不考慮扇入影響;
3 ) 181 芯片只有最高、最低兩個進位輸入 / 輸出端,組內進位無引腳;
4 ) 181 爲 4 位片,無法 5-5-3 -3 分組,只能 4-4-4-4 分組;
5 )單重分組跳躍進位只用到 181 ,使用 182 的一定是雙重以上分組跳躍進位;
6 )單重分組跳躍進位是並行進位和串行進位技術的結合;雙重分組跳躍進位是二級並行進位技術;特別注意在位數較少時,雙重分組跳躍進位可以採用全先行進位技術實現;位數較多時,可採用雙重分組跳躍進位和串行進位技術結合實現。
第 七 章
1. 什麼叫機器指令?什麼叫指令系統?爲什麼說指令系統與機器的主要功能以及與硬件結構之間存在着密切的關係?
答:參考 P300 。
2. 什麼叫尋址方式?爲什麼要學習尋址方式?
答:參看 P310 。
3. 什麼是指令字長、機器字長和存儲字長?
答:略。
4. 零地址指令的操作數來自哪裏??各舉一例說明。
答:零地址指令的操作數來自 ACC ,爲隱含約定。
在一地址指令中,另一個操作數的地址通常可採用 ACC 隱含尋址方式獲得。
5. 對於二地址指令而言,操作數的物理地址可安排在什麼地方?舉例說明。
答:對於二地址指令而言,操作數的物理地址可安排在寄存器內、指令中或內存單元內等。
8. 某機指令字長 16 位,每個操作數的地址碼爲 6 位,設操作碼長度固定,指令分爲零地址、一地址和二地址三種格式。若零地址指令有 M 條,一地址指令有 N 種,則二地址指令最多有幾種?若操作碼位數可變,則二地址指令最多允許有幾種?
解: 1 )若採用定長操作碼時,二地址指令格式如下:
OP ( 4 位) |
A1 ( 6 位) |
A2 ( 6 位) |
|
|
|
設二地址指令有 K 種,則: K=2 4 -M-N
當 M=1 (最小值), N=1 (最小值)時,二地址指令最多有: Kmax= 16-1-1 =14 種
3) 若採用變長操作碼時,二地址指令格式仍如 1 )所示,但操作碼長度可隨地址碼的個數而變。此時, K= 2 4 - ( N/2 6 + M/2 12 );
當( N/2 6 + M/2 12 ) 1 時( N/2 6 + M/2 12 向上取整), K 最大,則二地址指令最多有: Kmax=16-1=15 種(只留一種編碼作擴展標誌用。)
9. 試比較間接尋址和寄存器間接尋址。
答:略。
10. 試比較基址尋址和變址尋址。
略。
11. 畫出先變址再間址及先間址再變址的尋址過程示意圖。
解: 1 )先變址再間址尋址過程簡單示意如下:
EA=[(IX)+A] , IX (IX)+1
2 )先間址再變址尋址過程簡單示意如下: EA=(IX)+(A) , IX (IX)+1
1 6 . 某機主存容量爲 4M 16 位,且存儲字長等於指令字長,若該機指令系統可完成 108 種操作, 操作碼位數固定,且具有直接、間接、變址、基址、相對、立即等六種尋址方式,試回答:( 1 )畫出一地址指令格式並指出各字段的作用;
( 2 )該指令直接尋址的最大範圍;
( 3 )一次間址和多次間址的尋址範圍;
( 4 )立即數的範圍(十進制表示);
( 5 )相對尋址的位移量(十進制表示);
( 6 )上述六種尋址方式的指令哪一種執行時間最短?哪一種最長?爲什麼?哪一種便於程序浮動?哪一種最適合處理數組問題?
( 7 )如何修改指令格式,使指令的尋址範圍可擴大到 4M ?
( 8 )爲使一條轉移指令能轉移到主存的任一位置,可採取什麼措施?簡要說明之。
解:( 1 )單字長一地址指令格式:
OP ( 7 位) |
M ( 3 位) |
A ( 6 位) |
|
|
|
OP 爲操作碼字段,共 7 位,可反映 108 種操作;
M 爲尋址方式字段,共 3 位,可反映 6 種尋址操作;
A 爲地址碼字段,共 16-7-3 =6 位。
( 2 )直接尋址的最大範圍爲 2 6 =64 。
( 3 ) 由於存儲字長爲 16 位,故一次間址的尋址範圍爲 2 16 ; 若多次間址,需用存儲字的最高位來區別是否繼續間接尋址,故尋址範圍爲 2 15 。
( 4 )立即數的範圍 爲 -32 —— 31 (有符號數),或 0 —— 63 ( 無符號數 )。
( 5 )相對尋址的位移量爲 -32 —— 31 。
( 6 ) 上述六種尋址方式中,因立即數由指令直接給出,故立即尋址的指令執行時間最短。間接尋址在指令的執行階段要多次訪存 ( 一次間接尋址要兩次訪存,多次間接尋址要多次訪存 ) ,故執行時間最長。變址尋址由於變址寄存器的內容由用戶給定,而 且 在程序的執行過程中允許用戶修改,而其形式地址始終不變,故變址尋址的指令便於用戶編制處理數組問題的程序。相對尋址操作數的有效地址只與當前指令地址相差一定的位移量,與直接尋址相比,更有利於程序浮動。
( 7 ) 方案一 :爲使指令尋址範圍可擴大到 4M ,需要有效地址 22 位,此時可將單字長一地址指令的格式改爲雙字長,如下圖示:
OP ( 7 位) |
MOD ( 3 位) |
A (高 6 位) |
A (低 16 位) |
|
|
|
|
|
方案二 :如果仍採用單字長指令( 16 位)格式,爲使指令尋址範圍擴大到 4M ,可通過段尋址方案實現。安排如下:
硬件設段寄存器 DS ( 16 位),用來存放段地址。在完成指令尋址方式所規定的尋址操作後,得有效地址 EA ( 6 位),再由硬件自動完成段尋址,最後得 22 位物理地址。 即: 物理地址 = ( DS ) 2 6 + EA
注:段尋址方式由硬件隱含實現。在編程指定的尋址過程完成、 EA 產生之後由硬件自動完成,對用戶是透明的。
方案三: 在採用單字長指令( 16 位)格式時,還可通過頁面尋址方案使指令尋址範圍擴大到 4M 。安排如下:
硬件設頁面寄存器 PR ( 16 位),用來存放頁面地址。指令尋址方式中增設頁面尋址。當需要使指令尋址範圍擴大到 4M 時,編程選擇頁面尋址方式,則: EA = ( PR ) ‖ A (有效地址 = 頁面地址 “ 拼接 ” 6 位形式地址) , 這樣得到 22 位有效地址。
( 8 ) 爲使一條轉移指令能轉移到主存的任一位置,尋址範圍須達到 4M ,除了採用 (7) 方案一中的 雙字長一地址指令 的格式外,還可配置 22 位的基址寄存器或 22 位的變址寄存器,使 EA = (BR) + A ( BR 爲 22 位的基址寄存器 ) 或 EA = ( IX ) + A (IX 爲 22 位的變址寄存器 ) ,便可訪問 4M 存儲空間。還可以通過 16 位的基址寄存器左移 6 位再和形式地址 A 相加,也可達到同樣的效果。
總之,不論採取何種方式,最終得到的實際地址應是 22 位。
1 9 . 某 CPU 內有 32 個 32 位的通用寄存器,設計一種能容納 64 種操作的指令系統。假設指令字長等於機器字長,試回答 以下問題 :
( 1 )如果主存可直接或間接尋址,採用寄存器 — 存儲器型指令,能直接尋址的最大存儲空間是多少?畫出指令格式並說明各字段的含義。
( 2 ) 在滿足( 1 )的前提下, 如果採用通用寄存器作基址寄存器,則上述寄存器 — 存儲器型指令的指令格式有何特點?畫出指令格式並指出這類指令可訪問多大的存儲空間?
解:( 1 )如採用 RS 型指令,則此指令一定是二地址以上的地址格式,指令格式如下:
OP ( 6 位) |
R ( 5 位) |
I(1 位 ) |
A ( 20 位) |
|
|
|
|
操作碼字段 OP 佔 6 位,因爲 2 6 >=64 ;
寄存器編號 R 佔 5 位,因爲 2 5 >=32 ;
間址位 I 佔 1 位,當 I=0 ,存儲器尋址的操作數爲直接尋址,當 I=1 時爲間接尋址;
形式地址 A 佔 20 位,可以直接尋址 2 20 字。
( 2 )如採用基址尋址,則指令格式中應給出基址寄存器號,以指定哪一個通用寄存器用作基址寄存器。指令格式變爲:
OP ( 6 位) |
源 R ( 5 位) |
I ( 1 位) |
X ( 1 位) |
目標 R ( 5 位) |
A ( 14 位) |
|
|
|
|
|
|
增加尋址特徵位 X ,當 X=1 時,以目標寄存器 R 作爲基址寄存器進行基址尋址。
基址尋址可訪問存儲空間爲: 2 32 字。
第八章
1. CPU 有哪些功能?畫出其結構框圖並簡要說明各個部件的作用。
答:參考 P328 和圖 8.2 。
2. 什麼是指令週期?指令週期是否有一個固定值?爲什麼?
解:指令週期是指 取出並執行完 一條指令 所需的 時間。
由於計算機中各種指令執行所需的時間差異很大,因此爲了提高 CPU 運行效率,即使在同步控制的機器中,不同指令的指令週期長度都是不一致的,也就是說指令週期對於不同的指令來說不是一個固定值。
3. 畫出指令週期的流程圖,分析說明圖中每個子週期的作用。
答:參看 P343 及圖 8.8 。
4. 設 CPU 內有下列部件: PC 、 IR 、 SP 、 AC 、 MAR 、 MDR 和 CU 。
( 1 )畫出完成間接尋址的取數指令 LDA@X (將主存某地址單元 X 的內容取至 AC 中)的數據流(從取指令開始)。
( 2 )畫出中斷週期的數據流。
解: CPU 中的數據流向與所採用的數據通路結構直接相關,不同的數據通路中的數據流是不一樣的。常用的數據通路結構方式有直接連線、單總線、雙總線、三總線等形式,目前大多采用總線結構,直接連線方式僅適用於結構特別簡單的機器中。
爲簡單起見,本題採用單總線將題 中 所給部件連接起來,框圖如下:
( 1 ) LDA@X 指令週期 數據 流程圖:
( 2 )中斷週期流程圖如下:
注 : 解這道題有兩個要素,首先要根據所給部件設計好數據通路,即確定信息流動的載體。其次選擇好描述數據流的方法,無論採用什麼樣的表達方式,其關鍵都要能清楚地反映數據在通路上流動的順序,即強調一個 “ 流 ” 字。較好的表達方式是流程圖的形式。
5. 中斷週期前是什麼階段?中斷週期後又是什麼階段?在中斷週期 CPU 應完成什麼操作?
答:中斷週期前是執行週期,中斷週期後是取指週期。在中斷週期, CPU 應完成保存斷點、將中斷向量送 PC 和關中斷等工作。
7. 什麼叫系統的並行性?粗粒度並行和細粒度並行有何區別?
答:所謂並行性包含同時性和併發性。同時性是指兩個或兩個以上的事件在同一時刻發生,併發性是指兩個或多個事件在同一時間段發生。即在同一時刻或同一時間段內完成兩個或兩個以上性質相同或性質不同的功能,只要在時間上存在相互重疊,就存在並行性。
並行性又分爲粗粒度並行和細粒度並行兩類。粗粒度並行是指在多個處理機上分別運行多個進程,由多臺處理機合作完成一個程序,一般用算法實現。細粒度並行是指在處理機的指令級 和操作級的並行性。
8. 什麼是指令流水?畫出指令二級流水和四級流水的示意圖,它們中哪個更能提高處理機速度,爲什麼?
答:指令流水是指將一條指令的執行過程分爲 n 個操作時間大致相等的階段,每個階段由一個獨立的功能部件來完成,這樣 n 個部件就可以同時執行 n 條指令的不同階段,從而大大提高 CPU 的吞吐率。
指令二級流水和四級流水示意圖如下:
四級流水更能提高處理機的速度。分析如下:
假設 IF 、 ID 、 EX 、 WR 每個階段耗時爲 t ,則連續執行 n 條指令
採用二級流水線時,耗時爲: 4t+(n-1)2t=(2n+2)t
採用四級流水線時,耗時爲: 4t+(n-1)t=(n+3)t
在 n>1 時, n+3<2n+2 ,可見四級流水線耗時比二級流水線耗時短,因此 更能提高處理機速度。
1 7 . 在中斷系統中 INTR 、 INT 、 EINT 三個觸發器各有何作用?
解: INTR—— 中斷請求觸發器,用來登記中斷源發出的隨機性中斷請求信號,以便爲 CPU 查詢中斷及中斷排隊判優線路提供穩定的中斷請求信號 。
EINT—— 中斷允許觸發器, CPU 中的中斷總開關。當 EINT=1 時,表示允許中斷(開中斷),當 EINT=0 時,表示禁止中斷(關中斷)。其狀態可由開、關中斷等指令設置 。
INT—— 中斷標記觸發器,控制器時序系統中週期狀態分配電路的一部分,表示中斷週期標記。當 INT=1 時,進入中斷週期,執行中斷隱指令的操作。
2 4 . 現有 A 、 B 、 C 、 D 四個中斷源,其優先級由高向低按 A 、 B 、 C 、 D 順序排列。若中斷服務程序的執行時間爲 20 µ s ,請根據下圖所示時間軸給出的中斷源請求中斷的時刻,畫出 CPU 執行程序的軌跡。
解: A 、 B 、 C 、 D 的響優先級即處理優先級。 CPU 執行程序的軌跡圖如下:
2 5 . 某機有五個中斷源 L0 、 L1 、 L2 、 L3 、 L4 ,按中斷響應的優先次序由高向低排序爲 L 0 L 1 L 2 L 3 L4 ,根據下示格式,現要求中斷處理次序改爲 L 1 L 4 L 2 L 0 L3 ,根據下面的格式,寫出各中斷源的屏蔽字。
解:各中斷源屏蔽狀態見下表 :
中斷源 |
屏蔽字 |
|
|
|
|
0 |
1 |
2 |
3 |
4 |
|
I0 |
1 |
0 |
0 |
1 |
0 |
I1 |
1 |
1 |
1 |
1 |
1 |
I2 |
1 |
0 |
1 |
1 |
0 |
I3 |
0 |
0 |
0 |
1 |
0 |
I4 |
1 |
0 |
1 |
1 |
1 |
|
|
|
|
|
|
表中:設屏蔽位 =1 ,表示屏蔽;屏蔽位 =0 ,表示中斷開放。
2 6 . 設某機配有 A 、 B 、 C 三臺設備,其優先順序 按 A B C 降序排列,爲改變中斷處理次序,它們的中斷 屏蔽字 設置如下:
設備 |
屏蔽字 |
A |
111 |
B |
010 |
C |
011 |
|
|
請按下圖所示時間軸給出的設備請求中斷的時刻,畫出 CPU 執行程序的軌跡。設 A 、 B 、 C 中斷服務程序的執行時間均爲 20 s 。
解: A 、 B 、 C 設備的響應優先級爲 A 最高、 B 次之、 C 最低,處理優先級爲 A 最高、 C 次之、 B 最低。 CPU 執行程序的軌跡圖如下: