1.指令集結構設計所涉及的內容有哪些?
解:
(1) 指令集功能設計:主要有RISC和CISC兩種技術發展方向;
(2) 尋址方式的設計:設置尋址方式可以通過對基准程序進行測試統計,察看各種尋址方式的使用頻度,根據適用頻度設置相應必要的尋址方式;
(3) 操作數表示和操作數類型:主要的操作數類型和操作數表示的選擇有,浮點數據類型(可以采用IEEE 754標准)、整型數據類型(8位、16位、32位的表示方法)、字符型
(8位)、十進制數據類型(壓縮十進制和非壓縮十進制數據表示)等等。
(4) 尋址方式的表示:可以將尋址方式編碼與操作碼中,也可將尋址方式作為一個單獨的域來表示。
(5) 指令集格式的設計:有固定長度編碼方式、可變長編碼方式和混合編碼方式三種選擇。
2. 簡述CISC計算機結構指令集功能設計的主要目標。從當前的計算機技術觀點來看,CISC 結構有什么缺點?
解:
(1)CISC結構追求的目標是強化指令功能,減少程序的指令條數,以達到提高性能的目的。
(2)從目前的計算機技術觀點來看,CISC結構存在以下幾個缺點:
a. 在CISC結構的指令系統中,各種指令的使用頻率相差懸殊。
b. CISC結構的指令系統的復雜性帶來了計算機體系結構的復雜性,這不僅增加了研制時間和成本,而且還容易造成設計錯誤。
c. CISC結構的指令系統的復雜性給VLSI設計帶來了很大負擔,不利於單片集成。
d. CISC結構的指令系統中,許多復雜指令需要很復雜的操作,因而運行速度慢。
e. 在結構的指令系統中,由於各條指令的功能不均衡性,不利於采用先進的計算機體系結構技術(如流水技術)來提高系統的性能。
3.簡述RISC結構的設計原則。
解:
(1) 選取使用頻率最高的指令,並補充一些最有用的指令;
(2) 每條指令的功能應盡可能簡單,並在一個機器周期內完成;
(3) 所有指令長度均相同;
(4) 只有Load和Store操作指令才訪問存儲器,其它指令操作均在寄存器之間進行
(5) 以簡單有效的方式支持高級語言。
4.某台處理器的各條指令的使用頻度如下:
指令 | 使用頻度 | 指令 | 使用頻度 | 指令 | 使用頻度 |
ADD | 43% | JOM | 6% | CIL | 2 |
SUB | 13% | STO | 5% | CLA | 22 |
JMP | 7% | SHR | 1% | STP | 1 |
請分別設計這9條指令的操作碼的哈夫曼編碼,3/3/3擴展編碼,2/7擴展編碼,並計算這三種編碼的平均碼長。
解:
根據給出的九條指令的使用頻度和哈弗曼生成算法的結構的不用構造了兩種不同的哈夫曼樹。
(左邊為A,右邊為B)
各編碼如下:
指令 | Ii | Pi | 哈弗曼A | 哈弗曼B | 3/3/3 | 2/7 |
ADD | I1 | 0.43 | 0 | 0 | 00 | 00 |
CLA | I2 | 0.22 | 10 | 100 | 01 | 01 |
SUB | I3 | 0.13 | 110 | 101 | 10 | 1000 |
JMP | I4 | 0.07 | 11100 | 1100 | 1100 | 1001 |
JOM | I5 | 0.06 | 11101 | 1101 | 1101 | 1010 |
STO | I6 | 0.05 | 11110 | 1110 | 1110 | 1011 |
CIL | I7 | 0.02 | 111110 | 11110 | 111100 | 1100 |
SHR | I8 | 0.01 | 1111110 | 111110 | 111101 | 1101 |
STP | I9 | 0.01 | 1111111 | 111111 | 111110 | 1110 |
由表可知,三種編碼的平均碼長為:(公式:L=∑Pi*Li)
哈弗曼編碼:2.42位
3/3/3編碼:2.52位
2/7編碼:2.70位
5.某機指令字長16位。設有單地址指令和雙地址指令兩類。若每個地址字段為6位.且雙地址指令有X條。問單地址指令最多可以有多少條?
解:
雙地址指令結構為:(4位操作碼)(6位地址碼)(6位地址碼)
單地址指令結構為:(10位操作碼)(6位地址碼)
因此,每少一條雙地址指令,則多2^6條單地址指令,
雙地址指令最多是2^(16-6-6)=2^4=16條 ,
所以單地址指令最多有(16-X)*2^6條。
6.若某機要求:三地址指令4條,單地址指令255條,零地址指令16條。設指令字長為12位.每個地址碼長為3位。問能否以擴展操作碼為其編碼?如果其中單地址指令為254條呢?說明其理由。
解:
(1)不能用擴展碼為其編碼。
指令字長12位,每個地址碼占3位,三地址指令最多是2^(12-3-3-3)=8條, 現三地址指令需4條,
所以可有4條編碼作為擴展碼,而單地址指令最多為4×2^3×2^3=2^8=256條,現要求單地址指令255條,
所以可有一條編碼作擴展碼
因此零地址指令最多為1×2^3=8條
不滿足題目要求,故不可能以擴展碼為其編碼。
(2)若單地址指令254條,可以用擴展碼為其編碼。
依據(1)中推導,單地址指令中可用2條編碼作為擴展碼,零地址指令為2×2^3=16條,滿足題目要求