計算機組成習題答案(清華大學出版社)
《計算機組成習題答案(清華大學出版社)》由會員分享,可在線閱讀,更多相關《計算機組成習題答案(清華大學出版社)(76頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第 1 章 習 題 答 案 5 若有兩個基準測試程序 P1 和 P2 在機器 M1 和 M2 上運行 假定 M1 和 M2 的價格分別是 5000 元和 8000 元 下表給出了 P1 和 P2 在 M1 和 M2 上所花的時間和指令條數(shù) M1 M2程序 指令條數(shù) 執(zhí)行時間 ms 指令條數(shù) 執(zhí)行時間 ms P1 200 106 10000 150 106 5000 P2 300 103 3 420 103 6 請回答下列問題 1 對于 P1 哪臺機器的速度快 快多少 對于 P2 呢 2 在 M1 上執(zhí)行 P1 和 P2 的速度分別是多少 MIPS 在 M2 上的執(zhí)行速度又各是多少 從執(zhí)行速 度來看 對于 P2 哪臺機器的速度快 快多少 3 假定 M1 和 M2 的時鐘頻率各是 800MHz 和 1 2GHz 則在 M1 和 M2 上執(zhí)行 P1 時的平均時鐘 周期數(shù) CPI 各是多少 4 如果某個用戶需要大量使用程序 P1 并且該用戶主要關心系統(tǒng)的響應時間而不是吞吐率 那 么 該用戶需要大批購進機器時 應該選擇 M1 還是 M2 為什么 提示 從性價比上考慮 5 如果另一個用戶也需要購進大批機器 但該用戶使用 P1 和 P2 一樣多 主要關心的也是響應時 間 那么 應該選擇 M1 還是 M2 為什么 參考答案 1 對于 P1 M2 比 M1 快一倍 對于 P2 M1 比 M2 快一倍 2 對于 M1 P1 的速度為 200M 10 20MIPS P2 為 300k 0 003 100MIPS 對于 M2 P1 的速度為 150M 5 30MIPS P2 為 420k 0 006 70MIPS 從執(zhí)行速度來看 對于 P2 因為 100 70 1 43 倍 所以 M1 比 M2 快 0 43 倍 3 在 M1 上執(zhí)行 P1 時的平均時鐘周期數(shù) CPI 為 10 800M 200 10 6 40 在 M2 上執(zhí)行 P1 時的平均時鐘周期數(shù) CPI 為 5 1 2G 150 10 6 40 4 考慮運行 P1 時 M1 和 M2 的性價比 因為該用戶主要關心系統(tǒng)的響應時間 所以性價比中的性 能應考慮執(zhí)行時間 其性能為執(zhí)行時間的倒數(shù) 故性價比 R 為 R 1 執(zhí)行時間 價格 R 越大說明性價比越高 也即 執(zhí)行時間 價格 的值越小 則性價比越高 因為 10 5000 5 8000 所以 M2 的性價比高 應選擇 M2 5 P1 和 P2 需要同等考慮 性能有多種方式 執(zhí)行時間總和 算術平均 幾何平均 若用算術平均方式 則 因為 10 0 003 2 5000 5 0 006 2 8000 所以 M2 的性價比高 應選擇 M2 若用幾何平均方式 則 因為 sqrt 10 0 003 5000 sqrt 5 0 006 8000 所以 M1 的性價比高 應選擇 M1 6 若機器 M1 和 M2 具有相同的指令集 其時鐘頻率分別為 1GHz 和 1 5GHz 在指令集中有五種不同 類型的指令 A E 下表給出了在 M1 和 M2 上每類指令的平均時鐘周期數(shù) CPI 機器 A B C D E M1 1 2 2 3 4 M2 2 2 4 5 6 請回答下列問題 1 M1 和 M2 的峰值 MIPS 各是多少 2 假定某程序 P 的指令序列中 五類指令具有完全相同的指令條數(shù) 則程序 P 在 M1 和 M2 上運 行時 哪臺機器更快 快多少 在 M1 和 M2 上執(zhí)行程序 P 時的平均時鐘周期數(shù) CPI 各是多少 參考答案 1 M1 上可以選擇一段都是 A 類指令組成的程序 其峰值 MIPS 為 1000MIPS M2 上可以選擇一段 A 和 B 類指令組成的程序 其峰值 MIPS 為 1500 2 750MIPS 2 5 類指令具有完全相同的指令條數(shù) 所以各占 20 在 M1 和 M2 上執(zhí)行程序 P 時的平均時鐘周期數(shù) CPI 分別為 M1 20 1 2 2 3 4 0 2 12 2 4 M2 20 2 2 4 5 6 0 2 19 3 8 假設程序 P 的指令條數(shù)為 N 則在 M1 和 M2 上的執(zhí)行時間分別為 M1 2 4 N 1 1G 2 4N ns M2 3 8 N 1 1 5G 2 53 N ns M1 執(zhí)行 P 的速度更快 每條指令平均快 0 13ns 也即 M1 比 M2 快 0 13 2 53 100 5 思考 如果說程序 P 在 M1 上執(zhí)行比 M2 上快 3 8 2 4 3 8 100 36 8 那么 這個結論顯然 是錯誤的 請問錯在什么地方 7 假設同一套指令集用不同的方法設計了兩種機器 M1 和 M2 機器 M1 的時鐘周期為 0 8ns 機器 M2 的時鐘周期為 1 2ns 某個程序 P 在機器 M1 上運行時的 CPI 為 4 在 M2 上的 CPI 為 2 對于程序 P 來說 哪臺機器的執(zhí)行速度更快 快多少 參考答案 假設程序 P 的指令條數(shù)為 N 則在 M1 和 M2 上的執(zhí)行時間分別為 M1 4 N 0 8 3 2N ns M2 2 N 1 2 2 4 N ns 所以 M2 執(zhí)行 P 的速度更快 每條指令平均快 0 8ns 比 M1 快 0 8 3 2 100 25 8 假設某機器 M 的時鐘頻率為 4GHz 用戶程序 P 在 M 上的指令條數(shù)為 8 109 其 CPI 為 1 25 則 P 在 M 上的執(zhí)行時間是多少 若在機器 M 上從程序 P 開始啟動到執(zhí)行結束所需的時間是 4 秒 則 P 占 用的 CPU 時間的百分比是多少 參考答案 程序 P 在 M 上的執(zhí)行時間為 1 25 8 109 1 4G 2 5 s 從啟動 P 執(zhí)行開始到執(zhí)行結束的總時間 為 4 秒 其中 2 5 秒是 P 在 CPU 上真正的執(zhí)行時間 其他時間可能執(zhí)行操作系統(tǒng)程序或其他用戶程序 程序 P 占用的 CPU 時間的百分比為 2 5 4 62 5 9 假定某編譯器對某段高級語言程序編譯生成兩種不同的指令序列 S1 和 S2 在時鐘頻率為 500MHz 的 機器 M 上運行 目標指令序列中用到的指令類型有 A B C 和 D 四類 四類指令在 M 上的 CPI 和 兩個指令序列所用的各類指令條數(shù)如下表所示 A B C D 各指令的 CPI 1 2 3 4 S1 的指令條數(shù) 5 2 2 1 S2 的指令條數(shù) 1 1 1 5 請問 S1 和 S2 各有多少條指令 CPI 各為多少 所含的時鐘周期數(shù)各為多少 執(zhí)行時間各為多少 參考答案 S1 有 10 條指令 CPI 為 5 1 2 2 2 3 1 4 10 1 9 所含的時鐘周期數(shù)為 10 1 9 19 執(zhí)行時 間為 19 500M 38ns S2 有 8 條指令 CPI 為 1 1 1 2 1 3 5 4 8 3 25 所含的時鐘周期數(shù)為 8 3 25 26 執(zhí)行時 間為 26 500M 52ns 注 從上述結果來看 對于同一個高級語言源程序 在同一臺機器上所生成的目標程序不同 其 執(zhí)行時間可能不同 而且 并不是指令條數(shù)少的目標程序執(zhí)行時間就一定少 10 假定機器 M 的時鐘頻率為 1 2GHz 某程序 P 在機器 M 上的執(zhí)行時間為 12 秒鐘 對 P 優(yōu)化時 將 其所有的乘 4 指令都換成了一條左移 2 位的指令 得到優(yōu)化后的程序 P 已知在 M 上乘法指令的 CPI 為 5 左移指令的 CPI 為 2 P 的執(zhí)行時間是 P 執(zhí)行時間的 1 2 倍 則 P 中有多少條乘法指令被 替換成了左移指令被執(zhí)行 參考答案 顯然 P 的執(zhí)行時間為 10 秒 因此 P 比 P 多花了 2 秒鐘 因此 執(zhí)行時被換成左移指令的乘 法指令的條數(shù)為 1 2G 2 5 2 800M 第 二 章 習 題 答 案 3 實現(xiàn)下列各數(shù)的轉換 1 25 8125 10 2 8 16 2 101101 011 2 10 8 16 8421 3 0101 1001 0110 0011 8421 10 2 16 4 4E C 16 10 2 參考答案 1 25 8125 10 1 1001 1101 2 31 64 8 19 D 16 2 101101 011 2 45 375 10 55 3 8 2D 6 16 0100 0101 0011 0111 0101 8421 3 0101 1001 0110 0011 8421 596 3 10 1001010100 01001100110011 2 254 4CCC 16 4 4E C 16 78 75 10 0100 1110 11 2 4 假定機器數(shù)為 8 位 1 位符號 7 位數(shù)值 寫出下列各二進制數(shù)的原碼和補碼表示 0 1001 0 1001 1 0 1 0 0 010100 0 010100 0 0 參考答案 原碼 補碼 0 1001 0 1001000 0 1001000 0 1001 1 1001000 1 0111000 1 0 溢出 溢出 1 0 溢出 1 0000000 0 010100 0 0101000 0 0101000 0 010100 1 0101000 1 1011000 0 0 0000000 0 0000000 0 1 0000000 0 0000000 5 假定機器數(shù)為 8 位 1 位符號 7 位數(shù)值 寫出下列各二進制數(shù)的補碼和移碼表示 1001 1001 1 1 10100 10100 0 0 參考答案 移碼 補碼 1001 10001001 00001001 1001 01110111 11110111 1 10000001 00000001 1 011111111 11111111 10100 10010100 00010100 10100 01101100 11101100 0 10000000 00000000 0 10000000 00000000 6 已知 x 補 求 x 1 x 補 1 1100111 2 x 補 10000000 3 x 補 0 1010010 4 x 補 11010011 參考答案 1 x 補 1 1100111 x 0 0011001B 2 x 補 10000000 x 10000000B 128 3 x 補 0 1010010 x 0 101001B 4 x 補 11010011 x 101101B 45 7 假定一臺 32 位字長的機器中帶符號整數(shù)用補碼表示 浮點數(shù)用 IEEE 754 標準表示 寄存器 R1 和 R2 的內容分別為 R1 0000108BH R2 8080108BH 不同指令對寄存器進行不同的操作 因而 不同指令執(zhí)行時寄存器內容對應的真值不同 假定執(zhí)行下列運算指令時 操作數(shù)為寄存器 R1 和 R2 的內容 則 R1 和 R2 中操作數(shù)的真值分別為多少 1 無符號數(shù)加法指令 2 帶符號整數(shù)乘法指令 3 單精度浮點數(shù)減法指令 參考答案 R1 0000108BH 0000 0000 0000 0000 0001 0000 1000 1011b R2 8080108BH 1000 0000 1000 0000 0001 0000 1000 1011b 1 對于無符號數(shù)加法指令 R1 和 R2 中是操作數(shù)的無符號數(shù)表示 因此 其真值分別為 R1 108BH R2 8080108BH 2 對于帶符號整數(shù)乘法指令 R1 和 R2 中是操作數(shù)的帶符號整數(shù)補碼表示 由最高位可知 R1 為正數(shù) R2 為負數(shù) R1 的真值為 108BH R2 的真值為 0111 1111 0111 1111 1110 1111 0111 0100b 1b 7F7FEF75H 3 對于單精度浮點數(shù)減法指令 R1 和 R2 中是操作數(shù)的 IEEE754 單精度浮點數(shù)表示 在 IEEE 754 標準中 單精度浮點數(shù)的位數(shù)為 32 位 其中包含 1 位符號位 8 位階碼 23 位尾數(shù) 由 R1 中的內容可知 其符號位為 0 表示其為正數(shù) 階碼為 0000 0000 尾數(shù)部分為 000 0000 0001 0000 1000 1011 故其為非規(guī)格化浮點數(shù) 指數(shù)為 126 尾數(shù)中沒有隱藏的 1 用十六進制 表示尾數(shù)為 0 002116H 故 R1 表示的真值為 0 002116H 10 126 由 R2 中的內容可知 其符號位為 1 表示其為負數(shù) 階碼為 0000 0001 尾數(shù)部分為 000 0000 0001 0000 1000 1011 故其為規(guī)格化浮點數(shù) 指數(shù)為 1 127 126 尾數(shù)中有隱藏的 1 用十六 進制表示尾數(shù)為 1 002116H 故 R2 表示的真值為 1 002116H 10 126 8 假定機器 M 的字長為 32 位 用補碼表示帶符號整數(shù) 下表第一列給出了在機器 M 上執(zhí)行的 C 語言 程序中的關系表達式 請參照已有的表欄內容完成表中后三欄內容的填寫 關系表達式 運算類型 結果 說明 0 0U 1 0 1 2147483647 1 2147483647U 2147483647 1 2147483647 int 2147483648U 1 2 unsigned 1 2 無符號整數(shù) 有符號整數(shù) 無符號整數(shù) 有符號整數(shù) 無符號整數(shù) 有符號整數(shù) 有符號整數(shù) 無符號整數(shù) 1 1 0 1 0 1 1 1 00 0B 00 0B 11 1B 1 00 0B 0 011 1B 231 1 100 0B 231 011 1B 231 1 100 0B 231 11 1B 1 11 10B 2 11 1B 232 1 11 10B 232 2 9 以下是一個 C 語言程序 用來計算一個數(shù)組 a 中每個元素的和 當參數(shù) len 為 0 時 返回值應該是 0 但是在機器上執(zhí)行時 卻發(fā)生了存儲器訪問異常 請問這是什么原因造成的 并說明程序應該 如何修改 1 float sum elements float a unsigned len 2 3 int i 4 float result 0 5 6 for i 0 i len 1 i 7 result a i 8 return result 9 參考答案 參數(shù) len 的類型是 unsigned 所以 當 len 0 時 執(zhí)行 len 1 的結果為 11 1 是最大可表示的無符 號數(shù) 因而 任何無符號數(shù)都比它小 使得循環(huán)體被不斷執(zhí)行 引起數(shù)組元素的訪問越界 發(fā)生存 儲器訪問異常 只要將 len 聲明為 int 型 或循環(huán)的測試條件改為 i len 10 設某浮點數(shù)格式為 其中 移碼的偏置常數(shù)為 16 補碼采用一位符號位 基數(shù)為 4 1 用這種格式表示下列十進制數(shù) 1 7 0 12 19 1 8 2 寫出該格式浮點數(shù)的表示范圍 并與 12 位定點補碼整數(shù)表示范圍比較 參考答案 假定采用 0 舍 1 入法進行舍入 1 1 7 1 1011001B 0 011011B 41 故階碼為 1 16 17 10001B 尾數(shù)為 0 011011 的補碼 即 0 011011 所以 1 7 表示為 0 10001 011011 0 12 0 000111101B 0 011111B 4 1 故階碼為 1 16 15 01111B 尾數(shù)為 0 011111 的補碼 即 1 100001 所以 0 12 表示為 1 01111 100001 數(shù)符 S1 階碼 S1 尾數(shù) S15 位移碼 S1 6 位補碼 S1 1 位 S1 19 10011B 0 010011B 43 故階碼為 3 16 19 10011B 尾數(shù)為 0 010011 所以 19 表 示為 0 10011 010011 1 8 0 125 0 001B 0 100000 4 1 階碼為 1 16 15 01111B 尾數(shù)為 0 100000 的補碼 即 1 100000 所以 1 8 表示為 1 01111 100000 2 該格式浮點數(shù)表示的范圍如下 正數(shù)最大值 0 111111B 411111 即 0 333 4 15 2 30 10 9 正數(shù)最小值 0 000001B 400000 即 0 001 4 16 2 34 10 10 負數(shù)最大值 0 000001B 400000 即 0 001 4 16 負數(shù)最小值 1 000000B 411111 即 1 000 4 15 因此 該格式浮點數(shù)的數(shù)量級在 10 10 10 9 之間 12 位定點補碼整數(shù)的表示范圍為 2 11 2 11 1 即 2048 2047 由此可見 定點數(shù)和浮點數(shù)的表示范圍相差非常大 11 下列幾種情況所能表示的數(shù)的范圍是什么 1 16 位無符號整數(shù) 2 16 位原碼定點小數(shù) 3 16 位補碼定點小數(shù) 4 16 位補碼定點整數(shù) 5 下述格式的浮點數(shù) 基數(shù)為 2 移碼的偏置常數(shù)為 128 參考答案 1 無符號整數(shù) 0 2 16 1 2 原碼定點小數(shù) 1 2 15 1 2 15 3 補碼定點小數(shù) 1 1 2 15 4 補碼定點整數(shù) 32768 32767 5 浮點數(shù) 負數(shù) 1 2 7 2 127 2 7 2 128 正數(shù) 2 135 1 2 7 2 127 12 以 IEEE 754 單精度浮點數(shù)格式表示下列十進制數(shù) 1 75 19 1 8 258 參考答案 1 75 1 11B 1 11B 20 故階碼為 0 127 01111111B 數(shù)符為 0 尾數(shù)為 1 110 0 小數(shù)點前為 隱藏位 所以 1 7 表示為 0 01111111 110 0000 0000 0000 0000 0000 用十六進制表示為 3FE00000H 19 10011B 1 0011B 24 故階碼為 4 127 10000011B 數(shù)符為 0 尾數(shù)為 1 00110 0 所以 19 表示為 0 10000011 001 1000 0000 0000 0000 0000 用十六進制表示為 41980000H 1 8 0 125 0 001B 1 0 2 3 階碼為 3 127 01111100B 數(shù)符為 1 尾數(shù)為 1 0 0 所 數(shù)符 S1 階碼 S1 尾數(shù) S11 位 S1 8 位移碼 S1 7 位原碼 S1 以 1 8 表示為 1 01111100 000 0000 0000 0000 0000 0000 用十六進制表示為 BE000000H 258 100000010B 1 0000001B 28 故階碼為 8 127 10000111B 數(shù)符為 0 尾數(shù)為 1 0000001 所以 258 表示為 0 10000111 000 0001 0000 0000 0000 0000 用十六進制表示為 43810000H 13 設一個變量的值為 4098 要求分別用 32 位補碼整數(shù)和 IEEE 754 單精度浮點格式表示該變量 結果 用十六進制表示 并說明哪段二進制序列在兩種表示中完全相同 為什么會相同 參考答案 4098 1 0000 0000 0010B 1 0000 0000 001 212 32 位 2 補碼形式為 0000 0000 0000 0000 0001 0000 0000 0010 00001002H IEEE754 單精度格式為 0 10001011 0000 0000 0010 0000 0000 000 45801000H 粗體部分為除隱藏位外的有效數(shù)字 因此 在兩種表示中是相同的序列 14 設一個變量的值為 2147483647 要求分別用 32 位補碼整數(shù)和 IEEE754 單精度浮點格式表示該變量 結果用十六進制表示 并說明哪種表示其值完全精確 哪種表示的是近似值 參考答案 2147483647 111 1111 1111 1111 1111 1111 1111 1111B 1 11 1111 1111 1111 1111 1111 1111 1111 230 32 位 2 補碼形式為 1000 0000 0000 0000 0000 0000 0000 0001 80000001H IEEE 754 單精度格式為 1 10011101 1111 1111 1111 1111 1111 111 CEFFFFFFH 32 位 2 補碼形式能表示精確的值 而浮點數(shù)表示的是近似值 低位被截斷 15 下表給出了有關 IEEE 754 浮點格式表示中一些重要數(shù)據(jù)的取值 表中已經(jīng)有最大規(guī)格化數(shù)的相應內 容 要求填入其他浮點數(shù)的相應內容 注 表中 a 代表一個在 1 到 10 之間的正純小數(shù) 單精度 雙精度 項目 階碼 尾數(shù) 以 2 的冪次表示 的值 以 10 的冪次 表示的值 以 2 的冪次表 示的值 以 10 的冪 次表示的值 0 1 最大規(guī)格化數(shù) 最小規(guī)格化數(shù) 最大非規(guī)格化數(shù) 最小非規(guī)格化數(shù) NaN 00000000 01111111 11111110 00000001 00000000 00000000 11111111 11111111 0 00 0 00 1 11 0 00 1 11 0 01 0 00 非全 0 0 1 2 2 23 2127 1 0 2 126 1 2 23 2 126 2 23 2 126 2 149 0 1 a 1038 a 10 38 a 10 38 a 10 44 0 1 2 2 52 21023 1 0 2 1022 1 2 52 2 1022 2 52 2 1022 0 1 a 10308 a 10 308 a 10 308 a 10 16 已知下列字符編碼 A 100 0001 a 110 0001 0 011 0000 求 E e f 7 G Z 5 的 7 位 ACSII 碼和第一位前加入奇校驗位后的 8 位編碼 參考答案 E 的 ASCII 碼為 A E A 100 0001 100 100 0101 奇校驗位 P 0 第一位前加入奇校驗 位后的 8 位編碼是 0 100 0101 e 的 ASCII 碼為 a e a 110 0001 100 110 0101 奇校驗位 P 1 第一位前加入奇校驗 位后的 8 位編碼是 1 110 0101 f 的 ASCII 碼為 a f a 110 0001 101 110 0110 奇校驗位 P 1 第一位前 加入奇校驗位 后的 8 位編碼是 1 110 0110 7 的 ASCII 碼為 0 7 0 011 0000 111 011 0111 奇校驗位 P 0 第一位前加入奇校驗位 后的 8 位編碼是 0 011 0111 G 的 ASCII 碼為 A G A 100 0001 0110 100 0111 奇校驗位 P 1 第一位前加入奇校 驗位后的 8 位編碼是 1 100 0111 Z 的 ASCII 碼為 A Z A 100 0001 11001 101 1010 奇校驗位 P 1 第一位前加入奇校 驗位后的 8 位編碼是 1 101 1010 5 的 ASCII 碼為 0 5 0 011 0000 101 011 0101 奇校驗位 P 1 第一位前加入奇校驗位 后的 8 位編碼是 1 011 0101 17 假定在一個程序中定義了變量 x y 和 i 其中 x 和 y 是 float 型變量 用 IEEE754 單精度浮點數(shù)表 示 i 是 16 位 short 型變量 用補碼表示 程序執(zhí)行到某一時刻 x 0 125 y 7 5 i 100 它們 都被寫到了主存 按字節(jié)編址 其地址分別是 100 108 和 112 請分別畫出在大端機器和小端機 器上變量 x y 和 i 在內存的存放位置 參考答案 0 125 0 001B 1 0 2 3 x 在機器內部的機器數(shù)為 1 01111100 00 0 BE00 0000H 7 5 111 1B 1 111 22 y 在機器內部的機器數(shù)為 0 10000001 11100 0 40F0 0000H 100 64 32 4 1100100B i 在機器內部表示的機器數(shù)為 0000 0000 0110 0100 0064H 大端機 小端機 地址 內容 內容 100 BEH 00H 101 00H 00H 102 00H 00H 103 00H BEH 108 40H 00H 109 F0H 00H 110 00H F0H 111 00H 40H 112 00H 64H 113 64H 00H 18 假定某計算機的總線采用奇校驗 每 8 位數(shù)據(jù)有一位校驗位 若在 32 位數(shù)據(jù)線上傳輸?shù)男畔⑹?8F 3C AB 96H 則對應的 4 個校驗位應為什么 若接受方收到的數(shù)據(jù)信息和校驗位分別為 87 3C AB 96H 和 0101B 則說明發(fā)生了什么情況 并給出驗證過程 參考答案 傳輸信息 8F 3C AB 96H 展開為 1000 1111 0011 1100 1010 1011 1001 0110 每 8 位有一個奇校驗位 因此 總線上發(fā)送方送出的 4 個校驗位應該分別為 0 1 0 1 接受方的數(shù)據(jù)信息為 87 3C AB 96H 展開后為 1000 0111 0011 1100 1010 1011 1001 0110 接收到的 校驗位分別為 0 1 0 1 在接受方進行校驗判斷如下 根據(jù)接收到的數(shù)據(jù)信息計算出 4 個奇校驗位分別為 1 1 0 1 將該 4 位校驗位分別和接收到的 4 位校驗位進行異或 得到 1 0 0 0 說明數(shù)據(jù)信息的第一個字節(jié)發(fā)生傳輸錯誤 對照傳輸前 后 的數(shù)據(jù)信息 第一字節(jié) 8FH 變成了 87H 說明確實發(fā)生了傳輸錯誤 驗證正確 19 寫出 16 位數(shù)據(jù)的 SEC 碼 假定數(shù)據(jù)為 0101 0001 0100 0110 說明 SEC 碼如何正確檢測數(shù)據(jù)位 5 的 錯誤 參考答案 對于 16 位數(shù)據(jù) 可以如下插入校驗位 M16 M15 M14 M13 M12 P5 M11 M10 M9 M8 M7 M6 M5 P4 M4 M3 M2 P3 M1 P2 P1 其中 Mi 是原信息數(shù)據(jù) Pi 是加入的校驗位 對于各個校驗位的值可以如下計算 P1 M1 M 2 M 3 M 4 M 5 M 7 M 9 M 11 M 12 M 14 M 16 1 P2 M1 M 3 M 4 M 6 M 7 M 10 M 11 M 13 M 14 1 P3 M2 M 3 M 4 M 8 M 9 M 10 M 11 M 15 M 16 0 P4 M5 M 6 M 7 M 8 M 9 M 10 M 11 0 P5 M12 M 13 M 14 M 15 M 16 0 所以此時 P5 P4 P3 P2 P1 00011 第五位數(shù)據(jù)出錯時 數(shù)據(jù)字變?yōu)?0101 0001 0101 0110 P 5 P4 P3 P2 P1 01010 故障字 00011 01010 01001 說明碼字第 9 位出錯 即 M5 出錯 20 假設要傳送的數(shù)據(jù)信息為 100011 若約定的生成多項式為 G x x3 1 則校驗碼為多少 假定 在接收端接收到的數(shù)據(jù)信息為 100010 說明如何正確檢測其錯誤 寫出檢測過程 參考答案 原數(shù)據(jù)信息為 100011 對應的報文多項式為 M x x5 x 1 生成多項式的位數(shù)為 4 位 所以在 原數(shù)據(jù)信息后面添加 3 個 0 變?yōu)?M x x3M x x8 x4 x3 用 M x 去模 2 除 G x 得到的余數(shù) 為 111 所以得到 CRC 碼為 100011 111 檢測時 用接收到的 CRC 碼去模 2 除生成多項式 1001 若得到的余數(shù)為 0 則表明正確 否則說 明傳輸時發(fā)生了錯誤 此題中接收到的 CRC 碼為 100010 111 即數(shù)據(jù) 100010 加檢驗位 111 顯然 用 100010 111 模 2 除 1001 得到余數(shù)為 001 不為 0 說明傳輸時發(fā)生錯誤 第 3 章 習 題 答 案 2 4 高級語言中的運算和機器語言 即指令 中的運算是什么關系 假定某一個高級語言源程序 P 中 有乘 除運算 但機器 M 中不提供乘 除運算指令 則程序 P 能否在機器 M 上運行 為什么 參考答案 略 3 考慮以下 C 語言程序代碼 int func1 unsigned word return int word 24 int func2 unsigned word return int word 24 假設在一個 32 位機器上執(zhí)行這些函數(shù) 該機器使用二進制補碼表示帶符號整數(shù) 無符號數(shù)采用邏輯 移位 帶符號整數(shù)采用算術移位 請?zhí)顚懴卤?并說明函數(shù) func1 和 func2 的功能 W func1 w func2 w 機器數(shù) 值 機器數(shù) 值 機器數(shù) 值 0000 007FH 127 0000 007FH 127 0000 007FH 127 0000 0080H 128 0000 0080H 128 FFFF FF80H 128 0000 00FFH 255 0000 00FFH 255 FFFF FFFFH 1 0000 0100H 256 0000 0000H 0 0000 0000H 0 函數(shù) func1 的功能是把無符號數(shù)高 24 位清零 左移 24 位再邏輯右移 24 位 結果一定是正的有符 號數(shù) 而函數(shù) func2 的功能是把無符號數(shù)的高 24 位都變成和第 25 位一樣 因為左移 24 位后進行算術右 移 高 24 位補符號位 即第 25 位 4 填寫下表 注意對比無符號數(shù)和帶符號整數(shù)的乘法結果 以及截斷操作前 后的結果 x y x y 截斷前 x y 截斷后 模式 機器數(shù) 值 機器數(shù) 值 機器數(shù) 值 機器數(shù) 值 無符號數(shù) 110 6 010 2 001100 12 100 4 二進制補碼 110 2 010 2 111100 4 100 4 無符號數(shù) 001 1 111 7 000111 7 111 7 二進制補碼 001 1 111 1 111111 1 111 1 無符號數(shù) 111 7 111 7 110001 49 001 1 二進制補碼 111 1 111 1 000001 1 001 1 5 以下是兩段 C 語言代碼 函數(shù) arith 是直接用 C 語言寫的 而 optarith 是對 arith 函數(shù)以某個確 定的 M 和 N 編譯生成的機器代碼反編譯生成的 根據(jù) optarith 可以推斷函數(shù) arith 中 M 和 N 的值各是多少 define M define N int arith int x int y int result 0 result x M y N return result int optarith int x int y int t x x 4 x t if y 2 return x y 參考答案 可以看出 x M 和 int t x x 4 x t 三句對應 這些語句實現(xiàn)了 x 乘 15 的功能 左移 4 位相當于乘以 16 然后再減 1 因此 M 等于 15 y N 與 if y 2 兩句對應 功能主要由第二句 y 右移 2 位 實現(xiàn) 它實現(xiàn)了 y 除以 4 的功能 因此 N 是 4 而第一句 if y 2 1 而 1 4 0 兩者不等 調整后 1 3 2 2 2 0 兩者相等 思考 能否把 if y 0 y 3 改成 if y 0 y 2 不能 因為 y 4 時不正確 6 設 A4 A1 和 B4 B1 分別是四位加法器的兩組輸入 C 0 為低位來的進位 當加法器分別采用串行進位 和先行進位時 寫出四個進位 C4 C1 的邏輯表達式 參考答案 串行進位 C1 X1C0 Y1C0 X1 Y1 C2 X2C1 Y2C1 X2 Y2 C3 X3C2 Y3C2 X3 Y3 C4 X4C3 Y4C3 X4 Y4 并行進位 C1 X1Y1 X1 Y1 C0 C2 X2Y2 X2 Y2 X1Y1 X2 Y2 X1 Y1 C0 C3 X3Y3 X3 Y3 X2Y2 X3 Y3 X2 Y2 X1Y1 X3 Y3 X2 Y2 X1 Y1 C0 C4 X4Y4 X4 Y4 X3Y3 X4 Y4 X3 Y3 X2Y2 X4 Y4 X3 Y3 X2 Y2 X1Y1 X4 Y4 X3 Y3 X2 Y2 X1 Y1 C0 7 用 SN74181 和 SN74182 器件設計一個 16 位先行進位補碼加 減運算器 畫出運算器的邏輯框圖 并 給出零標志 進位標志 溢出標志 符號標志的生成電路 參考答案 圖略 邏輯框圖參見教材中的圖 3 15 和圖 3 16 將兩個圖結合起來即可 也即只要將圖 3 15 中的 B 輸入端 的每一位 Bi 取反 得到 Bi 和原碼 Bi 一起送到一個二路選擇器 由進位 C0 作為選擇控制信號 當 C0 為 1 時做減法 此時 選擇將 Bi 作為 SN74181 的 B 輸入端 否則 當 C0 為 1 時 做加法 零標志 ZF 進位標志 CF 溢出標志 OF 符號標志 SF 的邏輯電路根據(jù)以下邏輯表達式畫出即可 ZF F15 F14 F13 F12 F11 F10 F9 F8 F7 F6 F5 F4 F3 F2 F1 F0 CF C16 OF C0 A 15B15F15 A15B15F15 C 0 A 15B15F15 A15B15F15 SF F15 8 用 SN74181 和 SN74182 器件設計一個 32 位的 ALU 要求采用兩級先行進位結構 1 寫出所需的 SN74181 和 SN74182 芯片數(shù) 2 畫出 32 位 ALU 的邏輯結構圖 參考答案 圖略 將如圖 3 15 所示的兩個 16 位 ALU 級聯(lián)起來即可 級聯(lián)時 低 16 位 ALU 的高位進位 C16 作為 高 16 位 ALU 的低位進位 C0 因此 只要用 8 片 SN74181 和 2 片 SN74182 9 已知 x 10 y 6 采用 6 位機器數(shù)表示 請按如下要求計算 并把結果還原成真值 1 求 x y 補 x y 補 2 用原碼一位乘法計算 x y 原 3 用 MBA 基 4 布斯 乘法計算 x y 補 4 用不恢復余數(shù)法計算 x y 原 的商和余數(shù) 5 用不恢復余數(shù)法計算 x y 補 的商和余數(shù) 參考答案 10 補 001010 6 補 111010 6 補 000110 10 原 001010 6 原 100110 1 10 6 補 10 補 6 補 001010 111010 000100 4 10 6 補 10 補 6 補 001010 000110 010000 16 2 先采用無符號數(shù)乘法計算 001010 000110 的乘積 原碼一位乘法過程 前面兩個 0 省略 如 下 C P Y 說明 0 0 0 0 0 0 1 1 0 P0 0 0 0 0 0 y4 0 0 0 0 0 0 0 C P 和 Y 同時右移一位 0 0 0 0 0 0 0 1 1 得 P1 1 0 1 0 y3 1 X 0 1 0 1 0 C P 和 Y 同時右移一位 0 0 1 0 1 0 0 0 1 得 P2 1 0 1 0 y2 1 X 0 1 1 1 1 0 0 0 0 C P 和 Y 同時右移一位 0 0 1 1 1 1 0 0 0 得 P3 0 0 0 0 y1 0 0 0 0 1 1 1 C P 和 Y 同時右移一位 0 0 0 1 1 1 1 0 0 得 P4 若兩個 6 位數(shù)相乘的話 則還要右移兩次 得 000000 111100 符號位為 0 1 1 因此 X Y 原 1000 0011 1100 即 X Y 11 1100B 60 3 10 補 110110 布斯乘法過程如下 P Y y 1 說明 0 0 0 0 0 0 1 1 1 0 1 0 0 設 y 1 0 P 0 補 0 y0 y 1 00 P Y 直接右移一位 0 0 0 0 0 0 0 1 1 1 0 1 0 得 P 1 補 1 1 0 1 1 0 y1 y0 10 X 補 1 1 0 1 1 0 P Y 同時右移一位 1 1 1 0 1 1 0 0 1 1 1 0 1 得 P 2 補 0 0 1 0 1 0 y2 y1 01 X 補 0 0 0 1 0 1 P Y 同時右移一位 0 0 0 0 1 0 1 0 0 1 1 1 0 得 P 3 補 1 1 0 1 1 0 1 0 0 1 1 1 0 y3 y2 10 X 補 1 1 1 0 0 0 P Y 同時右移一位 1 1 1 1 0 0 0 1 0 0 1 1 1 得 P 4 補 0 0 0 0 0 0 0 1 0 0 1 1 1 y4 y3 11 0 1 1 1 1 0 0 P Y 同時右移一位 1 1 1 1 1 0 0 0 1 0 0 1 1 得 P 5 補 0 0 0 0 0 0 0 0 1 0 0 1 1 y5 y4 11 0 1 1 1 1 1 0 P Y 同時右移一位 1 1 1 1 1 1 0 0 0 1 0 0 1 得 P 6 補 因此 X Y 補 1111 1100 0100 即 X Y 11 1100B 60 4 因為除法計算是 2n 位數(shù)除 n 位數(shù) 所以 6 原 0110 10 原 0000 1010 6 補 1010 商的符號位 0 1 1 運算過程 前面兩個 0 省略 如下 余數(shù)寄存器 R 余數(shù) 商寄存器 Q 說 明 0 0 0 0 1 0 1 0 開始 R0 X 1 0 1 0 R1 X Y 1 0 1 0 1 0 1 0 0 R1 0 則 q 4 0 沒有溢出 0 1 0 1 0 1 0 0 2R1 R 和 Q 同時左移 空出一位商 0 1 1 0 R2 2R1 Y 1 0 1 1 0 1 0 0 0 R2 0 則 q 3 0 0 1 1 0 1 0 0 0 2R2 R 和 Q 同時左移 空出一位商 0 1 1 0 R3 2R2 Y 1 1 0 0 1 0 0 0 0 R3 0 則 q 2 0 1 0 0 1 0 0 0 0 2R3 R 和 Q 同時左移 空出一位商 0 1 1 0 R3 2R2 Y 1 1 1 1 0 0 0 0 0 R4 0 則 q 0 1 商的數(shù)值部分為 00001 所以 X Y 原 00001 最高位為符號位 余數(shù)為 0100 5 將 10 和 6 分別表示成補碼形式為 10 補 0 1010 6 補 1 1010 計算過程如下 先對被除數(shù)進行符號擴展 10 補 00000 01010 6 補 0 0110 余數(shù)寄存器 R 余數(shù) 商寄存器 Q 說 明 0 0 0 0 0 0 1 0 1 0 開始 R0 X 1 1 0 1 0 R1 X Y 1 1 0 1 0 0 1 0 1 0 R1 與 Y 同號 則 q5 1 1 0 1 0 0 1 0 1 0 1 2R1 R 和 Q 同時左移 空出一位上商 1 0 0 1 1 0 R2 2R1 Y 1 1 0 1 0 1 0 1 0 1 R2 與 Y 同號 則 q4 1 1 0 1 0 1 0 1 0 1 1 2R2 R 和 Q 同時左移 空出一位上商 1 0 0 1 1 0 R3 2R2 Y 1 1 0 1 1 0 1 0 1 1 R3 與 Y 同號 則 q3 1 1 0 1 1 0 1 0 1 1 1 2R3 R 和 Q 同時左移 空出一位上商 1 0 0 1 1 0 R4 2R3 Y 1 1 1 0 0 1 0 1 1 1 R4 與 Y 同號 則 q 2 1 1 1 0 0 1 0 1 1 1 1 2R4 R 和 Q 同時左移 空出一位上商 0 0 0 1 1 0 R5 2R4 Y 1 1 1 1 1 0 1 1 1 1 R5 與 Y 同號 則 q1 1 1 1 1 1 0 1 1 1 1 1 2R5 R 和 Q 同時左移 空出一位上商 1 0 0 1 1 0 R6 2R5 Y 0 0 1 0 0 1 1 1 1 0 R6 與 Y 異號 則 q 0 0 Q 左移 空出一位上 商 1 0 0 0 0 0 1 商為負數(shù) 末位加 1 余數(shù)不需要修正 0 0 1 0 0 1 1 1 1 1 所以 X Y 補 11111 余數(shù)為 00100 即 X Y 0001B 1 余數(shù)為 0100B 4 將各數(shù)代入公式 除數(shù) 商 余數(shù) 被除數(shù) 進行驗證 得 6 1 4 10 10 若一次加法需要 1ns 一次移位需要 0 5ns 請分別計算用一位乘法 兩位乘法 基于 CRA 的陣列 乘法 基于 CSA 的陣列乘法四種方式計算兩個 8 位無符號二進制數(shù)乘積時所需的時間 參考答案 一位乘法 8 次右移 8 次加法 共計 12ns 二位乘法 4 次右移 4 次加法 共計 6ns 基于 CRA 的陣列乘法 每一級部分積不僅依賴于上一級部分積 還依賴于上一級最終的進位 而 每一級進位又是串行進行的 所以最長的路徑總共經(jīng)過了 8 2 8 1 22 次全加器 共計約 22ns 基于 CSA 的陣列乘法 本級進位和本級和同時傳送到下一級 同級部分積之間不相互依賴 只進行 O N 次加法運算 因此 共計約 8ns 11 在 IEEE 754 浮點數(shù)運算中 當結果的尾數(shù)出現(xiàn)什么形式時需要進行左規(guī) 什么形式時需要進行右 規(guī) 如何進行左規(guī) 如何進行右規(guī) 參考答案 1 對于結果為 1x xx x 的情況 需要進行右規(guī) 右規(guī)時 尾數(shù)右移一位 階碼加 1 右規(guī)操作 可以表示為 M b M b 2 1 E b Eb 1 右規(guī)時注意以下兩點 a 尾數(shù)右移時 最高位 1 被移到小數(shù)點前一位作為隱藏位 最后一位移出時 要考慮舍入 b 階碼加 1 時 直接在末位加 1 2 對于結果為 0 00 01x x 的情況 需要進行左規(guī) 左規(guī)時 數(shù)值位逐次左移 階碼逐次減 1 直到將第一位 1 移到小數(shù)點左邊 假定 k 為結果中 和左邊第一個 1 之間連續(xù) 0 的個數(shù) 則左規(guī)操作可以表示為 M b M b 2k E b Eb k 左規(guī)時注意以下兩點 a 尾數(shù)左移時數(shù)值部分最左 k 個 0 被移出 因此 相對來說 小數(shù)點右移了 k 位 因為進行尾數(shù)相 加時 默認小數(shù)點位置在第一個數(shù)值位 即 隱藏位 之后 所以小數(shù)點右移 k 位后被移到了第 一位 1 后面 這個 1 就是隱藏位 b 執(zhí)行 Eb Eb k 時 每次都在末位減 1 一共減 k 次 12 在 IEEE 754 浮點數(shù)運算中 如何判斷浮點運算的結果是否溢出 參考答案 浮點運算結果是否溢出 并不以尾數(shù)溢出來判斷 而主要看階碼是否溢出 尾數(shù)溢出時 可通過右 規(guī)操作進行糾正 階碼上溢時 說明結果的數(shù)值太大 無法表示 階碼下溢時 說明結果數(shù)值太小 可以把結果近似為 0 在進行對階 規(guī)格化 舍入和浮點數(shù)的乘 除運算等過程中 都需要對階碼進行加 減運算 可能會 發(fā)生階碼上溢或階碼下溢 因此 必須對階碼進行溢出判斷 有關對階碼進行溢出判斷的方法可參見教材中相關章節(jié) 13 假設浮點數(shù)格式為 階碼是 4 位移碼 偏置常數(shù)為 8 尾數(shù)是 6 位補碼 采用雙符號位 用浮點運 算規(guī)則分別計算在不采用任何附加位和采用 2 位附加位 保護位 舍入位 兩種情況下的值 假 定對階和右規(guī)時采用就近舍入到偶數(shù)方式 1 15 16 2 7 2 16 25 2 15 16 2 7 2 16 25 3 15 16 2 5 2 16 27 4 15 16 2 5 2 16 27 參考答案 假定采用隱藏位 X 15 16 27 0 111100B 27 1 111000 2 26 Y1 2 16 25 0 001000B 25 1 000000 2 22 Y2 2 16 25 0 001000B 25 1 000000 2 22 K 15 16 25 0 111100B 25 1 111000 2 24 J1 2 16 27 0 001000B 27 1 000000 2 24 J2 2 16 27 0 001000B 27 1 000000 2 24 根據(jù)題目所給的各種位數(shù) 可以得到在機器中表示為 X 浮 00 1110 1 111000 Y1 浮 00 1010 1 000000 Y2 浮 11 1010 1 000000 K 浮 00 1100 1 111000 J1 浮 00 1100 1 000000 J2 浮 11 1100 1 000000 所以 E x 1110 M x 00 1 111000 E y1 1010 M y 00 1 000000 E y2 1010 M y 11 1 000000 Ek 1100 M K 00 1 111000 E J1 1100 M J1 00 1 000000 E J2 1100 M J2 11 1 000000 尾數(shù) M 中小數(shù)點前面有三位 前兩位為數(shù)符 表示雙符號 第三位加了括號 是隱藏位 1 沒有附加位時的計算 1 X Y1 E 補 E x 移 E y1 移 補 mod 2n 1110 0110 0100 E 4 根據(jù)對階規(guī)則可知需要對 y1 進行對階 結果為 E y1 E x 1110 M y 1 000 000100 尾數(shù)相加 M b Mx My1 001 111000 000 000100 001 111100 兩位符號相等 數(shù)值部分最高 位為 1 不需要進行規(guī)格化 所以最后結果為 E 1110 M 00 1 111100 即 31 32 2 7 2 X Y2 E 補 E x 移 E y2 移 補 mod 2n 1110 0110 0100 E 4 根據(jù)對階規(guī)則可知需要對 y2 進行對階 結果為 E y2 E x 1110 M y2 111 111100 尾數(shù)相加 M b Mx My2 001 111000 111 111100 001 110100 兩位符號相等 數(shù)值部分最高 為 1 不需要進行規(guī)格化 所以最后結果為 E 1110 M 00 1 110100 即 29 32 2 7 3 K J1 E 補 E K 移 E J1 移 補 mod 2n 1100 0100 0000 E 0 根據(jù)對階規(guī)則可知不需要進行對階 尾數(shù)相加 M b MK MJ1 001 111000 001 000000 010 111000 兩位符號不等 說明尾數(shù)溢 出 需要進行右規(guī) 最后結果為 E 1101 M 00 1 011100 即 23 32 2 6 4 K J2 E 補 E K 移 E J2 移 補 mod 2n 1100 0100 0000 E 0 根據(jù)對階規(guī)則可知不需要進行對階 尾數(shù)相加 M b MK MJ2 00 1 111000 111 000000 000 111000 兩位符號相等 數(shù)值部分最 高位為 0 需要進行左規(guī) 所以最后結果為 E 1011 M 00 1 110000 即 7 8 2 4 如果有兩位附加位精度上會有提高 在對階的時候要注意小數(shù)點后就不是 6 位 而是 8 位 最 后兩位為保護位和舍入位 但是由于本題 6 位尾數(shù)已經(jīng)足夠 再加 2 位附加位 其結果是一樣 的 14 采用 IEEE 754 單精度浮點數(shù)格式計算下列表達式的值 1 0 75 65 25 2 0 75 65 25 參考答案 x 0 75 0 110 0B 1 10 0 2 2 1 y 65 25 1000001 01000 0B 1 00000101 0 2 26 用 IEEE 754 標準單精度格式表示為 x 浮 0 01111110 10 0 y 浮 1 10000101 000001010 0 所以 E x 01111110 M x 0 1 1 0 E y 10000101 M y 1 1 000001010 0 尾數(shù) Mx 和 My 中小數(shù)點前面有兩位 第一位為數(shù)符 第二位加了括號 是隱藏位 1 以下是計算機中進行浮點數(shù)加減運算的過程 假定保留 2 位附加位 保護位和舍入位 1 0 75 65 25 對階 E 補 E x 移 E y 移 補 mod 2n 0111 1110 0111 1011 1111 1001 E 7 根據(jù)對階規(guī)則可知需要對 x 進行對階 結果為 E x E y 10000101 M x 00 000000110 000 x 的尾數(shù) Mx 右移 7 位 符號不變 數(shù)值高位補 0 隱藏位右移到小數(shù)點后面 最后移出的 2 位- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 計算機 組成 習題 答案 清華大學出版社
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
鏈接地址:http://appdesigncorp.com/p-9108486.html